@gianfa/redactor-core
v0.1.2
Published
<img src="https://github.com/gianfa/code-anonymizer/blob/develop/assets/logo/logo-1.png?raw=true" width='600px'>
Readme
@gianfa/redactor-core
Ship logs, snippets, and demos fast — without leaking real data.
@gianfa/redactor-core anonymizes sensitive text in one call.
What it masks out of the box
- Emails →
[email protected] - URLs →
https://example.com - IPv4 addresses →
0.0.0.0 - AWS Access Key IDs →
SECRET_1,SECRET_2, ... - Common human names →
PERSON_1,PERSON_2, ...
Install
npm i @gianfa/redactor-core15-second quickstart
import { anonymize } from "@gianfa/redactor-core";
const input = `
const owner = "Marco";
const email = "[email protected]";
const key = "AKIA1234567890ABCDEF";
`;
const { code, findings } = anonymize(input);
console.log(code);
console.log(findings);Return value
anonymize(input, options) returns:
code: anonymized textfindings: counters by type (secrets,emails,urls,ips,names)map: deterministicoriginal -> replacementspans: replaced ranges (start,end,kind,original,replacement)
Options
All detectors are enabled by default.
import { anonymize } from "@gianfa/redactor-core";
const result = anonymize("Marco uses [email protected]", {
enableNames: false,
enableEmails: true,
enableUrls: false,
enableIps: false,
enableSecrets: false,
});Available flags:
enableEmailsenableUrlsenableIpsenableSecretsenableNamescustomAnonymizations
Custom rules (regex)
Need project-specific masking? Add your own rules.
import { anonymize, parseAnonymizations } from "@gianfa/redactor-core";
const customAnonymizations = parseAnonymizations({
"/\\b\\w*identity\\w*-\\d{3}\\b/g": "my-identity",
});
const result = anonymize('const id = "customer-identity-123";', {
customAnonymizations,
});Regex keys must use /pattern/flags format.
CLI
This package also ships a CLI command: redactor.
npx @gianfa/redactor-core ./sample.txtWith custom rules file:
npx @gianfa/redactor-core ./sample.txt ./anonymizations.jsonOr with env var:
ANONYMIZE_JSON=./anonymizations.json npx @gianfa/redactor-core ./sample.txtanonymizations.json example:
{
"/user_[0-9]+/g": "user_XXX"
}Why devs like it
- No setup ceremony
- Predictable replacements
- Easy to plug into tooling, CI, demos, and bug reports
- Safer sharing, faster collaboration
If your team shares code in tickets, chats, or AI tools, this is a tiny dependency with big upside.
