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>
82 lines
3.0 KiB
Markdown
82 lines
3.0 KiB
Markdown
[![Build Status][travis-svg]][travis-url]
|
|
[![dependency status][deps-svg]][deps-url]
|
|
[![dev dependency status][dev-deps-svg]][dev-deps-url]
|
|
|
|
# extend() for Node.js <sup>[![Version Badge][npm-version-png]][npm-url]</sup>
|
|
|
|
`node-extend` is a port of the classic extend() method from jQuery. It behaves as you expect. It is simple, tried and true.
|
|
|
|
Notes:
|
|
|
|
* Since Node.js >= 4,
|
|
[`Object.assign`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
|
|
now offers the same functionality natively (but without the "deep copy" option).
|
|
See [ECMAScript 2015 (ES6) in Node.js](https://nodejs.org/en/docs/es6).
|
|
* Some native implementations of `Object.assign` in both Node.js and many
|
|
browsers (since NPM modules are for the browser too) may not be fully
|
|
spec-compliant.
|
|
Check [`object.assign`](https://www.npmjs.com/package/object.assign) module for
|
|
a compliant candidate.
|
|
|
|
## Installation
|
|
|
|
This package is available on [npm][npm-url] as: `extend`
|
|
|
|
``` sh
|
|
npm install extend
|
|
```
|
|
|
|
## Usage
|
|
|
|
**Syntax:** extend **(** [`deep`], `target`, `object1`, [`objectN`] **)**
|
|
|
|
*Extend one object with one or more others, returning the modified object.*
|
|
|
|
**Example:**
|
|
|
|
``` js
|
|
var extend = require('extend');
|
|
extend(targetObject, object1, object2);
|
|
```
|
|
|
|
Keep in mind that the target object will be modified, and will be returned from extend().
|
|
|
|
If a boolean true is specified as the first argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s).
|
|
Undefined properties are not copied. However, properties inherited from the object's prototype will be copied over.
|
|
Warning: passing `false` as the first argument is not supported.
|
|
|
|
### Arguments
|
|
|
|
* `deep` *Boolean* (optional)
|
|
If set, the merge becomes recursive (i.e. deep copy).
|
|
* `target` *Object*
|
|
The object to extend.
|
|
* `object1` *Object*
|
|
The object that will be merged into the first.
|
|
* `objectN` *Object* (Optional)
|
|
More objects to merge into the first.
|
|
|
|
## License
|
|
|
|
`node-extend` is licensed under the [MIT License][mit-license-url].
|
|
|
|
## Acknowledgements
|
|
|
|
All credit to the jQuery authors for perfecting this amazing utility.
|
|
|
|
Ported to Node.js by [Stefan Thomas][github-justmoon] with contributions by [Jonathan Buchanan][github-insin] and [Jordan Harband][github-ljharb].
|
|
|
|
[travis-svg]: https://travis-ci.org/justmoon/node-extend.svg
|
|
[travis-url]: https://travis-ci.org/justmoon/node-extend
|
|
[npm-url]: https://npmjs.org/package/extend
|
|
[mit-license-url]: http://opensource.org/licenses/MIT
|
|
[github-justmoon]: https://github.com/justmoon
|
|
[github-insin]: https://github.com/insin
|
|
[github-ljharb]: https://github.com/ljharb
|
|
[npm-version-png]: http://versionbadg.es/justmoon/node-extend.svg
|
|
[deps-svg]: https://david-dm.org/justmoon/node-extend.svg
|
|
[deps-url]: https://david-dm.org/justmoon/node-extend
|
|
[dev-deps-svg]: https://david-dm.org/justmoon/node-extend/dev-status.svg
|
|
[dev-deps-url]: https://david-dm.org/justmoon/node-extend#info=devDependencies
|
|
|