diff --git a/docs/docs/docs/01-core/data-transfer/01-engine.md b/docs/docs/docs/01-core/data-transfer/01-engine.md index 3a323a8908..c7d4720036 100644 --- a/docs/docs/docs/01-core/data-transfer/01-engine.md +++ b/docs/docs/docs/01-core/data-transfer/01-engine.md @@ -197,9 +197,27 @@ The following events are available: ### Diagnostics events -`engine.diagnostics.onDiagnostic(formatDiagnostic('export'));` +The engine includes a diagnostics reporter which can be used to listen for diagnostics information (debug messages, errors, etc). -**TODO** +Here is an example for creating a diagnostics listener: + +``` +// your listener +engine.diagnostics.onDiagnostic(async (data: GenericDiagnostic) => { + // handle the diagnostics, for example with custom logging +}); + +// engine/diagnostics.ts - format of the data sent to the listener +export type GenericDiagnostic = { + kind: K; + details: { + message: string; + createdAt: Date; + } & T; +}; + +export type DiagnosticKind = 'error' | 'warning' | 'info'; +``` ### Transforms diff --git a/packages/core/data-transfer/src/engine/diagnostic.ts b/packages/core/data-transfer/src/engine/diagnostic.ts index 7f303d9ab2..7aa7dfdecb 100644 --- a/packages/core/data-transfer/src/engine/diagnostic.ts +++ b/packages/core/data-transfer/src/engine/diagnostic.ts @@ -15,7 +15,7 @@ export type GenericDiagnostic = { export type DiagnosticKind = 'error' | 'warning' | 'info'; export type DiagnosticListener = ( - diagnostic: { kind: T } & Diagnostic extends infer U ? U : 'foo' + diagnostic: { kind: T } & Diagnostic extends infer U ? U : never ) => void | Promise; export type DiagnosticEvent = 'diagnostic' | `diagnostic.${DiagnosticKind}`;