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> |
||
|---|---|---|
| .. | ||
| lib | ||
| node_modules/entities | ||
| LICENSE | ||
| package.json | ||
| README.md | ||
dom-serializer 
Renders a domhandler DOM node or an array of domhandler DOM nodes to a string.
import render from "dom-serializer";
// OR
const render = require("dom-serializer").default;
API
render
▸ render(node: Node | Node[], options?: Options): string
Renders a DOM node or an array of DOM nodes to a string.
Can be thought of as the equivalent of the outerHTML of the passed node(s).
Parameters:
| Name | Type | Default value | Description |
|---|---|---|---|
node |
Node | Node[] | - | Node to be rendered. |
options |
DomSerializerOptions | {} | Changes serialization behavior |
Returns: string
Options
encodeEntities
• Optional decodeEntities: boolean | "utf8"
Encode characters that are either reserved in HTML or XML.
If xmlMode is true or the value not 'utf8', characters outside of the utf8 range will be encoded as well.
default decodeEntities
decodeEntities
• Optional decodeEntities: boolean
Option inherited from parsing; will be used as the default value for encodeEntities.
default true
emptyAttrs
• Optional emptyAttrs: boolean
Print an empty attribute's value.
default xmlMode
example With emptyAttrs: false: <input checked>
example With emptyAttrs: true: <input checked="">
selfClosingTags
• Optional selfClosingTags: boolean
Print self-closing tags for tags without contents.
default xmlMode
example With selfClosingTags: false: <foo></foo>
example With selfClosingTags: true: <foo />
xmlMode
• Optional xmlMode: boolean | "foreign"
Treat the input as an XML document; enables the emptyAttrs and selfClosingTags options.
If the value is "foreign", it will try to correct mixed-case attribute names.
default false
Ecosystem
| Name | Description |
|---|---|
| htmlparser2 | Fast & forgiving HTML/XML parser |
| domhandler | Handler for htmlparser2 that turns documents into a DOM |
| domutils | Utilities for working with domhandler's DOM |
| css-select | CSS selector engine, compatible with domhandler's DOM |
| cheerio | The jQuery API for domhandler's DOM |
| dom-serializer | Serializer for domhandler's DOM |
LICENSE: MIT