Gathering detailed insights and metrics for univeil
Gathering detailed insights and metrics for univeil
Gathering detailed insights and metrics for univeil
Gathering detailed insights and metrics for univeil
npm install univeil
Typescript
Module System
Node Version
NPM Version
71.3
Supply Chain
98.8
Quality
76.6
Maintenance
100
Vulnerability
100
License
JavaScript (93.53%)
Shell (6.47%)
Total Downloads
11,059
Last Day
2
Last Week
9
Last Month
56
Last Year
1,664
1 Stars
17 Commits
2 Watchers
1 Branches
1 Contributors
Updated on Jul 21, 2024
Minified
Minified + Gzipped
Latest Version
0.1.19
Package Id
univeil@0.1.19
Unpacked Size
16.94 kB
Size
6.33 kB
File Count
8
NPM Version
6.14.17
Node Version
8.17.0
Published on
Jul 21, 2024
Cumulative downloads
Total Downloads
Last Day
100%
2
Compared to previous day
Last Week
50%
9
Compared to previous week
Last Month
-38.5%
56
Compared to previous month
Last Year
21.7%
1,664
Compared to previous year
1
Unveil some Unicode characters that are easily overlooked.
Although univeil
can replace characters with a backslash notation,
it is about visibility, not security.
It might protect your terminal emulator from that U+0090 device control,
but it won't care about your database or shell, since most quotes and
backslashes are perfectly visible characters.
(For JSON quotes, try univeil.jsonify
.)
Albeit an XML CharRef encoder is included, it usually won't be applied to the predefined entities, as they're perfectly visible. If you need them encoded as well, use xmlunidefuse instead.
'o\u0308'
= 'ö'
≠ 'ö'
), use String#normalize.From test.js:
1var univeil = require('univeil'), cl = console.log, tmp; 2cl(univeil("Hello world!")); //= `Hello world!` 3cl(univeil("Hello snowman! ☃")); //= `Hel\u200Blo\u00A0snowman!\u205F☃` 4cl(univeil("foo \t \r \n")); //= `foo \u0009 \u000D \u000A` 5cl(univeil("\x1B \x7F \xA0 bar")); //= `\u001B \u007F \u00A0 bar` 6 7tmp = '\\,\t,\r,\n,\b,\xA0,\f'; 8cl(univeil(tmp)); //= `\,\u0009,\u000D,\u000A,\u0008,\u00A0,\u000C` 9cl(univeil(tmp, '\xA0\n')); // whitelist 10 //= `\,\u0009,\u000D,` 11 //= `,\u0008, ,\u000C` 12cl(univeil(tmp, { '\xA0': '<nbsp>', '\n': '<nl>', '': '<?!>' })); // dict 13 //= `\,<?!>,<?!>,<nl>,<?!>,<nbsp>,<?!>` 14cl(univeil(tmp, ' \n\xA0', { '': '' })); // whitelist + dict 15 //= `\,,,` 16 //= `,, ,` 17cl(univeil(tmp, encodeURIComponent)); // custom translator function 18 //= `\,%09,%0D,%0A,%08,%C2%A0,%0C` 19cl(univeil(tmp, univeil.xmlCharRef)); // some batteries included 20 //= `\,	, , ,, ,` 21// For more variants, see "Custom translations" below. 22 23tmp = [0, 1, 'nbsp=\xA0', 'devCtrl=\x90', { b: true }, null, -2]; 24cl(univeil.jsonify(tmp)); 25 //= `[0,1,"nbsp=\u00A0","devCtrl=\u0090",{"b":true},null,-2]` 26 27// Special reserved indentation "-1": spaces but no newlines. 28cl(univeil.jsonify(tmp, null, -1)); 29 //= `[0, 1, "nbsp=\u00A0", "devCtrl=\u0090", {"b": true}, null, -2]` 30 31tmp = univeil.funcProxy(cl, null, ['/+'], { '\xA0': '<nbsp>' }, ['+/']); 32tmp('hello\xA0world'); //= `/+ hello<nbsp>world +/`
CLI:
1$ head --lines=1 README.md | univeil 2\uFEFF
ISC
No vulnerabilities found.
Reason
no binaries found in the repo
Reason
0 existing vulnerabilities detected
Reason
Found 0/17 approved changesets -- score normalized to 0
Reason
no SAST tool detected
Details
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
Reason
project is not fuzzed
Details
Reason
license file not detected
Details
Reason
branch protection not enabled on development/release branches
Details
Score
Last Scanned on 2025-05-19
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More