Skip to content

Commit 91c0378

Browse files
committed
Add better Buffer and Date support with Tests, also fix path ti types. Fix #178
1 parent 31096c0 commit 91c0378

File tree

6 files changed

+47
-5
lines changed

6 files changed

+47
-5
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
},
1616
"main": "./dist/nodejs/cjs/index.js",
1717
"module": "./dist/nodejs/esm/index.js",
18-
"types": "./dist/nodejs/types/index.d.ts",
18+
"types": "./dist/types/index.d.ts",
1919
"browser": {
2020
"tslog": "./dist/browser/index.js",
2121
"util": false,

src/BaseLogger.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { getMeta, getErrorTrace, transportFormatted, transportJSON, prettyFormatLogObj, IMeta, isError } from "./runtime/nodejs";
1+
import { getMeta, getErrorTrace, transportFormatted, transportJSON, prettyFormatLogObj, IMeta, isError, isBuffer } from "./runtime/nodejs";
22
import { formatTemplate } from "./formatTemplate";
33
import { formatNumberAddZeros } from "./formatNumberAddZeros";
44
import { ISettingsParam, ISettings, ILogObjMeta, ILogObj, IErrorObject } from "./interfaces";
@@ -233,10 +233,9 @@ export class BaseLogger<LogObj> {
233233

234234
private _toLogObj(args: unknown[], clonedLogObj: LogObj = {} as LogObj): LogObj {
235235
args = args?.map((arg) => (isError(arg) ? this._toErrorObject(arg as Error) : arg));
236-
237236
if (this.settings.argumentsArrayName == null) {
238-
if (args.length === 1) {
239-
clonedLogObj = typeof args[0] === "object" && !Array.isArray(args[0]) ? { ...args[0], ...clonedLogObj } : { 0: args[0], ...clonedLogObj };
237+
if (args.length === 1 && !Array.isArray(args[0]) && isBuffer(args[0]) !== true && !(args[0] instanceof Date)) {
238+
clonedLogObj = typeof args[0] === "object" ? { ...args[0], ...clonedLogObj } : { 0: args[0], ...clonedLogObj };
240239
} else {
241240
clonedLogObj = { ...clonedLogObj, ...args };
242241
}

src/runtime/browser/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,7 @@ export function transportFormatted<LogObj>(logMetaMarkup: string, logArgs: unkno
172172
export function transportJSON<LogObj>(json: LogObj & ILogObjMeta): void {
173173
console.log(JSON.stringify(json, null, 2));
174174
}
175+
176+
export function isBuffer(arg: unknown) {
177+
return undefined;
178+
}

src/runtime/nodejs/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,3 +162,7 @@ export function transportJSON<LogObj>(json: LogObj & ILogObjMeta): void {
162162
);
163163
}
164164
}
165+
166+
export function isBuffer(arg: unknown) {
167+
return Buffer.isBuffer(arg);
168+
}

tests/Nodejs/4_json_Log_Types.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@ describe("JSON: Log Types", () => {
4141
3,`);
4242
});
4343

44+
test("Buffer", (): void => {
45+
const logger = new Logger({ type: "json" });
46+
const buffer = Buffer.from("foo");
47+
const log1 = logger.log(1234, "testLevel", buffer);
48+
expect(getConsoleLog()).toContain(`"Buffer"`);
49+
expect(log1?.["0"]).toBe(buffer);
50+
const log2 = logger.log(1234, "testLevel", "1", buffer);
51+
expect(log2?.["1"]).toBe(buffer);
52+
});
53+
4454
test("Object", (): void => {
4555
const logger = new Logger({ type: "json" });
4656
logger.log(1234, "testLevel", { test: true, nested: { 1: false } });
@@ -52,6 +62,15 @@ describe("JSON: Log Types", () => {
5262
"_meta": {`);
5363
});
5464

65+
test("Date", (): void => {
66+
const logger = new Logger({ type: "json" });
67+
const date = new Date(0);
68+
const log1 = logger.log(1234, "testLevel", date);
69+
console.log("***" + log1?.["0"]);
70+
expect(log1?.["0"]).toBe(date);
71+
expect(getConsoleLog()).toContain(`"1970-01-01T00:00:00.000Z"`);
72+
});
73+
5574
test("String, Object", (): void => {
5675
const logger = new Logger({ type: "json" });
5776
logger.log(1234, "testLevel", "test", { test: true, nested: { 1: false } });

tests/Nodejs/5_pretty_Log_Types.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,15 @@ describe("Pretty: Log Types", () => {
4949
expect(getConsoleLog()).toContain("\n]");
5050
});
5151

52+
test("Buffer", (): void => {
53+
const logger = new Logger({ type: "pretty" });
54+
const buffer = Buffer.from("foo");
55+
logger.log(1234, "testLevel", buffer);
56+
expect(getConsoleLog()).toContain(`<Buffer 66 6f 6f>`);
57+
logger.log(1234, "testLevel", "1", buffer);
58+
expect(getConsoleLog()).toContain(`1 <Buffer 66 6f 6f>`);
59+
});
60+
5261
test("Object", (): void => {
5362
const logger = new Logger({ type: "pretty" });
5463
logger.log(1234, "testLevel", { test: true, nested: { 1: false } });
@@ -58,6 +67,13 @@ describe("Pretty: Log Types", () => {
5867
}`);
5968
});
6069

70+
test("Date", (): void => {
71+
const logger = new Logger({ type: "pretty" });
72+
const date = new Date(0);
73+
logger.log(1234, "testLevel", date);
74+
expect(getConsoleLog()).toContain("1970-01-01T00:00:00.000Z");
75+
});
76+
6177
test("String, Object", (): void => {
6278
const logger = new Logger({ type: "pretty" });
6379
logger.log(1234, "testLevel", "test", { test: true, nested: { 1: false } });

0 commit comments

Comments
 (0)