This repository was archived by the owner on Nov 22, 2024. It is now read-only.
File tree 3 files changed +190
-0
lines changed
3 files changed +190
-0
lines changed Original file line number Diff line number Diff line change @@ -4,3 +4,9 @@ declare module "xhr2" {
4
4
nodejsSet ( url : any ) : any ;
5
5
}
6
6
}
7
+
8
+ declare module NodeJS {
9
+ interface Global {
10
+ window : any | Window ;
11
+ }
12
+ }
Original file line number Diff line number Diff line change
1
+ var window = require ( './dist/server/src/node/mock/window' ) ;
2
+ global . window = window ;
Original file line number Diff line number Diff line change
1
+ import { DOM } from 'angular2/src/platform/dom/dom_adapter' ;
2
+ import { provide } from 'angular2/core' ;
3
+
4
+ // the overloaded "window" must extend node's "global"
5
+ // see: https://github.com/angular/angular/blob/master/modules/angular2/src/facade/lang.ts#L38
6
+ var win = Object . create ( global ) ;
7
+
8
+ /**
9
+ * Warn the developer about direct access to Window props
10
+ * @param {String } prop The property being accessed
11
+ */
12
+ function beDefensive ( prop ) {
13
+ return ( < any > win ) . __defineGetter__ ( prop , ( ) => {
14
+ console . warn ( `[WARNING] Property/method "${ prop } " should not be called directly. Use DomAdapter instead.` ) ;
15
+
16
+ // TODO(wassim): find a generic solution to proxify DomAdapter
17
+ // let doc = DOM.defaultDoc();
18
+ // return DOM.querySelector(doc, ...args);
19
+ return prop ;
20
+ } ) ;
21
+ }
22
+
23
+ let unforgeableAttributes = [
24
+ "window" ,
25
+ "document" ,
26
+ "location" ,
27
+ "top"
28
+ ] . map ( beDefensive ) ;
29
+
30
+ let replaceableAttributes = [
31
+ "self" ,
32
+ "locationbar" ,
33
+ "menubar" ,
34
+ "personalbar" ,
35
+ "scrollbars" ,
36
+ "statusbar" ,
37
+ "toolbar" ,
38
+ "frames" ,
39
+ "parent" ,
40
+ "external" ,
41
+ "length" ,
42
+
43
+ // CSSOM-View
44
+ "screen" ,
45
+ "scrollX" ,
46
+ "scrollY" ,
47
+ "pageXOffset" ,
48
+ "pageYOffset" ,
49
+ "innerWidth" ,
50
+ "innerHeight" ,
51
+ "screenX" ,
52
+ "screenY" ,
53
+ "outerWidth" ,
54
+ "outerHeight" ,
55
+ "devicePixelRatio" ,
56
+ ] . map ( beDefensive ) ;
57
+
58
+ let methods = [
59
+ "close" ,
60
+ "stop" ,
61
+ "focus" ,
62
+ "blur" ,
63
+ "open" ,
64
+ "alert" ,
65
+ "confirm" ,
66
+ "prompt" ,
67
+ "print" ,
68
+ "postMessage" ,
69
+
70
+ // WindowBase64
71
+ "btoa" ,
72
+ "atob" ,
73
+
74
+ // WindowTimers
75
+ "setTimeout" ,
76
+ "clearTimeout" ,
77
+ "setInterval" ,
78
+ "clearInterval" ,
79
+
80
+ // HTML Editing APIs
81
+ "getSelection" ,
82
+
83
+ // CSSOM
84
+ "getComputedStyle" ,
85
+
86
+ // CSSOM-View
87
+ "matchMedia" ,
88
+ "scroll" ,
89
+ "scrollTo" ,
90
+ "scrollBy"
91
+ ] . map ( beDefensive ) ;
92
+
93
+ let readonlyAttributes = [
94
+ "history" ,
95
+ "frameElement" ,
96
+ "navigator" ,
97
+ "applicationCache" ,
98
+
99
+ // WindowSessionStorage
100
+ "sessionStorage" ,
101
+
102
+ // WindowLocalStorage
103
+ "localStorage" ,
104
+ ] . map ( beDefensive ) ;
105
+
106
+ let writableAttributes = [
107
+ "name" ,
108
+ "status" ,
109
+ "opener" ,
110
+ "onabort" ,
111
+ "onafterprint" ,
112
+ "onbeforeprint" ,
113
+ "onbeforeunload" ,
114
+ "onblur" ,
115
+ "oncancel" ,
116
+ "oncanplay" ,
117
+ "oncanplaythrough" ,
118
+ "onchange" ,
119
+ "onclick" ,
120
+ "onclose" ,
121
+ "oncontextmenu" ,
122
+ "oncuechange" ,
123
+ "ondblclick" ,
124
+ "ondrag" ,
125
+ "ondragend" ,
126
+ "ondragenter" ,
127
+ "ondragleave" ,
128
+ "ondragover" ,
129
+ "ondragstart" ,
130
+ "ondrop" ,
131
+ "ondurationchange" ,
132
+ "onemptied" ,
133
+ "onended" ,
134
+ "onerror" ,
135
+ "onfocus" ,
136
+ "onhashchange" ,
137
+ "oninput" ,
138
+ "oninvalid" ,
139
+ "onkeydown" ,
140
+ "onkeypress" ,
141
+ "onkeyup" ,
142
+ "onload" ,
143
+ "onloadeddata" ,
144
+ "onloadedmetadata" ,
145
+ "onloadstart" ,
146
+ "onmessage" ,
147
+ "onmousedown" ,
148
+ "onmousemove" ,
149
+ "onmouseout" ,
150
+ "onmouseover" ,
151
+ "onmouseup" ,
152
+ "onmousewheel" ,
153
+ "onoffline" ,
154
+ "ononline" ,
155
+ "onpause" ,
156
+ "onplay" ,
157
+ "onplaying" ,
158
+ "onpagehide" ,
159
+ "onpageshow" ,
160
+ "onpopstate" ,
161
+ "onprogress" ,
162
+ "onratechange" ,
163
+ "onreset" ,
164
+ "onresize" ,
165
+ "onscroll" ,
166
+ "onseeked" ,
167
+ "onseeking" ,
168
+ "onselect" ,
169
+ "onshow" ,
170
+ "onstalled" ,
171
+ "onstorage" ,
172
+ "onsubmit" ,
173
+ "onsuspend" ,
174
+ "ontimeupdate" ,
175
+ "onunload" ,
176
+ "onvolumechange" ,
177
+ "onwaiting"
178
+ ] . map ( beDefensive ) ;
179
+
180
+ export var window = win ;
181
+ global . window = win ;
182
+ GLOBAL . window = win ;
You can’t perform that action at this time.
0 commit comments