diff options
Diffstat (limited to 'includes/external/addressbook/node_modules/validator/lib/isDataURI.js')
-rw-r--r-- | includes/external/addressbook/node_modules/validator/lib/isDataURI.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/includes/external/addressbook/node_modules/validator/lib/isDataURI.js b/includes/external/addressbook/node_modules/validator/lib/isDataURI.js new file mode 100644 index 0000000..f1b672a --- /dev/null +++ b/includes/external/addressbook/node_modules/validator/lib/isDataURI.js @@ -0,0 +1,53 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isDataURI; + +var _assertString = _interopRequireDefault(require("./util/assertString")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var validMediaType = /^[a-z]+\/[a-z0-9\-\+\._]+$/i; +var validAttribute = /^[a-z\-]+=[a-z0-9\-]+$/i; +var validData = /^[a-z0-9!\$&'\(\)\*\+,;=\-\._~:@\/\?%\s]*$/i; + +function isDataURI(str) { + (0, _assertString.default)(str); + var data = str.split(','); + + if (data.length < 2) { + return false; + } + + var attributes = data.shift().trim().split(';'); + var schemeAndMediaType = attributes.shift(); + + if (schemeAndMediaType.slice(0, 5) !== 'data:') { + return false; + } + + var mediaType = schemeAndMediaType.slice(5); + + if (mediaType !== '' && !validMediaType.test(mediaType)) { + return false; + } + + for (var i = 0; i < attributes.length; i++) { + if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') && !validAttribute.test(attributes[i])) { + return false; + } + } + + for (var _i = 0; _i < data.length; _i++) { + if (!validData.test(data[_i])) { + return false; + } + } + + return true; +} + +module.exports = exports.default; +module.exports.default = exports.default;
\ No newline at end of file |