# redacted-ts

> Redacting classified documents

Latest version **1.0.14** (published 2026-09-14) · BSD-2-Clause-Patent license · 0 weekly downloads

## Install

```sh
npm install redacted-ts
pnpm add redacted-ts
yarn add redacted-ts
bun add redacted-ts
```

## Health

**Score 65/100 (B)** — status: active.

Positive: has types; no vulnerabilities; recently updated; high maintenance score; high quality score.

Warnings: low downloads; no esm support.

## Facts

| | |
|---|---|
| Version | 1.0.14 |
| Published | 2026-09-14 |
| First published | 2021-08-26 |
| Weekly downloads | 0 |
| License | BSD-2-Clause-Patent |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 20.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Author | Cyril Dever |
| Maintainers | cdever |
| Keywords | data, obfuscation, data masking, redacted, classified |

## Links

- npm: https://www.npmjs.com/package/redacted-ts
- Repository: https://github.com/cyrildever/redacted
- Homepage: https://github.com/cyrildever/redacted#readme
- Issues: https://github.com/cyrildever/redacted/issues
- npm.io page: https://npm.io/package/redacted-ts

## Dependencies (1)

- [feistel-cipher](https://npm.io/package/feistel-cipher.md) ^1.6.2

## Alternatives

- [gamedig](https://npm.io/package/gamedig.md) — 29.3K weekly downloads
- [join-monster](https://npm.io/package/join-monster.md) — 12.8K weekly downloads
- [masked](https://npm.io/package/masked.md) — 5.5K weekly downloads
- [@comunica/actor-query-process-explain-logical](https://npm.io/package/@comunica/actor-query-process-explain-logical.md) — 4.7K weekly downloads
- [@veracity/vui](https://npm.io/package/@veracity/vui.md) — 4.6K weekly downloads

## Recent versions

- 1.0.14 (latest) — 2026-09-14
- 1.0.13 — 2026-08-25
- 1.0.12 — 2026-06-11
- 1.0.11 — 2026-03-12
- 1.0.10 — 2026-01-05
- 1.0.9 — 2025-12-15
- 1.0.8 — 2025-01-31
- 1.0.7 — 2024-12-21
- 1.0.6 — 2024-12-12
- 1.0.5 — 2024-09-11
- 1.0.4 — 2024-02-08
- 1.0.3 — 2023-10-30
- 1.0.2 — 2023-09-27
- 1.0.1 — 2023-06-12
- 1.0.0 — 2023-04-18
- … 16 more at https://npm.io/package/redacted-ts/versions

## README

# redacted-ts
_Redacting classified documents_

![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/cyrildever/redacted)
![GitHub last commit](https://img.shields.io/github/last-commit/cyrildever/redacted)
![GitHub issues](https://img.shields.io/github/issues/cyrildever/redacted)
![GitHub license](https://img.shields.io/github/license/cyrildever/redacted)
![npm](https://img.shields.io/npm/dw/redacted-ts)

This repository holds the code base for my `redacted-ts` library in TypeScript as well as its companion CLI: [`redacted-cli`](cli/README.md). \
It is mainly based off my [Feistel cipher for Format-Preserving Encryption](https://github.com/cyrildever/feistel-cipher) to which I added a few tools to handle document, database and file manipulation to ease out the operation.

### Motivation

In some fields (like healthcare for instance), protecting the privacy of data whilst being able to conduct in-depth studies is both vital and mandatory. Redacting documents and databases is therefore the obligatory passage.
With `redacted-ts`, I provide a simple yet secure tool to help redacting documents based on either a dictionary, a record layout or a tag to decide which parts should actually be redacted.


### Usage

You can use either a dictionary or a tag (or both) to identify the words you want to redact in a document.
The tag should be placed before any word that should be redacted. The default tag is the tilde character (`~`).

For example, the following sentence will only see the word `tagged` redacted: `"This is a ~tagged sentence"`.

```console
$ npm install redacted-ts
```

```typescript
import { DefaultRedactor, Dictionary } from 'redacted-ts'
import { FPECipher, SHA_256 } from 'feistel-cipher'

const source = 'Some text ~tagged or using words in a dictionary'

const cipher = new FPECipher(SHA_256, key, 10)
const redactor = DefaultRedactor(cipher)
const redacted = redactor.redact(source)

const expanded = redactor.expand(redacted)
assert(expanded === source)

const cleansed = redactor.clean(expanded)
assert(cleansed === 'Some text tagged or using words in a dictionary')
```


### CLI

You can also install it globally and use it as a CLI for handling files:
```console
$ npm i -g redacted-cli
$ redacted -V
```

```console
$ redacted --help
  ____          _            _           _ 
 |  _ \ ___  __| | __ _  ___| |_ ___  __| |
 | |_) / _ \/ _` |/ _` |/ __| __/ _ \/ _` |
 |  _ <  __/ (_| | (_| | (__| ||  __/ (_| |
 |_| \_\___|\__,_|\__,_|\___|\__\___|\__,_|
                                           
Usage: redacted [options]

A TypeScript-based CLI to redacting classified documents

Options:
  -V, --version             output the version number
  -b, --both                add to use both dictionary and tag
  -d, --dictionary <value>  the optional path to the dictionary of words to redact
  -H, --hash <value>        the hash engine for the round function (default "sha-256")
  -i, --input <value>       the path to the document to be redacted
  -k, --key <value>         the optional key for the FPE scheme (leave it empty to use default)
  -o, --output <value>      the name of the output file
  -r, --rounds <value>      the number of rounds for the Feistel cipher (default 10)
  -t, --tag <value>         the optional tag that prefixes words to redact (default "~")
  -x, --expand              add to expand a redacted document
  -h, --help                display help for command
```

_NB: The dictionary file must consist of space-separated words._


### License

The use of the `redacted` libraries and executables are subject to fees for commercial purpose and to the respect of the [BSD-2-Clause-Patent license](LICENSE). \
Please [contact me](mailto:cdever@pep-s.com) to get further information.

_NB: It is still under development so use in production at your own risk for now._


<hr />
&copy; 2021-2026 Cyril Dever. All rights reserved.

---
_Source: https://npm.io/package/redacted-ts · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
