Panenco / papi

MIT License
2 stars 0 forks source link

Fix/errors #25

Closed doichev-kostia closed 1 year ago

doichev-kostia commented 1 year ago

Proposed changes

According to #24, I fixed the inheritance and the stack traces problem

doichev-kostia commented 1 year ago

Test file

import { ErrorBase, NotFound, StatusCode } from 'contracts';

const e1 = new ErrorBase(StatusCode.badRequest, 'badRequest', 'Bad request');
console.log({ e1InstanceOfError: e1 instanceof Error, e1InstanceOfErrorBase: e1 instanceof ErrorBase });

const e2 = new NotFound('notFound', 'Not found');

console.log({
  e2InstanceOfError: e2 instanceof Error,
  e2InstanceOfErrorBase: e2 instanceof ErrorBase,
  e2InstanceOfNotFound: e2 instanceof NotFound,
});

function a() {
  throw new NotFound('notFound', 'Not found');
}

function b() {
  a();
}

function c() {
  b();
}

try {
  c();
} catch (error) {
  if (error instanceof NotFound) {
    console.log('error is NotFound');
  }
  if (error instanceof ErrorBase) {
    console.log('error is ErrorBase');
  }
  if (error instanceof Error) {
    console.log('error is Error');
  }

  console.log({ error });
  console.error(error);
}

Output

{ e1InstanceOfError: true, e1InstanceOfErrorBase: true }
{
  e2InstanceOfError: true,
  e2InstanceOfErrorBase: true,
  e2InstanceOfNotFound: true
}
error is NotFound
error is ErrorBase
error is Error
{
  error: NotFound: Not found
      at a (/Users/panenco/work/papi/src/test.ts:15:9)
      at b (/Users/panenco/work/papi/src/test.ts:19:3)
      at c (/Users/panenco/work/papi/src/test.ts:23:3)
      at <anonymous> (/Users/panenco/work/papi/src/test.ts:27:3)
      at Object.<anonymous> (/Users/panenco/work/papi/src/test.ts:41:1)
      at Module._compile (node:internal/modules/cjs/loader:1256:14)
      at Object.F (/Users/panenco/Library/pnpm/global/5/.pnpm/@esbuild-kit+cjs-loader@2.4.2/node_modules/@esbuild-kit/cjs-loader/dist/index.js:1:941)
      at Module.load (node:internal/modules/cjs/loader:1119:32)
      at Module._load (node:internal/modules/cjs/loader:960:12)
      at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:169:29) {
    code: 404,
    reason: 'notFound',
    payload: undefined
  }
}
NotFound: Not found
    at a (/Users/panenco/work/papi/src/test.ts:15:9)
    at b (/Users/panenco/work/papi/src/test.ts:19:3)
    at c (/Users/panenco/work/papi/src/test.ts:23:3)
    at <anonymous> (/Users/panenco/work/papi/src/test.ts:27:3)
    at Object.<anonymous> (/Users/panenco/work/papi/src/test.ts:41:1)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Object.F (/Users/panenco/Library/pnpm/global/5/.pnpm/@esbuild-kit+cjs-loader@2.4.2/node_modules/@esbuild-kit/cjs-loader/dist/index.js:1:941)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Module._load (node:internal/modules/cjs/loader:960:12)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:169:29) {
  code: 404,
  reason: 'notFound',
  payload: undefined
}
github-actions[bot] commented 1 year ago

=============================== Coverage summary ===============================
Statements   : 93.58% ( 321/343 )
Branches     : 74.84% ( 122/163 )
Functions    : 88.23% ( 75/85 )
Lines        : 93.89% ( 277/295 )
================================================================================