echo-base
Everything a Echo web need for enabling micro frontend development.
This library was generated with Nx.
How to develop and release EchoCore
Check the readme in the NX libraries folder.
Available NPM scripts
lint-base
build-base
test-base
What's new
v0.7.0:
- Moved to Monorepo
- Updated some Typescript Types: they caused build errors with the Monorepo setup
v0.6.0:
- Fixed error reporting to application insights, it now properly reports all properties including innerErrorsProperties.
- Fixed
baseError
, it now properly supports nested innerErrors. Exception/inner Error used to overwrite each others property if they had the same name. BaseError
now has errorTraceId, either from backEnd, or a unique frontEnd idBaseError
helper methods added for getting properties or propertyByName
It's recommended to create your own error types, extending BaseError, and decorate it with your own fields:
export class PdfError extends BaseError {
docNo: string;
constructor(args: { message: string; docNo: string; innerError?: Error }) {
super({ name: 'PdfError', message: args.message, innerError: args.innerError });
this.docNo = args.docNo;
}
}
Breaking Changes
v0.6.0:
- Renamed
initializeError
to initializeNetworkError
and simplified it. It now only takes NetworkErrorArgs
as argument. BaseError
now properly support nested (and nested-nested) errors with argument innerError
.
Earlier properties with the same name would overwrite each other.
exception
argument renamed to innerError
, of type Record<string, unknown> | Error
BaseError
doesn't add properties directly onto itself anymore, but uses nested errors with argument innerError
.- Instead of
BaseError.allProperties()["someCustomProperty"]
use BaseError.findPropertyByName("someCustomProperty")
. Since we now use innerError
of type Error
or Record<string, unknown>, the property has been moved from baseError[property] to baseError.innerError[property]. - Moved
EchoEvents
enum to EchoCore
. - Changed types for
EventHub
event keys in all functions from string | EchoEvents
to string
only.
v0.5.0:
- SubClasses of BaseError will not get the name of the class automatically anymore, but have to specify it. This to avoid name obfuscation/minify to a single letter in appInsight.
Example implementation:
export class CustomError extends BaseError {
constructor(args: ErrorArgs) {
super({ ...args, name: 'CustomError' });
}
}