Skip to content

Commit

Permalink
feat(logger): initial implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
Z-n-o-M committed Jan 4, 2023
1 parent e4bc26a commit 48e633c
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 5 deletions.
19 changes: 19 additions & 0 deletions src/core/logger/CodefendLogger.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { ICodefendOptions } from "../options/ICodefendOptions";
import { ICodefendLogger } from "./ICodefendLogger";

export class CodefendLogger implements ICodefendLogger {
options: ICodefendOptions | undefined;

constructor(options: ICodefendOptions) {
this.setOptions(options);
}

setOptions(options: ICodefendOptions) {
this.options = options;
}

log(scope: string, type: string, message: unknown) {
if (!this.options?.debug) return;
console.log(`Codefend(${scope}):${type}:`, message);
}
}
3 changes: 3 additions & 0 deletions src/core/logger/ICodefendLogger.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export interface ICodefendLogger {
log: (scope: string, type: string, message: unknown) => void;
}
8 changes: 7 additions & 1 deletion src/core/mapper/CodefendMapper.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { CodefendLogger } from "../logger/CodefendLogger";
import {
ICodefendOptions,
ICodefendPredefinedWordOption,
Expand All @@ -7,9 +8,13 @@ import { ICodefendMapper } from "./ICodefendMapper";

export class CodefendMapper implements ICodefendMapper {
options: ICodefendOptions | undefined;
logger: CodefendLogger;
scope: string;

constructor(options: ICodefendOptions) {
constructor(options: ICodefendOptions, logger: CodefendLogger) {
this.setOptions(options);
this.logger = logger;
this.scope = this.constructor.name.replace("Codefend", "");
}

setOptions(options: ICodefendOptions) {
Expand All @@ -26,6 +31,7 @@ export class CodefendMapper implements ICodefendMapper {
words.forEach((word) => {
if (map[word.value]) return;
map[word.value] = `${prefix ?? ""}${sequence++}`;
this.logger.log(this.scope, "INFO", word.value);
});
return map;
}
Expand Down
2 changes: 2 additions & 0 deletions src/core/options/ICodefendOptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ export interface ICodefendOptions {
predefinedWords?: ICodefendPredefinedWordOption[];
ignoredWords?: string[];
regexList?: ICodefendRegexListOption[];
debug?: boolean;
}

export interface ICodefendPredefinedWordOption {
Expand All @@ -29,4 +30,5 @@ export const defaultOptions: ICodefendOptions = {
value: /((cmp|lib)+(-[a-zA-Z]+)+)/g,
},
],
debug: true,
};
5 changes: 4 additions & 1 deletion src/core/parser/CodefendParser.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { CodefendLogger } from "../logger/CodefendLogger";
import {
ICodefendOptions,
ICodefendRegexListOption,
Expand All @@ -6,9 +7,11 @@ import { ICodefendParser, ICodefendParserWord } from "./ICodefendParser";

export class CodefendParser implements ICodefendParser {
options: ICodefendOptions | undefined;
logger: CodefendLogger;

constructor(options: ICodefendOptions) {
constructor(options: ICodefendOptions, logger: CodefendLogger) {
this.setOptions(options);
this.logger = logger;
}

setOptions(options: ICodefendOptions) {
Expand Down
6 changes: 6 additions & 0 deletions src/core/replacer/CodefendReplacer.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import { CodefendLogger } from "../logger/CodefendLogger";
import { ICodefendReplacer } from "./ICodefendReplacer";

export class CodefendReplacer implements ICodefendReplacer {
logger: CodefendLogger;
constructor(logger: CodefendLogger) {
this.logger = logger;
}

replace(code: string, map: Record<string, string>) {
const words = Object.keys(map);
if (!words.length) return code;
Expand Down
10 changes: 7 additions & 3 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { CodefendLogger } from "./core/logger/CodefendLogger";
import { CodefendMapper } from "./core/mapper/CodefendMapper";
import {
ICodefendOptions,
Expand All @@ -6,10 +7,13 @@ import {
import { CodefendParser } from "./core/parser/CodefendParser";
import { CodefendReplacer } from "./core/replacer/CodefendReplacer";

const logger = new CodefendLogger(defaultOptions);

export const CodefendCore = {
parser: new CodefendParser(defaultOptions),
mapper: new CodefendMapper(defaultOptions),
replacer: new CodefendReplacer(),
parser: new CodefendParser(defaultOptions, logger),
mapper: new CodefendMapper(defaultOptions, logger),
replacer: new CodefendReplacer(logger),
logger: logger,
};

export function obfuscate(
Expand Down

0 comments on commit 48e633c

Please sign in to comment.