diff --git a/.changes/next-release/feature-Tools-99c09de2.json b/.changes/next-release/feature-Tools-99c09de2.json new file mode 100644 index 0000000000..9878710508 --- /dev/null +++ b/.changes/next-release/feature-Tools-99c09de2.json @@ -0,0 +1,5 @@ +{ + "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/apis/elasticache-2014-09-30.waiters2.json b/apis/elasticache-2014-09-30.waiters2.json deleted file mode 100644 index c177d7b91e..0000000000 --- a/apis/elasticache-2014-09-30.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/apis/metadata.json b/apis/metadata.json index c51eb15039..002d958d83 100644 --- a/apis/metadata.json +++ b/apis/metadata.json @@ -1,26 +1,33 @@ { "acm": { - "name": "ACM" + "name": "ACM", + "cors": true }, "apigateway": { - "name": "APIGateway" + "name": "APIGateway", + "cors": true }, "applicationautoscaling": { "prefix": "application-autoscaling", - "name": "ApplicationAutoScaling" + "name": "ApplicationAutoScaling", + "cors": true }, "autoscaling": { - "name": "AutoScaling" + "name": "AutoScaling", + "cors": true }, "cloudformation": { - "name": "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*"] + "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*"], + "cors": true }, "cloudhsm": { - "name": "CloudHSM" + "name": "CloudHSM", + "cors": true }, "cloudsearch": { "name": "CloudSearch" @@ -29,54 +36,67 @@ "name": "CloudSearchDomain" }, "cloudtrail": { - "name": "CloudTrail" + "name": "CloudTrail", + "cors": true }, "cloudwatch": { "prefix": "monitoring", - "name": "CloudWatch" + "name": "CloudWatch", + "cors": true }, "cloudwatchevents": { "prefix": "events", "name": "CloudWatchEvents", - "versions": ["2014-02-03*"] + "versions": ["2014-02-03*"], + "cors": true }, "cloudwatchlogs": { "prefix": "logs", - "name": "CloudWatchLogs" + "name": "CloudWatchLogs", + "cors": true }, "codecommit": { - "name": "CodeCommit" + "name": "CodeCommit", + "cors": true }, "codedeploy": { - "name": "CodeDeploy" + "name": "CodeDeploy", + "cors": true }, "codepipeline": { - "name": "CodePipeline" + "name": "CodePipeline", + "cors": true }, "cognitoidentity": { "prefix": "cognito-identity", - "name": "CognitoIdentity" + "name": "CognitoIdentity", + "cors": true }, "cognitoidentityserviceprovider": { "prefix": "cognito-idp", - "name": "CognitoIdentityServiceProvider" + "name": "CognitoIdentityServiceProvider", + "cors": true }, "cognitosync": { "prefix": "cognito-sync", - "name": "CognitoSync" + "name": "CognitoSync", + "cors": true }, "configservice": { "prefix": "config", - "name": "ConfigService" + "name": "ConfigService", + "cors": true }, "datapipeline": { "name": "DataPipeline" }, "devicefarm": { - "name": "DeviceFarm" + "name": "DeviceFarm", + "cors": true }, "directconnect": { - "name": "DirectConnect" + "name": "DirectConnect", + "cors": true }, "directoryservice": { "prefix": "ds", @@ -89,21 +109,26 @@ "name": "DMS" }, "dynamodb": { - "name": "DynamoDB" + "name": "DynamoDB", + "cors": true }, "dynamodbstreams": { "prefix": "streams.dynamodb", - "name": "DynamoDBStreams" + "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*"] + "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*"], + "cors": true }, "ecr": { - "name": "ECR" + "name": "ECR", + "cors": true }, "ecs": { - "name": "ECS" + "name": "ECS", + "cors": true }, "efs": { "prefix": "elasticfilesystem", @@ -111,34 +136,42 @@ }, "elasticache": { "name": "ElastiCache", - "versions": ["2012-11-15*", "2014-03-24*", "2014-07-15*", "2014-09-30*"] + "versions": ["2012-11-15*", "2014-03-24*", "2014-07-15*", "2014-09-30*"], + "cors": true }, "elasticbeanstalk": { - "name": "ElasticBeanstalk" + "name": "ElasticBeanstalk", + "cors": true }, "elb": { "prefix": "elasticloadbalancing", - "name": "ELB" + "name": "ELB", + "cors": true }, "elbv2": { "prefix": "elasticloadbalancingv2", - "name": "ELBv2" + "name": "ELBv2", + "cors": true }, "emr": { "prefix": "elasticmapreduce", - "name": "EMR" + "name": "EMR", + "cors": true }, "es": { "name": "ES" }, "elastictranscoder": { - "name": "ElasticTranscoder" + "name": "ElasticTranscoder", + "cors": true }, "firehose": { - "name": "Firehose" + "name": "Firehose", + "cors": true }, "gamelift": { - "name": "GameLift" + "name": "GameLift", + "cors": true }, "glacier": { "name": "Glacier" @@ -151,66 +184,82 @@ }, "inspector": { "name": "Inspector", - "versions": ["2015-08-18*"] + "versions": ["2015-08-18*"], + "cors": true }, "iot": { - "name": "Iot" + "name": "Iot", + "cors": true }, "iotdata": { "prefix": "iot-data", - "name": "IotData" + "name": "IotData", + "cors": true }, "kinesis": { - "name": "Kinesis" + "name": "Kinesis", + "cors": true }, "kinesisanalytics": { "name": "KinesisAnalytics" }, "kms": { - "name": "KMS" + "name": "KMS", + "cors": true }, "lambda": { - "name": "Lambda" + "name": "Lambda", + "cors": true }, "machinelearning": { - "name": "MachineLearning" + "name": "MachineLearning", + "cors": true }, "marketplacecommerceanalytics": { - "name": "MarketplaceCommerceAnalytics" + "name": "MarketplaceCommerceAnalytics", + "cors": true }, "marketplacemetering": { "prefix": "meteringmarketplace", "name": "MarketplaceMetering" }, "mobileanalytics": { - "name": "MobileAnalytics" + "name": "MobileAnalytics", + "cors": true }, "opsworks": { - "name": "OpsWorks" + "name": "OpsWorks", + "cors": true }, "rds": { "name": "RDS", - "versions": ["2014-09-01*"] + "versions": ["2014-09-01*"], + "cors": true }, "redshift": { - "name": "Redshift" + "name": "Redshift", + "cors": true }, "route53": { - "name": "Route53" + "name": "Route53", + "cors": true }, "route53domains": { - "name": "Route53Domains" + "name": "Route53Domains", + "cors": true }, "s3": { "name": "S3", - "dualstackAvailable": true + "dualstackAvailable": true, + "cors": true }, "servicecatalog": { "name": "ServiceCatalog" }, "ses": { "prefix": "email", - "name": "SES" + "name": "SES", + "cors": true }, "simpledb": { "prefix": "sdb", @@ -220,19 +269,24 @@ "name": "Snowball" }, "sns": { - "name": "SNS" + "name": "SNS", + "cors": true }, "sqs": { - "name": "SQS" + "name": "SQS", + "cors": true }, "ssm": { - "name": "SSM" + "name": "SSM", + "cors": true }, "storagegateway": { - "name": "StorageGateway" + "name": "StorageGateway", + "cors": true }, "sts": { - "name": "STS" + "name": "STS", + "cors": true }, "support": { "name": "Support" @@ -241,7 +295,8 @@ "name": "SWF" }, "waf": { - "name": "WAF" + "name": "WAF", + "cors": true }, "workspaces": { "name": "WorkSpaces" diff --git a/browser.js b/browser.js new file mode 100644 index 0000000000..7867151ffd --- /dev/null +++ b/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/clients/acm.js b/clients/acm.js new file mode 100644 index 0000000000..15a94773ff --- /dev/null +++ b/clients/acm.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ACM')) { + apiLoader.services['acm'] = {}; + AWS.ACM = Service.defineService('acm', ['2015-12-08']); + + apiLoader.services['acm']['2015-12-08'] = require('../apis/acm-2015-12-08.min.json'); + apiLoader.services['acm']['2015-12-08'].paginators = require('../apis/acm-2015-12-08.paginators.json').pagination; +} + +module.exports = AWS.ACM; diff --git a/clients/all.js b/clients/all.js new file mode 100644 index 0000000000..55b1c5dab0 --- /dev/null +++ b/clients/all.js @@ -0,0 +1,76 @@ +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/clients/apigateway.js b/clients/apigateway.js new file mode 100644 index 0000000000..bd803b4fb1 --- /dev/null +++ b/clients/apigateway.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'APIGateway')) { + apiLoader.services['apigateway'] = {}; + AWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']); + require('../lib/services/apigateway'); + + apiLoader.services['apigateway']['2015-07-09'] = require('../apis/apigateway-2015-07-09.min.json'); + apiLoader.services['apigateway']['2015-07-09'].paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination; +} + +module.exports = AWS.APIGateway; diff --git a/clients/applicationautoscaling.js b/clients/applicationautoscaling.js new file mode 100644 index 0000000000..86a3746f4b --- /dev/null +++ b/clients/applicationautoscaling.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ApplicationAutoScaling')) { + apiLoader.services['applicationautoscaling'] = {}; + AWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']); + + apiLoader.services['applicationautoscaling']['2016-02-06'] = require('../apis/application-autoscaling-2016-02-06.min.json'); + apiLoader.services['applicationautoscaling']['2016-02-06'].paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination; +} + +module.exports = AWS.ApplicationAutoScaling; diff --git a/clients/autoscaling.js b/clients/autoscaling.js new file mode 100644 index 0000000000..ad885b3ade --- /dev/null +++ b/clients/autoscaling.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'AutoScaling')) { + apiLoader.services['autoscaling'] = {}; + AWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']); + + apiLoader.services['autoscaling']['2011-01-01'] = require('../apis/autoscaling-2011-01-01.min.json'); + apiLoader.services['autoscaling']['2011-01-01'].paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination; +} + +module.exports = AWS.AutoScaling; diff --git a/clients/browser_default.js b/clients/browser_default.js new file mode 100644 index 0000000000..97121a40c9 --- /dev/null +++ b/clients/browser_default.js @@ -0,0 +1,57 @@ +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'), + 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/clients/cloudformation.js b/clients/cloudformation.js new file mode 100644 index 0000000000..0c2df538a8 --- /dev/null +++ b/clients/cloudformation.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CloudFormation')) { + apiLoader.services['cloudformation'] = {}; + AWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']); + + apiLoader.services['cloudformation']['2010-05-15'] = require('../apis/cloudformation-2010-05-15.min.json'); + apiLoader.services['cloudformation']['2010-05-15'].paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination; + apiLoader.services['cloudformation']['2010-05-15'].waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters; +} + +module.exports = AWS.CloudFormation; diff --git a/clients/cloudfront.js b/clients/cloudfront.js new file mode 100644 index 0000000000..dfcba9f9c2 --- /dev/null +++ b/clients/cloudfront.js @@ -0,0 +1,16 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CloudFront')) { + apiLoader.services['cloudfront'] = {}; + AWS.CloudFront = Service.defineService('cloudfront', ['2016-08-20']); + require('../lib/services/cloudfront'); + + apiLoader.services['cloudfront']['2016-08-20'] = require('../apis/cloudfront-2016-08-20.min.json'); + apiLoader.services['cloudfront']['2016-08-20'].paginators = require('../apis/cloudfront-2016-08-20.paginators.json').pagination; + apiLoader.services['cloudfront']['2016-08-20'].waiters = require('../apis/cloudfront-2016-08-20.waiters2.json').waiters; +} + +module.exports = AWS.CloudFront; diff --git a/clients/cloudhsm.js b/clients/cloudhsm.js new file mode 100644 index 0000000000..51154fd943 --- /dev/null +++ b/clients/cloudhsm.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CloudHSM')) { + apiLoader.services['cloudhsm'] = {}; + AWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']); + + apiLoader.services['cloudhsm']['2014-05-30'] = require('../apis/cloudhsm-2014-05-30.min.json'); +} + +module.exports = AWS.CloudHSM; diff --git a/clients/cloudsearch.js b/clients/cloudsearch.js new file mode 100644 index 0000000000..15632530c8 --- /dev/null +++ b/clients/cloudsearch.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'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CloudSearch')) { + apiLoader.services['cloudsearch'] = {}; + AWS.CloudSearch = Service.defineService('cloudsearch', ['2011-02-01', '2013-01-01']); + + apiLoader.services['cloudsearch']['2011-02-01'] = require('../apis/cloudsearch-2011-02-01.min.json'); + apiLoader.services['cloudsearch']['2011-02-01'].paginators = require('../apis/cloudsearch-2011-02-01.paginators.json').pagination; + + apiLoader.services['cloudsearch']['2013-01-01'] = require('../apis/cloudsearch-2013-01-01.min.json'); + apiLoader.services['cloudsearch']['2013-01-01'].paginators = require('../apis/cloudsearch-2013-01-01.paginators.json').pagination; +} + +module.exports = AWS.CloudSearch; diff --git a/clients/cloudsearchdomain.js b/clients/cloudsearchdomain.js new file mode 100644 index 0000000000..e931656dca --- /dev/null +++ b/clients/cloudsearchdomain.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CloudSearchDomain')) { + apiLoader.services['cloudsearchdomain'] = {}; + AWS.CloudSearchDomain = Service.defineService('cloudsearchdomain', ['2013-01-01']); + require('../lib/services/cloudsearchdomain'); + + apiLoader.services['cloudsearchdomain']['2013-01-01'] = require('../apis/cloudsearchdomain-2013-01-01.min.json'); +} + +module.exports = AWS.CloudSearchDomain; diff --git a/clients/cloudtrail.js b/clients/cloudtrail.js new file mode 100644 index 0000000000..97d93e5afe --- /dev/null +++ b/clients/cloudtrail.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CloudTrail')) { + apiLoader.services['cloudtrail'] = {}; + AWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']); + + apiLoader.services['cloudtrail']['2013-11-01'] = require('../apis/cloudtrail-2013-11-01.min.json'); + apiLoader.services['cloudtrail']['2013-11-01'].paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination; +} + +module.exports = AWS.CloudTrail; diff --git a/clients/cloudwatch.js b/clients/cloudwatch.js new file mode 100644 index 0000000000..883f2a869e --- /dev/null +++ b/clients/cloudwatch.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CloudWatch')) { + apiLoader.services['cloudwatch'] = {}; + AWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']); + + apiLoader.services['cloudwatch']['2010-08-01'] = require('../apis/monitoring-2010-08-01.min.json'); + apiLoader.services['cloudwatch']['2010-08-01'].paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination; + apiLoader.services['cloudwatch']['2010-08-01'].waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters; +} + +module.exports = AWS.CloudWatch; diff --git a/clients/cloudwatchevents.js b/clients/cloudwatchevents.js new file mode 100644 index 0000000000..ae42be2437 --- /dev/null +++ b/clients/cloudwatchevents.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CloudWatchEvents')) { + apiLoader.services['cloudwatchevents'] = {}; + AWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2015-10-07']); + + apiLoader.services['cloudwatchevents']['2015-10-07'] = require('../apis/events-2015-10-07.min.json'); +} + +module.exports = AWS.CloudWatchEvents; diff --git a/clients/cloudwatchlogs.js b/clients/cloudwatchlogs.js new file mode 100644 index 0000000000..14c38135d8 --- /dev/null +++ b/clients/cloudwatchlogs.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CloudWatchLogs')) { + apiLoader.services['cloudwatchlogs'] = {}; + AWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']); + + apiLoader.services['cloudwatchlogs']['2014-03-28'] = require('../apis/logs-2014-03-28.min.json'); + apiLoader.services['cloudwatchlogs']['2014-03-28'].paginators = require('../apis/logs-2014-03-28.paginators.json').pagination; +} + +module.exports = AWS.CloudWatchLogs; diff --git a/clients/codecommit.js b/clients/codecommit.js new file mode 100644 index 0000000000..396b68e663 --- /dev/null +++ b/clients/codecommit.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CodeCommit')) { + apiLoader.services['codecommit'] = {}; + AWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']); + + apiLoader.services['codecommit']['2015-04-13'] = require('../apis/codecommit-2015-04-13.min.json'); + apiLoader.services['codecommit']['2015-04-13'].paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination; +} + +module.exports = AWS.CodeCommit; diff --git a/clients/codedeploy.js b/clients/codedeploy.js new file mode 100644 index 0000000000..6d246f2c5e --- /dev/null +++ b/clients/codedeploy.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CodeDeploy')) { + apiLoader.services['codedeploy'] = {}; + AWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']); + + apiLoader.services['codedeploy']['2014-10-06'] = require('../apis/codedeploy-2014-10-06.min.json'); + apiLoader.services['codedeploy']['2014-10-06'].paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination; + apiLoader.services['codedeploy']['2014-10-06'].waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters; +} + +module.exports = AWS.CodeDeploy; diff --git a/clients/codepipeline.js b/clients/codepipeline.js new file mode 100644 index 0000000000..2897a1f359 --- /dev/null +++ b/clients/codepipeline.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CodePipeline')) { + apiLoader.services['codepipeline'] = {}; + AWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']); + + apiLoader.services['codepipeline']['2015-07-09'] = require('../apis/codepipeline-2015-07-09.min.json'); +} + +module.exports = AWS.CodePipeline; diff --git a/clients/cognitoidentity.js b/clients/cognitoidentity.js new file mode 100644 index 0000000000..989e72bb35 --- /dev/null +++ b/clients/cognitoidentity.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CognitoIdentity')) { + apiLoader.services['cognitoidentity'] = {}; + AWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']); + require('../lib/services/cognitoidentity'); + + apiLoader.services['cognitoidentity']['2014-06-30'] = require('../apis/cognito-identity-2014-06-30.min.json'); +} + +module.exports = AWS.CognitoIdentity; diff --git a/clients/cognitoidentityserviceprovider.js b/clients/cognitoidentityserviceprovider.js new file mode 100644 index 0000000000..ab4f030c4d --- /dev/null +++ b/clients/cognitoidentityserviceprovider.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CognitoIdentityServiceProvider')) { + apiLoader.services['cognitoidentityserviceprovider'] = {}; + AWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']); + + apiLoader.services['cognitoidentityserviceprovider']['2016-04-18'] = require('../apis/cognito-idp-2016-04-18.min.json'); +} + +module.exports = AWS.CognitoIdentityServiceProvider; diff --git a/clients/cognitosync.js b/clients/cognitosync.js new file mode 100644 index 0000000000..273b3a5b12 --- /dev/null +++ b/clients/cognitosync.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'CognitoSync')) { + apiLoader.services['cognitosync'] = {}; + AWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']); + + apiLoader.services['cognitosync']['2014-06-30'] = require('../apis/cognito-sync-2014-06-30.min.json'); +} + +module.exports = AWS.CognitoSync; diff --git a/clients/configservice.js b/clients/configservice.js new file mode 100644 index 0000000000..7a048b5125 --- /dev/null +++ b/clients/configservice.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ConfigService')) { + apiLoader.services['configservice'] = {}; + AWS.ConfigService = Service.defineService('configservice', ['2014-11-12']); + + apiLoader.services['configservice']['2014-11-12'] = require('../apis/config-2014-11-12.min.json'); + apiLoader.services['configservice']['2014-11-12'].paginators = require('../apis/config-2014-11-12.paginators.json').pagination; +} + +module.exports = AWS.ConfigService; diff --git a/clients/datapipeline.js b/clients/datapipeline.js new file mode 100644 index 0000000000..7dc49bd0cc --- /dev/null +++ b/clients/datapipeline.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'DataPipeline')) { + apiLoader.services['datapipeline'] = {}; + AWS.DataPipeline = Service.defineService('datapipeline', ['2012-10-29']); + + apiLoader.services['datapipeline']['2012-10-29'] = require('../apis/datapipeline-2012-10-29.min.json'); + apiLoader.services['datapipeline']['2012-10-29'].paginators = require('../apis/datapipeline-2012-10-29.paginators.json').pagination; +} + +module.exports = AWS.DataPipeline; diff --git a/clients/devicefarm.js b/clients/devicefarm.js new file mode 100644 index 0000000000..44eea36348 --- /dev/null +++ b/clients/devicefarm.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'DeviceFarm')) { + apiLoader.services['devicefarm'] = {}; + AWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']); + + apiLoader.services['devicefarm']['2015-06-23'] = require('../apis/devicefarm-2015-06-23.min.json'); + apiLoader.services['devicefarm']['2015-06-23'].paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination; +} + +module.exports = AWS.DeviceFarm; diff --git a/clients/directconnect.js b/clients/directconnect.js new file mode 100644 index 0000000000..6d81764cdc --- /dev/null +++ b/clients/directconnect.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'DirectConnect')) { + apiLoader.services['directconnect'] = {}; + AWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']); + + apiLoader.services['directconnect']['2012-10-25'] = require('../apis/directconnect-2012-10-25.min.json'); + apiLoader.services['directconnect']['2012-10-25'].paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination; +} + +module.exports = AWS.DirectConnect; diff --git a/clients/directoryservice.js b/clients/directoryservice.js new file mode 100644 index 0000000000..55bc6d798d --- /dev/null +++ b/clients/directoryservice.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'DirectoryService')) { + apiLoader.services['directoryservice'] = {}; + AWS.DirectoryService = Service.defineService('directoryservice', ['2015-04-16']); + + apiLoader.services['directoryservice']['2015-04-16'] = require('../apis/ds-2015-04-16.min.json'); +} + +module.exports = AWS.DirectoryService; diff --git a/clients/discovery.js b/clients/discovery.js new file mode 100644 index 0000000000..8d011491ad --- /dev/null +++ b/clients/discovery.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'Discovery')) { + apiLoader.services['discovery'] = {}; + AWS.Discovery = Service.defineService('discovery', ['2015-11-01']); + + apiLoader.services['discovery']['2015-11-01'] = require('../apis/discovery-2015-11-01.min.json'); +} + +module.exports = AWS.Discovery; diff --git a/clients/dms.js b/clients/dms.js new file mode 100644 index 0000000000..6ef0920ecf --- /dev/null +++ b/clients/dms.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'DMS')) { + apiLoader.services['dms'] = {}; + AWS.DMS = Service.defineService('dms', ['2016-01-01']); + + apiLoader.services['dms']['2016-01-01'] = require('../apis/dms-2016-01-01.min.json'); +} + +module.exports = AWS.DMS; diff --git a/clients/dynamodb.js b/clients/dynamodb.js new file mode 100644 index 0000000000..545202afb6 --- /dev/null +++ b/clients/dynamodb.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'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'DynamoDB')) { + apiLoader.services['dynamodb'] = {}; + AWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']); + require('../lib/services/dynamodb'); + + apiLoader.services['dynamodb']['2011-12-05'] = require('../apis/dynamodb-2011-12-05.min.json'); + apiLoader.services['dynamodb']['2011-12-05'].paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination; + apiLoader.services['dynamodb']['2011-12-05'].waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters; + + apiLoader.services['dynamodb']['2012-08-10'] = require('../apis/dynamodb-2012-08-10.min.json'); + apiLoader.services['dynamodb']['2012-08-10'].paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination; + apiLoader.services['dynamodb']['2012-08-10'].waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters; +} + +module.exports = AWS.DynamoDB; diff --git a/clients/dynamodbstreams.js b/clients/dynamodbstreams.js new file mode 100644 index 0000000000..ec29516e3d --- /dev/null +++ b/clients/dynamodbstreams.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'DynamoDBStreams')) { + apiLoader.services['dynamodbstreams'] = {}; + AWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']); + + apiLoader.services['dynamodbstreams']['2012-08-10'] = require('../apis/streams.dynamodb-2012-08-10.min.json'); +} + +module.exports = AWS.DynamoDBStreams; diff --git a/clients/ec2.js b/clients/ec2.js new file mode 100644 index 0000000000..a5112fb276 --- /dev/null +++ b/clients/ec2.js @@ -0,0 +1,16 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'EC2')) { + apiLoader.services['ec2'] = {}; + AWS.EC2 = Service.defineService('ec2', ['2016-04-01']); + require('../lib/services/ec2'); + + apiLoader.services['ec2']['2016-04-01'] = require('../apis/ec2-2016-04-01.min.json'); + apiLoader.services['ec2']['2016-04-01'].paginators = require('../apis/ec2-2016-04-01.paginators.json').pagination; + apiLoader.services['ec2']['2016-04-01'].waiters = require('../apis/ec2-2016-04-01.waiters2.json').waiters; +} + +module.exports = AWS.EC2; diff --git a/clients/ecr.js b/clients/ecr.js new file mode 100644 index 0000000000..bcc26441a3 --- /dev/null +++ b/clients/ecr.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ECR')) { + apiLoader.services['ecr'] = {}; + AWS.ECR = Service.defineService('ecr', ['2015-09-21']); + + apiLoader.services['ecr']['2015-09-21'] = require('../apis/ecr-2015-09-21.min.json'); +} + +module.exports = AWS.ECR; diff --git a/clients/ecs.js b/clients/ecs.js new file mode 100644 index 0000000000..1cc84712d8 --- /dev/null +++ b/clients/ecs.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ECS')) { + apiLoader.services['ecs'] = {}; + AWS.ECS = Service.defineService('ecs', ['2014-11-13']); + + apiLoader.services['ecs']['2014-11-13'] = require('../apis/ecs-2014-11-13.min.json'); + apiLoader.services['ecs']['2014-11-13'].paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination; + apiLoader.services['ecs']['2014-11-13'].waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters; +} + +module.exports = AWS.ECS; diff --git a/clients/efs.js b/clients/efs.js new file mode 100644 index 0000000000..0d209c3966 --- /dev/null +++ b/clients/efs.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'EFS')) { + apiLoader.services['efs'] = {}; + AWS.EFS = Service.defineService('efs', ['2015-02-01']); + + apiLoader.services['efs']['2015-02-01'] = require('../apis/elasticfilesystem-2015-02-01.min.json'); +} + +module.exports = AWS.EFS; diff --git a/clients/elasticache.js b/clients/elasticache.js new file mode 100644 index 0000000000..04f9afb9b4 --- /dev/null +++ b/clients/elasticache.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ElastiCache')) { + apiLoader.services['elasticache'] = {}; + AWS.ElastiCache = Service.defineService('elasticache', ['2015-02-02']); + + apiLoader.services['elasticache']['2015-02-02'] = require('../apis/elasticache-2015-02-02.min.json'); + apiLoader.services['elasticache']['2015-02-02'].paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination; + apiLoader.services['elasticache']['2015-02-02'].waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters; +} + +module.exports = AWS.ElastiCache; diff --git a/clients/elasticbeanstalk.js b/clients/elasticbeanstalk.js new file mode 100644 index 0000000000..be1b521690 --- /dev/null +++ b/clients/elasticbeanstalk.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ElasticBeanstalk')) { + apiLoader.services['elasticbeanstalk'] = {}; + AWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']); + + apiLoader.services['elasticbeanstalk']['2010-12-01'] = require('../apis/elasticbeanstalk-2010-12-01.min.json'); + apiLoader.services['elasticbeanstalk']['2010-12-01'].paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination; +} + +module.exports = AWS.ElasticBeanstalk; diff --git a/clients/elastictranscoder.js b/clients/elastictranscoder.js new file mode 100644 index 0000000000..f9e3494717 --- /dev/null +++ b/clients/elastictranscoder.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ElasticTranscoder')) { + apiLoader.services['elastictranscoder'] = {}; + AWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']); + + apiLoader.services['elastictranscoder']['2012-09-25'] = require('../apis/elastictranscoder-2012-09-25.min.json'); + apiLoader.services['elastictranscoder']['2012-09-25'].paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination; + apiLoader.services['elastictranscoder']['2012-09-25'].waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters; +} + +module.exports = AWS.ElasticTranscoder; diff --git a/clients/elb.js b/clients/elb.js new file mode 100644 index 0000000000..4e61bf178d --- /dev/null +++ b/clients/elb.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ELB')) { + apiLoader.services['elb'] = {}; + AWS.ELB = Service.defineService('elb', ['2012-06-01']); + + apiLoader.services['elb']['2012-06-01'] = require('../apis/elasticloadbalancing-2012-06-01.min.json'); + apiLoader.services['elb']['2012-06-01'].paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination; + apiLoader.services['elb']['2012-06-01'].waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters; +} + +module.exports = AWS.ELB; diff --git a/clients/elbv2.js b/clients/elbv2.js new file mode 100644 index 0000000000..f91761f76f --- /dev/null +++ b/clients/elbv2.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ELBv2')) { + apiLoader.services['elbv2'] = {}; + AWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']); + + apiLoader.services['elbv2']['2015-12-01'] = require('../apis/elasticloadbalancingv2-2015-12-01.min.json'); + apiLoader.services['elbv2']['2015-12-01'].paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination; +} + +module.exports = AWS.ELBv2; diff --git a/clients/emr.js b/clients/emr.js new file mode 100644 index 0000000000..600572080f --- /dev/null +++ b/clients/emr.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'EMR')) { + apiLoader.services['emr'] = {}; + AWS.EMR = Service.defineService('emr', ['2009-03-31']); + + apiLoader.services['emr']['2009-03-31'] = require('../apis/elasticmapreduce-2009-03-31.min.json'); + apiLoader.services['emr']['2009-03-31'].paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination; + apiLoader.services['emr']['2009-03-31'].waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters; +} + +module.exports = AWS.EMR; diff --git a/clients/es.js b/clients/es.js new file mode 100644 index 0000000000..dc366daa23 --- /dev/null +++ b/clients/es.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ES')) { + apiLoader.services['es'] = {}; + AWS.ES = Service.defineService('es', ['2015-01-01']); + + apiLoader.services['es']['2015-01-01'] = require('../apis/es-2015-01-01.min.json'); +} + +module.exports = AWS.ES; diff --git a/clients/firehose.js b/clients/firehose.js new file mode 100644 index 0000000000..3b2a07d0f8 --- /dev/null +++ b/clients/firehose.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'Firehose')) { + apiLoader.services['firehose'] = {}; + AWS.Firehose = Service.defineService('firehose', ['2015-08-04']); + + apiLoader.services['firehose']['2015-08-04'] = require('../apis/firehose-2015-08-04.min.json'); +} + +module.exports = AWS.Firehose; diff --git a/clients/gamelift.js b/clients/gamelift.js new file mode 100644 index 0000000000..6deeb3a2f0 --- /dev/null +++ b/clients/gamelift.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'GameLift')) { + apiLoader.services['gamelift'] = {}; + AWS.GameLift = Service.defineService('gamelift', ['2015-10-01']); + + apiLoader.services['gamelift']['2015-10-01'] = require('../apis/gamelift-2015-10-01.min.json'); +} + +module.exports = AWS.GameLift; diff --git a/clients/glacier.js b/clients/glacier.js new file mode 100644 index 0000000000..7d4071c0e7 --- /dev/null +++ b/clients/glacier.js @@ -0,0 +1,16 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'Glacier')) { + apiLoader.services['glacier'] = {}; + AWS.Glacier = Service.defineService('glacier', ['2012-06-01']); + require('../lib/services/glacier'); + + apiLoader.services['glacier']['2012-06-01'] = require('../apis/glacier-2012-06-01.min.json'); + apiLoader.services['glacier']['2012-06-01'].paginators = require('../apis/glacier-2012-06-01.paginators.json').pagination; + apiLoader.services['glacier']['2012-06-01'].waiters = require('../apis/glacier-2012-06-01.waiters2.json').waiters; +} + +module.exports = AWS.Glacier; diff --git a/clients/iam.js b/clients/iam.js new file mode 100644 index 0000000000..375de386df --- /dev/null +++ b/clients/iam.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'IAM')) { + apiLoader.services['iam'] = {}; + AWS.IAM = Service.defineService('iam', ['2010-05-08']); + + apiLoader.services['iam']['2010-05-08'] = require('../apis/iam-2010-05-08.min.json'); + apiLoader.services['iam']['2010-05-08'].paginators = require('../apis/iam-2010-05-08.paginators.json').pagination; + apiLoader.services['iam']['2010-05-08'].waiters = require('../apis/iam-2010-05-08.waiters2.json').waiters; +} + +module.exports = AWS.IAM; diff --git a/clients/importexport.js b/clients/importexport.js new file mode 100644 index 0000000000..f7a014c079 --- /dev/null +++ b/clients/importexport.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ImportExport')) { + apiLoader.services['importexport'] = {}; + AWS.ImportExport = Service.defineService('importexport', ['2010-06-01']); + + apiLoader.services['importexport']['2010-06-01'] = require('../apis/importexport-2010-06-01.min.json'); + apiLoader.services['importexport']['2010-06-01'].paginators = require('../apis/importexport-2010-06-01.paginators.json').pagination; +} + +module.exports = AWS.ImportExport; diff --git a/clients/inspector.js b/clients/inspector.js new file mode 100644 index 0000000000..eed3401ebc --- /dev/null +++ b/clients/inspector.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'Inspector')) { + apiLoader.services['inspector'] = {}; + AWS.Inspector = Service.defineService('inspector', ['2016-02-16']); + + apiLoader.services['inspector']['2016-02-16'] = require('../apis/inspector-2016-02-16.min.json'); +} + +module.exports = AWS.Inspector; diff --git a/clients/iot.js b/clients/iot.js new file mode 100644 index 0000000000..dca2cbb974 --- /dev/null +++ b/clients/iot.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'Iot')) { + apiLoader.services['iot'] = {}; + AWS.Iot = Service.defineService('iot', ['2015-05-28']); + + apiLoader.services['iot']['2015-05-28'] = require('../apis/iot-2015-05-28.min.json'); +} + +module.exports = AWS.Iot; diff --git a/clients/iotdata.js b/clients/iotdata.js new file mode 100644 index 0000000000..1920ff8d1b --- /dev/null +++ b/clients/iotdata.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'IotData')) { + apiLoader.services['iotdata'] = {}; + AWS.IotData = Service.defineService('iotdata', ['2015-05-28']); + require('../lib/services/iotdata'); + + apiLoader.services['iotdata']['2015-05-28'] = require('../apis/iot-data-2015-05-28.min.json'); +} + +module.exports = AWS.IotData; diff --git a/clients/kinesis.js b/clients/kinesis.js new file mode 100644 index 0000000000..512e277f94 --- /dev/null +++ b/clients/kinesis.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'Kinesis')) { + apiLoader.services['kinesis'] = {}; + AWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']); + + apiLoader.services['kinesis']['2013-12-02'] = require('../apis/kinesis-2013-12-02.min.json'); + apiLoader.services['kinesis']['2013-12-02'].paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination; + apiLoader.services['kinesis']['2013-12-02'].waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters; +} + +module.exports = AWS.Kinesis; diff --git a/clients/kinesisanalytics.js b/clients/kinesisanalytics.js new file mode 100644 index 0000000000..e815a583f3 --- /dev/null +++ b/clients/kinesisanalytics.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'KinesisAnalytics')) { + apiLoader.services['kinesisanalytics'] = {}; + AWS.KinesisAnalytics = Service.defineService('kinesisanalytics', ['2015-08-14']); + + apiLoader.services['kinesisanalytics']['2015-08-14'] = require('../apis/kinesisanalytics-2015-08-14.min.json'); +} + +module.exports = AWS.KinesisAnalytics; diff --git a/clients/kms.js b/clients/kms.js new file mode 100644 index 0000000000..3b58c4d02c --- /dev/null +++ b/clients/kms.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'KMS')) { + apiLoader.services['kms'] = {}; + AWS.KMS = Service.defineService('kms', ['2014-11-01']); + + apiLoader.services['kms']['2014-11-01'] = require('../apis/kms-2014-11-01.min.json'); + apiLoader.services['kms']['2014-11-01'].paginators = require('../apis/kms-2014-11-01.paginators.json').pagination; +} + +module.exports = AWS.KMS; diff --git a/clients/lambda.js b/clients/lambda.js new file mode 100644 index 0000000000..7b5f02d286 --- /dev/null +++ b/clients/lambda.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'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'Lambda')) { + apiLoader.services['lambda'] = {}; + AWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']); + + apiLoader.services['lambda']['2014-11-11'] = require('../apis/lambda-2014-11-11.min.json'); + apiLoader.services['lambda']['2014-11-11'].paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination; + + apiLoader.services['lambda']['2015-03-31'] = require('../apis/lambda-2015-03-31.min.json'); + apiLoader.services['lambda']['2015-03-31'].paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination; +} + +module.exports = AWS.Lambda; diff --git a/clients/machinelearning.js b/clients/machinelearning.js new file mode 100644 index 0000000000..958b3261ab --- /dev/null +++ b/clients/machinelearning.js @@ -0,0 +1,16 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'MachineLearning')) { + apiLoader.services['machinelearning'] = {}; + AWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']); + require('../lib/services/machinelearning'); + + apiLoader.services['machinelearning']['2014-12-12'] = require('../apis/machinelearning-2014-12-12.min.json'); + apiLoader.services['machinelearning']['2014-12-12'].paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination; + apiLoader.services['machinelearning']['2014-12-12'].waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters; +} + +module.exports = AWS.MachineLearning; diff --git a/clients/marketplacecommerceanalytics.js b/clients/marketplacecommerceanalytics.js new file mode 100644 index 0000000000..7af23a5a4c --- /dev/null +++ b/clients/marketplacecommerceanalytics.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'MarketplaceCommerceAnalytics')) { + apiLoader.services['marketplacecommerceanalytics'] = {}; + AWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']); + + apiLoader.services['marketplacecommerceanalytics']['2015-07-01'] = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json'); +} + +module.exports = AWS.MarketplaceCommerceAnalytics; diff --git a/clients/marketplacemetering.js b/clients/marketplacemetering.js new file mode 100644 index 0000000000..398637e737 --- /dev/null +++ b/clients/marketplacemetering.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'MarketplaceMetering')) { + apiLoader.services['marketplacemetering'] = {}; + AWS.MarketplaceMetering = Service.defineService('marketplacemetering', ['2016-01-14']); + + apiLoader.services['marketplacemetering']['2016-01-14'] = require('../apis/meteringmarketplace-2016-01-14.min.json'); +} + +module.exports = AWS.MarketplaceMetering; diff --git a/clients/mobileanalytics.js b/clients/mobileanalytics.js new file mode 100644 index 0000000000..8bbc9206d7 --- /dev/null +++ b/clients/mobileanalytics.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'MobileAnalytics')) { + apiLoader.services['mobileanalytics'] = {}; + AWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']); + + apiLoader.services['mobileanalytics']['2014-06-05'] = require('../apis/mobileanalytics-2014-06-05.min.json'); +} + +module.exports = AWS.MobileAnalytics; diff --git a/clients/opsworks.js b/clients/opsworks.js new file mode 100644 index 0000000000..6f6bf311c5 --- /dev/null +++ b/clients/opsworks.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'OpsWorks')) { + apiLoader.services['opsworks'] = {}; + AWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']); + + apiLoader.services['opsworks']['2013-02-18'] = require('../apis/opsworks-2013-02-18.min.json'); + apiLoader.services['opsworks']['2013-02-18'].paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination; + apiLoader.services['opsworks']['2013-02-18'].waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters; +} + +module.exports = AWS.OpsWorks; diff --git a/clients/rds.js b/clients/rds.js new file mode 100644 index 0000000000..a8ab662612 --- /dev/null +++ b/clients/rds.js @@ -0,0 +1,25 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'RDS')) { + apiLoader.services['rds'] = {}; + AWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-10-31']); + + apiLoader.services['rds']['2013-01-10'] = require('../apis/rds-2013-01-10.min.json'); + apiLoader.services['rds']['2013-01-10'].paginators = require('../apis/rds-2013-01-10.paginators.json').pagination; + + apiLoader.services['rds']['2013-02-12'] = require('../apis/rds-2013-02-12.min.json'); + apiLoader.services['rds']['2013-02-12'].paginators = require('../apis/rds-2013-02-12.paginators.json').pagination; + + apiLoader.services['rds']['2013-09-09'] = require('../apis/rds-2013-09-09.min.json'); + apiLoader.services['rds']['2013-09-09'].paginators = require('../apis/rds-2013-09-09.paginators.json').pagination; + apiLoader.services['rds']['2013-09-09'].waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters; + + apiLoader.services['rds']['2014-10-31'] = require('../apis/rds-2014-10-31.min.json'); + apiLoader.services['rds']['2014-10-31'].paginators = require('../apis/rds-2014-10-31.paginators.json').pagination; + apiLoader.services['rds']['2014-10-31'].waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters; +} + +module.exports = AWS.RDS; diff --git a/clients/redshift.js b/clients/redshift.js new file mode 100644 index 0000000000..877b1017b8 --- /dev/null +++ b/clients/redshift.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'Redshift')) { + apiLoader.services['redshift'] = {}; + AWS.Redshift = Service.defineService('redshift', ['2012-12-01']); + + apiLoader.services['redshift']['2012-12-01'] = require('../apis/redshift-2012-12-01.min.json'); + apiLoader.services['redshift']['2012-12-01'].paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination; + apiLoader.services['redshift']['2012-12-01'].waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters; +} + +module.exports = AWS.Redshift; diff --git a/clients/route53.js b/clients/route53.js new file mode 100644 index 0000000000..7bfe0217a7 --- /dev/null +++ b/clients/route53.js @@ -0,0 +1,16 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'Route53')) { + apiLoader.services['route53'] = {}; + AWS.Route53 = Service.defineService('route53', ['2013-04-01']); + require('../lib/services/route53'); + + apiLoader.services['route53']['2013-04-01'] = require('../apis/route53-2013-04-01.min.json'); + apiLoader.services['route53']['2013-04-01'].paginators = require('../apis/route53-2013-04-01.paginators.json').pagination; + apiLoader.services['route53']['2013-04-01'].waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters; +} + +module.exports = AWS.Route53; diff --git a/clients/route53domains.js b/clients/route53domains.js new file mode 100644 index 0000000000..60b9d41598 --- /dev/null +++ b/clients/route53domains.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'Route53Domains')) { + apiLoader.services['route53domains'] = {}; + AWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']); + + apiLoader.services['route53domains']['2014-05-15'] = require('../apis/route53domains-2014-05-15.min.json'); + apiLoader.services['route53domains']['2014-05-15'].paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination; +} + +module.exports = AWS.Route53Domains; diff --git a/clients/s3.js b/clients/s3.js new file mode 100644 index 0000000000..5a5a52bf8c --- /dev/null +++ b/clients/s3.js @@ -0,0 +1,16 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'S3')) { + apiLoader.services['s3'] = {}; + AWS.S3 = Service.defineService('s3', ['2006-03-01']); + require('../lib/services/s3'); + + apiLoader.services['s3']['2006-03-01'] = require('../apis/s3-2006-03-01.min.json'); + apiLoader.services['s3']['2006-03-01'].paginators = require('../apis/s3-2006-03-01.paginators.json').pagination; + apiLoader.services['s3']['2006-03-01'].waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters; +} + +module.exports = AWS.S3; diff --git a/clients/servicecatalog.js b/clients/servicecatalog.js new file mode 100644 index 0000000000..1113ece7b1 --- /dev/null +++ b/clients/servicecatalog.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'ServiceCatalog')) { + apiLoader.services['servicecatalog'] = {}; + AWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']); + + apiLoader.services['servicecatalog']['2015-12-10'] = require('../apis/servicecatalog-2015-12-10.min.json'); +} + +module.exports = AWS.ServiceCatalog; diff --git a/clients/ses.js b/clients/ses.js new file mode 100644 index 0000000000..112155ca6e --- /dev/null +++ b/clients/ses.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'SES')) { + apiLoader.services['ses'] = {}; + AWS.SES = Service.defineService('ses', ['2010-12-01']); + + apiLoader.services['ses']['2010-12-01'] = require('../apis/email-2010-12-01.min.json'); + apiLoader.services['ses']['2010-12-01'].paginators = require('../apis/email-2010-12-01.paginators.json').pagination; + apiLoader.services['ses']['2010-12-01'].waiters = require('../apis/email-2010-12-01.waiters2.json').waiters; +} + +module.exports = AWS.SES; diff --git a/clients/simpledb.js b/clients/simpledb.js new file mode 100644 index 0000000000..c4d8d2d7d3 --- /dev/null +++ b/clients/simpledb.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'SimpleDB')) { + apiLoader.services['simpledb'] = {}; + AWS.SimpleDB = Service.defineService('simpledb', ['2009-04-15']); + + apiLoader.services['simpledb']['2009-04-15'] = require('../apis/sdb-2009-04-15.min.json'); + apiLoader.services['simpledb']['2009-04-15'].paginators = require('../apis/sdb-2009-04-15.paginators.json').pagination; +} + +module.exports = AWS.SimpleDB; diff --git a/clients/snowball.js b/clients/snowball.js new file mode 100644 index 0000000000..22ebaabfeb --- /dev/null +++ b/clients/snowball.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'Snowball')) { + apiLoader.services['snowball'] = {}; + AWS.Snowball = Service.defineService('snowball', ['2016-06-30']); + + apiLoader.services['snowball']['2016-06-30'] = require('../apis/snowball-2016-06-30.min.json'); + apiLoader.services['snowball']['2016-06-30'].paginators = require('../apis/snowball-2016-06-30.paginators.json').pagination; +} + +module.exports = AWS.Snowball; diff --git a/clients/sns.js b/clients/sns.js new file mode 100644 index 0000000000..bb0a077a36 --- /dev/null +++ b/clients/sns.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'SNS')) { + apiLoader.services['sns'] = {}; + AWS.SNS = Service.defineService('sns', ['2010-03-31']); + + apiLoader.services['sns']['2010-03-31'] = require('../apis/sns-2010-03-31.min.json'); + apiLoader.services['sns']['2010-03-31'].paginators = require('../apis/sns-2010-03-31.paginators.json').pagination; +} + +module.exports = AWS.SNS; diff --git a/clients/sqs.js b/clients/sqs.js new file mode 100644 index 0000000000..2d3e0d08a7 --- /dev/null +++ b/clients/sqs.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'SQS')) { + apiLoader.services['sqs'] = {}; + AWS.SQS = Service.defineService('sqs', ['2012-11-05']); + require('../lib/services/sqs'); + + apiLoader.services['sqs']['2012-11-05'] = require('../apis/sqs-2012-11-05.min.json'); + apiLoader.services['sqs']['2012-11-05'].paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination; +} + +module.exports = AWS.SQS; diff --git a/clients/ssm.js b/clients/ssm.js new file mode 100644 index 0000000000..ae1dd3a4df --- /dev/null +++ b/clients/ssm.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'SSM')) { + apiLoader.services['ssm'] = {}; + AWS.SSM = Service.defineService('ssm', ['2014-11-06']); + + apiLoader.services['ssm']['2014-11-06'] = require('../apis/ssm-2014-11-06.min.json'); + apiLoader.services['ssm']['2014-11-06'].paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination; +} + +module.exports = AWS.SSM; diff --git a/clients/storagegateway.js b/clients/storagegateway.js new file mode 100644 index 0000000000..2915f12a11 --- /dev/null +++ b/clients/storagegateway.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'StorageGateway')) { + apiLoader.services['storagegateway'] = {}; + AWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']); + + apiLoader.services['storagegateway']['2013-06-30'] = require('../apis/storagegateway-2013-06-30.min.json'); + apiLoader.services['storagegateway']['2013-06-30'].paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination; +} + +module.exports = AWS.StorageGateway; diff --git a/clients/sts.js b/clients/sts.js new file mode 100644 index 0000000000..a7da8a4133 --- /dev/null +++ b/clients/sts.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'STS')) { + apiLoader.services['sts'] = {}; + AWS.STS = Service.defineService('sts', ['2011-06-15']); + require('../lib/services/sts'); + + apiLoader.services['sts']['2011-06-15'] = require('../apis/sts-2011-06-15.min.json'); +} + +module.exports = AWS.STS; diff --git a/clients/support.js b/clients/support.js new file mode 100644 index 0000000000..aceb5552a6 --- /dev/null +++ b/clients/support.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'Support')) { + apiLoader.services['support'] = {}; + AWS.Support = Service.defineService('support', ['2013-04-15']); + + apiLoader.services['support']['2013-04-15'] = require('../apis/support-2013-04-15.min.json'); + apiLoader.services['support']['2013-04-15'].paginators = require('../apis/support-2013-04-15.paginators.json').pagination; +} + +module.exports = AWS.Support; diff --git a/clients/swf.js b/clients/swf.js new file mode 100644 index 0000000000..6bf53e5458 --- /dev/null +++ b/clients/swf.js @@ -0,0 +1,15 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'SWF')) { + apiLoader.services['swf'] = {}; + AWS.SWF = Service.defineService('swf', ['2012-01-25']); + require('../lib/services/swf'); + + apiLoader.services['swf']['2012-01-25'] = require('../apis/swf-2012-01-25.min.json'); + apiLoader.services['swf']['2012-01-25'].paginators = require('../apis/swf-2012-01-25.paginators.json').pagination; +} + +module.exports = AWS.SWF; diff --git a/clients/waf.js b/clients/waf.js new file mode 100644 index 0000000000..8cfa425ac2 --- /dev/null +++ b/clients/waf.js @@ -0,0 +1,13 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'WAF')) { + apiLoader.services['waf'] = {}; + AWS.WAF = Service.defineService('waf', ['2015-08-24']); + + apiLoader.services['waf']['2015-08-24'] = require('../apis/waf-2015-08-24.min.json'); +} + +module.exports = AWS.WAF; diff --git a/clients/workspaces.js b/clients/workspaces.js new file mode 100644 index 0000000000..1f5c4e05b0 --- /dev/null +++ b/clients/workspaces.js @@ -0,0 +1,14 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +if (!Object.prototype.hasOwnProperty.call(AWS, 'WorkSpaces')) { + apiLoader.services['workspaces'] = {}; + AWS.WorkSpaces = Service.defineService('workspaces', ['2015-04-08']); + + apiLoader.services['workspaces']['2015-04-08'] = require('../apis/workspaces-2015-04-08.min.json'); + apiLoader.services['workspaces']['2015-04-08'].paginators = require('../apis/workspaces-2015-04-08.paginators.json').pagination; +} + +module.exports = AWS.WorkSpaces; diff --git a/dist-tools/client-creator.js b/dist-tools/client-creator.js new file mode 100644 index 0000000000..dfc68cdb8e --- /dev/null +++ b/dist-tools/client-creator.js @@ -0,0 +1,180 @@ +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 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 += 'if (!Object.prototype.hasOwnProperty.call(AWS, \'' + className + '\')) {\n'; + code += tab + 'apiLoader.services[\'' + serviceName +'\'] = {};\n'; + code += tab + 'AWS.' + className + ' = Service.defineService(\'' + serviceName + '\', [\'' + versionNumbers.join('\', \'') + '\']);\n'; + // pull in service customizations + if (this.customizationsExist(serviceName)) { + code += tab + '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); + } + var loaderPrefix = tab + 'apiLoader.services[\'' + serviceName + '\'][\'' + version + '\']'; + code += '\n'; + code += loaderPrefix + ' = require(\'../apis/' + versionInfo.api + '.json\');\n'; + if (versionInfo.hasOwnProperty('paginators')) { + code += loaderPrefix + '.paginators = require(\'../apis/' + versionInfo.paginators + '.json\').pagination;\n'; + } + if (versionInfo.hasOwnProperty('waiters')) { + code += loaderPrefix + '.waiters = require(\'../apis/' + versionInfo.waiters + '.json\').waiters;\n'; + } + }); + code += '}\n'; + code += '\n'; + code += 'module.exports = AWS.' + className + ';\n'; + return { + code: code, + path: path.join(clientFolderPath, serviceName + '.js'), + service: serviceName, + } +}; + +ClientCreator.prototype.generateAllServicesSource = function generateAllServicesSource(services, fileName) { + var metadata = this._metadata; + var code = ''; + code += 'module.exports = {\n'; + services.forEach(function(service, idx) { + var className = metadata[service].name; + var tab = ' '; + var isLast = idx === services.length - 1; + code += tab + 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/dist-tools/create-all-services.js b/dist-tools/create-all-services.js new file mode 100644 index 0000000000..8549b4c03e --- /dev/null +++ b/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/dist-tools/service-collector.js b/dist-tools/service-collector.js index 5663fe1d4d..b0a4b61191 100644 --- a/dist-tools/service-collector.js +++ b/dist-tools/service-collector.js @@ -4,8 +4,11 @@ var path = require('path'); var AWS = require('../'); var apis = require('../lib/api_loader'); +var metadata = require('../apis/metadata'); +var ClientCreator = require('./client-creator'); -var defaultServices = 'acm,apigateway,applicationautoscaling,autoscaling,cloudformation,cloudfront,cloudhsm,cloudtrail,cloudwatch,cloudwatchlogs,cloudwatchevents,codecommit,codedeploy,codepipeline,cognitoidentity,cognitoidentityserviceprovider,cognitosync,configservice,devicefarm,directconnect,dynamodb,dynamodbstreams,ec2,ecr,ecs,elasticache,elasticbeanstalk,elastictranscoder,elb,emr,firehose,gamelift,inspector,iot,iotdata,kinesis,kms,lambda,marketplacecommerceanalytics,mobileanalytics,machinelearning,opsworks,rds,redshift,route53,route53domains,s3,ses,sns,sqs,ssm,storagegateway,sts,waf'; +var clientCreator = new ClientCreator(); +var defaultServices = clientCreator.getDefaultServices().join(','); var sanitizeRegex = /[^a-zA-Z0-9,-]/; var serviceClasses = {}; @@ -28,13 +31,15 @@ function getServiceHeader(service) { }).filter(function(c) { return c !== null; }); var file = util.format( - 'AWS.apiLoader.services[\'%s\'] = {};\n' + - 'AWS.%s = AWS.Service.defineService(\'%s\', %s);\n', - service, apis.serviceName(service), service, util.inspect(versions)); + '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 += ' require(\'./services/' + service + '\');\n'; } + file += '}\n'; return file; } @@ -59,16 +64,30 @@ function getService(service, version) { try { var ClassName = serviceClasses[service]; svc = new ClassName({apiVersion: version, endpoint: 'localhost'}); - api = apis.load(service, svc.api.apiVersion); + 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;', - service, svc.api.apiVersion, JSON.stringify(api)); - - return line; + '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) { @@ -110,7 +129,7 @@ function ServiceCollector(services) { } } - return contents.join('\n'); + return contents.join(''); } var serviceCode = ''; @@ -146,4 +165,4 @@ function ServiceCollector(services) { return serviceCode; } -module.exports = ServiceCollector; +module.exports = ServiceCollector; \ No newline at end of file diff --git a/dist-tools/transform.js b/dist-tools/transform.js index cb980c35aa..ff7d2fc271 100644 --- a/dist-tools/transform.js +++ b/dist-tools/transform.js @@ -4,15 +4,39 @@ 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 (file.match(/[\/\\]lib[\/\\]browser\.js$/)) { - stream.push(license); + 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['"]\);$/); + }); - var src = collector(process.env.AWS_SERVICES); - stream._flush = function(callback) { stream.push(src); callback(); }; + 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/global.js b/global.js new file mode 100644 index 0000000000..4b2fe2b6ef --- /dev/null +++ b/global.js @@ -0,0 +1,2 @@ +require('./lib/node_loader'); +module.exports = require('./lib/core'); \ No newline at end of file diff --git a/lib/api_loader.js b/lib/api_loader.js index 71429a217e..b5a9098404 100644 --- a/lib/api_loader.js +++ b/lib/api_loader.js @@ -1,139 +1,12 @@ -var fs = require('fs'); -var path = require('path'); +var AWS = require('./core'); -var apiRoot = path.join(__dirname, '..', 'apis'); -var serviceMap = null; -var serviceIdentifiers = []; -var serviceNames = []; - -function buildServiceMap() { - if (serviceMap !== null) return; - - // load info file for API metadata - serviceMap = require(path.join(apiRoot, 'metadata.json')); - - var prefixMap = {}; - Object.keys(serviceMap).forEach(function(identifier) { - serviceMap[identifier].prefix = serviceMap[identifier].prefix || identifier; - prefixMap[serviceMap[identifier].prefix] = identifier; - }); - - fs.readdirSync(apiRoot).forEach(function (file) { - var match = file.match(/^(.+?)-(\d+-\d+-\d+)\.(normal|min)\.json$/); - if (match) { - var id = prefixMap[match[1]], version = match[2]; - if (serviceMap[id]) { - serviceMap[id].versions = serviceMap[id].versions || []; - if (serviceMap[id].versions.indexOf(version) < 0) { - serviceMap[id].versions.push(version); - } - } - } - }); - - Object.keys(serviceMap).forEach(function(identifier) { - serviceMap[identifier].versions = serviceMap[identifier].versions.sort(); - serviceIdentifiers.push(identifier); - serviceNames.push(serviceMap[identifier].name); - }); -} - -function getServices() { - buildServiceMap(); - return serviceIdentifiers; -} - -function getServiceNames() { - buildServiceMap(); - return serviceNames; -} - -function serviceVersions(svc) { - buildServiceMap(); - svc = serviceIdentifier(svc); - return serviceMap[svc] ? serviceMap[svc].versions : null; -} - -function serviceName(svc) { - buildServiceMap(); - svc = serviceIdentifier(svc); - return serviceMap[svc] ? serviceMap[svc].name : null; -} - -function serviceFile(svc, version) { - buildServiceMap(); - svc = serviceIdentifier(svc); - if (!serviceMap[svc]) return null; - - var prefix = serviceMap[svc].prefix || svc; - var filePath; - ['min', 'api', 'normal'].some(function(testSuffix) { - filePath = apiRoot + '/' + prefix.toLowerCase() + '-' + version + '.' + - testSuffix + '.json'; - - return fs.existsSync(filePath); - }); - return filePath; -} - -function paginatorsFile(svc, version) { - buildServiceMap(); - svc = serviceIdentifier(svc); - if (!serviceMap[svc]) return null; - - var prefix = serviceMap[svc].prefix || svc; - return apiRoot + '/' + prefix + '-' + version + '.paginators.json'; -} - -function waitersFile(svc, version) { - buildServiceMap(); - svc = serviceIdentifier(svc); - if (!serviceMap[svc]) return null; - - var prefix = serviceMap[svc].prefix || svc; - return apiRoot + '/' + prefix + '-' + version + '.waiters2.json'; -} - -function load(svc, version) { - buildServiceMap(); - svc = serviceIdentifier(svc); - if (version === 'latest') version = null; - version = version || serviceMap[svc].versions[serviceMap[svc].versions.length - 1]; - if (!serviceMap[svc]) return null; - - var api = require(serviceFile(svc, version)); - - // Try to load paginators - if (fs.existsSync(paginatorsFile(svc, version))) { - var paginators = require(paginatorsFile(svc, version)); - api.paginators = paginators.pagination; - } - - // Try to load waiters - if (fs.existsSync(waitersFile(svc, version))) { - var waiters = require(waitersFile(svc, version)); - api.waiters = waiters.waiters; +AWS.apiLoader = function(svc, version) { + if (!AWS.apiLoader.services.hasOwnProperty(svc)) { + throw new Error('InvalidService: Failed to load api for ' + svc); } - - return api; -} - -function serviceIdentifier(svc) { - return svc.toLowerCase(); -} - -module.exports = { - serviceVersions: serviceVersions, - serviceName: serviceName, - serviceIdentifier: serviceIdentifier, - serviceFile: serviceFile, - load: load + return AWS.apiLoader.services[svc][version]; }; -Object.defineProperty(module.exports, 'services', { - enumerable: true, get: getServices -}); +AWS.apiLoader.services = {}; -Object.defineProperty(module.exports, 'serviceNames', { - enumerable: true, get: getServiceNames -}); +module.exports = AWS.apiLoader; \ No newline at end of file diff --git a/lib/aws.js b/lib/aws.js index 0ed88f0b7e..050ded9c26 100644 --- a/lib/aws.js +++ b/lib/aws.js @@ -1,61 +1,7 @@ +require('./node_loader'); + var AWS = require('./core'); module.exports = AWS; -// Use default API loader function -AWS.apiLoader = require('./api_loader').load; - -// Load the xml2js XML parser -AWS.XML.Parser = require('./xml/node_parser'); - -// Load Node HTTP client -require('./http/node'); - // Load all service classes -require('./services'); - -// 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(); +require('../clients/all'); diff --git a/lib/browser.js b/lib/browser.js index fa6b421538..79b8e44a07 100644 --- a/lib/browser.js +++ b/lib/browser.js @@ -1,21 +1,14 @@ -var AWS = require('./core'); - -// Load browser API loader -AWS.apiLoader = function(svc, version) { - return AWS.apiLoader.services[svc][version]; -}; - -/** - * @api private - */ -AWS.apiLoader.services = {}; +require('./browser_loader'); -// Load the DOMParser XML parser -AWS.XML.Parser = require('./xml/browser_parser'); - -// Load the XHR HttpClient -require('./http/xhr'); +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; + +/** + * @private + * DO NOT REMOVE + * browser builder will strip out this line if services are supplied on the command line. + */ +require('../clients/browser_default'); \ No newline at end of file diff --git a/lib/browser_loader.js b/lib/browser_loader.js new file mode 100644 index 0000000000..bb8a634716 --- /dev/null +++ b/lib/browser_loader.js @@ -0,0 +1,22 @@ +var util = require('./util'); + +// browser specific modules +util.crypto.lib = require('crypto-browserify'); +util.Buffer = require('buffer/').Buffer; + +var AWS = require('./core'); + +// Use default API loader function +require('./api_loader'); + +// Load the DOMParser XML parser +AWS.XML.Parser = require('./xml/browser_parser'); + +// Load the XHR HttpClient +require('./http/xhr'); + +if (typeof process === 'undefined') { + process = { + browser: true + }; +} \ No newline at end of file diff --git a/lib/cloudfront/signer.js b/lib/cloudfront/signer.js index 434e5bba94..5c51bdcf6d 100644 --- a/lib/cloudfront/signer.js +++ b/lib/cloudfront/signer.js @@ -1,6 +1,6 @@ -var crypto = require('crypto'), - url = require('url'), +var url = require('url'), AWS = require('../core'), + crypto = AWS.util.crypto.lib, base64Encode = AWS.util.base64.encode, inherit = AWS.util.inherit; diff --git a/lib/credentials/cognito_identity_credentials.js b/lib/credentials/cognito_identity_credentials.js index 355c014a99..aa59b87c86 100644 --- a/lib/credentials/cognito_identity_credentials.js +++ b/lib/credentials/cognito_identity_credentials.js @@ -1,4 +1,6 @@ var AWS = require('../core'); +var CognitoIdentity = require('../../clients/cognitoidentity'); +var STS = require('../../clients/sts'); /** * Represents credentials retrieved from STS Web Identity Federation using @@ -287,8 +289,8 @@ AWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, { this.webIdentityCredentials = this.webIdentityCredentials || new AWS.WebIdentityCredentials(this.params); this.cognito = this.cognito || - new AWS.CognitoIdentity({params: this.params}); - this.sts = this.sts || new AWS.STS(); + new CognitoIdentity({params: this.params}); + this.sts = this.sts || new STS(); }, /** diff --git a/lib/credentials/saml_credentials.js b/lib/credentials/saml_credentials.js index 8b144e266e..00343845af 100644 --- a/lib/credentials/saml_credentials.js +++ b/lib/credentials/saml_credentials.js @@ -1,4 +1,5 @@ var AWS = require('../core'); +var STS = require('../../clients/sts'); /** * Represents credentials retrieved from STS SAML support. @@ -82,7 +83,7 @@ AWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, { * @api private */ createClients: function() { - this.service = this.service || new AWS.STS({params: this.params}); + this.service = this.service || new STS({params: this.params}); } }); diff --git a/lib/credentials/shared_ini_file_credentials.js b/lib/credentials/shared_ini_file_credentials.js index 9393990e33..4e958fb7a4 100644 --- a/lib/credentials/shared_ini_file_credentials.js +++ b/lib/credentials/shared_ini_file_credentials.js @@ -1,5 +1,6 @@ var AWS = require('../core'); var path = require('path'); +var STS = require('../../clients/sts'); /** * Represents credentials loaded from shared credentials file @@ -156,7 +157,7 @@ AWS.SharedIniFileCredentials = AWS.util.inherit(AWS.Credentials, { ); } - var sts = new AWS.STS({ + var sts = new STS({ credentials: new AWS.Credentials(sourceCredentials) }); diff --git a/lib/credentials/temporary_credentials.js b/lib/credentials/temporary_credentials.js index f09f9916d5..a3e78a1a9e 100644 --- a/lib/credentials/temporary_credentials.js +++ b/lib/credentials/temporary_credentials.js @@ -1,4 +1,5 @@ var AWS = require('../core'); +var STS = require('../../clients/sts'); /** * Represents temporary credentials retrieved from {AWS.STS}. Without any @@ -105,7 +106,7 @@ AWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, { * @api private */ createClients: function() { - this.service = this.service || new AWS.STS({params: this.params}); + this.service = this.service || new STS({params: this.params}); } }); diff --git a/lib/credentials/web_identity_credentials.js b/lib/credentials/web_identity_credentials.js index 11b5dde711..e4f6907f47 100644 --- a/lib/credentials/web_identity_credentials.js +++ b/lib/credentials/web_identity_credentials.js @@ -1,4 +1,5 @@ var AWS = require('../core'); +var STS = require('../../clients/sts'); /** * Represents credentials retrieved from STS Web Identity Federation support. @@ -89,7 +90,7 @@ AWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, { * @api private */ createClients: function() { - this.service = this.service || new AWS.STS({params: this.params}); + this.service = this.service || new STS({params: this.params}); } }); diff --git a/lib/dynamodb/types.js b/lib/dynamodb/types.js index faeba14a4e..0a0b1d3f22 100644 --- a/lib/dynamodb/types.js +++ b/lib/dynamodb/types.js @@ -20,7 +20,7 @@ function isBinary(data) { 'Float32Array', 'Float64Array' ]; if (util.isNode()) { - var Stream = util.nodeRequire('stream').Stream; + var Stream = util.stream.Stream; if (util.Buffer.isBuffer(data) || data instanceof Stream) return true; } else { diff --git a/lib/http/node.js b/lib/http/node.js index 490b9fbf53..e70aee7c67 100644 --- a/lib/http/node.js +++ b/lib/http/node.js @@ -1,7 +1,7 @@ var AWS = require('../core'); -var Stream = AWS.util.nodeRequire('stream').Stream; -var TransformStream = AWS.util.nodeRequire('stream').Transform; -var ReadableStream = AWS.util.nodeRequire('stream').Readable; +var Stream = AWS.util.stream.Stream; +var TransformStream = AWS.util.stream.Transform; +var ReadableStream = AWS.util.stream.Readable; require('../http'); /** diff --git a/lib/node_loader.js b/lib/node_loader.js new file mode 100644 index 0000000000..e381eeaec5 --- /dev/null +++ b/lib/node_loader.js @@ -0,0 +1,65 @@ +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'); + +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/lib/param_validator.js b/lib/param_validator.js index b201748a8d..cc42698b77 100644 --- a/lib/param_validator.js +++ b/lib/param_validator.js @@ -236,7 +236,7 @@ AWS.ParamValidator = AWS.util.inherit({ 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.nodeRequire('stream').Stream; + var Stream = AWS.util.stream.Stream; if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return; } diff --git a/lib/request.js b/lib/request.js index a48d1e5db5..9282e8c451 100644 --- a/lib/request.js +++ b/lib/request.js @@ -1,7 +1,7 @@ var AWS = require('./core'); var AcceptorStateMachine = require('./state_machine'); var inherit = AWS.util.inherit; -var domain = AWS.util.nodeRequire('domain'); +var domain = AWS.util.domain; var jmespath = require('jmespath'); /** @@ -554,7 +554,7 @@ AWS.Request = inherit({ * @!macro nobrowser */ createReadStream: function createReadStream() { - var streams = AWS.util.nodeRequire('stream'); + var streams = AWS.util.stream; var req = this; var stream = null; diff --git a/lib/s3/managed_upload.js b/lib/s3/managed_upload.js index 24bcac4fa4..1dcb1e602d 100644 --- a/lib/s3/managed_upload.js +++ b/lib/s3/managed_upload.js @@ -1,5 +1,6 @@ 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, @@ -161,7 +162,7 @@ AWS.S3.ManagedUpload = AWS.util.inherit({ if (self.sliceFn) { self.fillQueue = self.fillBuffer; } else if (AWS.util.isNode()) { - var Stream = AWS.util.nodeRequire('stream').Stream; + var Stream = AWS.util.stream.Stream; if (self.body instanceof Stream) { runFill = false; self.fillQueue = self.fillStream; diff --git a/lib/service.js b/lib/service.js index ac20878dfe..1347f8489b 100644 --- a/lib/service.js +++ b/lib/service.js @@ -542,3 +542,5 @@ AWS.util.update(AWS.Service, { */ _serviceMap: {} }); + +module.exports = AWS.Service; \ No newline at end of file diff --git a/lib/services.js b/lib/services.js deleted file mode 100644 index 03d1b7cbab..0000000000 --- a/lib/services.js +++ /dev/null @@ -1,15 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var AWS = require('./core'); -var apis = require('./api_loader'); - -// define services using map -apis.services.forEach(function(identifier) { - var name = apis.serviceName(identifier); - var versions = apis.serviceVersions(identifier); - AWS[name] = AWS.Service.defineService(identifier, versions); - - // load any customizations from lib/services/.js - var svcFile = path.join(__dirname, 'services', identifier + '.js'); - if (fs.existsSync(svcFile)) require('./services/' + identifier); -}); diff --git a/lib/util.js b/lib/util.js index e36c467922..23151b7a92 100644 --- a/lib/util.js +++ b/lib/util.js @@ -1,7 +1,4 @@ /* eslint guard-for-in:0 */ - -var cryptoLib = require('crypto'); -var Buffer = require('buffer').Buffer; var AWS; /** @@ -36,13 +33,6 @@ var util = { isBrowser: function isBrowser() { return process && process.browser; }, isNode: function isNode() { return !util.isBrowser(); }, - nodeRequire: function nodeRequire(module) { - if (util.isNode()) return require(module); - }, - multiRequire: function multiRequire(module1, module2) { - return require(util.isNode() ? module1 : module2); - }, - uriEscape: function uriEscape(string) { var output = encodeURIComponent(string); output = output.replace(/[^A-Za-z0-9_.~\-%]+/g, escape); @@ -99,28 +89,26 @@ var util = { readFileSync: function readFileSync(path) { if (util.isBrowser()) return null; - return util.nodeRequire('fs').readFileSync(path, 'utf-8'); + return require('fs').readFileSync(path, 'utf-8'); }, base64: { encode: function encode64(string) { - return new Buffer(string).toString('base64'); + return new util.Buffer(string).toString('base64'); }, decode: function decode64(string) { - return new Buffer(string, 'base64'); + return new util.Buffer(string, 'base64'); } }, - Buffer: Buffer, - buffer: { toStream: function toStream(buffer) { if (!util.Buffer.isBuffer(buffer)) buffer = new util.Buffer(buffer); - var readable = new (util.nodeRequire('stream').Readable)(); + var readable = new (util.stream.Readable)(); var pos = 0; readable._read = function(size) { if (pos >= buffer.length) return readable.push(null); @@ -146,7 +134,7 @@ var util = { length += buffers[i].length; } - buffer = new Buffer(length); + buffer = new util.Buffer(length); for (i = 0; i < buffers.length; i++) { buffers[i].copy(buffer, offset); @@ -160,7 +148,7 @@ var util = { string: { byteLength: function byteLength(string) { if (string === null || string === undefined) return 0; - if (typeof string === 'string') string = new Buffer(string); + if (typeof string === 'string') string = new util.Buffer(string); if (typeof string.byteLength === 'number') { return string.byteLength; @@ -169,7 +157,7 @@ var util = { } else if (typeof string.size === 'number') { return string.size; } else if (typeof string.path === 'string') { - return util.nodeRequire('fs').lstatSync(string.path).size; + return require('fs').lstatSync(string.path).size; } else { throw util.error(new Error('Cannot determine length of ' + string), { object: string }); @@ -378,7 +366,7 @@ var util = { var crc = 0 ^ -1; if (typeof data === 'string') { - data = new Buffer(data); + data = new util.Buffer(data); } for (var i = 0; i < data.length; i++) { @@ -392,8 +380,8 @@ var util = { if (!digest) digest = 'binary'; if (digest === 'buffer') { digest = undefined; } if (!fn) fn = 'sha256'; - if (typeof string === 'string') string = new Buffer(string); - return cryptoLib.createHmac(fn, key).update(string).digest(digest); + 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) { @@ -408,9 +396,9 @@ var util = { var hash = util.crypto.createHash(algorithm); if (!digest) { digest = 'binary'; } if (digest === 'buffer') { digest = undefined; } - if (typeof data === 'string') data = new Buffer(data); + if (typeof data === 'string') data = new util.Buffer(data); var sliceFn = util.arraySliceFn(data); - var isBuffer = Buffer.isBuffer(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; @@ -428,7 +416,7 @@ var util = { callback(new Error('Failed to read data.')); }; reader.onload = function() { - var buf = new Buffer(new Uint8Array(reader.result)); + var buf = new util.Buffer(new Uint8Array(reader.result)); hash.update(buf); index += buf.length; reader._continueReading(); @@ -447,7 +435,7 @@ var util = { reader._continueReading(); } else { if (util.isBrowser() && typeof data === 'object' && !isBuffer) { - data = new Buffer(new Uint8Array(data)); + data = new util.Buffer(new Uint8Array(data)); } var out = hash.update(data).digest(digest); if (callback) callback(null, out); @@ -464,7 +452,7 @@ var util = { }, createHash: function createHash(algorithm) { - return cryptoLib.createHash(algorithm); + return util.crypto.lib.createHash(algorithm); } }, @@ -696,8 +684,8 @@ var util = { */ computeSha256: function computeSha256(body, done) { if (util.isNode()) { - var Stream = util.nodeRequire('stream').Stream; - var fs = util.nodeRequire('fs'); + var Stream = util.stream.Stream; + var fs = require('fs'); if (body instanceof Stream) { if (typeof body.path === 'string') { // assume file object var settings = {}; diff --git a/package.json b/package.json index ef4fd6331f..aa9ea27f55 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "eslint": "1.x", "cucumber": "0.5.x", "coffeeify": "*", - "browserify": "^8.1.3", + "browserify": "13.1.0", "uglify-js": "2.x", "mocha": "*", "chai": "*", @@ -28,13 +28,20 @@ "insert-module-globals": "^7.0.0" }, "dependencies": { + "buffer": "4.9.1", + "crypto-browserify": "1.0.9", + "jmespath": "0.15.0", "sax": "1.1.5", "xml2js": "0.4.15", - "xmlbuilder": "2.6.2", - "jmespath": "0.15.0" + "xmlbuilder": "2.6.2" }, "main": "lib/aws.js", - "browser": "lib/browser.js", + "browser": { + "lib/aws.js": "./lib/browser.js", + "fs": false, + "./global.js": "./browser.js", + "./lib/node_loader.js": "./lib/browser_loader.js" + }, "browserify": { "transform": "./dist-tools/transform.js" }, "directories": { "lib": "lib" diff --git a/test/services/s3.spec.coffee b/test/services/s3.spec.coffee index 84e166409c..b28c799c0d 100644 --- a/test/services/s3.spec.coffee +++ b/test/services/s3.spec.coffee @@ -1,6 +1,6 @@ helpers = require('../helpers') AWS = helpers.AWS -Stream = AWS.util.nodeRequire('stream') +Stream = AWS.util.stream Buffer = AWS.util.Buffer describe 'AWS.S3', -> diff --git a/test/util.spec.coffee b/test/util.spec.coffee index 21312c9e4e..80e427eb06 100644 --- a/test/util.spec.coffee +++ b/test/util.spec.coffee @@ -301,7 +301,7 @@ describe 'AWS.util.crypto', -> if AWS.util.isNode() it 'handles streams in async interface', (done) -> - Transform = AWS.util.nodeRequire('stream').Transform + Transform = AWS.util.stream.Transform tr = new Transform tr._transform = (data, encoding, callback) -> callback(null, data) tr.push(new AWS.util.Buffer(input)) @@ -347,7 +347,7 @@ describe 'AWS.util.crypto', -> if AWS.util.isNode() it 'handles streams in async interface', (done) -> - Transform = AWS.util.nodeRequire('stream').Transform + Transform = AWS.util.stream.Transform tr = new Transform tr._transform = (data, enc, callback) -> callback(null, data) tr.push(new AWS.util.Buffer(input))