@shellicar/winston-azure-application-insights 5.0.6 → 5.1.0

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.
package/dist/index.d.mts CHANGED
@@ -1,8 +1,9 @@
1
1
  import { Format } from 'logform';
2
- import { TelemetryClient as TelemetryClient$1 } from 'applicationinsightsv2';
3
- import { TraceTelemetry as TraceTelemetry$1, ExceptionTelemetry as ExceptionTelemetry$1 } from 'applicationinsightsv2/out/Declarations/Contracts';
4
- import { TraceTelemetry, TelemetryClient, ExceptionTelemetry } from 'applicationinsightsv3';
5
2
  import * as winston from 'winston';
3
+ import { config } from 'winston';
4
+ import { TelemetryClient } from 'applicationinsightsv2';
5
+ import { TraceTelemetry, ExceptionTelemetry } from 'applicationinsightsv2/out/Declarations/Contracts';
6
+ import { TelemetryClient as TelemetryClient$1, TraceTelemetry as TraceTelemetry$1, ExceptionTelemetry as ExceptionTelemetry$1 } from 'applicationinsightsv3';
6
7
  import TransportStream from 'winston-transport';
7
8
 
8
9
  type PlainObject = Record<string, any>;
@@ -10,7 +11,7 @@ type JsonValue = string | number | JsonObject | JsonValue[] | null;
10
11
  type JsonObject = {
11
12
  [key: string]: JsonValue;
12
13
  };
