@timberio/core
Advanced tools
+43
-6
@@ -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 |
+63
-10
| "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 +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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"} |
+69
-29
@@ -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":";;;;;AAAA,kDAA0B;AAG1B,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,SAAS,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,CAAE,IAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,SAAS,CAAC,CAAC;QAEjC,YAAY;QACZ,MAAM,GAAG,GAAG;YACV,OAAO,EAAE,MAAM;SAChB,CAAC;QAEF,sEAAsE;QACtE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,SAAS,CAAC,CAAC;QAEjC,yBAAyB;QACzB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAEjC,YAAY;QACZ,MAAM,GAAG,GAAG;YACV,OAAO,EAAE,MAAM;SAChB,CAAC;QAEF,gEAAgE;QAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnC,gCAAgC;QAChC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE5C,uCAAuC;QACvC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,SAAS,CAAC,CAAC;QAEjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,SAAS,CAAC,CAAC;QAEjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,SAAS,CAAC,CAAC;QAEjC,yBAAyB;QACzB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAE/B,YAAY;QACZ,MAAM,GAAG,GAAG;YACV,OAAO,EAAE,MAAM;SAChB,CAAC;QAEF,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3B,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,SAAS,CAAC,CAAC;QAEjC,mDAAmD;QACnD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;YACvB,OAAO,IAAI,OAAO,CAAe,OAAO,CAAC,EAAE;gBACzC,UAAU,CAAC,GAAG,EAAE;oBACd,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,YAAY;QACZ,MAAM,GAAG,GAAG;YACV,OAAO,EAAE,MAAM;SAChB,CAAC;QAEF,oDAAoD;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE9B,4BAA4B;QAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE/B,sCAAsC;QACtC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE/B,yBAAyB;QACzB,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC;QAErB,yCAAyC;QACzC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,SAAS,CAAC,CAAC;QAEjC,yBAAyB;QACzB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAE/B,cAAc;QACd,MAAM,GAAG,GAAG;YACV,OAAO,EAAE,eAAe;SACzB,CAAC;QAEF,8BAA8B;QAC9B,MAAM,UAAU,GAAG,gBAAgB,CAAC;QAEpC,gDAAgD;QAChD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;YACnB,yBACK,GAAG,IACN,OAAO,EAAE,UAAU,IACnB;QACJ,CAAC,CAAC,CAAC;QAEH,wBAAwB;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnC,qDAAqD;QACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,SAAS,CAAC,CAAC;QAEjC,6BAA6B;QAC7B,MAAM,cAAc,GAAG,KAAK,EAAE,GAAe,EAAE,EAAE,CAAC,GAAG,CAAC;QAEtD,mBAAmB;QACnB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEzB,kDAAkD;QAClD,MAAM,CAAE,IAAY,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAE1D,sBAAsB;QACtB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAE5B,iDAAiD;QACjD,MAAM,CAAE,IAAY,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} | ||
| {"version":3,"file":"base.test.js","sourceRoot":"","sources":["../../src/base.test.ts"],"names":[],"mappings":"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"} |
+43
-6
@@ -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 |
+63
-10
@@ -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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"} |
+69
-29
| 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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"} |
+4
-4
| { | ||
| "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" | ||
| } |
+89
-35
| 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); | ||
| }); | ||
| }); |
+97
-14
@@ -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 | ||
| }; | ||
| } |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
67100
36.66%1303
36.44%36
-5.26%3
Infinity%+ Added
+ Added
- Removed
- Removed
Updated
Updated