Socket
Socket
Sign inDemoInstall

aws-sdk

Package Overview
Dependencies
65
Maintainers
1
Versions
1912
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.9.2-pre.3 to 0.9.3-pre.4

doc-src/autoscaling.docs.js

67

features/dynamodb/step_definitions/dynamodb.js

@@ -39,10 +39,8 @@ /**

}
world.eventually(callback, function (retry) {
world.eventually(callback, function (next) {
next.condition = function() {
return this.data.Table.TableStatus === 'ACTIVE';
};
params = { TableName: world.tableName };
world.client.describeTable(params, function(err, data) {
if (data.Table && data.Table.TableStatus === 'ACTIVE')
callback();
else
retry();
});
world.request(null, 'describeTable', params, next);
}, {maxTime: 500, delay: 10, backoff: 0});

@@ -74,14 +72,8 @@ });

var params = {TableName: this.tableName, Key: {HashKeyElement: {S: key}}};
this.client.getItem(params, function(err, data) {
world.resp = this;
world.error = err;
next();
});
this.request(null, 'getItem', params, next);
});
this.Then(/^it should have attribute "([^"]*)" containing "([^"]*)"$/, function(attr, value, next) {
if (this.resp.data.Item[attr].S !== value)
next.fail("Attr value " + this.resp.data.Item[attr].S + " does not match " + value);
else
next();
this.assert.equal(this.data.Item[attr].S, value);
next();
});

@@ -94,14 +86,13 @@

this.Then(/^the table should eventually not exist$/, function(next) {
var world = this;
world.eventually(next, function (retry) {
world.client.listTables(function(err, data) {
for (var i = 0; i < data.TableNames.length; i++) {
if (data.TableNames[i] == world.tableName) {
retry();
return;
this.Then(/^the table should eventually not exist$/, function(callback) {
this.eventually(callback, function (next) {
next.condition = function() {
for (var i = 0; i < this.data.TableNames.length; i++) {
if (this.data.TableNames[i] == this.tableName) {
return false;
}
}
next();
});
return true;
};
this.request(null, 'listTables', {}, next);
});

@@ -124,3 +115,4 @@ });

req.on('complete', function(resp) {
world.resp = resp;
world.error = resp.error;
world.response = resp;
if (resp.error) callback.fail(resp.error);

@@ -133,4 +125,4 @@ else callback();

this.Then(/^the request should( not)? be retried$/, function(retry, callback) {
if (retry && this.resp.retryCount > 0) callback.fail('Request was incorrectly retried');
if (!retry && this.resp.retryCount == 0) callback.fail('Request was incorrectly retried');
if (retry && this.response.retryCount > 0) callback.fail('Request was incorrectly retried');
if (!retry && this.response.retryCount == 0) callback.fail('Request was incorrectly retried');
callback();

@@ -147,3 +139,4 @@ });

req.on('complete', function(resp) {
world.resp = resp;
world.error = resp.error;
world.response = resp;
callback();

@@ -155,3 +148,3 @@ });

this.When(/^the request is retried the maximum number of times$/, function(callback) {
if (this.resp.retryCount != 2) callback.fail('Incorrect retry count');
if (this.response.retryCount != 2) callback.fail('Incorrect retry count');
callback();

@@ -161,6 +154,14 @@ });

this.Then(/^the request should( not)? fail with a CRC checking error$/, function(failed, callback) {
if (failed && this.resp.error) callback.fail(this.resp.error);
if (!failed && !this.resp.error) callback.fail('Did not fail when should have');
if (failed && this.error) callback.fail(this.error);
if (!failed && !this.error) callback.fail('Did not fail when should have');
callback();
});
this.Given(/^I try to delete an item with key "([^"]*)" from table "([^"]*)"$/, function(key, table, callback) {
this.request(null, 'deleteItem', {TableName: table, Key: key}, callback, false);
});
this.Given(/^I try to delete an item with no table parameter$/, function(callback) {
this.request(null, 'deleteItem', {}, callback, false);
});
};

@@ -26,5 +26,5 @@ /**

this.bucket = 'aws-sdk-js-integration-elastictranscoder';
this.bucket = 'aws-sdk-js-integration-elastictranscoder-' + timestamp;
new this.AWS.S3.Client().createBucket({Bucket:this.bucket}, function(err, data) {
if (err) callback.fail('Could not create bucket ' + world.bucket);
if (err) callback.fail(err);

@@ -56,9 +56,7 @@ var config = JSON.parse(world.AWS.util.readFileSync('configuration'));

this.Then(/^the list should contain the pipeline$/, function(callback) {
for (var idx in this.resp.data.Pipelines) {
if (this.resp.data.Pipelines[idx].Id === this.pipelineId) {
callback();
return;
}
}
callback.fail('Pipeline ' + this.pipelineId + ' is not in pipelines');
var id = this.pipelineId;
this.assert.contains(this.data.Pipelines, function (pipeline) {
return pipeline.Id === id;
});
callback();
});

@@ -75,10 +73,9 @@

this.Then(/^the pipeline status should be "([^"]*)"$/, function(status, callback) {
if (this.resp.data.Pipeline.Status === status) callback();
else callback.fail('Expected status ' + status + ', got ' + this.resp.data.Pipeline.Status);
this.assert.equal(this.data.Pipeline.Status, status);
callback();
});
this.Then(/^I delete the pipeline$/, function(callback) {
var world = this;
this.request(null, 'deletePipeline', {Id: this.pipelineId}, function() {
world.request(new world.AWS.S3.Client(), 'deleteBucket', {Bucket: world.bucket}, callback);
this.request(new this.AWS.S3.Client(), 'deleteBucket', {Bucket: this.bucket}, callback);
});

@@ -88,10 +85,4 @@ });

this.Given(/^I create a pipeline with invalid parameters$/, function(callback) {
var world = this;
this.client.createPipeline({}, function() { world.resp = this; callback(); });
this.request(null, 'createPipeline', {}, callback, false);
});
this.Then(/^the error code should be "([^"]*)"$/, function(code, callback) {
if (this.resp.error.code === code) callback();
else callback.fail('Expected code ' + code + ', got ' + this.resp.error.code);
});
};

@@ -27,3 +27,3 @@ /**

this.AWS.util.date.unixTimestamp() * 1000;
var params = { Bucket: this.bucket, LocationConstraint: loc };
var params = { Bucket: this.bucket, CreateBucketConfiguration: {LocationConstraint: loc} };
this.request('s3', 'createBucket', params, next);

@@ -34,5 +34,3 @@ });

this.eventually(next, function (retry) {
this.s3.headBucket({Bucket:this.bucket}, function(err) {
err ? retry() : next();
});
this.request('s3', 'headBucket', {Bucket:this.bucket}, retry);
});

@@ -47,5 +45,6 @@ });

this.eventually(next, function (retry) {
this.s3.headBucket({Bucket:this.bucket}, function(err) {
err && err.code == 'NotFound' ? next() : retry();
});
retry.condition = function() {
return this.error && this.error.code === 'NotFound';
}
this.request('s3', 'headBucket', {Bucket:this.bucket}, retry, false);
});

@@ -52,0 +51,0 @@ });

@@ -42,10 +42,4 @@ /**

this.Then(/^the object with the key "([^"]*)" should contain "([^"]*)"$/, function(key, contents, next) {
this.eventually(next, function (retry) {
this.s3.getObject({Bucket:this.sharedBucket,Key:key}, function(err, data) {
if (data && data.Body.toString().replace("\n", "") == contents)
next();
else
retry();
});
});
this.assert.equal(this.data.Body.toString().replace("\n", ""), contents);
next();
});

@@ -68,9 +62,10 @@

this.eventually(next, function (retry) {
this.s3.headObject(params, function(err, data) {
retry.condition = function() {
if (shouldNotExist) {
(err && err.code == 'NotFound') ? next() : retry();
} else { // should exist
err ? retry() : next();
return this.error && this.error.code == 'NoSuchKey';
} else {
return !this.error;
}
});
};
this.request('s3', 'getObject', params, retry, false);
});

@@ -77,0 +72,0 @@ });

@@ -22,8 +22,2 @@ /**

this.Then(/^the status code should be (\d+)$/, function(status, next) {
if (parseInt(status) !== this.resp.httpResponse.statusCode) {
next.fail("Expected status " + status + ", got " + this.resp.httpResponse.statusCode)
} else { next(); }
});
this.When(/^I check quota$/, function(next) {

@@ -34,4 +28,4 @@ this.request(null, 'getSendQuota', {}, next);

this.Then(/^the result should include (\S+) "([^"]*)"$/, function(type, attr, next) {
if (this.resp.data[attr] === undefined) next.fail("Missing " + attr);
if (typeof this.resp.data[attr] !== type) next.fail("Incorrect type " + attr);
if (this.data[attr] === undefined) next.fail("Missing " + attr);
if (typeof this.data[attr] !== type) next.fail("Incorrect type " + attr);
next();

@@ -45,9 +39,2 @@ });

});
this.Then(/^I should get the error:$/, function(table, next) {
var err = table.hashes()[0]
if (err.code !== this.error.code || err.message !== this.error.message) {
next.fail("Expected " + err.code + ", " + err.message + ", got " + this.resp.error);
} else { next(); }
});
};

@@ -19,33 +19,21 @@ /**

this.When(/^I send the message "([^"]*)"$/, function(message, callback) {
var world = this;
this.client.sendMessage({QueueUrl:this.queueUrl,MessageBody:message}, function(err, data) {
if (err) callback.fail();
world.data = data;
callback();
});
this.request(null, 'sendMessage', {QueueUrl:this.queueUrl,MessageBody:message}, callback);
});
this.Then(/^the result should include a message ID$/, function(callback) {
if (this.data.MessageId) callback();
else callback.fail();
this.assert.compare(this.data.MessageId.length, '>', 0);
callback();
});
this.Then(/^the result should have an MD5 digest of "([^"]*)"$/, function(digest, callback) {
if (this.data.MD5OfMessageBody === digest) callback();
else callback.fail();
this.assert.equal(this.data.MD5OfMessageBody, digest);
callback();
});
this.Then(/^I should eventually be able to receive "([^"]*)" from the queue$/, function(message, callback) {
var world = this;
this.eventually(callback, function (retry) {
this.client.receiveMessage({QueueUrl:world.queueUrl}, function(err, data) {
if (err) retry();
else {
var params = {QueueUrl:world.queueUrl,ReceiptHandle:data.Messages[0].ReceiptHandle};
var success = data.Messages[0].Body === message;
world.client.deleteMessage(params, function(err, data) {
(!success && err) ? callback.fail(err) : callback();
});
}
});
this.eventually(callback, function (next) {
next.condition = function() {
return this.data.Messages[0].Body === message;
};
this.request(null, 'receiveMessage', {QueueUrl:this.queueUrl}, next);
});

@@ -52,0 +40,0 @@ });

@@ -43,7 +43,7 @@ /**

this.eventually(callback, function (retry) {
if(this.createdQueues.length == count) {
callback();
this.eventually(callback, function (next) {
if (this.createdQueues.length == count) {
next();
} else {
retry();
next.fail();
}

@@ -54,20 +54,15 @@ }, { maxTime: 20 });

this.Then(/^list queues should eventually return the queue urls$/, function(callback) {
var world = this;
var createdQueues = this.createdQueues;
this.eventually(callback, function (retry) {
this.client.listQueues(function (err, data) {
this.eventually(callback, function (next) {
next.condition = function() {
var matchingCount = 0;
if (err) callback.fail(err);
for (var i = 0; i < createdQueues.length; ++i) {
for (var j = 0; j < data.QueueUrls.length; ++j) {
if (createdQueues[i] == data.QueueUrls[j]) {
matchingCount += 1;
for (var i = 0; i < this.createdQueues.length; ++i) {
for (var j = 0; j < this.data.QueueUrls.length; ++j) {
if (this.createdQueues[i] == this.data.QueueUrls[j]) {
matchingCount++;
}
}
}
if (matchingCount == createdQueues.length)
callback();
else
retry();
});
return matchingCount == this.createdQueues.length;
};
this.request(null, 'listQueues', {}, next);
}, { maxTime: 60 });

@@ -82,7 +77,7 @@ });

this.eventually(callback, function (retry) {
if(this.deletedQueues.length == this.createdQueues.length) {
callback();
this.eventually(callback, function (next) {
if (this.deletedQueues.length == this.createdQueues.length) {
next();
} else {
retry();
next.fail();
}

@@ -89,0 +84,0 @@ }, { maxTime: 20 });

@@ -18,2 +18,9 @@ /**

assert: require('./assertions').assert,
uniqueName: function uniqueName(base) {
if (base === "") return "";
return base + '-' + new Date().getTime();
},
/**

@@ -24,8 +31,8 @@ * Call this function with a block that will be executed multiple times

* this.When(/^I something is eventually consistent$/, function(callback) {
* this.eventually(callback, function(retry) {
* this.eventually(callback, function(next) {
* doSomething(function(response) {
* if (response != notWhatIExpect) {
* retry();
* next.fail();
* } else {
* callback();
* next();
* }

@@ -53,4 +60,4 @@ * });

var self = this;
var retry = function() {
var retry = function() { callback(); };
retry.fail = function(err) {
var now = self.AWS.util.date.getDate();

@@ -63,5 +70,4 @@ if (now - started < options.maxTime * 1000) {

} else {
callback.fail();
callback.fail(err || new Error('Eventually block timed out'));
}
};

@@ -84,13 +90,27 @@

svc[operation](params, function(err, data) {
world.response = this;
world.error = err;
world.resp = this;
if (extra) {
extra.call(world, this);
next();
world.data = data;
try {
if (typeof next.condition === 'function') {
var condition = next.condition.call(world, world);
if (!condition) {
next.fail(new Error('Request success condition failed'));
return;
}
}
if (extra) {
extra.call(world, world.response);
next.call(world);
}
else if (extra !== false && err) {
world.unexpectedError(world.response, next);
} else {
next.call(world);
}
} catch (err) {
next.fail(err);
}
else if (err) {
world.unexpectedError(this, next);
} else {
next();
}
});

@@ -110,5 +130,5 @@ },

var err = 'Received unexpected error from ' + svc + '.' + op + ', ' + code + ': ' + msg;
next.fail(err);
next.fail(new Error(err));
}
};

@@ -20,2 +20,29 @@ /**

/* Global error code steps */
this.Then(/^the error code should be "([^"]*)"$/, function(code, callback) {
this.assert.ok(this.error, 'Response does not contain an error');
this.assert.equal(this.error.code, code);
callback();
});
this.Then(/^the error message should (be|equal|match|contain):$/, function(matcher, message, callback) {
if (matcher === 'be') matcher = 'equal';
if (matcher === 'contain') matcher = 'match';
this.assert.ok(this.error, 'Response does not contain an error');
this.assert[matcher](this.error.message, message);
callback();
});
this.Then(/^the status code should be (\d+)$/, function(status, callback) {
this.assert.equal(this.response.httpResponse.statusCode, parseInt(status));
callback();
});
this.Then(/^I should get the error:$/, function(table, callback) {
var err = table.hashes()[0]
this.assert.equal(this.error.code, err.code);
this.assert.equal(this.error.message, err.message);
callback();
});
};

