code: function auth0GuardianJS(options) {
    var self = object.create(auth0GuardianJS.prototype);
  
    self.serviceUrl = options.serviceUrl;
    self.credentials = authFactory(options);
    self.issuer = options.issuer;
    self.accountLabel = options.accountLabel;
  
    var globalTrackingId = options.globalTrackingId;
  
    self.httpClient = object.get(options, 'dependencies.httpClient',
      httpClient(self.serviceUrl, globalTrackingId));
  
    self.transport = options.transport || options.stateCheckingMechanism || 'socket';
  
    self.socketClient = clientFactory.create({
      serviceUrl: self.serviceUrl,
      transport: self.transport,
      httpClient: self.httpClient,
      dependency: object.get(options, 'dependencies.socketClient')
    });
  
    return self;
  }
docs: @public
  
  @param {string} options.serviceUrl Service base url
  @example `
  For US: https://{name}.guardian.auth0.com
  For AU: https://{name}.au.guardian.auth0.com
  For EU: https://{name}.eu.guardian.auth0.com
  `
  @param {string} options.requestToken Request token got from auth0
  @param {string} options.issuer.label User friendly label for the issuer to
  be used on google-authenticator-like apps
  @param {string} options.issuer.name Unique identifier of the issuer to
  be used on google-authenticator-like apps
  @param {string} [options.globalTrackingId] Id used to associate the request
  in the transaction (that includes both Guardian and Auth0-server requests)
  @param {string} options.accountLabel
  
  @deprecated @param {string} [options.transport] Use stateCheckingMechanism
  @param {string} [options.stateCheckingMechanism]
  
  @param {SocketClient} [options.dependencies.socketClient] Client factory for socket api
  @param {function(serviceUrl)} [options.dependencies.httpClient] Client factory for http