@layerzerolabs/logger-node 0.0.53 → 0.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/.turbo/turbo-build.log +43 -23
  2. package/dist/2MI5X6EQ.js +106 -0
  3. package/dist/2MI5X6EQ.js.map +1 -0
  4. package/dist/FPZVIQHG.cjs +51 -0
  5. package/dist/FPZVIQHG.cjs.map +1 -0
  6. package/dist/G7J72OGP.js +49 -0
  7. package/dist/G7J72OGP.js.map +1 -0
  8. package/dist/{U33R2KNR.cjs → JOMAJAXG.cjs} +4 -6
  9. package/dist/JOMAJAXG.cjs.map +1 -0
  10. package/dist/JPZEDPG4.js +64 -0
  11. package/dist/JPZEDPG4.js.map +1 -0
  12. package/dist/R7DGJOXR.cjs +66 -0
  13. package/dist/R7DGJOXR.cjs.map +1 -0
  14. package/dist/TRLGV46J.cjs +109 -0
  15. package/dist/TRLGV46J.cjs.map +1 -0
  16. package/dist/VUOMXK5T.js +6 -0
  17. package/dist/VUOMXK5T.js.map +1 -0
  18. package/dist/{JTUZVC3X.js → YGNRGXYB.js} +4 -5
  19. package/dist/YGNRGXYB.js.map +1 -0
  20. package/dist/YJF4D23A.cjs +8 -0
  21. package/dist/YJF4D23A.cjs.map +1 -0
  22. package/dist/consoleLogger.cjs +4 -3
  23. package/dist/consoleLogger.d.ts.map +1 -1
  24. package/dist/consoleLogger.js +3 -2
  25. package/dist/index.cjs +21 -6
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +5 -2
  29. package/dist/loggerFacade.cjs +13 -0
  30. package/dist/loggerFacade.cjs.map +1 -0
  31. package/dist/loggerFacade.d.ts +3 -0
  32. package/dist/loggerFacade.d.ts.map +1 -0
  33. package/dist/loggerFacade.js +4 -0
  34. package/dist/loggerFacade.js.map +1 -0
  35. package/dist/model.cjs +5 -4
  36. package/dist/model.d.ts +6 -6
  37. package/dist/model.d.ts.map +1 -1
  38. package/dist/model.js +2 -1
  39. package/dist/tempFileLogger.cjs +18 -0
  40. package/dist/tempFileLogger.cjs.map +1 -0
  41. package/dist/tempFileLogger.d.ts +16 -0
  42. package/dist/tempFileLogger.d.ts.map +1 -0
  43. package/dist/tempFileLogger.js +5 -0
  44. package/dist/tempFileLogger.js.map +1 -0
  45. package/package.json +6 -5
  46. package/src/consoleLogger.ts +17 -42
  47. package/src/index.ts +2 -0
  48. package/src/loggerFacade.ts +47 -0
  49. package/src/model.ts +6 -6
  50. package/src/tempFileLogger.ts +125 -0
  51. package/dist/2POI47CX.js +0 -83
  52. package/dist/2POI47CX.js.map +0 -1
  53. package/dist/JTUZVC3X.js.map +0 -1
  54. package/dist/R37F5DOX.cjs +0 -85
  55. package/dist/R37F5DOX.cjs.map +0 -1
  56. package/dist/U33R2KNR.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tempFileLogger.ts"],"names":["getLogsDir","__name","repoRoot","getFullyQualifiedRepoRootPath","logsDir","join","mkdirSync","recursive","generateTempLogFilePath","dir","utcTimestamp","Date","toISOString","replace","randomSuffix","randomBytes","toString","fileName","getDefaultTempLogFilePath","createTempFileLoggerWithPath","logLevel","filePath","writeFileSync","writeLine","levelLabel","message","optionalParams","timestamp","paramsSuffix","length","JSON","stringify","line","EOL","appendFileSync","path","log","level","LogLevel","TRACE","trace","DEBUG","debug","INFO","info","WARN","warn","ERROR","error","createTempFileLogger","console","createDefaultTempFileLogger"],"mappings":"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","file":"TRLGV46J.cjs","sourcesContent":["import { randomBytes } from 'crypto';\nimport { appendFileSync, mkdirSync, writeFileSync } from 'fs';\nimport { EOL } from 'os';\nimport { join } from 'path';\n\nimport { getFullyQualifiedRepoRootPath } from '@layerzerolabs/common-node-utils';\n\nimport type { Logger } from './model';\nimport { LogLevel } from './model';\n\nexport interface TempFileLogger extends Logger {\n path: string;\n}\n\nconst getLogsDir = async (): Promise<string> => {\n const repoRoot = await getFullyQualifiedRepoRootPath();\n const logsDir = join(repoRoot, 'logs');\n // Ensure the logs directory exists\n mkdirSync(logsDir, { recursive: true });\n return logsDir;\n};\n\nconst generateTempLogFilePath = async (): Promise<string> => {\n const dir = await getLogsDir();\n const utcTimestamp = new Date().toISOString().replace(/:/g, '-');\n const randomSuffix = randomBytes(6).toString('hex');\n const fileName = `${utcTimestamp}-${randomSuffix}.log`;\n return join(dir, fileName);\n};\n\nconst getDefaultTempLogFilePath = async (): Promise<string> => {\n const dir = await getLogsDir();\n const fileName = 'local-runner-layerzero-default.log';\n return join(dir, fileName);\n};\n\n/**\n * Internal factory to create a temp file logger with a given file path\n */\nconst createTempFileLoggerWithPath = (logLevel: LogLevel, filePath: string): TempFileLogger => {\n writeFileSync(filePath, '');\n\n const writeLine = (levelLabel: string, message: string, optionalParams: any[]) => {\n const timestamp = new Date().toISOString();\n const paramsSuffix = optionalParams.length > 0 ? ` ${JSON.stringify(optionalParams)}` : '';\n const line = `${timestamp} ${levelLabel} ${message}${paramsSuffix}${EOL}`;\n appendFileSync(filePath, line);\n };\n\n return {\n path: filePath,\n log(level, message, ...optionalParams) {\n switch (level) {\n case LogLevel.TRACE:\n this.trace(message, ...optionalParams);\n break;\n case LogLevel.DEBUG:\n this.debug(message, ...optionalParams);\n break;\n case LogLevel.INFO:\n this.info(message, ...optionalParams);\n break;\n case LogLevel.WARN:\n this.warn(message, ...optionalParams);\n break;\n case LogLevel.ERROR:\n this.error(message, ...optionalParams);\n break;\n default:\n writeLine(`[INVALID_LOG_LEVEL ${level}]`, message, optionalParams);\n }\n },\n trace(message, ...optionalParams) {\n if (logLevel > LogLevel.TRACE) {\n return;\n }\n writeLine(`[TRACE]`, message, optionalParams);\n },\n debug(message, ...optionalParams) {\n if (logLevel > LogLevel.DEBUG) {\n return;\n }\n writeLine(`[DEBUG]`, message, optionalParams);\n },\n info(message, ...optionalParams) {\n if (logLevel > LogLevel.INFO) {\n return;\n }\n writeLine(`[INFO]`, message, optionalParams);\n },\n warn(message, ...optionalParams) {\n if (logLevel > LogLevel.WARN) {\n return;\n }\n writeLine(`[WARN]`, message, optionalParams);\n },\n error(message, ...optionalParams) {\n if (logLevel > LogLevel.ERROR) {\n return;\n }\n writeLine(`[ERROR]`, message, optionalParams);\n },\n };\n};\n\n/**\n * Creates a temp file logger with a unique timestamped filename.\n * Each call creates a new log file.\n */\nexport const createTempFileLogger = async (logLevel: LogLevel): Promise<TempFileLogger> => {\n const filePath = await generateTempLogFilePath();\n console.log(`[TempFileLogger] Logging to file: ${filePath}`);\n return createTempFileLoggerWithPath(logLevel, filePath);\n};\n\n/**\n * Creates a temp file logger that always uses the same default file path.\n * The file is truncated (cleared) on initialization.\n */\nexport const createDefaultTempFileLogger = async (logLevel: LogLevel): Promise<TempFileLogger> => {\n const filePath = await getDefaultTempLogFilePath();\n console.log(`[DefaultTempFileLogger] Logging to file: ${filePath}`);\n console.log(`[DefaultTempFileLogger] track recent logs using the command: pnpm log`);\n return createTempFileLoggerWithPath(logLevel, filePath);\n};\n"]}
@@ -0,0 +1,6 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ export { __name };
5
+ //# sourceMappingURL=VUOMXK5T.js.map
6
+ //# sourceMappingURL=VUOMXK5T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"VUOMXK5T.js"}
@@ -1,8 +1,7 @@
1
+ import { __name } from './VUOMXK5T.js';
1
2
  import { z } from 'zod/v4';
2
3
  import { ObjectDefinition } from '@layerzerolabs/base-definitions';
3
4
 
4
- var __defProp = Object.defineProperty;
5
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
5
  var LogLevel = /* @__PURE__ */ (function(LogLevel2) {
7
6
  LogLevel2[LogLevel2["TRACE"] = 0] = "TRACE";
8
7
  LogLevel2[LogLevel2["DEBUG"] = 1] = "DEBUG";
@@ -26,6 +25,6 @@ var LoggerDefinition = class extends ObjectDefinition {
26
25
  var _loggerDefinition = new LoggerDefinition();
27
26
  var loggerDefinition = _loggerDefinition;
28
27
 
29
- export { LogLevel, LoggerDefinition, __name, loggerDefinition };
30
- //# sourceMappingURL=JTUZVC3X.js.map
31
- //# sourceMappingURL=JTUZVC3X.js.map
28
+ export { LogLevel, LoggerDefinition, loggerDefinition };
29
+ //# sourceMappingURL=YGNRGXYB.js.map
30
+ //# sourceMappingURL=YGNRGXYB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/model.ts"],"names":["LogLevel","LoggerDefinition","ObjectDefinition","name","schema","z","custom","dependencies","_loggerDefinition","loggerDefinition"],"mappings":";;;;AAKO,IAAKA,QAAAA,6BAAAA,SAAAA,EAAAA;;;;;;AAAAA,EAAAA,OAAAA,SAAAA;;AAwBL,IAAMC,gBAAAA,GAAmB,cAAcC,gBAAAA,CAAAA;EA7B9C;;;EA8BI,WAAA,GAAc;AACV,IAAA,KAAA,CAAM;MAAEC,IAAAA,EAAM,QAAA;AAAUC,MAAAA,MAAAA,EAAQC,EAAEC,MAAAA,EAAM;AAAYC,MAAAA,YAAAA,EAAc;KAAG,CAAA;AACzE,EAAA;AACJ;AAEA,IAAMC,iBAAAA,GAAoB,IAAIP,gBAAAA,EAAAA;AAIvB,IAAMQ,gBAAAA,GAAmBD","file":"YGNRGXYB.js","sourcesContent":["import { z } from 'zod/v4';\n\nimport { ObjectDefinition } from '@layerzerolabs/base-definitions';\nimport type { Identity } from '@layerzerolabs/typescript-utils';\n\nexport enum LogLevel {\n 'TRACE',\n 'DEBUG',\n 'INFO',\n 'WARN',\n 'ERROR',\n}\n\nexport type LogMetadata = Record<string | symbol, any>;\n\nexport interface Logger {\n log(level: LogLevel, message: string, ...optionalParams: any[]): any;\n trace(message: string, ...optionalParams: any[]): any;\n debug(message: string, ...optionalParams: any[]): any;\n info(message: string, ...optionalParams: any[]): any;\n warn(message: string, ...optionalParams: any[]): any;\n error(message: string, ...optionalParams: any[]): any;\n // extending basic logger properties with chainName\n chainName?: string;\n}\n\n/**\n * <!-- anchor:LoggerDefinition -->\n */\nexport const LoggerDefinition = class extends ObjectDefinition<'Logger', z.ZodSchema<Logger>, {}> {\n constructor() {\n super({ name: 'Logger', schema: z.custom<Logger>(), dependencies: {} });\n }\n};\n\nconst _loggerDefinition = new LoggerDefinition();\n\nexport interface LoggerDefinition extends Identity<typeof _loggerDefinition> {}\n\nexport const loggerDefinition = _loggerDefinition as LoggerDefinition;\n"]}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
5
+
6
+ exports.__name = __name;
7
+ //# sourceMappingURL=YJF4D23A.cjs.map
8
+ //# sourceMappingURL=YJF4D23A.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"YJF4D23A.cjs"}
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var R37F5DOX_cjs = require('./R37F5DOX.cjs');
4
- require('./U33R2KNR.cjs');
3
+ var R7DGJOXR_cjs = require('./R7DGJOXR.cjs');
4
+ require('./JOMAJAXG.cjs');
5
+ require('./YJF4D23A.cjs');
5
6
 
6
7
 
7
8
 
8
9
  Object.defineProperty(exports, "createConsoleLogger", {
9
10
  enumerable: true,
10
- get: function () { return R37F5DOX_cjs.createConsoleLogger; }
11
+ get: function () { return R7DGJOXR_cjs.createConsoleLogger; }
11
12
  });
12
13
  //# sourceMappingURL=consoleLogger.cjs.map
13
14
  //# sourceMappingURL=consoleLogger.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"consoleLogger.d.ts","sourceRoot":"","sources":["../src/consoleLogger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMnC,eAAO,MAAM,mBAAmB,GAAI,UAAU,QAAQ,KAAG,MA6EvD,CAAC"}
1
+ {"version":3,"file":"consoleLogger.d.ts","sourceRoot":"","sources":["../src/consoleLogger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMnC,eAAO,MAAM,mBAAmB,GAAI,UAAU,QAAQ,KAAG,MAoDvD,CAAC"}
@@ -1,4 +1,5 @@
1
- export { createConsoleLogger } from './2POI47CX.js';
2
- import './JTUZVC3X.js';
1
+ export { createConsoleLogger } from './JPZEDPG4.js';
2
+ import './YGNRGXYB.js';
3
+ import './VUOMXK5T.js';
3
4
  //# sourceMappingURL=consoleLogger.js.map
4
5
  //# sourceMappingURL=consoleLogger.js.map
package/dist/index.cjs CHANGED
@@ -1,25 +1,40 @@
1
1
  'use strict';
2
2
 
3
- var R37F5DOX_cjs = require('./R37F5DOX.cjs');
4
- var U33R2KNR_cjs = require('./U33R2KNR.cjs');
3
+ var R7DGJOXR_cjs = require('./R7DGJOXR.cjs');
4
+ var FPZVIQHG_cjs = require('./FPZVIQHG.cjs');
5
+ var TRLGV46J_cjs = require('./TRLGV46J.cjs');
6
+ var JOMAJAXG_cjs = require('./JOMAJAXG.cjs');
7
+ require('./YJF4D23A.cjs');
5
8
 
6
9
 
7
10
 
8
11
  Object.defineProperty(exports, "createConsoleLogger", {
9
12
  enumerable: true,
10
- get: function () { return R37F5DOX_cjs.createConsoleLogger; }
13
+ get: function () { return R7DGJOXR_cjs.createConsoleLogger; }
14
+ });
15
+ Object.defineProperty(exports, "createLoggerFacade", {
16
+ enumerable: true,
17
+ get: function () { return FPZVIQHG_cjs.createLoggerFacade; }
18
+ });
19
+ Object.defineProperty(exports, "createDefaultTempFileLogger", {
20
+ enumerable: true,
21
+ get: function () { return TRLGV46J_cjs.createDefaultTempFileLogger; }
22
+ });
23
+ Object.defineProperty(exports, "createTempFileLogger", {
24
+ enumerable: true,
25
+ get: function () { return TRLGV46J_cjs.createTempFileLogger; }
11
26
  });
12
27
  Object.defineProperty(exports, "LogLevel", {
13
28
  enumerable: true,
14
- get: function () { return U33R2KNR_cjs.LogLevel; }
29
+ get: function () { return JOMAJAXG_cjs.LogLevel; }
15
30
  });
16
31
  Object.defineProperty(exports, "LoggerDefinition", {
17
32
  enumerable: true,
18
- get: function () { return U33R2KNR_cjs.LoggerDefinition; }
33
+ get: function () { return JOMAJAXG_cjs.LoggerDefinition; }
19
34
  });
20
35
  Object.defineProperty(exports, "loggerDefinition", {
21
36
  enumerable: true,
22
- get: function () { return U33R2KNR_cjs.loggerDefinition; }
37
+ get: function () { return JOMAJAXG_cjs.loggerDefinition; }
23
38
  });
24
39
  //# sourceMappingURL=index.cjs.map
25
40
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from './consoleLogger';
2
+ export * from './loggerFacade';
2
3
  export * from './model';
4
+ export * from './tempFileLogger';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,7 @@
1
- export { createConsoleLogger } from './2POI47CX.js';
2
- export { LogLevel, LoggerDefinition, loggerDefinition } from './JTUZVC3X.js';
1
+ export { createConsoleLogger } from './JPZEDPG4.js';
2
+ export { createLoggerFacade } from './G7J72OGP.js';
3
+ export { createDefaultTempFileLogger, createTempFileLogger } from './2MI5X6EQ.js';
4
+ export { LogLevel, LoggerDefinition, loggerDefinition } from './YGNRGXYB.js';
5
+ import './VUOMXK5T.js';
3
6
  //# sourceMappingURL=index.js.map
4
7
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var FPZVIQHG_cjs = require('./FPZVIQHG.cjs');
4
+ require('./YJF4D23A.cjs');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "createLoggerFacade", {
9
+ enumerable: true,
10
+ get: function () { return FPZVIQHG_cjs.createLoggerFacade; }
11
+ });
12
+ //# sourceMappingURL=loggerFacade.cjs.map
13
+ //# sourceMappingURL=loggerFacade.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"loggerFacade.cjs"}
@@ -0,0 +1,3 @@
1
+ import type { Logger } from './model';
2
+ export declare const createLoggerFacade: (loggers: Logger[]) => Logger;
3
+ //# sourceMappingURL=loggerFacade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loggerFacade.d.ts","sourceRoot":"","sources":["../src/loggerFacade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,EAAE,KAAG,MA4CtD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { createLoggerFacade } from './G7J72OGP.js';
2
+ import './VUOMXK5T.js';
3
+ //# sourceMappingURL=loggerFacade.js.map
4
+ //# sourceMappingURL=loggerFacade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"loggerFacade.js"}
package/dist/model.cjs CHANGED
@@ -1,20 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var U33R2KNR_cjs = require('./U33R2KNR.cjs');
3
+ var JOMAJAXG_cjs = require('./JOMAJAXG.cjs');
4
+ require('./YJF4D23A.cjs');
4
5
 
5
6
 
6
7
 
7
8
  Object.defineProperty(exports, "LogLevel", {
8
9
  enumerable: true,
9
- get: function () { return U33R2KNR_cjs.LogLevel; }
10
+ get: function () { return JOMAJAXG_cjs.LogLevel; }
10
11
  });
11
12
  Object.defineProperty(exports, "LoggerDefinition", {
12
13
  enumerable: true,
13
- get: function () { return U33R2KNR_cjs.LoggerDefinition; }
14
+ get: function () { return JOMAJAXG_cjs.LoggerDefinition; }
14
15
  });
15
16
  Object.defineProperty(exports, "loggerDefinition", {
16
17
  enumerable: true,
17
- get: function () { return U33R2KNR_cjs.loggerDefinition; }
18
+ get: function () { return JOMAJAXG_cjs.loggerDefinition; }
18
19
  });
19
20
  //# sourceMappingURL=model.cjs.map
20
21
  //# sourceMappingURL=model.cjs.map
package/dist/model.d.ts CHANGED
@@ -9,12 +9,12 @@ export declare enum LogLevel {
9
9
  }
10
10
  export type LogMetadata = Record<string | symbol, any>;
11
11
  export interface Logger {
12
- log(level: LogLevel, message: string, meta?: LogMetadata): any;
13
- trace(message: string, meta?: LogMetadata): any;
14
- debug(message: string, meta?: LogMetadata): any;
15
- info(message: string, meta?: LogMetadata): any;
16
- warn(message: string, meta?: LogMetadata): any;
17
- error(message: string, meta?: LogMetadata): any;
12
+ log(level: LogLevel, message: string, ...optionalParams: any[]): any;
13
+ trace(message: string, ...optionalParams: any[]): any;
14
+ debug(message: string, ...optionalParams: any[]): any;
15
+ info(message: string, ...optionalParams: any[]): any;
16
+ warn(message: string, ...optionalParams: any[]): any;
17
+ error(message: string, ...optionalParams: any[]): any;
18
18
  chainName?: string;
19
19
  }
20
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAEhE,oBAAY,QAAQ;IAChB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,MAAM,IAAA;IACN,MAAM,IAAA;IACN,OAAO,IAAA;CACV;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;AAEvD,MAAM,WAAW,MAAM;IACnB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC;IAC/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC;IAChD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC;IAC/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC;IAC/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC;IAEhD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;CAI5B,CAAC;AAEF,QAAA,MAAM,iBAAiB;;;;CAAyB,CAAC;AAEjD,MAAM,WAAW,gBAAiB,SAAQ,QAAQ,CAAC,OAAO,iBAAiB,CAAC;CAAG;AAE/E,eAAO,MAAM,gBAAgB,EAAwB,gBAAgB,CAAC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAEhE,oBAAY,QAAQ;IAChB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,MAAM,IAAA;IACN,MAAM,IAAA;IACN,OAAO,IAAA;CACV;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;AAEvD,MAAM,WAAW,MAAM;IACnB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IACrE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IACtD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IACrD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IACrD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IAEtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;CAI5B,CAAC;AAEF,QAAA,MAAM,iBAAiB;;;;CAAyB,CAAC;AAEjD,MAAM,WAAW,gBAAiB,SAAQ,QAAQ,CAAC,OAAO,iBAAiB,CAAC;CAAG;AAE/E,eAAO,MAAM,gBAAgB,EAAwB,gBAAgB,CAAC"}
package/dist/model.js CHANGED
@@ -1,3 +1,4 @@
1
- export { LogLevel, LoggerDefinition, loggerDefinition } from './JTUZVC3X.js';
1
+ export { LogLevel, LoggerDefinition, loggerDefinition } from './YGNRGXYB.js';
2
+ import './VUOMXK5T.js';
2
3
  //# sourceMappingURL=model.js.map
3
4
  //# sourceMappingURL=model.js.map
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var TRLGV46J_cjs = require('./TRLGV46J.cjs');
4
+ require('./JOMAJAXG.cjs');
5
+ require('./YJF4D23A.cjs');
6
+
7
+
8
+
9
+ Object.defineProperty(exports, "createDefaultTempFileLogger", {
10
+ enumerable: true,
11
+ get: function () { return TRLGV46J_cjs.createDefaultTempFileLogger; }
12
+ });
13
+ Object.defineProperty(exports, "createTempFileLogger", {
14
+ enumerable: true,
15
+ get: function () { return TRLGV46J_cjs.createTempFileLogger; }
16
+ });
17
+ //# sourceMappingURL=tempFileLogger.cjs.map
18
+ //# sourceMappingURL=tempFileLogger.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tempFileLogger.cjs"}
@@ -0,0 +1,16 @@
1
+ import type { Logger } from './model';
2
+ import { LogLevel } from './model';
3
+ export interface TempFileLogger extends Logger {
4
+ path: string;
5
+ }
6
+ /**
7
+ * Creates a temp file logger with a unique timestamped filename.
8
+ * Each call creates a new log file.
9
+ */
10
+ export declare const createTempFileLogger: (logLevel: LogLevel) => Promise<TempFileLogger>;
11
+ /**
12
+ * Creates a temp file logger that always uses the same default file path.
13
+ * The file is truncated (cleared) on initialization.
14
+ */
15
+ export declare const createDefaultTempFileLogger: (logLevel: LogLevel) => Promise<TempFileLogger>;
16
+ //# sourceMappingURL=tempFileLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tempFileLogger.d.ts","sourceRoot":"","sources":["../src/tempFileLogger.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,cAAe,SAAQ,MAAM;IAC1C,IAAI,EAAE,MAAM,CAAC;CAChB;AA6FD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAU,UAAU,QAAQ,KAAG,OAAO,CAAC,cAAc,CAIrF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GAAU,UAAU,QAAQ,KAAG,OAAO,CAAC,cAAc,CAK5F,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createDefaultTempFileLogger, createTempFileLogger } from './2MI5X6EQ.js';
2
+ import './YGNRGXYB.js';
3
+ import './VUOMXK5T.js';
4
+ //# sourceMappingURL=tempFileLogger.js.map
5
+ //# sourceMappingURL=tempFileLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tempFileLogger.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/logger-node",
3
- "version": "0.0.53",
3
+ "version": "0.0.54",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -15,13 +15,14 @@
15
15
  "types": "./dist/index.d.ts",
16
16
  "dependencies": {
17
17
  "zod": "^3.23.8",
18
- "@layerzerolabs/typescript-utils": "0.0.53",
19
- "@layerzerolabs/base-definitions": "0.0.53"
18
+ "@layerzerolabs/common-node-utils": "0.0.54",
19
+ "@layerzerolabs/base-definitions": "0.0.54",
20
+ "@layerzerolabs/typescript-utils": "0.0.54"
20
21
  },
21
22
  "devDependencies": {
22
23
  "tsup": "^8.4.0",
23
- "@layerzerolabs/typescript-configuration": "0.0.53",
24
- "@layerzerolabs/tsup-configuration": "0.0.53"
24
+ "@layerzerolabs/tsup-configuration": "0.0.54",
25
+ "@layerzerolabs/typescript-configuration": "0.0.54"
25
26
  },
26
27
  "publishConfig": {
27
28
  "access": "restricted",
@@ -6,80 +6,55 @@ const RED = '\x1b[31m';
6
6
  const YELLOW = '\x1b[33m';
7
7
 
8
8
  export const createConsoleLogger = (logLevel: LogLevel): Logger => ({
9
- log(level, message, meta) {
9
+ log(level, message, ...optionalParams) {
10
10
  switch (level) {
11
11
  case LogLevel.TRACE:
12
- this.trace(message, meta);
12
+ this.trace(message, ...optionalParams);
13
13
  break;
14
14
  case LogLevel.DEBUG:
15
- this.debug(message, meta);
15
+ this.debug(message, ...optionalParams);
16
16
  break;
17
17
  case LogLevel.INFO:
18
- this.info(message, meta);
18
+ this.info(message, ...optionalParams);
19
19
  break;
20
20
  case LogLevel.WARN:
21
- this.warn(message, meta);
21
+ this.warn(message, ...optionalParams);
22
22
  break;
23
23
  case LogLevel.ERROR:
24
- this.error(message, meta);
24
+ this.error(message, ...optionalParams);
25
25
  break;
26
26
  default:
27
- console.log(`[INVALID LOG LEVEL ${logLevel}] ${message}`, meta);
27
+ console.log(`[INVALID LOG LEVEL ${level}] ${message}`, ...optionalParams);
28
28
  }
29
29
  },
30
- trace(message, meta) {
30
+ trace(message, ...optionalParams) {
31
31
  if (logLevel > LogLevel.TRACE) {
32
32
  return;
33
33
  }
34
-
35
- if (meta) {
36
- console.debug(`[TRACE] ${message}`, meta);
37
- } else {
38
- console.debug(`[TRACE] ${message}`);
39
- }
34
+ console.debug(`[TRACE] ${message}`, ...optionalParams);
40
35
  },
41
- debug(message, meta) {
36
+ debug(message, ...optionalParams) {
42
37
  if (logLevel > LogLevel.DEBUG) {
43
38
  return;
44
39
  }
45
-
46
- if (meta) {
47
- console.debug(`[DEBUG] ${message}`, meta);
48
- } else {
49
- console.debug(`[DEBUG] ${message}`);
50
- }
40
+ console.debug(`[DEBUG] ${message}`, ...optionalParams);
51
41
  },
52
- info(message, meta) {
42
+ info(message, ...optionalParams) {
53
43
  if (logLevel > LogLevel.INFO) {
54
44
  return;
55
45
  }
56
-
57
- if (meta) {
58
- console.info(`[INFO] ${message}`, meta);
59
- } else {
60
- console.info(`[INFO] ${message}`);
61
- }
46
+ console.info(`[INFO] ${message}`, ...optionalParams);
62
47
  },
63
- warn(message, meta) {
48
+ warn(message, ...optionalParams) {
64
49
  if (logLevel > LogLevel.WARN) {
65
50
  return;
66
51
  }
67
-
68
- if (meta) {
69
- console.warn(`${YELLOW}[WARN] ${message}${RESET}`, meta);
70
- } else {
71
- console.warn(`${YELLOW}[WARN] ${message}${RESET}`);
72
- }
52
+ console.warn(`${YELLOW}[WARN] ${message}${RESET}`, ...optionalParams);
73
53
  },
74
- error(message, meta) {
54
+ error(message, ...optionalParams) {
75
55
  if (logLevel > LogLevel.ERROR) {
76
56
  return;
77
57
  }
78
-
79
- if (meta) {
80
- console.error(`${RED}[ERROR] ${message}${RESET}`, meta);
81
- } else {
82
- console.error(`${RED}[ERROR] ${message}${RESET}`);
83
- }
58
+ console.error(`${RED}[ERROR] ${message}${RESET}`, ...optionalParams);
84
59
  },
85
60
  });
package/src/index.ts CHANGED
@@ -1,2 +1,4 @@
1
1
  export * from './consoleLogger';
2
+ export * from './loggerFacade';
2
3
  export * from './model';
4
+ export * from './tempFileLogger';
@@ -0,0 +1,47 @@
1
+ import type { Logger, LogLevel } from './model';
2
+
3
+ export const createLoggerFacade = (loggers: Logger[]): Logger => {
4
+ let currentChainName: string | undefined = undefined;
5
+
6
+ const forEachLogger = (fn: (logger: Logger, index: number) => void) => {
7
+ for (let i = 0; i < loggers.length; i++) {
8
+ const logger = loggers[i];
9
+ try {
10
+ fn(logger, i);
11
+ } catch (error) {
12
+ // Ensure one logger failure doesn't block others
13
+ console.error(`[LoggerFacade] logger[${i}] call failed`, error);
14
+ }
15
+ }
16
+ };
17
+
18
+ return {
19
+ get chainName() {
20
+ return currentChainName;
21
+ },
22
+ set chainName(value: string | undefined) {
23
+ currentChainName = value;
24
+ forEachLogger((l) => {
25
+ l.chainName = value;
26
+ });
27
+ },
28
+ log(level: LogLevel, message: string, ...optionalParams: any[]) {
29
+ forEachLogger((l) => l.log(level, message, ...optionalParams));
30
+ },
31
+ trace(message: string, ...optionalParams: any[]) {
32
+ forEachLogger((l) => l.trace(message, ...optionalParams));
33
+ },
34
+ debug(message: string, ...optionalParams: any[]) {
35
+ forEachLogger((l) => l.debug(message, ...optionalParams));
36
+ },
37
+ info(message: string, ...optionalParams: any[]) {
38
+ forEachLogger((l) => l.info(message, ...optionalParams));
39
+ },
40
+ warn(message: string, ...optionalParams: any[]) {
41
+ forEachLogger((l) => l.warn(message, ...optionalParams));
42
+ },
43
+ error(message: string, ...optionalParams: any[]) {
44
+ forEachLogger((l) => l.error(message, ...optionalParams));
45
+ },
46
+ };
47
+ };
package/src/model.ts CHANGED
@@ -14,12 +14,12 @@ export enum LogLevel {
14
14
  export type LogMetadata = Record<string | symbol, any>;
15
15
 
16
16
  export interface Logger {
17
- log(level: LogLevel, message: string, meta?: LogMetadata): any;
18
- trace(message: string, meta?: LogMetadata): any;
19
- debug(message: string, meta?: LogMetadata): any;
20
- info(message: string, meta?: LogMetadata): any;
21
- warn(message: string, meta?: LogMetadata): any;
22
- error(message: string, meta?: LogMetadata): any;
17
+ log(level: LogLevel, message: string, ...optionalParams: any[]): any;
18
+ trace(message: string, ...optionalParams: any[]): any;
19
+ debug(message: string, ...optionalParams: any[]): any;
20
+ info(message: string, ...optionalParams: any[]): any;
21
+ warn(message: string, ...optionalParams: any[]): any;
22
+ error(message: string, ...optionalParams: any[]): any;
23
23
  // extending basic logger properties with chainName
24
24
  chainName?: string;
25
25
  }