tftsr-devops_investigation/node_modules/markdown-table/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

345 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# markdown-table
[![Build][build-badge]][build]
[![Coverage][coverage-badge]][coverage]
[![Downloads][downloads-badge]][downloads]
[![Size][size-badge]][size]
Generate a markdown ([GFM][]) table.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`markdownTable(table[, options])`](#markdowntabletable-options)
* [Types](#types)
* [Compatibility](#compatibility)
* [Security](#security)
* [Inspiration](#inspiration)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This is a simple package that takes table data and generates a [GitHub flavored
markdown (GFM)][gfm] table.
## When should I use this?
You can use this package when you want to generate the source code of a GFM
table from some data.
This is a simple solution in that it doesnt handle escapes or HTML or any of
that.
For a complete but heavier solution, build an AST and serialize it with
[`mdast-util-to-markdown`][mdast-util-to-markdown] (with
[`mdast-util-gfm`][mdast-util-gfm]).
## Install
This package is [ESM only][esm].
In Node.js (version 14.14+, 16.0+), install with [npm][]:
```sh
npm install markdown-table
```
In Deno with [`esm.sh`][esmsh]:
```js
import {markdownTable} from 'https://esm.sh/markdown-table@3'
```
In browsers with [`esm.sh`][esmsh]:
```html
<script type="module">
import {markdownTable} from 'https://esm.sh/markdown-table@3?bundle'
</script>
```
## Use
Typical usage (defaults to align left):
```js
import {markdownTable} from 'markdown-table'
markdownTable([
['Branch', 'Commit'],
['main', '0123456789abcdef'],
['staging', 'fedcba9876543210']
])
```
Yields:
```markdown
| Branch | Commit |
| ------- | ---------------- |
| main | 0123456789abcdef |
| staging | fedcba9876543210 |
```
With align:
```js
markdownTable(
[
['Beep', 'No.', 'Boop'],
['beep', '1024', 'xyz'],
['boop', '3388450', 'tuv'],
['foo', '10106', 'qrstuv'],
['bar', '45', 'lmno']
],
{align: ['l', 'c', 'r']}
)
```
Yields:
```markdown
| Beep | No. | Boop |
| :--- | :-----: | -----: |
| beep | 1024 | xyz |
| boop | 3388450 | tuv |
| foo | 10106 | qrstuv |
| bar | 45 | lmno |
```
## API
This package exports the identifier `markdownTable`.
There is no default export.
### `markdownTable(table[, options])`
Generate a markdown table from table data (matrix of strings).
##### `options`
Configuration (optional).
###### `options.align`
One style for all columns, or styles for their respective columns (`string` or
`Array<string>`).
Each style is either `'l'` (left), `'r'` (right), or `'c'` (center).
Other values are treated as `''`, which doesnt place the colon in the alignment
row but does align left.
*Only the lowercased first character is used, so `Right` is fine.*
###### `options.padding`
Whether to add a space of padding between delimiters and cells (`boolean`,
default: `true`).
When `true`, there is padding:
```markdown
| Alpha | B |
| ----- | ----- |
| C | Delta |
```
When `false`, there is no padding:
```markdown
|Alpha|B |
|-----|-----|
|C |Delta|
```
###### `options.delimiterStart`
Whether to begin each row with the delimiter (`boolean`, default: `true`).
> 👉 **Note**: please dont use this: it could create fragile structures that
> arent understandable to some markdown parsers.
When `true`, there are starting delimiters:
```markdown
| Alpha | B |
| ----- | ----- |
| C | Delta |
```
When `false`, there are no starting delimiters:
```markdown
Alpha | B |
----- | ----- |
C | Delta |
```
###### `options.delimiterEnd`
Whether to end each row with the delimiter (`boolean`, default: `true`).
> 👉 **Note**: please dont use this: it could create fragile structures that
> arent understandable to some markdown parsers.
When `true`, there are ending delimiters:
```markdown
| Alpha | B |
| ----- | ----- |
| C | Delta |
```
When `false`, there are no ending delimiters:
```markdown
| Alpha | B
| ----- | -----
| C | Delta
```
###### `options.alignDelimiters`
Whether to align the delimiters (`boolean`, default: `true`).
By default, they are aligned:
```markdown
| Alpha | B |
| ----- | ----- |
| C | Delta |
```
Pass `false` to make them staggered:
```markdown
| Alpha | B |
| - | - |
| C | Delta |
```
###### `options.stringLength`
Function to detect the length of table cell content (`Function`, default:
`s => s.length`).
This is used when aligning the delimiters (`|`) between table cells.
Full-width characters and emoji mess up delimiter alignment when viewing the
markdown source.
To fix this, you can pass this function, which receives the cell content and
returns its “visible” size.
Note that what is and isnt visible depends on where the text is displayed.
Without such a function, the following:
```js
markdownTable([
['Alpha', 'Bravo'],
['中文', 'Charlie'],
['👩‍❤️‍👩', 'Delta']
])
```
Yields:
```markdown
| Alpha | Bravo |
| - | - |
| 中文 | Charlie |
| 👩‍❤️‍👩 | Delta |
```
With [`string-width`][string-width]:
```js
import stringWidth from 'string-width'
markdownTable(
[
['Alpha', 'Bravo'],
['中文', 'Charlie'],
['👩‍❤️‍👩', 'Delta']
],
{stringLength: stringWidth}
)
```
Yields:
```markdown
| Alpha | Bravo |
| ----- | ------- |
| 中文 | Charlie |
| 👩‍❤️‍👩 | Delta |
```
## Types
This package is fully typed with [TypeScript][].
It exports the additional type `Options`.
## Compatibility
This package is at least compatible with all maintained versions of Node.js.
As of now, that is Node.js 14.14+ and 16.0+.
It also works in Deno and modern browsers.
## Security
This package is safe.
## Inspiration
The original idea and basic implementation was inspired by James Hallidays
[`text-table`][text-table] library.
## Contribute
Yes please!
See [How to Contribute to Open Source][contribute].
## License
[MIT][license] © [Titus Wormer][author]
<!-- Definitions -->
[build-badge]: https://github.com/wooorm/markdown-table/workflows/main/badge.svg
[build]: https://github.com/wooorm/markdown-table/actions
[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/markdown-table.svg
[coverage]: https://codecov.io/github/wooorm/markdown-table
[downloads-badge]: https://img.shields.io/npm/dm/markdown-table.svg
[downloads]: https://www.npmjs.com/package/markdown-table
[size-badge]: https://img.shields.io/bundlephobia/minzip/markdown-table.svg
[size]: https://bundlephobia.com/result?p=markdown-table
[npm]: https://docs.npmjs.com/cli/install
[esmsh]: https://esm.sh
[license]: license
[author]: https://wooorm.com
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[typescript]: https://www.typescriptlang.org
[contribute]: https://opensource.guide/how-to-contribute/
[gfm]: https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables
[text-table]: https://github.com/substack/text-table
[string-width]: https://github.com/sindresorhus/string-width
[mdast-util-to-markdown]: https://github.com/syntax-tree/mdast-util-to-markdown
[mdast-util-gfm]: https://github.com/syntax-tree/mdast-util-gfm