tftsr-devops_investigation/node_modules/check-error/README.md
Shaun Arman 8839075805 feat: initial implementation of TFTSR IT Triage & RCA application
Implements Phases 1-8 of the TFTSR implementation plan.

Rust backend (Tauri 2.x, src-tauri/):
- Multi-provider AI: OpenAI-compatible, Anthropic, Gemini, Mistral, Ollama
- PII detection engine: 11 regex patterns with overlap resolution
- SQLCipher AES-256 encrypted database with 10 versioned migrations
- 28 Tauri IPC commands for triage, analysis, document, and system ops
- Ollama: hardware probe, model recommendations, pull/delete with events
- RCA and blameless post-mortem Markdown document generators
- PDF export via printpdf
- Audit log: SHA-256 hash of every external data send
- Integration stubs for Confluence, ServiceNow, Azure DevOps (v0.2)

Frontend (React 18 + TypeScript + Vite, src/):
- 9 pages: full triage workflow NewIssue→LogUpload→Triage→Resolution→RCA→Postmortem→History+Settings
- 7 components: ChatWindow, TriageProgress, PiiDiffViewer, DocEditor, HardwareReport, ModelSelector, UI primitives
- 3 Zustand stores: session, settings (persisted), history
- Type-safe tauriCommands.ts matching Rust backend types exactly
- 8 IT domain system prompts (Linux, Windows, Network, K8s, DB, Virt, HW, Obs)

DevOps:
- .woodpecker/test.yml: rustfmt, clippy, cargo test, tsc, vitest on every push
- .woodpecker/release.yml: linux/amd64 + linux/arm64 builds, Gogs release upload

Verified:
- cargo check: zero errors
- tsc --noEmit: zero errors
- vitest run: 13/13 unit tests passing

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:36:25 -05:00

4.0 KiB

ChaiJS
check-error

Error comparison and information related utility for node and the browser.

What is Check-Error?

Check-Error is a module which you can use to retrieve an Error's information such as its message or constructor name and also to check whether two Errors are compatible based on their messages, constructors or even instances.

Installation

Node.js

check-error is available on npm. To install it, type:

$ npm install check-error

Browsers

You can also use it within the browser; install via npm and use the check-error.js file found within the download. For example:

<script src="./node_modules/check-error/check-error.js"></script>

Usage

The primary export of check-error is an object which has the following methods:

  • compatibleInstance(err, errorLike) - Checks if an error is compatible with another errorLike object. If errorLike is an error instance we do a strict comparison, otherwise we return false by default, because instances of objects can only be compatible if they're both error instances.
  • compatibleConstructor(err, errorLike) - Checks if an error's constructor is compatible with another errorLike object. If err has the same constructor as errorLike or if err is an instance of errorLike.
  • compatibleMessage(err, errMatcher) - Checks if an error message is compatible with an errMatcher RegExp or String (we check if the message contains the String).
  • getConstructorName(errorLike) - Retrieves the name of a constructor, an error's constructor or errorLike itself if it's not an error instance or constructor.
  • getMessage(err) - Retrieves the message of an error or err itself if it's a String. If err or err.message is undefined we return an empty String.
import * as checkError 'check-error';

.compatibleInstance(err, errorLike)

import * as checkError 'check-error';

const funcThatThrows = function() { throw new TypeError('I am a TypeError') };
let caughtErr;

try {
  funcThatThrows();
} catch(e) {
  caughtErr = e;
}

const sameInstance = caughtErr;

checkError.compatibleInstance(caughtErr, sameInstance); // true
checkError.compatibleInstance(caughtErr, new TypeError('Another error')); // false

.compatibleConstructor(err, errorLike)

import * as checkError 'check-error';

const funcThatThrows = function() { throw new TypeError('I am a TypeError') };
let caughtErr;

try {
  funcThatThrows();
} catch(e) {
  caughtErr = e;
}

checkError.compatibleConstructor(caughtErr, Error); // true
checkError.compatibleConstructor(caughtErr, TypeError); // true
checkError.compatibleConstructor(caughtErr, RangeError); // false

.compatibleMessage(err, errMatcher)

import * as checkError 'check-error';

const funcThatThrows = function() { throw new TypeError('I am a TypeError') };
let caughtErr;

try {
  funcThatThrows();
} catch(e) {
  caughtErr = e;
}

const sameInstance = caughtErr;

checkError.compatibleMessage(caughtErr, /TypeError$/); // true
checkError.compatibleMessage(caughtErr, 'I am a'); // true
checkError.compatibleMessage(caughtErr, /unicorn/); // false
checkError.compatibleMessage(caughtErr, 'I do not exist'); // false

.getConstructorName(errorLike)

import * as checkError 'check-error';

const funcThatThrows = function() { throw new TypeError('I am a TypeError') };
let caughtErr;

try {
  funcThatThrows();
} catch(e) {
  caughtErr = e;
}

const sameInstance = caughtErr;

checkError.getConstructorName(caughtErr) // 'TypeError'

.getMessage(err)

import * as checkError 'check-error';

const funcThatThrows = function() { throw new TypeError('I am a TypeError') };
let caughtErr;

try {
  funcThatThrows();
} catch(e) {
  caughtErr = e;
}

const sameInstance = caughtErr;

checkError.getMessage(caughtErr) // 'I am a TypeError'