@@ -19,8 +19,16 @@ /**

require('./services/autoscaling');
require('./services/cloudwatch');
require('./services/dynamodb');
require('./services/ec2');
require('./services/elastictranscoder');
require('./services/elb');
require('./services/emr');
require('./services/iam');
require('./services/s3');
require('./services/ses');
require('./services/simpledb');
require('./services/simpleworkflow');
require('./services/sns');
require('./services/sqs');
require('./services/sts');

@@ -60,5 +60,7 @@ /**

addAllRequestListeners: function addAllRequestListeners(request) {
var svc = this.serviceInterface();
request.addListeners(AWS.EventListeners.Core);
if (svc) request.addListeners(svc);
var list = [AWS.events, AWS.EventListeners.Core,
this.serviceInterface()];
for (var i = 0; i < list.length; i++) {
if (list[i]) request.addListeners(list[i]);
}
this.setupRequestListeners(request);

@@ -134,2 +136,4 @@ },

this.endpoint = new AWS.Endpoint(endpoint, this.config);
} else if (this.api.globalEndpoint) {
this.endpoint = new AWS.Endpoint(this.api.globalEndpoint, this.config);
} else {

@@ -148,5 +152,5 @@ var host = this.api.serviceName + '.' + this.config.region + '.amazonaws.com';

*/
defineMethods: function defineMethods(svc) {
AWS.util.each(svc.prototype.api.operations, function iterator(method) {
svc.prototype[method] = function (params, callback) {
defineMethods: function defineMethods(client) {
AWS.util.each(client.prototype.api.operations, function iterator(method) {
client.prototype[method] = function (params, callback) {
return this.makeRequest(method, params, callback);

@@ -153,0 +157,0 @@ };

@@ -17,2 +17,4 @@ /**

var AWS = require('./core');
require('./event_listeners');
require('./event_emitter');
var inherit = AWS.util.inherit;

@@ -151,3 +153,3 @@

}
if (defaultValue instanceof Function) {
if (typeof defaultValue === 'function') {
this[property] = defaultValue.call(this);

@@ -443,3 +445,3 @@ } else {

var creds;
if (provider instanceof Function) {
if (typeof provider === 'function') {
creds = provider.call();

@@ -446,0 +448,0 @@ } else {

@@ -28,3 +28,3 @@ /**

*/
VERSION: 'v0.9.2-pre.3',
VERSION: 'v0.9.3-pre.4',

@@ -51,1 +51,18 @@ /**

require('./request_signer');
/**
* @readonly
* @return [AWS.EventEmitter] a collection of global event listeners that are
* attached to every sent request.
* @see AWS.Request AWS.Request for a list of events to listen for
* @example Logging the time taken to send a request
* AWS.events.on('send', function startSend(resp) {
* resp.startTime = new Date().getTime();
* }).on('complete', function calculateTime(resp) {
* var time = (new Date().getTime() - resp.startTime) / 1000;
* console.log('Request took ' + time + ' seconds');
* });
*
* new AWS.S3.Client().listBuckets(); // prints 'Request took 0.285 seconds'
*/
AWS.events = new AWS.EventEmitter();

@@ -37,3 +37,3 @@ /**

* containing listeners to add to this emitter object.
* @return [null]
* @return [AWS.EventEmitter] the emitter object, for chaining.
* @example Adding listeners from a map of listeners

@@ -62,3 +62,3 @@ * emitter.addListeners({

AWS.util.each(listeners, function(event, callbacks) {
if (callbacks instanceof Function) callbacks = [callbacks];
if (typeof callbacks === 'function') callbacks = [callbacks];
AWS.util.arrayEach(callbacks, function(callback) {

@@ -68,2 +68,4 @@ self.on(event, callback);

});
return self;
},

@@ -70,0 +72,0 @@

@@ -150,3 +150,4 @@ /**

if (resp.httpResponse.buffers.length > 0) {
resp.httpResponse.body = Buffer.concat(resp.httpResponse.buffers);
var body = AWS.util.buffer.concat(resp.httpResponse.buffers);
resp.httpResponse.body = body;
}

@@ -153,0 +154,0 @@ delete resp.httpResponse.buffers;

@@ -184,7 +184,7 @@ /**

var stream = client.request(options, function onResponse(httpResponse) {
request.emit('httpHeaders', httpResponse.statusCode,
httpResponse.headers, response);
request.emitEvent('httpHeaders', response, httpResponse.statusCode,
httpResponse.headers, response);
httpResponse.on('data', function onData(data) {
request.emit('httpData', data, response);
request.emitEvent('httpData', response, data, response);
});

@@ -198,3 +198,3 @@

stream.on('error', function (err) {
request.emit('httpError', AWS.util.error(err,
request.emitEvent('httpError', response, AWS.util.error(err,
{code: 'NetworkingError', retryable: true}), response);

@@ -201,0 +201,0 @@ });

@@ -309,3 +309,3 @@ /**

if (this.listeners('error').length > 0) {
this.emit('error', response.error, response);
this.emitEvent('error', response);
}

@@ -351,3 +351,10 @@ } else {

try {
this.emit(eventName, this.eventParameters(eventName, response));
var args;
if (arguments.length > 2) {
// TODO: accept any amount of arguments
args = [eventName, arguments[2], arguments[3], arguments[4], arguments[5]];
} else {
args = this.eventParameters(eventName, response);
}
this.emit.apply(this, args);
} catch (err) {

@@ -362,8 +369,11 @@ response.error = err;

eventParameters: function eventParameters(eventName, response) {
/*jshint maxcomplexity:8*/
switch (eventName) {
case 'validate': case 'sign':
case 'build': case 'afterBuild':
return this;
return [eventName, this];
case 'error':
return [eventName, response.error, response];
default:
return response;
return [eventName, response];
}

@@ -370,0 +380,0 @@ }

@@ -56,2 +56,3 @@ /**

if (data.Errors) data = data.Errors;
if (data.Error) data = data.Error;

@@ -149,3 +150,3 @@ if (data.Code) {

toString: function toString() {
return this.value ?
return this.value !== undefined && this.value !== null ?
this.encode(this.name) + '=' + this.encode(this.value) :

@@ -162,5 +163,4 @@ this.encode(this.name);

constructor: function QueryParamSerializer(rules, memberedLists) {
constructor: function QueryParamSerializer(rules) {
this.rules = rules;
this.memberedLists = memberedLists;
},

@@ -200,9 +200,16 @@

var that = this;
var memberRules = rules.m || {};
AWS.util.arrayEach(list, function (v, n) {
var suffix = '.' + (n + 1);
if (that.memberedLists)
suffix = '.' + (rules.n || 'member') + suffix;
else if(rules.n)
name = rules.n;
that.serializeMember(name + suffix, v, rules, fn);
if (rules.f) {
if (memberRules.n) {
var parts = name.split('.');
parts.pop();
parts.push(memberRules.n);
name = parts.join('.');
}
} else {
suffix = '.' + (memberRules.n || 'member') + suffix;
}
that.serializeMember(name + suffix, v, memberRules, fn);
});

@@ -215,3 +222,3 @@ },

else if (rules.t === 'a')
this.serializeList(name, value, rules.m || {}, fn);
this.serializeList(name, value, rules, fn);
else if (rules.t === 'm')

@@ -218,0 +225,0 @@ this.serializeMap(name, value, rules, fn);

@@ -33,2 +33,4 @@ /**

var data = new AWS.XML.Parser({}).parse(resp.httpResponse.body.toString());
if (data.Errors) data = data.Errors;
if (data.Error) data = data.Error;
if (data.Code) {

@@ -55,4 +57,8 @@ resp.error = AWS.util.error(new Error(), {

if (rules.Body && rules.Body.t === 'bl') {
resp.data.Body = httpResponse.body;
if (operation.op) {
var payload = httpResponse.body;
if (rules[operation.op] && !rules[operation.op].s) {
payload = payload.toString(); // payload is not binary
}
resp.data[operation.op] = payload;
} else if (httpResponse.body.length > 0) {

@@ -59,0 +65,0 @@ var parser = new AWS.XML.Parser(rules);

@@ -47,2 +47,11 @@ /**

var header = (rule.n || name).toLowerCase();
if (rule.t == 'm') {
data[name] = {};
AWS.util.each(r.headers, function (k, v) {
var result = k.match(new RegExp('^' + rule.n + '(.+)', 'i'));
if (result !== null) {
data[name][result[1]] = v;
}
});
}
if (headers[header] !== undefined) {

@@ -49,0 +58,0 @@ data[name] = headers[header];

@@ -33,4 +33,3 @@ /**

}
},
o: null
}
},

@@ -335,4 +334,3 @@ createJob: {

}
},
o: null
}
},

@@ -349,4 +347,3 @@ deletePreset: {

}
},
o: null
}
},

@@ -353,0 +350,0 @@ listJobsByPipeline: {

@@ -20,2 +20,3 @@ /**

serviceName: 's3',
globalEndpoint: 's3.amazonaws.com',
xmlNamespace: 'http://s3.amazonaws.com/doc/2006-03-01/',

@@ -57,6 +58,2 @@ timestampFormat: 'rfc822',

},
UploadId: {
r: 1,
l: 'uri'
},
MultipartUpload: {

@@ -74,6 +71,6 @@ n: 'CompleteMultipartUpload',

m: {
ETag: {
},
PartNumber: {
t: 'i'
},
ETag: {
}

@@ -84,2 +81,6 @@ }

}
},
UploadId: {
r: 1,
l: 'uri'
}

@@ -119,2 +120,6 @@ }

m: {
ACL: {
l: 'header',
n: 'x-amz-acl'
},
Bucket: {

@@ -124,10 +129,22 @@ r: 1,

},
Key: {
r: 1,
l: 'uri'
CacheControl: {
l: 'header',
n: 'Cache-Control'
},
MetadataDirective: {
ContentDisposition: {
l: 'header',
n: 'x-amz-metadata-directive'
n: 'Content-Disposition'
},
ContentEncoding: {
l: 'header',
n: 'Content-Encoding'
},
ContentLanguage: {
l: 'header',
n: 'Content-Language'
},
ContentType: {
l: 'header',
n: 'Content-Type'
},
CopySource: {

@@ -143,2 +160,7 @@ l: 'header',

},
CopySourceIfModifiedSince: {
t: 't',
l: 'header',
n: 'x-amz-copy-source-if-modified-since'
},
CopySourceIfNoneMatch: {

@@ -154,15 +176,11 @@ t: 't',

},
CopySourceIfModifiedSince: {
Expires: {
t: 't',
l: 'header',
n: 'x-amz-copy-source-if-modified-since'
n: 'Expires'
},
StorageClass: {
GrantFullControl: {
l: 'header',
n: 'x-amz-storage-class'
n: 'x-amz-grant-full-control'
},
ACL: {
l: 'header',
n: 'x-amz-acl'
},
GrantRead: {

@@ -180,43 +198,26 @@ l: 'header',

},
GrantFullControl: {
l: 'header',
n: 'x-amz-grant-full-control'
Key: {
r: 1,
l: 'uri'
},
CacheControl: {
Metadata: {
t: 'm',
l: 'header',
n: 'Cache-Control'
n: 'x-amz-meta-'
},
ContentDisposition: {
MetadataDirective: {
l: 'header',
n: 'Content-Disposition'
n: 'x-amz-metadata-directive'
},
ContentEncoding: {
ServerSideEncryption: {
l: 'header',
n: 'Content-Encoding'
n: 'x-amz-server-side-encryption'
},
ContentLanguage: {
StorageClass: {
l: 'header',
n: 'Content-Language'
n: 'x-amz-storage-class'
},
ContentType: {
l: 'header',
n: 'Content-Type'
},
Expires: {
t: 't',
l: 'header',
n: 'Expires'
},
WebsiteRedirectLocation: {
l: 'header',
n: 'x-amz-website-redirect-location'
},
ServerSideEncryption: {
l: 'header',
n: 'x-amz-server-side-encryption'
},
Metadata: {
t: 'm',
l: 'header',
n: 'x-amz-meta-'
}

@@ -255,2 +256,6 @@ }

m: {
ACL: {
l: 'header',
n: 'x-amz-acl'
},
Bucket: {

@@ -268,5 +273,5 @@ r: 1,

},
ACL: {
GrantFullControl: {
l: 'header',
n: 'x-amz-acl'
n: 'x-amz-grant-full-control'
},

@@ -277,2 +282,6 @@ GrantRead: {

},
GrantReadACP: {
l: 'header',
n: 'x-amz-grant-read-acp'
},
GrantWrite: {

@@ -282,13 +291,5 @@ l: 'header',

},
GrantReadACP: {
l: 'header',
n: 'x-amz-grant-read-acp'
},
GrantWriteACP: {
l: 'header',
n: 'x-amz-grant-write-acp'
},
GrantFullControl: {
l: 'header',
n: 'x-amz-grant-full-control'
}

@@ -309,14 +310,2 @@ }

m: {
Bucket: {
r: 1,
l: 'uri'
},
Key: {
r: 1,
l: 'uri'
},
StorageClass: {
l: 'header',
n: 'x-amz-storage-class'
},
ACL: {

@@ -326,18 +315,6 @@ l: 'header',

},
GrantRead: {
l: 'header',
n: 'x-amz-grant-read'
Bucket: {
r: 1,
l: 'uri'
},
GrantReadACP: {
l: 'header',
n: 'x-amz-grant-read-acp'
},
GrantWriteACP: {
l: 'header',
n: 'x-amz-grant-write-acp'
},
GrantFullControl: {
l: 'header',
n: 'x-amz-grant-full-control'
},
CacheControl: {

@@ -368,10 +345,22 @@ l: 'header',

},
WebsiteRedirectLocation: {
GrantFullControl: {
l: 'header',
n: 'x-amz-website-redirect-location'
n: 'x-amz-grant-full-control'
},
ServerSideEncryption: {
GrantRead: {
l: 'header',
n: 'x-amz-server-side-encryption'
n: 'x-amz-grant-read'
},
GrantReadACP: {
l: 'header',
n: 'x-amz-grant-read-acp'
},
GrantWriteACP: {
l: 'header',
n: 'x-amz-grant-write-acp'
},
Key: {
r: 1,
l: 'uri'
},
Metadata: {

@@ -381,2 +370,14 @@ t: 'm',

n: 'x-amz-meta-'
},
ServerSideEncryption: {
l: 'header',
n: 'x-amz-server-side-encryption'
},
StorageClass: {
l: 'header',
n: 'x-amz-storage-class'
},
WebsiteRedirectLocation: {
l: 'header',
n: 'x-amz-website-redirect-location'
}

@@ -511,5 +512,2 @@ }

m: {
Quiet: {
t: 'b'
},
Objects: {

@@ -530,2 +528,5 @@ n: 'Object',

}
},
Quiet: {
t: 'b'
}

@@ -838,2 +839,3 @@ }

},
op: 'Policy',
o: {

@@ -985,2 +987,20 @@ Policy: {

},
IfMatch: {
l: 'header',
n: 'If-Match'
},
IfModifiedSince: {
t: 't',
l: 'header',
n: 'If-Modified-Since'
},
IfNoneMatch: {
l: 'header',
n: 'If-None-Match'
},
IfUnmodifiedSince: {
t: 't',
l: 'header',
n: 'If-Unmodified-Since'
},
Key: {

@@ -990,19 +1010,22 @@ r: 1,

},
ResponseContentType: {
Range: {
l: 'header'
},
ResponseCacheControl: {
l: 'uri'
},
ResponseContentLanguage: {
ResponseContentDisposition: {
l: 'uri'
},
ResponseExpires: {
t: 't',
ResponseContentEncoding: {
l: 'uri'
},
ResponseCacheControl: {
ResponseContentLanguage: {
l: 'uri'
},
ResponseContentDisposition: {
ResponseContentType: {
l: 'uri'
},
ResponseContentEncoding: {
ResponseExpires: {
t: 't',
l: 'uri'

@@ -1013,26 +1036,6 @@ },

n: 'versionId'
},
Range: {
l: 'header'
},
IfModifiedSince: {
t: 't',
l: 'header',
n: 'If-Modified-Since'
},
IfUnmodifiedSince: {
t: 't',
l: 'header',
n: 'If-Unmodified-Since'
},
IfMatch: {
l: 'header',
n: 'If-Match'
},
IfNoneMatch: {
l: 'header',
n: 'If-None-Match'
}
}
},
op: 'Body',
o: {

@@ -1197,2 +1200,3 @@ Body: {

},
op: 'Body',
o: {

@@ -1227,13 +1231,6 @@ Body: {

},
Key: {
r: 1,
l: 'uri'
IfMatch: {
l: 'header',
n: 'If-Match'
},
VersionId: {
l: 'uri',
n: 'versionId'
},
Range: {
l: 'header'
},
IfModifiedSince: {

@@ -1244,2 +1241,6 @@ t: 't',

},
IfNoneMatch: {
l: 'header',
n: 'If-None-Match'
},
IfUnmodifiedSince: {

@@ -1250,9 +1251,12 @@ t: 't',

},
IfMatch: {
l: 'header',
n: 'If-Match'
Key: {
r: 1,
l: 'uri'
},
IfNoneMatch: {
l: 'header',
n: 'If-None-Match'
Range: {
l: 'header'
},
VersionId: {
l: 'uri',
n: 'versionId'
}

@@ -1374,6 +1378,6 @@ }

},
Prefix: {
Delimiter: {
l: 'uri'
},
Delimiter: {
KeyMarker: {
l: 'uri'

@@ -1385,3 +1389,3 @@ },

},
KeyMarker: {
Prefix: {
l: 'uri'

@@ -1459,6 +1463,6 @@ },

},
KeyMarker: {
Delimiter: {
l: 'uri'
},
VersionIdMarker: {
KeyMarker: {
l: 'uri'

@@ -1470,6 +1474,6 @@ },

},
Delimiter: {
Prefix: {
l: 'uri'
},
Prefix: {
VersionIdMarker: {
l: 'uri'

@@ -1480,2 +1484,5 @@ }

o: {
IsTruncated: {
t: 'b'
},
KeyMarker: {

@@ -1560,5 +1567,2 @@ },

},
IsTruncated: {
t: 'b'
},
CommonPrefixes: {

@@ -1586,2 +1590,5 @@ t: 'a',

},
Delimiter: {
l: 'uri'
},
Marker: {

@@ -1594,5 +1601,2 @@ l: 'uri'

},
Delimiter: {
l: 'uri'
},
Prefix: {

@@ -1604,2 +1608,5 @@ l: 'uri'

o: {
IsTruncated: {
t: 'b'
},
Marker: {

@@ -1644,5 +1651,2 @@ },

},
IsTruncated: {
t: 'b'
},
CommonPrefixes: {

@@ -1674,6 +1678,2 @@ t: 'a',

},
UploadId: {
r: 1,
l: 'uri'
},
MaxParts: {

@@ -1685,2 +1685,6 @@ t: 'i',

l: 'uri'
},
UploadId: {
r: 1,
l: 'uri'
}

@@ -1756,5 +1760,5 @@ }

m: {
Bucket: {
r: 1,
l: 'uri'
ACL: {
l: 'header',
n: 'x-amz-acl'
},

@@ -1765,11 +1769,2 @@ AccessControlPolicy: {

m: {
Owner: {
t: 'o',
m: {
ID: {
},
DisplayName: {
}
}
},
Grants: {

@@ -1789,2 +1784,8 @@ n: 'AccessControlList',

m: {
DisplayName: {
},
EmailAddress: {
},
ID: {
},
Type: {

@@ -1795,8 +1796,2 @@ n: 'xsi:type',

},
ID: {
},
DisplayName: {
},
EmailAddress: {
},
URI: {

@@ -1810,9 +1805,26 @@ }

}
},
Owner: {
t: 'o',
m: {
DisplayName: {
},
ID: {
}
}
}
}
},
ACL: {
Bucket: {
r: 1,
l: 'uri'
},
ContentMD5: {
l: 'header',
n: 'x-amz-acl'
n: 'Content-MD5'
},
GrantFullControl: {
l: 'header',
n: 'x-amz-grant-full-control'
},
GrantRead: {

@@ -1822,2 +1834,6 @@ l: 'header',

},
GrantReadACP: {
l: 'header',
n: 'x-amz-grant-read-acp'
},
GrantWrite: {

@@ -1827,17 +1843,5 @@ l: 'header',

},
GrantReadACP: {
l: 'header',
n: 'x-amz-grant-read-acp'
},
GrantWriteACP: {
l: 'header',
n: 'x-amz-grant-write-acp'
},
GrantFullControl: {
l: 'header',
n: 'x-amz-grant-full-control'
},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
}

@@ -1867,2 +1871,7 @@ }

m: {
AllowedMethods: {
n: 'AllowedMethod',
t: 'a',
f: 1
},
AllowedOrigins: {

@@ -1873,4 +1882,4 @@ n: 'AllowedOrigin',

},
AllowedMethods: {
n: 'AllowedMethod',
ExposeHeaders: {
n: 'ExposeHeader',
t: 'a',

@@ -1881,7 +1890,2 @@ f: 1

t: 'i'
},
ExposeHeaders: {
n: 'ExposeHeader',
t: 'a',
f: 1
}

@@ -1909,2 +1913,6 @@ }

},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
},
LifecycleConfiguration: {

@@ -1922,2 +1930,15 @@ t: 'o',

m: {
Expiration: {
t: 'o',
m: {
Date: {
t: 't',
tf: 'iso8601'
},
Days: {
t: 'i',
r: 1
}
}
},
ID: {

@@ -1934,5 +1955,2 @@ },

m: {
Days: {
t: 'i'
},
Date: {

@@ -1942,16 +1960,6 @@ t: 't',

},
StorageClass: {
}
}
},
Expiration: {
t: 'o',
m: {
Days: {
t: 'i',
r: 1
t: 'i'
},
Date: {
t: 't',
tf: 'iso8601'
StorageClass: {
}

@@ -1964,6 +1972,2 @@ }

}
},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
}

@@ -1993,4 +1997,2 @@ }

},
TargetPrefix: {
},
TargetGrants: {

@@ -2009,2 +2011,8 @@ t: 'a',

m: {
DisplayName: {
},
EmailAddress: {
},
ID: {
},
Type: {

@@ -2015,8 +2023,2 @@ n: 'xsi:type',

},
ID: {
},
DisplayName: {
},
EmailAddress: {
},
URI: {

@@ -2030,2 +2032,4 @@ }

}
},
TargetPrefix: {
}

@@ -2052,2 +2056,6 @@ }

},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
},
NotificationConfiguration: {

@@ -2062,5 +2070,5 @@ t: 'o',

m: {
Event: {
},
Topic: {
},
Event: {
}

@@ -2070,6 +2078,2 @@ }

}
},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
}

@@ -2088,9 +2092,9 @@ }

},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
},
Policy: {
r: 1,
l: 'body'
},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
}

@@ -2109,2 +2113,6 @@ }

},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
},
RequestPaymentConfiguration: {

@@ -2119,6 +2127,2 @@ t: 'o',

}
},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
}

@@ -2137,2 +2141,6 @@ }

},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
},
Tagging: {

@@ -2161,6 +2169,2 @@ t: 'o',

}
},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
}

@@ -2179,2 +2183,10 @@ }

},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
},
MFA: {
l: 'header',
n: 'x-amz-mfa'
},
VersioningConfiguration: {

@@ -2185,15 +2197,7 @@ t: 'o',

m: {
MFADelete: {
},
Status: {
},
MFADelete: {
}
}
},
MFA: {
l: 'header',
n: 'x-amz-mfa'
},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
}

@@ -2212,2 +2216,6 @@ }

},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
},
WebsiteConfiguration: {

@@ -2218,9 +2226,7 @@ t: 'o',

m: {
RedirectAllRequestsTo: {
ErrorDocument: {
t: 'o',
m: {
HostName: {
Key: {
r: 1
},
Protocol: {
}

@@ -2237,7 +2243,9 @@ }

},
ErrorDocument: {
RedirectAllRequestsTo: {
t: 'o',
m: {
Key: {
HostName: {
r: 1
},
Protocol: {
}

@@ -2255,8 +2263,13 @@ }

m: {
HttpErrorCodeReturnedEquals: {
},
KeyPrefixEquals: {
},
HttpErrorCodeReturnedEquals: {
}
}
},
HostName: {
r: 1
},
Protocol: {
},
Redirect: {

@@ -2266,14 +2279,9 @@ t: 'o',

m: {
HttpRedirectCode: {
},
ReplaceKeyPrefixWith: {
},
ReplaceKeyWith: {
},
HttpRedirectCode: {
}
}
},
HostName: {
r: 1
},
Protocol: {
}

@@ -2284,6 +2292,2 @@ }

}
},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
}

@@ -2298,10 +2302,6 @@ }

m: {
Bucket: {
r: 1,
l: 'uri'
ACL: {
l: 'header',
n: 'x-amz-acl'
},
Key: {
r: 1,
l: 'uri'
},
Body: {

@@ -2312,26 +2312,6 @@ t: 'bl',

},
StorageClass: {
l: 'header',
n: 'x-amz-storage-class'
Bucket: {
r: 1,
l: 'uri'
},
ACL: {
l: 'header',
n: 'x-amz-acl'
},
GrantRead: {
l: 'header',
n: 'x-amz-grant-read'
},
GrantReadACP: {
l: 'header',
n: 'x-amz-grant-read-acp'
},
GrantWriteACP: {
l: 'header',
n: 'x-amz-grant-write-acp'
},
GrantFullControl: {
l: 'header',
n: 'x-amz-grant-full-control'
},
CacheControl: {

@@ -2362,10 +2342,22 @@ l: 'header',

},
WebsiteRedirectLocation: {
GrantFullControl: {
l: 'header',
n: 'x-amz-website-redirect-location'
n: 'x-amz-grant-full-control'
},
ServerSideEncryption: {
GrantRead: {
l: 'header',
n: 'x-amz-server-side-encryption'
n: 'x-amz-grant-read'
},
GrantReadACP: {
l: 'header',
n: 'x-amz-grant-read-acp'
},
GrantWriteACP: {
l: 'header',
n: 'x-amz-grant-write-acp'
},
Key: {
r: 1,
l: 'uri'
},
Metadata: {

@@ -2375,2 +2367,14 @@ t: 'm',

n: 'x-amz-meta-'
},
ServerSideEncryption: {
l: 'header',
n: 'x-amz-server-side-encryption'
},
StorageClass: {
l: 'header',
n: 'x-amz-storage-class'
},
WebsiteRedirectLocation: {
l: 'header',
n: 'x-amz-website-redirect-location'
}

@@ -2404,10 +2408,6 @@ }

m: {
Bucket: {
r: 1,
l: 'uri'
ACL: {
l: 'header',
n: 'x-amz-acl'
},
Key: {
r: 1,
l: 'uri'
},
AccessControlPolicy: {

@@ -2417,11 +2417,2 @@ t: 'o',

m: {
Owner: {
t: 'o',
m: {
ID: {
},
DisplayName: {
}
}
},
Grants: {

@@ -2441,2 +2432,8 @@ n: 'AccessControlList',

m: {
DisplayName: {
},
EmailAddress: {
},
ID: {
},
Type: {

@@ -2447,8 +2444,2 @@ n: 'xsi:type',

},
ID: {
},
DisplayName: {
},
EmailAddress: {
},
URI: {

@@ -2462,9 +2453,26 @@ }

}
},
Owner: {
t: 'o',
m: {
DisplayName: {
},
ID: {
}
}
}
}
},
ACL: {
Bucket: {
r: 1,
l: 'uri'
},
ContentMD5: {
l: 'header',
n: 'x-amz-acl'
n: 'Content-MD5'
},
GrantFullControl: {
l: 'header',
n: 'x-amz-grant-full-control'
},
GrantRead: {

@@ -2474,2 +2482,6 @@ l: 'header',

},
GrantReadACP: {
l: 'header',
n: 'x-amz-grant-read-acp'
},
GrantWrite: {

@@ -2479,6 +2491,2 @@ l: 'header',

},
GrantReadACP: {
l: 'header',
n: 'x-amz-grant-read-acp'
},
GrantWriteACP: {

@@ -2488,9 +2496,5 @@ l: 'header',

},
GrantFullControl: {
l: 'header',
n: 'x-amz-grant-full-control'
},
ContentMD5: {
l: 'header',
n: 'Content-MD5'
Key: {
r: 1,
l: 'uri'
}

@@ -2531,2 +2535,7 @@ }

m: {
Body: {
t: 'bl',
l: 'body',
s: 1
},
Bucket: {

@@ -2540,14 +2549,9 @@ r: 1,

},
UploadId: {
PartNumber: {
r: 1,
l: 'uri'
},
PartNumber: {
UploadId: {
r: 1,
l: 'uri'
},
Body: {
t: 'bl',
l: 'body',
s: 1
}

@@ -2576,18 +2580,2 @@ }

},
Key: {
r: 1,
l: 'uri'
},
UploadId: {
r: 1,
l: 'uri'
},
PartNumber: {
r: 1,
l: 'uri'
},
CopySourceRange: {
l: 'header',
n: 'x-amz-copy-source-range'
},
CopySource: {

@@ -2603,2 +2591,7 @@ l: 'header',

},
CopySourceIfModifiedSince: {
t: 't',
l: 'header',
n: 'x-amz-copy-source-if-modified-since'
},
CopySourceIfNoneMatch: {

@@ -2614,6 +2607,17 @@ t: 't',

},
CopySourceIfModifiedSince: {
t: 't',
CopySourceRange: {
l: 'header',
n: 'x-amz-copy-source-if-modified-since'
n: 'x-amz-copy-source-range'
},
Key: {
r: 1,
l: 'uri'
},
PartNumber: {
r: 1,
l: 'uri'
},
UploadId: {
r: 1,
l: 'uri'
}

@@ -2620,0 +2624,0 @@ }

@@ -195,3 +195,3 @@ /**

} else {
this.endpoint = new AWS.Endpoint('s3.amazonaws.com', this.config);
this.endpoint = new AWS.Endpoint(this.api.globalEndpoint, this.config);
}

@@ -202,3 +202,3 @@ }

AWS.S3.Client.prototype.createBucket = function createBucket(params, options) {
AWS.S3.Client.prototype.createBucket = function createBucket(params, callback) {
// When creating a bucket *outside* the classic region, the location

@@ -211,9 +211,9 @@ // constraint must be set for the bucket and it must match the endpoint.

var hostname = this.endpoint.hostname;
if (hostname != 's3.amazonaws.com' && !params.CreateBucketConfiguration) {
if (hostname != this.api.globalEndpoint && !params.CreateBucketConfiguration) {
params.CreateBucketConfiguration = {};
params.CreateBucketConfiguration.LocationConstraint = this.config.region;
}
return this.makeRequest('createBucket', params, options);
return this.makeRequest('createBucket', params, callback);
};
module.exports = AWS.S3;

@@ -33,4 +33,3 @@ /**

}
},
o: null
}
},

@@ -315,4 +314,3 @@ deleteVerifiedEmailAddress: {

}
},
o: null
}
},

@@ -331,4 +329,3 @@ setIdentityFeedbackForwardingEnabled: {

}
},
o: null
}
},

@@ -348,4 +345,3 @@ setIdentityNotificationTopic: {

}
},
o: null
}
},

@@ -399,6 +395,5 @@ verifyDomainDkim: {

}
},
o: null
}
}
}
};

@@ -45,3 +45,11 @@ /**

/*jshint undef:false */
return encodeURIComponent(string).replace(/[^A-Za-z0-9_.~\-%]+/g, escape);
var output = encodeURIComponent(string);
output = output.replace(/[^A-Za-z0-9_.~\-%]+/g, escape);
// AWS percent-encodes some extra non-standard characters in a URI
output = output.replace(/[*]/g, function(ch) {
return '%' + ch.charCodeAt(0).toString(16).toUpperCase();
});
return output;
},

@@ -73,2 +81,26 @@

buffer: {
/**
* Concatenates a list of Buffer objects.
*/
concat: function(buffers) {
var length = 0,
offset = 0,
buffer = null, i;
for (i = 0; i < buffers.length; i++) {
length += buffers[i].length;
}
buffer = new Buffer(length);
for (i = 0; i < buffers.length; i++) {
buffers[i].copy(buffer, offset);
offset += buffers[i].length;
}
return buffer;
}
},
string: {

@@ -75,0 +107,0 @@ byteLength: function byteLength(string) {

@@ -73,2 +73,18 @@ /**

parseMap: function parseMap(map, rules) {
var data = {};
var keyRules = rules.k || {};
var valueRules = rules.m || {};
var keyName = keyRules.n || 'key';
var valueName = valueRules.n || 'value';
if (!rules.f) {
map = map[0].entry;
}
AWS.util.arrayEach.call(this, map, function (entry) {
var value = this.parseMember(entry[valueName], valueRules);
data[entry[keyName][0]] = value;
});
return data;
},
parseList: function parseList(list, rules) {

@@ -112,2 +128,6 @@ var data = [];

} else if (rules.t === 'm') { // objects (maps)
return this.parseMap(values, rules);
} else if (rules.t === 'a') { // list (array)

@@ -114,0 +134,0 @@

{
"name": "aws-sdk",
"description": "AWS SDK for JavaScript",
"version": "v0.9.2-pre.3",
"version": "v0.9.3-pre.4",
"author": {

@@ -55,6 +55,5 @@ "name":"Amazon Web Services",

"scripts" : {
"test" : "npm -s run-script lint && (([ -f configuration ] && jasmine-node --coffee test && cucumber.js) || ([ ! -f configuration ] && npm -s run-script unit))",
"test" : "npm -s run-script lint && npm -s run-script unit && ([ -f configuration ] && npm -s run-script integration) || true",
"unit" : "jasmine-node --noColor --coffee test/unit",
"integration": "jasmine-node --noColor --coffee test/integration",
"features": "cucumber.js",
"integration": "cucumber.js",
"lint" : "jshint lib",

@@ -61,0 +60,0 @@ "console": "./scripts/console"

@@ -64,2 +64,29 @@ # AWS SDK for Node.js [![Build Status](https://travis-ci.org/aws/aws-sdk-js.png?branch=master)](https://travis-ci.org/aws/aws-sdk-js)

## Supported Services
The SDK currently supports the following services:
<table>
<thead>
<th>Service Name</th>
<th>Class Name</th>
</thead>
<tbody>
<tr><td>Auto Scaling</td><td>AWS.AutoScaling</td></tr>
<tr><td>Amazon CloudWatch</td><td>AWS.CloudWatch</td></tr>
<tr><td>Amazon DynamoDB</td><td>AWS.DynamoDB</td></tr>
<tr><td>Amazon EC2</td><td>AWS.EC2</td></tr>
<tr><td>Amazon Elastic Transcoder</td><td>AWS.ElasticTranscoder</td></tr>
<tr><td>Elastic Load Balancing</td><td>AWS.ELB</td></tr>
<tr><td>Amazon Elastic MapReduce</td><td>AWS.EMR</td></tr>
<tr><td>AWS Identity and Access Management</td><td>AWS.IAM</td></tr>
<tr><td>Amazon S3</td><td>AWS.S3</td></tr>
<tr><td>Amazon Simple Email Service</td><td>AWS.SES</td></tr>
<tr><td>Amazon SimpleDB</td><td>AWS.SimpleDB</td></tr>
<tr><td>Amazon Simple Notification Service</td><td>AWS.SNS</td></tr>
<tr><td>Amazon Simple Queue Service</td><td>AWS.SQS</td></tr>
<tr><td>AWS Security Token Service</td><td>AWS.STS</td></tr>
</tbody>
</table>
## License

@@ -66,0 +93,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc