@dxos/errors 0.8.4-main.d05673bc65 → 0.8.4-main.e00bdcdb52

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/errors",
3
- "version": "0.8.4-main.d05673bc65",
3
+ "version": "0.8.4-main.e00bdcdb52",
4
4
  "description": "Error definitions",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -21,9 +21,6 @@
21
21
  }
22
22
  },
23
23
  "types": "dist/types/src/index.d.ts",
24
- "typesVersions": {
25
- "*": {}
26
- },
27
24
  "files": [
28
25
  "dist",
29
26
  "src"
package/src/base.ts CHANGED
@@ -60,10 +60,16 @@ export class BaseError<Name extends string = string> extends Error {
60
60
  context: Record<string, unknown>;
61
61
 
62
62
  constructor(name: Name, options?: BaseErrorOptions) {
63
- super(options?.message, { cause: options?.cause });
63
+ let message = options?.message;
64
+ if (message && options?.context && Object.keys(options.context).length > 0) {
65
+ message += `: ${JSON.stringify(options?.context)}`;
66
+ }
67
+
68
+ super(message, { cause: options?.cause });
64
69
 
65
70
  this.name = name;
66
71
  this.context = options?.context ?? {};
72
+
67
73
  Object.setPrototypeOf(this, new.target.prototype);
68
74
  }
69
75
 
@@ -2,25 +2,25 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { describe, expect, test } from 'vitest';
5
+ import { describe, test } from 'vitest';
6
6
 
7
7
  import { BaseError, type BaseErrorOptions } from './base';
8
8
  import { SystemError } from './errors';
9
9
 
10
10
  describe('errors', () => {
11
- test('error code and message, cause', () => {
11
+ test('error code and message, cause', ({ expect }) => {
12
12
  const error = new SystemError({ message: 'Test message', cause: new Error('Test cause'), context: { a: 1, b: 2 } });
13
13
  expect(error).toBeInstanceOf(SystemError);
14
14
  expect(error).toBeInstanceOf(SystemError);
15
15
  expect(error.name).toBe(SystemError.name);
16
16
  expect(error._tag).toBe(SystemError.name);
17
- expect(error.message).toBe('Test message');
17
+ expect(error.message).toBe('Test message: {"a":1,"b":2}');
18
18
  expect(error.cause).toBeInstanceOf(Error);
19
19
  expect((error.cause as Error).message).toBe('Test cause');
20
20
  expect(error.context).toEqual({ a: 1, b: 2 });
21
21
  });
22
22
 
23
- test('error formatting', () => {
23
+ test('error formatting', ({ expect }) => {
24
24
  try {
25
25
  throwError();
26
26
  expect.fail('Expected error to be thrown');
@@ -34,7 +34,7 @@ describe('errors', () => {
34
34
  }
35
35
  });
36
36
 
37
- test('custom message', () => {
37
+ test('custom message', ({ expect }) => {
38
38
  class CustomError extends BaseError.extend('CustomError', 'Custom message') {
39
39
  constructor(value: number, options?: Omit<BaseErrorOptions, 'context'>) {
40
40
  super({ context: { value }, ...options });
@@ -43,11 +43,11 @@ describe('errors', () => {
43
43
 
44
44
  const error = new CustomError(1);
45
45
  expect(error).toBeInstanceOf(CustomError);
46
- expect(error.message).toBe('Custom message');
46
+ expect(error.message).toBe('Custom message: {"value":1}');
47
47
  expect(error.context).toEqual({ value: 1 });
48
48
  });
49
49
 
50
- test('is', () => {
50
+ test('is', ({ expect }) => {
51
51
  const error = new SystemError({ message: 'Test message' });
52
52
  expect(SystemError.is(error)).toBe(true);
53
53
  });