summaryrefslogtreecommitdiff
path: root/includes/external/addressbook/node_modules/validator/lib/isDataURI.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/addressbook/node_modules/validator/lib/isDataURI.js')
-rw-r--r--includes/external/addressbook/node_modules/validator/lib/isDataURI.js53
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