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>
104 lines
2.5 KiB
TypeScript
104 lines
2.5 KiB
TypeScript
declare namespace camelcase {
|
||
interface Options {
|
||
/**
|
||
Uppercase the first character: `foo-bar` → `FooBar`.
|
||
|
||
@default false
|
||
*/
|
||
readonly pascalCase?: boolean;
|
||
|
||
/**
|
||
Preserve the consecutive uppercase characters: `foo-BAR` → `FooBAR`.
|
||
|
||
@default false
|
||
*/
|
||
readonly preserveConsecutiveUppercase?: boolean;
|
||
|
||
/**
|
||
The locale parameter indicates the locale to be used to convert to upper/lower case according to any locale-specific case mappings. If multiple locales are given in an array, the best available locale is used.
|
||
|
||
Setting `locale: false` ignores the platform locale and uses the [Unicode Default Case Conversion](https://unicode-org.github.io/icu/userguide/transforms/casemappings.html#simple-single-character-case-mapping) algorithm.
|
||
|
||
Default: The host environment’s current locale.
|
||
|
||
@example
|
||
```
|
||
import camelCase = require('camelcase');
|
||
|
||
camelCase('lorem-ipsum', {locale: 'en-US'});
|
||
//=> 'loremIpsum'
|
||
camelCase('lorem-ipsum', {locale: 'tr-TR'});
|
||
//=> 'loremİpsum'
|
||
camelCase('lorem-ipsum', {locale: ['en-US', 'en-GB']});
|
||
//=> 'loremIpsum'
|
||
camelCase('lorem-ipsum', {locale: ['tr', 'TR', 'tr-TR']});
|
||
//=> 'loremİpsum'
|
||
```
|
||
*/
|
||
readonly locale?: false | string | readonly string[];
|
||
}
|
||
}
|
||
|
||
/**
|
||
Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`.
|
||
|
||
Correctly handles Unicode strings.
|
||
|
||
@param input - String to convert to camel case.
|
||
|
||
@example
|
||
```
|
||
import camelCase = require('camelcase');
|
||
|
||
camelCase('foo-bar');
|
||
//=> 'fooBar'
|
||
|
||
camelCase('foo_bar');
|
||
//=> 'fooBar'
|
||
|
||
camelCase('Foo-Bar');
|
||
//=> 'fooBar'
|
||
|
||
camelCase('розовый_пушистый_единорог');
|
||
//=> 'розовыйПушистыйЕдинорог'
|
||
|
||
camelCase('Foo-Bar', {pascalCase: true});
|
||
//=> 'FooBar'
|
||
|
||
camelCase('--foo.bar', {pascalCase: false});
|
||
//=> 'fooBar'
|
||
|
||
camelCase('Foo-BAR', {preserveConsecutiveUppercase: true});
|
||
//=> 'fooBAR'
|
||
|
||
camelCase('fooBAR', {pascalCase: true, preserveConsecutiveUppercase: true}));
|
||
//=> 'FooBAR'
|
||
|
||
camelCase('foo bar');
|
||
//=> 'fooBar'
|
||
|
||
console.log(process.argv[3]);
|
||
//=> '--foo-bar'
|
||
camelCase(process.argv[3]);
|
||
//=> 'fooBar'
|
||
|
||
camelCase(['foo', 'bar']);
|
||
//=> 'fooBar'
|
||
|
||
camelCase(['__foo__', '--bar'], {pascalCase: true});
|
||
//=> 'FooBar'
|
||
|
||
camelCase(['foo', 'BAR'], {pascalCase: true, preserveConsecutiveUppercase: true})
|
||
//=> 'FooBAR'
|
||
|
||
camelCase('lorem-ipsum', {locale: 'en-US'});
|
||
//=> 'loremIpsum'
|
||
```
|
||
*/
|
||
declare function camelcase(
|
||
input: string | readonly string[],
|
||
options?: camelcase.Options
|
||
): string;
|
||
|
||
export = camelcase;
|