privacy-brush 0.0.4 β†’ 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,302 +1,314 @@
1
- <h1 align="center" title="PrivacyBrush">πŸ›‘οΈ Privβ–ˆcyBrβ–ˆsh πŸ–ŒοΈ</h1>
2
-
3
- > **Terminal Output Masking Tool | Safely Share Logs by Hiding Sensitive Information**
4
-
5
- [![npm version](https://img.shields.io/npm/v/privacy-brush.svg)](https://www.npmjs.com/package/privacy-brush)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
7
- [![Typecheck](https://github.com/legend80s/privacy-brush/actions/workflows/typecheck.yml/badge.svg?branch=master)](https://github.com/legend80s/privacy-brush/actions/workflows/typecheck.yml)
8
-
9
- <p align="center">
10
- <img src="https://raw.githubusercontent.com/legend80s/privacy-brush/main/docs/demo.gif" alt="PrivacyBrush Demo" width="800">
11
- </p>
12
-
13
- ## ✨ Features
14
-
15
- - 🎯 **Smart Detection** - Auto-detects 20+ sensitive information patterns
16
- - πŸ”§ **Highly Configurable** - Custom masking rules and characters
17
- - ⚑ **High Performance** - Stream processing for large files
18
- - πŸ›‘οΈ **Privacy First** - Local processing only, no data leaves your machine
19
- - πŸ“¦ **Multiple Formats** - CLI, API, Stream, File processing
20
- - 🌐 **Multi-language** - Supports English, Chinese, and other log formats
21
- - 🎨 **Customizable** - Add your own sensitive patterns
22
-
23
- ## πŸš€ Quick Start
24
-
25
- ### Basic Usage
26
-
27
- ```bash
28
- # Direct terminal output processing
29
- flutter devices | pnpx privacy-brush
30
- flutter doctor | pnpx privacy-brush
31
-
32
- # Process files
33
- privacy-brush input.log -o masked.log
34
-
35
- # Real-time command output
36
- echo 'Microsoft Windows [Version 10.0.12345.6785]' | privacy-brush
37
- ```
38
-
39
- ### In Your Node.js Project
40
-
41
- ```javascript
42
- // Or ES Module
43
- import { PrivacyBrush } from 'privacy-brush';
44
-
45
- // Create instance
46
- const brush = new PrivacyBrush();
47
-
48
- // Process text
49
- const sensitiveText = `Windows [Version 10.0.12345.1234]
50
- Chrome 144.0.1234.12
51
- User IP: 192.123.1.123`;
52
-
53
- const safeText = brush.maskText(sensitiveText);
54
- console.log(safeText);
55
-
56
- // Output:
57
- // Windows [Version 10.β–ˆ.β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ.β–ˆβ–ˆβ–ˆβ–ˆ]
58
- // Chrome 144.β–ˆ.β–ˆβ–ˆβ–ˆβ–ˆ.β–ˆβ–ˆ
59
- // User IP: 192.β–ˆβ–ˆβ–ˆ.β–ˆ.β–ˆβ–ˆβ–ˆ
60
- ```
61
-
62
- ## πŸ“– Examples
63
-
64
- ### Example 1: Process Flutter Output
65
-
66
- **Original:**
67
-
68
- ```bash
69
- ❯ flutter devices
70
- Found 4 connected devices:
71
- Windows (desktop) β€’ windows β€’ windows-x64 β€’ Microsoft Windows [Version 10.0.12345.1234]
72
- Chrome (web) β€’ chrome β€’ web-javascript β€’ Google Chrome 144.0.1234.60
73
- ```
74
-
75
- **After PrivacyBrush:**
76
-
77
- ```bash
78
- ❯ flutter devices | privacy-brush
79
- Found 4 connected devices:
80
- Windows (desktop) β€’ windows β€’ windows-x64 β€’ Microsoft Windows [Version 10.β–ˆ.β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ.β–ˆβ–ˆβ–ˆβ–ˆ]
81
- Chrome (web) β€’ chrome β€’ web-javascript β€’ Google Chrome 144.β–ˆ.β–ˆβ–ˆβ–ˆβ–ˆ.β–ˆβ–ˆ
82
- ```
83
-
84
- ### Example 2: Process Node.js Debug Logs
85
-
86
- ```javascript
87
- const masker = new PrivacyBrush({
88
- maskChar: '*',
89
- preserveFirstPart: false
90
- });
91
-
92
- const debugLog = `
93
- DEBUG: User login from IP 192.168.1.100
94
- DEBUG: Session ID: abc123def456
95
- DEBUG: Browser: Chrome/144.0.1234.60
96
- DEBUG: OS: Windows 10.0.12345
97
- `;
98
-
99
- console.log(masker.mask(debugLog));
100
- // Output:
101
- // DEBUG: User login from IP ***.***.*.***
102
- // DEBUG: Session ID: ************
103
- // DEBUG: Browser: Chrome/***.*.***.**
104
- // DEBUG: OS: Windows **.*.*****
105
- ```
106
-
107
- ## βš™οΈ Configuration
108
-
109
- ### CLI Options
110
-
111
- ```bash
112
- # Basic usage
113
- privacy-brush [input-file] [options]
114
-
115
- # Options
116
- --output, -o <file> Output to file
117
- --char, -c <char> Mask character (default: β–ˆ)
118
- --preserve-first Keep first part of version numbers
119
- --strict Strict mode (mask more info)
120
- --config <file> Use config file
121
- --list-patterns List all built-in patterns
122
- --add-pattern <regex> Add custom regex pattern
123
- --version Show version
124
- --help Show help
125
- ```
126
-
127
- ### JavaScript API Options
128
-
129
- ```javascript
130
- const masker = new PrivacyBrush({
131
- // Basic config
132
- maskChar: 'β–ˆ', // Mask character
133
- preserveFirstPart: true, // Keep first part of versions
134
-
135
- // Pattern config
136
- patterns: {
137
- ipAddress: true,
138
- macAddress: true,
139
- email: true,
140
- phone: true,
141
- creditCard: true,
142
- jwtToken: true,
143
- apiKey: true,
144
-
145
- osVersion: true,
146
- browserVersion: true,
147
- appVersion: true,
148
-
149
- deviceId: true,
150
- serialNumber: true,
151
-
152
- filePaths: false, // Don't mask file paths
153
- localhost: false // Don't mask localhost
154
- },
155
-
156
- // Custom patterns
157
- customPatterns: [
158
- {
159
- name: 'custom-id',
160
- regex: /ID-\d{6}/g,
161
- mask: 'ID-******'
162
- }
163
- ]
164
- });
165
- ```
166
-
167
- ## πŸ”§ Built-in Patterns
168
-
169
- PrivacyBrush includes 20+ pre-configured sensitive information patterns:
170
-
171
- ### πŸ” Personal Information
172
-
173
- - Email addresses `user@example.com` β†’ `***@example.com`
174
- - Phone numbers `13800138000` β†’ `138****8000`
175
- - ID numbers `110101199001011234` β†’ `110101********1234`
176
-
177
- ### πŸ’» Technical Information
178
-
179
- - IP addresses `192.168.1.100` β†’ `192.168.*.*`
180
- - MAC addresses `00:1A:2B:3C:4D:5E` β†’ `00:**:**:**:**:**`
181
- - Port numbers `:8080` β†’ `:****`
182
- - API keys `sk_live_1234567890` β†’ `sk_live_********`
183
-
184
- ### πŸ–₯️ System & Browser
185
-
186
- - Windows versions `10.0.12345.1234` β†’ `10.β–ˆβ–ˆβ–ˆ.β–ˆβ–ˆβ–ˆ.β–ˆβ–ˆβ–ˆ`
187
- - Chrome versions `144.0.1234.60` β†’ `144.β–ˆβ–ˆβ–ˆ.β–ˆβ–ˆβ–ˆ.β–ˆβ–ˆβ–ˆ`
188
- - Android versions `Android 16` β†’ `Android β–ˆβ–ˆ`
189
-
190
- ### 🏒 Business Data
191
-
192
- - Credit cards `4111 1111 1111 1111` β†’ `4111 **** **** 1111`
193
- - JWT tokens `eyJhbGciOiJIUzI1...` β†’ `eyJ********...`
194
- - Session IDs `session-abc123def456` β†’ `session-************`
195
-
196
- ## πŸ› οΈ Advanced Usage
197
-
198
- ### Stream Processing for Large Files
199
-
200
- ```javascript
201
- const fs = require('fs');
202
- const { createMaskStream } = require('privacy-brush');
203
-
204
- const inputStream = fs.createReadStream('huge.log');
205
- const maskStream = createMaskStream();
206
-
207
- inputStream
208
- .pipe(maskStream)
209
- .pipe(fs.createWriteStream('masked-huge.log'))
210
- .on('finish', () => {
211
- console.log('Large file processing completed!');
212
- });
213
- ```
214
-
215
- ### Express.js Integration
216
-
217
- ```javascript
218
- const express = require('express');
219
- const { PrivacyBrush } = require('privacy-brush');
220
- const app = express();
221
- const masker = new PrivacyBrush();
222
-
223
- // Middleware: auto-mask sensitive info in responses
224
- app.use((req, res, next) => {
225
- const originalSend = res.send;
226
- res.send = function(body) {
227
- if (typeof body === 'string' && body.includes('sensitive')) {
228
- body = masker.mask(body);
229
- }
230
- originalSend.call(this, body);
231
- };
232
- next();
233
- });
234
- ```
235
-
236
- ### Git Hook Integration
237
-
238
- ```bash
239
- #!/bin/bash
240
- # .git/hooks/pre-commit
241
-
242
- for file in $(git diff --cached --name-only | grep -E '\.(log|txt|json)$'); do
243
- if privacy-brush --check "$file"; then
244
- echo "❌ File $file contains unmasked sensitive information"
245
- echo "Use: privacy-brush $file -o $file && git add $file"
246
- exit 1
247
- fi
248
- done
249
- ```
250
-
251
- ## πŸ“ Configuration File
252
-
253
- Create `privacy-brush.config.json`:
254
-
255
- ```json
256
- {
257
- "maskChar": "β–ˆ",
258
- "preserveFirstPart": true,
259
- "patterns": {
260
- "ipAddress": true,
261
- "email": true,
262
- "phone": true,
263
- "osVersion": true,
264
- "browserVersion": true
265
- },
266
- "customPatterns": [
267
- {
268
- "name": "project-api-key",
269
- "regex": "PROJECT_API_KEY=\\w{32}",
270
- "mask": "PROJECT_API_KEY=******************************"
271
- }
272
- ]
273
- }
274
- ```
275
-
276
- ## 🀝 Contributing
277
-
278
- We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
279
-
280
- 1. Fork the repository
281
- 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
282
- 3. Commit changes (`git commit -m 'Add amazing feature'`)
283
- 4. Push to branch (`git push origin feature/amazing-feature`)
284
- 5. Open a Pull Request
285
-
286
- ## πŸ“„ License
287
-
288
- MIT License Β© 2024 PrivacyBrush Contributors
289
-
290
- ## πŸ“ž Support
291
-
292
- - πŸ“§ Email: <support@privacy-brush.dev>
293
- - πŸ› [Issue Tracker](https://github.com/legend80s/privacy-brush/issues)
294
- - πŸ’¬ [Discussions](https://github.com/legend80s/privacy-brush/discussions)
295
- - πŸ“– [Documentation](https://privacy-brush.dev/docs)
296
-
297
- ---
298
-
299
- <p align="center">
300
- <strong>Share Safely, Start with PrivacyBrush</strong><br>
301
- <sub>Protect privacy, communicate with confidence</sub>
302
- </p>
1
+ <h1 align="center" title="PrivacyBrush">πŸ›‘οΈ Privβ–ˆcyBrβ–ˆsh πŸ–ŒοΈ</h1>
2
+
3
+ > **Terminal Output Masking Tool | Safely Share Logs by Hiding Sensitive Information**
4
+
5
+ [![npm version](https://img.shields.io/npm/v/privacy-brush.svg)](https://www.npmjs.com/package/privacy-brush)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
7
+ [![tsgo](https://github.com/legend80s/privacy-brush/actions/workflows/typecheck.yml/badge.svg?branch=master)](https://github.com/legend80s/privacy-brush/actions/workflows/typecheck.yml)
8
+
9
+ <p align="center">
10
+ <img src="https://raw.githubusercontent.com/legend80s/privacy-brush/main/docs/demo.gif" alt="PrivacyBrush Demo" width="800">
11
+ </p>
12
+
13
+ ## ✨ Features
14
+
15
+ - 🎯 **Smart Detection** - Auto-detects 20+ sensitive information patterns
16
+ - πŸ”§ **Highly Configurable** - Custom masking rules and characters
17
+ - ⚑ **High Performance** - Stream processing for large files
18
+ - πŸ›‘οΈ **Privacy First** - Local processing only, no data leaves your machine
19
+ - πŸ“¦ **Multiple Formats** - CLI, API, Stream, File processing
20
+ - 🌐 **Multi-language** - Supports English, Chinese, and other log formats
21
+ - 🎨 **Customizable** - Add your own sensitive patterns
22
+
23
+ ## πŸš€ Quick Start
24
+
25
+ ### Basic Usage
26
+
27
+ ```bash
28
+ # Direct terminal output processing
29
+ flutter devices | pnpx privacy-brush
30
+ flutter doctor | pnpx privacy-brush
31
+
32
+ # Process files
33
+ privacy-brush -i input.log -o masked.log
34
+
35
+ # Real-time command output
36
+ echo 'Microsoft Windows [Version 10.0.12345.6785]' | privacy-brush
37
+ ```
38
+
39
+ ### In Your Node.js Project
40
+
41
+ ```javascript
42
+ // Or ES Module
43
+ import { PrivacyBrush } from 'privacy-brush';
44
+
45
+ // Create instance
46
+ const brush = new PrivacyBrush();
47
+
48
+ // Process text
49
+ const sensitiveText = `Windows [Version 10.0.12345.1234]
50
+ Chrome 144.0.1234.12
51
+ User IP: 192.123.1.123`;
52
+
53
+ const safeText = brush.maskText(sensitiveText);
54
+ console.log(safeText);
55
+
56
+ // Output:
57
+ // Windows [Version 10.β–ˆ.β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ.β–ˆβ–ˆβ–ˆβ–ˆ]
58
+ // Chrome 144.β–ˆ.β–ˆβ–ˆβ–ˆβ–ˆ.β–ˆβ–ˆ
59
+ // User IP: 192.β–ˆβ–ˆβ–ˆ.β–ˆ.β–ˆβ–ˆβ–ˆ
60
+ ```
61
+
62
+ ## πŸ“– Examples
63
+
64
+ ### Example 1: Process Flutter Output
65
+
66
+ **Original:**
67
+
68
+ ```bash
69
+ ❯ flutter devices
70
+ Found 4 connected devices:
71
+ Windows (desktop) β€’ windows β€’ windows-x64 β€’ Microsoft Windows [Version 10.0.12345.1234]
72
+ Chrome (web) β€’ chrome β€’ web-javascript β€’ Google Chrome 144.0.1234.60
73
+ ```
74
+
75
+ **After PrivacyBrush:**
76
+
77
+ ```bash
78
+ ❯ flutter devices | privacy-brush
79
+ Found 4 connected devices:
80
+ Windows (desktop) β€’ windows β€’ windows-x64 β€’ Microsoft Windows [Version 10.β–ˆ.β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ.β–ˆβ–ˆβ–ˆβ–ˆ]
81
+ Chrome (web) β€’ chrome β€’ web-javascript β€’ Google Chrome 144.β–ˆ.β–ˆβ–ˆβ–ˆβ–ˆ.β–ˆβ–ˆ
82
+ ```
83
+
84
+ ### Example 2: Process Node.js Debug Logs
85
+
86
+ ```javascript
87
+ const masker = new PrivacyBrush({
88
+ maskChar: '*',
89
+ preserveFirstPart: false
90
+ });
91
+
92
+ const debugLog = `
93
+ DEBUG: User login from IP 192.168.1.100
94
+ DEBUG: Session ID: abc123def456
95
+ DEBUG: Browser: Chrome/144.0.1234.60
96
+ DEBUG: OS: Windows 10.0.12345
97
+ `;
98
+
99
+ console.log(masker.mask(debugLog));
100
+ // Output:
101
+ // DEBUG: User login from IP ***.***.*.***
102
+ // DEBUG: Session ID: ************
103
+ // DEBUG: Browser: Chrome/***.*.***.**
104
+ // DEBUG: OS: Windows **.*.*****
105
+ ```
106
+
107
+ ## βš™οΈ Configuration
108
+
109
+ ### CLI Options
110
+
111
+ ```bash
112
+ # Basic usage
113
+ privacy-brush [options]
114
+
115
+ # Options
116
+ --char, -c <char> Mask character (default: β–ˆ)
117
+ --preserve-first Keep first part of version numbers
118
+ --input, -i <file> File to read from
119
+ --output, -o <file> Output to file
120
+ --strict Strict mode (mask more info)
121
+ --config <file> Use config file
122
+ --list-patterns List all built-in patterns
123
+ --add-pattern <regex> Add custom regex pattern
124
+ --version Show version
125
+ --help Show help
126
+ ```
127
+
128
+ Read from stdin by default.
129
+
130
+ ### JavaScript API Options
131
+
132
+ ```javascript
133
+ const masker = new PrivacyBrush({
134
+ // Basic config
135
+ maskChar: 'β–ˆ', // Mask character
136
+ preserveFirstPart: true, // Keep first part of versions
137
+
138
+ // Pattern config
139
+ patterns: {
140
+ ipAddress: true,
141
+ macAddress: true,
142
+ email: true,
143
+ phone: true,
144
+ creditCard: true,
145
+ jwtToken: true,
146
+ apiKey: true,
147
+
148
+ osVersion: true,
149
+ browserVersion: true,
150
+ appVersion: true,
151
+
152
+ deviceId: true,
153
+ serialNumber: true,
154
+
155
+ filePaths: false, // Don't mask file paths
156
+ localhost: false // Don't mask localhost
157
+ },
158
+
159
+ // Custom patterns
160
+ customPatterns: [
161
+ {
162
+ name: 'custom-id',
163
+ regex: /ID-\d{6}/g,
164
+ mask: 'ID-******'
165
+ }
166
+ ]
167
+ });
168
+ ```
169
+
170
+ ## πŸ”§ Built-in Patterns
171
+
172
+ PrivacyBrush includes 20+ pre-configured sensitive information patterns:
173
+
174
+ ### πŸ” Personal Information
175
+
176
+ - Email addresses `user@example.com` β†’ `***@example.com`
177
+ - Phone numbers `13800138000` β†’ `138****8000`
178
+ - ID numbers `110101199001011234` β†’ `110101********1234`
179
+
180
+ ### πŸ’» Technical Information
181
+
182
+ - IP addresses `192.168.1.100` β†’ `192.168.*.*`
183
+ - MAC addresses `00:1A:2B:3C:4D:5E` β†’ `00:**:**:**:**:**`
184
+ - Port numbers `:8080` β†’ `:****`
185
+ - API keys `sk_live_1234567890` β†’ `sk_live_********`
186
+
187
+ ### πŸ–₯️ System & Browser
188
+
189
+ - Windows versions `10.0.12345.1234` β†’ `10.β–ˆβ–ˆβ–ˆ.β–ˆβ–ˆβ–ˆ.β–ˆβ–ˆβ–ˆ`
190
+ - Chrome versions `144.0.1234.60` β†’ `144.β–ˆβ–ˆβ–ˆ.β–ˆβ–ˆβ–ˆ.β–ˆβ–ˆβ–ˆ`
191
+ - Android versions `Android 16` β†’ `Android β–ˆβ–ˆ`
192
+
193
+ ### 🏒 Business Data
194
+
195
+ - Credit cards `4111 1111 1111 1111` β†’ `4111 **** **** 1111`
196
+ - JWT tokens `eyJhbGciOiJIUzI1...` β†’ `eyJ********...`
197
+ - Session IDs `session-abc123def456` β†’ `session-************`
198
+
199
+ ## πŸ› οΈ Advanced Usage
200
+
201
+ ### Stream Processing for Large Files
202
+
203
+ ```javascript
204
+ const fs = require('fs');
205
+ const { createMaskStream } = require('privacy-brush');
206
+
207
+ const inputStream = fs.createReadStream('huge.log');
208
+ const maskStream = createMaskStream();
209
+
210
+ inputStream
211
+ .pipe(maskStream)
212
+ .pipe(fs.createWriteStream('masked-huge.log'))
213
+ .on('finish', () => {
214
+ console.log('Large file processing completed!');
215
+ });
216
+ ```
217
+
218
+ ### Express.js Integration
219
+
220
+ ```javascript
221
+ const express = require('express');
222
+ const { PrivacyBrush } = require('privacy-brush');
223
+ const app = express();
224
+ const masker = new PrivacyBrush();
225
+
226
+ // Middleware: auto-mask sensitive info in responses
227
+ app.use((req, res, next) => {
228
+ const originalSend = res.send;
229
+ res.send = function(body) {
230
+ if (typeof body === 'string' && body.includes('sensitive')) {
231
+ body = masker.mask(body);
232
+ }
233
+ originalSend.call(this, body);
234
+ };
235
+ next();
236
+ });
237
+ ```
238
+
239
+ ### Git Hook Integration
240
+
241
+ ```bash
242
+ #!/bin/bash
243
+ # .git/hooks/pre-commit
244
+
245
+ for file in $(git diff --cached --name-only | grep -E '\.(log|txt|json)$'); do
246
+ if privacy-brush --check "$file"; then
247
+ echo "❌ File $file contains unmasked sensitive information"
248
+ echo "Use: privacy-brush $file -o $file && git add $file"
249
+ exit 1
250
+ fi
251
+ done
252
+ ```
253
+
254
+ ## πŸ“ Configuration File
255
+
256
+ Create `privacy-brush.config.json`:
257
+
258
+ ```json
259
+ {
260
+ "maskChar": "β–ˆ",
261
+ "preserveFirstPart": true,
262
+ "patterns": {
263
+ "ipAddress": true,
264
+ "email": true,
265
+ "phone": true,
266
+ "osVersion": true,
267
+ "browserVersion": true
268
+ },
269
+ "customPatterns": [
270
+ {
271
+ "name": "project-api-key",
272
+ "regex": "PROJECT_API_KEY=\\w{32}",
273
+ "mask": "PROJECT_API_KEY=******************************"
274
+ }
275
+ ]
276
+ }
277
+ ```
278
+
279
+ ## 🀝 Contributing
280
+
281
+ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
282
+
283
+ 1. Fork the repository
284
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
285
+ 3. Commit changes (`git commit -m 'Add amazing feature'`)
286
+ 4. Push to branch (`git push origin feature/amazing-feature`)
287
+ 5. Open a Pull Request
288
+
289
+ ## πŸ“„ License
290
+
291
+ MIT License Β© 2024 PrivacyBrush Contributors
292
+
293
+ ## πŸ“ž Support
294
+
295
+ - πŸ› [Issue Tracker](https://github.com/legend80s/privacy-brush/issues)
296
+ - πŸ’¬ [Discussions](https://github.com/legend80s/privacy-brush/discussions)
297
+ - πŸ“– [Documentation](https://github.com/legend80s/privacy-brush/)
298
+
299
+ ---
300
+
301
+ <p align="center">
302
+ <strong>Share Safely, Start with PrivacyBrush</strong><br>
303
+ <sub>Protect privacy, communicate with confidence</sub>
304
+ </p>
305
+
306
+ ## Development
307
+
308
+ ```sh
309
+ # mask stdin with custom patterns
310
+ echo 'DEEPSEEK_API_KEY=sk-af75149812524eb08eb302bf9604c8e8' | node src/cli.mjs --pattern '/sk-[a-z0-9]{20,}/'
311
+
312
+ echo '/c/Users/legend80s/AppData/ /Users/test/code/' | node src/cli.mjs --pattern '/Users/[a-z]{2,}/i'
313
+ # /c/Users/β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ/AppData/ /Users/β–ˆβ–ˆβ–ˆβ–ˆ/code/
314
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "privacy-brush",
3
- "version": "0.0.4",
3
+ "version": "1.0.1",
4
4
  "description": "Automatically mask sensitive information in terminal outputs and logs. Keep your data safe when sharing.",
5
5
  "main": "src/index.mjs",
6
6
  "module": "src/index.mjs",
@@ -21,6 +21,7 @@
21
21
  "author": "",
22
22
  "license": "ISC",
23
23
  "devDependencies": {
24
+ "@typescript/native-preview": "7.0.0-dev.20260122.2",
24
25
  "@types/node": "^25.0.10"
25
26
  }
26
27
  }