code: function authconfig (target) {
    Metadata.putClassMeta(target.prototype, '@authconfig', 'enabled', true);
  
    if (!target.prototype.serializeUser) {
      target.prototype.serializeUser = function (profile) { // eslint-disable-line no-unused-vars
        return Promise.reject(new $err.NotImplemented(
          `An authentication provider was specified, but no @authconfig Module was
          supplied with an implemented serializeUser() method`));
      };
    }
    if (!target.prototype.deserializeUser) {
      target.prototype.deserializeUser = function (userId) { // eslint-disable-line no-unused-vars
        return Promise.reject(new $err.NotImplemented(
          `An authentication provider was specified, but no @authconfig Module was
          supplied with an implemented deserializeUser() method`));
      };
    }
    if (!target.prototype.verify) {
      // args should be tokens, username/pw, etc.
      target.prototype.verify = function (
        providerName, ...args // eslint-disable-line no-unused-vars
      ) {
        return Promise.reject(new $err.NotImplemented(
          `An authentication provider was specified, but no @authconfig Module was
          supplied with an implemented verify() method.`));
      };
    }
    if (!target.prototype.deserializeOrCreateUser) {
      target.prototype.deserializeOrCreateUser = function (profile) { // eslint-disable-line no-unused-vars
        return Promise.reject(new $err.NotImplemented(
          'An authentication provider was specified, but no @authconfig Module was ' +
          'supplied with an implemented deserializeOrCreateUser()'));
      };
    }
  }
docs: A decorator for a `Module`, indicating that it will offer
  specific functions which encapsulate the configuration
  of passport.js. For more information on how to implement
  an `@authconfig` module, please see the README for
  an existing Ravel AuthenticationProvider.
  
  @param {Class} target - The class to declare as the `@authconfig` class.