13
- type LogLevels = {
14
+ type AzureLogLevels = {
14
15
  [key: string]: LogLevel;
15
16
  };
16
17
  declare enum LogLevel {
@@ -22,11 +23,11 @@ declare enum LogLevel {
22
23
  }
23
24
  type AzureInsightsClientOptions = {
24
25
  version: 2;
25
- client: TelemetryClient$1;
26
+ client: TelemetryClient;
26
27
  filters?: ITelemetryFilterV2[];
27
28
  } | {
28
29
  version: 3;
29
- client: TelemetryClient;
30
+ client: TelemetryClient$1;
30
31
  filters?: ITelemetryFilterV3[];
31
32
  };
32
33
  type AzureApplicationInsightsLoggerOptionsBase = AzureInsightsClientOptions & {
@@ -34,23 +35,23 @@ type AzureApplicationInsightsLoggerOptionsBase = AzureInsightsClientOptions & {
34
35
  sendErrorsAsExceptions?: boolean;
35
36
  };
36
37
  type AzureApplicationInsightsLoggerOptions = AzureApplicationInsightsLoggerOptionsBase & {
37
- defaultLevel: string;
38
- levels?: LogLevels;
38
+ defaultLevel?: string;
39
+ levels?: AzureLogLevels;
39
40
  };
40
41
  declare abstract class ITelemetryFilterV3 {
41
- filterTrace(trace: TraceTelemetry, client: TelemetryClient): boolean;
42
- filterException(trace: ExceptionTelemetry, client: TelemetryClient): boolean;
43
- }
44
- declare abstract class ITelemetryFilterV2 {
45
42
  filterTrace(trace: TraceTelemetry$1, client: TelemetryClient$1): boolean;
46
43
  filterException(trace: ExceptionTelemetry$1, client: TelemetryClient$1): boolean;
47
44
  }
45
+ declare abstract class ITelemetryFilterV2 {
46
+ filterTrace(trace: TraceTelemetry, client: TelemetryClient): boolean;
47
+ filterException(trace: ExceptionTelemetry, client: TelemetryClient): boolean;
48
+ }
48
49
 
49
50
  type CreateWinstonLoggerOptions = {
50
51
  insights: AzureApplicationInsightsLoggerOptions;
51
52
  winston: {
52
53
  level?: string;
53
- levels?: LogLevels;
54
+ levels?: config.AbstractConfigSetLevels;
54
55
  defaultMeta?: JsonObject;
55
56
  console: boolean;
56
57
  format?: Format[];
@@ -67,7 +68,7 @@ declare class AzureApplicationInsightsLogger extends TransportStream {
67
68
  private readonly options;
68
69
  sendErrorsAsExceptions: boolean;
69
70
  readonly name: string;
70
- get client(): TelemetryClient | TelemetryClient$1;
71
+ get client(): TelemetryClient$1 | TelemetryClient;
71
72
  constructor(options: AzureApplicationInsightsLoggerOptions);
72
73
  private handleTrace;
73
74
  private handleException;
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import { Format } from 'logform';
2
- import { TelemetryClient as TelemetryClient$1 } from 'applicationinsightsv2';
3
- import { TraceTelemetry as TraceTelemetry$1, ExceptionTelemetry as ExceptionTelemetry$1 } from 'applicationinsightsv2/out/Declarations/Contracts';
4
- import { TraceTelemetry, TelemetryClient, ExceptionTelemetry } from 'applicationinsightsv3';
5
2
  import * as winston from 'winston';
3
+ import { config } from 'winston';
4
+ import { TelemetryClient } from 'applicationinsightsv2';
5
+ import { TraceTelemetry, ExceptionTelemetry } from 'applicationinsightsv2/out/Declarations/Contracts';
6
+ import { TelemetryClient as TelemetryClient$1, TraceTelemetry as TraceTelemetry$1, ExceptionTelemetry as ExceptionTelemetry$1 } from 'applicationinsightsv3';
6
7
  import TransportStream from 'winston-transport';
7
8
 
8
9
  type PlainObject = Record<string, any>;
@@ -10,7 +11,7 @@ type JsonValue = string | number | JsonObject | JsonValue[] | null;
10
11
  type JsonObject = {
11
12
  [key: string]: JsonValue;
12
13
  };
13
- type LogLevels = {
14
+ type AzureLogLevels = {
14
15
  [key: string]: LogLevel;
15
16
  };
16
17
  declare enum LogLevel {
@@ -22,11 +23,11 @@ declare enum LogLevel {
22
23
  }
23
24
  type AzureInsightsClientOptions = {
24
25
  version: 2;
25
- client: TelemetryClient$1;
26
+ client: TelemetryClient;
26
27
  filters?: ITelemetryFilterV2[];
27
28
  } | {
28
29
  version: 3;
29
- client: TelemetryClient;
30
+ client: TelemetryClient$1;
30
31
  filters?: ITelemetryFilterV3[];
31
32
  };
32
33
  type AzureApplicationInsightsLoggerOptionsBase = AzureInsightsClientOptions & {
@@ -34,23 +35,23 @@ type AzureApplicationInsightsLoggerOptionsBase = AzureInsightsClientOptions & {
34
35
  sendErrorsAsExceptions?: boolean;
35
36
  };
36
37
  type AzureApplicationInsightsLoggerOptions = AzureApplicationInsightsLoggerOptionsBase & {
37
- defaultLevel: string;
38
- levels?: LogLevels;
38
+ defaultLevel?: string;
39
+ levels?: AzureLogLevels;
39
40
  };
40
41
  declare abstract class ITelemetryFilterV3 {
41
- filterTrace(trace: TraceTelemetry, client: TelemetryClient): boolean;
42
- filterException(trace: ExceptionTelemetry, client: TelemetryClient): boolean;
43
- }
44
- declare abstract class ITelemetryFilterV2 {
45
42
  filterTrace(trace: TraceTelemetry$1, client: TelemetryClient$1): boolean;
46
43
  filterException(trace: ExceptionTelemetry$1, client: TelemetryClient$1): boolean;
47
44
  }
45
+ declare abstract class ITelemetryFilterV2 {
46
+ filterTrace(trace: TraceTelemetry, client: TelemetryClient): boolean;
47
+ filterException(trace: ExceptionTelemetry, client: TelemetryClient): boolean;
48
+ }
48
49
 
49
50
  type CreateWinstonLoggerOptions = {
50
51
  insights: AzureApplicationInsightsLoggerOptions;
51
52
  winston: {
52
53
  level?: string;
53
- levels?: LogLevels;
54
+ levels?: config.AbstractConfigSetLevels;
54
55
  defaultMeta?: JsonObject;
55
56
  console: boolean;
56
57
  format?: Format[];
@@ -67,7 +68,7 @@ declare class AzureApplicationInsightsLogger extends TransportStream {
67
68
  private readonly options;
68
69
  sendErrorsAsExceptions: boolean;
69
70
  readonly name: string;
70
- get client(): TelemetryClient | TelemetryClient$1;
71
+ get client(): TelemetryClient$1 | TelemetryClient;
71
72
  constructor(options: AzureApplicationInsightsLoggerOptions);
72
73
  private handleTrace;
73
74
  private handleException;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("winston");function t(e){return e&&e.__esModule?e:{default:e}}var r=t(require("winston-transport")),s=Object.defineProperty,i=(e,t)=>s(e,"name",{value:t,configurable:!0}),o=class{static{i(this,"ITelemetryFilterV3")}filterTrace(e,t){return!0}filterException(e,t){return!0}},n=class{static{i(this,"ITelemetryFilterV2")}filterTrace(e,t){return!0}filterException(e,t){return!0}},c={error:3,warn:2,http:1,info:1,verbose:0,debug:0,silly:0},l={v2:{0:0,1:1,2:2,3:3,4:4},v3:{0:"Verbose",1:"Information",2:"Warning",3:"Error",4:"Critical"}},a=i((e=>e instanceof Error),"isErrorLike"),p=i((e=>null!==e&&"object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype),"isPlainObject"),f=i((e=>"object"!=typeof e||p(e)?e:{...e}),"convertToPlainObject"),g=i((e=>{const t=["level","message"];return Object.keys(e).filter((e=>!t.includes(e))).reduce(((t,r)=>(t[r]=f(e[r]),t)),{})}),"extractPropsFromInfo"),u=i((e=>{const t={message:e.message};for(const[r,s]of Object.entries(e))"stack"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=f(s));return t}),"extractErrorPropsForTrace"),h=class extends r.default{constructor(e){super({level:e.defaultLevel??"info",silent:e.silent??!1}),this.options=e,this.name="applicationinsightslogger",this.sendErrorsAsExceptions=e.sendErrorsAsExceptions??!0}static{i(this,"AzureApplicationInsightsLogger")}sendErrorsAsExceptions;name;get client(){return this.options.client}handleTrace(e,t,r,s){const i=g(t);if(a(t)&&Object.assign(i,u(t)),Object.assign(i,s),3===this.options.version){const t={message:String(r),severity:l.v3[e],properties:i};this.trackTraceV3(t)}else{const t={message:String(r),severity:l.v2[e],properties:i};this.trackTraceV2(t)}}handleException(e,t,r){let s;if(a(e))s=e;else if(a(t))s=t;else{if(!a(r))return;s=r}const i={};"string"==typeof t&&s.message!==t&&(i.message=t),s!==r&&Object.assign(i,r),3===this.options.version?this.trackExceptionV3({exception:s,properties:i}):this.trackExceptionV2({exception:s,properties:i})}trackTraceV2(e){for(const t of this.options.filters??[])if(!t.filterTrace(e,this.options.client))return;this.options.client.trackTrace(e)}trackTraceV3(e){for(const t of this.options.filters??[])if(!t.filterTrace(e,this.options.client))return;this.options.client.trackTrace(e)}trackExceptionV2(e){for(const t of this.options.filters??[])if(!t.filterException(e,this.options.client))return;this.options.client.trackException(e)}trackExceptionV3(e){for(const t of this.options.filters??[])if(!t.filterException(e,this.options.client))return;this.options.client.trackException(e)}log(e,t){const{level:r,message:s}=e,i=this.getSeverity(r),o=Reflect.get(e,Symbol.for("splat"))??[],n=o.length?o[0]:{};this.handleTrace(i,e,s,n),this.sendErrorsAsExceptions&&i>=3&&this.handleException(e,s,n),t()}getSeverity(e){return(this.options.levels??c)[e]??this.options.defaultLevel}},v={error:0,warn:1,info:2,http:3,verbose:4,debug:5,silly:6},x=i((t=>{const r=t.winston.level??"info",s=t.winston.levels??v,i=[new h({...t.insights,defaultLevel:r,levels:s})];t.winston.console&&i.push(new e.transports.Console({format:e.format.json(),stderrLevels:["error","crit","alert","emerg"],consoleWarnLevels:["warn","warning"]}));const o=e.format.combine(...t.winston.format??[],e.format.json());return e.createLogger({level:r,levels:s,format:o,transports:i,defaultMeta:t.winston.defaultMeta})}),"createWinstonLogger"),E=i((()=>void 0!==process.env.WEBSITE_INSTANCE_ID),"isRunningInAzure"),m=i((()=>!E()),"isRunningLocally");exports.AzureApplicationInsightsLogger=h,exports.ITelemetryFilterV2=n,exports.ITelemetryFilterV3=o,exports.createWinstonLogger=x,exports.isRunningInAzure=E,exports.isRunningLocally=m;//# sourceMappingURL=index.js.map
1
+ "use strict";var e=require("winston");function t(e){return e&&e.__esModule?e:{default:e}}var r=t(require("winston-transport")),s=Object.defineProperty,i=(e,t)=>s(e,"name",{value:t,configurable:!0}),o=class{static{i(this,"ITelemetryFilterV3")}filterTrace(e,t){return!0}filterException(e,t){return!0}},n=class{static{i(this,"ITelemetryFilterV2")}filterTrace(e,t){return!0}filterException(e,t){return!0}},c={error:3,warn:2,http:1,info:1,verbose:0,debug:0,silly:0},l={v2:{0:0,1:1,2:2,3:3,4:4},v3:{0:"Verbose",1:"Information",2:"Warning",3:"Error",4:"Critical"}},a=i(e=>e instanceof Error,"isErrorLike"),p=i(e=>null!==e&&"object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype,"isPlainObject"),f=i(e=>"object"!=typeof e||p(e)?e:{...e},"convertToPlainObject"),g=i(e=>{const t=["level","message"];return Object.keys(e).filter(e=>!t.includes(e)).reduce((t,r)=>(t[r]=f(e[r]),t),{})},"extractPropsFromInfo"),u=i(e=>{const t={message:e.message};for(const[r,s]of Object.entries(e))"stack"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=f(s));return t},"extractErrorPropsForTrace"),h=class extends r.default{constructor(e){super({level:e.defaultLevel??"info",silent:e.silent??!1}),this.options=e,this.name="applicationinsightslogger",this.sendErrorsAsExceptions=e.sendErrorsAsExceptions??!0}static{i(this,"AzureApplicationInsightsLogger")}sendErrorsAsExceptions;name;get client(){return this.options.client}handleTrace(e,t,r,s){const i=g(t);if(a(t)&&Object.assign(i,u(t)),Object.assign(i,s),3===this.options.version){const t={message:String(r),severity:l.v3[e],properties:i};this.trackTraceV3(t)}else{const t={message:String(r),severity:l.v2[e],properties:i};this.trackTraceV2(t)}}handleException(e,t,r){let s;if(a(e))s=e;else if(a(t))s=t;else{if(!a(r))return;s=r}const i={};"string"==typeof t&&s.message!==t&&(i.message=t),s!==r&&Object.assign(i,r),3===this.options.version?this.trackExceptionV3({exception:s,properties:i}):this.trackExceptionV2({exception:s,properties:i})}trackTraceV2(e){for(const t of this.options.filters??[])if(!t.filterTrace(e,this.options.client))return;this.options.client.trackTrace(e)}trackTraceV3(e){for(const t of this.options.filters??[])if(!t.filterTrace(e,this.options.client))return;this.options.client.trackTrace(e)}trackExceptionV2(e){for(const t of this.options.filters??[])if(!t.filterException(e,this.options.client))return;this.options.client.trackException(e)}trackExceptionV3(e){for(const t of this.options.filters??[])if(!t.filterException(e,this.options.client))return;this.options.client.trackException(e)}log(e,t){const{level:r,message:s}=e,i=this.getSeverity(r),o=Reflect.get(e,Symbol.for("splat"))??[],n=o.length?o[0]:{};this.handleTrace(i,e,s,n),this.sendErrorsAsExceptions&&i>=3&&this.handleException(e,s,n),t()}getSeverity(e){return(this.options.levels??c)[e]??this.options.defaultLevel??"info"}},v={error:0,warn:1,info:2,http:3,verbose:4,debug:5,silly:6},x=i(t=>{const r=t.winston.level??"info",s=t.winston.levels??v,i=[new h({...t.insights,defaultLevel:r})];t.winston.console&&i.push(new e.transports.Console({format:e.format.json(),stderrLevels:["error","crit","alert","emerg"],consoleWarnLevels:["warn","warning"]}));const o=e.format.combine(...t.winston.format??[],e.format.json());return e.createLogger({level:r,levels:s,format:o,transports:i,defaultMeta:t.winston.defaultMeta})},"createWinstonLogger"),E=i(()=>void 0!==process.env.WEBSITE_INSTANCE_ID,"isRunningInAzure"),m=i(()=>!E(),"isRunningLocally");exports.AzureApplicationInsightsLogger=h,exports.ITelemetryFilterV2=n,exports.ITelemetryFilterV3=o,exports.createWinstonLogger=x,exports.isRunningInAzure=E,exports.isRunningLocally=m;//# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts","../src/logLevels.ts","../src/winston-azure-application-insights.ts","../src/createWinstonLogger.ts","../src/isRunningInAzure.ts","../src/isRunningLocally.ts"],"names":["TransportStream","transports","format","createLogger"],"mappings":"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","file":"index.js","sourcesContent":["import type { TelemetryClient as TelemetryClientV2 } from 'applicationinsightsv2';\nimport type { ExceptionTelemetry as ExceptionTelemetryV2, TraceTelemetry as TraceTelemetryV2 } from 'applicationinsightsv2/out/Declarations/Contracts';\nimport type { ExceptionTelemetry as ExceptionTelemetryV3, TelemetryClient as TelemetryClientV3, TraceTelemetry as TraceTelemetryV3 } from 'applicationinsightsv3';\n\nexport type PlainObject = Record<string, any>;\n\nexport type NodeClient = TelemetryClientV2 | TelemetryClientV3;\n\nexport type JsonValue = string | number | JsonObject | JsonValue[] | null;\nexport type JsonObject = {\n [key: string]: JsonValue;\n};\n\nexport type LogLevels = {\n [key: string]: LogLevel;\n};\n\nexport enum LogLevel {\n Verbose = 0,\n Information = 1,\n Warning = 2,\n Error = 3,\n Critical = 4,\n}\n\nexport type AzureInsightsClientOptions =\n | {\n version: 2;\n client: TelemetryClientV2;\n filters?: ITelemetryFilterV2[];\n }\n | {\n version: 3;\n client: TelemetryClientV3;\n filters?: ITelemetryFilterV3[];\n };\n\nexport type FilterTraceArgs = {\n message: string;\n severity: LogLevel;\n properties: PlainObject;\n};\n\nexport type AzureApplicationInsightsLoggerOptionsBase = AzureInsightsClientOptions & {\n silent?: boolean;\n sendErrorsAsExceptions?: boolean;\n};\n\nexport type AzureApplicationInsightsLoggerOptions = AzureApplicationInsightsLoggerOptionsBase & {\n defaultLevel: string;\n levels?: LogLevels;\n};\n\nexport abstract class ITelemetryFilterV3 {\n public filterTrace(trace: TraceTelemetryV3, client: TelemetryClientV3): boolean {\n return true;\n }\n public filterException(trace: ExceptionTelemetryV3, client: TelemetryClientV3): boolean {\n return true;\n }\n}\nexport abstract class ITelemetryFilterV2 {\n public filterTrace(trace: TraceTelemetryV2, client: TelemetryClientV2): boolean {\n return true;\n }\n public filterException(trace: ExceptionTelemetryV2, client: TelemetryClientV2): boolean {\n return true;\n }\n}\n","import { LogLevel, type LogLevels } from './types';\n\nexport const defaultLogLevels: LogLevels = {\n error: LogLevel.Error,\n warn: LogLevel.Warning,\n http: LogLevel.Information,\n info: LogLevel.Information,\n verbose: LogLevel.Verbose,\n debug: LogLevel.Verbose,\n silly: LogLevel.Verbose,\n};\n","import type { TelemetryClient as TelemetryClientV2 } from 'applicationinsightsv2';\nimport type { ExceptionTelemetry as ExceptionTelemetryV2, SeverityLevel as KnownSeverityLevelV2, TraceTelemetry as TraceTelemetryV2 } from 'applicationinsightsv2/out/Declarations/Contracts';\nimport type { ExceptionTelemetry as ExceptionTelemetryV3, KnownSeverityLevel as KnownSeverityLevelV3, TelemetryClient as TelemetryClientV3, TraceTelemetry as TraceTelemetryV3 } from 'applicationinsightsv3';\nimport TransportStream from 'winston-transport';\nimport { defaultLogLevels } from './logLevels';\nimport { type AzureApplicationInsightsLoggerOptions, type ITelemetryFilterV2, type ITelemetryFilterV3, LogLevel, type LogLevels, type PlainObject } from './types';\n\nconst severityLevels = {\n v2: {\n [LogLevel.Verbose]: 0,\n [LogLevel.Information]: 1,\n [LogLevel.Warning]: 2,\n [LogLevel.Error]: 3,\n [LogLevel.Critical]: 4,\n } satisfies Record<LogLevel, KnownSeverityLevelV2>,\n v3: {\n [LogLevel.Verbose]: 'Verbose' as KnownSeverityLevelV3,\n [LogLevel.Information]: 'Information' as KnownSeverityLevelV3,\n [LogLevel.Warning]: 'Warning' as KnownSeverityLevelV3,\n [LogLevel.Error]: 'Error' as KnownSeverityLevelV3,\n [LogLevel.Critical]: 'Critical' as KnownSeverityLevelV3,\n } satisfies Record<LogLevel, KnownSeverityLevelV3>,\n};\n\nconst getMessageLevel = (levels: LogLevels, level: string): LogLevel => {\n return levels[level];\n};\n\nconst isErrorLike = (obj: unknown): obj is Error => {\n return obj instanceof Error;\n};\n\nconst isPlainObject = (obj: unknown): obj is PlainObject => {\n return obj !== null && typeof obj === 'object' && Object.getPrototypeOf(obj) === Object.prototype;\n};\n\nconst convertToPlainObject = (obj: any): PlainObject => {\n if (typeof obj !== 'object') {\n return obj;\n }\n return isPlainObject(obj) ? obj : { ...obj };\n};\n\nconst extractPropsFromInfo = (info: PlainObject): PlainObject => {\n const exclude = ['level', 'message'];\n\n return Object.keys(info)\n .filter((key) => !exclude.includes(key))\n .reduce<PlainObject>((props, key) => {\n props[key] = convertToPlainObject(info[key]);\n return props;\n }, {});\n};\n\nconst extractErrorPropsForTrace = (errorLike: Error): PlainObject => {\n const properties: PlainObject = {\n message: errorLike.message,\n };\n for (const [key, value] of Object.entries(errorLike)) {\n if (key !== 'stack' && Object.prototype.hasOwnProperty.call(errorLike, key)) {\n properties[key] = convertToPlainObject(value);\n }\n }\n return properties;\n};\n\nexport class AzureApplicationInsightsLogger extends TransportStream {\n public sendErrorsAsExceptions: boolean;\n readonly name: string;\n\n public get client(): TelemetryClientV3 | TelemetryClientV2 {\n return this.options.client;\n }\n\n constructor(private readonly options: AzureApplicationInsightsLoggerOptions) {\n super({ level: options.defaultLevel ?? 'info', silent: options.silent ?? false });\n this.name = 'applicationinsightslogger';\n this.sendErrorsAsExceptions = options.sendErrorsAsExceptions ?? true;\n }\n\n private handleTrace(severity: LogLevel, info: PlainObject, message: string | undefined, logMeta: PlainObject): void {\n const traceProps = extractPropsFromInfo(info);\n\n if (isErrorLike(info)) {\n Object.assign(traceProps, extractErrorPropsForTrace(info));\n }\n\n Object.assign(traceProps, logMeta);\n\n if (this.options.version === 3) {\n const telemetry: TraceTelemetryV3 = {\n message: String(message),\n severity: severityLevels.v3[severity],\n properties: traceProps,\n };\n this.trackTraceV3(telemetry);\n } else {\n const telemetry: TraceTelemetryV2 = {\n message: String(message),\n severity: severityLevels.v2[severity],\n properties: traceProps,\n };\n this.trackTraceV2(telemetry);\n }\n }\n\n private handleException(info: PlainObject, message: string | undefined, logMeta: PlainObject): void {\n let exception: Error | undefined;\n\n if (isErrorLike(info)) {\n exception = info;\n } else if (isErrorLike(message)) {\n exception = message as unknown as Error;\n } else if (isErrorLike(logMeta)) {\n exception = logMeta;\n } else {\n return;\n }\n\n const exceptionProps: PlainObject = {};\n\n if (typeof message === 'string' && exception.message !== message) {\n exceptionProps.message = message;\n }\n\n if (exception !== logMeta) {\n Object.assign(exceptionProps, logMeta);\n }\n\n if (this.options.version === 3) {\n this.trackExceptionV3({ exception, properties: exceptionProps });\n } else {\n this.trackExceptionV2({ exception, properties: exceptionProps });\n }\n }\n\n private trackTraceV2(telemetry: TraceTelemetryV2): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV2[]) {\n if (!f.filterTrace(telemetry, this.options.client as TelemetryClientV2)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV2).trackTrace(telemetry);\n }\n\n private trackTraceV3(telemetry: TraceTelemetryV3): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV3[]) {\n if (!f.filterTrace(telemetry, this.options.client as TelemetryClientV3)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV3).trackTrace(telemetry);\n }\n\n private trackExceptionV2(telemetry: ExceptionTelemetryV2): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV2[]) {\n if (!f.filterException(telemetry, this.options.client as TelemetryClientV2)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV2).trackException(telemetry);\n }\n\n private trackExceptionV3(telemetry: ExceptionTelemetryV3): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV3[]) {\n if (!f.filterException(telemetry, this.options.client as TelemetryClientV3)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV3).trackException(telemetry);\n }\n\n override log(info: PlainObject, callback: () => void): void {\n const { level, message } = info;\n const severity = this.getSeverity(level);\n const splat = Reflect.get(info, Symbol.for('splat')) ?? [];\n const logMeta = splat.length ? splat[0] : {};\n\n this.handleTrace(severity, info, message, logMeta);\n\n if (this.sendErrorsAsExceptions && severity >= LogLevel.Error) {\n this.handleException(info, message, logMeta);\n }\n\n callback();\n }\n\n private getSeverity(level: string) {\n return (this.options.levels ?? defaultLogLevels)[level] ?? this.options.defaultLevel;\n }\n}\n","import { createLogger, format, transports } from 'winston';\nimport type TransportStream from 'winston-transport';\nimport type { CreateWinstonLoggerOptions } from './CreateWinstonLoggerOptions';\nimport type { LogLevels } from './types';\nimport { AzureApplicationInsightsLogger } from './winston-azure-application-insights';\n\nconst npmLevels = {\n error: 0,\n warn: 1,\n info: 2,\n http: 3,\n verbose: 4,\n debug: 5,\n silly: 6,\n};\n\nexport const createWinstonLogger = (options: CreateWinstonLoggerOptions) => {\n const level = options.winston.level ?? 'info';\n const levels = options.winston.levels ?? npmLevels;\n\n const _transports: TransportStream[] = [\n new AzureApplicationInsightsLogger({\n ...options.insights,\n defaultLevel: level,\n levels,\n }),\n ];\n\n if (options.winston.console) {\n _transports.push(\n new transports.Console({\n format: format.json(),\n stderrLevels: ['error', 'crit', 'alert', 'emerg'],\n consoleWarnLevels: ['warn', 'warning'],\n }),\n );\n }\n\n const _format = format.combine(...(options.winston.format ?? []), format.json());\n\n return createLogger({\n level,\n levels,\n format: _format,\n transports: _transports,\n defaultMeta: options.winston.defaultMeta,\n });\n};\n","export const isRunningInAzure = () => {\n return process.env.WEBSITE_INSTANCE_ID !== undefined;\n};\n","import { isRunningInAzure } from './isRunningInAzure';\n\nexport const isRunningLocally = () => {\n return !isRunningInAzure();\n};\n"]}
1
+ {"version":3,"sources":["../src/types.ts","../src/logLevels.ts","../src/winston-azure-application-insights.ts","../src/createWinstonLogger.ts","../src/isRunningInAzure.ts","../src/isRunningLocally.ts"],"names":["TransportStream","transports","format","createLogger"],"mappings":"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","file":"index.js","sourcesContent":["import type { TelemetryClient as TelemetryClientV2 } from 'applicationinsightsv2';\nimport type { ExceptionTelemetry as ExceptionTelemetryV2, TraceTelemetry as TraceTelemetryV2 } from 'applicationinsightsv2/out/Declarations/Contracts';\nimport type { ExceptionTelemetry as ExceptionTelemetryV3, TelemetryClient as TelemetryClientV3, TraceTelemetry as TraceTelemetryV3 } from 'applicationinsightsv3';\n\nexport type PlainObject = Record<string, any>;\n\nexport type NodeClient = TelemetryClientV2 | TelemetryClientV3;\n\nexport type JsonValue = string | number | JsonObject | JsonValue[] | null;\nexport type JsonObject = {\n [key: string]: JsonValue;\n};\n\nexport type AzureLogLevels = {\n [key: string]: LogLevel;\n};\n\nexport enum LogLevel {\n Verbose = 0,\n Information = 1,\n Warning = 2,\n Error = 3,\n Critical = 4,\n}\n\nexport type AzureInsightsClientOptions =\n | {\n version: 2;\n client: TelemetryClientV2;\n filters?: ITelemetryFilterV2[];\n }\n | {\n version: 3;\n client: TelemetryClientV3;\n filters?: ITelemetryFilterV3[];\n };\n\nexport type FilterTraceArgs = {\n message: string;\n severity: LogLevel;\n properties: PlainObject;\n};\n\nexport type AzureApplicationInsightsLoggerOptionsBase = AzureInsightsClientOptions & {\n silent?: boolean;\n sendErrorsAsExceptions?: boolean;\n};\n\nexport type AzureApplicationInsightsLoggerOptions = AzureApplicationInsightsLoggerOptionsBase & {\n defaultLevel?: string;\n levels?: AzureLogLevels;\n};\n\nexport abstract class ITelemetryFilterV3 {\n public filterTrace(trace: TraceTelemetryV3, client: TelemetryClientV3): boolean {\n return true;\n }\n public filterException(trace: ExceptionTelemetryV3, client: TelemetryClientV3): boolean {\n return true;\n }\n}\nexport abstract class ITelemetryFilterV2 {\n public filterTrace(trace: TraceTelemetryV2, client: TelemetryClientV2): boolean {\n return true;\n }\n public filterException(trace: ExceptionTelemetryV2, client: TelemetryClientV2): boolean {\n return true;\n }\n}\n","import { type AzureLogLevels, LogLevel } from './types';\n\nexport const defaultLogLevels: AzureLogLevels = {\n error: LogLevel.Error,\n warn: LogLevel.Warning,\n http: LogLevel.Information,\n info: LogLevel.Information,\n verbose: LogLevel.Verbose,\n debug: LogLevel.Verbose,\n silly: LogLevel.Verbose,\n};\n","import type { TelemetryClient as TelemetryClientV2 } from 'applicationinsightsv2';\nimport type { ExceptionTelemetry as ExceptionTelemetryV2, SeverityLevel as KnownSeverityLevelV2, TraceTelemetry as TraceTelemetryV2 } from 'applicationinsightsv2/out/Declarations/Contracts';\nimport type { ExceptionTelemetry as ExceptionTelemetryV3, KnownSeverityLevel as KnownSeverityLevelV3, TelemetryClient as TelemetryClientV3, TraceTelemetry as TraceTelemetryV3 } from 'applicationinsightsv3';\nimport TransportStream from 'winston-transport';\nimport { defaultLogLevels } from './logLevels';\nimport { type AzureApplicationInsightsLoggerOptions, type AzureLogLevels, type ITelemetryFilterV2, type ITelemetryFilterV3, LogLevel, type PlainObject } from './types';\n\nconst severityLevels = {\n v2: {\n [LogLevel.Verbose]: 0,\n [LogLevel.Information]: 1,\n [LogLevel.Warning]: 2,\n [LogLevel.Error]: 3,\n [LogLevel.Critical]: 4,\n } satisfies Record<LogLevel, KnownSeverityLevelV2>,\n v3: {\n [LogLevel.Verbose]: 'Verbose' as KnownSeverityLevelV3,\n [LogLevel.Information]: 'Information' as KnownSeverityLevelV3,\n [LogLevel.Warning]: 'Warning' as KnownSeverityLevelV3,\n [LogLevel.Error]: 'Error' as KnownSeverityLevelV3,\n [LogLevel.Critical]: 'Critical' as KnownSeverityLevelV3,\n } satisfies Record<LogLevel, KnownSeverityLevelV3>,\n};\n\nconst isErrorLike = (obj: unknown): obj is Error => {\n return obj instanceof Error;\n};\n\nconst isPlainObject = (obj: unknown): obj is PlainObject => {\n return obj !== null && typeof obj === 'object' && Object.getPrototypeOf(obj) === Object.prototype;\n};\n\nconst convertToPlainObject = (obj: any): PlainObject => {\n if (typeof obj !== 'object') {\n return obj;\n }\n return isPlainObject(obj) ? obj : { ...obj };\n};\n\nconst extractPropsFromInfo = (info: PlainObject): PlainObject => {\n const exclude = ['level', 'message'];\n\n return Object.keys(info)\n .filter((key) => !exclude.includes(key))\n .reduce<PlainObject>((props, key) => {\n props[key] = convertToPlainObject(info[key]);\n return props;\n }, {});\n};\n\nconst extractErrorPropsForTrace = (errorLike: Error): PlainObject => {\n const properties: PlainObject = {\n message: errorLike.message,\n };\n for (const [key, value] of Object.entries(errorLike)) {\n if (key !== 'stack' && Object.prototype.hasOwnProperty.call(errorLike, key)) {\n properties[key] = convertToPlainObject(value);\n }\n }\n return properties;\n};\n\nexport class AzureApplicationInsightsLogger extends TransportStream {\n public sendErrorsAsExceptions: boolean;\n readonly name: string;\n\n public get client(): TelemetryClientV3 | TelemetryClientV2 {\n return this.options.client;\n }\n\n constructor(private readonly options: AzureApplicationInsightsLoggerOptions) {\n super({ level: options.defaultLevel ?? 'info', silent: options.silent ?? false });\n this.name = 'applicationinsightslogger';\n this.sendErrorsAsExceptions = options.sendErrorsAsExceptions ?? true;\n }\n\n private handleTrace(severity: LogLevel, info: PlainObject, message: string | undefined, logMeta: PlainObject): void {\n const traceProps = extractPropsFromInfo(info);\n\n if (isErrorLike(info)) {\n Object.assign(traceProps, extractErrorPropsForTrace(info));\n }\n\n Object.assign(traceProps, logMeta);\n\n if (this.options.version === 3) {\n const telemetry: TraceTelemetryV3 = {\n message: String(message),\n severity: severityLevels.v3[severity],\n properties: traceProps,\n };\n this.trackTraceV3(telemetry);\n } else {\n const telemetry: TraceTelemetryV2 = {\n message: String(message),\n severity: severityLevels.v2[severity],\n properties: traceProps,\n };\n this.trackTraceV2(telemetry);\n }\n }\n\n private handleException(info: PlainObject, message: string | undefined, logMeta: PlainObject): void {\n let exception: Error | undefined;\n\n if (isErrorLike(info)) {\n exception = info;\n } else if (isErrorLike(message)) {\n exception = message as unknown as Error;\n } else if (isErrorLike(logMeta)) {\n exception = logMeta;\n } else {\n return;\n }\n\n const exceptionProps: PlainObject = {};\n\n if (typeof message === 'string' && exception.message !== message) {\n exceptionProps.message = message;\n }\n\n if (exception !== logMeta) {\n Object.assign(exceptionProps, logMeta);\n }\n\n if (this.options.version === 3) {\n this.trackExceptionV3({ exception, properties: exceptionProps });\n } else {\n this.trackExceptionV2({ exception, properties: exceptionProps });\n }\n }\n\n private trackTraceV2(telemetry: TraceTelemetryV2): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV2[]) {\n if (!f.filterTrace(telemetry, this.options.client as TelemetryClientV2)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV2).trackTrace(telemetry);\n }\n\n private trackTraceV3(telemetry: TraceTelemetryV3): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV3[]) {\n if (!f.filterTrace(telemetry, this.options.client as TelemetryClientV3)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV3).trackTrace(telemetry);\n }\n\n private trackExceptionV2(telemetry: ExceptionTelemetryV2): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV2[]) {\n if (!f.filterException(telemetry, this.options.client as TelemetryClientV2)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV2).trackException(telemetry);\n }\n\n private trackExceptionV3(telemetry: ExceptionTelemetryV3): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV3[]) {\n if (!f.filterException(telemetry, this.options.client as TelemetryClientV3)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV3).trackException(telemetry);\n }\n\n override log(info: PlainObject, callback: () => void): void {\n const { level, message } = info;\n const severity = this.getSeverity(level);\n const splat = Reflect.get(info, Symbol.for('splat')) ?? [];\n const logMeta = splat.length ? splat[0] : {};\n\n this.handleTrace(severity, info, message, logMeta);\n\n if (this.sendErrorsAsExceptions && severity >= LogLevel.Error) {\n this.handleException(info, message, logMeta);\n }\n\n callback();\n }\n\n private getSeverity(level: string) {\n return (this.options.levels ?? defaultLogLevels)[level] ?? this.options.defaultLevel ?? 'info';\n }\n}\n","import { createLogger, format, transports } from 'winston';\nimport type TransportStream from 'winston-transport';\nimport type { CreateWinstonLoggerOptions } from './CreateWinstonLoggerOptions';\nimport { AzureApplicationInsightsLogger } from './winston-azure-application-insights';\n\nconst npmLevels = {\n error: 0,\n warn: 1,\n info: 2,\n http: 3,\n verbose: 4,\n debug: 5,\n silly: 6,\n};\n\nexport const createWinstonLogger = (options: CreateWinstonLoggerOptions) => {\n const level = options.winston.level ?? 'info';\n const levels = options.winston.levels ?? npmLevels;\n\n const _transports: TransportStream[] = [\n new AzureApplicationInsightsLogger({\n ...options.insights,\n defaultLevel: level,\n }),\n ];\n\n if (options.winston.console) {\n _transports.push(\n new transports.Console({\n format: format.json(),\n stderrLevels: ['error', 'crit', 'alert', 'emerg'],\n consoleWarnLevels: ['warn', 'warning'],\n }),\n );\n }\n\n const _format = format.combine(...(options.winston.format ?? []), format.json());\n\n return createLogger({\n level,\n levels,\n format: _format,\n transports: _transports,\n defaultMeta: options.winston.defaultMeta,\n });\n};\n","export const isRunningInAzure = () => {\n return process.env.WEBSITE_INSTANCE_ID !== undefined;\n};\n","import { isRunningInAzure } from './isRunningInAzure';\n\nexport const isRunningLocally = () => {\n return !isRunningInAzure();\n};\n"]}
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{transports as e,format as t,createLogger as r}from"winston";import s from"winston-transport";var i=Object.defineProperty,o=(e,t)=>i(e,"name",{value:t,configurable:!0}),n=class{static{o(this,"ITelemetryFilterV3")}filterTrace(e,t){return!0}filterException(e,t){return!0}},c=class{static{o(this,"ITelemetryFilterV2")}filterTrace(e,t){return!0}filterException(e,t){return!0}},l={error:3,warn:2,http:1,info:1,verbose:0,debug:0,silly:0},a={v2:{0:0,1:1,2:2,3:3,4:4},v3:{0:"Verbose",1:"Information",2:"Warning",3:"Error",4:"Critical"}},p=o((e=>e instanceof Error),"isErrorLike"),f=o((e=>null!==e&&"object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype),"isPlainObject"),h=o((e=>"object"!=typeof e||f(e)?e:{...e}),"convertToPlainObject"),g=o((e=>{const t=["level","message"];return Object.keys(e).filter((e=>!t.includes(e))).reduce(((t,r)=>(t[r]=h(e[r]),t)),{})}),"extractPropsFromInfo"),u=o((e=>{const t={message:e.message};for(const[r,s]of Object.entries(e))"stack"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=h(s));return t}),"extractErrorPropsForTrace"),v=class extends s{constructor(e){super({level:e.defaultLevel??"info",silent:e.silent??!1}),this.options=e,this.name="applicationinsightslogger",this.sendErrorsAsExceptions=e.sendErrorsAsExceptions??!0}static{o(this,"AzureApplicationInsightsLogger")}sendErrorsAsExceptions;name;get client(){return this.options.client}handleTrace(e,t,r,s){const i=g(t);if(p(t)&&Object.assign(i,u(t)),Object.assign(i,s),3===this.options.version){const t={message:String(r),severity:a.v3[e],properties:i};this.trackTraceV3(t)}else{const t={message:String(r),severity:a.v2[e],properties:i};this.trackTraceV2(t)}}handleException(e,t,r){let s;if(p(e))s=e;else if(p(t))s=t;else{if(!p(r))return;s=r}const i={};"string"==typeof t&&s.message!==t&&(i.message=t),s!==r&&Object.assign(i,r),3===this.options.version?this.trackExceptionV3({exception:s,properties:i}):this.trackExceptionV2({exception:s,properties:i})}trackTraceV2(e){for(const t of this.options.filters??[])if(!t.filterTrace(e,this.options.client))return;this.options.client.trackTrace(e)}trackTraceV3(e){for(const t of this.options.filters??[])if(!t.filterTrace(e,this.options.client))return;this.options.client.trackTrace(e)}trackExceptionV2(e){for(const t of this.options.filters??[])if(!t.filterException(e,this.options.client))return;this.options.client.trackException(e)}trackExceptionV3(e){for(const t of this.options.filters??[])if(!t.filterException(e,this.options.client))return;this.options.client.trackException(e)}log(e,t){const{level:r,message:s}=e,i=this.getSeverity(r),o=Reflect.get(e,Symbol.for("splat"))??[],n=o.length?o[0]:{};this.handleTrace(i,e,s,n),this.sendErrorsAsExceptions&&i>=3&&this.handleException(e,s,n),t()}getSeverity(e){return(this.options.levels??l)[e]??this.options.defaultLevel}},E={error:0,warn:1,info:2,http:3,verbose:4,debug:5,silly:6},m=o((s=>{const i=s.winston.level??"info",o=s.winston.levels??E,n=[new v({...s.insights,defaultLevel:i,levels:o})];s.winston.console&&n.push(new e.Console({format:t.json(),stderrLevels:["error","crit","alert","emerg"],consoleWarnLevels:["warn","warning"]}));const c=t.combine(...s.winston.format??[],t.json());return r({level:i,levels:o,format:c,transports:n,defaultMeta:s.winston.defaultMeta})}),"createWinstonLogger"),x=o((()=>void 0!==process.env.WEBSITE_INSTANCE_ID),"isRunningInAzure"),b=o((()=>!x()),"isRunningLocally");export{v as AzureApplicationInsightsLogger,c as ITelemetryFilterV2,n as ITelemetryFilterV3,m as createWinstonLogger,x as isRunningInAzure,b as isRunningLocally};//# sourceMappingURL=index.mjs.map
1
+ import{transports as e,format as t,createLogger as r}from"winston";import s from"winston-transport";var i=Object.defineProperty,o=(e,t)=>i(e,"name",{value:t,configurable:!0}),n=class{static{o(this,"ITelemetryFilterV3")}filterTrace(e,t){return!0}filterException(e,t){return!0}},c=class{static{o(this,"ITelemetryFilterV2")}filterTrace(e,t){return!0}filterException(e,t){return!0}},l={error:3,warn:2,http:1,info:1,verbose:0,debug:0,silly:0},a={v2:{0:0,1:1,2:2,3:3,4:4},v3:{0:"Verbose",1:"Information",2:"Warning",3:"Error",4:"Critical"}},p=o(e=>e instanceof Error,"isErrorLike"),f=o(e=>null!==e&&"object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype,"isPlainObject"),h=o(e=>"object"!=typeof e||f(e)?e:{...e},"convertToPlainObject"),g=o(e=>{const t=["level","message"];return Object.keys(e).filter(e=>!t.includes(e)).reduce((t,r)=>(t[r]=h(e[r]),t),{})},"extractPropsFromInfo"),u=o(e=>{const t={message:e.message};for(const[r,s]of Object.entries(e))"stack"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=h(s));return t},"extractErrorPropsForTrace"),v=class extends s{constructor(e){super({level:e.defaultLevel??"info",silent:e.silent??!1}),this.options=e,this.name="applicationinsightslogger",this.sendErrorsAsExceptions=e.sendErrorsAsExceptions??!0}static{o(this,"AzureApplicationInsightsLogger")}sendErrorsAsExceptions;name;get client(){return this.options.client}handleTrace(e,t,r,s){const i=g(t);if(p(t)&&Object.assign(i,u(t)),Object.assign(i,s),3===this.options.version){const t={message:String(r),severity:a.v3[e],properties:i};this.trackTraceV3(t)}else{const t={message:String(r),severity:a.v2[e],properties:i};this.trackTraceV2(t)}}handleException(e,t,r){let s;if(p(e))s=e;else if(p(t))s=t;else{if(!p(r))return;s=r}const i={};"string"==typeof t&&s.message!==t&&(i.message=t),s!==r&&Object.assign(i,r),3===this.options.version?this.trackExceptionV3({exception:s,properties:i}):this.trackExceptionV2({exception:s,properties:i})}trackTraceV2(e){for(const t of this.options.filters??[])if(!t.filterTrace(e,this.options.client))return;this.options.client.trackTrace(e)}trackTraceV3(e){for(const t of this.options.filters??[])if(!t.filterTrace(e,this.options.client))return;this.options.client.trackTrace(e)}trackExceptionV2(e){for(const t of this.options.filters??[])if(!t.filterException(e,this.options.client))return;this.options.client.trackException(e)}trackExceptionV3(e){for(const t of this.options.filters??[])if(!t.filterException(e,this.options.client))return;this.options.client.trackException(e)}log(e,t){const{level:r,message:s}=e,i=this.getSeverity(r),o=Reflect.get(e,Symbol.for("splat"))??[],n=o.length?o[0]:{};this.handleTrace(i,e,s,n),this.sendErrorsAsExceptions&&i>=3&&this.handleException(e,s,n),t()}getSeverity(e){return(this.options.levels??l)[e]??this.options.defaultLevel??"info"}},E={error:0,warn:1,info:2,http:3,verbose:4,debug:5,silly:6},m=o(s=>{const i=s.winston.level??"info",o=s.winston.levels??E,n=[new v({...s.insights,defaultLevel:i})];s.winston.console&&n.push(new e.Console({format:t.json(),stderrLevels:["error","crit","alert","emerg"],consoleWarnLevels:["warn","warning"]}));const c=t.combine(...s.winston.format??[],t.json());return r({level:i,levels:o,format:c,transports:n,defaultMeta:s.winston.defaultMeta})},"createWinstonLogger"),x=o(()=>void 0!==process.env.WEBSITE_INSTANCE_ID,"isRunningInAzure"),b=o(()=>!x(),"isRunningLocally");export{v as AzureApplicationInsightsLogger,c as ITelemetryFilterV2,n as ITelemetryFilterV3,m as createWinstonLogger,x as isRunningInAzure,b as isRunningLocally};//# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts","../src/logLevels.ts","../src/winston-azure-application-insights.ts","../src/createWinstonLogger.ts","../src/isRunningInAzure.ts","../src/isRunningLocally.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type { TelemetryClient as TelemetryClientV2 } from 'applicationinsightsv2';\nimport type { ExceptionTelemetry as ExceptionTelemetryV2, TraceTelemetry as TraceTelemetryV2 } from 'applicationinsightsv2/out/Declarations/Contracts';\nimport type { ExceptionTelemetry as ExceptionTelemetryV3, TelemetryClient as TelemetryClientV3, TraceTelemetry as TraceTelemetryV3 } from 'applicationinsightsv3';\n\nexport type PlainObject = Record<string, any>;\n\nexport type NodeClient = TelemetryClientV2 | TelemetryClientV3;\n\nexport type JsonValue = string | number | JsonObject | JsonValue[] | null;\nexport type JsonObject = {\n [key: string]: JsonValue;\n};\n\nexport type LogLevels = {\n [key: string]: LogLevel;\n};\n\nexport enum LogLevel {\n Verbose = 0,\n Information = 1,\n Warning = 2,\n Error = 3,\n Critical = 4,\n}\n\nexport type AzureInsightsClientOptions =\n | {\n version: 2;\n client: TelemetryClientV2;\n filters?: ITelemetryFilterV2[];\n }\n | {\n version: 3;\n client: TelemetryClientV3;\n filters?: ITelemetryFilterV3[];\n };\n\nexport type FilterTraceArgs = {\n message: string;\n severity: LogLevel;\n properties: PlainObject;\n};\n\nexport type AzureApplicationInsightsLoggerOptionsBase = AzureInsightsClientOptions & {\n silent?: boolean;\n sendErrorsAsExceptions?: boolean;\n};\n\nexport type AzureApplicationInsightsLoggerOptions = AzureApplicationInsightsLoggerOptionsBase & {\n defaultLevel: string;\n levels?: LogLevels;\n};\n\nexport abstract class ITelemetryFilterV3 {\n public filterTrace(trace: TraceTelemetryV3, client: TelemetryClientV3): boolean {\n return true;\n }\n public filterException(trace: ExceptionTelemetryV3, client: TelemetryClientV3): boolean {\n return true;\n }\n}\nexport abstract class ITelemetryFilterV2 {\n public filterTrace(trace: TraceTelemetryV2, client: TelemetryClientV2): boolean {\n return true;\n }\n public filterException(trace: ExceptionTelemetryV2, client: TelemetryClientV2): boolean {\n return true;\n }\n}\n","import { LogLevel, type LogLevels } from './types';\n\nexport const defaultLogLevels: LogLevels = {\n error: LogLevel.Error,\n warn: LogLevel.Warning,\n http: LogLevel.Information,\n info: LogLevel.Information,\n verbose: LogLevel.Verbose,\n debug: LogLevel.Verbose,\n silly: LogLevel.Verbose,\n};\n","import type { TelemetryClient as TelemetryClientV2 } from 'applicationinsightsv2';\nimport type { ExceptionTelemetry as ExceptionTelemetryV2, SeverityLevel as KnownSeverityLevelV2, TraceTelemetry as TraceTelemetryV2 } from 'applicationinsightsv2/out/Declarations/Contracts';\nimport type { ExceptionTelemetry as ExceptionTelemetryV3, KnownSeverityLevel as KnownSeverityLevelV3, TelemetryClient as TelemetryClientV3, TraceTelemetry as TraceTelemetryV3 } from 'applicationinsightsv3';\nimport TransportStream from 'winston-transport';\nimport { defaultLogLevels } from './logLevels';\nimport { type AzureApplicationInsightsLoggerOptions, type ITelemetryFilterV2, type ITelemetryFilterV3, LogLevel, type LogLevels, type PlainObject } from './types';\n\nconst severityLevels = {\n v2: {\n [LogLevel.Verbose]: 0,\n [LogLevel.Information]: 1,\n [LogLevel.Warning]: 2,\n [LogLevel.Error]: 3,\n [LogLevel.Critical]: 4,\n } satisfies Record<LogLevel, KnownSeverityLevelV2>,\n v3: {\n [LogLevel.Verbose]: 'Verbose' as KnownSeverityLevelV3,\n [LogLevel.Information]: 'Information' as KnownSeverityLevelV3,\n [LogLevel.Warning]: 'Warning' as KnownSeverityLevelV3,\n [LogLevel.Error]: 'Error' as KnownSeverityLevelV3,\n [LogLevel.Critical]: 'Critical' as KnownSeverityLevelV3,\n } satisfies Record<LogLevel, KnownSeverityLevelV3>,\n};\n\nconst getMessageLevel = (levels: LogLevels, level: string): LogLevel => {\n return levels[level];\n};\n\nconst isErrorLike = (obj: unknown): obj is Error => {\n return obj instanceof Error;\n};\n\nconst isPlainObject = (obj: unknown): obj is PlainObject => {\n return obj !== null && typeof obj === 'object' && Object.getPrototypeOf(obj) === Object.prototype;\n};\n\nconst convertToPlainObject = (obj: any): PlainObject => {\n if (typeof obj !== 'object') {\n return obj;\n }\n return isPlainObject(obj) ? obj : { ...obj };\n};\n\nconst extractPropsFromInfo = (info: PlainObject): PlainObject => {\n const exclude = ['level', 'message'];\n\n return Object.keys(info)\n .filter((key) => !exclude.includes(key))\n .reduce<PlainObject>((props, key) => {\n props[key] = convertToPlainObject(info[key]);\n return props;\n }, {});\n};\n\nconst extractErrorPropsForTrace = (errorLike: Error): PlainObject => {\n const properties: PlainObject = {\n message: errorLike.message,\n };\n for (const [key, value] of Object.entries(errorLike)) {\n if (key !== 'stack' && Object.prototype.hasOwnProperty.call(errorLike, key)) {\n properties[key] = convertToPlainObject(value);\n }\n }\n return properties;\n};\n\nexport class AzureApplicationInsightsLogger extends TransportStream {\n public sendErrorsAsExceptions: boolean;\n readonly name: string;\n\n public get client(): TelemetryClientV3 | TelemetryClientV2 {\n return this.options.client;\n }\n\n constructor(private readonly options: AzureApplicationInsightsLoggerOptions) {\n super({ level: options.defaultLevel ?? 'info', silent: options.silent ?? false });\n this.name = 'applicationinsightslogger';\n this.sendErrorsAsExceptions = options.sendErrorsAsExceptions ?? true;\n }\n\n private handleTrace(severity: LogLevel, info: PlainObject, message: string | undefined, logMeta: PlainObject): void {\n const traceProps = extractPropsFromInfo(info);\n\n if (isErrorLike(info)) {\n Object.assign(traceProps, extractErrorPropsForTrace(info));\n }\n\n Object.assign(traceProps, logMeta);\n\n if (this.options.version === 3) {\n const telemetry: TraceTelemetryV3 = {\n message: String(message),\n severity: severityLevels.v3[severity],\n properties: traceProps,\n };\n this.trackTraceV3(telemetry);\n } else {\n const telemetry: TraceTelemetryV2 = {\n message: String(message),\n severity: severityLevels.v2[severity],\n properties: traceProps,\n };\n this.trackTraceV2(telemetry);\n }\n }\n\n private handleException(info: PlainObject, message: string | undefined, logMeta: PlainObject): void {\n let exception: Error | undefined;\n\n if (isErrorLike(info)) {\n exception = info;\n } else if (isErrorLike(message)) {\n exception = message as unknown as Error;\n } else if (isErrorLike(logMeta)) {\n exception = logMeta;\n } else {\n return;\n }\n\n const exceptionProps: PlainObject = {};\n\n if (typeof message === 'string' && exception.message !== message) {\n exceptionProps.message = message;\n }\n\n if (exception !== logMeta) {\n Object.assign(exceptionProps, logMeta);\n }\n\n if (this.options.version === 3) {\n this.trackExceptionV3({ exception, properties: exceptionProps });\n } else {\n this.trackExceptionV2({ exception, properties: exceptionProps });\n }\n }\n\n private trackTraceV2(telemetry: TraceTelemetryV2): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV2[]) {\n if (!f.filterTrace(telemetry, this.options.client as TelemetryClientV2)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV2).trackTrace(telemetry);\n }\n\n private trackTraceV3(telemetry: TraceTelemetryV3): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV3[]) {\n if (!f.filterTrace(telemetry, this.options.client as TelemetryClientV3)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV3).trackTrace(telemetry);\n }\n\n private trackExceptionV2(telemetry: ExceptionTelemetryV2): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV2[]) {\n if (!f.filterException(telemetry, this.options.client as TelemetryClientV2)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV2).trackException(telemetry);\n }\n\n private trackExceptionV3(telemetry: ExceptionTelemetryV3): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV3[]) {\n if (!f.filterException(telemetry, this.options.client as TelemetryClientV3)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV3).trackException(telemetry);\n }\n\n override log(info: PlainObject, callback: () => void): void {\n const { level, message } = info;\n const severity = this.getSeverity(level);\n const splat = Reflect.get(info, Symbol.for('splat')) ?? [];\n const logMeta = splat.length ? splat[0] : {};\n\n this.handleTrace(severity, info, message, logMeta);\n\n if (this.sendErrorsAsExceptions && severity >= LogLevel.Error) {\n this.handleException(info, message, logMeta);\n }\n\n callback();\n }\n\n private getSeverity(level: string) {\n return (this.options.levels ?? defaultLogLevels)[level] ?? this.options.defaultLevel;\n }\n}\n","import { createLogger, format, transports } from 'winston';\nimport type TransportStream from 'winston-transport';\nimport type { CreateWinstonLoggerOptions } from './CreateWinstonLoggerOptions';\nimport type { LogLevels } from './types';\nimport { AzureApplicationInsightsLogger } from './winston-azure-application-insights';\n\nconst npmLevels = {\n error: 0,\n warn: 1,\n info: 2,\n http: 3,\n verbose: 4,\n debug: 5,\n silly: 6,\n};\n\nexport const createWinstonLogger = (options: CreateWinstonLoggerOptions) => {\n const level = options.winston.level ?? 'info';\n const levels = options.winston.levels ?? npmLevels;\n\n const _transports: TransportStream[] = [\n new AzureApplicationInsightsLogger({\n ...options.insights,\n defaultLevel: level,\n levels,\n }),\n ];\n\n if (options.winston.console) {\n _transports.push(\n new transports.Console({\n format: format.json(),\n stderrLevels: ['error', 'crit', 'alert', 'emerg'],\n consoleWarnLevels: ['warn', 'warning'],\n }),\n );\n }\n\n const _format = format.combine(...(options.winston.format ?? []), format.json());\n\n return createLogger({\n level,\n levels,\n format: _format,\n transports: _transports,\n defaultMeta: options.winston.defaultMeta,\n });\n};\n","export const isRunningInAzure = () => {\n return process.env.WEBSITE_INSTANCE_ID !== undefined;\n};\n","import { isRunningInAzure } from './isRunningInAzure';\n\nexport const isRunningLocally = () => {\n return !isRunningInAzure();\n};\n"]}
1
+ {"version":3,"sources":["../src/types.ts","../src/logLevels.ts","../src/winston-azure-application-insights.ts","../src/createWinstonLogger.ts","../src/isRunningInAzure.ts","../src/isRunningLocally.ts"],"names":[],"mappings":";;;;AAqDO,IAAe,qBAAf,MAAkC;AAAA,EArDzC;AAqDyC,IAAA,MAAA,CAAA,IAAA,EAAA,oBAAA,CAAA;AAAA;AAAA,EAChC,WAAA,CAAY,OAAyB,MAAA,EAAoC;AAC9E,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EACO,eAAA,CAAgB,OAA6B,MAAA,EAAoC;AACtF,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AACO,IAAe,qBAAf,MAAkC;AAAA,EA7DzC;AA6DyC,IAAA,MAAA,CAAA,IAAA,EAAA,oBAAA,CAAA;AAAA;AAAA,EAChC,WAAA,CAAY,OAAyB,MAAA,EAAoC;AAC9E,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EACO,eAAA,CAAgB,OAA6B,MAAA,EAAoC;AACtF,IAAA,OAAO,IAAA;AAAA,EACT;AACF;;;AClEO,IAAM,gBAAA,GAAmC;AAAA,EAC9C,KAAA,EAAA,CAAA;AAAA,EACA,IAAA,EAAA,CAAA;AAAA,EACA,IAAA,EAAA,CAAA;AAAA,EACA,IAAA,EAAA,CAAA;AAAA,EACA,OAAA,EAAA,CAAA;AAAA,EACA,KAAA,EAAA,CAAA;AAAA,EACA,KAAA,EAAA,CAAA;AACF,CAAA;;;ACHA,IAAM,cAAA,GAAiB;AAAA,EACrB,EAAA,EAAI;AAAA,IACF,mBAAoB,CAAA;AAAA,IACpB,uBAAwB,CAAA;AAAA,IACxB,mBAAoB,CAAA;AAAA,IACpB,iBAAkB,CAAA;AAAA,IAClB,oBAAqB;AAAA,GACvB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,mBAAoB,SAAA;AAAA,IACpB,uBAAwB,aAAA;AAAA,IACxB,mBAAoB,SAAA;AAAA,IACpB,iBAAkB,OAAA;AAAA,IAClB,oBAAqB;AAAA;AAEzB,CAAA;AAEA,IAAM,WAAA,2BAAe,GAAA,KAA+B;AAClD,EAAA,OAAO,GAAA,YAAe,KAAA;AACxB,CAAA,EAFoB,aAAA,CAAA;AAIpB,IAAM,aAAA,2BAAiB,GAAA,KAAqC;AAC1D,EAAA,OAAO,GAAA,KAAQ,QAAQ,OAAO,GAAA,KAAQ,YAAY,MAAA,CAAO,cAAA,CAAe,GAAG,CAAA,KAAM,MAAA,CAAO,SAAA;AAC1F,CAAA,EAFsB,eAAA,CAAA;AAItB,IAAM,oBAAA,2BAAwB,GAAA,KAA0B;AACtD,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,IAAA,OAAO,GAAA;AAAA,EACT;AACA,EAAA,OAAO,cAAc,GAAG,CAAA,GAAI,GAAA,GAAM,EAAE,GAAG,GAAA,EAAI;AAC7C,CAAA,EAL6B,sBAAA,CAAA;AAO7B,IAAM,oBAAA,2BAAwB,IAAA,KAAmC;AAC/D,EAAA,MAAM,OAAA,GAAU,CAAC,OAAA,EAAS,SAAS,CAAA;AAEnC,EAAA,OAAO,OAAO,IAAA,CAAK,IAAI,CAAA,CACpB,MAAA,CAAO,CAAC,GAAA,KAAQ,CAAC,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAC,CAAA,CACtC,MAAA,CAAoB,CAAC,OAAO,GAAA,KAAQ;AACnC,IAAA,KAAA,CAAM,GAAG,CAAA,GAAI,oBAAA,CAAqB,IAAA,CAAK,GAAG,CAAC,CAAA;AAC3C,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,EAAG,EAAE,CAAA;AACT,CAAA,EAT6B,sBAAA,CAAA;AAW7B,IAAM,yBAAA,2BAA6B,SAAA,KAAkC;AACnE,EAAA,MAAM,UAAA,GAA0B;AAAA,IAC9B,SAAS,SAAA,CAAU;AAAA,GACrB;AACA,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,EAAG;AACpD,IAAA,IAAI,GAAA,KAAQ,WAAW,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAK,SAAA,EAAW,GAAG,CAAA,EAAG;AAC3E,MAAA,UAAA,CAAW,GAAG,CAAA,GAAI,oBAAA,CAAqB,KAAK,CAAA;AAAA,IAC9C;AAAA,EACF;AACA,EAAA,OAAO,UAAA;AACT,CAAA,EAVkC,2BAAA,CAAA;AAY3B,IAAM,8BAAA,GAAN,cAA6C,eAAA,CAAgB;AAAA,EAQlE,YAA6B,OAAA,EAAgD;AAC3E,IAAA,KAAA,CAAM,EAAE,OAAO,OAAA,CAAQ,YAAA,IAAgB,QAAQ,MAAA,EAAQ,OAAA,CAAQ,MAAA,IAAU,KAAA,EAAO,CAAA;AADrD,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAE3B,IAAA,IAAA,CAAK,IAAA,GAAO,2BAAA;AACZ,IAAA,IAAA,CAAK,sBAAA,GAAyB,QAAQ,sBAAA,IAA0B,IAAA;AAAA,EAClE;AAAA,EA1EF;AA8DoE,IAAA,MAAA,CAAA,IAAA,EAAA,gCAAA,CAAA;AAAA;AAAA,EAC3D,sBAAA;AAAA,EACE,IAAA;AAAA,EAET,IAAW,MAAA,GAAgD;AACzD,IAAA,OAAO,KAAK,OAAA,CAAQ,MAAA;AAAA,EACtB;AAAA,EAQQ,WAAA,CAAY,QAAA,EAAoB,IAAA,EAAmB,OAAA,EAA6B,OAAA,EAA4B;AAClH,IAAA,MAAM,UAAA,GAAa,qBAAqB,IAAI,CAAA;AAE5C,IAAA,IAAI,WAAA,CAAY,IAAI,CAAA,EAAG;AACrB,MAAA,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY,yBAAA,CAA0B,IAAI,CAAC,CAAA;AAAA,IAC3D;AAEA,IAAA,MAAA,CAAO,MAAA,CAAO,YAAY,OAAO,CAAA;AAEjC,IAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,OAAA,KAAY,CAAA,EAAG;AAC9B,MAAA,MAAM,SAAA,GAA8B;AAAA,QAClC,OAAA,EAAS,OAAO,OAAO,CAAA;AAAA,QACvB,QAAA,EAAU,cAAA,CAAe,EAAA,CAAG,QAAQ,CAAA;AAAA,QACpC,UAAA,EAAY;AAAA,OACd;AACA,MAAA,IAAA,CAAK,aAAa,SAAS,CAAA;AAAA,IAC7B,CAAA,MAAO;AACL,MAAA,MAAM,SAAA,GAA8B;AAAA,QAClC,OAAA,EAAS,OAAO,OAAO,CAAA;AAAA,QACvB,QAAA,EAAU,cAAA,CAAe,EAAA,CAAG,QAAQ,CAAA;AAAA,QACpC,UAAA,EAAY;AAAA,OACd;AACA,MAAA,IAAA,CAAK,aAAa,SAAS,CAAA;AAAA,IAC7B;AAAA,EACF;AAAA,EAEQ,eAAA,CAAgB,IAAA,EAAmB,OAAA,EAA6B,OAAA,EAA4B;AAClG,IAAA,IAAI,SAAA;AAEJ,IAAA,IAAI,WAAA,CAAY,IAAI,CAAA,EAAG;AACrB,MAAA,SAAA,GAAY,IAAA;AAAA,IACd,CAAA,MAAA,IAAW,WAAA,CAAY,OAAO,CAAA,EAAG;AAC/B,MAAA,SAAA,GAAY,OAAA;AAAA,IACd,CAAA,MAAA,IAAW,WAAA,CAAY,OAAO,CAAA,EAAG;AAC/B,MAAA,SAAA,GAAY,OAAA;AAAA,IACd,CAAA,MAAO;AACL,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,iBAA8B,EAAC;AAErC,IAAA,IAAI,OAAO,OAAA,KAAY,QAAA,IAAY,SAAA,CAAU,YAAY,OAAA,EAAS;AAChE,MAAA,cAAA,CAAe,OAAA,GAAU,OAAA;AAAA,IAC3B;AAEA,IAAA,IAAI,cAAc,OAAA,EAAS;AACzB,MAAA,MAAA,CAAO,MAAA,CAAO,gBAAgB,OAAO,CAAA;AAAA,IACvC;AAEA,IAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,OAAA,KAAY,CAAA,EAAG;AAC9B,MAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,SAAA,EAAW,UAAA,EAAY,gBAAgB,CAAA;AAAA,IACjE,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,SAAA,EAAW,UAAA,EAAY,gBAAgB,CAAA;AAAA,IACjE;AAAA,EACF;AAAA,EAEQ,aAAa,SAAA,EAAmC;AACtD,IAAA,KAAA,MAAW,CAAA,IAAM,IAAA,CAAK,OAAA,CAAQ,OAAA,IAAW,EAAC,EAA4B;AACpE,MAAA,IAAI,CAAC,CAAA,CAAE,WAAA,CAAY,WAAW,IAAA,CAAK,OAAA,CAAQ,MAA2B,CAAA,EAAG;AACvE,QAAA;AAAA,MACF;AAAA,IACF;AACA,IAAC,IAAA,CAAK,OAAA,CAAQ,MAAA,CAA6B,UAAA,CAAW,SAAS,CAAA;AAAA,EACjE;AAAA,EAEQ,aAAa,SAAA,EAAmC;AACtD,IAAA,KAAA,MAAW,CAAA,IAAM,IAAA,CAAK,OAAA,CAAQ,OAAA,IAAW,EAAC,EAA4B;AACpE,MAAA,IAAI,CAAC,CAAA,CAAE,WAAA,CAAY,WAAW,IAAA,CAAK,OAAA,CAAQ,MAA2B,CAAA,EAAG;AACvE,QAAA;AAAA,MACF;AAAA,IACF;AACA,IAAC,IAAA,CAAK,OAAA,CAAQ,MAAA,CAA6B,UAAA,CAAW,SAAS,CAAA;AAAA,EACjE;AAAA,EAEQ,iBAAiB,SAAA,EAAuC;AAC9D,IAAA,KAAA,MAAW,CAAA,IAAM,IAAA,CAAK,OAAA,CAAQ,OAAA,IAAW,EAAC,EAA4B;AACpE,MAAA,IAAI,CAAC,CAAA,CAAE,eAAA,CAAgB,WAAW,IAAA,CAAK,OAAA,CAAQ,MAA2B,CAAA,EAAG;AAC3E,QAAA;AAAA,MACF;AAAA,IACF;AACA,IAAC,IAAA,CAAK,OAAA,CAAQ,MAAA,CAA6B,cAAA,CAAe,SAAS,CAAA;AAAA,EACrE;AAAA,EAEQ,iBAAiB,SAAA,EAAuC;AAC9D,IAAA,KAAA,MAAW,CAAA,IAAM,IAAA,CAAK,OAAA,CAAQ,OAAA,IAAW,EAAC,EAA4B;AACpE,MAAA,IAAI,CAAC,CAAA,CAAE,eAAA,CAAgB,WAAW,IAAA,CAAK,OAAA,CAAQ,MAA2B,CAAA,EAAG;AAC3E,QAAA;AAAA,MACF;AAAA,IACF;AACA,IAAC,IAAA,CAAK,OAAA,CAAQ,MAAA,CAA6B,cAAA,CAAe,SAAS,CAAA;AAAA,EACrE;AAAA,EAES,GAAA,CAAI,MAAmB,QAAA,EAA4B;AAC1D,IAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAQ,GAAI,IAAA;AAC3B,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AACvC,IAAA,MAAM,KAAA,GAAQ,QAAQ,GAAA,CAAI,IAAA,EAAM,OAAO,GAAA,CAAI,OAAO,CAAC,CAAA,IAAK,EAAC;AACzD,IAAA,MAAM,UAAU,KAAA,CAAM,MAAA,GAAS,KAAA,CAAM,CAAC,IAAI,EAAC;AAE3C,IAAA,IAAA,CAAK,WAAA,CAAY,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA;AAEjD,IAAA,IAAI,IAAA,CAAK,0BAA0B,QAAA,IAAA,CAAA,cAA4B;AAC7D,MAAA,IAAA,CAAK,eAAA,CAAgB,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA;AAAA,IAC7C;AAEA,IAAA,QAAA,EAAS;AAAA,EACX;AAAA,EAEQ,YAAY,KAAA,EAAe;AACjC,IAAA,OAAA,CAAQ,IAAA,CAAK,QAAQ,MAAA,IAAU,gBAAA,EAAkB,KAAK,CAAA,IAAK,IAAA,CAAK,QAAQ,YAAA,IAAgB,MAAA;AAAA,EAC1F;AACF;;;ACrLA,IAAM,SAAA,GAAY;AAAA,EAChB,KAAA,EAAO,CAAA;AAAA,EACP,IAAA,EAAM,CAAA;AAAA,EACN,IAAA,EAAM,CAAA;AAAA,EACN,IAAA,EAAM,CAAA;AAAA,EACN,OAAA,EAAS,CAAA;AAAA,EACT,KAAA,EAAO,CAAA;AAAA,EACP,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,mBAAA,2BAAuB,OAAA,KAAwC;AAC1E,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,OAAA,CAAQ,KAAA,IAAS,MAAA;AACvC,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,MAAA,IAAU,SAAA;AAEzC,EAAA,MAAM,WAAA,GAAiC;AAAA,IACrC,IAAI,8BAAA,CAA+B;AAAA,MACjC,GAAG,OAAA,CAAQ,QAAA;AAAA,MACX,YAAA,EAAc;AAAA,KACf;AAAA,GACH;AAEA,EAAA,IAAI,OAAA,CAAQ,QAAQ,OAAA,EAAS;AAC3B,IAAA,WAAA,CAAY,IAAA;AAAA,MACV,IAAI,WAAW,OAAA,CAAQ;AAAA,QACrB,MAAA,EAAQ,OAAO,IAAA,EAAK;AAAA,QACpB,YAAA,EAAc,CAAC,OAAA,EAAS,MAAA,EAAQ,SAAS,OAAO,CAAA;AAAA,QAChD,iBAAA,EAAmB,CAAC,MAAA,EAAQ,SAAS;AAAA,OACtC;AAAA,KACH;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,GAAI,OAAA,CAAQ,OAAA,CAAQ,MAAA,IAAU,EAAC,EAAI,MAAA,CAAO,IAAA,EAAM,CAAA;AAE/E,EAAA,OAAO,YAAA,CAAa;AAAA,IAClB,KAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA,EAAQ,OAAA;AAAA,IACR,UAAA,EAAY,WAAA;AAAA,IACZ,WAAA,EAAa,QAAQ,OAAA,CAAQ;AAAA,GAC9B,CAAA;AACH,CAAA,EA9BmC,qBAAA;;;ACf5B,IAAM,mCAAmB,MAAA,CAAA,MAAM;AACpC,EAAA,OAAO,OAAA,CAAQ,IAAI,mBAAA,KAAwB,MAAA;AAC7C,CAAA,EAFgC,kBAAA;;;ACEzB,IAAM,mCAAmB,MAAA,CAAA,MAAM;AACpC,EAAA,OAAO,CAAC,gBAAA,EAAiB;AAC3B,CAAA,EAFgC,kBAAA","file":"index.mjs","sourcesContent":["import type { TelemetryClient as TelemetryClientV2 } from 'applicationinsightsv2';\nimport type { ExceptionTelemetry as ExceptionTelemetryV2, TraceTelemetry as TraceTelemetryV2 } from 'applicationinsightsv2/out/Declarations/Contracts';\nimport type { ExceptionTelemetry as ExceptionTelemetryV3, TelemetryClient as TelemetryClientV3, TraceTelemetry as TraceTelemetryV3 } from 'applicationinsightsv3';\n\nexport type PlainObject = Record<string, any>;\n\nexport type NodeClient = TelemetryClientV2 | TelemetryClientV3;\n\nexport type JsonValue = string | number | JsonObject | JsonValue[] | null;\nexport type JsonObject = {\n [key: string]: JsonValue;\n};\n\nexport type AzureLogLevels = {\n [key: string]: LogLevel;\n};\n\nexport enum LogLevel {\n Verbose = 0,\n Information = 1,\n Warning = 2,\n Error = 3,\n Critical = 4,\n}\n\nexport type AzureInsightsClientOptions =\n | {\n version: 2;\n client: TelemetryClientV2;\n filters?: ITelemetryFilterV2[];\n }\n | {\n version: 3;\n client: TelemetryClientV3;\n filters?: ITelemetryFilterV3[];\n };\n\nexport type FilterTraceArgs = {\n message: string;\n severity: LogLevel;\n properties: PlainObject;\n};\n\nexport type AzureApplicationInsightsLoggerOptionsBase = AzureInsightsClientOptions & {\n silent?: boolean;\n sendErrorsAsExceptions?: boolean;\n};\n\nexport type AzureApplicationInsightsLoggerOptions = AzureApplicationInsightsLoggerOptionsBase & {\n defaultLevel?: string;\n levels?: AzureLogLevels;\n};\n\nexport abstract class ITelemetryFilterV3 {\n public filterTrace(trace: TraceTelemetryV3, client: TelemetryClientV3): boolean {\n return true;\n }\n public filterException(trace: ExceptionTelemetryV3, client: TelemetryClientV3): boolean {\n return true;\n }\n}\nexport abstract class ITelemetryFilterV2 {\n public filterTrace(trace: TraceTelemetryV2, client: TelemetryClientV2): boolean {\n return true;\n }\n public filterException(trace: ExceptionTelemetryV2, client: TelemetryClientV2): boolean {\n return true;\n }\n}\n","import { type AzureLogLevels, LogLevel } from './types';\n\nexport const defaultLogLevels: AzureLogLevels = {\n error: LogLevel.Error,\n warn: LogLevel.Warning,\n http: LogLevel.Information,\n info: LogLevel.Information,\n verbose: LogLevel.Verbose,\n debug: LogLevel.Verbose,\n silly: LogLevel.Verbose,\n};\n","import type { TelemetryClient as TelemetryClientV2 } from 'applicationinsightsv2';\nimport type { ExceptionTelemetry as ExceptionTelemetryV2, SeverityLevel as KnownSeverityLevelV2, TraceTelemetry as TraceTelemetryV2 } from 'applicationinsightsv2/out/Declarations/Contracts';\nimport type { ExceptionTelemetry as ExceptionTelemetryV3, KnownSeverityLevel as KnownSeverityLevelV3, TelemetryClient as TelemetryClientV3, TraceTelemetry as TraceTelemetryV3 } from 'applicationinsightsv3';\nimport TransportStream from 'winston-transport';\nimport { defaultLogLevels } from './logLevels';\nimport { type AzureApplicationInsightsLoggerOptions, type AzureLogLevels, type ITelemetryFilterV2, type ITelemetryFilterV3, LogLevel, type PlainObject } from './types';\n\nconst severityLevels = {\n v2: {\n [LogLevel.Verbose]: 0,\n [LogLevel.Information]: 1,\n [LogLevel.Warning]: 2,\n [LogLevel.Error]: 3,\n [LogLevel.Critical]: 4,\n } satisfies Record<LogLevel, KnownSeverityLevelV2>,\n v3: {\n [LogLevel.Verbose]: 'Verbose' as KnownSeverityLevelV3,\n [LogLevel.Information]: 'Information' as KnownSeverityLevelV3,\n [LogLevel.Warning]: 'Warning' as KnownSeverityLevelV3,\n [LogLevel.Error]: 'Error' as KnownSeverityLevelV3,\n [LogLevel.Critical]: 'Critical' as KnownSeverityLevelV3,\n } satisfies Record<LogLevel, KnownSeverityLevelV3>,\n};\n\nconst isErrorLike = (obj: unknown): obj is Error => {\n return obj instanceof Error;\n};\n\nconst isPlainObject = (obj: unknown): obj is PlainObject => {\n return obj !== null && typeof obj === 'object' && Object.getPrototypeOf(obj) === Object.prototype;\n};\n\nconst convertToPlainObject = (obj: any): PlainObject => {\n if (typeof obj !== 'object') {\n return obj;\n }\n return isPlainObject(obj) ? obj : { ...obj };\n};\n\nconst extractPropsFromInfo = (info: PlainObject): PlainObject => {\n const exclude = ['level', 'message'];\n\n return Object.keys(info)\n .filter((key) => !exclude.includes(key))\n .reduce<PlainObject>((props, key) => {\n props[key] = convertToPlainObject(info[key]);\n return props;\n }, {});\n};\n\nconst extractErrorPropsForTrace = (errorLike: Error): PlainObject => {\n const properties: PlainObject = {\n message: errorLike.message,\n };\n for (const [key, value] of Object.entries(errorLike)) {\n if (key !== 'stack' && Object.prototype.hasOwnProperty.call(errorLike, key)) {\n properties[key] = convertToPlainObject(value);\n }\n }\n return properties;\n};\n\nexport class AzureApplicationInsightsLogger extends TransportStream {\n public sendErrorsAsExceptions: boolean;\n readonly name: string;\n\n public get client(): TelemetryClientV3 | TelemetryClientV2 {\n return this.options.client;\n }\n\n constructor(private readonly options: AzureApplicationInsightsLoggerOptions) {\n super({ level: options.defaultLevel ?? 'info', silent: options.silent ?? false });\n this.name = 'applicationinsightslogger';\n this.sendErrorsAsExceptions = options.sendErrorsAsExceptions ?? true;\n }\n\n private handleTrace(severity: LogLevel, info: PlainObject, message: string | undefined, logMeta: PlainObject): void {\n const traceProps = extractPropsFromInfo(info);\n\n if (isErrorLike(info)) {\n Object.assign(traceProps, extractErrorPropsForTrace(info));\n }\n\n Object.assign(traceProps, logMeta);\n\n if (this.options.version === 3) {\n const telemetry: TraceTelemetryV3 = {\n message: String(message),\n severity: severityLevels.v3[severity],\n properties: traceProps,\n };\n this.trackTraceV3(telemetry);\n } else {\n const telemetry: TraceTelemetryV2 = {\n message: String(message),\n severity: severityLevels.v2[severity],\n properties: traceProps,\n };\n this.trackTraceV2(telemetry);\n }\n }\n\n private handleException(info: PlainObject, message: string | undefined, logMeta: PlainObject): void {\n let exception: Error | undefined;\n\n if (isErrorLike(info)) {\n exception = info;\n } else if (isErrorLike(message)) {\n exception = message as unknown as Error;\n } else if (isErrorLike(logMeta)) {\n exception = logMeta;\n } else {\n return;\n }\n\n const exceptionProps: PlainObject = {};\n\n if (typeof message === 'string' && exception.message !== message) {\n exceptionProps.message = message;\n }\n\n if (exception !== logMeta) {\n Object.assign(exceptionProps, logMeta);\n }\n\n if (this.options.version === 3) {\n this.trackExceptionV3({ exception, properties: exceptionProps });\n } else {\n this.trackExceptionV2({ exception, properties: exceptionProps });\n }\n }\n\n private trackTraceV2(telemetry: TraceTelemetryV2): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV2[]) {\n if (!f.filterTrace(telemetry, this.options.client as TelemetryClientV2)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV2).trackTrace(telemetry);\n }\n\n private trackTraceV3(telemetry: TraceTelemetryV3): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV3[]) {\n if (!f.filterTrace(telemetry, this.options.client as TelemetryClientV3)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV3).trackTrace(telemetry);\n }\n\n private trackExceptionV2(telemetry: ExceptionTelemetryV2): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV2[]) {\n if (!f.filterException(telemetry, this.options.client as TelemetryClientV2)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV2).trackException(telemetry);\n }\n\n private trackExceptionV3(telemetry: ExceptionTelemetryV3): void {\n for (const f of (this.options.filters ?? []) as ITelemetryFilterV3[]) {\n if (!f.filterException(telemetry, this.options.client as TelemetryClientV3)) {\n return;\n }\n }\n (this.options.client as TelemetryClientV3).trackException(telemetry);\n }\n\n override log(info: PlainObject, callback: () => void): void {\n const { level, message } = info;\n const severity = this.getSeverity(level);\n const splat = Reflect.get(info, Symbol.for('splat')) ?? [];\n const logMeta = splat.length ? splat[0] : {};\n\n this.handleTrace(severity, info, message, logMeta);\n\n if (this.sendErrorsAsExceptions && severity >= LogLevel.Error) {\n this.handleException(info, message, logMeta);\n }\n\n callback();\n }\n\n private getSeverity(level: string) {\n return (this.options.levels ?? defaultLogLevels)[level] ?? this.options.defaultLevel ?? 'info';\n }\n}\n","import { createLogger, format, transports } from 'winston';\nimport type TransportStream from 'winston-transport';\nimport type { CreateWinstonLoggerOptions } from './CreateWinstonLoggerOptions';\nimport { AzureApplicationInsightsLogger } from './winston-azure-application-insights';\n\nconst npmLevels = {\n error: 0,\n warn: 1,\n info: 2,\n http: 3,\n verbose: 4,\n debug: 5,\n silly: 6,\n};\n\nexport const createWinstonLogger = (options: CreateWinstonLoggerOptions) => {\n const level = options.winston.level ?? 'info';\n const levels = options.winston.levels ?? npmLevels;\n\n const _transports: TransportStream[] = [\n new AzureApplicationInsightsLogger({\n ...options.insights,\n defaultLevel: level,\n }),\n ];\n\n if (options.winston.console) {\n _transports.push(\n new transports.Console({\n format: format.json(),\n stderrLevels: ['error', 'crit', 'alert', 'emerg'],\n consoleWarnLevels: ['warn', 'warning'],\n }),\n );\n }\n\n const _format = format.combine(...(options.winston.format ?? []), format.json());\n\n return createLogger({\n level,\n levels,\n format: _format,\n transports: _transports,\n defaultMeta: options.winston.defaultMeta,\n });\n};\n","export const isRunningInAzure = () => {\n return process.env.WEBSITE_INSTANCE_ID !== undefined;\n};\n","import { isRunningInAzure } from './isRunningInAzure';\n\nexport const isRunningLocally = () => {\n return !isRunningInAzure();\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shellicar/winston-azure-application-insights",
3
- "version": "5.0.6",
3
+ "version": "5.1.0",
4
4
  "private": false,
5
5
  "description": "Azure Application Insights transport for Winston",
6
6
  "files": [
@@ -44,22 +44,24 @@
44
44
  "license": "MIT",
45
45
  "devDependencies": {
46
46
  "@biomejs/biome": "^1.9.3",
47
- "@types/mocha": "^10.0.8",
48
- "@types/node": "^22.7.4",
49
- "@typescript-eslint/eslint-plugin": "^8.8.0",
50
- "@typescript-eslint/parser": "^8.8.0",
47
+ "@types/node": "^24.1.0",
48
+ "@typescript-eslint/eslint-plugin": "^8.38.0",
49
+ "@typescript-eslint/parser": "^8.38.0",
51
50
  "eslint-config-airbnb-base": "^15.0.0",
52
- "eslint-plugin-import": "^2.31.0",
53
- "globals": "^15.10.0",
54
- "logform": "^2.6.1",
55
- "mocha": "^10.7.3",
56
- "npm-run-all2": "^6.2.3",
57
- "terser": "^5.34.1",
51
+ "eslint-plugin-import": "^2.32.0",
52
+ "globals": "^16.3.0",
53
+ "lefthook": "^1.12.2",
54
+ "logform": "^2.7.0",
55
+ "npm-check-updates": "^18.0.2",
56
+ "npm-run-all2": "^8.0.4",
57
+ "syncpack": "^13.0.4",
58
+ "terser": "^5.43.1",
58
59
  "testdouble": "^3.20.2",
59
- "tsup": "^8.3.0",
60
- "tsx": "^4.19.1",
61
- "typescript": "^5.6.2",
62
- "winston": "^3.15.0"
60
+ "tsup": "^8.5.0",
61
+ "tsx": "^4.20.3",
62
+ "typescript": "^5.9.2",
63
+ "vitest": "^3.2.4",
64
+ "winston": "^3.17.0"
63
65
  },
64
66
  "optionalDependencies": {
65
67
  "applicationinsightsv2": "npm:applicationinsights@^2",
@@ -74,7 +76,7 @@
74
76
  "winston-transport": "^4.0.0"
75
77
  },
76
78
  "dependencies": {
77
- "winston-transport": "^4.8.0"
79
+ "winston-transport": "^4.9.0"
78
80
  },
79
81
  "scripts": {
80
82
  "demo": "tsx demo.ts",
@@ -85,6 +87,11 @@
85
87
  "check": "biome check",
86
88
  "ci": "biome ci --diagnostic-level=error",
87
89
  "ci:fix": "biome check --diagnostic-level=error --fix",
88
- "test": "mocha"
90
+ "test": "vitest run",
91
+ "list-mismatches": "syncpack list-mismatches",
92
+ "fix-mismatches": "syncpack fix-mismatches",
93
+ "updates": "npm-check-updates",
94
+ "postinstall": "lefthook install",
95
+ "verify-version": "./scripts/verify-version.sh"
89
96
  }
90
97
  }