all files / lib/ FirehoseLoggerAdapter.js

100% Statements 30/30
100% Branches 20/20
100% Functions 4/4
100% Lines 30/30
2 statements, 1 branch Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66                                                  10×   10×                    
'use strict';
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.FirehoseLoggerAdapter = undefined;
 
var _WinstonLoggerAdapter = require('parse-server/lib/Adapters/Logger/WinstonLoggerAdapter');
 
const WinstonFirehose = require('winston-firehose');
 
const DEFAULT_REGION = 'us-east-1';
 
class FirehoseLoggerAdapter extends _WinstonLoggerAdapter.WinstonLoggerAdapter {
  constructor(arg) {
    super(arg);
    this.options = FirehoseLoggerAdapter.optionsFromArguments(arg);
 
    /* istanbul ignore next */
    Iif (process.env.NODE_ENV !== 'test') {
      const transport = new WinstonFirehose(this.options);
      this.addTransport(transport);
    }
  }
 
  // following three functions copied from s3Adapter.  Would be nice to have a lib...
  static requiredOrFromEnvironment(args, key, env) {
    // special case
    if (key === 'streamName' && typeof args === 'string') {
      return args;
    }
 
    const val = args && args[key] || process.env[env];
 
    if (!val) {
      throw new Error(`FirehoseLoggerAdapter requires option '${key}' or env. variable ${env}`);
    }
    return val;
  }
 
  static fromEnvironmentOrDefault(args, key, env, defaultValue) {
    const val = args && args[key] || process.env[env] || defaultValue;
 
    return val;
  }
 
  static optionsFromArguments(streamNameOrOptions) {
    const options = {};
 
    const args = typeof streamNameOrOptions === 'string' ? {} : streamNameOrOptions;
    options.streamName = FirehoseLoggerAdapter.requiredOrFromEnvironment(streamNameOrOptions, 'streamName', 'FIREHOSE_LOGGER_STREAM_NAME');
    options.level = FirehoseLoggerAdapter.fromEnvironmentOrDefault(streamNameOrOptions, 'level', 'FIREHOSE_LOGGER_LEVEL', '');
 
    const firehoseOptions = {};
    firehoseOptions.region = FirehoseLoggerAdapter.fromEnvironmentOrDefault(firehoseOptions, 'region', 'FIREHOSE_LOGGER_REGION', DEFAULT_REGION);
 
    options.firehoseOptions = {};
    Object.assign(options.firehoseOptions, firehoseOptions, args && args.firehoseOptions || {});
    return options;
  }
}
 
exports.FirehoseLoggerAdapter = FirehoseLoggerAdapter;
module.exports = FirehoseLoggerAdapter;
exports.default = FirehoseLoggerAdapter;
//# sourceMappingURL=FirehoseLoggerAdapter.js.map