var util = require('./util'); util.isBrowser = function() { return false; }; util.isNode = function() { return true; }; // node.js specific modules util.crypto.lib = require('crypto'); util.Buffer = require('buffer').Buffer; util.domain = require('domain'); util.stream = require('stream'); util.url = require('url'); util.querystring = require('querystring'); util.environment = 'nodejs'; util.createEventStream = util.stream.Readable ? require('./event-stream/streaming-create-event-stream').createEventStream : require('./event-stream/buffered-create-event-stream').createEventStream; util.realClock = require('./realclock/nodeClock'); util.clientSideMonitoring = { Publisher: require('./publisher').Publisher, configProvider: require('./publisher/configuration'), }; util.iniLoader = require('./shared-ini').iniLoader; var AWS; /** * @api private */ module.exports = AWS = require('./core'); require('./credentials'); require('./credentials/credential_provider_chain'); require('./credentials/temporary_credentials'); require('./credentials/chainable_temporary_credentials'); require('./credentials/web_identity_credentials'); require('./credentials/cognito_identity_credentials'); require('./credentials/saml_credentials'); require('./credentials/process_credentials'); // Load the xml2js XML parser AWS.XML.Parser = require('./xml/node_parser'); // Load Node HTTP client require('./http/node'); require('./shared-ini/ini-loader'); // Load custom credential providers require('./credentials/ec2_metadata_credentials'); require('./credentials/remote_credentials'); require('./credentials/ecs_credentials'); require('./credentials/environment_credentials'); require('./credentials/file_system_credentials'); require('./credentials/shared_ini_file_credentials'); require('./credentials/process_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 () { return new AWS.ECSCredentials(); }, function () { return new AWS.ProcessCredentials(); }, function () { 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(); }, logger: function () { return process.env.AWSJS_DEBUG ? console : null; }, region: function() { var env = process.env; var region = env.AWS_REGION || env.AMAZON_REGION; if (env[AWS.util.configOptInEnv]) { var toCheck = [ {filename: env[AWS.util.sharedCredentialsFileEnv]}, {isConfig: true, filename: env[AWS.util.sharedConfigFileEnv]} ]; var iniLoader = AWS.util.iniLoader; while (!region && toCheck.length) { var configFile = iniLoader.loadFrom(toCheck.shift()); var profile = configFile[env.AWS_PROFILE || AWS.util.defaultProfile]; region = profile && profile.region; } } return region; } }); // Reset configuration AWS.config = new AWS.Config();