@@ -12,68 +12,68 @@ export default class html {
12
12
generateHead : Function = generateHead ;
13
13
14
14
config : Array < Object > = [
15
- {
16
- "elements" : "all" ,
17
- "tags" : [ 'style' ] ,
18
- "action" : "css"
19
- } ,
20
- {
21
- "elements" : [ 'script' , 'iframe' , 'embed' , 'input' , 'track' , 'media' , 'source' , 'img' , 'a' , 'link' , 'area' , 'form' , 'object' ] ,
22
- "tags" : [ 'src' , 'href' , 'action' , 'data' ] ,
23
- "action" : "url"
24
- } ,
25
- {
26
- "elements" : [ 'source' , 'img' ] ,
27
- "tags" : [ 'srcset' ] ,
28
- "action" : "srcset"
29
- } ,
30
- /*{
31
- "elements": ['a', 'link', 'area'],
32
- "tags": ['href'],
33
- "action": "url"
34
- },
35
- {
36
- "elements": ['form'],
37
- "tags": ['action'],
38
- "action": "url"
39
- },
40
- {
41
- "elements": ['object'],
42
- "tags": ['data'],
43
- "action": "url",
44
- },*/
45
- {
46
- "elements" : [ 'script' , 'link' ] ,
47
- "tags" : [ 'integrity' ] ,
48
- "action" : "rewrite" ,
49
- "new" : "nointegrity" ,
50
- } ,
51
- {
52
- "elements" : [ 'script' , 'link' ] ,
53
- "tags" : [ 'nonce' ] ,
54
- "action" : "rewrite" ,
55
- "new" : "nononce" ,
56
- } ,
57
- {
58
- "elements" : [ 'meta' ] ,
59
- "tags" : [ 'http-equiv' ] ,
60
- "action" : "http-equiv" ,
61
- } ,
62
- {
63
- "elements" : [ 'iframe' ] ,
64
- "tags" : [ 'srcdoc' ] ,
65
- "action" : "html" ,
66
- } ,
67
- {
68
- "elements" : [ 'link' ] ,
69
- "tags" : [ "imagesrcset" ] ,
70
- "action" : "srcset" ,
71
- } ,
72
- {
73
- "elements" : 'all' ,
74
- "tags" : [ 'onclick' ] ,
75
- "action" : "js" ,
76
- }
15
+ {
16
+ "elements" : "all" ,
17
+ "tags" : [ 'style' ] ,
18
+ "action" : "css"
19
+ } ,
20
+ {
21
+ "elements" : [ 'script' , 'iframe' , 'embed' , 'input' , 'track' , 'media' , 'source' , 'img' , 'a' , 'link' , 'area' , 'form' , 'object' ] ,
22
+ "tags" : [ 'src' , 'href' , 'action' , 'data' ] ,
23
+ "action" : "url"
24
+ } ,
25
+ {
26
+ "elements" : [ 'source' , 'img' ] ,
27
+ "tags" : [ 'srcset' ] ,
28
+ "action" : "srcset"
29
+ } ,
30
+ /*{
31
+ "elements": ['a', 'link', 'area'],
32
+ "tags": ['href'],
33
+ "action": "url"
34
+ },
35
+ {
36
+ "elements": ['form'],
37
+ "tags": ['action'],
38
+ "action": "url"
39
+ },
40
+ {
41
+ "elements": ['object'],
42
+ "tags": ['data'],
43
+ "action": "url",
44
+ },*/
45
+ {
46
+ "elements" : [ 'script' , 'link' ] ,
47
+ "tags" : [ 'integrity' ] ,
48
+ "action" : "rewrite" ,
49
+ "new" : "nointegrity" ,
50
+ } ,
51
+ {
52
+ "elements" : [ 'script' , 'link' ] ,
53
+ "tags" : [ 'nonce' ] ,
54
+ "action" : "rewrite" ,
55
+ "new" : "nononce" ,
56
+ } ,
57
+ {
58
+ "elements" : [ 'meta' ] ,
59
+ "tags" : [ 'http-equiv' ] ,
60
+ "action" : "http-equiv" ,
61
+ } ,
62
+ {
63
+ "elements" : [ 'iframe' ] ,
64
+ "tags" : [ 'srcdoc' ] ,
65
+ "action" : "html" ,
66
+ } ,
67
+ {
68
+ "elements" : [ 'link' ] ,
69
+ "tags" : [ "imagesrcset" ] ,
70
+ "action" : "srcset" ,
71
+ } ,
72
+ {
73
+ "elements" : 'all' ,
74
+ "tags" : [ 'onclick' ] ,
75
+ "action" : "js" ,
76
+ }
77
77
] ;
78
78
79
79
constructor ( ctx : DynamicRewrites ) {
@@ -93,27 +93,29 @@ The document has moved
93
93
94
94
iterate ( _dom : Object , cb : Function ) {
95
95
function it ( dom : Object | any = _dom ) {
96
- for ( var i = 0 ; i < dom . childNodes . length ; i ++ ) {
96
+ for ( var i = 0 ; i < dom . childNodes . length ; i ++ ) {
97
97
cb ( dom . childNodes [ i ] ) ;
98
-
98
+
99
99
if ( dom . childNodes [ i ] . childNodes ) if ( dom . childNodes [ i ] . childNodes . length ) {
100
100
it ( dom . childNodes [ i ] ) ;
101
101
} ;
102
102
}
103
103
}
104
-
104
+
105
105
it ( _dom ) ;
106
106
}
107
107
108
108
rewrite ( src : string , meta : MetaURL , head : Array < string | Object > = [ ] ) {
109
109
if ( Array . isArray ( src ) ) src = src [ 0 ] ;
110
-
110
+
111
111
if ( ! src ) return src ;
112
112
113
113
src = src . toString ( ) ;
114
114
115
- if ( ! src . match ( / < ( h t m l | s c r i p t | s t y l e ) [ ^ > ] * > / g) && src . match ( / < \! D O C T Y P E [ ^ > ] * > / gi) ) return src ;
115
+ if ( ! src . match ( / < \! D O C T Y P E [ ^ > ] * > / gi) ) {
116
+ src = "<!DOCTYPE html>" + src
117
+ }
116
118
117
- return src . replace ( / ( < ! D O C T Y P E h t m l > | < h t m l ( .* ?) > ) / im, `$1${ head . join ( `` ) } \n` ) . replace ( / < ( s c r i p t | l i n k ) \b [ ^ > ] * > / g, ( e , n ) => e . replace ( / \s n o n c e \s * = \s * " [ ^ " ] * " / , e => e . replace ( "nonce" , "nononce" ) ) . replace ( / \s i n t e g r i t y \s * = \s * " [ ^ " ] * " / , e => e . replace ( "integrity" , "nointegrity" ) ) ) ;
119
+ return src . replace ( / ( < ! D O C T Y P E h t m l > | < h t m l ( .* ?) > ) / im, `$1${ head . join ( `` ) } \n` ) . replace ( / < ( s c r i p t | l i n k ) \b [ ^ > ] * > / g, ( e , n ) => e . replace ( / \s n o n c e \s * = \s * " [ ^ " ] * " / , e => e . replace ( "nonce" , "nononce" ) ) . replace ( / \s i n t e g r i t y \s * = \s * " [ ^ " ] * " / , e => e . replace ( "integrity" , "nointegrity" ) ) ) ;
118
120
}
119
- }
121
+ }
0 commit comments