Big News: Socket Selected for OpenAI's Cybersecurity Grant Program.Details
Socket
Book a DemoSign in
Socket

@timberio/core

Package Overview
Dependencies
Maintainers
5
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@timberio/core - npm Package Compare versions

Comparing version
0.15.0
to
0.16.0
+43
-6
dist/cjs/base.d.ts

@@ -1,3 +0,2 @@

import { ITimberLog, Middleware, ITimberOptions, Sync } from "@timberio/types";
import { preProcess } from "./pipeline";
import { ITimberLog, ITimberOptions, LogLevel, Middleware, Sync } from "@timberio/types";
/**

@@ -10,3 +9,3 @@ * Timber core class for logging to the Timber.io service

protected _batch: any;
protected _pipeline: (typeof preProcess)[];
protected _middleware: Middleware[];
protected _sync?: Sync;

@@ -37,7 +36,45 @@ private _countLogged;

*
* @param log - Log entry
* @returns Promise<ILog> - resolves to the transformed log
* @param message: string - Log message
* @param level (LogLevel) - Level to log at (debug|info|warn|error)
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
log(log: ITimberLog): Promise<ITimberLog>;
log(message: string, level?: LogLevel, log?: Partial<ITimberLog>): Promise<ITimberLog>;
/**
*
* Debug level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
debug(message: string, log?: Partial<ITimberLog>): Promise<ITimberLog>;
/**
*
* Info level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
info(message: string, log?: Partial<ITimberLog>): Promise<ITimberLog>;
/**
*
* Warning level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
warn(message: string, log?: Partial<ITimberLog>): Promise<ITimberLog>;
/**
*
* Warning level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
error(message: string, log?: Partial<ITimberLog>): Promise<ITimberLog>;
/**
* Sets the sync method - i.e. the final step in the pipeline to get logs

@@ -44,0 +81,0 @@ * over to Timber.io

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("@timberio/types");
const tools_1 = require("@timberio/tools");
const pipeline_1 = require("./pipeline");
// Set default options for Timber
const defaultOptions = {
// Maximum number of logs to sync in a single request to Timber.io
batchSize: 10,
batchSize: 1000,
// Max interval (in milliseconds) before a batch of logs proceeds to syncing

@@ -26,4 +26,4 @@ batchInterval: 1000,

constructor(apiKey, options) {
// Transform pipeline
this._pipeline = [pipeline_1.preProcess];
// Middleware
this._middleware = [];
// Number of logs logged

@@ -33,2 +33,6 @@ this._countLogged = 0;

this._countSynced = 0;
// First, check we have a valid API key
if (typeof apiKey !== "string" || apiKey === "") {
throw new Error("Timber API key missing");
}
// Store the API key, to use for syncing with Timber.io

@@ -70,6 +74,8 @@ this._apiKey = apiKey;

*
* @param log - Log entry
* @returns Promise<ILog> - resolves to the transformed log
* @param message: string - Log message
* @param level (LogLevel) - Level to log at (debug|info|warn|error)
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
async log(log) {
async log(message, level = types_1.LogLevel.Info, log = {}) {
// Check that we have a sync function

@@ -81,4 +87,7 @@ if (typeof this._sync !== "function") {

this._countLogged++;
// Build the initial log
const initialLog = Object.assign({ dt: new Date(), level,
message }, log);
// Pass the log through the middleware pipeline
const transformedLog = await this._pipeline.reduceRight((fn, log) => fn.then(log), Promise.resolve(log));
const transformedLog = await this._middleware.reduceRight((fn, pipedLog) => fn.then(pipedLog), Promise.resolve(initialLog));
// Push the log through the batcher, and sync

@@ -92,2 +101,46 @@ await this._batch(transformedLog);

/**
*
* Debug level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
async debug(message, log = {}) {
return this.log(message, types_1.LogLevel.Debug, log);
}
/**
*
* Info level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
async info(message, log = {}) {
return this.log(message, types_1.LogLevel.Info, log);
}
/**
*
* Warning level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
async warn(message, log = {}) {
return this.log(message, types_1.LogLevel.Warn, log);
}
/**
*
* Warning level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
async error(message, log = {}) {
return this.log(message, types_1.LogLevel.Error, log);
}
/**
* Sets the sync method - i.e. the final step in the pipeline to get logs

@@ -108,3 +161,3 @@ * over to Timber.io

use(fn) {
this._pipeline.push(fn);
this._middleware.push(fn);
}

@@ -118,3 +171,3 @@ /**

remove(fn) {
this._pipeline = this._pipeline.filter(p => p !== fn);
this._middleware = this._middleware.filter(p => p !== fn);
}

@@ -121,0 +174,0 @@ }

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/base.ts"],"names":[],"mappings":";;AACA,2CAA0D;AAE1D,yCAAwC;AAExC,iCAAiC;AACjC,MAAM,cAAc,GAAmB;IACrC,kEAAkE;IAClE,SAAS,EAAE,EAAE;IAEb,4EAA4E;IAC5E,aAAa,EAAE,IAAI;IAEnB,uDAAuD;IACvD,OAAO,EAAE,CAAC;CACX,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM;IAsBV,iBAAiB;IAEjB;;;;;OAKG;IACH,YAAmB,MAAc,EAAE,OAAiC;QApBpE,qBAAqB;QACX,cAAS,GAAG,CAAC,qBAAU,CAAC,CAAC;QAKnC,wBAAwB;QAChB,iBAAY,GAAG,CAAC,CAAC;QAEzB,iDAAiD;QACzC,iBAAY,GAAG,CAAC,CAAC;QAWvB,uDAAuD;QACvD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,iCAAiC;QACjC,IAAI,CAAC,QAAQ,qBAAQ,cAAc,EAAK,OAAO,CAAE,CAAC;QAElD,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,oBAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAErD,wBAAwB;QACxB,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,IAAS,EAAE,EAAE;YACvC,OAAO,IAAI,CAAC,KAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,iEAAiE;QACjE,MAAM,OAAO,GAAG,iBAAS,CACvB,IAAI,CAAC,QAAQ,CAAC,SAAS,EACvB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAC5B,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YAClC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;IAEpB;;;;OAIG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,GAAG,CAAC,GAAe;QAC9B,qCAAqC;QACrC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC5D;QAED,sBAAsB;QACtB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,+CAA+C;QAC/C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CACrD,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EACzB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CACrB,CAAC;QAEF,6CAA6C;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAElC,uBAAuB;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,2BAA2B;QAC3B,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACI,OAAO,CAAC,EAAQ;QACrB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,EAAc;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,EAAc;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;CACF;AAED,qCAAqC;AACrC,kBAAe,MAAM,CAAC"}
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/base.ts"],"names":[],"mappings":"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"}

@@ -7,2 +7,3 @@ "use strict";

const base_1 = __importDefault(require("./base"));
const types_1 = require("@timberio/types");
describe("base class tests", () => {

@@ -16,23 +17,17 @@ it("should initialize with API key", () => {

const base = new base_1.default("testing");
// Basic log
const log = {
message: "Test"
};
// Expect logging to throw an error, since we're missing a `sync` func
await expect(base.log(log)).rejects.toThrowError(/sync/);
await expect(base.log("Test")).rejects.toThrowError(/sync/);
});
it("should use the preProcess pipeline", async () => {
// Fixtures
const message = "Test";
const base = new base_1.default("testing");
// Add a mock sync method
base.setSync(async (logs) => logs);
// Basic log
const log = {
message: "Test"
};
// Pass the log through the `.log()` function and get the result
const result = await base.log(log);
const result = await base.log(message);
// Expect the message to be same
expect(result.message).toEqual(log.message);
expect(result.message).toEqual(message);
// ... but a new `date` should be added
expect(result.date).not.toBeUndefined();
expect(result.dt).not.toBeUndefined();
});

@@ -51,7 +46,3 @@ it("should default log count to zero", () => {

base.setSync(async (log) => log);
// Basic log
const log = {
message: "Test"
};
void (await base.log(log));
void (await base.log("Test"));
// Logged count should now be 1

@@ -70,8 +61,4 @@ expect(base.logged).toEqual(1);

});
// Basic log
const log = {
message: "Test"
};
// Fire the log event, and store the pending promise
const pending = base.log(log);
const pending = base.log("Test");
// The log count should be 1

@@ -87,9 +74,7 @@ expect(base.logged).toEqual(1);

it("should add a pipeline function", async () => {
// Fixtures
const firstMessage = "First message";
const base = new base_1.default("testing");
// Add a mock sync method
base.setSync(async (log) => log);
// Initial log
const log = {
message: "First message"
};
// Message to replacement with

@@ -102,3 +87,3 @@ const newMessage = "Second message";

// Get the resulting log
const result = await base.log(log);
const result = await base.log(firstMessage);
// The resulting message should equal the new message

@@ -114,9 +99,64 @@ expect(result.message).toEqual(newMessage);

// Confirm that it exists in the `_pipeline` array
expect(base._pipeline).toContain(customPipeline);
expect(base._middleware).toContain(customPipeline);
// Remove the pipeline
base.remove(customPipeline);
// Confirm that it has disappeared from the array
expect(base._pipeline).not.toContain(customPipeline);
expect(base._middleware).not.toContain(customPipeline);
});
it("should default to 'info' level logging", async () => {
// Fixtures
const message = "Test";
const base = new base_1.default("testing");
// Add a mock sync method
base.setSync(async (log) => log);
// Log
const log = await base.log(message);
// Should log at 'info' level
expect(log.level).toEqual(types_1.LogLevel.Info);
});
it("should handle 'debug' logging", async () => {
// Fixtures
const message = "Test";
const base = new base_1.default("testing");
// Add a mock sync method
base.setSync(async (log) => log);
// Log
const log = await base.debug(message);
// Should log at 'debug' level
expect(log.level).toEqual(types_1.LogLevel.Debug);
});
it("should handle 'info' logging", async () => {
// Fixtures
const message = "Test";
const base = new base_1.default("testing");
// Add a mock sync method
base.setSync(async (log) => log);
// Log
const log = await base.info(message);
// Should log at 'info' level
expect(log.level).toEqual(types_1.LogLevel.Info);
});
it("should handle 'warn' logging", async () => {
// Fixtures
const message = "Test";
const base = new base_1.default("testing");
// Add a mock sync method
base.setSync(async (log) => log);
// Log
const log = await base.warn(message);
// Should log at 'info' level
expect(log.level).toEqual(types_1.LogLevel.Warn);
});
it("should handle 'error' logging", async () => {
// Fixtures
const message = "Test";
const base = new base_1.default("testing");
// Add a mock sync method
base.setSync(async (log) => log);
// Log
const log = await base.error(message);
// Should log at 'info' level
expect(log.level).toEqual(types_1.LogLevel.Error);
});
});
//# sourceMappingURL=base.test.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"base.test.js","sourceRoot":"","sources":["../../src/base.test.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"base.test.js","sourceRoot":"","sources":["../../src/base.test.ts"],"names":[],"mappings":"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"}

@@ -1,3 +0,2 @@

import { ITimberLog, Middleware, ITimberOptions, Sync } from "@timberio/types";
import { preProcess } from "./pipeline";
import { ITimberLog, ITimberOptions, LogLevel, Middleware, Sync } from "@timberio/types";
/**

@@ -10,3 +9,3 @@ * Timber core class for logging to the Timber.io service

protected _batch: any;
protected _pipeline: (typeof preProcess)[];
protected _middleware: Middleware[];
protected _sync?: Sync;

@@ -37,7 +36,45 @@ private _countLogged;

*
* @param log - Log entry
* @returns Promise<ILog> - resolves to the transformed log
* @param message: string - Log message
* @param level (LogLevel) - Level to log at (debug|info|warn|error)
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
log(log: ITimberLog): Promise<ITimberLog>;
log(message: string, level?: LogLevel, log?: Partial<ITimberLog>): Promise<ITimberLog>;
/**
*
* Debug level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
debug(message: string, log?: Partial<ITimberLog>): Promise<ITimberLog>;
/**
*
* Info level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
info(message: string, log?: Partial<ITimberLog>): Promise<ITimberLog>;
/**
*
* Warning level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
warn(message: string, log?: Partial<ITimberLog>): Promise<ITimberLog>;
/**
*
* Warning level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
error(message: string, log?: Partial<ITimberLog>): Promise<ITimberLog>;
/**
* Sets the sync method - i.e. the final step in the pipeline to get logs

@@ -44,0 +81,0 @@ * over to Timber.io

@@ -0,7 +1,7 @@

import { LogLevel } from "@timberio/types";
import { makeBatch, makeThrottle } from "@timberio/tools";
import { preProcess } from "./pipeline";
// Set default options for Timber
const defaultOptions = {
// Maximum number of logs to sync in a single request to Timber.io
batchSize: 10,
batchSize: 1000,
// Max interval (in milliseconds) before a batch of logs proceeds to syncing

@@ -24,4 +24,4 @@ batchInterval: 1000,

constructor(apiKey, options) {
// Transform pipeline
this._pipeline = [preProcess];
// Middleware
this._middleware = [];
// Number of logs logged

@@ -31,2 +31,6 @@ this._countLogged = 0;

this._countSynced = 0;
// First, check we have a valid API key
if (typeof apiKey !== "string" || apiKey === "") {
throw new Error("Timber API key missing");
}
// Store the API key, to use for syncing with Timber.io

@@ -68,6 +72,8 @@ this._apiKey = apiKey;

*
* @param log - Log entry
* @returns Promise<ILog> - resolves to the transformed log
* @param message: string - Log message
* @param level (LogLevel) - Level to log at (debug|info|warn|error)
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
async log(log) {
async log(message, level = LogLevel.Info, log = {}) {
// Check that we have a sync function

@@ -79,4 +85,7 @@ if (typeof this._sync !== "function") {

this._countLogged++;
// Build the initial log
const initialLog = Object.assign({ dt: new Date(), level,
message }, log);
// Pass the log through the middleware pipeline
const transformedLog = await this._pipeline.reduceRight((fn, log) => fn.then(log), Promise.resolve(log));
const transformedLog = await this._middleware.reduceRight((fn, pipedLog) => fn.then(pipedLog), Promise.resolve(initialLog));
// Push the log through the batcher, and sync

@@ -90,2 +99,46 @@ await this._batch(transformedLog);

/**
*
* Debug level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
async debug(message, log = {}) {
return this.log(message, LogLevel.Debug, log);
}
/**
*
* Info level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
async info(message, log = {}) {
return this.log(message, LogLevel.Info, log);
}
/**
*
* Warning level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
async warn(message, log = {}) {
return this.log(message, LogLevel.Warn, log);
}
/**
*
* Warning level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
async error(message, log = {}) {
return this.log(message, LogLevel.Error, log);
}
/**
* Sets the sync method - i.e. the final step in the pipeline to get logs

@@ -106,3 +159,3 @@ * over to Timber.io

use(fn) {
this._pipeline.push(fn);
this._middleware.push(fn);
}

@@ -116,3 +169,3 @@ /**

remove(fn) {
this._pipeline = this._pipeline.filter(p => p !== fn);
this._middleware = this._middleware.filter(p => p !== fn);
}

@@ -119,0 +172,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/base.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/base.ts"],"names":[],"mappings":"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"}
import Base from "./base";
import { LogLevel } from "@timberio/types";
describe("base class tests", () => {

@@ -10,23 +11,17 @@ it("should initialize with API key", () => {

const base = new Base("testing");
// Basic log
const log = {
message: "Test"
};
// Expect logging to throw an error, since we're missing a `sync` func
await expect(base.log(log)).rejects.toThrowError(/sync/);
await expect(base.log("Test")).rejects.toThrowError(/sync/);
});
it("should use the preProcess pipeline", async () => {
// Fixtures
const message = "Test";
const base = new Base("testing");
// Add a mock sync method
base.setSync(async (logs) => logs);
// Basic log
const log = {
message: "Test"
};
// Pass the log through the `.log()` function and get the result
const result = await base.log(log);
const result = await base.log(message);
// Expect the message to be same
expect(result.message).toEqual(log.message);
expect(result.message).toEqual(message);
// ... but a new `date` should be added
expect(result.date).not.toBeUndefined();
expect(result.dt).not.toBeUndefined();
});

@@ -45,7 +40,3 @@ it("should default log count to zero", () => {

base.setSync(async (log) => log);
// Basic log
const log = {
message: "Test"
};
void (await base.log(log));
void (await base.log("Test"));
// Logged count should now be 1

@@ -64,8 +55,4 @@ expect(base.logged).toEqual(1);

});
// Basic log
const log = {
message: "Test"
};
// Fire the log event, and store the pending promise
const pending = base.log(log);
const pending = base.log("Test");
// The log count should be 1

@@ -81,9 +68,7 @@ expect(base.logged).toEqual(1);

it("should add a pipeline function", async () => {
// Fixtures
const firstMessage = "First message";
const base = new Base("testing");
// Add a mock sync method
base.setSync(async (log) => log);
// Initial log
const log = {
message: "First message"
};
// Message to replacement with

@@ -96,3 +81,3 @@ const newMessage = "Second message";

// Get the resulting log
const result = await base.log(log);
const result = await base.log(firstMessage);
// The resulting message should equal the new message

@@ -108,9 +93,64 @@ expect(result.message).toEqual(newMessage);

// Confirm that it exists in the `_pipeline` array
expect(base._pipeline).toContain(customPipeline);
expect(base._middleware).toContain(customPipeline);
// Remove the pipeline
base.remove(customPipeline);
// Confirm that it has disappeared from the array
expect(base._pipeline).not.toContain(customPipeline);
expect(base._middleware).not.toContain(customPipeline);
});
it("should default to 'info' level logging", async () => {
// Fixtures
const message = "Test";
const base = new Base("testing");
// Add a mock sync method
base.setSync(async (log) => log);
// Log
const log = await base.log(message);
// Should log at 'info' level
expect(log.level).toEqual(LogLevel.Info);
});
it("should handle 'debug' logging", async () => {
// Fixtures
const message = "Test";
const base = new Base("testing");
// Add a mock sync method
base.setSync(async (log) => log);
// Log
const log = await base.debug(message);
// Should log at 'debug' level
expect(log.level).toEqual(LogLevel.Debug);
});
it("should handle 'info' logging", async () => {
// Fixtures
const message = "Test";
const base = new Base("testing");
// Add a mock sync method
base.setSync(async (log) => log);
// Log
const log = await base.info(message);
// Should log at 'info' level
expect(log.level).toEqual(LogLevel.Info);
});
it("should handle 'warn' logging", async () => {
// Fixtures
const message = "Test";
const base = new Base("testing");
// Add a mock sync method
base.setSync(async (log) => log);
// Log
const log = await base.warn(message);
// Should log at 'info' level
expect(log.level).toEqual(LogLevel.Warn);
});
it("should handle 'error' logging", async () => {
// Fixtures
const message = "Test";
const base = new Base("testing");
// Add a mock sync method
base.setSync(async (log) => log);
// Log
const log = await base.error(message);
// Should log at 'info' level
expect(log.level).toEqual(LogLevel.Error);
});
});
//# sourceMappingURL=base.test.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"base.test.js","sourceRoot":"","sources":["../../src/base.test.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"base.test.js","sourceRoot":"","sources":["../../src/base.test.ts"],"names":[],"mappings":"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"}
{
"name": "@timberio/core",
"version": "0.15.0",
"version": "0.16.0",
"description": "Timber.io - logging core",

@@ -40,6 +40,6 @@ "keywords": [

"dependencies": {
"@timberio/tools": "^0.15.0",
"@timberio/types": "^0.15.0"
"@timberio/tools": "^0.16.0",
"@timberio/types": "^0.16.0"
},
"gitHead": "b7cd2447a5d4829e632b656d156a1e98716dd5a0"
"gitHead": "13fe691283afc3d96d5bc1ff7b13173f55389621"
}
import Base from "./base";
import { ITimberLog } from "@timberio/types";
import { ITimberLog, LogLevel } from "@timberio/types";

@@ -15,12 +15,9 @@ describe("base class tests", () => {

// Basic log
const log = {
message: "Test"
};
// Expect logging to throw an error, since we're missing a `sync` func
await expect(base.log(log)).rejects.toThrowError(/sync/);
await expect(base.log("Test")).rejects.toThrowError(/sync/);
});
it("should use the preProcess pipeline", async () => {
// Fixtures
const message = "Test";
const base = new Base("testing");

@@ -31,15 +28,10 @@

// Basic log
const log = {
message: "Test"
};
// Pass the log through the `.log()` function and get the result
const result = await base.log(log);
const result = await base.log(message);
// Expect the message to be same
expect(result.message).toEqual(log.message);
expect(result.message).toEqual(message);
// ... but a new `date` should be added
expect(result.date).not.toBeUndefined();
expect(result.dt).not.toBeUndefined();
});

@@ -65,9 +57,4 @@

// Basic log
const log = {
message: "Test"
};
void (await base.log("Test"));
void (await base.log(log));
// Logged count should now be 1

@@ -89,9 +76,4 @@ expect(base.logged).toEqual(1);

// Basic log
const log = {
message: "Test"
};
// Fire the log event, and store the pending promise
const pending = base.log(log);
const pending = base.log("Test");

@@ -112,2 +94,4 @@ // The log count should be 1

it("should add a pipeline function", async () => {
// Fixtures
const firstMessage = "First message";
const base = new Base("testing");

@@ -118,7 +102,2 @@

// Initial log
const log = {
message: "First message"
};
// Message to replacement with

@@ -136,3 +115,3 @@ const newMessage = "Second message";

// Get the resulting log
const result = await base.log(log);
const result = await base.log(firstMessage);

@@ -153,3 +132,3 @@ // The resulting message should equal the new message

// Confirm that it exists in the `_pipeline` array
expect((base as any)._pipeline).toContain(customPipeline);
expect((base as any)._middleware).toContain(customPipeline);

@@ -160,4 +139,79 @@ // Remove the pipeline

// Confirm that it has disappeared from the array
expect((base as any)._pipeline).not.toContain(customPipeline);
expect((base as any)._middleware).not.toContain(customPipeline);
});
it("should default to 'info' level logging", async () => {
// Fixtures
const message = "Test";
const base = new Base("testing");
// Add a mock sync method
base.setSync(async log => log);
// Log
const log = await base.log(message);
// Should log at 'info' level
expect(log.level).toEqual(LogLevel.Info);
});
it("should handle 'debug' logging", async () => {
// Fixtures
const message = "Test";
const base = new Base("testing");
// Add a mock sync method
base.setSync(async log => log);
// Log
const log = await base.debug(message);
// Should log at 'debug' level
expect(log.level).toEqual(LogLevel.Debug);
});
it("should handle 'info' logging", async () => {
// Fixtures
const message = "Test";
const base = new Base("testing");
// Add a mock sync method
base.setSync(async log => log);
// Log
const log = await base.info(message);
// Should log at 'info' level
expect(log.level).toEqual(LogLevel.Info);
});
it("should handle 'warn' logging", async () => {
// Fixtures
const message = "Test";
const base = new Base("testing");
// Add a mock sync method
base.setSync(async log => log);
// Log
const log = await base.warn(message);
// Should log at 'info' level
expect(log.level).toEqual(LogLevel.Warn);
});
it("should handle 'error' logging", async () => {
// Fixtures
const message = "Test";
const base = new Base("testing");
// Add a mock sync method
base.setSync(async log => log);
// Log
const log = await base.error(message);
// Should log at 'info' level
expect(log.level).toEqual(LogLevel.Error);
});
});

@@ -1,10 +0,14 @@

import { ITimberLog, Middleware, ITimberOptions, Sync } from "@timberio/types";
import {
ITimberLog,
ITimberOptions,
LogLevel,
Middleware,
Sync
} from "@timberio/types";
import { makeBatch, makeThrottle } from "@timberio/tools";
import { preProcess } from "./pipeline";
// Set default options for Timber
const defaultOptions: ITimberOptions = {
// Maximum number of logs to sync in a single request to Timber.io
batchSize: 10,
batchSize: 1000,

@@ -31,4 +35,4 @@ // Max interval (in milliseconds) before a batch of logs proceeds to syncing

// Transform pipeline
protected _pipeline = [preProcess];
// Middleware
protected _middleware: Middleware[] = [];

@@ -53,2 +57,7 @@ // Sync function

public constructor(apiKey: string, options?: Partial<ITimberOptions>) {
// First, check we have a valid API key
if (typeof apiKey !== "string" || apiKey === "") {
throw new Error("Timber API key missing");
}
// Store the API key, to use for syncing with Timber.io

@@ -102,6 +111,12 @@ this._apiKey = apiKey;

*
* @param log - Log entry
* @returns Promise<ILog> - resolves to the transformed log
* @param message: string - Log message
* @param level (LogLevel) - Level to log at (debug|info|warn|error)
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
public async log(log: ITimberLog): Promise<ITimberLog> {
public async log(
message: string,
level: LogLevel = LogLevel.Info,
log: Partial<ITimberLog> = {}
): Promise<ITimberLog> {
// Check that we have a sync function

@@ -115,6 +130,14 @@ if (typeof this._sync !== "function") {

// Build the initial log
const initialLog: ITimberLog = {
dt: new Date(),
level,
message,
...log
};
// Pass the log through the middleware pipeline
const transformedLog = await this._pipeline.reduceRight(
(fn, log) => fn.then(log),
Promise.resolve(log)
const transformedLog = await this._middleware.reduceRight(
(fn, pipedLog) => fn.then(pipedLog),
Promise.resolve(initialLog)
);

@@ -133,2 +156,62 @@

/**
*
* Debug level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
public async debug(
message: string,
log: Partial<ITimberLog> = {}
): Promise<ITimberLog> {
return this.log(message, LogLevel.Debug, log);
}
/**
*
* Info level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
public async info(
message: string,
log: Partial<ITimberLog> = {}
): Promise<ITimberLog> {
return this.log(message, LogLevel.Info, log);
}
/**
*
* Warning level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
public async warn(
message: string,
log: Partial<ITimberLog> = {}
): Promise<ITimberLog> {
return this.log(message, LogLevel.Warn, log);
}
/**
*
* Warning level log, to be synced with Timber.io
*
* @param message: string - Log message
* @param log: (Partial<ITimberLog>) - Initial log (optional)
* @returns Promise<ITimberLog> after syncing
*/
public async error(
message: string,
log: Partial<ITimberLog> = {}
): Promise<ITimberLog> {
return this.log(message, LogLevel.Error, log);
}
/**
* Sets the sync method - i.e. the final step in the pipeline to get logs

@@ -150,3 +233,3 @@ * over to Timber.io

public use(fn: Middleware): void {
this._pipeline.push(fn);
this._middleware.push(fn);
}

@@ -161,3 +244,3 @@

public remove(fn: Middleware): void {
this._pipeline = this._pipeline.filter(p => p !== fn);
this._middleware = this._middleware.filter(p => p !== fn);
}

@@ -164,0 +247,0 @@ }

import { preProcess } from "./pipeline";
describe("pipeline tests", () => {
test("preProcess should add missing date", async () => {
// Sample log, minus the date
const log = {
message: "Test"
};
// Run the log through the `preProcess` pipeline, which should add
// the missing date
const result = await preProcess(log);
// Expect the message to be same
expect(result.message).toEqual(log.message);
// ... but a new `date` should be added
expect(result.date).not.toBeUndefined();
});
});
import { ITimberLog } from "@timberio/types";
/**
* Pre-process Timber log, by adding missing/required fields
*
* @param {ITimberLog} log - Timber log
* @returns {Promise<ITimberLog>} - Timber log
*/
export async function preProcess(log: ITimberLog): Promise<ITimberLog> {
return {
date: new Date(),
...log
};
}