@hg-ts/exception 0.7.19 → 0.7.20

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.
@@ -1,4 +1,3 @@
1
- import { inspect, InspectOptionsStylized } from 'util';
2
1
  export type JSONBaseException = {
3
2
  name: string;
4
3
  code: Nullable<number>;
@@ -11,6 +10,10 @@ export type ExceptionOptions = {
11
10
  code?: number | undefined;
12
11
  };
13
12
  export declare const PAD_COUNT_PER_DEPTH = 4;
13
+ declare const NODE_INSPECT_CUSTOM_SYMBOL: unique symbol;
14
+ type InspectOptionsLike = {
15
+ stylize?(value: string, styleType: string): string;
16
+ };
14
17
  export declare abstract class BaseException extends Error {
15
18
  readonly code: Nullable<number>;
16
19
  readonly stack: string;
@@ -21,7 +24,7 @@ export declare abstract class BaseException extends Error {
21
24
  get name(): string;
22
25
  toJSON(): JSONBaseException;
23
26
  toString(padCount?: number): string;
24
- [inspect.custom](_depth: Nullable<number>, { stylize }: InspectOptionsStylized): string;
27
+ [NODE_INSPECT_CUSTOM_SYMBOL](_depth: Nullable<number>, options?: InspectOptionsLike): string;
25
28
  isFromNextTick(): boolean;
26
29
  isFromImmediate(): boolean;
27
30
  isFromTimer(): boolean;
@@ -31,5 +34,7 @@ export declare abstract class BaseException extends Error {
31
34
  protected injectBeforeStack(padCount: number): string[];
32
35
  protected static padLine(line: string, padCount: number): string;
33
36
  private getLastStackLine;
37
+ private captureStackTrace;
34
38
  }
39
+ export {};
35
40
  //# sourceMappingURL=base.exception.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.exception.d.ts","sourceRoot":"","sources":["../../src/exceptions/base.exception.ts"],"names":[],"mappings":"AACA,OAAO,EACN,OAAO,EACP,sBAAsB,EACtB,MAAM,MAAM,CAAC;AAKd,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,8BAAsB,aAAc,SAAQ,KAAK;IAChD,SAAgB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAC9C,SAAyB,KAAK,EAAE,MAAM,CAAC;IACvC,SAAyB,OAAO,EAAE,MAAM,CAAC;IACzC,SAAyB,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAqC;gBAEpC,OAAO,EAAE,MAAM,EAAE,aAAa,GAAE,gBAAqB;IAexE,IAAoB,IAAI,IAAI,MAAM,CAIjC;IAEM,MAAM,IAAI,iBAAiB;IAmBlB,QAAQ,CAAC,QAAQ,SAAsB,GAAG,MAAM;IAczD,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,sBAAsB,GAAG,MAAM;IAIvF,cAAc,IAAI,OAAO;IAMzB,eAAe,IAAI,OAAO;IAM1B,WAAW,IAAI,OAAO;WAMf,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa;IAIpD,SAAS,CAAC,OAAO,IAAI,QAAQ;IAI7B,SAAS,CAAC,qBAAqB,IAAI,MAAM;IAMzC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAQvD,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIhE,OAAO,CAAC,gBAAgB;CAKxB"}
1
+ {"version":3,"file":"base.exception.d.ts","sourceRoot":"","sources":["../../src/exceptions/base.exception.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,QAAA,MAAM,0BAA0B,eAA2C,CAAC;AAE5E,KAAK,kBAAkB,GAAG;IACzB,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CACnD,CAAC;AAEF,8BAAsB,aAAc,SAAQ,KAAK;IAChD,SAAgB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAC9C,SAAyB,KAAK,EAAE,MAAM,CAAC;IACvC,SAAyB,OAAO,EAAE,MAAM,CAAC;IACzC,SAAyB,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAqC;gBAEpC,OAAO,EAAE,MAAM,EAAE,aAAa,GAAE,gBAAqB;IAexE,IAAoB,IAAI,IAAI,MAAM,CAIjC;IAEM,MAAM,IAAI,iBAAiB;IAmBlB,QAAQ,CAAC,QAAQ,SAAsB,GAAG,MAAM;IAazD,CAAC,0BAA0B,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM;IAI5F,cAAc,IAAI,OAAO;IAMzB,eAAe,IAAI,OAAO;IAM1B,WAAW,IAAI,OAAO;WAMf,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa;IAIpD,SAAS,CAAC,OAAO,IAAI,QAAQ;IAI7B,SAAS,CAAC,qBAAqB,IAAI,MAAM;IAMzC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAQvD,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIhE,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,iBAAiB;CASzB"}
@@ -1,8 +1,8 @@
1
- import * as os from 'os';
2
- import { inspect, } from 'util';
3
1
  import { StackTraceFormatter } from '../utils/index.js';
4
2
  import { ErrorException } from './error.exception.js';
5
3
  export const PAD_COUNT_PER_DEPTH = 4;
4
+ const STACK_LINE_SEPARATOR = '\n';
5
+ const NODE_INSPECT_CUSTOM_SYMBOL = Symbol.for('nodejs.util.inspect.custom');
6
6
  export class BaseException extends Error {
7
7
  code = null;
8
8
  stack;
@@ -18,7 +18,7 @@ export class BaseException extends Error {
18
18
  if (codeOrOptions.code) {
19
19
  this.code = codeOrOptions.code;
20
20
  }
21
- Error.captureStackTrace(this, this.getCtor());
21
+ this.captureStackTrace();
22
22
  }
23
23
  get name() {
24
24
  const { name } = this.getCtor();
@@ -47,10 +47,10 @@ export class BaseException extends Error {
47
47
  ...this.injectBeforeStack(padCount + PAD_COUNT_PER_DEPTH),
48
48
  ...formattedStack,
49
49
  ];
50
- return errorLines.join(os.EOL);
50
+ return errorLines.join(STACK_LINE_SEPARATOR);
51
51
  }
52
- [inspect.custom](_depth, { stylize }) {
53
- return stylize(this.toString(), 'regexp');
52
+ [NODE_INSPECT_CUSTOM_SYMBOL](_depth, options) {
53
+ return options?.stylize?.(this.toString(), 'regexp') ?? this.toString();
54
54
  }
55
55
  isFromNextTick() {
56
56
  const lastLine = this.getLastStackLine();
@@ -87,5 +87,12 @@ export class BaseException extends Error {
87
87
  const { stack } = this.toJSON();
88
88
  return stack[stack.length - 1] ?? '';
89
89
  }
90
+ captureStackTrace() {
91
+ if (typeof Error.captureStackTrace === 'function') {
92
+ Error.captureStackTrace(this, this.getCtor());
93
+ return;
94
+ }
95
+ Object.assign(this, { stack: new Error(this.message).stack ?? `${this.name}: ${this.message}` });
96
+ }
90
97
  }
91
98
  //# sourceMappingURL=base.exception.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.exception.js","sourceRoot":"","sources":["../../src/exceptions/base.exception.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.exception.js","sourceRoot":"","sources":["../../src/exceptions/base.exception.ts"],"names":[],"mappings":"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"}
@@ -8,5 +8,7 @@ export declare class SerializationTestSuite extends Suite {
8
8
  isFromImmediateTest(): Promise<void>;
9
9
  fromTimeoutTest(): Promise<void>;
10
10
  fromIntervalTest(): Promise<void>;
11
+ shouldWorkWithoutCaptureStackTrace(): Promise<void>;
12
+ shouldSplitStackWithLfSeparator(): Promise<void>;
11
13
  }
12
14
  //# sourceMappingURL=serialization.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialization.test.d.ts","sourceRoot":"","sources":["../../src/tests/serialization.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,EAEL,MAAM,cAAc,CAAC;AAStB,qBACa,sBAAuB,SAAQ,KAAK;IAEnC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAevC,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBvC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYnC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYpC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAYhC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAY9C"}
1
+ {"version":3,"file":"serialization.test.d.ts","sourceRoot":"","sources":["../../src/tests/serialization.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,EAEL,MAAM,cAAc,CAAC;AAStB,qBACa,sBAAuB,SAAQ,KAAK;IAEnC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAevC,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBvC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYnC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYpC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAYhC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC,kCAAkC,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBnD,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;CAe7D"}
@@ -82,6 +82,32 @@ let SerializationTestSuite = class SerializationTestSuite extends Suite {
82
82
  }, 0);
83
83
  });
84
84
  }
85
+ async shouldWorkWithoutCaptureStackTrace() {
86
+ const originalCaptureStackTrace = Error.captureStackTrace;
87
+ try {
88
+ Reflect.set(Error, 'captureStackTrace', undefined);
89
+ const exception = new TestException('Browser compatible message');
90
+ expect(exception.message).toEqual('Browser compatible message');
91
+ expect(exception.toJSON().stack).toBeInstanceOf(Array);
92
+ expect(exception.toJSON().stack).not.toEqual([]);
93
+ }
94
+ finally {
95
+ Reflect.set(Error, 'captureStackTrace', originalCaptureStackTrace);
96
+ }
97
+ }
98
+ async shouldSplitStackWithLfSeparator() {
99
+ const stack = [
100
+ 'TestException: Test message',
101
+ 'at new TestException (/test/exception.ts:1:1)',
102
+ 'at browserHandler (/test/browser.ts:2:2)',
103
+ ].join('\n');
104
+ const exception = BaseException.fromError({
105
+ message: 'Test message',
106
+ name: 'Error',
107
+ stack,
108
+ });
109
+ expect(exception.toJSON().stack).toContain('at browserHandler (/test/browser.ts:2:2)');
110
+ }
85
111
  };
86
112
  __decorate([
87
113
  Test(),
@@ -131,6 +157,18 @@ __decorate([
131
157
  __metadata("design:paramtypes", []),
132
158
  __metadata("design:returntype", Promise)
133
159
  ], SerializationTestSuite.prototype, "fromIntervalTest", null);
160
+ __decorate([
161
+ Test(),
162
+ __metadata("design:type", Function),
163
+ __metadata("design:paramtypes", []),
164
+ __metadata("design:returntype", Promise)
165
+ ], SerializationTestSuite.prototype, "shouldWorkWithoutCaptureStackTrace", null);
166
+ __decorate([
167
+ Test(),
168
+ __metadata("design:type", Function),
169
+ __metadata("design:paramtypes", []),
170
+ __metadata("design:returntype", Promise)
171
+ ], SerializationTestSuite.prototype, "shouldSplitStackWithLfSeparator", null);
134
172
  SerializationTestSuite = __decorate([
135
173
  Describe()
136
174
  ], SerializationTestSuite);
@@ -1 +1 @@
1
- {"version":3,"file":"serialization.test.js","sourceRoot":"","sources":["../../src/tests/serialization.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serialization.test.js","sourceRoot":"","sources":["../../src/tests/serialization.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stack-trace.formatter.d.ts","sourceRoot":"","sources":["../../src/utils/stack-trace.formatter.ts"],"names":[],"mappings":"AAGA,qBAAa,mBAAmB;WACjB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE;IAIpE,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE;IAkB9E,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG3D"}
1
+ {"version":3,"file":"stack-trace.formatter.d.ts","sourceRoot":"","sources":["../../src/utils/stack-trace.formatter.ts"],"names":[],"mappings":"AAEA,qBAAa,mBAAmB;WACjB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE;IAIpE,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE;IAkB9E,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG3D"}
@@ -1,11 +1,10 @@
1
- import os from 'os';
2
1
  import { SOURCE_MAP_ENABLED } from '../consts.js';
3
2
  export class StackTraceFormatter {
4
3
  static format(stack, exceptionName) {
5
4
  return StackTraceFormatter.getStackLines(stack, exceptionName);
6
5
  }
7
6
  static getStackLines(stack, exceptionName) {
8
- let lines = stack.split(os.EOL)
7
+ let lines = stack.split(/\r?\n/u)
9
8
  .splice(1)
10
9
  .filter(stackLine => !StackTraceFormatter.isInternalStackLine(stackLine))
11
10
  .map(line => line.trim());
@@ -1 +1 @@
1
- {"version":3,"file":"stack-trace.formatter.js","sourceRoot":"","sources":["../../src/utils/stack-trace.formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,OAAO,mBAAmB;IACxB,MAAM,CAAC,MAAM,CAAC,KAAa,EAAE,aAAqB;QACxD,OAAO,mBAAmB,CAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAChE,CAAC;IAES,MAAM,CAAC,aAAa,CAAC,KAAa,EAAE,aAAqB;QAClE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;aAC7B,MAAM,CAAC,CAAC,CAAC;aACT,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;aACxE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3B,IAAI,kBAAkB,EAAE,CAAC;YACxB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,4BAA4B,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,aAAa,EAAE,CAAC,CAAC,CAAC;QAEzG,IAAI,4BAA4B,GAAG,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC,KAAK,CAAC,4BAA4B,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAES,MAAM,CAAC,mBAAmB,CAAC,IAAY;QAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAClF,CAAC;CACD"}
1
+ {"version":3,"file":"stack-trace.formatter.js","sourceRoot":"","sources":["../../src/utils/stack-trace.formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,OAAO,mBAAmB;IACxB,MAAM,CAAC,MAAM,CAAC,KAAa,EAAE,aAAqB;QACxD,OAAO,mBAAmB,CAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAChE,CAAC;IAES,MAAM,CAAC,aAAa,CAAC,KAAa,EAAE,aAAqB;QAClE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;aAC/B,MAAM,CAAC,CAAC,CAAC;aACT,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;aACxE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3B,IAAI,kBAAkB,EAAE,CAAC;YACxB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,4BAA4B,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,aAAa,EAAE,CAAC,CAAC,CAAC;QAEzG,IAAI,4BAA4B,GAAG,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC,KAAK,CAAC,4BAA4B,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAES,MAAM,CAAC,mBAAmB,CAAC,IAAY;QAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAClF,CAAC;CACD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hg-ts/exception",
3
- "version": "0.7.19",
3
+ "version": "0.7.20",
4
4
  "main": "dist/index.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -18,10 +18,10 @@
18
18
  "test:dev": "vitest watch"
19
19
  },
20
20
  "devDependencies": {
21
- "@hg-ts-config/typescript": "0.7.19",
22
- "@hg-ts/linter": "0.7.19",
23
- "@hg-ts/tests": "0.7.19",
24
- "@hg-ts/types": "0.7.19",
21
+ "@hg-ts-config/typescript": "0.7.20",
22
+ "@hg-ts/linter": "0.7.20",
23
+ "@hg-ts/tests": "0.7.20",
24
+ "@hg-ts/types": "0.7.20",
25
25
  "@types/node": "22.19.1",
26
26
  "@vitest/coverage-v8": "4.0.14",
27
27
  "eslint": "9.18.0",
@@ -1,9 +1,3 @@
1
- import * as os from 'os';
2
- import {
3
- inspect,
4
- InspectOptionsStylized,
5
- } from 'util';
6
-
7
1
  import { StackTraceFormatter } from '../utils/index.js';
8
2
  import { ErrorException } from './error.exception.js';
9
3
 
@@ -21,6 +15,12 @@ export type ExceptionOptions = {
21
15
  };
22
16
 
23
17
  export const PAD_COUNT_PER_DEPTH = 4;
18
+ const STACK_LINE_SEPARATOR = '\n';
19
+ const NODE_INSPECT_CUSTOM_SYMBOL = Symbol.for('nodejs.util.inspect.custom');
20
+
21
+ type InspectOptionsLike = {
22
+ stylize?(value: string, styleType: string): string;
23
+ };
24
24
 
25
25
  export abstract class BaseException extends Error {
26
26
  public readonly code: Nullable<number> = null;
@@ -41,7 +41,7 @@ export abstract class BaseException extends Error {
41
41
  this.code = codeOrOptions.code;
42
42
  }
43
43
 
44
- Error.captureStackTrace(this, this.getCtor());
44
+ this.captureStackTrace();
45
45
  }
46
46
 
47
47
  public override get name(): string {
@@ -79,12 +79,11 @@ export abstract class BaseException extends Error {
79
79
  ...formattedStack,
80
80
  ];
81
81
 
82
- return errorLines.join(os.EOL);
82
+ return errorLines.join(STACK_LINE_SEPARATOR);
83
83
  }
84
84
 
85
- // eslint-disable-next-line @typescript/unbound-method
86
- public [inspect.custom](_depth: Nullable<number>, { stylize }: InspectOptionsStylized): string {
87
- return stylize(this.toString(), 'regexp');
85
+ public [NODE_INSPECT_CUSTOM_SYMBOL](_depth: Nullable<number>, options?: InspectOptionsLike): string {
86
+ return options?.stylize?.(this.toString(), 'regexp') ?? this.toString();
88
87
  }
89
88
 
90
89
  public isFromNextTick(): boolean {
@@ -136,4 +135,14 @@ export abstract class BaseException extends Error {
136
135
 
137
136
  return stack[stack.length - 1] ?? '';
138
137
  }
138
+
139
+ private captureStackTrace(): void {
140
+ if (typeof Error.captureStackTrace === 'function') {
141
+ Error.captureStackTrace(this, this.getCtor());
142
+
143
+ return;
144
+ }
145
+
146
+ Object.assign(this, { stack: new Error(this.message).stack ?? `${this.name}: ${this.message}` });
147
+ }
139
148
  }
@@ -117,4 +117,40 @@ export class SerializationTestSuite extends Suite {
117
117
  }, 0);
118
118
  });
119
119
  }
120
+
121
+ @Test()
122
+ public async shouldWorkWithoutCaptureStackTrace(): Promise<void> {
123
+ // eslint-disable-next-line @typescript/unbound-method
124
+ const originalCaptureStackTrace = Error.captureStackTrace;
125
+
126
+ try {
127
+ // eslint-disable-next-line no-undefined
128
+ Reflect.set(Error, 'captureStackTrace', undefined);
129
+
130
+ const exception = new TestException('Browser compatible message');
131
+
132
+ expect(exception.message).toEqual('Browser compatible message');
133
+ expect(exception.toJSON().stack).toBeInstanceOf(Array);
134
+ expect(exception.toJSON().stack).not.toEqual([]);
135
+ } finally {
136
+ Reflect.set(Error, 'captureStackTrace', originalCaptureStackTrace);
137
+ }
138
+ }
139
+
140
+ @Test()
141
+ public async shouldSplitStackWithLfSeparator(): Promise<void> {
142
+ const stack = [
143
+ 'TestException: Test message',
144
+ 'at new TestException (/test/exception.ts:1:1)',
145
+ 'at browserHandler (/test/browser.ts:2:2)',
146
+ ].join('\n');
147
+
148
+ const exception = BaseException.fromError({
149
+ message: 'Test message',
150
+ name: 'Error',
151
+ stack,
152
+ } as Error);
153
+
154
+ expect(exception.toJSON().stack).toContain('at browserHandler (/test/browser.ts:2:2)');
155
+ }
120
156
  }
@@ -1,4 +1,3 @@
1
- import os from 'os';
2
1
  import { SOURCE_MAP_ENABLED } from '../consts.js';
3
2
 
4
3
  export class StackTraceFormatter {
@@ -7,7 +6,7 @@ export class StackTraceFormatter {
7
6
  }
8
7
 
9
8
  protected static getStackLines(stack: string, exceptionName: string): string[] {
10
- let lines = stack.split(os.EOL)
9
+ let lines = stack.split(/\r?\n/u)
11
10
  .splice(1)
12
11
  .filter(stackLine => !StackTraceFormatter.isInternalStackLine(stackLine))
13
12
  .map(line => line.trim());