expresscheckout-nodejs
Version:
Juspay's official expresscheckout-nodejs sdk
129 lines • 5.03 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefaultJuspayLogger = void 0;
/* eslint-disable @typescript-eslint/no-explicit-any */
const winston_1 = __importDefault(require("winston"));
const Juspay_js_1 = __importDefault(require("./Juspay.js"));
const Utils = __importStar(require("./utils.js"));
class JuspayLogger {
constructor(logger) {
this.disableLogger = false;
this.logger = logger;
}
info(message) {
var _a;
if (!this.disableLogger) {
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(message);
}
return this.logger;
}
error(message) {
var _a;
if (!this.disableLogger) {
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.error(message);
}
return this.logger;
}
}
class DefaultJuspayLogger {
static getLibraryLoggerInterface() {
return winston_1.default;
}
/**
* @param resource string to populate resource entity
* @returns IJuspayLogger
*/
static getLoggerInstance(resource) {
if (Juspay_js_1.default.customLogger != undefined) {
if (typeof Juspay_js_1.default.customLogger == 'function') {
return Juspay_js_1.default.customLogger(resource);
}
return Juspay_js_1.default.customLogger;
}
const transports = new winston_1.default.transports.File({
filename: 'logs/juspay-sdk.log',
format: winston_1.default.format.combine(winston_1.default.format.colorize()),
maxsize: 52428800, // 50 MB
});
const redactSecrets = winston_1.default.format((info) => {
return DefaultJuspayLogger.redactFields(info);
});
const logger = winston_1.default.createLogger({
level: 'info',
defaultMeta: {
service: Juspay_js_1.default.pkg.name,
resource: resource || Juspay_js_1.default.name,
},
format: winston_1.default.format.combine(redactSecrets(), winston_1.default.format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss',
}), winston_1.default.format.errors({ stack: true }), winston_1.default.format.splat(), winston_1.default.format.json()),
exitOnError: false,
transports,
});
if (Utils.isDevEnvironment()) {
logger.add(new winston_1.default.transports.Console({
format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple()),
}));
}
return new JuspayLogger(logger);
}
static getSilentLogger() {
const logger = new JuspayLogger();
logger.disableLogger = true;
return logger;
}
static redactFields(data, secrets = DefaultJuspayLogger.secretFields, redactedMessage = '[REDACTED]') {
if (data == undefined)
return;
if (!Array.isArray(secrets))
throw new TypeError('secrets must be an array');
const dfs = (data) => {
if (data == undefined)
return undefined;
if (typeof data == 'object') {
Object.entries(data).forEach(([key, value]) => {
if (secrets.includes(key)) {
data[key] = redactedMessage;
}
dfs(value);
});
}
else if (Array.isArray(data)) {
data.forEach((val) => {
dfs(val);
});
}
};
dfs(data);
return data;
}
}
exports.DefaultJuspayLogger = DefaultJuspayLogger;
DefaultJuspayLogger.secretFields = ['card_number', 'card_security_code'];
//# sourceMappingURL=JuspayLogger.js.map