123456789101112131415161718192021222324252627282930 |
- 'use strict';
- const htmlCommentRegex = require('html-comment-regex');
-
- const isBinary = buffer => {
- const isBuffer = Buffer.isBuffer(buffer);
-
- for (let i = 0; i < 24; i++) {
- const characterCode = isBuffer ? buffer[i] : buffer.charCodeAt(i);
-
- if (characterCode === 65533 || characterCode <= 8) {
- return true;
- }
- }
-
- return false;
- };
-
- const cleanEntities = svg => {
- const entityRegex = /\s*<!Entity\s+\S*\s*(?:"|')[^"]+(?:"|')\s*>/img;
- // Remove entities
- return svg.replace(entityRegex, '');
- };
-
- const regex = /^\s*(?:<\?xml[^>]*>\s*)?(?:<!doctype svg[^>]*\s*(?:\[?(?:\s*<![^>]*>\s*)*\]?)*[^>]*>\s*)?(?:<svg[^>]*>[^]*<\/svg>|<svg[^/>]*\/\s*>)\s*$/i;
-
- const isSvg = input => Boolean(input) && !isBinary(input) && regex.test(cleanEntities(input.toString()).replace(htmlCommentRegex, ''));
-
- module.exports = isSvg;
- // TODO: Remove this for the next major release
- module.exports.default = isSvg;
|