(function () {

/* Imports */
var Meteor = Package.meteor.Meteor;
var Accounts = Package['accounts-base'].Accounts;
var AccountsServer = Package['accounts-base'].AccountsServer;
var MongoInternals = Package.mongo.MongoInternals;
var Mongo = Package.mongo.Mongo;

/* Package-scope variables */
var ServiceConfiguration;

(function(){

////////////////////////////////////////////////////////////////////////////////////////
//                                                                                    //
// packages/service-configuration/service_configuration_common.js                     //
//                                                                                    //
////////////////////////////////////////////////////////////////////////////////////////
                                                                                      //
if (typeof ServiceConfiguration === 'undefined') {                                    // 1
  ServiceConfiguration = {};                                                          // 2
}                                                                                     // 3
                                                                                      // 4
                                                                                      // 5
// Table containing documents with configuration options for each                     // 6
// login service                                                                      // 7
ServiceConfiguration.configurations = new Mongo.Collection(                           // 8
  "meteor_accounts_loginServiceConfiguration", {                                      // 9
    _preventAutopublish: true,                                                        // 10
    connection: Meteor.isClient ? Accounts.connection : Meteor.connection             // 11
  });                                                                                 // 12
// Leave this collection open in insecure mode. In theory, someone could              // 13
// hijack your oauth connect requests to a different endpoint or appId,               // 14
// but you did ask for 'insecure'. The advantage is that it is much                   // 15
// easier to write a configuration wizard that works only in insecure                 // 16
// mode.                                                                              // 17
                                                                                      // 18
                                                                                      // 19
// Thrown when trying to use a login service which is not configured                  // 20
ServiceConfiguration.ConfigError = function (serviceName) {                           // 21
  if (Meteor.isClient && !Accounts.loginServicesConfigured()) {                       // 22
    this.message = "Login service configuration not yet loaded";                      // 23
  } else if (serviceName) {                                                           // 24
    this.message = "Service " + serviceName + " not configured";                      // 25
  } else {                                                                            // 26
    this.message = "Service not configured";                                          // 27
  }                                                                                   // 28
};                                                                                    // 29
ServiceConfiguration.ConfigError.prototype = new Error();                             // 30
ServiceConfiguration.ConfigError.prototype.name = 'ServiceConfiguration.ConfigError';
                                                                                      // 32
////////////////////////////////////////////////////////////////////////////////////////

}).call(this);






(function(){

////////////////////////////////////////////////////////////////////////////////////////
//                                                                                    //
// packages/service-configuration/service_configuration_server.js                     //
//                                                                                    //
////////////////////////////////////////////////////////////////////////////////////////
                                                                                      //
// Only one configuration should ever exist for each service.                         // 1
// A unique index helps avoid various race conditions which could                     // 2
// otherwise lead to an inconsistent database state (when there are multiple          // 3
// configurations for a single service, which configuration is correct?)              // 4
try {                                                                                 // 5
    ServiceConfiguration.configurations._ensureIndex(                                 // 6
        { "service": 1 },                                                             // 7
        { unique: true }                                                              // 8
    );                                                                                // 9
} catch (err) {                                                                       // 10
    console.error(                                                                    // 11
        "The service-configuration package persists configuration in the " +          // 12
        "meteor_accounts_loginServiceConfiguration collection in MongoDB. As " +      // 13
        "each service should have exactly one configuration, Meteor " +               // 14
        "automatically creates a MongoDB index with a unique constraint on the " +    // 15
        " meteor_accounts_loginServiceConfiguration collection. The " +               // 16
        "_ensureIndex command which creates that index is failing.\n\n" +             // 17
        "Meteor versions before 1.0.4 did not create this index. If you recently " +  // 18
        "upgraded and are seeing this error message for the first time, please " +    // 19
        "check your meteor_accounts_loginServiceConfiguration collection for " +      // 20
        "multiple configuration entries for the same service and delete " +           // 21
        "configuration entries until there is no more than one configuration " +      // 22
        "entry per service.\n\n" +                                                    // 23
        "If the meteor_accounts_loginServiceConfiguration collection looks " +        // 24
        "fine, the _ensureIndex command is failing for some other reason.\n\n" +      // 25
        "For more information on this history of this issue, please see " +           // 26
        "https://github.com/meteor/meteor/pull/3514.\n"                               // 27
    );                                                                                // 28
    throw err;                                                                        // 29
}                                                                                     // 30
                                                                                      // 31
////////////////////////////////////////////////////////////////////////////////////////

}).call(this);


/* Exports */
if (typeof Package === 'undefined') Package = {};
Package['service-configuration'] = {
  ServiceConfiguration: ServiceConfiguration
};

})();

//# sourceMappingURL=service-configuration.js.map
