- Include source maps into the npm package.
- Introduce
nonAsciiPrintableOnly
mode.
- Reduce unnecessarily long RegExps.
- Fix the problem decoding HTML5 entities those names are part of HTML4 entities.
package.json
: specifysideEffects: false
- Minimize data files, remove unnecessary files.
- Improve performance of
encode()
,decode()
anddecodeEntity()
by using function inlining. - Fix decoding HEX HTML entities in some cases.
- Add flow types.
- A fast
decodeEntity()
method to decode a single HTML entity.
- Speed up both
encode()
anddecode()
methods.
- Add
extensive
mode toencode()
method. This mode encodes all non-printable characters, non-ASCII characters and all characters with named references.
- Handle invalid numeric HTML entities: mimic browser behaviour.
- Handling behaviour of ambiguous ampersands.
- Fix webpack build warning.
- Handle invalid numeric HTML entities.
- Handle
null
andundefined
text values.
- Fix decoding numeric HTML entities.
-
Performance was greatly improved.
-
New API: simpler and more flexible.
htmlEntitiesInstance.encode(text)
->encode(text)
Before:
import {AllHtmlEntities} from 'html-entities'; const entities = new AllHtmlEntities(); console.log( entities.encode('<Hello & World>') );
After:
import {encode} from 'html-entities'; console.log( encode('<Hello & World>') );
instance.encodeNonASCII(text)
->encode(text, {mode: 'nonAscii'})
Before:
import {AllHtmlEntities} from 'html-entities'; const entities = new AllHtmlEntities(); console.log( entities.encodeNonASCII('& © ∆') );
After:
import {encode} from 'html-entities'; console.log( encode('& © ∆', {mode: 'nonAscii'}) );
instance.encodeNonASCII(text)
->encode(text, {mode: 'nonAsciiPrintable'})
Before:
import {AllHtmlEntities} from 'html-entities'; const entities = new AllHtmlEntities(); console.log( entities.encodeNonASCII('& © ∆ \x01') );
After:
import {encode} from 'html-entities'; console.log( encode('& © ∆ \x01', {mode: 'nonAsciiPrintable'}) );
instance.decode(text)
->decode(text)
Before:
import {AllHtmlEntities} from 'html-entities'; const entities = new AllHtmlEntities(); console.log( entities.decode('<>&') );
After:
import {decode} from 'html-entities'; console.log( decode('<>&') );
Different XML/HTML versions are now implemented via options instead of different classes.
Before:
import {XmlEntities, Html4Entities, Html5Entities, AllHtmlEntities} from 'html-entities'; const xmlEntities = new XmlEntities(); const html4Entities = new Html4Entities(); const html5Entities = new Html5Entities(); const allHtmlEntities = new AllHtmlEntities(); console.log(xmlEntities.encode('<>&')); console.log(html4Entities.encode('<>&©')); console.log(html5Entities.encode('<>&©℞')); console.log(allHtmlEntities.encode('<>&©℞')); console.log(xmlEntities.decode('<>&')); console.log(html4Entities.decode('<>&©')); console.log(html5Entities.decode('<>&©℞')); console.log(allHtmlEntities.decode('<>&©℞'));
After:
import {encode, decode} from 'html-entities'; console.log(encode('<>&', {level: 'xml'})); console.log(encode('<>&©', {level: 'html4', mode: 'nonAscii'})); console.log(encode('<>&©℞', {level: 'html5', mode: 'nonAscii'})); console.log(encode('<>&©℞', {level: 'all', mode: 'nonAscii'})); console.log(decode('<>&', {level: 'xml'})); console.log(decode('<>&©', {level: 'html4'})); console.log(decode('<>&©℞', {level: 'html5'})); console.log(decode('<>&©℞', {level: 'all'}));