forked from remarkjs/react-markdown
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuriTransformer.js
More file actions
41 lines (31 loc) Β· 798 Bytes
/
uriTransformer.js
File metadata and controls
41 lines (31 loc) Β· 798 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
'use strict';
var protocols = ['http', 'https', 'mailto', 'tel'];
module.exports = function uriTransformer(uri) {
var url = (uri || '').trim();
var first = url.charAt(0);
if (first === '#' || first === '/') {
return url;
}
var colon = url.indexOf(':');
if (colon === -1) {
return url;
}
var length = protocols.length;
var index = -1;
while (++index < length) {
var protocol = protocols[index];
if (colon === protocol.length && url.slice(0, protocol.length) === protocol) {
return url;
}
}
index = url.indexOf('?');
if (index !== -1 && colon > index) {
return url;
}
index = url.indexOf('#');
if (index !== -1 && colon > index) {
return url;
}
// eslint-disable-next-line no-script-url
return 'javascript:void(0)';
};