Show More
@@ -1,196 +1,200 b'' | |||||
1 | { |
|
1 | { | |
2 | "dirs": { |
|
2 | "dirs": { | |
3 | "css": { |
|
3 | "css": { | |
4 | "src":"rhodecode/public/css", |
|
4 | "src":"rhodecode/public/css", | |
5 | "dest":"rhodecode/public/css" |
|
5 | "dest":"rhodecode/public/css" | |
6 | }, |
|
6 | }, | |
7 | "js": { |
|
7 | "js": { | |
8 | "src": "rhodecode/public/js/src", |
|
8 | "src": "rhodecode/public/js/src", | |
9 | "src_rc": "rhodecode/public/js/rhodecode", |
|
9 | "src_rc": "rhodecode/public/js/rhodecode", | |
10 | "dest": "rhodecode/public/js", |
|
10 | "dest": "rhodecode/public/js", | |
11 | "bower": "bower_components", |
|
11 | "bower": "bower_components", | |
12 | "node_modules": "node_modules" |
|
12 | "node_modules": "node_modules" | |
13 | } |
|
13 | } | |
14 | }, |
|
14 | }, | |
15 | "copy": { |
|
15 | "copy": { | |
16 | "main": { |
|
16 | "main": { | |
17 | "expand": true, |
|
17 | "expand": true, | |
18 | "cwd": "bower_components", |
|
18 | "cwd": "bower_components", | |
19 | "src": "webcomponentsjs/webcomponents-lite.js", |
|
19 | "src": "webcomponentsjs/webcomponents-lite.js", | |
20 | "dest": "<%= dirs.js.dest %>/vendors" |
|
20 | "dest": "<%= dirs.js.dest %>/vendors" | |
21 | } |
|
21 | } | |
22 | }, |
|
22 | }, | |
23 | "concat": { |
|
23 | "concat": { | |
24 | "polymercss": { |
|
24 | "polymercss": { | |
25 | "src": [ |
|
25 | "src": [ | |
26 | "<%= dirs.js.src %>/components/root-styles-prefix.html", |
|
26 | "<%= dirs.js.src %>/components/root-styles-prefix.html", | |
27 | "<%= dirs.css.src %>/style-polymer.css", |
|
27 | "<%= dirs.css.src %>/style-polymer.css", | |
28 | "<%= dirs.js.src %>/components/root-styles-suffix.html" |
|
28 | "<%= dirs.js.src %>/components/root-styles-suffix.html" | |
29 | ], |
|
29 | ], | |
30 | "dest": "<%= dirs.js.dest %>/src/components/root-styles.gen.html", |
|
30 | "dest": "<%= dirs.js.dest %>/src/components/root-styles.gen.html", | |
31 | "nonull": true |
|
31 | "nonull": true | |
32 | }, |
|
32 | }, | |
33 | "dist": { |
|
33 | "dist": { | |
34 | "src": [ |
|
34 | "src": [ | |
35 | "<%= dirs.js.node_modules %>/jquery/dist/jquery.min.js", |
|
35 | "<%= dirs.js.node_modules %>/jquery/dist/jquery.min.js", | |
36 | "<%= dirs.js.node_modules %>/mousetrap/mousetrap.min.js", |
|
36 | "<%= dirs.js.node_modules %>/mousetrap/mousetrap.min.js", | |
37 | "<%= dirs.js.node_modules %>/moment/min/moment.min.js", |
|
37 | "<%= dirs.js.node_modules %>/moment/min/moment.min.js", | |
38 | "<%= dirs.js.node_modules %>/clipboard/dist/clipboard.min.js", |
|
38 | "<%= dirs.js.node_modules %>/clipboard/dist/clipboard.min.js", | |
39 | "<%= dirs.js.node_modules %>/favico.js/favico-0.3.10.min.js", |
|
39 | "<%= dirs.js.node_modules %>/favico.js/favico-0.3.10.min.js", | |
|
40 | "<%= dirs.js.node_modules %>/sticky-sidebar/dist/sticky-sidebar.min.js", | |||
|
41 | "<%= dirs.js.node_modules %>/sticky-sidebar/dist/jquery.sticky-sidebar.min.js", | |||
|
42 | "<%= dirs.js.node_modules %>/waypoints/lib/noframework.waypoints.min.js", | |||
|
43 | "<%= dirs.js.node_modules %>/waypoints/lib/jquery.waypoints.min.js", | |||
40 | "<%= dirs.js.node_modules %>/appenlight-client/appenlight-client.min.js", |
|
44 | "<%= dirs.js.node_modules %>/appenlight-client/appenlight-client.min.js", | |
41 | "<%= dirs.js.src %>/logging.js", |
|
45 | "<%= dirs.js.src %>/logging.js", | |
42 | "<%= dirs.js.src %>/bootstrap.js", |
|
46 | "<%= dirs.js.src %>/bootstrap.js", | |
43 | "<%= dirs.js.src %>/i18n_utils.js", |
|
47 | "<%= dirs.js.src %>/i18n_utils.js", | |
44 | "<%= dirs.js.src %>/deform.js", |
|
48 | "<%= dirs.js.src %>/deform.js", | |
45 | "<%= dirs.js.src %>/ejs.js", |
|
49 | "<%= dirs.js.src %>/ejs.js", | |
46 | "<%= dirs.js.src %>/ejs_templates/utils.js", |
|
50 | "<%= dirs.js.src %>/ejs_templates/utils.js", | |
47 | "<%= dirs.js.src %>/plugins/jquery.pjax.js", |
|
51 | "<%= dirs.js.src %>/plugins/jquery.pjax.js", | |
48 | "<%= dirs.js.src %>/plugins/jquery.dataTables.js", |
|
52 | "<%= dirs.js.src %>/plugins/jquery.dataTables.js", | |
49 | "<%= dirs.js.src %>/plugins/flavoured_checkbox.js", |
|
53 | "<%= dirs.js.src %>/plugins/flavoured_checkbox.js", | |
50 | "<%= dirs.js.src %>/plugins/jquery.auto-grow-input.js", |
|
54 | "<%= dirs.js.src %>/plugins/jquery.auto-grow-input.js", | |
51 | "<%= dirs.js.src %>/plugins/jquery.autocomplete.js", |
|
55 | "<%= dirs.js.src %>/plugins/jquery.autocomplete.js", | |
52 | "<%= dirs.js.src %>/plugins/jquery.debounce.js", |
|
56 | "<%= dirs.js.src %>/plugins/jquery.debounce.js", | |
53 | "<%= dirs.js.src %>/plugins/jquery.mark.js", |
|
57 | "<%= dirs.js.src %>/plugins/jquery.mark.js", | |
54 | "<%= dirs.js.src %>/plugins/jquery.timeago.js", |
|
58 | "<%= dirs.js.src %>/plugins/jquery.timeago.js", | |
55 | "<%= dirs.js.src %>/plugins/jquery.timeago-extension.js", |
|
59 | "<%= dirs.js.src %>/plugins/jquery.timeago-extension.js", | |
56 | "<%= dirs.js.src %>/select2/select2.js", |
|
60 | "<%= dirs.js.src %>/select2/select2.js", | |
57 | "<%= dirs.js.src %>/codemirror/codemirror.js", |
|
61 | "<%= dirs.js.src %>/codemirror/codemirror.js", | |
58 | "<%= dirs.js.src %>/codemirror/codemirror_loadmode.js", |
|
62 | "<%= dirs.js.src %>/codemirror/codemirror_loadmode.js", | |
59 | "<%= dirs.js.src %>/codemirror/codemirror_hint.js", |
|
63 | "<%= dirs.js.src %>/codemirror/codemirror_hint.js", | |
60 | "<%= dirs.js.src %>/codemirror/codemirror_overlay.js", |
|
64 | "<%= dirs.js.src %>/codemirror/codemirror_overlay.js", | |
61 | "<%= dirs.js.src %>/codemirror/codemirror_placeholder.js", |
|
65 | "<%= dirs.js.src %>/codemirror/codemirror_placeholder.js", | |
62 | "<%= dirs.js.src %>/codemirror/codemirror_simplemode.js", |
|
66 | "<%= dirs.js.src %>/codemirror/codemirror_simplemode.js", | |
63 | "<%= dirs.js.dest %>/mode/meta.js", |
|
67 | "<%= dirs.js.dest %>/mode/meta.js", | |
64 | "<%= dirs.js.dest %>/mode/meta_ext.js", |
|
68 | "<%= dirs.js.dest %>/mode/meta_ext.js", | |
65 | "<%= dirs.js.src_rc %>/i18n/select2/translations.js", |
|
69 | "<%= dirs.js.src_rc %>/i18n/select2/translations.js", | |
66 | "<%= dirs.js.src %>/rhodecode/utils/array.js", |
|
70 | "<%= dirs.js.src %>/rhodecode/utils/array.js", | |
67 | "<%= dirs.js.src %>/rhodecode/utils/string.js", |
|
71 | "<%= dirs.js.src %>/rhodecode/utils/string.js", | |
68 | "<%= dirs.js.src %>/rhodecode/utils/pyroutes.js", |
|
72 | "<%= dirs.js.src %>/rhodecode/utils/pyroutes.js", | |
69 | "<%= dirs.js.src %>/rhodecode/utils/ajax.js", |
|
73 | "<%= dirs.js.src %>/rhodecode/utils/ajax.js", | |
70 | "<%= dirs.js.src %>/rhodecode/utils/autocomplete.js", |
|
74 | "<%= dirs.js.src %>/rhodecode/utils/autocomplete.js", | |
71 | "<%= dirs.js.src %>/rhodecode/utils/colorgenerator.js", |
|
75 | "<%= dirs.js.src %>/rhodecode/utils/colorgenerator.js", | |
72 | "<%= dirs.js.src %>/rhodecode/utils/ie.js", |
|
76 | "<%= dirs.js.src %>/rhodecode/utils/ie.js", | |
73 | "<%= dirs.js.src %>/rhodecode/utils/os.js", |
|
77 | "<%= dirs.js.src %>/rhodecode/utils/os.js", | |
74 | "<%= dirs.js.src %>/rhodecode/utils/topics.js", |
|
78 | "<%= dirs.js.src %>/rhodecode/utils/topics.js", | |
75 | "<%= dirs.js.src %>/rhodecode/init.js", |
|
79 | "<%= dirs.js.src %>/rhodecode/init.js", | |
76 | "<%= dirs.js.src %>/rhodecode/changelog.js", |
|
80 | "<%= dirs.js.src %>/rhodecode/changelog.js", | |
77 | "<%= dirs.js.src %>/rhodecode/codemirror.js", |
|
81 | "<%= dirs.js.src %>/rhodecode/codemirror.js", | |
78 | "<%= dirs.js.src %>/rhodecode/comments.js", |
|
82 | "<%= dirs.js.src %>/rhodecode/comments.js", | |
79 | "<%= dirs.js.src %>/rhodecode/constants.js", |
|
83 | "<%= dirs.js.src %>/rhodecode/constants.js", | |
80 | "<%= dirs.js.src %>/rhodecode/files.js", |
|
84 | "<%= dirs.js.src %>/rhodecode/files.js", | |
81 | "<%= dirs.js.src %>/rhodecode/followers.js", |
|
85 | "<%= dirs.js.src %>/rhodecode/followers.js", | |
82 | "<%= dirs.js.src %>/rhodecode/menus.js", |
|
86 | "<%= dirs.js.src %>/rhodecode/menus.js", | |
83 | "<%= dirs.js.src %>/rhodecode/notifications.js", |
|
87 | "<%= dirs.js.src %>/rhodecode/notifications.js", | |
84 | "<%= dirs.js.src %>/rhodecode/permissions.js", |
|
88 | "<%= dirs.js.src %>/rhodecode/permissions.js", | |
85 | "<%= dirs.js.src %>/rhodecode/pjax.js", |
|
89 | "<%= dirs.js.src %>/rhodecode/pjax.js", | |
86 | "<%= dirs.js.src %>/rhodecode/pullrequests.js", |
|
90 | "<%= dirs.js.src %>/rhodecode/pullrequests.js", | |
87 | "<%= dirs.js.src %>/rhodecode/settings.js", |
|
91 | "<%= dirs.js.src %>/rhodecode/settings.js", | |
88 | "<%= dirs.js.src %>/rhodecode/select2_widgets.js", |
|
92 | "<%= dirs.js.src %>/rhodecode/select2_widgets.js", | |
89 | "<%= dirs.js.src %>/rhodecode/tooltips.js", |
|
93 | "<%= dirs.js.src %>/rhodecode/tooltips.js", | |
90 | "<%= dirs.js.src %>/rhodecode/users.js", |
|
94 | "<%= dirs.js.src %>/rhodecode/users.js", | |
91 | "<%= dirs.js.src %>/rhodecode/appenlight.js", |
|
95 | "<%= dirs.js.src %>/rhodecode/appenlight.js", | |
92 | "<%= dirs.js.src %>/rhodecode.js" |
|
96 | "<%= dirs.js.src %>/rhodecode.js" | |
93 | ], |
|
97 | ], | |
94 | "dest": "<%= dirs.js.dest %>/scripts.js", |
|
98 | "dest": "<%= dirs.js.dest %>/scripts.js", | |
95 | "nonull": true |
|
99 | "nonull": true | |
96 | } |
|
100 | } | |
97 | }, |
|
101 | }, | |
98 | "crisper": { |
|
102 | "crisper": { | |
99 | "dist": { |
|
103 | "dist": { | |
100 | "options": { |
|
104 | "options": { | |
101 | "cleanup": false, |
|
105 | "cleanup": false, | |
102 | "onlySplit": true |
|
106 | "onlySplit": true | |
103 | }, |
|
107 | }, | |
104 | "src": "<%= dirs.js.dest %>/rhodecode-components.html", |
|
108 | "src": "<%= dirs.js.dest %>/rhodecode-components.html", | |
105 | "dest": "<%= dirs.js.dest %>/rhodecode-components.js" |
|
109 | "dest": "<%= dirs.js.dest %>/rhodecode-components.js" | |
106 | } |
|
110 | } | |
107 | }, |
|
111 | }, | |
108 | "less": { |
|
112 | "less": { | |
109 | "development": { |
|
113 | "development": { | |
110 | "options": { |
|
114 | "options": { | |
111 | "compress": false, |
|
115 | "compress": false, | |
112 | "yuicompress": false, |
|
116 | "yuicompress": false, | |
113 | "optimization": 0 |
|
117 | "optimization": 0 | |
114 | }, |
|
118 | }, | |
115 | "files": { |
|
119 | "files": { | |
116 | "<%= dirs.css.dest %>/style.css": "<%= dirs.css.src %>/main.less", |
|
120 | "<%= dirs.css.dest %>/style.css": "<%= dirs.css.src %>/main.less", | |
117 | "<%= dirs.css.dest %>/style-polymer.css": "<%= dirs.css.src %>/polymer.less" |
|
121 | "<%= dirs.css.dest %>/style-polymer.css": "<%= dirs.css.src %>/polymer.less" | |
118 | } |
|
122 | } | |
119 | }, |
|
123 | }, | |
120 | "production": { |
|
124 | "production": { | |
121 | "options": { |
|
125 | "options": { | |
122 | "compress": true, |
|
126 | "compress": true, | |
123 | "yuicompress": true, |
|
127 | "yuicompress": true, | |
124 | "optimization": 2 |
|
128 | "optimization": 2 | |
125 | }, |
|
129 | }, | |
126 | "files": { |
|
130 | "files": { | |
127 | "<%= dirs.css.dest %>/style.css": "<%= dirs.css.src %>/main.less", |
|
131 | "<%= dirs.css.dest %>/style.css": "<%= dirs.css.src %>/main.less", | |
128 | "<%= dirs.css.dest %>/style-polymer.css": "<%= dirs.css.src %>/polymer.less" |
|
132 | "<%= dirs.css.dest %>/style-polymer.css": "<%= dirs.css.src %>/polymer.less" | |
129 | } |
|
133 | } | |
130 | }, |
|
134 | }, | |
131 | "components": { |
|
135 | "components": { | |
132 | "files": [ |
|
136 | "files": [ | |
133 | { |
|
137 | { | |
134 | "cwd": "<%= dirs.js.src %>/components/", |
|
138 | "cwd": "<%= dirs.js.src %>/components/", | |
135 | "dest": "<%= dirs.js.src %>/components/", |
|
139 | "dest": "<%= dirs.js.src %>/components/", | |
136 | "src": [ |
|
140 | "src": [ | |
137 | "**/*.less" |
|
141 | "**/*.less" | |
138 | ], |
|
142 | ], | |
139 | "expand": true, |
|
143 | "expand": true, | |
140 | "ext": ".css" |
|
144 | "ext": ".css" | |
141 | } |
|
145 | } | |
142 | ] |
|
146 | ] | |
143 | } |
|
147 | } | |
144 | }, |
|
148 | }, | |
145 | "watch": { |
|
149 | "watch": { | |
146 | "less": { |
|
150 | "less": { | |
147 | "files": [ |
|
151 | "files": [ | |
148 | "<%= dirs.css.src %>/**/*.less", |
|
152 | "<%= dirs.css.src %>/**/*.less", | |
149 | "<%= dirs.js.src %>/components/**/*.less" |
|
153 | "<%= dirs.js.src %>/components/**/*.less" | |
150 | ], |
|
154 | ], | |
151 | "tasks": [ |
|
155 | "tasks": [ | |
152 | "less:development", |
|
156 | "less:development", | |
153 | "less:components", |
|
157 | "less:components", | |
154 | "concat:polymercss", |
|
158 | "concat:polymercss", | |
155 | "vulcanize", |
|
159 | "vulcanize", | |
156 | "crisper", |
|
160 | "crisper", | |
157 | "concat:dist" |
|
161 | "concat:dist" | |
158 | ] |
|
162 | ] | |
159 | }, |
|
163 | }, | |
160 | "js": { |
|
164 | "js": { | |
161 | "files": [ |
|
165 | "files": [ | |
162 | "!<%= dirs.js.src %>/components/root-styles.gen.html", |
|
166 | "!<%= dirs.js.src %>/components/root-styles.gen.html", | |
163 | "<%= dirs.js.src %>/**/*.js", |
|
167 | "<%= dirs.js.src %>/**/*.js", | |
164 | "<%= dirs.js.src %>/components/**/*.html" |
|
168 | "<%= dirs.js.src %>/components/**/*.html" | |
165 | ], |
|
169 | ], | |
166 | "tasks": [ |
|
170 | "tasks": [ | |
167 | "less:components", |
|
171 | "less:components", | |
168 | "concat:polymercss", |
|
172 | "concat:polymercss", | |
169 | "vulcanize", |
|
173 | "vulcanize", | |
170 | "crisper", |
|
174 | "crisper", | |
171 | "concat:dist" |
|
175 | "concat:dist" | |
172 | ] |
|
176 | ] | |
173 | } |
|
177 | } | |
174 | }, |
|
178 | }, | |
175 | "jshint": { |
|
179 | "jshint": { | |
176 | "rhodecode": { |
|
180 | "rhodecode": { | |
177 | "src": "<%= dirs.js.src %>/rhodecode/**/*.js", |
|
181 | "src": "<%= dirs.js.src %>/rhodecode/**/*.js", | |
178 | "options": { |
|
182 | "options": { | |
179 | "jshintrc": ".jshintrc" |
|
183 | "jshintrc": ".jshintrc" | |
180 | } |
|
184 | } | |
181 | } |
|
185 | } | |
182 | }, |
|
186 | }, | |
183 | "vulcanize": { |
|
187 | "vulcanize": { | |
184 | "default": { |
|
188 | "default": { | |
185 | "options": { |
|
189 | "options": { | |
186 | "abspath": "", |
|
190 | "abspath": "", | |
187 | "inlineScripts": true, |
|
191 | "inlineScripts": true, | |
188 | "inlineCss": true, |
|
192 | "inlineCss": true, | |
189 | "stripComments": true |
|
193 | "stripComments": true | |
190 | }, |
|
194 | }, | |
191 | "files": { |
|
195 | "files": { | |
192 | "<%= dirs.js.dest %>/rhodecode-components.html": "<%= dirs.js.src %>/components/shared-components.html" |
|
196 | "<%= dirs.js.dest %>/rhodecode-components.html": "<%= dirs.js.src %>/components/shared-components.html" | |
193 | } |
|
197 | } | |
194 | } |
|
198 | } | |
195 | } |
|
199 | } | |
196 | } |
|
200 | } |
@@ -1,33 +1,35 b'' | |||||
1 | { |
|
1 | { | |
2 | "name": "rhodecode-enterprise", |
|
2 | "name": "rhodecode-enterprise", | |
3 | "version": "1.0.0", |
|
3 | "version": "1.0.0", | |
4 | "private": true, |
|
4 | "private": true, | |
5 | "description" : "RhodeCode JS packaged", |
|
5 | "description" : "RhodeCode JS packaged", | |
6 | "license": "SEE LICENSE IN LICENSE.txt", |
|
6 | "license": "SEE LICENSE IN LICENSE.txt", | |
7 | "repository" : { |
|
7 | "repository" : { | |
8 | "type" : "hg", |
|
8 | "type" : "hg", | |
9 | "url" : "https://code.rhodecode.com/rhodecode-enterprise-ce" |
|
9 | "url" : "https://code.rhodecode.com/rhodecode-enterprise-ce" | |
10 | }, |
|
10 | }, | |
11 | "devDependencies": { |
|
11 | "devDependencies": { | |
12 | "grunt": "^0.4.5", |
|
12 | "grunt": "^0.4.5", | |
13 | "grunt-contrib-copy": "^1.0.0", |
|
13 | "grunt-contrib-copy": "^1.0.0", | |
14 | "grunt-contrib-concat": "^0.5.1", |
|
14 | "grunt-contrib-concat": "^0.5.1", | |
15 | "grunt-contrib-jshint": "^0.12.0", |
|
15 | "grunt-contrib-jshint": "^0.12.0", | |
16 | "grunt-contrib-less": "^1.1.0", |
|
16 | "grunt-contrib-less": "^1.1.0", | |
17 | "grunt-contrib-watch": "^0.6.1", |
|
17 | "grunt-contrib-watch": "^0.6.1", | |
18 | "crisper": "^2.1.1", |
|
18 | "crisper": "^2.1.1", | |
19 | "vulcanize": "^1.16.0", |
|
19 | "vulcanize": "^1.16.0", | |
20 | "grunt-crisper": "^1.0.1", |
|
20 | "grunt-crisper": "^1.0.1", | |
21 | "grunt-vulcanize": "^1.0.0", |
|
21 | "grunt-vulcanize": "^1.0.0", | |
22 | "node2nix": "^1.0.0", |
|
22 | "node2nix": "^1.0.0", | |
23 | "jshint": "^2.9.1-rc3", |
|
23 | "jshint": "^2.9.1-rc3", | |
24 | "bower": "^1.8.4", |
|
24 | "bower": "^1.8.4", | |
25 | "jquery": "1.11.3", |
|
25 | "jquery": "1.11.3", | |
26 | "favico.js": "^0.3.10", |
|
26 | "favico.js": "^0.3.10", | |
27 | "clipboard": "^2.0.1", |
|
27 | "clipboard": "^2.0.1", | |
28 | "qrious": "^4.0.2", |
|
28 | "qrious": "^4.0.2", | |
29 | "moment": "^2.18.1", |
|
29 | "moment": "^2.18.1", | |
30 | "mousetrap": "^1.6.1", |
|
30 | "mousetrap": "^1.6.1", | |
|
31 | "sticky-sidebar": "3.3.1", | |||
|
32 | "waypoints": "4.0.1", | |||
31 | "appenlight-client": "git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" |
|
33 | "appenlight-client": "git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" | |
32 | } |
|
34 | } | |
33 | } |
|
35 | } |
@@ -1,30 +1,30 b'' | |||||
1 | # Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix) |
|
1 | # Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix) | |
2 | { fetchbower, buildEnv }: |
|
2 | { fetchbower, buildEnv }: | |
3 | buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [ |
|
3 | buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [ | |
4 | (fetchbower "webcomponentsjs" "1.2.3" "^1.2.3" "0db2fjk779rhl9d4ifpk1j9a83vngx6j3hk7si1752dqxj857267") |
|
4 | (fetchbower "webcomponentsjs" "1.2.7" "^1.2.3" "0wbybia53zjfcyh4yvjc4ds8vvfizmmsyd35qgja4v0hlyvf4zms") | |
5 |
(fetchbower "polymer" "Polymer/polymer#2.6. |
|
5 | (fetchbower "polymer" "Polymer/polymer#2.6.1" "Polymer/polymer#^2.6.0" "0zr44hh50851hfqwgw5r4pa330p1jp60rrffcqrw3wwggfl38s4n") | |
6 |
(fetchbower "paper-button" "PolymerElements/paper-button#2.1. |
|
6 | (fetchbower "paper-button" "PolymerElements/paper-button#2.1.3" "PolymerElements/paper-button#^2.1.2" "1w016daj1l8hyklaqskcz4c3zxcm77cd5k3lj0324xn45n3vvphc") | |
7 | (fetchbower "paper-spinner" "PolymerElements/paper-spinner#2.1.0" "PolymerElements/paper-spinner#^2.1.0" "07jamgxzvy4r9pgf5ikj1fm8nkrw6sywgcxvmm7ax58hjvmd4i45") |
|
7 | (fetchbower "paper-spinner" "PolymerElements/paper-spinner#2.1.0" "PolymerElements/paper-spinner#^2.1.0" "07jamgxzvy4r9pgf5ikj1fm8nkrw6sywgcxvmm7ax58hjvmd4i45") | |
8 | (fetchbower "paper-tooltip" "PolymerElements/paper-tooltip#2.1.1" "PolymerElements/paper-tooltip#^2.1.1" "0ja9vz4xps7dxfx6kmrwq0gifbjsyc3pk9l3hd5233ss72ghlvgb") |
|
8 | (fetchbower "paper-tooltip" "PolymerElements/paper-tooltip#2.1.1" "PolymerElements/paper-tooltip#^2.1.1" "0ja9vz4xps7dxfx6kmrwq0gifbjsyc3pk9l3hd5233ss72ghlvgb") | |
9 | (fetchbower "paper-toast" "PolymerElements/paper-toast#2.1.2" "PolymerElements/paper-toast#^2.1.2" "0mkj9ayjx2l9hvrz4kw3yjbgrs9w873k05ywv94nh92mzpjkxn04") |
|
9 | (fetchbower "paper-toast" "PolymerElements/paper-toast#2.1.2" "PolymerElements/paper-toast#^2.1.2" "0mkj9ayjx2l9hvrz4kw3yjbgrs9w873k05ywv94nh92mzpjkxn04") | |
10 | (fetchbower "paper-toggle-button" "PolymerElements/paper-toggle-button#2.1.1" "PolymerElements/paper-toggle-button#^2.1.1" "1rl5ar3ny6r3v9hr8s68v8b3zh5yl52pikhi4b9iv9grv29g5999") |
|
10 | (fetchbower "paper-toggle-button" "PolymerElements/paper-toggle-button#2.1.1" "PolymerElements/paper-toggle-button#^2.1.1" "1rl5ar3ny6r3v9hr8s68v8b3zh5yl52pikhi4b9iv9grv29g5999") | |
11 | (fetchbower "iron-ajax" "PolymerElements/iron-ajax#2.1.3" "PolymerElements/iron-ajax#^2.1.3" "187zb6lkv18yapl292qhn611mbl4i2bqs2dimlwmdjaln285nc1l") |
|
11 | (fetchbower "iron-ajax" "PolymerElements/iron-ajax#2.1.3" "PolymerElements/iron-ajax#^2.1.3" "187zb6lkv18yapl292qhn611mbl4i2bqs2dimlwmdjaln285nc1l") | |
12 | (fetchbower "iron-autogrow-textarea" "PolymerElements/iron-autogrow-textarea#2.2.0" "PolymerElements/iron-autogrow-textarea#^2.2.0" "1cx7g49m20z08x25z24g2pvv6m6dwfbkga3nsw0rpi3jk7xhznqw") |
|
12 | (fetchbower "iron-autogrow-textarea" "PolymerElements/iron-autogrow-textarea#2.2.0" "PolymerElements/iron-autogrow-textarea#^2.2.0" "1cx7g49m20z08x25z24g2pvv6m6dwfbkga3nsw0rpi3jk7xhznqw") | |
13 | (fetchbower "iron-a11y-keys" "PolymerElements/iron-a11y-keys#2.1.2" "PolymerElements/iron-a11y-keys#^2.1.2" "0zdn3bzfrk88iwahmmzvcjn3m90zga1l8dx42b365n8if0n0zapj") |
|
13 | (fetchbower "iron-a11y-keys" "PolymerElements/iron-a11y-keys#2.1.2" "PolymerElements/iron-a11y-keys#^2.1.2" "0zdn3bzfrk88iwahmmzvcjn3m90zga1l8dx42b365n8if0n0zapj") | |
14 |
(fetchbower "shadycss" "webcomponents/shadycss#1. |
|
14 | (fetchbower "shadycss" "webcomponents/shadycss#1.5.2" "webcomponents/shadycss#^v1.1.0" "03fgbgvb80zjrgnq43gk0hr4cbvjs8rkqpfv1c2qsn7b6q71izlx") | |
15 | (fetchbower "iron-flex-layout" "PolymerElements/iron-flex-layout#2.0.3" "PolymerElements/iron-flex-layout#1 - 2" "1ir9ili3rkcgbfj6is5s70vyb7m6avz0av0lpjjlhhsplrrl90bk") |
|
15 | (fetchbower "iron-flex-layout" "PolymerElements/iron-flex-layout#2.0.3" "PolymerElements/iron-flex-layout#1 - 2" "1ir9ili3rkcgbfj6is5s70vyb7m6avz0av0lpjjlhhsplrrl90bk") | |
16 | (fetchbower "paper-behaviors" "PolymerElements/paper-behaviors#2.1.1" "PolymerElements/paper-behaviors#1 - 2" "0wzyznmy1q64jsm6lck0xma92lg2hz9h9m05r68iy20iyrvbjld7") |
|
16 | (fetchbower "paper-behaviors" "PolymerElements/paper-behaviors#2.1.1" "PolymerElements/paper-behaviors#1 - 2" "0wzyznmy1q64jsm6lck0xma92lg2hz9h9m05r68iy20iyrvbjld7") | |
17 | (fetchbower "paper-styles" "PolymerElements/paper-styles#2.1.0" "PolymerElements/paper-styles#1 - 2" "0xzsd7pvjsk7lgcmvx4q0dvps40q3mymkx26zgs8ns91s1ssfqbx") |
|
17 | (fetchbower "paper-styles" "PolymerElements/paper-styles#2.1.0" "PolymerElements/paper-styles#1 - 2" "0xzsd7pvjsk7lgcmvx4q0dvps40q3mymkx26zgs8ns91s1ssfqbx") | |
18 | (fetchbower "iron-a11y-announcer" "PolymerElements/iron-a11y-announcer#2.1.0" "PolymerElements/iron-a11y-announcer#1 - 2" "1hvmw76im8y3pxmg1yfnlkzap429q9i4v1z42y7m8lz0996jmxrz") |
|
18 | (fetchbower "iron-a11y-announcer" "PolymerElements/iron-a11y-announcer#2.1.0" "PolymerElements/iron-a11y-announcer#1 - 2" "1hvmw76im8y3pxmg1yfnlkzap429q9i4v1z42y7m8lz0996jmxrz") | |
19 | (fetchbower "iron-overlay-behavior" "PolymerElements/iron-overlay-behavior#2.3.4" "PolymerElements/iron-overlay-behavior#1 - 2" "0hk2fxhfz7kg27349qz1c87vq6nfdcnjr9az3q95ak3rigsb71wg") |
|
19 | (fetchbower "iron-overlay-behavior" "PolymerElements/iron-overlay-behavior#2.3.4" "PolymerElements/iron-overlay-behavior#1 - 2" "0hk2fxhfz7kg27349qz1c87vq6nfdcnjr9az3q95ak3rigsb71wg") | |
20 | (fetchbower "iron-fit-behavior" "PolymerElements/iron-fit-behavior#2.2.1" "PolymerElements/iron-fit-behavior#1 - 2" "0v89am4r2fncr7m9k0f2xqh5bvgn2dqjjc7p515ix4grk89whbs3") |
|
20 | (fetchbower "iron-fit-behavior" "PolymerElements/iron-fit-behavior#2.2.1" "PolymerElements/iron-fit-behavior#1 - 2" "0v89am4r2fncr7m9k0f2xqh5bvgn2dqjjc7p515ix4grk89whbs3") | |
21 | (fetchbower "iron-checked-element-behavior" "PolymerElements/iron-checked-element-behavior#2.1.1" "PolymerElements/iron-checked-element-behavior#1 - 2" "00gpvnb7anspadw59av7lca6p03qlx59dgnhw3lqf5v223dsh0l3") |
|
21 | (fetchbower "iron-checked-element-behavior" "PolymerElements/iron-checked-element-behavior#2.1.1" "PolymerElements/iron-checked-element-behavior#1 - 2" "00gpvnb7anspadw59av7lca6p03qlx59dgnhw3lqf5v223dsh0l3") | |
22 | (fetchbower "iron-behaviors" "PolymerElements/iron-behaviors#2.1.1" "PolymerElements/iron-behaviors#1 - 2" "0c71l1il76jg8gvyh8bwlqraif53gfnz5700vpg35qyr1biwbr1w") |
|
22 | (fetchbower "iron-behaviors" "PolymerElements/iron-behaviors#2.1.1" "PolymerElements/iron-behaviors#1 - 2" "0c71l1il76jg8gvyh8bwlqraif53gfnz5700vpg35qyr1biwbr1w") | |
23 | (fetchbower "iron-validatable-behavior" "PolymerElements/iron-validatable-behavior#2.1.0" "PolymerElements/iron-validatable-behavior#1 - 2" "1j65zv7hcxdcyyanzhp2wap3bnx7cz8ghd44m12fad2206jj6ysi") |
|
23 | (fetchbower "iron-validatable-behavior" "PolymerElements/iron-validatable-behavior#2.1.0" "PolymerElements/iron-validatable-behavior#1 - 2" "1j65zv7hcxdcyyanzhp2wap3bnx7cz8ghd44m12fad2206jj6ysi") | |
24 | (fetchbower "iron-a11y-keys-behavior" "PolymerElements/iron-a11y-keys-behavior#2.1.1" "PolymerElements/iron-a11y-keys-behavior#1 - 2" "0jsw7wvh4wzcjqdbvxyha99h1ph61lykyyyvdb6hm8m8w40bhs9b") |
|
24 | (fetchbower "iron-a11y-keys-behavior" "PolymerElements/iron-a11y-keys-behavior#2.1.1" "PolymerElements/iron-a11y-keys-behavior#1 - 2" "0jsw7wvh4wzcjqdbvxyha99h1ph61lykyyyvdb6hm8m8w40bhs9b") | |
25 | (fetchbower "paper-ripple" "PolymerElements/paper-ripple#2.1.1" "PolymerElements/paper-ripple#1 - 2" "0sam6w83nxf9mss79j6hjfsx0288pf4hwr1bw5xclzgpddcjmrm5") |
|
25 | (fetchbower "paper-ripple" "PolymerElements/paper-ripple#2.1.1" "PolymerElements/paper-ripple#1 - 2" "0sam6w83nxf9mss79j6hjfsx0288pf4hwr1bw5xclzgpddcjmrm5") | |
26 | (fetchbower "font-roboto" "PolymerElements/font-roboto#1.1.0" "PolymerElements/font-roboto#^1.0.1" "0z4msvaa5pnr84j2r957g313fmdbdbrknhdw1axy5g48845yv04s") |
|
26 | (fetchbower "font-roboto" "PolymerElements/font-roboto#1.1.0" "PolymerElements/font-roboto#^1.0.1" "0z4msvaa5pnr84j2r957g313fmdbdbrknhdw1axy5g48845yv04s") | |
27 | (fetchbower "iron-resizable-behavior" "PolymerElements/iron-resizable-behavior#2.1.1" "PolymerElements/iron-resizable-behavior#1 - 2" "0169rg6kby0ypfiwbkin46ywaszwj7r91yn081yqd96l1115aqnk") |
|
27 | (fetchbower "iron-resizable-behavior" "PolymerElements/iron-resizable-behavior#2.1.1" "PolymerElements/iron-resizable-behavior#1 - 2" "0169rg6kby0ypfiwbkin46ywaszwj7r91yn081yqd96l1115aqnk") | |
28 | (fetchbower "iron-form-element-behavior" "PolymerElements/iron-form-element-behavior#2.1.3" "PolymerElements/iron-form-element-behavior#1 - 2" "1c83kkfqvb5pdlvrhad3l7b11i244a8lykc8kzfnb9ya0xrln0cn") |
|
28 | (fetchbower "iron-form-element-behavior" "PolymerElements/iron-form-element-behavior#2.1.3" "PolymerElements/iron-form-element-behavior#1 - 2" "1c83kkfqvb5pdlvrhad3l7b11i244a8lykc8kzfnb9ya0xrln0cn") | |
29 | (fetchbower "iron-meta" "PolymerElements/iron-meta#2.1.1" "PolymerElements/iron-meta#1 - 2" "12w1pcl3w97xpxihqddbf2d9dx8xz5i1jd9bz1xrmfsh25isni40") |
|
29 | (fetchbower "iron-meta" "PolymerElements/iron-meta#2.1.1" "PolymerElements/iron-meta#1 - 2" "12w1pcl3w97xpxihqddbf2d9dx8xz5i1jd9bz1xrmfsh25isni40") | |
30 | ]; } |
|
30 | ]; } |
@@ -1,3386 +1,3406 b'' | |||||
1 | # This file has been generated by node2nix 1.6.0. Do not edit! |
|
1 | # This file has been generated by node2nix 1.6.0. Do not edit! | |
2 |
|
2 | |||
3 | {nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}: |
|
3 | {nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}: | |
4 |
|
4 | |||
5 | let |
|
5 | let | |
6 | sources = { |
|
6 | sources = { | |
7 | "@types/clone-0.1.30" = { |
|
7 | "@types/clone-0.1.30" = { | |
8 | name = "_at_types_slash_clone"; |
|
8 | name = "_at_types_slash_clone"; | |
9 | packageName = "@types/clone"; |
|
9 | packageName = "@types/clone"; | |
10 | version = "0.1.30"; |
|
10 | version = "0.1.30"; | |
11 | src = fetchurl { |
|
11 | src = fetchurl { | |
12 | url = "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz"; |
|
12 | url = "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz"; | |
13 | sha1 = "e7365648c1b42136a59c7d5040637b3b5c83b614"; |
|
13 | sha1 = "e7365648c1b42136a59c7d5040637b3b5c83b614"; | |
14 | }; |
|
14 | }; | |
15 | }; |
|
15 | }; | |
16 |
"@types/node-4. |
|
16 | "@types/node-4.9.0" = { | |
17 | name = "_at_types_slash_node"; |
|
17 | name = "_at_types_slash_node"; | |
18 | packageName = "@types/node"; |
|
18 | packageName = "@types/node"; | |
19 |
version = "4. |
|
19 | version = "4.9.0"; | |
20 | src = fetchurl { |
|
20 | src = fetchurl { | |
21 |
url = "https://registry.npmjs.org/@types/node/-/node-4. |
|
21 | url = "https://registry.npmjs.org/@types/node/-/node-4.9.0.tgz"; | |
22 | sha512 = "U6IchCNLRyswc9p6G6lxWlbE+KwAhZp6mGo6MD2yWpmFomhYmetK+c98OpKyvphNn04CU3aXeJrXdOqbXVTS/w=="; |
|
22 | sha512 = "xUFkZ+er9gUGw0x9qyfmr/Th0LuX6IB0m7HrRMB6sO6vcBVRFZ/3YV1EeiOC2fG50RX09avDfKwGBHOnPVxFeg=="; | |
23 | }; |
|
23 | }; | |
24 | }; |
|
24 | }; | |
25 |
"@types/node-6.0.11 |
|
25 | "@types/node-6.0.118" = { | |
26 | name = "_at_types_slash_node"; |
|
26 | name = "_at_types_slash_node"; | |
27 | packageName = "@types/node"; |
|
27 | packageName = "@types/node"; | |
28 |
version = "6.0.11 |
|
28 | version = "6.0.118"; | |
29 | src = fetchurl { |
|
29 | src = fetchurl { | |
30 |
url = "https://registry.npmjs.org/@types/node/-/node-6.0.11 |
|
30 | url = "https://registry.npmjs.org/@types/node/-/node-6.0.118.tgz"; | |
31 | sha512 = "5ViC9dwf1VIAtrOFTvOuN04lJgw28eKjuy0Vg2Bd/fSlxKP2feCSkIw04ZgOENL2ywdWrtbkthp1XVLEjJmouw=="; |
|
31 | sha512 = "N33cKXGSqhOYaPiT4xUGsYlPPDwFtQM/6QxJxuMXA/7BcySW+lkn2yigWP7vfs4daiL/7NJNU6DMCqg5N4B+xQ=="; | |
32 | }; |
|
32 | }; | |
33 | }; |
|
33 | }; | |
34 | "@types/parse5-0.0.31" = { |
|
34 | "@types/parse5-0.0.31" = { | |
35 | name = "_at_types_slash_parse5"; |
|
35 | name = "_at_types_slash_parse5"; | |
36 | packageName = "@types/parse5"; |
|
36 | packageName = "@types/parse5"; | |
37 | version = "0.0.31"; |
|
37 | version = "0.0.31"; | |
38 | src = fetchurl { |
|
38 | src = fetchurl { | |
39 |
url = "http |
|
39 | url = "http://registry.npmjs.org/@types/parse5/-/parse5-0.0.31.tgz"; | |
40 | sha1 = "e827a493a443b156e1b582a2e4c3bdc0040f2ee7"; |
|
40 | sha1 = "e827a493a443b156e1b582a2e4c3bdc0040f2ee7"; | |
41 | }; |
|
41 | }; | |
42 | }; |
|
42 | }; | |
43 | "abbrev-1.1.1" = { |
|
43 | "abbrev-1.1.1" = { | |
44 | name = "abbrev"; |
|
44 | name = "abbrev"; | |
45 | packageName = "abbrev"; |
|
45 | packageName = "abbrev"; | |
46 | version = "1.1.1"; |
|
46 | version = "1.1.1"; | |
47 | src = fetchurl { |
|
47 | src = fetchurl { | |
48 | url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"; |
|
48 | url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"; | |
49 | sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="; |
|
49 | sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="; | |
50 | }; |
|
50 | }; | |
51 | }; |
|
51 | }; | |
52 | "acorn-3.3.0" = { |
|
52 | "acorn-3.3.0" = { | |
53 | name = "acorn"; |
|
53 | name = "acorn"; | |
54 | packageName = "acorn"; |
|
54 | packageName = "acorn"; | |
55 | version = "3.3.0"; |
|
55 | version = "3.3.0"; | |
56 | src = fetchurl { |
|
56 | src = fetchurl { | |
57 | url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz"; |
|
57 | url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz"; | |
58 | sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a"; |
|
58 | sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a"; | |
59 | }; |
|
59 | }; | |
60 | }; |
|
60 | }; | |
61 |
"acorn-5.7. |
|
61 | "acorn-5.7.3" = { | |
62 | name = "acorn"; |
|
62 | name = "acorn"; | |
63 | packageName = "acorn"; |
|
63 | packageName = "acorn"; | |
64 |
version = "5.7. |
|
64 | version = "5.7.3"; | |
65 | src = fetchurl { |
|
65 | src = fetchurl { | |
66 |
url = "https://registry.npmjs.org/acorn/-/acorn-5.7. |
|
66 | url = "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz"; | |
67 | sha512 = "d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ=="; |
|
67 | sha512 = "T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="; | |
68 | }; |
|
68 | }; | |
69 | }; |
|
69 | }; | |
70 | "acorn-jsx-3.0.1" = { |
|
70 | "acorn-jsx-3.0.1" = { | |
71 | name = "acorn-jsx"; |
|
71 | name = "acorn-jsx"; | |
72 | packageName = "acorn-jsx"; |
|
72 | packageName = "acorn-jsx"; | |
73 | version = "3.0.1"; |
|
73 | version = "3.0.1"; | |
74 | src = fetchurl { |
|
74 | src = fetchurl { | |
75 | url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz"; |
|
75 | url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz"; | |
76 | sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b"; |
|
76 | sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b"; | |
77 | }; |
|
77 | }; | |
78 | }; |
|
78 | }; | |
79 | "ajv-4.11.8" = { |
|
79 | "ajv-4.11.8" = { | |
80 | name = "ajv"; |
|
80 | name = "ajv"; | |
81 | packageName = "ajv"; |
|
81 | packageName = "ajv"; | |
82 | version = "4.11.8"; |
|
82 | version = "4.11.8"; | |
83 | src = fetchurl { |
|
83 | src = fetchurl { | |
84 | url = "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz"; |
|
84 | url = "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz"; | |
85 | sha1 = "82ffb02b29e662ae53bdc20af15947706739c536"; |
|
85 | sha1 = "82ffb02b29e662ae53bdc20af15947706739c536"; | |
86 | }; |
|
86 | }; | |
87 | }; |
|
87 | }; | |
88 | "amdefine-1.0.1" = { |
|
88 | "amdefine-1.0.1" = { | |
89 | name = "amdefine"; |
|
89 | name = "amdefine"; | |
90 | packageName = "amdefine"; |
|
90 | packageName = "amdefine"; | |
91 | version = "1.0.1"; |
|
91 | version = "1.0.1"; | |
92 | src = fetchurl { |
|
92 | src = fetchurl { | |
93 | url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz"; |
|
93 | url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz"; | |
94 | sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5"; |
|
94 | sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5"; | |
95 | }; |
|
95 | }; | |
96 | }; |
|
96 | }; | |
97 | "ansi-escape-sequences-3.0.0" = { |
|
97 | "ansi-escape-sequences-3.0.0" = { | |
98 | name = "ansi-escape-sequences"; |
|
98 | name = "ansi-escape-sequences"; | |
99 | packageName = "ansi-escape-sequences"; |
|
99 | packageName = "ansi-escape-sequences"; | |
100 | version = "3.0.0"; |
|
100 | version = "3.0.0"; | |
101 | src = fetchurl { |
|
101 | src = fetchurl { | |
102 | url = "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz"; |
|
102 | url = "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz"; | |
103 | sha1 = "1c18394b6af9b76ff9a63509fa497669fd2ce53e"; |
|
103 | sha1 = "1c18394b6af9b76ff9a63509fa497669fd2ce53e"; | |
104 | }; |
|
104 | }; | |
105 | }; |
|
105 | }; | |
106 | "ansi-regex-0.2.1" = { |
|
106 | "ansi-regex-0.2.1" = { | |
107 | name = "ansi-regex"; |
|
107 | name = "ansi-regex"; | |
108 | packageName = "ansi-regex"; |
|
108 | packageName = "ansi-regex"; | |
109 | version = "0.2.1"; |
|
109 | version = "0.2.1"; | |
110 | src = fetchurl { |
|
110 | src = fetchurl { | |
111 | url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"; |
|
111 | url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"; | |
112 | sha1 = "0d8e946967a3d8143f93e24e298525fc1b2235f9"; |
|
112 | sha1 = "0d8e946967a3d8143f93e24e298525fc1b2235f9"; | |
113 | }; |
|
113 | }; | |
114 | }; |
|
114 | }; | |
115 | "ansi-regex-2.1.1" = { |
|
115 | "ansi-regex-2.1.1" = { | |
116 | name = "ansi-regex"; |
|
116 | name = "ansi-regex"; | |
117 | packageName = "ansi-regex"; |
|
117 | packageName = "ansi-regex"; | |
118 | version = "2.1.1"; |
|
118 | version = "2.1.1"; | |
119 | src = fetchurl { |
|
119 | src = fetchurl { | |
120 | url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"; |
|
120 | url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"; | |
121 | sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df"; |
|
121 | sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df"; | |
122 | }; |
|
122 | }; | |
123 | }; |
|
123 | }; | |
124 | "ansi-styles-1.1.0" = { |
|
124 | "ansi-styles-1.1.0" = { | |
125 | name = "ansi-styles"; |
|
125 | name = "ansi-styles"; | |
126 | packageName = "ansi-styles"; |
|
126 | packageName = "ansi-styles"; | |
127 | version = "1.1.0"; |
|
127 | version = "1.1.0"; | |
128 | src = fetchurl { |
|
128 | src = fetchurl { | |
129 | url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"; |
|
129 | url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"; | |
130 | sha1 = "eaecbf66cd706882760b2f4691582b8f55d7a7de"; |
|
130 | sha1 = "eaecbf66cd706882760b2f4691582b8f55d7a7de"; | |
131 | }; |
|
131 | }; | |
132 | }; |
|
132 | }; | |
133 | "ansi-styles-2.2.1" = { |
|
133 | "ansi-styles-2.2.1" = { | |
134 | name = "ansi-styles"; |
|
134 | name = "ansi-styles"; | |
135 | packageName = "ansi-styles"; |
|
135 | packageName = "ansi-styles"; | |
136 | version = "2.2.1"; |
|
136 | version = "2.2.1"; | |
137 | src = fetchurl { |
|
137 | src = fetchurl { | |
138 | url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"; |
|
138 | url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"; | |
139 | sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe"; |
|
139 | sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe"; | |
140 | }; |
|
140 | }; | |
141 | }; |
|
141 | }; | |
142 | "appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" = { |
|
142 | "appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" = { | |
143 | name = "appenlight-client"; |
|
143 | name = "appenlight-client"; | |
144 | packageName = "appenlight-client"; |
|
144 | packageName = "appenlight-client"; | |
145 | version = "0.5.1"; |
|
145 | version = "0.5.1"; | |
146 | src = fetchgit { |
|
146 | src = fetchgit { | |
147 | url = "https://git@github.com/AppEnlight/appenlight-client-js.git"; |
|
147 | url = "https://git@github.com/AppEnlight/appenlight-client-js.git"; | |
148 | rev = "14712c64c230fbbe94fcbc8094aef5eb3b90b307"; |
|
148 | rev = "14712c64c230fbbe94fcbc8094aef5eb3b90b307"; | |
149 | sha256 = "05146f5b932f166c9a4db601bc9c13ae686899653d1dd03121652631f9bc83d6"; |
|
149 | sha256 = "05146f5b932f166c9a4db601bc9c13ae686899653d1dd03121652631f9bc83d6"; | |
150 | }; |
|
150 | }; | |
151 | }; |
|
151 | }; | |
152 | "aproba-1.2.0" = { |
|
152 | "aproba-1.2.0" = { | |
153 | name = "aproba"; |
|
153 | name = "aproba"; | |
154 | packageName = "aproba"; |
|
154 | packageName = "aproba"; | |
155 | version = "1.2.0"; |
|
155 | version = "1.2.0"; | |
156 | src = fetchurl { |
|
156 | src = fetchurl { | |
157 | url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz"; |
|
157 | url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz"; | |
158 | sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="; |
|
158 | sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="; | |
159 | }; |
|
159 | }; | |
160 | }; |
|
160 | }; | |
161 | "are-we-there-yet-1.1.5" = { |
|
161 | "are-we-there-yet-1.1.5" = { | |
162 | name = "are-we-there-yet"; |
|
162 | name = "are-we-there-yet"; | |
163 | packageName = "are-we-there-yet"; |
|
163 | packageName = "are-we-there-yet"; | |
164 | version = "1.1.5"; |
|
164 | version = "1.1.5"; | |
165 | src = fetchurl { |
|
165 | src = fetchurl { | |
166 | url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz"; |
|
166 | url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz"; | |
167 | sha512 = "5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w=="; |
|
167 | sha512 = "5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w=="; | |
168 | }; |
|
168 | }; | |
169 | }; |
|
169 | }; | |
170 | "argparse-0.1.16" = { |
|
170 | "argparse-0.1.16" = { | |
171 | name = "argparse"; |
|
171 | name = "argparse"; | |
172 | packageName = "argparse"; |
|
172 | packageName = "argparse"; | |
173 | version = "0.1.16"; |
|
173 | version = "0.1.16"; | |
174 | src = fetchurl { |
|
174 | src = fetchurl { | |
175 | url = "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz"; |
|
175 | url = "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz"; | |
176 | sha1 = "cfd01e0fbba3d6caed049fbd758d40f65196f57c"; |
|
176 | sha1 = "cfd01e0fbba3d6caed049fbd758d40f65196f57c"; | |
177 | }; |
|
177 | }; | |
178 | }; |
|
178 | }; | |
179 | "array-back-1.0.4" = { |
|
179 | "array-back-1.0.4" = { | |
180 | name = "array-back"; |
|
180 | name = "array-back"; | |
181 | packageName = "array-back"; |
|
181 | packageName = "array-back"; | |
182 | version = "1.0.4"; |
|
182 | version = "1.0.4"; | |
183 | src = fetchurl { |
|
183 | src = fetchurl { | |
184 | url = "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz"; |
|
184 | url = "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz"; | |
185 | sha1 = "644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b"; |
|
185 | sha1 = "644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b"; | |
186 | }; |
|
186 | }; | |
187 | }; |
|
187 | }; | |
188 | "asap-2.0.6" = { |
|
188 | "asap-2.0.6" = { | |
189 | name = "asap"; |
|
189 | name = "asap"; | |
190 | packageName = "asap"; |
|
190 | packageName = "asap"; | |
191 | version = "2.0.6"; |
|
191 | version = "2.0.6"; | |
192 | src = fetchurl { |
|
192 | src = fetchurl { | |
193 | url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz"; |
|
193 | url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz"; | |
194 | sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46"; |
|
194 | sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46"; | |
195 | }; |
|
195 | }; | |
196 | }; |
|
196 | }; | |
197 |
"asn1-0.2. |
|
197 | "asn1-0.2.4" = { | |
198 | name = "asn1"; |
|
198 | name = "asn1"; | |
199 | packageName = "asn1"; |
|
199 | packageName = "asn1"; | |
200 |
version = "0.2. |
|
200 | version = "0.2.4"; | |
201 | src = fetchurl { |
|
201 | src = fetchurl { | |
202 |
url = "https://registry.npmjs.org/asn1/-/asn1-0.2. |
|
202 | url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz"; | |
203 | sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86"; |
|
203 | sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg=="; | |
204 | }; |
|
204 | }; | |
205 | }; |
|
205 | }; | |
206 | "assert-plus-0.2.0" = { |
|
206 | "assert-plus-0.2.0" = { | |
207 | name = "assert-plus"; |
|
207 | name = "assert-plus"; | |
208 | packageName = "assert-plus"; |
|
208 | packageName = "assert-plus"; | |
209 | version = "0.2.0"; |
|
209 | version = "0.2.0"; | |
210 | src = fetchurl { |
|
210 | src = fetchurl { | |
211 | url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz"; |
|
211 | url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz"; | |
212 | sha1 = "d74e1b87e7affc0db8aadb7021f3fe48101ab234"; |
|
212 | sha1 = "d74e1b87e7affc0db8aadb7021f3fe48101ab234"; | |
213 | }; |
|
213 | }; | |
214 | }; |
|
214 | }; | |
215 | "assert-plus-1.0.0" = { |
|
215 | "assert-plus-1.0.0" = { | |
216 | name = "assert-plus"; |
|
216 | name = "assert-plus"; | |
217 | packageName = "assert-plus"; |
|
217 | packageName = "assert-plus"; | |
218 | version = "1.0.0"; |
|
218 | version = "1.0.0"; | |
219 | src = fetchurl { |
|
219 | src = fetchurl { | |
220 | url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"; |
|
220 | url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"; | |
221 | sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"; |
|
221 | sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"; | |
222 | }; |
|
222 | }; | |
223 | }; |
|
223 | }; | |
224 | "async-0.1.22" = { |
|
224 | "async-0.1.22" = { | |
225 | name = "async"; |
|
225 | name = "async"; | |
226 | packageName = "async"; |
|
226 | packageName = "async"; | |
227 | version = "0.1.22"; |
|
227 | version = "0.1.22"; | |
228 | src = fetchurl { |
|
228 | src = fetchurl { | |
229 | url = "https://registry.npmjs.org/async/-/async-0.1.22.tgz"; |
|
229 | url = "https://registry.npmjs.org/async/-/async-0.1.22.tgz"; | |
230 | sha1 = "0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061"; |
|
230 | sha1 = "0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061"; | |
231 | }; |
|
231 | }; | |
232 | }; |
|
232 | }; | |
233 | "async-0.2.10" = { |
|
233 | "async-0.2.10" = { | |
234 | name = "async"; |
|
234 | name = "async"; | |
235 | packageName = "async"; |
|
235 | packageName = "async"; | |
236 | version = "0.2.10"; |
|
236 | version = "0.2.10"; | |
237 | src = fetchurl { |
|
237 | src = fetchurl { | |
238 | url = "https://registry.npmjs.org/async/-/async-0.2.10.tgz"; |
|
238 | url = "https://registry.npmjs.org/async/-/async-0.2.10.tgz"; | |
239 | sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1"; |
|
239 | sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1"; | |
240 | }; |
|
240 | }; | |
241 | }; |
|
241 | }; | |
242 | "async-1.0.0" = { |
|
242 | "async-1.0.0" = { | |
243 | name = "async"; |
|
243 | name = "async"; | |
244 | packageName = "async"; |
|
244 | packageName = "async"; | |
245 | version = "1.0.0"; |
|
245 | version = "1.0.0"; | |
246 | src = fetchurl { |
|
246 | src = fetchurl { | |
247 | url = "https://registry.npmjs.org/async/-/async-1.0.0.tgz"; |
|
247 | url = "https://registry.npmjs.org/async/-/async-1.0.0.tgz"; | |
248 | sha1 = "f8fc04ca3a13784ade9e1641af98578cfbd647a9"; |
|
248 | sha1 = "f8fc04ca3a13784ade9e1641af98578cfbd647a9"; | |
249 | }; |
|
249 | }; | |
250 | }; |
|
250 | }; | |
251 | "async-2.6.1" = { |
|
251 | "async-2.6.1" = { | |
252 | name = "async"; |
|
252 | name = "async"; | |
253 | packageName = "async"; |
|
253 | packageName = "async"; | |
254 | version = "2.6.1"; |
|
254 | version = "2.6.1"; | |
255 | src = fetchurl { |
|
255 | src = fetchurl { | |
256 | url = "https://registry.npmjs.org/async/-/async-2.6.1.tgz"; |
|
256 | url = "https://registry.npmjs.org/async/-/async-2.6.1.tgz"; | |
257 | sha512 = "fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ=="; |
|
257 | sha512 = "fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ=="; | |
258 | }; |
|
258 | }; | |
259 | }; |
|
259 | }; | |
260 | "asynckit-0.4.0" = { |
|
260 | "asynckit-0.4.0" = { | |
261 | name = "asynckit"; |
|
261 | name = "asynckit"; | |
262 | packageName = "asynckit"; |
|
262 | packageName = "asynckit"; | |
263 | version = "0.4.0"; |
|
263 | version = "0.4.0"; | |
264 | src = fetchurl { |
|
264 | src = fetchurl { | |
265 | url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"; |
|
265 | url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"; | |
266 | sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"; |
|
266 | sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"; | |
267 | }; |
|
267 | }; | |
268 | }; |
|
268 | }; | |
269 | "aws-sign2-0.6.0" = { |
|
269 | "aws-sign2-0.6.0" = { | |
270 | name = "aws-sign2"; |
|
270 | name = "aws-sign2"; | |
271 | packageName = "aws-sign2"; |
|
271 | packageName = "aws-sign2"; | |
272 | version = "0.6.0"; |
|
272 | version = "0.6.0"; | |
273 | src = fetchurl { |
|
273 | src = fetchurl { | |
274 | url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz"; |
|
274 | url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz"; | |
275 | sha1 = "14342dd38dbcc94d0e5b87d763cd63612c0e794f"; |
|
275 | sha1 = "14342dd38dbcc94d0e5b87d763cd63612c0e794f"; | |
276 | }; |
|
276 | }; | |
277 | }; |
|
277 | }; | |
278 |
"aws4-1. |
|
278 | "aws4-1.8.0" = { | |
279 | name = "aws4"; |
|
279 | name = "aws4"; | |
280 | packageName = "aws4"; |
|
280 | packageName = "aws4"; | |
281 |
version = "1. |
|
281 | version = "1.8.0"; | |
282 | src = fetchurl { |
|
282 | src = fetchurl { | |
283 |
url = "https://registry.npmjs.org/aws4/-/aws4-1. |
|
283 | url = "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz"; | |
284 | sha512 = "32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w=="; |
|
284 | sha512 = "ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="; | |
285 | }; |
|
285 | }; | |
286 | }; |
|
286 | }; | |
287 | "babel-polyfill-6.26.0" = { |
|
287 | "babel-polyfill-6.26.0" = { | |
288 | name = "babel-polyfill"; |
|
288 | name = "babel-polyfill"; | |
289 | packageName = "babel-polyfill"; |
|
289 | packageName = "babel-polyfill"; | |
290 | version = "6.26.0"; |
|
290 | version = "6.26.0"; | |
291 | src = fetchurl { |
|
291 | src = fetchurl { | |
292 | url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz"; |
|
292 | url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz"; | |
293 | sha1 = "379937abc67d7895970adc621f284cd966cf2153"; |
|
293 | sha1 = "379937abc67d7895970adc621f284cd966cf2153"; | |
294 | }; |
|
294 | }; | |
295 | }; |
|
295 | }; | |
296 | "babel-runtime-6.26.0" = { |
|
296 | "babel-runtime-6.26.0" = { | |
297 | name = "babel-runtime"; |
|
297 | name = "babel-runtime"; | |
298 | packageName = "babel-runtime"; |
|
298 | packageName = "babel-runtime"; | |
299 | version = "6.26.0"; |
|
299 | version = "6.26.0"; | |
300 | src = fetchurl { |
|
300 | src = fetchurl { | |
301 | url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz"; |
|
301 | url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz"; | |
302 | sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe"; |
|
302 | sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe"; | |
303 | }; |
|
303 | }; | |
304 | }; |
|
304 | }; | |
305 | "balanced-match-1.0.0" = { |
|
305 | "balanced-match-1.0.0" = { | |
306 | name = "balanced-match"; |
|
306 | name = "balanced-match"; | |
307 | packageName = "balanced-match"; |
|
307 | packageName = "balanced-match"; | |
308 | version = "1.0.0"; |
|
308 | version = "1.0.0"; | |
309 | src = fetchurl { |
|
309 | src = fetchurl { | |
310 | url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"; |
|
310 | url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"; | |
311 | sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767"; |
|
311 | sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767"; | |
312 | }; |
|
312 | }; | |
313 | }; |
|
313 | }; | |
314 | "base64-js-1.2.3" = { |
|
314 | "base64-js-1.2.3" = { | |
315 | name = "base64-js"; |
|
315 | name = "base64-js"; | |
316 | packageName = "base64-js"; |
|
316 | packageName = "base64-js"; | |
317 | version = "1.2.3"; |
|
317 | version = "1.2.3"; | |
318 | src = fetchurl { |
|
318 | src = fetchurl { | |
319 | url = "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz"; |
|
319 | url = "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz"; | |
320 | sha512 = "MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w=="; |
|
320 | sha512 = "MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w=="; | |
321 | }; |
|
321 | }; | |
322 | }; |
|
322 | }; | |
323 | "bcrypt-pbkdf-1.0.2" = { |
|
323 | "bcrypt-pbkdf-1.0.2" = { | |
324 | name = "bcrypt-pbkdf"; |
|
324 | name = "bcrypt-pbkdf"; | |
325 | packageName = "bcrypt-pbkdf"; |
|
325 | packageName = "bcrypt-pbkdf"; | |
326 | version = "1.0.2"; |
|
326 | version = "1.0.2"; | |
327 | src = fetchurl { |
|
327 | src = fetchurl { | |
328 | url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz"; |
|
328 | url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz"; | |
329 | sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"; |
|
329 | sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"; | |
330 | }; |
|
330 | }; | |
331 | }; |
|
331 | }; | |
332 | "boom-2.10.1" = { |
|
332 | "boom-2.10.1" = { | |
333 | name = "boom"; |
|
333 | name = "boom"; | |
334 | packageName = "boom"; |
|
334 | packageName = "boom"; | |
335 | version = "2.10.1"; |
|
335 | version = "2.10.1"; | |
336 | src = fetchurl { |
|
336 | src = fetchurl { | |
337 | url = "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"; |
|
337 | url = "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"; | |
338 | sha1 = "39c8918ceff5799f83f9492a848f625add0c766f"; |
|
338 | sha1 = "39c8918ceff5799f83f9492a848f625add0c766f"; | |
339 | }; |
|
339 | }; | |
340 | }; |
|
340 | }; | |
341 | "bower-1.8.4" = { |
|
341 | "bower-1.8.4" = { | |
342 | name = "bower"; |
|
342 | name = "bower"; | |
343 | packageName = "bower"; |
|
343 | packageName = "bower"; | |
344 | version = "1.8.4"; |
|
344 | version = "1.8.4"; | |
345 | src = fetchurl { |
|
345 | src = fetchurl { | |
346 | url = "https://registry.npmjs.org/bower/-/bower-1.8.4.tgz"; |
|
346 | url = "https://registry.npmjs.org/bower/-/bower-1.8.4.tgz"; | |
347 | sha1 = "e7876a076deb8137f7d06525dc5e8c66db82f28a"; |
|
347 | sha1 = "e7876a076deb8137f7d06525dc5e8c66db82f28a"; | |
348 | }; |
|
348 | }; | |
349 | }; |
|
349 | }; | |
350 | "brace-expansion-1.1.11" = { |
|
350 | "brace-expansion-1.1.11" = { | |
351 | name = "brace-expansion"; |
|
351 | name = "brace-expansion"; | |
352 | packageName = "brace-expansion"; |
|
352 | packageName = "brace-expansion"; | |
353 | version = "1.1.11"; |
|
353 | version = "1.1.11"; | |
354 | src = fetchurl { |
|
354 | src = fetchurl { | |
355 | url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"; |
|
355 | url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"; | |
356 | sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="; |
|
356 | sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="; | |
357 | }; |
|
357 | }; | |
358 | }; |
|
358 | }; | |
359 | "buffer-from-1.1.1" = { |
|
359 | "buffer-from-1.1.1" = { | |
360 | name = "buffer-from"; |
|
360 | name = "buffer-from"; | |
361 | packageName = "buffer-from"; |
|
361 | packageName = "buffer-from"; | |
362 | version = "1.1.1"; |
|
362 | version = "1.1.1"; | |
363 | src = fetchurl { |
|
363 | src = fetchurl { | |
364 | url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz"; |
|
364 | url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz"; | |
365 | sha512 = "MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="; |
|
365 | sha512 = "MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="; | |
366 | }; |
|
366 | }; | |
367 | }; |
|
367 | }; | |
368 | "builtin-modules-1.1.1" = { |
|
368 | "builtin-modules-1.1.1" = { | |
369 | name = "builtin-modules"; |
|
369 | name = "builtin-modules"; | |
370 | packageName = "builtin-modules"; |
|
370 | packageName = "builtin-modules"; | |
371 | version = "1.1.1"; |
|
371 | version = "1.1.1"; | |
372 | src = fetchurl { |
|
372 | src = fetchurl { | |
373 | url = "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz"; |
|
373 | url = "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz"; | |
374 | sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f"; |
|
374 | sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f"; | |
375 | }; |
|
375 | }; | |
376 | }; |
|
376 | }; | |
377 | "builtins-1.0.3" = { |
|
377 | "builtins-1.0.3" = { | |
378 | name = "builtins"; |
|
378 | name = "builtins"; | |
379 | packageName = "builtins"; |
|
379 | packageName = "builtins"; | |
380 | version = "1.0.3"; |
|
380 | version = "1.0.3"; | |
381 | src = fetchurl { |
|
381 | src = fetchurl { | |
382 | url = "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz"; |
|
382 | url = "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz"; | |
383 | sha1 = "cb94faeb61c8696451db36534e1422f94f0aee88"; |
|
383 | sha1 = "cb94faeb61c8696451db36534e1422f94f0aee88"; | |
384 | }; |
|
384 | }; | |
385 | }; |
|
385 | }; | |
386 | "caseless-0.12.0" = { |
|
386 | "caseless-0.12.0" = { | |
387 | name = "caseless"; |
|
387 | name = "caseless"; | |
388 | packageName = "caseless"; |
|
388 | packageName = "caseless"; | |
389 | version = "0.12.0"; |
|
389 | version = "0.12.0"; | |
390 | src = fetchurl { |
|
390 | src = fetchurl { | |
391 | url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz"; |
|
391 | url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz"; | |
392 | sha1 = "1b681c21ff84033c826543090689420d187151dc"; |
|
392 | sha1 = "1b681c21ff84033c826543090689420d187151dc"; | |
393 | }; |
|
393 | }; | |
394 | }; |
|
394 | }; | |
395 | "chalk-0.5.1" = { |
|
395 | "chalk-0.5.1" = { | |
396 | name = "chalk"; |
|
396 | name = "chalk"; | |
397 | packageName = "chalk"; |
|
397 | packageName = "chalk"; | |
398 | version = "0.5.1"; |
|
398 | version = "0.5.1"; | |
399 | src = fetchurl { |
|
399 | src = fetchurl { | |
400 | url = "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz"; |
|
400 | url = "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz"; | |
401 | sha1 = "663b3a648b68b55d04690d49167aa837858f2174"; |
|
401 | sha1 = "663b3a648b68b55d04690d49167aa837858f2174"; | |
402 | }; |
|
402 | }; | |
403 | }; |
|
403 | }; | |
404 | "chalk-1.1.3" = { |
|
404 | "chalk-1.1.3" = { | |
405 | name = "chalk"; |
|
405 | name = "chalk"; | |
406 | packageName = "chalk"; |
|
406 | packageName = "chalk"; | |
407 | version = "1.1.3"; |
|
407 | version = "1.1.3"; | |
408 | src = fetchurl { |
|
408 | src = fetchurl { | |
409 | url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"; |
|
409 | url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"; | |
410 | sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98"; |
|
410 | sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98"; | |
411 | }; |
|
411 | }; | |
412 | }; |
|
412 | }; | |
413 | "cli-1.0.1" = { |
|
413 | "cli-1.0.1" = { | |
414 | name = "cli"; |
|
414 | name = "cli"; | |
415 | packageName = "cli"; |
|
415 | packageName = "cli"; | |
416 | version = "1.0.1"; |
|
416 | version = "1.0.1"; | |
417 | src = fetchurl { |
|
417 | src = fetchurl { | |
418 | url = "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz"; |
|
418 | url = "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz"; | |
419 | sha1 = "22817534f24bfa4950c34d532d48ecbc621b8c14"; |
|
419 | sha1 = "22817534f24bfa4950c34d532d48ecbc621b8c14"; | |
420 | }; |
|
420 | }; | |
421 | }; |
|
421 | }; | |
422 | "clipboard-2.0.1" = { |
|
422 | "clipboard-2.0.1" = { | |
423 | name = "clipboard"; |
|
423 | name = "clipboard"; | |
424 | packageName = "clipboard"; |
|
424 | packageName = "clipboard"; | |
425 | version = "2.0.1"; |
|
425 | version = "2.0.1"; | |
426 | src = fetchurl { |
|
426 | src = fetchurl { | |
427 | url = "https://registry.npmjs.org/clipboard/-/clipboard-2.0.1.tgz"; |
|
427 | url = "https://registry.npmjs.org/clipboard/-/clipboard-2.0.1.tgz"; | |
428 | sha512 = "7yhQBmtN+uYZmfRjjVjKa0dZdWuabzpSKGtyQZN+9C8xlC788SSJjOHWh7tzurfwTqTD5UDYAhIv5fRJg3sHjQ=="; |
|
428 | sha512 = "7yhQBmtN+uYZmfRjjVjKa0dZdWuabzpSKGtyQZN+9C8xlC788SSJjOHWh7tzurfwTqTD5UDYAhIv5fRJg3sHjQ=="; | |
429 | }; |
|
429 | }; | |
430 | }; |
|
430 | }; | |
431 | "clone-1.0.4" = { |
|
431 | "clone-1.0.4" = { | |
432 | name = "clone"; |
|
432 | name = "clone"; | |
433 | packageName = "clone"; |
|
433 | packageName = "clone"; | |
434 | version = "1.0.4"; |
|
434 | version = "1.0.4"; | |
435 | src = fetchurl { |
|
435 | src = fetchurl { | |
436 | url = "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz"; |
|
436 | url = "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz"; | |
437 | sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e"; |
|
437 | sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e"; | |
438 | }; |
|
438 | }; | |
439 | }; |
|
439 | }; | |
440 | "co-4.6.0" = { |
|
440 | "co-4.6.0" = { | |
441 | name = "co"; |
|
441 | name = "co"; | |
442 | packageName = "co"; |
|
442 | packageName = "co"; | |
443 | version = "4.6.0"; |
|
443 | version = "4.6.0"; | |
444 | src = fetchurl { |
|
444 | src = fetchurl { | |
445 | url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz"; |
|
445 | url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz"; | |
446 | sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"; |
|
446 | sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"; | |
447 | }; |
|
447 | }; | |
448 | }; |
|
448 | }; | |
449 | "code-point-at-1.1.0" = { |
|
449 | "code-point-at-1.1.0" = { | |
450 | name = "code-point-at"; |
|
450 | name = "code-point-at"; | |
451 | packageName = "code-point-at"; |
|
451 | packageName = "code-point-at"; | |
452 | version = "1.1.0"; |
|
452 | version = "1.1.0"; | |
453 | src = fetchurl { |
|
453 | src = fetchurl { | |
454 | url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"; |
|
454 | url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"; | |
455 | sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"; |
|
455 | sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"; | |
456 | }; |
|
456 | }; | |
457 | }; |
|
457 | }; | |
458 | "coffee-script-1.3.3" = { |
|
458 | "coffee-script-1.3.3" = { | |
459 | name = "coffee-script"; |
|
459 | name = "coffee-script"; | |
460 | packageName = "coffee-script"; |
|
460 | packageName = "coffee-script"; | |
461 | version = "1.3.3"; |
|
461 | version = "1.3.3"; | |
462 | src = fetchurl { |
|
462 | src = fetchurl { | |
463 | url = "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz"; |
|
463 | url = "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz"; | |
464 | sha1 = "150d6b4cb522894369efed6a2101c20bc7f4a4f4"; |
|
464 | sha1 = "150d6b4cb522894369efed6a2101c20bc7f4a4f4"; | |
465 | }; |
|
465 | }; | |
466 | }; |
|
466 | }; | |
467 | "colors-0.6.2" = { |
|
467 | "colors-0.6.2" = { | |
468 | name = "colors"; |
|
468 | name = "colors"; | |
469 | packageName = "colors"; |
|
469 | packageName = "colors"; | |
470 | version = "0.6.2"; |
|
470 | version = "0.6.2"; | |
471 | src = fetchurl { |
|
471 | src = fetchurl { | |
472 | url = "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz"; |
|
472 | url = "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz"; | |
473 | sha1 = "2423fe6678ac0c5dae8852e5d0e5be08c997abcc"; |
|
473 | sha1 = "2423fe6678ac0c5dae8852e5d0e5be08c997abcc"; | |
474 | }; |
|
474 | }; | |
475 | }; |
|
475 | }; | |
476 | "colors-1.0.3" = { |
|
476 | "colors-1.0.3" = { | |
477 | name = "colors"; |
|
477 | name = "colors"; | |
478 | packageName = "colors"; |
|
478 | packageName = "colors"; | |
479 | version = "1.0.3"; |
|
479 | version = "1.0.3"; | |
480 | src = fetchurl { |
|
480 | src = fetchurl { | |
481 | url = "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz"; |
|
481 | url = "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz"; | |
482 | sha1 = "0433f44d809680fdeb60ed260f1b0c262e82a40b"; |
|
482 | sha1 = "0433f44d809680fdeb60ed260f1b0c262e82a40b"; | |
483 | }; |
|
483 | }; | |
484 | }; |
|
484 | }; | |
485 |
"combined-stream-1.0. |
|
485 | "combined-stream-1.0.7" = { | |
486 | name = "combined-stream"; |
|
486 | name = "combined-stream"; | |
487 | packageName = "combined-stream"; |
|
487 | packageName = "combined-stream"; | |
488 |
version = "1.0. |
|
488 | version = "1.0.7"; | |
489 | src = fetchurl { |
|
489 | src = fetchurl { | |
490 |
url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0. |
|
490 | url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz"; | |
491 | sha1 = "723e7df6e801ac5613113a7e445a9b69cb632818"; |
|
491 | sha512 = "brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w=="; | |
492 | }; |
|
492 | }; | |
493 | }; |
|
493 | }; | |
494 | "command-line-args-3.0.5" = { |
|
494 | "command-line-args-3.0.5" = { | |
495 | name = "command-line-args"; |
|
495 | name = "command-line-args"; | |
496 | packageName = "command-line-args"; |
|
496 | packageName = "command-line-args"; | |
497 | version = "3.0.5"; |
|
497 | version = "3.0.5"; | |
498 | src = fetchurl { |
|
498 | src = fetchurl { | |
499 | url = "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz"; |
|
499 | url = "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz"; | |
500 | sha1 = "5bd4ad45e7983e5c1344918e40280ee2693c5ac0"; |
|
500 | sha1 = "5bd4ad45e7983e5c1344918e40280ee2693c5ac0"; | |
501 | }; |
|
501 | }; | |
502 | }; |
|
502 | }; | |
503 | "command-line-usage-3.0.8" = { |
|
503 | "command-line-usage-3.0.8" = { | |
504 | name = "command-line-usage"; |
|
504 | name = "command-line-usage"; | |
505 | packageName = "command-line-usage"; |
|
505 | packageName = "command-line-usage"; | |
506 | version = "3.0.8"; |
|
506 | version = "3.0.8"; | |
507 | src = fetchurl { |
|
507 | src = fetchurl { | |
508 | url = "https://registry.npmjs.org/command-line-usage/-/command-line-usage-3.0.8.tgz"; |
|
508 | url = "https://registry.npmjs.org/command-line-usage/-/command-line-usage-3.0.8.tgz"; | |
509 | sha1 = "b6a20978c1b383477f5c11a529428b880bfe0f4d"; |
|
509 | sha1 = "b6a20978c1b383477f5c11a529428b880bfe0f4d"; | |
510 | }; |
|
510 | }; | |
511 | }; |
|
511 | }; | |
512 | "concat-map-0.0.1" = { |
|
512 | "concat-map-0.0.1" = { | |
513 | name = "concat-map"; |
|
513 | name = "concat-map"; | |
514 | packageName = "concat-map"; |
|
514 | packageName = "concat-map"; | |
515 | version = "0.0.1"; |
|
515 | version = "0.0.1"; | |
516 | src = fetchurl { |
|
516 | src = fetchurl { | |
517 | url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"; |
|
517 | url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"; | |
518 | sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b"; |
|
518 | sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b"; | |
519 | }; |
|
519 | }; | |
520 | }; |
|
520 | }; | |
521 | "concat-stream-1.6.2" = { |
|
521 | "concat-stream-1.6.2" = { | |
522 | name = "concat-stream"; |
|
522 | name = "concat-stream"; | |
523 | packageName = "concat-stream"; |
|
523 | packageName = "concat-stream"; | |
524 | version = "1.6.2"; |
|
524 | version = "1.6.2"; | |
525 | src = fetchurl { |
|
525 | src = fetchurl { | |
526 | url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz"; |
|
526 | url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz"; | |
527 | sha512 = "27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw=="; |
|
527 | sha512 = "27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw=="; | |
528 | }; |
|
528 | }; | |
529 | }; |
|
529 | }; | |
530 |
"config-chain-1.1.1 |
|
530 | "config-chain-1.1.12" = { | |
531 | name = "config-chain"; |
|
531 | name = "config-chain"; | |
532 | packageName = "config-chain"; |
|
532 | packageName = "config-chain"; | |
533 |
version = "1.1.1 |
|
533 | version = "1.1.12"; | |
534 | src = fetchurl { |
|
534 | src = fetchurl { | |
535 |
url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.1 |
|
535 | url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz"; | |
536 | sha1 = "aba09747dfbe4c3e70e766a6e41586e1859fc6f2"; |
|
536 | sha512 = "a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA=="; | |
537 | }; |
|
537 | }; | |
538 | }; |
|
538 | }; | |
539 | "console-browserify-1.1.0" = { |
|
539 | "console-browserify-1.1.0" = { | |
540 | name = "console-browserify"; |
|
540 | name = "console-browserify"; | |
541 | packageName = "console-browserify"; |
|
541 | packageName = "console-browserify"; | |
542 | version = "1.1.0"; |
|
542 | version = "1.1.0"; | |
543 | src = fetchurl { |
|
543 | src = fetchurl { | |
544 | url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz"; |
|
544 | url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz"; | |
545 | sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10"; |
|
545 | sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10"; | |
546 | }; |
|
546 | }; | |
547 | }; |
|
547 | }; | |
548 | "console-control-strings-1.1.0" = { |
|
548 | "console-control-strings-1.1.0" = { | |
549 | name = "console-control-strings"; |
|
549 | name = "console-control-strings"; | |
550 | packageName = "console-control-strings"; |
|
550 | packageName = "console-control-strings"; | |
551 | version = "1.1.0"; |
|
551 | version = "1.1.0"; | |
552 | src = fetchurl { |
|
552 | src = fetchurl { | |
553 | url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"; |
|
553 | url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"; | |
554 | sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e"; |
|
554 | sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e"; | |
555 | }; |
|
555 | }; | |
556 | }; |
|
556 | }; | |
557 | "core-js-2.5.7" = { |
|
557 | "core-js-2.5.7" = { | |
558 | name = "core-js"; |
|
558 | name = "core-js"; | |
559 | packageName = "core-js"; |
|
559 | packageName = "core-js"; | |
560 | version = "2.5.7"; |
|
560 | version = "2.5.7"; | |
561 | src = fetchurl { |
|
561 | src = fetchurl { | |
562 | url = "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz"; |
|
562 | url = "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz"; | |
563 | sha512 = "RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="; |
|
563 | sha512 = "RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="; | |
564 | }; |
|
564 | }; | |
565 | }; |
|
565 | }; | |
566 | "core-util-is-1.0.2" = { |
|
566 | "core-util-is-1.0.2" = { | |
567 | name = "core-util-is"; |
|
567 | name = "core-util-is"; | |
568 | packageName = "core-util-is"; |
|
568 | packageName = "core-util-is"; | |
569 | version = "1.0.2"; |
|
569 | version = "1.0.2"; | |
570 | src = fetchurl { |
|
570 | src = fetchurl { | |
571 | url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"; |
|
571 | url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"; | |
572 | sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7"; |
|
572 | sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7"; | |
573 | }; |
|
573 | }; | |
574 | }; |
|
574 | }; | |
575 | "crisper-1.2.0" = { |
|
575 | "crisper-1.2.0" = { | |
576 | name = "crisper"; |
|
576 | name = "crisper"; | |
577 | packageName = "crisper"; |
|
577 | packageName = "crisper"; | |
578 | version = "1.2.0"; |
|
578 | version = "1.2.0"; | |
579 | src = fetchurl { |
|
579 | src = fetchurl { | |
580 | url = "https://registry.npmjs.org/crisper/-/crisper-1.2.0.tgz"; |
|
580 | url = "https://registry.npmjs.org/crisper/-/crisper-1.2.0.tgz"; | |
581 | sha1 = "9a91f597d71f6110294e076ad44dbb3408568e46"; |
|
581 | sha1 = "9a91f597d71f6110294e076ad44dbb3408568e46"; | |
582 | }; |
|
582 | }; | |
583 | }; |
|
583 | }; | |
584 | "crisper-2.1.1" = { |
|
584 | "crisper-2.1.1" = { | |
585 | name = "crisper"; |
|
585 | name = "crisper"; | |
586 | packageName = "crisper"; |
|
586 | packageName = "crisper"; | |
587 | version = "2.1.1"; |
|
587 | version = "2.1.1"; | |
588 | src = fetchurl { |
|
588 | src = fetchurl { | |
589 | url = "https://registry.npmjs.org/crisper/-/crisper-2.1.1.tgz"; |
|
589 | url = "https://registry.npmjs.org/crisper/-/crisper-2.1.1.tgz"; | |
590 | sha512 = "yxfj9nTbFunDASztAxVF8hCPwaZBvTjayNzG3YL/VVQfQaKBXX2+TM3p1xB1Pxd8RYeDQJkJIQRwM3FQSIa+pw=="; |
|
590 | sha512 = "yxfj9nTbFunDASztAxVF8hCPwaZBvTjayNzG3YL/VVQfQaKBXX2+TM3p1xB1Pxd8RYeDQJkJIQRwM3FQSIa+pw=="; | |
591 | }; |
|
591 | }; | |
592 | }; |
|
592 | }; | |
593 | "cryptiles-2.0.5" = { |
|
593 | "cryptiles-2.0.5" = { | |
594 | name = "cryptiles"; |
|
594 | name = "cryptiles"; | |
595 | packageName = "cryptiles"; |
|
595 | packageName = "cryptiles"; | |
596 | version = "2.0.5"; |
|
596 | version = "2.0.5"; | |
597 | src = fetchurl { |
|
597 | src = fetchurl { | |
598 | url = "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz"; |
|
598 | url = "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz"; | |
599 | sha1 = "3bdfecdc608147c1c67202fa291e7dca59eaa3b8"; |
|
599 | sha1 = "3bdfecdc608147c1c67202fa291e7dca59eaa3b8"; | |
600 | }; |
|
600 | }; | |
601 | }; |
|
601 | }; | |
602 | "cycle-1.0.3" = { |
|
602 | "cycle-1.0.3" = { | |
603 | name = "cycle"; |
|
603 | name = "cycle"; | |
604 | packageName = "cycle"; |
|
604 | packageName = "cycle"; | |
605 | version = "1.0.3"; |
|
605 | version = "1.0.3"; | |
606 | src = fetchurl { |
|
606 | src = fetchurl { | |
607 | url = "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz"; |
|
607 | url = "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz"; | |
608 | sha1 = "21e80b2be8580f98b468f379430662b046c34ad2"; |
|
608 | sha1 = "21e80b2be8580f98b468f379430662b046c34ad2"; | |
609 | }; |
|
609 | }; | |
610 | }; |
|
610 | }; | |
611 | "dashdash-1.14.1" = { |
|
611 | "dashdash-1.14.1" = { | |
612 | name = "dashdash"; |
|
612 | name = "dashdash"; | |
613 | packageName = "dashdash"; |
|
613 | packageName = "dashdash"; | |
614 | version = "1.14.1"; |
|
614 | version = "1.14.1"; | |
615 | src = fetchurl { |
|
615 | src = fetchurl { | |
616 | url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz"; |
|
616 | url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz"; | |
617 | sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"; |
|
617 | sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"; | |
618 | }; |
|
618 | }; | |
619 | }; |
|
619 | }; | |
620 | "date-now-0.1.4" = { |
|
620 | "date-now-0.1.4" = { | |
621 | name = "date-now"; |
|
621 | name = "date-now"; | |
622 | packageName = "date-now"; |
|
622 | packageName = "date-now"; | |
623 | version = "0.1.4"; |
|
623 | version = "0.1.4"; | |
624 | src = fetchurl { |
|
624 | src = fetchurl { | |
625 | url = "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz"; |
|
625 | url = "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz"; | |
626 | sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b"; |
|
626 | sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b"; | |
627 | }; |
|
627 | }; | |
628 | }; |
|
628 | }; | |
629 | "dateformat-1.0.2-1.2.3" = { |
|
629 | "dateformat-1.0.2-1.2.3" = { | |
630 | name = "dateformat"; |
|
630 | name = "dateformat"; | |
631 | packageName = "dateformat"; |
|
631 | packageName = "dateformat"; | |
632 | version = "1.0.2-1.2.3"; |
|
632 | version = "1.0.2-1.2.3"; | |
633 | src = fetchurl { |
|
633 | src = fetchurl { | |
634 | url = "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz"; |
|
634 | url = "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz"; | |
635 | sha1 = "b0220c02de98617433b72851cf47de3df2cdbee9"; |
|
635 | sha1 = "b0220c02de98617433b72851cf47de3df2cdbee9"; | |
636 | }; |
|
636 | }; | |
637 | }; |
|
637 | }; | |
638 | "debug-0.7.4" = { |
|
638 | "debug-0.7.4" = { | |
639 | name = "debug"; |
|
639 | name = "debug"; | |
640 | packageName = "debug"; |
|
640 | packageName = "debug"; | |
641 | version = "0.7.4"; |
|
641 | version = "0.7.4"; | |
642 | src = fetchurl { |
|
642 | src = fetchurl { | |
643 | url = "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz"; |
|
643 | url = "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz"; | |
644 | sha1 = "06e1ea8082c2cb14e39806e22e2f6f757f92af39"; |
|
644 | sha1 = "06e1ea8082c2cb14e39806e22e2f6f757f92af39"; | |
645 | }; |
|
645 | }; | |
646 | }; |
|
646 | }; | |
647 | "debug-2.6.9" = { |
|
647 | "debug-2.6.9" = { | |
648 | name = "debug"; |
|
648 | name = "debug"; | |
649 | packageName = "debug"; |
|
649 | packageName = "debug"; | |
650 | version = "2.6.9"; |
|
650 | version = "2.6.9"; | |
651 | src = fetchurl { |
|
651 | src = fetchurl { | |
652 | url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"; |
|
652 | url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"; | |
653 | sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="; |
|
653 | sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="; | |
654 | }; |
|
654 | }; | |
655 | }; |
|
655 | }; | |
656 | "deep-extend-0.4.2" = { |
|
656 | "deep-extend-0.4.2" = { | |
657 | name = "deep-extend"; |
|
657 | name = "deep-extend"; | |
658 | packageName = "deep-extend"; |
|
658 | packageName = "deep-extend"; | |
659 | version = "0.4.2"; |
|
659 | version = "0.4.2"; | |
660 | src = fetchurl { |
|
660 | src = fetchurl { | |
661 | url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz"; |
|
661 | url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz"; | |
662 | sha1 = "48b699c27e334bf89f10892be432f6e4c7d34a7f"; |
|
662 | sha1 = "48b699c27e334bf89f10892be432f6e4c7d34a7f"; | |
663 | }; |
|
663 | }; | |
664 | }; |
|
664 | }; | |
665 | "deep-is-0.1.3" = { |
|
665 | "deep-is-0.1.3" = { | |
666 | name = "deep-is"; |
|
666 | name = "deep-is"; | |
667 | packageName = "deep-is"; |
|
667 | packageName = "deep-is"; | |
668 | version = "0.1.3"; |
|
668 | version = "0.1.3"; | |
669 | src = fetchurl { |
|
669 | src = fetchurl { | |
670 | url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz"; |
|
670 | url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz"; | |
671 | sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34"; |
|
671 | sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34"; | |
672 | }; |
|
672 | }; | |
673 | }; |
|
673 | }; | |
674 | "delayed-stream-1.0.0" = { |
|
674 | "delayed-stream-1.0.0" = { | |
675 | name = "delayed-stream"; |
|
675 | name = "delayed-stream"; | |
676 | packageName = "delayed-stream"; |
|
676 | packageName = "delayed-stream"; | |
677 | version = "1.0.0"; |
|
677 | version = "1.0.0"; | |
678 | src = fetchurl { |
|
678 | src = fetchurl { | |
679 | url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"; |
|
679 | url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"; | |
680 | sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619"; |
|
680 | sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619"; | |
681 | }; |
|
681 | }; | |
682 | }; |
|
682 | }; | |
683 | "delegate-3.2.0" = { |
|
683 | "delegate-3.2.0" = { | |
684 | name = "delegate"; |
|
684 | name = "delegate"; | |
685 | packageName = "delegate"; |
|
685 | packageName = "delegate"; | |
686 | version = "3.2.0"; |
|
686 | version = "3.2.0"; | |
687 | src = fetchurl { |
|
687 | src = fetchurl { | |
688 | url = "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz"; |
|
688 | url = "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz"; | |
689 | sha512 = "IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="; |
|
689 | sha512 = "IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="; | |
690 | }; |
|
690 | }; | |
691 | }; |
|
691 | }; | |
692 | "delegates-1.0.0" = { |
|
692 | "delegates-1.0.0" = { | |
693 | name = "delegates"; |
|
693 | name = "delegates"; | |
694 | packageName = "delegates"; |
|
694 | packageName = "delegates"; | |
695 | version = "1.0.0"; |
|
695 | version = "1.0.0"; | |
696 | src = fetchurl { |
|
696 | src = fetchurl { | |
697 | url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"; |
|
697 | url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"; | |
698 | sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a"; |
|
698 | sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a"; | |
699 | }; |
|
699 | }; | |
700 | }; |
|
700 | }; | |
701 | "doctrine-0.7.2" = { |
|
701 | "doctrine-0.7.2" = { | |
702 | name = "doctrine"; |
|
702 | name = "doctrine"; | |
703 | packageName = "doctrine"; |
|
703 | packageName = "doctrine"; | |
704 | version = "0.7.2"; |
|
704 | version = "0.7.2"; | |
705 | src = fetchurl { |
|
705 | src = fetchurl { | |
706 | url = "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz"; |
|
706 | url = "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz"; | |
707 | sha1 = "7cb860359ba3be90e040b26b729ce4bfa654c523"; |
|
707 | sha1 = "7cb860359ba3be90e040b26b729ce4bfa654c523"; | |
708 | }; |
|
708 | }; | |
709 | }; |
|
709 | }; | |
710 | "dom-serializer-0.1.0" = { |
|
710 | "dom-serializer-0.1.0" = { | |
711 | name = "dom-serializer"; |
|
711 | name = "dom-serializer"; | |
712 | packageName = "dom-serializer"; |
|
712 | packageName = "dom-serializer"; | |
713 | version = "0.1.0"; |
|
713 | version = "0.1.0"; | |
714 | src = fetchurl { |
|
714 | src = fetchurl { | |
715 | url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz"; |
|
715 | url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz"; | |
716 | sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82"; |
|
716 | sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82"; | |
717 | }; |
|
717 | }; | |
718 | }; |
|
718 | }; | |
719 | "dom5-1.1.0" = { |
|
719 | "dom5-1.1.0" = { | |
720 | name = "dom5"; |
|
720 | name = "dom5"; | |
721 | packageName = "dom5"; |
|
721 | packageName = "dom5"; | |
722 | version = "1.1.0"; |
|
722 | version = "1.1.0"; | |
723 | src = fetchurl { |
|
723 | src = fetchurl { | |
724 | url = "https://registry.npmjs.org/dom5/-/dom5-1.1.0.tgz"; |
|
724 | url = "https://registry.npmjs.org/dom5/-/dom5-1.1.0.tgz"; | |
725 | sha1 = "3a0c7700c083ab4c4d26938a78b0f0c6dcc37794"; |
|
725 | sha1 = "3a0c7700c083ab4c4d26938a78b0f0c6dcc37794"; | |
726 | }; |
|
726 | }; | |
727 | }; |
|
727 | }; | |
728 | "dom5-1.3.6" = { |
|
728 | "dom5-1.3.6" = { | |
729 | name = "dom5"; |
|
729 | name = "dom5"; | |
730 | packageName = "dom5"; |
|
730 | packageName = "dom5"; | |
731 | version = "1.3.6"; |
|
731 | version = "1.3.6"; | |
732 | src = fetchurl { |
|
732 | src = fetchurl { | |
733 | url = "https://registry.npmjs.org/dom5/-/dom5-1.3.6.tgz"; |
|
733 | url = "https://registry.npmjs.org/dom5/-/dom5-1.3.6.tgz"; | |
734 | sha1 = "a7088a9fc5f3b08dc9f6eda4c7abaeb241945e0d"; |
|
734 | sha1 = "a7088a9fc5f3b08dc9f6eda4c7abaeb241945e0d"; | |
735 | }; |
|
735 | }; | |
736 | }; |
|
736 | }; | |
737 | "domelementtype-1.1.3" = { |
|
737 | "domelementtype-1.1.3" = { | |
738 | name = "domelementtype"; |
|
738 | name = "domelementtype"; | |
739 | packageName = "domelementtype"; |
|
739 | packageName = "domelementtype"; | |
740 | version = "1.1.3"; |
|
740 | version = "1.1.3"; | |
741 | src = fetchurl { |
|
741 | src = fetchurl { | |
742 | url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz"; |
|
742 | url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz"; | |
743 | sha1 = "bd28773e2642881aec51544924299c5cd822185b"; |
|
743 | sha1 = "bd28773e2642881aec51544924299c5cd822185b"; | |
744 | }; |
|
744 | }; | |
745 | }; |
|
745 | }; | |
746 | "domelementtype-1.3.0" = { |
|
746 | "domelementtype-1.3.0" = { | |
747 | name = "domelementtype"; |
|
747 | name = "domelementtype"; | |
748 | packageName = "domelementtype"; |
|
748 | packageName = "domelementtype"; | |
749 | version = "1.3.0"; |
|
749 | version = "1.3.0"; | |
750 | src = fetchurl { |
|
750 | src = fetchurl { | |
751 | url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz"; |
|
751 | url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz"; | |
752 | sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2"; |
|
752 | sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2"; | |
753 | }; |
|
753 | }; | |
754 | }; |
|
754 | }; | |
755 | "domhandler-2.3.0" = { |
|
755 | "domhandler-2.3.0" = { | |
756 | name = "domhandler"; |
|
756 | name = "domhandler"; | |
757 | packageName = "domhandler"; |
|
757 | packageName = "domhandler"; | |
758 | version = "2.3.0"; |
|
758 | version = "2.3.0"; | |
759 | src = fetchurl { |
|
759 | src = fetchurl { | |
760 | url = "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz"; |
|
760 | url = "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz"; | |
761 | sha1 = "2de59a0822d5027fabff6f032c2b25a2a8abe738"; |
|
761 | sha1 = "2de59a0822d5027fabff6f032c2b25a2a8abe738"; | |
762 | }; |
|
762 | }; | |
763 | }; |
|
763 | }; | |
764 | "domutils-1.5.1" = { |
|
764 | "domutils-1.5.1" = { | |
765 | name = "domutils"; |
|
765 | name = "domutils"; | |
766 | packageName = "domutils"; |
|
766 | packageName = "domutils"; | |
767 | version = "1.5.1"; |
|
767 | version = "1.5.1"; | |
768 | src = fetchurl { |
|
768 | src = fetchurl { | |
769 | url = "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz"; |
|
769 | url = "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz"; | |
770 | sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf"; |
|
770 | sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf"; | |
771 | }; |
|
771 | }; | |
772 | }; |
|
772 | }; | |
773 | "ecc-jsbn-0.1.2" = { |
|
773 | "ecc-jsbn-0.1.2" = { | |
774 | name = "ecc-jsbn"; |
|
774 | name = "ecc-jsbn"; | |
775 | packageName = "ecc-jsbn"; |
|
775 | packageName = "ecc-jsbn"; | |
776 | version = "0.1.2"; |
|
776 | version = "0.1.2"; | |
777 | src = fetchurl { |
|
777 | src = fetchurl { | |
778 | url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz"; |
|
778 | url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz"; | |
779 | sha1 = "3a83a904e54353287874c564b7549386849a98c9"; |
|
779 | sha1 = "3a83a904e54353287874c564b7549386849a98c9"; | |
780 | }; |
|
780 | }; | |
781 | }; |
|
781 | }; | |
782 | "entities-1.0.0" = { |
|
782 | "entities-1.0.0" = { | |
783 | name = "entities"; |
|
783 | name = "entities"; | |
784 | packageName = "entities"; |
|
784 | packageName = "entities"; | |
785 | version = "1.0.0"; |
|
785 | version = "1.0.0"; | |
786 | src = fetchurl { |
|
786 | src = fetchurl { | |
787 | url = "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz"; |
|
787 | url = "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz"; | |
788 | sha1 = "b2987aa3821347fcde642b24fdfc9e4fb712bf26"; |
|
788 | sha1 = "b2987aa3821347fcde642b24fdfc9e4fb712bf26"; | |
789 | }; |
|
789 | }; | |
790 | }; |
|
790 | }; | |
791 | "entities-1.1.1" = { |
|
791 | "entities-1.1.1" = { | |
792 | name = "entities"; |
|
792 | name = "entities"; | |
793 | packageName = "entities"; |
|
793 | packageName = "entities"; | |
794 | version = "1.1.1"; |
|
794 | version = "1.1.1"; | |
795 | src = fetchurl { |
|
795 | src = fetchurl { | |
796 | url = "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz"; |
|
796 | url = "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz"; | |
797 | sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"; |
|
797 | sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"; | |
798 | }; |
|
798 | }; | |
799 | }; |
|
799 | }; | |
800 | "errno-0.1.7" = { |
|
800 | "errno-0.1.7" = { | |
801 | name = "errno"; |
|
801 | name = "errno"; | |
802 | packageName = "errno"; |
|
802 | packageName = "errno"; | |
803 | version = "0.1.7"; |
|
803 | version = "0.1.7"; | |
804 | src = fetchurl { |
|
804 | src = fetchurl { | |
805 | url = "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz"; |
|
805 | url = "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz"; | |
806 | sha512 = "MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg=="; |
|
806 | sha512 = "MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg=="; | |
807 | }; |
|
807 | }; | |
808 | }; |
|
808 | }; | |
809 | "es6-promise-2.3.0" = { |
|
809 | "es6-promise-2.3.0" = { | |
810 | name = "es6-promise"; |
|
810 | name = "es6-promise"; | |
811 | packageName = "es6-promise"; |
|
811 | packageName = "es6-promise"; | |
812 | version = "2.3.0"; |
|
812 | version = "2.3.0"; | |
813 | src = fetchurl { |
|
813 | src = fetchurl { | |
814 | url = "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz"; |
|
814 | url = "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz"; | |
815 | sha1 = "96edb9f2fdb01995822b263dd8aadab6748181bc"; |
|
815 | sha1 = "96edb9f2fdb01995822b263dd8aadab6748181bc"; | |
816 | }; |
|
816 | }; | |
817 | }; |
|
817 | }; | |
818 |
"es6-promise-4.2. |
|
818 | "es6-promise-4.2.5" = { | |
819 | name = "es6-promise"; |
|
819 | name = "es6-promise"; | |
820 | packageName = "es6-promise"; |
|
820 | packageName = "es6-promise"; | |
821 |
version = "4.2. |
|
821 | version = "4.2.5"; | |
822 | src = fetchurl { |
|
822 | src = fetchurl { | |
823 |
url = "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2. |
|
823 | url = "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz"; | |
824 | sha512 = "/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ=="; |
|
824 | sha512 = "n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg=="; | |
825 | }; |
|
825 | }; | |
826 | }; |
|
826 | }; | |
827 | "escape-string-regexp-1.0.5" = { |
|
827 | "escape-string-regexp-1.0.5" = { | |
828 | name = "escape-string-regexp"; |
|
828 | name = "escape-string-regexp"; | |
829 | packageName = "escape-string-regexp"; |
|
829 | packageName = "escape-string-regexp"; | |
830 | version = "1.0.5"; |
|
830 | version = "1.0.5"; | |
831 | src = fetchurl { |
|
831 | src = fetchurl { | |
832 | url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"; |
|
832 | url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"; | |
833 | sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"; |
|
833 | sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"; | |
834 | }; |
|
834 | }; | |
835 | }; |
|
835 | }; | |
836 | "escodegen-1.11.0" = { |
|
836 | "escodegen-1.11.0" = { | |
837 | name = "escodegen"; |
|
837 | name = "escodegen"; | |
838 | packageName = "escodegen"; |
|
838 | packageName = "escodegen"; | |
839 | version = "1.11.0"; |
|
839 | version = "1.11.0"; | |
840 | src = fetchurl { |
|
840 | src = fetchurl { | |
841 | url = "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz"; |
|
841 | url = "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz"; | |
842 | sha512 = "IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw=="; |
|
842 | sha512 = "IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw=="; | |
843 | }; |
|
843 | }; | |
844 | }; |
|
844 | }; | |
845 | "espree-3.5.4" = { |
|
845 | "espree-3.5.4" = { | |
846 | name = "espree"; |
|
846 | name = "espree"; | |
847 | packageName = "espree"; |
|
847 | packageName = "espree"; | |
848 | version = "3.5.4"; |
|
848 | version = "3.5.4"; | |
849 | src = fetchurl { |
|
849 | src = fetchurl { | |
850 | url = "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz"; |
|
850 | url = "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz"; | |
851 | sha512 = "yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A=="; |
|
851 | sha512 = "yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A=="; | |
852 | }; |
|
852 | }; | |
853 | }; |
|
853 | }; | |
854 | "esprima-1.0.4" = { |
|
854 | "esprima-1.0.4" = { | |
855 | name = "esprima"; |
|
855 | name = "esprima"; | |
856 | packageName = "esprima"; |
|
856 | packageName = "esprima"; | |
857 | version = "1.0.4"; |
|
857 | version = "1.0.4"; | |
858 | src = fetchurl { |
|
858 | src = fetchurl { | |
859 | url = "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz"; |
|
859 | url = "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz"; | |
860 | sha1 = "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad"; |
|
860 | sha1 = "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad"; | |
861 | }; |
|
861 | }; | |
862 | }; |
|
862 | }; | |
863 | "esprima-3.1.3" = { |
|
863 | "esprima-3.1.3" = { | |
864 | name = "esprima"; |
|
864 | name = "esprima"; | |
865 | packageName = "esprima"; |
|
865 | packageName = "esprima"; | |
866 | version = "3.1.3"; |
|
866 | version = "3.1.3"; | |
867 | src = fetchurl { |
|
867 | src = fetchurl { | |
868 | url = "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz"; |
|
868 | url = "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz"; | |
869 | sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633"; |
|
869 | sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633"; | |
870 | }; |
|
870 | }; | |
871 | }; |
|
871 | }; | |
872 | "estraverse-3.1.0" = { |
|
872 | "estraverse-3.1.0" = { | |
873 | name = "estraverse"; |
|
873 | name = "estraverse"; | |
874 | packageName = "estraverse"; |
|
874 | packageName = "estraverse"; | |
875 | version = "3.1.0"; |
|
875 | version = "3.1.0"; | |
876 | src = fetchurl { |
|
876 | src = fetchurl { | |
877 | url = "https://registry.npmjs.org/estraverse/-/estraverse-3.1.0.tgz"; |
|
877 | url = "https://registry.npmjs.org/estraverse/-/estraverse-3.1.0.tgz"; | |
878 | sha1 = "15e28a446b8b82bc700ccc8b96c78af4da0d6cba"; |
|
878 | sha1 = "15e28a446b8b82bc700ccc8b96c78af4da0d6cba"; | |
879 | }; |
|
879 | }; | |
880 | }; |
|
880 | }; | |
881 | "estraverse-4.2.0" = { |
|
881 | "estraverse-4.2.0" = { | |
882 | name = "estraverse"; |
|
882 | name = "estraverse"; | |
883 | packageName = "estraverse"; |
|
883 | packageName = "estraverse"; | |
884 | version = "4.2.0"; |
|
884 | version = "4.2.0"; | |
885 | src = fetchurl { |
|
885 | src = fetchurl { | |
886 | url = "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz"; |
|
886 | url = "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz"; | |
887 | sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13"; |
|
887 | sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13"; | |
888 | }; |
|
888 | }; | |
889 | }; |
|
889 | }; | |
890 | "esutils-1.1.6" = { |
|
890 | "esutils-1.1.6" = { | |
891 | name = "esutils"; |
|
891 | name = "esutils"; | |
892 | packageName = "esutils"; |
|
892 | packageName = "esutils"; | |
893 | version = "1.1.6"; |
|
893 | version = "1.1.6"; | |
894 | src = fetchurl { |
|
894 | src = fetchurl { | |
895 | url = "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz"; |
|
895 | url = "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz"; | |
896 | sha1 = "c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375"; |
|
896 | sha1 = "c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375"; | |
897 | }; |
|
897 | }; | |
898 | }; |
|
898 | }; | |
899 | "esutils-2.0.2" = { |
|
899 | "esutils-2.0.2" = { | |
900 | name = "esutils"; |
|
900 | name = "esutils"; | |
901 | packageName = "esutils"; |
|
901 | packageName = "esutils"; | |
902 | version = "2.0.2"; |
|
902 | version = "2.0.2"; | |
903 | src = fetchurl { |
|
903 | src = fetchurl { | |
904 | url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz"; |
|
904 | url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz"; | |
905 | sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"; |
|
905 | sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"; | |
906 | }; |
|
906 | }; | |
907 | }; |
|
907 | }; | |
908 | "eventemitter2-0.4.14" = { |
|
908 | "eventemitter2-0.4.14" = { | |
909 | name = "eventemitter2"; |
|
909 | name = "eventemitter2"; | |
910 | packageName = "eventemitter2"; |
|
910 | packageName = "eventemitter2"; | |
911 | version = "0.4.14"; |
|
911 | version = "0.4.14"; | |
912 | src = fetchurl { |
|
912 | src = fetchurl { | |
913 | url = "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz"; |
|
913 | url = "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz"; | |
914 | sha1 = "8f61b75cde012b2e9eb284d4545583b5643b61ab"; |
|
914 | sha1 = "8f61b75cde012b2e9eb284d4545583b5643b61ab"; | |
915 | }; |
|
915 | }; | |
916 | }; |
|
916 | }; | |
917 | "exit-0.1.2" = { |
|
917 | "exit-0.1.2" = { | |
918 | name = "exit"; |
|
918 | name = "exit"; | |
919 | packageName = "exit"; |
|
919 | packageName = "exit"; | |
920 | version = "0.1.2"; |
|
920 | version = "0.1.2"; | |
921 | src = fetchurl { |
|
921 | src = fetchurl { | |
922 | url = "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"; |
|
922 | url = "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"; | |
923 | sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c"; |
|
923 | sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c"; | |
924 | }; |
|
924 | }; | |
925 | }; |
|
925 | }; | |
926 | "extend-3.0.2" = { |
|
926 | "extend-3.0.2" = { | |
927 | name = "extend"; |
|
927 | name = "extend"; | |
928 | packageName = "extend"; |
|
928 | packageName = "extend"; | |
929 | version = "3.0.2"; |
|
929 | version = "3.0.2"; | |
930 | src = fetchurl { |
|
930 | src = fetchurl { | |
931 | url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz"; |
|
931 | url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz"; | |
932 | sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="; |
|
932 | sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="; | |
933 | }; |
|
933 | }; | |
934 | }; |
|
934 | }; | |
935 | "extract-zip-1.6.7" = { |
|
935 | "extract-zip-1.6.7" = { | |
936 | name = "extract-zip"; |
|
936 | name = "extract-zip"; | |
937 | packageName = "extract-zip"; |
|
937 | packageName = "extract-zip"; | |
938 | version = "1.6.7"; |
|
938 | version = "1.6.7"; | |
939 | src = fetchurl { |
|
939 | src = fetchurl { | |
940 | url = "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz"; |
|
940 | url = "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz"; | |
941 | sha1 = "a840b4b8af6403264c8db57f4f1a74333ef81fe9"; |
|
941 | sha1 = "a840b4b8af6403264c8db57f4f1a74333ef81fe9"; | |
942 | }; |
|
942 | }; | |
943 | }; |
|
943 | }; | |
944 | "extsprintf-1.3.0" = { |
|
944 | "extsprintf-1.3.0" = { | |
945 | name = "extsprintf"; |
|
945 | name = "extsprintf"; | |
946 | packageName = "extsprintf"; |
|
946 | packageName = "extsprintf"; | |
947 | version = "1.3.0"; |
|
947 | version = "1.3.0"; | |
948 | src = fetchurl { |
|
948 | src = fetchurl { | |
949 | url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz"; |
|
949 | url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz"; | |
950 | sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05"; |
|
950 | sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05"; | |
951 | }; |
|
951 | }; | |
952 | }; |
|
952 | }; | |
953 | "eyes-0.1.8" = { |
|
953 | "eyes-0.1.8" = { | |
954 | name = "eyes"; |
|
954 | name = "eyes"; | |
955 | packageName = "eyes"; |
|
955 | packageName = "eyes"; | |
956 | version = "0.1.8"; |
|
956 | version = "0.1.8"; | |
957 | src = fetchurl { |
|
957 | src = fetchurl { | |
958 | url = "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz"; |
|
958 | url = "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz"; | |
959 | sha1 = "62cf120234c683785d902348a800ef3e0cc20bc0"; |
|
959 | sha1 = "62cf120234c683785d902348a800ef3e0cc20bc0"; | |
960 | }; |
|
960 | }; | |
961 | }; |
|
961 | }; | |
962 | "fast-levenshtein-2.0.6" = { |
|
962 | "fast-levenshtein-2.0.6" = { | |
963 | name = "fast-levenshtein"; |
|
963 | name = "fast-levenshtein"; | |
964 | packageName = "fast-levenshtein"; |
|
964 | packageName = "fast-levenshtein"; | |
965 | version = "2.0.6"; |
|
965 | version = "2.0.6"; | |
966 | src = fetchurl { |
|
966 | src = fetchurl { | |
967 | url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"; |
|
967 | url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"; | |
968 | sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917"; |
|
968 | sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917"; | |
969 | }; |
|
969 | }; | |
970 | }; |
|
970 | }; | |
971 | "favico.js-0.3.10" = { |
|
971 | "favico.js-0.3.10" = { | |
972 | name = "favico.js"; |
|
972 | name = "favico.js"; | |
973 | packageName = "favico.js"; |
|
973 | packageName = "favico.js"; | |
974 | version = "0.3.10"; |
|
974 | version = "0.3.10"; | |
975 | src = fetchurl { |
|
975 | src = fetchurl { | |
976 | url = "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz"; |
|
976 | url = "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz"; | |
977 | sha1 = "80586e27a117f24a8d51c18a99bdc714d4339301"; |
|
977 | sha1 = "80586e27a117f24a8d51c18a99bdc714d4339301"; | |
978 | }; |
|
978 | }; | |
979 | }; |
|
979 | }; | |
980 | "faye-websocket-0.4.4" = { |
|
980 | "faye-websocket-0.4.4" = { | |
981 | name = "faye-websocket"; |
|
981 | name = "faye-websocket"; | |
982 | packageName = "faye-websocket"; |
|
982 | packageName = "faye-websocket"; | |
983 | version = "0.4.4"; |
|
983 | version = "0.4.4"; | |
984 | src = fetchurl { |
|
984 | src = fetchurl { | |
985 | url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz"; |
|
985 | url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz"; | |
986 | sha1 = "c14c5b3bf14d7417ffbfd990c0a7495cd9f337bc"; |
|
986 | sha1 = "c14c5b3bf14d7417ffbfd990c0a7495cd9f337bc"; | |
987 | }; |
|
987 | }; | |
988 | }; |
|
988 | }; | |
989 | "fd-slicer-1.0.1" = { |
|
989 | "fd-slicer-1.0.1" = { | |
990 | name = "fd-slicer"; |
|
990 | name = "fd-slicer"; | |
991 | packageName = "fd-slicer"; |
|
991 | packageName = "fd-slicer"; | |
992 | version = "1.0.1"; |
|
992 | version = "1.0.1"; | |
993 | src = fetchurl { |
|
993 | src = fetchurl { | |
994 | url = "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz"; |
|
994 | url = "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz"; | |
995 | sha1 = "8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"; |
|
995 | sha1 = "8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"; | |
996 | }; |
|
996 | }; | |
997 | }; |
|
997 | }; | |
998 | "feature-detect-es6-1.5.0" = { |
|
998 | "feature-detect-es6-1.5.0" = { | |
999 | name = "feature-detect-es6"; |
|
999 | name = "feature-detect-es6"; | |
1000 | packageName = "feature-detect-es6"; |
|
1000 | packageName = "feature-detect-es6"; | |
1001 | version = "1.5.0"; |
|
1001 | version = "1.5.0"; | |
1002 | src = fetchurl { |
|
1002 | src = fetchurl { | |
1003 | url = "https://registry.npmjs.org/feature-detect-es6/-/feature-detect-es6-1.5.0.tgz"; |
|
1003 | url = "https://registry.npmjs.org/feature-detect-es6/-/feature-detect-es6-1.5.0.tgz"; | |
1004 | sha512 = "DzWPIGzTnfp3/KK1d/YPfmgLqeDju9F2DQYBL35VusgSApcA7XGqVtXfR4ETOOFEzdFJ3J7zh0Gkk011TiA4uQ=="; |
|
1004 | sha512 = "DzWPIGzTnfp3/KK1d/YPfmgLqeDju9F2DQYBL35VusgSApcA7XGqVtXfR4ETOOFEzdFJ3J7zh0Gkk011TiA4uQ=="; | |
1005 | }; |
|
1005 | }; | |
1006 | }; |
|
1006 | }; | |
1007 | "file-sync-cmp-0.1.1" = { |
|
1007 | "file-sync-cmp-0.1.1" = { | |
1008 | name = "file-sync-cmp"; |
|
1008 | name = "file-sync-cmp"; | |
1009 | packageName = "file-sync-cmp"; |
|
1009 | packageName = "file-sync-cmp"; | |
1010 | version = "0.1.1"; |
|
1010 | version = "0.1.1"; | |
1011 | src = fetchurl { |
|
1011 | src = fetchurl { | |
1012 | url = "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz"; |
|
1012 | url = "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz"; | |
1013 | sha1 = "a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b"; |
|
1013 | sha1 = "a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b"; | |
1014 | }; |
|
1014 | }; | |
1015 | }; |
|
1015 | }; | |
1016 | "find-replace-1.0.3" = { |
|
1016 | "find-replace-1.0.3" = { | |
1017 | name = "find-replace"; |
|
1017 | name = "find-replace"; | |
1018 | packageName = "find-replace"; |
|
1018 | packageName = "find-replace"; | |
1019 | version = "1.0.3"; |
|
1019 | version = "1.0.3"; | |
1020 | src = fetchurl { |
|
1020 | src = fetchurl { | |
1021 | url = "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz"; |
|
1021 | url = "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz"; | |
1022 | sha1 = "b88e7364d2d9c959559f388c66670d6130441fa0"; |
|
1022 | sha1 = "b88e7364d2d9c959559f388c66670d6130441fa0"; | |
1023 | }; |
|
1023 | }; | |
1024 | }; |
|
1024 | }; | |
1025 | "findit-2.0.0" = { |
|
1025 | "findit-2.0.0" = { | |
1026 | name = "findit"; |
|
1026 | name = "findit"; | |
1027 | packageName = "findit"; |
|
1027 | packageName = "findit"; | |
1028 | version = "2.0.0"; |
|
1028 | version = "2.0.0"; | |
1029 | src = fetchurl { |
|
1029 | src = fetchurl { | |
1030 | url = "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz"; |
|
1030 | url = "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz"; | |
1031 | sha1 = "6509f0126af4c178551cfa99394e032e13a4d56e"; |
|
1031 | sha1 = "6509f0126af4c178551cfa99394e032e13a4d56e"; | |
1032 | }; |
|
1032 | }; | |
1033 | }; |
|
1033 | }; | |
1034 | "findup-sync-0.1.3" = { |
|
1034 | "findup-sync-0.1.3" = { | |
1035 | name = "findup-sync"; |
|
1035 | name = "findup-sync"; | |
1036 | packageName = "findup-sync"; |
|
1036 | packageName = "findup-sync"; | |
1037 | version = "0.1.3"; |
|
1037 | version = "0.1.3"; | |
1038 | src = fetchurl { |
|
1038 | src = fetchurl { | |
1039 | url = "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz"; |
|
1039 | url = "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz"; | |
1040 | sha1 = "7f3e7a97b82392c653bf06589bd85190e93c3683"; |
|
1040 | sha1 = "7f3e7a97b82392c653bf06589bd85190e93c3683"; | |
1041 | }; |
|
1041 | }; | |
1042 | }; |
|
1042 | }; | |
1043 | "foreachasync-3.0.0" = { |
|
1043 | "foreachasync-3.0.0" = { | |
1044 | name = "foreachasync"; |
|
1044 | name = "foreachasync"; | |
1045 | packageName = "foreachasync"; |
|
1045 | packageName = "foreachasync"; | |
1046 | version = "3.0.0"; |
|
1046 | version = "3.0.0"; | |
1047 | src = fetchurl { |
|
1047 | src = fetchurl { | |
1048 | url = "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz"; |
|
1048 | url = "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz"; | |
1049 | sha1 = "5502987dc8714be3392097f32e0071c9dee07cf6"; |
|
1049 | sha1 = "5502987dc8714be3392097f32e0071c9dee07cf6"; | |
1050 | }; |
|
1050 | }; | |
1051 | }; |
|
1051 | }; | |
1052 | "forever-agent-0.6.1" = { |
|
1052 | "forever-agent-0.6.1" = { | |
1053 | name = "forever-agent"; |
|
1053 | name = "forever-agent"; | |
1054 | packageName = "forever-agent"; |
|
1054 | packageName = "forever-agent"; | |
1055 | version = "0.6.1"; |
|
1055 | version = "0.6.1"; | |
1056 | src = fetchurl { |
|
1056 | src = fetchurl { | |
1057 | url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"; |
|
1057 | url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"; | |
1058 | sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"; |
|
1058 | sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"; | |
1059 | }; |
|
1059 | }; | |
1060 | }; |
|
1060 | }; | |
1061 | "form-data-2.1.4" = { |
|
1061 | "form-data-2.1.4" = { | |
1062 | name = "form-data"; |
|
1062 | name = "form-data"; | |
1063 | packageName = "form-data"; |
|
1063 | packageName = "form-data"; | |
1064 | version = "2.1.4"; |
|
1064 | version = "2.1.4"; | |
1065 | src = fetchurl { |
|
1065 | src = fetchurl { | |
1066 | url = "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz"; |
|
1066 | url = "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz"; | |
1067 | sha1 = "33c183acf193276ecaa98143a69e94bfee1750d1"; |
|
1067 | sha1 = "33c183acf193276ecaa98143a69e94bfee1750d1"; | |
1068 | }; |
|
1068 | }; | |
1069 | }; |
|
1069 | }; | |
1070 | "fs-extra-0.6.4" = { |
|
1070 | "fs-extra-0.6.4" = { | |
1071 | name = "fs-extra"; |
|
1071 | name = "fs-extra"; | |
1072 | packageName = "fs-extra"; |
|
1072 | packageName = "fs-extra"; | |
1073 | version = "0.6.4"; |
|
1073 | version = "0.6.4"; | |
1074 | src = fetchurl { |
|
1074 | src = fetchurl { | |
1075 | url = "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz"; |
|
1075 | url = "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz"; | |
1076 | sha1 = "f46f0c75b7841f8d200b3348cd4d691d5a099d15"; |
|
1076 | sha1 = "f46f0c75b7841f8d200b3348cd4d691d5a099d15"; | |
1077 | }; |
|
1077 | }; | |
1078 | }; |
|
1078 | }; | |
1079 | "fs-extra-1.0.0" = { |
|
1079 | "fs-extra-1.0.0" = { | |
1080 | name = "fs-extra"; |
|
1080 | name = "fs-extra"; | |
1081 | packageName = "fs-extra"; |
|
1081 | packageName = "fs-extra"; | |
1082 | version = "1.0.0"; |
|
1082 | version = "1.0.0"; | |
1083 | src = fetchurl { |
|
1083 | src = fetchurl { | |
1084 | url = "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz"; |
|
1084 | url = "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz"; | |
1085 | sha1 = "cd3ce5f7e7cb6145883fcae3191e9877f8587950"; |
|
1085 | sha1 = "cd3ce5f7e7cb6145883fcae3191e9877f8587950"; | |
1086 | }; |
|
1086 | }; | |
1087 | }; |
|
1087 | }; | |
1088 | "fs.extra-1.3.2" = { |
|
1088 | "fs.extra-1.3.2" = { | |
1089 | name = "fs.extra"; |
|
1089 | name = "fs.extra"; | |
1090 | packageName = "fs.extra"; |
|
1090 | packageName = "fs.extra"; | |
1091 | version = "1.3.2"; |
|
1091 | version = "1.3.2"; | |
1092 | src = fetchurl { |
|
1092 | src = fetchurl { | |
1093 | url = "https://registry.npmjs.org/fs.extra/-/fs.extra-1.3.2.tgz"; |
|
1093 | url = "https://registry.npmjs.org/fs.extra/-/fs.extra-1.3.2.tgz"; | |
1094 | sha1 = "dd023f93013bee24531f1b33514c37b20fd93349"; |
|
1094 | sha1 = "dd023f93013bee24531f1b33514c37b20fd93349"; | |
1095 | }; |
|
1095 | }; | |
1096 | }; |
|
1096 | }; | |
1097 | "fs.realpath-1.0.0" = { |
|
1097 | "fs.realpath-1.0.0" = { | |
1098 | name = "fs.realpath"; |
|
1098 | name = "fs.realpath"; | |
1099 | packageName = "fs.realpath"; |
|
1099 | packageName = "fs.realpath"; | |
1100 | version = "1.0.0"; |
|
1100 | version = "1.0.0"; | |
1101 | src = fetchurl { |
|
1101 | src = fetchurl { | |
1102 | url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"; |
|
1102 | url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"; | |
1103 | sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f"; |
|
1103 | sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f"; | |
1104 | }; |
|
1104 | }; | |
1105 | }; |
|
1105 | }; | |
1106 | "gauge-2.7.4" = { |
|
1106 | "gauge-2.7.4" = { | |
1107 | name = "gauge"; |
|
1107 | name = "gauge"; | |
1108 | packageName = "gauge"; |
|
1108 | packageName = "gauge"; | |
1109 | version = "2.7.4"; |
|
1109 | version = "2.7.4"; | |
1110 | src = fetchurl { |
|
1110 | src = fetchurl { | |
1111 | url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz"; |
|
1111 | url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz"; | |
1112 | sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7"; |
|
1112 | sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7"; | |
1113 | }; |
|
1113 | }; | |
1114 | }; |
|
1114 | }; | |
1115 | "gaze-0.5.2" = { |
|
1115 | "gaze-0.5.2" = { | |
1116 | name = "gaze"; |
|
1116 | name = "gaze"; | |
1117 | packageName = "gaze"; |
|
1117 | packageName = "gaze"; | |
1118 | version = "0.5.2"; |
|
1118 | version = "0.5.2"; | |
1119 | src = fetchurl { |
|
1119 | src = fetchurl { | |
1120 | url = "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz"; |
|
1120 | url = "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz"; | |
1121 | sha1 = "40b709537d24d1d45767db5a908689dfe69ac44f"; |
|
1121 | sha1 = "40b709537d24d1d45767db5a908689dfe69ac44f"; | |
1122 | }; |
|
1122 | }; | |
1123 | }; |
|
1123 | }; | |
1124 | "getobject-0.1.0" = { |
|
1124 | "getobject-0.1.0" = { | |
1125 | name = "getobject"; |
|
1125 | name = "getobject"; | |
1126 | packageName = "getobject"; |
|
1126 | packageName = "getobject"; | |
1127 | version = "0.1.0"; |
|
1127 | version = "0.1.0"; | |
1128 | src = fetchurl { |
|
1128 | src = fetchurl { | |
1129 | url = "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz"; |
|
1129 | url = "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz"; | |
1130 | sha1 = "047a449789fa160d018f5486ed91320b6ec7885c"; |
|
1130 | sha1 = "047a449789fa160d018f5486ed91320b6ec7885c"; | |
1131 | }; |
|
1131 | }; | |
1132 | }; |
|
1132 | }; | |
1133 | "getpass-0.1.7" = { |
|
1133 | "getpass-0.1.7" = { | |
1134 | name = "getpass"; |
|
1134 | name = "getpass"; | |
1135 | packageName = "getpass"; |
|
1135 | packageName = "getpass"; | |
1136 | version = "0.1.7"; |
|
1136 | version = "0.1.7"; | |
1137 | src = fetchurl { |
|
1137 | src = fetchurl { | |
1138 | url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz"; |
|
1138 | url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz"; | |
1139 | sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa"; |
|
1139 | sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa"; | |
1140 | }; |
|
1140 | }; | |
1141 | }; |
|
1141 | }; | |
1142 | "glob-3.1.21" = { |
|
1142 | "glob-3.1.21" = { | |
1143 | name = "glob"; |
|
1143 | name = "glob"; | |
1144 | packageName = "glob"; |
|
1144 | packageName = "glob"; | |
1145 | version = "3.1.21"; |
|
1145 | version = "3.1.21"; | |
1146 | src = fetchurl { |
|
1146 | src = fetchurl { | |
1147 | url = "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz"; |
|
1147 | url = "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz"; | |
1148 | sha1 = "d29e0a055dea5138f4d07ed40e8982e83c2066cd"; |
|
1148 | sha1 = "d29e0a055dea5138f4d07ed40e8982e83c2066cd"; | |
1149 | }; |
|
1149 | }; | |
1150 | }; |
|
1150 | }; | |
1151 | "glob-3.2.11" = { |
|
1151 | "glob-3.2.11" = { | |
1152 | name = "glob"; |
|
1152 | name = "glob"; | |
1153 | packageName = "glob"; |
|
1153 | packageName = "glob"; | |
1154 | version = "3.2.11"; |
|
1154 | version = "3.2.11"; | |
1155 | src = fetchurl { |
|
1155 | src = fetchurl { | |
1156 | url = "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz"; |
|
1156 | url = "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz"; | |
1157 | sha1 = "4a973f635b9190f715d10987d5c00fd2815ebe3d"; |
|
1157 | sha1 = "4a973f635b9190f715d10987d5c00fd2815ebe3d"; | |
1158 | }; |
|
1158 | }; | |
1159 | }; |
|
1159 | }; | |
1160 |
"glob-7.1. |
|
1160 | "glob-7.1.3" = { | |
1161 | name = "glob"; |
|
1161 | name = "glob"; | |
1162 | packageName = "glob"; |
|
1162 | packageName = "glob"; | |
1163 |
version = "7.1. |
|
1163 | version = "7.1.3"; | |
1164 | src = fetchurl { |
|
1164 | src = fetchurl { | |
1165 |
url = "https://registry.npmjs.org/glob/-/glob-7.1. |
|
1165 | url = "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz"; | |
1166 | sha512 = "MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ=="; |
|
1166 | sha512 = "vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ=="; | |
1167 | }; |
|
1167 | }; | |
1168 | }; |
|
1168 | }; | |
1169 | "globule-0.1.0" = { |
|
1169 | "globule-0.1.0" = { | |
1170 | name = "globule"; |
|
1170 | name = "globule"; | |
1171 | packageName = "globule"; |
|
1171 | packageName = "globule"; | |
1172 | version = "0.1.0"; |
|
1172 | version = "0.1.0"; | |
1173 | src = fetchurl { |
|
1173 | src = fetchurl { | |
1174 | url = "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz"; |
|
1174 | url = "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz"; | |
1175 | sha1 = "d9c8edde1da79d125a151b79533b978676346ae5"; |
|
1175 | sha1 = "d9c8edde1da79d125a151b79533b978676346ae5"; | |
1176 | }; |
|
1176 | }; | |
1177 | }; |
|
1177 | }; | |
1178 | "good-listener-1.2.2" = { |
|
1178 | "good-listener-1.2.2" = { | |
1179 | name = "good-listener"; |
|
1179 | name = "good-listener"; | |
1180 | packageName = "good-listener"; |
|
1180 | packageName = "good-listener"; | |
1181 | version = "1.2.2"; |
|
1181 | version = "1.2.2"; | |
1182 | src = fetchurl { |
|
1182 | src = fetchurl { | |
1183 | url = "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz"; |
|
1183 | url = "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz"; | |
1184 | sha1 = "d53b30cdf9313dffb7dc9a0d477096aa6d145c50"; |
|
1184 | sha1 = "d53b30cdf9313dffb7dc9a0d477096aa6d145c50"; | |
1185 | }; |
|
1185 | }; | |
1186 | }; |
|
1186 | }; | |
1187 | "graceful-fs-1.2.3" = { |
|
1187 | "graceful-fs-1.2.3" = { | |
1188 | name = "graceful-fs"; |
|
1188 | name = "graceful-fs"; | |
1189 | packageName = "graceful-fs"; |
|
1189 | packageName = "graceful-fs"; | |
1190 | version = "1.2.3"; |
|
1190 | version = "1.2.3"; | |
1191 | src = fetchurl { |
|
1191 | src = fetchurl { | |
1192 | url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz"; |
|
1192 | url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz"; | |
1193 | sha1 = "15a4806a57547cb2d2dbf27f42e89a8c3451b364"; |
|
1193 | sha1 = "15a4806a57547cb2d2dbf27f42e89a8c3451b364"; | |
1194 | }; |
|
1194 | }; | |
1195 | }; |
|
1195 | }; | |
1196 | "graceful-fs-4.1.11" = { |
|
1196 | "graceful-fs-4.1.11" = { | |
1197 | name = "graceful-fs"; |
|
1197 | name = "graceful-fs"; | |
1198 | packageName = "graceful-fs"; |
|
1198 | packageName = "graceful-fs"; | |
1199 | version = "4.1.11"; |
|
1199 | version = "4.1.11"; | |
1200 | src = fetchurl { |
|
1200 | src = fetchurl { | |
1201 | url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"; |
|
1201 | url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"; | |
1202 | sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"; |
|
1202 | sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"; | |
1203 | }; |
|
1203 | }; | |
1204 | }; |
|
1204 | }; | |
1205 | "grunt-0.4.5" = { |
|
1205 | "grunt-0.4.5" = { | |
1206 | name = "grunt"; |
|
1206 | name = "grunt"; | |
1207 | packageName = "grunt"; |
|
1207 | packageName = "grunt"; | |
1208 | version = "0.4.5"; |
|
1208 | version = "0.4.5"; | |
1209 | src = fetchurl { |
|
1209 | src = fetchurl { | |
1210 | url = "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz"; |
|
1210 | url = "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz"; | |
1211 | sha1 = "56937cd5194324adff6d207631832a9d6ba4e7f0"; |
|
1211 | sha1 = "56937cd5194324adff6d207631832a9d6ba4e7f0"; | |
1212 | }; |
|
1212 | }; | |
1213 | }; |
|
1213 | }; | |
1214 | "grunt-contrib-concat-0.5.1" = { |
|
1214 | "grunt-contrib-concat-0.5.1" = { | |
1215 | name = "grunt-contrib-concat"; |
|
1215 | name = "grunt-contrib-concat"; | |
1216 | packageName = "grunt-contrib-concat"; |
|
1216 | packageName = "grunt-contrib-concat"; | |
1217 | version = "0.5.1"; |
|
1217 | version = "0.5.1"; | |
1218 | src = fetchurl { |
|
1218 | src = fetchurl { | |
1219 | url = "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.5.1.tgz"; |
|
1219 | url = "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.5.1.tgz"; | |
1220 | sha1 = "953c6efdfdfd2c107ab9c85077f2d4b24d31cd49"; |
|
1220 | sha1 = "953c6efdfdfd2c107ab9c85077f2d4b24d31cd49"; | |
1221 | }; |
|
1221 | }; | |
1222 | }; |
|
1222 | }; | |
1223 | "grunt-contrib-copy-1.0.0" = { |
|
1223 | "grunt-contrib-copy-1.0.0" = { | |
1224 | name = "grunt-contrib-copy"; |
|
1224 | name = "grunt-contrib-copy"; | |
1225 | packageName = "grunt-contrib-copy"; |
|
1225 | packageName = "grunt-contrib-copy"; | |
1226 | version = "1.0.0"; |
|
1226 | version = "1.0.0"; | |
1227 | src = fetchurl { |
|
1227 | src = fetchurl { | |
1228 | url = "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz"; |
|
1228 | url = "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz"; | |
1229 | sha1 = "7060c6581e904b8ab0d00f076e0a8f6e3e7c3573"; |
|
1229 | sha1 = "7060c6581e904b8ab0d00f076e0a8f6e3e7c3573"; | |
1230 | }; |
|
1230 | }; | |
1231 | }; |
|
1231 | }; | |
1232 | "grunt-contrib-jshint-0.12.0" = { |
|
1232 | "grunt-contrib-jshint-0.12.0" = { | |
1233 | name = "grunt-contrib-jshint"; |
|
1233 | name = "grunt-contrib-jshint"; | |
1234 | packageName = "grunt-contrib-jshint"; |
|
1234 | packageName = "grunt-contrib-jshint"; | |
1235 | version = "0.12.0"; |
|
1235 | version = "0.12.0"; | |
1236 | src = fetchurl { |
|
1236 | src = fetchurl { | |
1237 | url = "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.12.0.tgz"; |
|
1237 | url = "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.12.0.tgz"; | |
1238 | sha1 = "f6b2f06fc715264837a7ab6c69a1ce1a689c2c29"; |
|
1238 | sha1 = "f6b2f06fc715264837a7ab6c69a1ce1a689c2c29"; | |
1239 | }; |
|
1239 | }; | |
1240 | }; |
|
1240 | }; | |
1241 | "grunt-contrib-less-1.4.1" = { |
|
1241 | "grunt-contrib-less-1.4.1" = { | |
1242 | name = "grunt-contrib-less"; |
|
1242 | name = "grunt-contrib-less"; | |
1243 | packageName = "grunt-contrib-less"; |
|
1243 | packageName = "grunt-contrib-less"; | |
1244 | version = "1.4.1"; |
|
1244 | version = "1.4.1"; | |
1245 | src = fetchurl { |
|
1245 | src = fetchurl { | |
1246 | url = "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-1.4.1.tgz"; |
|
1246 | url = "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-1.4.1.tgz"; | |
1247 | sha1 = "3bbdec0b75d12ceaa55d62943625c0b0861cdf6f"; |
|
1247 | sha1 = "3bbdec0b75d12ceaa55d62943625c0b0861cdf6f"; | |
1248 | }; |
|
1248 | }; | |
1249 | }; |
|
1249 | }; | |
1250 | "grunt-contrib-watch-0.6.1" = { |
|
1250 | "grunt-contrib-watch-0.6.1" = { | |
1251 | name = "grunt-contrib-watch"; |
|
1251 | name = "grunt-contrib-watch"; | |
1252 | packageName = "grunt-contrib-watch"; |
|
1252 | packageName = "grunt-contrib-watch"; | |
1253 | version = "0.6.1"; |
|
1253 | version = "0.6.1"; | |
1254 | src = fetchurl { |
|
1254 | src = fetchurl { | |
1255 | url = "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz"; |
|
1255 | url = "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz"; | |
1256 | sha1 = "64fdcba25a635f5b4da1b6ce6f90da0aeb6e3f15"; |
|
1256 | sha1 = "64fdcba25a635f5b4da1b6ce6f90da0aeb6e3f15"; | |
1257 | }; |
|
1257 | }; | |
1258 | }; |
|
1258 | }; | |
1259 | "grunt-crisper-1.0.1" = { |
|
1259 | "grunt-crisper-1.0.1" = { | |
1260 | name = "grunt-crisper"; |
|
1260 | name = "grunt-crisper"; | |
1261 | packageName = "grunt-crisper"; |
|
1261 | packageName = "grunt-crisper"; | |
1262 | version = "1.0.1"; |
|
1262 | version = "1.0.1"; | |
1263 | src = fetchurl { |
|
1263 | src = fetchurl { | |
1264 | url = "https://registry.npmjs.org/grunt-crisper/-/grunt-crisper-1.0.1.tgz"; |
|
1264 | url = "https://registry.npmjs.org/grunt-crisper/-/grunt-crisper-1.0.1.tgz"; | |
1265 | sha1 = "e7c091dcaff10deb0091e3035ca7e54008991fe7"; |
|
1265 | sha1 = "e7c091dcaff10deb0091e3035ca7e54008991fe7"; | |
1266 | }; |
|
1266 | }; | |
1267 | }; |
|
1267 | }; | |
1268 | "grunt-legacy-log-0.1.3" = { |
|
1268 | "grunt-legacy-log-0.1.3" = { | |
1269 | name = "grunt-legacy-log"; |
|
1269 | name = "grunt-legacy-log"; | |
1270 | packageName = "grunt-legacy-log"; |
|
1270 | packageName = "grunt-legacy-log"; | |
1271 | version = "0.1.3"; |
|
1271 | version = "0.1.3"; | |
1272 | src = fetchurl { |
|
1272 | src = fetchurl { | |
1273 | url = "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz"; |
|
1273 | url = "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz"; | |
1274 | sha1 = "ec29426e803021af59029f87d2f9cd7335a05531"; |
|
1274 | sha1 = "ec29426e803021af59029f87d2f9cd7335a05531"; | |
1275 | }; |
|
1275 | }; | |
1276 | }; |
|
1276 | }; | |
1277 | "grunt-legacy-log-utils-0.1.1" = { |
|
1277 | "grunt-legacy-log-utils-0.1.1" = { | |
1278 | name = "grunt-legacy-log-utils"; |
|
1278 | name = "grunt-legacy-log-utils"; | |
1279 | packageName = "grunt-legacy-log-utils"; |
|
1279 | packageName = "grunt-legacy-log-utils"; | |
1280 | version = "0.1.1"; |
|
1280 | version = "0.1.1"; | |
1281 | src = fetchurl { |
|
1281 | src = fetchurl { | |
1282 | url = "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz"; |
|
1282 | url = "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz"; | |
1283 | sha1 = "c0706b9dd9064e116f36f23fe4e6b048672c0f7e"; |
|
1283 | sha1 = "c0706b9dd9064e116f36f23fe4e6b048672c0f7e"; | |
1284 | }; |
|
1284 | }; | |
1285 | }; |
|
1285 | }; | |
1286 | "grunt-legacy-util-0.2.0" = { |
|
1286 | "grunt-legacy-util-0.2.0" = { | |
1287 | name = "grunt-legacy-util"; |
|
1287 | name = "grunt-legacy-util"; | |
1288 | packageName = "grunt-legacy-util"; |
|
1288 | packageName = "grunt-legacy-util"; | |
1289 | version = "0.2.0"; |
|
1289 | version = "0.2.0"; | |
1290 | src = fetchurl { |
|
1290 | src = fetchurl { | |
1291 | url = "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz"; |
|
1291 | url = "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz"; | |
1292 | sha1 = "93324884dbf7e37a9ff7c026dff451d94a9e554b"; |
|
1292 | sha1 = "93324884dbf7e37a9ff7c026dff451d94a9e554b"; | |
1293 | }; |
|
1293 | }; | |
1294 | }; |
|
1294 | }; | |
1295 | "grunt-vulcanize-1.0.0" = { |
|
1295 | "grunt-vulcanize-1.0.0" = { | |
1296 | name = "grunt-vulcanize"; |
|
1296 | name = "grunt-vulcanize"; | |
1297 | packageName = "grunt-vulcanize"; |
|
1297 | packageName = "grunt-vulcanize"; | |
1298 | version = "1.0.0"; |
|
1298 | version = "1.0.0"; | |
1299 | src = fetchurl { |
|
1299 | src = fetchurl { | |
1300 | url = "https://registry.npmjs.org/grunt-vulcanize/-/grunt-vulcanize-1.0.0.tgz"; |
|
1300 | url = "https://registry.npmjs.org/grunt-vulcanize/-/grunt-vulcanize-1.0.0.tgz"; | |
1301 | sha1 = "f4d6cfef274f8216c06f6c290e7dbb3b9e9e3b0f"; |
|
1301 | sha1 = "f4d6cfef274f8216c06f6c290e7dbb3b9e9e3b0f"; | |
1302 | }; |
|
1302 | }; | |
1303 | }; |
|
1303 | }; | |
1304 | "har-schema-1.0.5" = { |
|
1304 | "har-schema-1.0.5" = { | |
1305 | name = "har-schema"; |
|
1305 | name = "har-schema"; | |
1306 | packageName = "har-schema"; |
|
1306 | packageName = "har-schema"; | |
1307 | version = "1.0.5"; |
|
1307 | version = "1.0.5"; | |
1308 | src = fetchurl { |
|
1308 | src = fetchurl { | |
1309 | url = "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz"; |
|
1309 | url = "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz"; | |
1310 | sha1 = "d263135f43307c02c602afc8fe95970c0151369e"; |
|
1310 | sha1 = "d263135f43307c02c602afc8fe95970c0151369e"; | |
1311 | }; |
|
1311 | }; | |
1312 | }; |
|
1312 | }; | |
1313 | "har-validator-4.2.1" = { |
|
1313 | "har-validator-4.2.1" = { | |
1314 | name = "har-validator"; |
|
1314 | name = "har-validator"; | |
1315 | packageName = "har-validator"; |
|
1315 | packageName = "har-validator"; | |
1316 | version = "4.2.1"; |
|
1316 | version = "4.2.1"; | |
1317 | src = fetchurl { |
|
1317 | src = fetchurl { | |
1318 | url = "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz"; |
|
1318 | url = "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz"; | |
1319 | sha1 = "33481d0f1bbff600dd203d75812a6a5fba002e2a"; |
|
1319 | sha1 = "33481d0f1bbff600dd203d75812a6a5fba002e2a"; | |
1320 | }; |
|
1320 | }; | |
1321 | }; |
|
1321 | }; | |
1322 | "has-ansi-0.1.0" = { |
|
1322 | "has-ansi-0.1.0" = { | |
1323 | name = "has-ansi"; |
|
1323 | name = "has-ansi"; | |
1324 | packageName = "has-ansi"; |
|
1324 | packageName = "has-ansi"; | |
1325 | version = "0.1.0"; |
|
1325 | version = "0.1.0"; | |
1326 | src = fetchurl { |
|
1326 | src = fetchurl { | |
1327 | url = "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz"; |
|
1327 | url = "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz"; | |
1328 | sha1 = "84f265aae8c0e6a88a12d7022894b7568894c62e"; |
|
1328 | sha1 = "84f265aae8c0e6a88a12d7022894b7568894c62e"; | |
1329 | }; |
|
1329 | }; | |
1330 | }; |
|
1330 | }; | |
1331 | "has-ansi-2.0.0" = { |
|
1331 | "has-ansi-2.0.0" = { | |
1332 | name = "has-ansi"; |
|
1332 | name = "has-ansi"; | |
1333 | packageName = "has-ansi"; |
|
1333 | packageName = "has-ansi"; | |
1334 | version = "2.0.0"; |
|
1334 | version = "2.0.0"; | |
1335 | src = fetchurl { |
|
1335 | src = fetchurl { | |
1336 | url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"; |
|
1336 | url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"; | |
1337 | sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91"; |
|
1337 | sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91"; | |
1338 | }; |
|
1338 | }; | |
1339 | }; |
|
1339 | }; | |
1340 | "has-unicode-2.0.1" = { |
|
1340 | "has-unicode-2.0.1" = { | |
1341 | name = "has-unicode"; |
|
1341 | name = "has-unicode"; | |
1342 | packageName = "has-unicode"; |
|
1342 | packageName = "has-unicode"; | |
1343 | version = "2.0.1"; |
|
1343 | version = "2.0.1"; | |
1344 | src = fetchurl { |
|
1344 | src = fetchurl { | |
1345 | url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"; |
|
1345 | url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"; | |
1346 | sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9"; |
|
1346 | sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9"; | |
1347 | }; |
|
1347 | }; | |
1348 | }; |
|
1348 | }; | |
1349 | "hasha-2.2.0" = { |
|
1349 | "hasha-2.2.0" = { | |
1350 | name = "hasha"; |
|
1350 | name = "hasha"; | |
1351 | packageName = "hasha"; |
|
1351 | packageName = "hasha"; | |
1352 | version = "2.2.0"; |
|
1352 | version = "2.2.0"; | |
1353 | src = fetchurl { |
|
1353 | src = fetchurl { | |
1354 | url = "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz"; |
|
1354 | url = "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz"; | |
1355 | sha1 = "78d7cbfc1e6d66303fe79837365984517b2f6ee1"; |
|
1355 | sha1 = "78d7cbfc1e6d66303fe79837365984517b2f6ee1"; | |
1356 | }; |
|
1356 | }; | |
1357 | }; |
|
1357 | }; | |
1358 | "hawk-3.1.3" = { |
|
1358 | "hawk-3.1.3" = { | |
1359 | name = "hawk"; |
|
1359 | name = "hawk"; | |
1360 | packageName = "hawk"; |
|
1360 | packageName = "hawk"; | |
1361 | version = "3.1.3"; |
|
1361 | version = "3.1.3"; | |
1362 | src = fetchurl { |
|
1362 | src = fetchurl { | |
1363 | url = "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz"; |
|
1363 | url = "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz"; | |
1364 | sha1 = "078444bd7c1640b0fe540d2c9b73d59678e8e1c4"; |
|
1364 | sha1 = "078444bd7c1640b0fe540d2c9b73d59678e8e1c4"; | |
1365 | }; |
|
1365 | }; | |
1366 | }; |
|
1366 | }; | |
1367 | "hoek-2.16.3" = { |
|
1367 | "hoek-2.16.3" = { | |
1368 | name = "hoek"; |
|
1368 | name = "hoek"; | |
1369 | packageName = "hoek"; |
|
1369 | packageName = "hoek"; | |
1370 | version = "2.16.3"; |
|
1370 | version = "2.16.3"; | |
1371 | src = fetchurl { |
|
1371 | src = fetchurl { | |
1372 | url = "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"; |
|
1372 | url = "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"; | |
1373 | sha1 = "20bb7403d3cea398e91dc4710a8ff1b8274a25ed"; |
|
1373 | sha1 = "20bb7403d3cea398e91dc4710a8ff1b8274a25ed"; | |
1374 | }; |
|
1374 | }; | |
1375 | }; |
|
1375 | }; | |
1376 | "hooker-0.2.3" = { |
|
1376 | "hooker-0.2.3" = { | |
1377 | name = "hooker"; |
|
1377 | name = "hooker"; | |
1378 | packageName = "hooker"; |
|
1378 | packageName = "hooker"; | |
1379 | version = "0.2.3"; |
|
1379 | version = "0.2.3"; | |
1380 | src = fetchurl { |
|
1380 | src = fetchurl { | |
1381 | url = "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz"; |
|
1381 | url = "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz"; | |
1382 | sha1 = "b834f723cc4a242aa65963459df6d984c5d3d959"; |
|
1382 | sha1 = "b834f723cc4a242aa65963459df6d984c5d3d959"; | |
1383 | }; |
|
1383 | }; | |
1384 | }; |
|
1384 | }; | |
1385 | "hosted-git-info-2.7.1" = { |
|
1385 | "hosted-git-info-2.7.1" = { | |
1386 | name = "hosted-git-info"; |
|
1386 | name = "hosted-git-info"; | |
1387 | packageName = "hosted-git-info"; |
|
1387 | packageName = "hosted-git-info"; | |
1388 | version = "2.7.1"; |
|
1388 | version = "2.7.1"; | |
1389 | src = fetchurl { |
|
1389 | src = fetchurl { | |
1390 | url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz"; |
|
1390 | url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz"; | |
1391 | sha512 = "7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="; |
|
1391 | sha512 = "7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="; | |
1392 | }; |
|
1392 | }; | |
1393 | }; |
|
1393 | }; | |
1394 | "htmlparser2-3.8.3" = { |
|
1394 | "htmlparser2-3.8.3" = { | |
1395 | name = "htmlparser2"; |
|
1395 | name = "htmlparser2"; | |
1396 | packageName = "htmlparser2"; |
|
1396 | packageName = "htmlparser2"; | |
1397 | version = "3.8.3"; |
|
1397 | version = "3.8.3"; | |
1398 | src = fetchurl { |
|
1398 | src = fetchurl { | |
1399 | url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz"; |
|
1399 | url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz"; | |
1400 | sha1 = "996c28b191516a8be86501a7d79757e5c70c1068"; |
|
1400 | sha1 = "996c28b191516a8be86501a7d79757e5c70c1068"; | |
1401 | }; |
|
1401 | }; | |
1402 | }; |
|
1402 | }; | |
1403 | "http-signature-1.1.1" = { |
|
1403 | "http-signature-1.1.1" = { | |
1404 | name = "http-signature"; |
|
1404 | name = "http-signature"; | |
1405 | packageName = "http-signature"; |
|
1405 | packageName = "http-signature"; | |
1406 | version = "1.1.1"; |
|
1406 | version = "1.1.1"; | |
1407 | src = fetchurl { |
|
1407 | src = fetchurl { | |
1408 | url = "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz"; |
|
1408 | url = "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz"; | |
1409 | sha1 = "df72e267066cd0ac67fb76adf8e134a8fbcf91bf"; |
|
1409 | sha1 = "df72e267066cd0ac67fb76adf8e134a8fbcf91bf"; | |
1410 | }; |
|
1410 | }; | |
1411 | }; |
|
1411 | }; | |
1412 | "hydrolysis-1.25.0" = { |
|
1412 | "hydrolysis-1.25.0" = { | |
1413 | name = "hydrolysis"; |
|
1413 | name = "hydrolysis"; | |
1414 | packageName = "hydrolysis"; |
|
1414 | packageName = "hydrolysis"; | |
1415 | version = "1.25.0"; |
|
1415 | version = "1.25.0"; | |
1416 | src = fetchurl { |
|
1416 | src = fetchurl { | |
1417 | url = "https://registry.npmjs.org/hydrolysis/-/hydrolysis-1.25.0.tgz"; |
|
1417 | url = "https://registry.npmjs.org/hydrolysis/-/hydrolysis-1.25.0.tgz"; | |
1418 | sha1 = "a4fb14a37a1e03b0db52d8aaa57c682272a14d84"; |
|
1418 | sha1 = "a4fb14a37a1e03b0db52d8aaa57c682272a14d84"; | |
1419 | }; |
|
1419 | }; | |
1420 | }; |
|
1420 | }; | |
1421 | "iconv-lite-0.2.11" = { |
|
1421 | "iconv-lite-0.2.11" = { | |
1422 | name = "iconv-lite"; |
|
1422 | name = "iconv-lite"; | |
1423 | packageName = "iconv-lite"; |
|
1423 | packageName = "iconv-lite"; | |
1424 | version = "0.2.11"; |
|
1424 | version = "0.2.11"; | |
1425 | src = fetchurl { |
|
1425 | src = fetchurl { | |
1426 | url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz"; |
|
1426 | url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz"; | |
1427 | sha1 = "1ce60a3a57864a292d1321ff4609ca4bb965adc8"; |
|
1427 | sha1 = "1ce60a3a57864a292d1321ff4609ca4bb965adc8"; | |
1428 | }; |
|
1428 | }; | |
1429 | }; |
|
1429 | }; | |
1430 | "image-size-0.5.5" = { |
|
1430 | "image-size-0.5.5" = { | |
1431 | name = "image-size"; |
|
1431 | name = "image-size"; | |
1432 | packageName = "image-size"; |
|
1432 | packageName = "image-size"; | |
1433 | version = "0.5.5"; |
|
1433 | version = "0.5.5"; | |
1434 | src = fetchurl { |
|
1434 | src = fetchurl { | |
1435 | url = "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz"; |
|
1435 | url = "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz"; | |
1436 | sha1 = "09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"; |
|
1436 | sha1 = "09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"; | |
1437 | }; |
|
1437 | }; | |
1438 | }; |
|
1438 | }; | |
1439 | "inflight-1.0.6" = { |
|
1439 | "inflight-1.0.6" = { | |
1440 | name = "inflight"; |
|
1440 | name = "inflight"; | |
1441 | packageName = "inflight"; |
|
1441 | packageName = "inflight"; | |
1442 | version = "1.0.6"; |
|
1442 | version = "1.0.6"; | |
1443 | src = fetchurl { |
|
1443 | src = fetchurl { | |
1444 | url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"; |
|
1444 | url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"; | |
1445 | sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9"; |
|
1445 | sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9"; | |
1446 | }; |
|
1446 | }; | |
1447 | }; |
|
1447 | }; | |
1448 | "inherits-1.0.2" = { |
|
1448 | "inherits-1.0.2" = { | |
1449 | name = "inherits"; |
|
1449 | name = "inherits"; | |
1450 | packageName = "inherits"; |
|
1450 | packageName = "inherits"; | |
1451 | version = "1.0.2"; |
|
1451 | version = "1.0.2"; | |
1452 | src = fetchurl { |
|
1452 | src = fetchurl { | |
1453 | url = "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz"; |
|
1453 | url = "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz"; | |
1454 | sha1 = "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b"; |
|
1454 | sha1 = "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b"; | |
1455 | }; |
|
1455 | }; | |
1456 | }; |
|
1456 | }; | |
1457 | "inherits-2.0.3" = { |
|
1457 | "inherits-2.0.3" = { | |
1458 | name = "inherits"; |
|
1458 | name = "inherits"; | |
1459 | packageName = "inherits"; |
|
1459 | packageName = "inherits"; | |
1460 | version = "2.0.3"; |
|
1460 | version = "2.0.3"; | |
1461 | src = fetchurl { |
|
1461 | src = fetchurl { | |
1462 | url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"; |
|
1462 | url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"; | |
1463 | sha1 = "633c2c83e3da42a502f52466022480f4208261de"; |
|
1463 | sha1 = "633c2c83e3da42a502f52466022480f4208261de"; | |
1464 | }; |
|
1464 | }; | |
1465 | }; |
|
1465 | }; | |
1466 | "ini-1.3.5" = { |
|
1466 | "ini-1.3.5" = { | |
1467 | name = "ini"; |
|
1467 | name = "ini"; | |
1468 | packageName = "ini"; |
|
1468 | packageName = "ini"; | |
1469 | version = "1.3.5"; |
|
1469 | version = "1.3.5"; | |
1470 | src = fetchurl { |
|
1470 | src = fetchurl { | |
1471 | url = "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz"; |
|
1471 | url = "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz"; | |
1472 | sha512 = "RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="; |
|
1472 | sha512 = "RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="; | |
1473 | }; |
|
1473 | }; | |
1474 | }; |
|
1474 | }; | |
1475 | "is-builtin-module-1.0.0" = { |
|
1475 | "is-builtin-module-1.0.0" = { | |
1476 | name = "is-builtin-module"; |
|
1476 | name = "is-builtin-module"; | |
1477 | packageName = "is-builtin-module"; |
|
1477 | packageName = "is-builtin-module"; | |
1478 | version = "1.0.0"; |
|
1478 | version = "1.0.0"; | |
1479 | src = fetchurl { |
|
1479 | src = fetchurl { | |
1480 | url = "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz"; |
|
1480 | url = "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz"; | |
1481 | sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe"; |
|
1481 | sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe"; | |
1482 | }; |
|
1482 | }; | |
1483 | }; |
|
1483 | }; | |
1484 | "is-fullwidth-code-point-1.0.0" = { |
|
1484 | "is-fullwidth-code-point-1.0.0" = { | |
1485 | name = "is-fullwidth-code-point"; |
|
1485 | name = "is-fullwidth-code-point"; | |
1486 | packageName = "is-fullwidth-code-point"; |
|
1486 | packageName = "is-fullwidth-code-point"; | |
1487 | version = "1.0.0"; |
|
1487 | version = "1.0.0"; | |
1488 | src = fetchurl { |
|
1488 | src = fetchurl { | |
1489 | url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"; |
|
1489 | url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"; | |
1490 | sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb"; |
|
1490 | sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb"; | |
1491 | }; |
|
1491 | }; | |
1492 | }; |
|
1492 | }; | |
1493 | "is-stream-1.1.0" = { |
|
1493 | "is-stream-1.1.0" = { | |
1494 | name = "is-stream"; |
|
1494 | name = "is-stream"; | |
1495 | packageName = "is-stream"; |
|
1495 | packageName = "is-stream"; | |
1496 | version = "1.1.0"; |
|
1496 | version = "1.1.0"; | |
1497 | src = fetchurl { |
|
1497 | src = fetchurl { | |
1498 | url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"; |
|
1498 | url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"; | |
1499 | sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"; |
|
1499 | sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"; | |
1500 | }; |
|
1500 | }; | |
1501 | }; |
|
1501 | }; | |
1502 | "is-typedarray-1.0.0" = { |
|
1502 | "is-typedarray-1.0.0" = { | |
1503 | name = "is-typedarray"; |
|
1503 | name = "is-typedarray"; | |
1504 | packageName = "is-typedarray"; |
|
1504 | packageName = "is-typedarray"; | |
1505 | version = "1.0.0"; |
|
1505 | version = "1.0.0"; | |
1506 | src = fetchurl { |
|
1506 | src = fetchurl { | |
1507 | url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz"; |
|
1507 | url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz"; | |
1508 | sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a"; |
|
1508 | sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a"; | |
1509 | }; |
|
1509 | }; | |
1510 | }; |
|
1510 | }; | |
1511 | "isarray-0.0.1" = { |
|
1511 | "isarray-0.0.1" = { | |
1512 | name = "isarray"; |
|
1512 | name = "isarray"; | |
1513 | packageName = "isarray"; |
|
1513 | packageName = "isarray"; | |
1514 | version = "0.0.1"; |
|
1514 | version = "0.0.1"; | |
1515 | src = fetchurl { |
|
1515 | src = fetchurl { | |
1516 | url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"; |
|
1516 | url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"; | |
1517 | sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf"; |
|
1517 | sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf"; | |
1518 | }; |
|
1518 | }; | |
1519 | }; |
|
1519 | }; | |
1520 | "isarray-1.0.0" = { |
|
1520 | "isarray-1.0.0" = { | |
1521 | name = "isarray"; |
|
1521 | name = "isarray"; | |
1522 | packageName = "isarray"; |
|
1522 | packageName = "isarray"; | |
1523 | version = "1.0.0"; |
|
1523 | version = "1.0.0"; | |
1524 | src = fetchurl { |
|
1524 | src = fetchurl { | |
1525 | url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"; |
|
1525 | url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"; | |
1526 | sha1 = "bb935d48582cba168c06834957a54a3e07124f11"; |
|
1526 | sha1 = "bb935d48582cba168c06834957a54a3e07124f11"; | |
1527 | }; |
|
1527 | }; | |
1528 | }; |
|
1528 | }; | |
1529 | "isexe-2.0.0" = { |
|
1529 | "isexe-2.0.0" = { | |
1530 | name = "isexe"; |
|
1530 | name = "isexe"; | |
1531 | packageName = "isexe"; |
|
1531 | packageName = "isexe"; | |
1532 | version = "2.0.0"; |
|
1532 | version = "2.0.0"; | |
1533 | src = fetchurl { |
|
1533 | src = fetchurl { | |
1534 | url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"; |
|
1534 | url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"; | |
1535 | sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10"; |
|
1535 | sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10"; | |
1536 | }; |
|
1536 | }; | |
1537 | }; |
|
1537 | }; | |
1538 | "isstream-0.1.2" = { |
|
1538 | "isstream-0.1.2" = { | |
1539 | name = "isstream"; |
|
1539 | name = "isstream"; | |
1540 | packageName = "isstream"; |
|
1540 | packageName = "isstream"; | |
1541 | version = "0.1.2"; |
|
1541 | version = "0.1.2"; | |
1542 | src = fetchurl { |
|
1542 | src = fetchurl { | |
1543 | url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"; |
|
1543 | url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"; | |
1544 | sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a"; |
|
1544 | sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a"; | |
1545 | }; |
|
1545 | }; | |
1546 | }; |
|
1546 | }; | |
1547 | "jquery-1.11.3" = { |
|
1547 | "jquery-1.11.3" = { | |
1548 | name = "jquery"; |
|
1548 | name = "jquery"; | |
1549 | packageName = "jquery"; |
|
1549 | packageName = "jquery"; | |
1550 | version = "1.11.3"; |
|
1550 | version = "1.11.3"; | |
1551 | src = fetchurl { |
|
1551 | src = fetchurl { | |
1552 | url = "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz"; |
|
1552 | url = "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz"; | |
1553 | sha1 = "dd8b74278b27102d29df63eae28308a8cfa1b583"; |
|
1553 | sha1 = "dd8b74278b27102d29df63eae28308a8cfa1b583"; | |
1554 | }; |
|
1554 | }; | |
1555 | }; |
|
1555 | }; | |
1556 | "js-yaml-2.0.5" = { |
|
1556 | "js-yaml-2.0.5" = { | |
1557 | name = "js-yaml"; |
|
1557 | name = "js-yaml"; | |
1558 | packageName = "js-yaml"; |
|
1558 | packageName = "js-yaml"; | |
1559 | version = "2.0.5"; |
|
1559 | version = "2.0.5"; | |
1560 | src = fetchurl { |
|
1560 | src = fetchurl { | |
1561 | url = "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz"; |
|
1561 | url = "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz"; | |
1562 | sha1 = "a25ae6509999e97df278c6719da11bd0687743a8"; |
|
1562 | sha1 = "a25ae6509999e97df278c6719da11bd0687743a8"; | |
1563 | }; |
|
1563 | }; | |
1564 | }; |
|
1564 | }; | |
1565 | "jsbn-0.1.1" = { |
|
1565 | "jsbn-0.1.1" = { | |
1566 | name = "jsbn"; |
|
1566 | name = "jsbn"; | |
1567 | packageName = "jsbn"; |
|
1567 | packageName = "jsbn"; | |
1568 | version = "0.1.1"; |
|
1568 | version = "0.1.1"; | |
1569 | src = fetchurl { |
|
1569 | src = fetchurl { | |
1570 | url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz"; |
|
1570 | url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz"; | |
1571 | sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"; |
|
1571 | sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"; | |
1572 | }; |
|
1572 | }; | |
1573 | }; |
|
1573 | }; | |
1574 | "jshint-2.9.6" = { |
|
1574 | "jshint-2.9.6" = { | |
1575 | name = "jshint"; |
|
1575 | name = "jshint"; | |
1576 | packageName = "jshint"; |
|
1576 | packageName = "jshint"; | |
1577 | version = "2.9.6"; |
|
1577 | version = "2.9.6"; | |
1578 | src = fetchurl { |
|
1578 | src = fetchurl { | |
1579 | url = "https://registry.npmjs.org/jshint/-/jshint-2.9.6.tgz"; |
|
1579 | url = "https://registry.npmjs.org/jshint/-/jshint-2.9.6.tgz"; | |
1580 | sha512 = "KO9SIAKTlJQOM4lE64GQUtGBRpTOuvbrRrSZw3AhUxMNG266nX9hK2cKA4SBhXOj0irJGyNyGSLT62HGOVDEOA=="; |
|
1580 | sha512 = "KO9SIAKTlJQOM4lE64GQUtGBRpTOuvbrRrSZw3AhUxMNG266nX9hK2cKA4SBhXOj0irJGyNyGSLT62HGOVDEOA=="; | |
1581 | }; |
|
1581 | }; | |
1582 | }; |
|
1582 | }; | |
1583 | "json-schema-0.2.3" = { |
|
1583 | "json-schema-0.2.3" = { | |
1584 | name = "json-schema"; |
|
1584 | name = "json-schema"; | |
1585 | packageName = "json-schema"; |
|
1585 | packageName = "json-schema"; | |
1586 | version = "0.2.3"; |
|
1586 | version = "0.2.3"; | |
1587 | src = fetchurl { |
|
1587 | src = fetchurl { | |
1588 | url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz"; |
|
1588 | url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz"; | |
1589 | sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13"; |
|
1589 | sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13"; | |
1590 | }; |
|
1590 | }; | |
1591 | }; |
|
1591 | }; | |
1592 | "json-stable-stringify-1.0.1" = { |
|
1592 | "json-stable-stringify-1.0.1" = { | |
1593 | name = "json-stable-stringify"; |
|
1593 | name = "json-stable-stringify"; | |
1594 | packageName = "json-stable-stringify"; |
|
1594 | packageName = "json-stable-stringify"; | |
1595 | version = "1.0.1"; |
|
1595 | version = "1.0.1"; | |
1596 | src = fetchurl { |
|
1596 | src = fetchurl { | |
1597 | url = "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz"; |
|
1597 | url = "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz"; | |
1598 | sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af"; |
|
1598 | sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af"; | |
1599 | }; |
|
1599 | }; | |
1600 | }; |
|
1600 | }; | |
1601 | "json-stringify-safe-5.0.1" = { |
|
1601 | "json-stringify-safe-5.0.1" = { | |
1602 | name = "json-stringify-safe"; |
|
1602 | name = "json-stringify-safe"; | |
1603 | packageName = "json-stringify-safe"; |
|
1603 | packageName = "json-stringify-safe"; | |
1604 | version = "5.0.1"; |
|
1604 | version = "5.0.1"; | |
1605 | src = fetchurl { |
|
1605 | src = fetchurl { | |
1606 | url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"; |
|
1606 | url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"; | |
1607 | sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"; |
|
1607 | sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"; | |
1608 | }; |
|
1608 | }; | |
1609 | }; |
|
1609 | }; | |
1610 | "jsonfile-1.0.1" = { |
|
1610 | "jsonfile-1.0.1" = { | |
1611 | name = "jsonfile"; |
|
1611 | name = "jsonfile"; | |
1612 | packageName = "jsonfile"; |
|
1612 | packageName = "jsonfile"; | |
1613 | version = "1.0.1"; |
|
1613 | version = "1.0.1"; | |
1614 | src = fetchurl { |
|
1614 | src = fetchurl { | |
1615 | url = "https://registry.npmjs.org/jsonfile/-/jsonfile-1.0.1.tgz"; |
|
1615 | url = "https://registry.npmjs.org/jsonfile/-/jsonfile-1.0.1.tgz"; | |
1616 | sha1 = "ea5efe40b83690b98667614a7392fc60e842c0dd"; |
|
1616 | sha1 = "ea5efe40b83690b98667614a7392fc60e842c0dd"; | |
1617 | }; |
|
1617 | }; | |
1618 | }; |
|
1618 | }; | |
1619 | "jsonfile-2.4.0" = { |
|
1619 | "jsonfile-2.4.0" = { | |
1620 | name = "jsonfile"; |
|
1620 | name = "jsonfile"; | |
1621 | packageName = "jsonfile"; |
|
1621 | packageName = "jsonfile"; | |
1622 | version = "2.4.0"; |
|
1622 | version = "2.4.0"; | |
1623 | src = fetchurl { |
|
1623 | src = fetchurl { | |
1624 | url = "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz"; |
|
1624 | url = "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz"; | |
1625 | sha1 = "3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"; |
|
1625 | sha1 = "3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"; | |
1626 | }; |
|
1626 | }; | |
1627 | }; |
|
1627 | }; | |
1628 | "jsonify-0.0.0" = { |
|
1628 | "jsonify-0.0.0" = { | |
1629 | name = "jsonify"; |
|
1629 | name = "jsonify"; | |
1630 | packageName = "jsonify"; |
|
1630 | packageName = "jsonify"; | |
1631 | version = "0.0.0"; |
|
1631 | version = "0.0.0"; | |
1632 | src = fetchurl { |
|
1632 | src = fetchurl { | |
1633 | url = "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz"; |
|
1633 | url = "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz"; | |
1634 | sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73"; |
|
1634 | sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73"; | |
1635 | }; |
|
1635 | }; | |
1636 | }; |
|
1636 | }; | |
1637 | "jsprim-1.4.1" = { |
|
1637 | "jsprim-1.4.1" = { | |
1638 | name = "jsprim"; |
|
1638 | name = "jsprim"; | |
1639 | packageName = "jsprim"; |
|
1639 | packageName = "jsprim"; | |
1640 | version = "1.4.1"; |
|
1640 | version = "1.4.1"; | |
1641 | src = fetchurl { |
|
1641 | src = fetchurl { | |
1642 | url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz"; |
|
1642 | url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz"; | |
1643 | sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"; |
|
1643 | sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"; | |
1644 | }; |
|
1644 | }; | |
1645 | }; |
|
1645 | }; | |
1646 | "kew-0.7.0" = { |
|
1646 | "kew-0.7.0" = { | |
1647 | name = "kew"; |
|
1647 | name = "kew"; | |
1648 | packageName = "kew"; |
|
1648 | packageName = "kew"; | |
1649 | version = "0.7.0"; |
|
1649 | version = "0.7.0"; | |
1650 | src = fetchurl { |
|
1650 | src = fetchurl { | |
1651 | url = "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz"; |
|
1651 | url = "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz"; | |
1652 | sha1 = "79d93d2d33363d6fdd2970b335d9141ad591d79b"; |
|
1652 | sha1 = "79d93d2d33363d6fdd2970b335d9141ad591d79b"; | |
1653 | }; |
|
1653 | }; | |
1654 | }; |
|
1654 | }; | |
1655 | "klaw-1.3.1" = { |
|
1655 | "klaw-1.3.1" = { | |
1656 | name = "klaw"; |
|
1656 | name = "klaw"; | |
1657 | packageName = "klaw"; |
|
1657 | packageName = "klaw"; | |
1658 | version = "1.3.1"; |
|
1658 | version = "1.3.1"; | |
1659 | src = fetchurl { |
|
1659 | src = fetchurl { | |
1660 | url = "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz"; |
|
1660 | url = "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz"; | |
1661 | sha1 = "4088433b46b3b1ba259d78785d8e96f73ba02439"; |
|
1661 | sha1 = "4088433b46b3b1ba259d78785d8e96f73ba02439"; | |
1662 | }; |
|
1662 | }; | |
1663 | }; |
|
1663 | }; | |
1664 | "less-2.7.3" = { |
|
1664 | "less-2.7.3" = { | |
1665 | name = "less"; |
|
1665 | name = "less"; | |
1666 | packageName = "less"; |
|
1666 | packageName = "less"; | |
1667 | version = "2.7.3"; |
|
1667 | version = "2.7.3"; | |
1668 | src = fetchurl { |
|
1668 | src = fetchurl { | |
1669 | url = "https://registry.npmjs.org/less/-/less-2.7.3.tgz"; |
|
1669 | url = "https://registry.npmjs.org/less/-/less-2.7.3.tgz"; | |
1670 | sha512 = "KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ=="; |
|
1670 | sha512 = "KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ=="; | |
1671 | }; |
|
1671 | }; | |
1672 | }; |
|
1672 | }; | |
1673 | "levn-0.3.0" = { |
|
1673 | "levn-0.3.0" = { | |
1674 | name = "levn"; |
|
1674 | name = "levn"; | |
1675 | packageName = "levn"; |
|
1675 | packageName = "levn"; | |
1676 | version = "0.3.0"; |
|
1676 | version = "0.3.0"; | |
1677 | src = fetchurl { |
|
1677 | src = fetchurl { | |
1678 | url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"; |
|
1678 | url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"; | |
1679 | sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee"; |
|
1679 | sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee"; | |
1680 | }; |
|
1680 | }; | |
1681 | }; |
|
1681 | }; | |
1682 | "lodash-0.9.2" = { |
|
1682 | "lodash-0.9.2" = { | |
1683 | name = "lodash"; |
|
1683 | name = "lodash"; | |
1684 | packageName = "lodash"; |
|
1684 | packageName = "lodash"; | |
1685 | version = "0.9.2"; |
|
1685 | version = "0.9.2"; | |
1686 | src = fetchurl { |
|
1686 | src = fetchurl { | |
1687 | url = "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz"; |
|
1687 | url = "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz"; | |
1688 | sha1 = "8f3499c5245d346d682e5b0d3b40767e09f1a92c"; |
|
1688 | sha1 = "8f3499c5245d346d682e5b0d3b40767e09f1a92c"; | |
1689 | }; |
|
1689 | }; | |
1690 | }; |
|
1690 | }; | |
1691 | "lodash-1.0.2" = { |
|
1691 | "lodash-1.0.2" = { | |
1692 | name = "lodash"; |
|
1692 | name = "lodash"; | |
1693 | packageName = "lodash"; |
|
1693 | packageName = "lodash"; | |
1694 | version = "1.0.2"; |
|
1694 | version = "1.0.2"; | |
1695 | src = fetchurl { |
|
1695 | src = fetchurl { | |
1696 | url = "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz"; |
|
1696 | url = "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz"; | |
1697 | sha1 = "8f57560c83b59fc270bd3d561b690043430e2551"; |
|
1697 | sha1 = "8f57560c83b59fc270bd3d561b690043430e2551"; | |
1698 | }; |
|
1698 | }; | |
1699 | }; |
|
1699 | }; | |
1700 | "lodash-2.4.2" = { |
|
1700 | "lodash-2.4.2" = { | |
1701 | name = "lodash"; |
|
1701 | name = "lodash"; | |
1702 | packageName = "lodash"; |
|
1702 | packageName = "lodash"; | |
1703 | version = "2.4.2"; |
|
1703 | version = "2.4.2"; | |
1704 | src = fetchurl { |
|
1704 | src = fetchurl { | |
1705 | url = "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz"; |
|
1705 | url = "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz"; | |
1706 | sha1 = "fadd834b9683073da179b3eae6d9c0d15053f73e"; |
|
1706 | sha1 = "fadd834b9683073da179b3eae6d9c0d15053f73e"; | |
1707 | }; |
|
1707 | }; | |
1708 | }; |
|
1708 | }; | |
1709 |
"lodash-4.17.1 |
|
1709 | "lodash-4.17.11" = { | |
1710 | name = "lodash"; |
|
1710 | name = "lodash"; | |
1711 | packageName = "lodash"; |
|
1711 | packageName = "lodash"; | |
1712 |
version = "4.17.1 |
|
1712 | version = "4.17.11"; | |
1713 | src = fetchurl { |
|
1713 | src = fetchurl { | |
1714 |
url = "https://registry.npmjs.org/lodash/-/lodash-4.17.1 |
|
1714 | url = "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz"; | |
1715 | sha512 = "UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="; |
|
1715 | sha512 = "cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="; | |
1716 | }; |
|
1716 | }; | |
1717 | }; |
|
1717 | }; | |
1718 | "lru-cache-2.7.3" = { |
|
1718 | "lru-cache-2.7.3" = { | |
1719 | name = "lru-cache"; |
|
1719 | name = "lru-cache"; | |
1720 | packageName = "lru-cache"; |
|
1720 | packageName = "lru-cache"; | |
1721 | version = "2.7.3"; |
|
1721 | version = "2.7.3"; | |
1722 | src = fetchurl { |
|
1722 | src = fetchurl { | |
1723 | url = "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz"; |
|
1723 | url = "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz"; | |
1724 | sha1 = "6d4524e8b955f95d4f5b58851ce21dd72fb4e952"; |
|
1724 | sha1 = "6d4524e8b955f95d4f5b58851ce21dd72fb4e952"; | |
1725 | }; |
|
1725 | }; | |
1726 | }; |
|
1726 | }; | |
1727 | "mime-1.6.0" = { |
|
1727 | "mime-1.6.0" = { | |
1728 | name = "mime"; |
|
1728 | name = "mime"; | |
1729 | packageName = "mime"; |
|
1729 | packageName = "mime"; | |
1730 | version = "1.6.0"; |
|
1730 | version = "1.6.0"; | |
1731 | src = fetchurl { |
|
1731 | src = fetchurl { | |
1732 | url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"; |
|
1732 | url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"; | |
1733 | sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="; |
|
1733 | sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="; | |
1734 | }; |
|
1734 | }; | |
1735 | }; |
|
1735 | }; | |
1736 |
"mime-db-1.3 |
|
1736 | "mime-db-1.36.0" = { | |
1737 | name = "mime-db"; |
|
1737 | name = "mime-db"; | |
1738 | packageName = "mime-db"; |
|
1738 | packageName = "mime-db"; | |
1739 |
version = "1.3 |
|
1739 | version = "1.36.0"; | |
1740 | src = fetchurl { |
|
1740 | src = fetchurl { | |
1741 |
url = "https://registry.npmjs.org/mime-db/-/mime-db-1.3 |
|
1741 | url = "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz"; | |
1742 | sha512 = "JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg=="; |
|
1742 | sha512 = "L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw=="; | |
1743 | }; |
|
1743 | }; | |
1744 | }; |
|
1744 | }; | |
1745 |
"mime-types-2.1. |
|
1745 | "mime-types-2.1.20" = { | |
1746 | name = "mime-types"; |
|
1746 | name = "mime-types"; | |
1747 | packageName = "mime-types"; |
|
1747 | packageName = "mime-types"; | |
1748 |
version = "2.1. |
|
1748 | version = "2.1.20"; | |
1749 | src = fetchurl { |
|
1749 | src = fetchurl { | |
1750 |
url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1. |
|
1750 | url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz"; | |
1751 | sha512 = "P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw=="; |
|
1751 | sha512 = "HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A=="; | |
1752 | }; |
|
1752 | }; | |
1753 | }; |
|
1753 | }; | |
1754 | "minimatch-0.2.14" = { |
|
1754 | "minimatch-0.2.14" = { | |
1755 | name = "minimatch"; |
|
1755 | name = "minimatch"; | |
1756 | packageName = "minimatch"; |
|
1756 | packageName = "minimatch"; | |
1757 | version = "0.2.14"; |
|
1757 | version = "0.2.14"; | |
1758 | src = fetchurl { |
|
1758 | src = fetchurl { | |
1759 | url = "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz"; |
|
1759 | url = "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz"; | |
1760 | sha1 = "c74e780574f63c6f9a090e90efbe6ef53a6a756a"; |
|
1760 | sha1 = "c74e780574f63c6f9a090e90efbe6ef53a6a756a"; | |
1761 | }; |
|
1761 | }; | |
1762 | }; |
|
1762 | }; | |
1763 | "minimatch-0.3.0" = { |
|
1763 | "minimatch-0.3.0" = { | |
1764 | name = "minimatch"; |
|
1764 | name = "minimatch"; | |
1765 | packageName = "minimatch"; |
|
1765 | packageName = "minimatch"; | |
1766 | version = "0.3.0"; |
|
1766 | version = "0.3.0"; | |
1767 | src = fetchurl { |
|
1767 | src = fetchurl { | |
1768 | url = "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz"; |
|
1768 | url = "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz"; | |
1769 | sha1 = "275d8edaac4f1bb3326472089e7949c8394699dd"; |
|
1769 | sha1 = "275d8edaac4f1bb3326472089e7949c8394699dd"; | |
1770 | }; |
|
1770 | }; | |
1771 | }; |
|
1771 | }; | |
1772 | "minimatch-3.0.4" = { |
|
1772 | "minimatch-3.0.4" = { | |
1773 | name = "minimatch"; |
|
1773 | name = "minimatch"; | |
1774 | packageName = "minimatch"; |
|
1774 | packageName = "minimatch"; | |
1775 | version = "3.0.4"; |
|
1775 | version = "3.0.4"; | |
1776 | src = fetchurl { |
|
1776 | src = fetchurl { | |
1777 | url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"; |
|
1777 | url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"; | |
1778 | sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="; |
|
1778 | sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="; | |
1779 | }; |
|
1779 | }; | |
1780 | }; |
|
1780 | }; | |
1781 | "minimist-0.0.8" = { |
|
1781 | "minimist-0.0.8" = { | |
1782 | name = "minimist"; |
|
1782 | name = "minimist"; | |
1783 | packageName = "minimist"; |
|
1783 | packageName = "minimist"; | |
1784 | version = "0.0.8"; |
|
1784 | version = "0.0.8"; | |
1785 | src = fetchurl { |
|
1785 | src = fetchurl { | |
1786 | url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"; |
|
1786 | url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"; | |
1787 | sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d"; |
|
1787 | sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d"; | |
1788 | }; |
|
1788 | }; | |
1789 | }; |
|
1789 | }; | |
1790 |
"minipass-2.3. |
|
1790 | "minipass-2.3.4" = { | |
1791 | name = "minipass"; |
|
1791 | name = "minipass"; | |
1792 | packageName = "minipass"; |
|
1792 | packageName = "minipass"; | |
1793 |
version = "2.3. |
|
1793 | version = "2.3.4"; | |
1794 | src = fetchurl { |
|
1794 | src = fetchurl { | |
1795 |
url = "https://registry.npmjs.org/minipass/-/minipass-2.3. |
|
1795 | url = "https://registry.npmjs.org/minipass/-/minipass-2.3.4.tgz"; | |
1796 | sha512 = "/jAn9/tEX4gnpyRATxgHEOV6xbcyxgT7iUnxo9Y3+OB0zX00TgKIv/2FZCf5brBbICcwbLqVv2ImjvWWrQMSYw=="; |
|
1796 | sha512 = "mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w=="; | |
1797 | }; |
|
1797 | }; | |
1798 | }; |
|
1798 | }; | |
1799 |
"minizlib-1.1. |
|
1799 | "minizlib-1.1.1" = { | |
1800 | name = "minizlib"; |
|
1800 | name = "minizlib"; | |
1801 | packageName = "minizlib"; |
|
1801 | packageName = "minizlib"; | |
1802 |
version = "1.1. |
|
1802 | version = "1.1.1"; | |
1803 | src = fetchurl { |
|
1803 | src = fetchurl { | |
1804 |
url = "https://registry.npmjs.org/minizlib/-/minizlib-1.1. |
|
1804 | url = "https://registry.npmjs.org/minizlib/-/minizlib-1.1.1.tgz"; | |
1805 | sha512 = "4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA=="; |
|
1805 | sha512 = "TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg=="; | |
1806 | }; |
|
1806 | }; | |
1807 | }; |
|
1807 | }; | |
1808 | "mkdirp-0.3.5" = { |
|
1808 | "mkdirp-0.3.5" = { | |
1809 | name = "mkdirp"; |
|
1809 | name = "mkdirp"; | |
1810 | packageName = "mkdirp"; |
|
1810 | packageName = "mkdirp"; | |
1811 | version = "0.3.5"; |
|
1811 | version = "0.3.5"; | |
1812 | src = fetchurl { |
|
1812 | src = fetchurl { | |
1813 | url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"; |
|
1813 | url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"; | |
1814 | sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7"; |
|
1814 | sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7"; | |
1815 | }; |
|
1815 | }; | |
1816 | }; |
|
1816 | }; | |
1817 | "mkdirp-0.5.1" = { |
|
1817 | "mkdirp-0.5.1" = { | |
1818 | name = "mkdirp"; |
|
1818 | name = "mkdirp"; | |
1819 | packageName = "mkdirp"; |
|
1819 | packageName = "mkdirp"; | |
1820 | version = "0.5.1"; |
|
1820 | version = "0.5.1"; | |
1821 | src = fetchurl { |
|
1821 | src = fetchurl { | |
1822 | url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"; |
|
1822 | url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"; | |
1823 | sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903"; |
|
1823 | sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903"; | |
1824 | }; |
|
1824 | }; | |
1825 | }; |
|
1825 | }; | |
1826 | "moment-2.22.2" = { |
|
1826 | "moment-2.22.2" = { | |
1827 | name = "moment"; |
|
1827 | name = "moment"; | |
1828 | packageName = "moment"; |
|
1828 | packageName = "moment"; | |
1829 | version = "2.22.2"; |
|
1829 | version = "2.22.2"; | |
1830 | src = fetchurl { |
|
1830 | src = fetchurl { | |
1831 | url = "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz"; |
|
1831 | url = "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz"; | |
1832 | sha1 = "3c257f9839fc0e93ff53149632239eb90783ff66"; |
|
1832 | sha1 = "3c257f9839fc0e93ff53149632239eb90783ff66"; | |
1833 | }; |
|
1833 | }; | |
1834 | }; |
|
1834 | }; | |
1835 | "mousetrap-1.6.2" = { |
|
1835 | "mousetrap-1.6.2" = { | |
1836 | name = "mousetrap"; |
|
1836 | name = "mousetrap"; | |
1837 | packageName = "mousetrap"; |
|
1837 | packageName = "mousetrap"; | |
1838 | version = "1.6.2"; |
|
1838 | version = "1.6.2"; | |
1839 | src = fetchurl { |
|
1839 | src = fetchurl { | |
1840 | url = "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.2.tgz"; |
|
1840 | url = "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.2.tgz"; | |
1841 | sha512 = "jDjhi7wlHwdO6q6DS7YRmSHcuI+RVxadBkLt3KHrhd3C2b+w5pKefg3oj5beTcHZyVFA9Aksf+yEE1y5jxUjVA=="; |
|
1841 | sha512 = "jDjhi7wlHwdO6q6DS7YRmSHcuI+RVxadBkLt3KHrhd3C2b+w5pKefg3oj5beTcHZyVFA9Aksf+yEE1y5jxUjVA=="; | |
1842 | }; |
|
1842 | }; | |
1843 | }; |
|
1843 | }; | |
1844 | "ms-2.0.0" = { |
|
1844 | "ms-2.0.0" = { | |
1845 | name = "ms"; |
|
1845 | name = "ms"; | |
1846 | packageName = "ms"; |
|
1846 | packageName = "ms"; | |
1847 | version = "2.0.0"; |
|
1847 | version = "2.0.0"; | |
1848 | src = fetchurl { |
|
1848 | src = fetchurl { | |
1849 | url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"; |
|
1849 | url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"; | |
1850 | sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8"; |
|
1850 | sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8"; | |
1851 | }; |
|
1851 | }; | |
1852 | }; |
|
1852 | }; | |
1853 | "ncp-0.4.2" = { |
|
1853 | "ncp-0.4.2" = { | |
1854 | name = "ncp"; |
|
1854 | name = "ncp"; | |
1855 | packageName = "ncp"; |
|
1855 | packageName = "ncp"; | |
1856 | version = "0.4.2"; |
|
1856 | version = "0.4.2"; | |
1857 | src = fetchurl { |
|
1857 | src = fetchurl { | |
1858 | url = "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz"; |
|
1858 | url = "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz"; | |
1859 | sha1 = "abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574"; |
|
1859 | sha1 = "abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574"; | |
1860 | }; |
|
1860 | }; | |
1861 | }; |
|
1861 | }; | |
1862 | "nijs-0.0.25" = { |
|
1862 | "nijs-0.0.25" = { | |
1863 | name = "nijs"; |
|
1863 | name = "nijs"; | |
1864 | packageName = "nijs"; |
|
1864 | packageName = "nijs"; | |
1865 | version = "0.0.25"; |
|
1865 | version = "0.0.25"; | |
1866 | src = fetchurl { |
|
1866 | src = fetchurl { | |
1867 | url = "https://registry.npmjs.org/nijs/-/nijs-0.0.25.tgz"; |
|
1867 | url = "https://registry.npmjs.org/nijs/-/nijs-0.0.25.tgz"; | |
1868 | sha1 = "04b035cb530d46859d1018839a518c029133f676"; |
|
1868 | sha1 = "04b035cb530d46859d1018839a518c029133f676"; | |
1869 | }; |
|
1869 | }; | |
1870 | }; |
|
1870 | }; | |
1871 | "node2nix-1.6.0" = { |
|
1871 | "node2nix-1.6.0" = { | |
1872 | name = "node2nix"; |
|
1872 | name = "node2nix"; | |
1873 | packageName = "node2nix"; |
|
1873 | packageName = "node2nix"; | |
1874 | version = "1.6.0"; |
|
1874 | version = "1.6.0"; | |
1875 | src = fetchurl { |
|
1875 | src = fetchurl { | |
1876 | url = "https://registry.npmjs.org/node2nix/-/node2nix-1.6.0.tgz"; |
|
1876 | url = "https://registry.npmjs.org/node2nix/-/node2nix-1.6.0.tgz"; | |
1877 | sha512 = "MJY6SsQH3pN59R9N3nMz/L8BsbQ0DlvSF38mgg1fwfwgnaJ+y600s3Nd0vZ+cnETUH+4OPETc4QohflccjPUYw=="; |
|
1877 | sha512 = "MJY6SsQH3pN59R9N3nMz/L8BsbQ0DlvSF38mgg1fwfwgnaJ+y600s3Nd0vZ+cnETUH+4OPETc4QohflccjPUYw=="; | |
1878 | }; |
|
1878 | }; | |
1879 | }; |
|
1879 | }; | |
1880 | "nopt-1.0.10" = { |
|
1880 | "nopt-1.0.10" = { | |
1881 | name = "nopt"; |
|
1881 | name = "nopt"; | |
1882 | packageName = "nopt"; |
|
1882 | packageName = "nopt"; | |
1883 | version = "1.0.10"; |
|
1883 | version = "1.0.10"; | |
1884 | src = fetchurl { |
|
1884 | src = fetchurl { | |
1885 | url = "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz"; |
|
1885 | url = "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz"; | |
1886 | sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee"; |
|
1886 | sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee"; | |
1887 | }; |
|
1887 | }; | |
1888 | }; |
|
1888 | }; | |
1889 | "nopt-2.0.0" = { |
|
1889 | "nopt-2.0.0" = { | |
1890 | name = "nopt"; |
|
1890 | name = "nopt"; | |
1891 | packageName = "nopt"; |
|
1891 | packageName = "nopt"; | |
1892 | version = "2.0.0"; |
|
1892 | version = "2.0.0"; | |
1893 | src = fetchurl { |
|
1893 | src = fetchurl { | |
1894 | url = "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz"; |
|
1894 | url = "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz"; | |
1895 | sha1 = "ca7416f20a5e3f9c3b86180f96295fa3d0b52e0d"; |
|
1895 | sha1 = "ca7416f20a5e3f9c3b86180f96295fa3d0b52e0d"; | |
1896 | }; |
|
1896 | }; | |
1897 | }; |
|
1897 | }; | |
1898 | "nopt-3.0.6" = { |
|
1898 | "nopt-3.0.6" = { | |
1899 | name = "nopt"; |
|
1899 | name = "nopt"; | |
1900 | packageName = "nopt"; |
|
1900 | packageName = "nopt"; | |
1901 | version = "3.0.6"; |
|
1901 | version = "3.0.6"; | |
1902 | src = fetchurl { |
|
1902 | src = fetchurl { | |
1903 | url = "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz"; |
|
1903 | url = "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz"; | |
1904 | sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9"; |
|
1904 | sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9"; | |
1905 | }; |
|
1905 | }; | |
1906 | }; |
|
1906 | }; | |
1907 | "noptify-0.0.3" = { |
|
1907 | "noptify-0.0.3" = { | |
1908 | name = "noptify"; |
|
1908 | name = "noptify"; | |
1909 | packageName = "noptify"; |
|
1909 | packageName = "noptify"; | |
1910 | version = "0.0.3"; |
|
1910 | version = "0.0.3"; | |
1911 | src = fetchurl { |
|
1911 | src = fetchurl { | |
1912 | url = "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz"; |
|
1912 | url = "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz"; | |
1913 | sha1 = "58f654a73d9753df0c51d9686dc92104a67f4bbb"; |
|
1913 | sha1 = "58f654a73d9753df0c51d9686dc92104a67f4bbb"; | |
1914 | }; |
|
1914 | }; | |
1915 | }; |
|
1915 | }; | |
1916 | "normalize-package-data-2.4.0" = { |
|
1916 | "normalize-package-data-2.4.0" = { | |
1917 | name = "normalize-package-data"; |
|
1917 | name = "normalize-package-data"; | |
1918 | packageName = "normalize-package-data"; |
|
1918 | packageName = "normalize-package-data"; | |
1919 | version = "2.4.0"; |
|
1919 | version = "2.4.0"; | |
1920 | src = fetchurl { |
|
1920 | src = fetchurl { | |
1921 | url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz"; |
|
1921 | url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz"; | |
1922 | sha512 = "9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw=="; |
|
1922 | sha512 = "9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw=="; | |
1923 | }; |
|
1923 | }; | |
1924 | }; |
|
1924 | }; | |
1925 | "npm-package-arg-6.1.0" = { |
|
1925 | "npm-package-arg-6.1.0" = { | |
1926 | name = "npm-package-arg"; |
|
1926 | name = "npm-package-arg"; | |
1927 | packageName = "npm-package-arg"; |
|
1927 | packageName = "npm-package-arg"; | |
1928 | version = "6.1.0"; |
|
1928 | version = "6.1.0"; | |
1929 | src = fetchurl { |
|
1929 | src = fetchurl { | |
1930 | url = "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz"; |
|
1930 | url = "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz"; | |
1931 | sha512 = "zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA=="; |
|
1931 | sha512 = "zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA=="; | |
1932 | }; |
|
1932 | }; | |
1933 | }; |
|
1933 | }; | |
1934 | "npm-registry-client-8.5.1" = { |
|
1934 | "npm-registry-client-8.5.1" = { | |
1935 | name = "npm-registry-client"; |
|
1935 | name = "npm-registry-client"; | |
1936 | packageName = "npm-registry-client"; |
|
1936 | packageName = "npm-registry-client"; | |
1937 | version = "8.5.1"; |
|
1937 | version = "8.5.1"; | |
1938 | src = fetchurl { |
|
1938 | src = fetchurl { | |
1939 | url = "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.5.1.tgz"; |
|
1939 | url = "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.5.1.tgz"; | |
1940 | sha512 = "7rjGF2eA7hKDidGyEWmHTiKfXkbrcQAsGL/Rh4Rt3x3YNRNHhwaTzVJfW3aNvvlhg4G62VCluif0sLCb/i51Hg=="; |
|
1940 | sha512 = "7rjGF2eA7hKDidGyEWmHTiKfXkbrcQAsGL/Rh4Rt3x3YNRNHhwaTzVJfW3aNvvlhg4G62VCluif0sLCb/i51Hg=="; | |
1941 | }; |
|
1941 | }; | |
1942 | }; |
|
1942 | }; | |
1943 | "npmconf-2.1.3" = { |
|
1943 | "npmconf-2.1.3" = { | |
1944 | name = "npmconf"; |
|
1944 | name = "npmconf"; | |
1945 | packageName = "npmconf"; |
|
1945 | packageName = "npmconf"; | |
1946 | version = "2.1.3"; |
|
1946 | version = "2.1.3"; | |
1947 | src = fetchurl { |
|
1947 | src = fetchurl { | |
1948 | url = "https://registry.npmjs.org/npmconf/-/npmconf-2.1.3.tgz"; |
|
1948 | url = "https://registry.npmjs.org/npmconf/-/npmconf-2.1.3.tgz"; | |
1949 | sha512 = "iTK+HI68GceCoGOHAQiJ/ik1iDfI7S+cgyG8A+PP18IU3X83kRhQIRhAUNj4Bp2JMx6Zrt5kCiozYa9uGWTjhA=="; |
|
1949 | sha512 = "iTK+HI68GceCoGOHAQiJ/ik1iDfI7S+cgyG8A+PP18IU3X83kRhQIRhAUNj4Bp2JMx6Zrt5kCiozYa9uGWTjhA=="; | |
1950 | }; |
|
1950 | }; | |
1951 | }; |
|
1951 | }; | |
1952 | "npmlog-4.1.2" = { |
|
1952 | "npmlog-4.1.2" = { | |
1953 | name = "npmlog"; |
|
1953 | name = "npmlog"; | |
1954 | packageName = "npmlog"; |
|
1954 | packageName = "npmlog"; | |
1955 | version = "4.1.2"; |
|
1955 | version = "4.1.2"; | |
1956 | src = fetchurl { |
|
1956 | src = fetchurl { | |
1957 | url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz"; |
|
1957 | url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz"; | |
1958 | sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg=="; |
|
1958 | sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg=="; | |
1959 | }; |
|
1959 | }; | |
1960 | }; |
|
1960 | }; | |
1961 | "number-is-nan-1.0.1" = { |
|
1961 | "number-is-nan-1.0.1" = { | |
1962 | name = "number-is-nan"; |
|
1962 | name = "number-is-nan"; | |
1963 | packageName = "number-is-nan"; |
|
1963 | packageName = "number-is-nan"; | |
1964 | version = "1.0.1"; |
|
1964 | version = "1.0.1"; | |
1965 | src = fetchurl { |
|
1965 | src = fetchurl { | |
1966 | url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"; |
|
1966 | url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"; | |
1967 | sha1 = "097b602b53422a522c1afb8790318336941a011d"; |
|
1967 | sha1 = "097b602b53422a522c1afb8790318336941a011d"; | |
1968 | }; |
|
1968 | }; | |
1969 | }; |
|
1969 | }; | |
1970 | "oauth-sign-0.8.2" = { |
|
1970 | "oauth-sign-0.8.2" = { | |
1971 | name = "oauth-sign"; |
|
1971 | name = "oauth-sign"; | |
1972 | packageName = "oauth-sign"; |
|
1972 | packageName = "oauth-sign"; | |
1973 | version = "0.8.2"; |
|
1973 | version = "0.8.2"; | |
1974 | src = fetchurl { |
|
1974 | src = fetchurl { | |
1975 | url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz"; |
|
1975 | url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz"; | |
1976 | sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"; |
|
1976 | sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"; | |
1977 | }; |
|
1977 | }; | |
1978 | }; |
|
1978 | }; | |
1979 | "object-assign-4.1.1" = { |
|
1979 | "object-assign-4.1.1" = { | |
1980 | name = "object-assign"; |
|
1980 | name = "object-assign"; | |
1981 | packageName = "object-assign"; |
|
1981 | packageName = "object-assign"; | |
1982 | version = "4.1.1"; |
|
1982 | version = "4.1.1"; | |
1983 | src = fetchurl { |
|
1983 | src = fetchurl { | |
1984 | url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"; |
|
1984 | url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"; | |
1985 | sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863"; |
|
1985 | sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863"; | |
1986 | }; |
|
1986 | }; | |
1987 | }; |
|
1987 | }; | |
1988 | "once-1.3.3" = { |
|
1988 | "once-1.3.3" = { | |
1989 | name = "once"; |
|
1989 | name = "once"; | |
1990 | packageName = "once"; |
|
1990 | packageName = "once"; | |
1991 | version = "1.3.3"; |
|
1991 | version = "1.3.3"; | |
1992 | src = fetchurl { |
|
1992 | src = fetchurl { | |
1993 | url = "https://registry.npmjs.org/once/-/once-1.3.3.tgz"; |
|
1993 | url = "https://registry.npmjs.org/once/-/once-1.3.3.tgz"; | |
1994 | sha1 = "b2e261557ce4c314ec8304f3fa82663e4297ca20"; |
|
1994 | sha1 = "b2e261557ce4c314ec8304f3fa82663e4297ca20"; | |
1995 | }; |
|
1995 | }; | |
1996 | }; |
|
1996 | }; | |
1997 | "once-1.4.0" = { |
|
1997 | "once-1.4.0" = { | |
1998 | name = "once"; |
|
1998 | name = "once"; | |
1999 | packageName = "once"; |
|
1999 | packageName = "once"; | |
2000 | version = "1.4.0"; |
|
2000 | version = "1.4.0"; | |
2001 | src = fetchurl { |
|
2001 | src = fetchurl { | |
2002 | url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz"; |
|
2002 | url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz"; | |
2003 | sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1"; |
|
2003 | sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1"; | |
2004 | }; |
|
2004 | }; | |
2005 | }; |
|
2005 | }; | |
2006 | "optionator-0.8.2" = { |
|
2006 | "optionator-0.8.2" = { | |
2007 | name = "optionator"; |
|
2007 | name = "optionator"; | |
2008 | packageName = "optionator"; |
|
2008 | packageName = "optionator"; | |
2009 | version = "0.8.2"; |
|
2009 | version = "0.8.2"; | |
2010 | src = fetchurl { |
|
2010 | src = fetchurl { | |
2011 | url = "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz"; |
|
2011 | url = "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz"; | |
2012 | sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64"; |
|
2012 | sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64"; | |
2013 | }; |
|
2013 | }; | |
2014 | }; |
|
2014 | }; | |
2015 | "optparse-1.0.5" = { |
|
2015 | "optparse-1.0.5" = { | |
2016 | name = "optparse"; |
|
2016 | name = "optparse"; | |
2017 | packageName = "optparse"; |
|
2017 | packageName = "optparse"; | |
2018 | version = "1.0.5"; |
|
2018 | version = "1.0.5"; | |
2019 | src = fetchurl { |
|
2019 | src = fetchurl { | |
2020 | url = "https://registry.npmjs.org/optparse/-/optparse-1.0.5.tgz"; |
|
2020 | url = "https://registry.npmjs.org/optparse/-/optparse-1.0.5.tgz"; | |
2021 | sha1 = "75e75a96506611eb1c65ba89018ff08a981e2c16"; |
|
2021 | sha1 = "75e75a96506611eb1c65ba89018ff08a981e2c16"; | |
2022 | }; |
|
2022 | }; | |
2023 | }; |
|
2023 | }; | |
2024 | "os-homedir-1.0.2" = { |
|
2024 | "os-homedir-1.0.2" = { | |
2025 | name = "os-homedir"; |
|
2025 | name = "os-homedir"; | |
2026 | packageName = "os-homedir"; |
|
2026 | packageName = "os-homedir"; | |
2027 | version = "1.0.2"; |
|
2027 | version = "1.0.2"; | |
2028 | src = fetchurl { |
|
2028 | src = fetchurl { | |
2029 | url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"; |
|
2029 | url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"; | |
2030 | sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3"; |
|
2030 | sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3"; | |
2031 | }; |
|
2031 | }; | |
2032 | }; |
|
2032 | }; | |
2033 | "os-tmpdir-1.0.2" = { |
|
2033 | "os-tmpdir-1.0.2" = { | |
2034 | name = "os-tmpdir"; |
|
2034 | name = "os-tmpdir"; | |
2035 | packageName = "os-tmpdir"; |
|
2035 | packageName = "os-tmpdir"; | |
2036 | version = "1.0.2"; |
|
2036 | version = "1.0.2"; | |
2037 | src = fetchurl { |
|
2037 | src = fetchurl { | |
2038 | url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"; |
|
2038 | url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"; | |
2039 | sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274"; |
|
2039 | sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274"; | |
2040 | }; |
|
2040 | }; | |
2041 | }; |
|
2041 | }; | |
2042 | "osenv-0.1.5" = { |
|
2042 | "osenv-0.1.5" = { | |
2043 | name = "osenv"; |
|
2043 | name = "osenv"; | |
2044 | packageName = "osenv"; |
|
2044 | packageName = "osenv"; | |
2045 | version = "0.1.5"; |
|
2045 | version = "0.1.5"; | |
2046 | src = fetchurl { |
|
2046 | src = fetchurl { | |
2047 | url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz"; |
|
2047 | url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz"; | |
2048 | sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g=="; |
|
2048 | sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g=="; | |
2049 | }; |
|
2049 | }; | |
2050 | }; |
|
2050 | }; | |
2051 | "parse5-1.5.1" = { |
|
2051 | "parse5-1.5.1" = { | |
2052 | name = "parse5"; |
|
2052 | name = "parse5"; | |
2053 | packageName = "parse5"; |
|
2053 | packageName = "parse5"; | |
2054 | version = "1.5.1"; |
|
2054 | version = "1.5.1"; | |
2055 | src = fetchurl { |
|
2055 | src = fetchurl { | |
2056 | url = "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz"; |
|
2056 | url = "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz"; | |
2057 | sha1 = "9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"; |
|
2057 | sha1 = "9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"; | |
2058 | }; |
|
2058 | }; | |
2059 | }; |
|
2059 | }; | |
2060 | "path-is-absolute-1.0.1" = { |
|
2060 | "path-is-absolute-1.0.1" = { | |
2061 | name = "path-is-absolute"; |
|
2061 | name = "path-is-absolute"; | |
2062 | packageName = "path-is-absolute"; |
|
2062 | packageName = "path-is-absolute"; | |
2063 | version = "1.0.1"; |
|
2063 | version = "1.0.1"; | |
2064 | src = fetchurl { |
|
2064 | src = fetchurl { | |
2065 | url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"; |
|
2065 | url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"; | |
2066 | sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"; |
|
2066 | sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"; | |
2067 | }; |
|
2067 | }; | |
2068 | }; |
|
2068 | }; | |
2069 | "path-posix-1.0.0" = { |
|
2069 | "path-posix-1.0.0" = { | |
2070 | name = "path-posix"; |
|
2070 | name = "path-posix"; | |
2071 | packageName = "path-posix"; |
|
2071 | packageName = "path-posix"; | |
2072 | version = "1.0.0"; |
|
2072 | version = "1.0.0"; | |
2073 | src = fetchurl { |
|
2073 | src = fetchurl { | |
2074 | url = "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz"; |
|
2074 | url = "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz"; | |
2075 | sha1 = "06b26113f56beab042545a23bfa88003ccac260f"; |
|
2075 | sha1 = "06b26113f56beab042545a23bfa88003ccac260f"; | |
2076 | }; |
|
2076 | }; | |
2077 | }; |
|
2077 | }; | |
2078 | "pend-1.2.0" = { |
|
2078 | "pend-1.2.0" = { | |
2079 | name = "pend"; |
|
2079 | name = "pend"; | |
2080 | packageName = "pend"; |
|
2080 | packageName = "pend"; | |
2081 | version = "1.2.0"; |
|
2081 | version = "1.2.0"; | |
2082 | src = fetchurl { |
|
2082 | src = fetchurl { | |
2083 | url = "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz"; |
|
2083 | url = "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz"; | |
2084 | sha1 = "7a57eb550a6783f9115331fcf4663d5c8e007a50"; |
|
2084 | sha1 = "7a57eb550a6783f9115331fcf4663d5c8e007a50"; | |
2085 | }; |
|
2085 | }; | |
2086 | }; |
|
2086 | }; | |
2087 | "performance-now-0.2.0" = { |
|
2087 | "performance-now-0.2.0" = { | |
2088 | name = "performance-now"; |
|
2088 | name = "performance-now"; | |
2089 | packageName = "performance-now"; |
|
2089 | packageName = "performance-now"; | |
2090 | version = "0.2.0"; |
|
2090 | version = "0.2.0"; | |
2091 | src = fetchurl { |
|
2091 | src = fetchurl { | |
2092 | url = "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz"; |
|
2092 | url = "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz"; | |
2093 | sha1 = "33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"; |
|
2093 | sha1 = "33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"; | |
2094 | }; |
|
2094 | }; | |
2095 | }; |
|
2095 | }; | |
2096 | "phantom-4.0.12" = { |
|
2096 | "phantom-4.0.12" = { | |
2097 | name = "phantom"; |
|
2097 | name = "phantom"; | |
2098 | packageName = "phantom"; |
|
2098 | packageName = "phantom"; | |
2099 | version = "4.0.12"; |
|
2099 | version = "4.0.12"; | |
2100 | src = fetchurl { |
|
2100 | src = fetchurl { | |
2101 | url = "https://registry.npmjs.org/phantom/-/phantom-4.0.12.tgz"; |
|
2101 | url = "https://registry.npmjs.org/phantom/-/phantom-4.0.12.tgz"; | |
2102 | sha512 = "Tz82XhtPmwCk1FFPmecy7yRGZG2btpzY2KI9fcoPT7zT9det0CcMyfBFPp1S8DqzsnQnm8ZYEfdy528mwVtksA=="; |
|
2102 | sha512 = "Tz82XhtPmwCk1FFPmecy7yRGZG2btpzY2KI9fcoPT7zT9det0CcMyfBFPp1S8DqzsnQnm8ZYEfdy528mwVtksA=="; | |
2103 | }; |
|
2103 | }; | |
2104 | }; |
|
2104 | }; | |
2105 | "phantomjs-prebuilt-2.1.16" = { |
|
2105 | "phantomjs-prebuilt-2.1.16" = { | |
2106 | name = "phantomjs-prebuilt"; |
|
2106 | name = "phantomjs-prebuilt"; | |
2107 | packageName = "phantomjs-prebuilt"; |
|
2107 | packageName = "phantomjs-prebuilt"; | |
2108 | version = "2.1.16"; |
|
2108 | version = "2.1.16"; | |
2109 | src = fetchurl { |
|
2109 | src = fetchurl { | |
2110 | url = "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz"; |
|
2110 | url = "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz"; | |
2111 | sha1 = "efd212a4a3966d3647684ea8ba788549be2aefef"; |
|
2111 | sha1 = "efd212a4a3966d3647684ea8ba788549be2aefef"; | |
2112 | }; |
|
2112 | }; | |
2113 | }; |
|
2113 | }; | |
2114 | "pinkie-2.0.4" = { |
|
2114 | "pinkie-2.0.4" = { | |
2115 | name = "pinkie"; |
|
2115 | name = "pinkie"; | |
2116 | packageName = "pinkie"; |
|
2116 | packageName = "pinkie"; | |
2117 | version = "2.0.4"; |
|
2117 | version = "2.0.4"; | |
2118 | src = fetchurl { |
|
2118 | src = fetchurl { | |
2119 | url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"; |
|
2119 | url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"; | |
2120 | sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870"; |
|
2120 | sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870"; | |
2121 | }; |
|
2121 | }; | |
2122 | }; |
|
2122 | }; | |
2123 | "pinkie-promise-2.0.1" = { |
|
2123 | "pinkie-promise-2.0.1" = { | |
2124 | name = "pinkie-promise"; |
|
2124 | name = "pinkie-promise"; | |
2125 | packageName = "pinkie-promise"; |
|
2125 | packageName = "pinkie-promise"; | |
2126 | version = "2.0.1"; |
|
2126 | version = "2.0.1"; | |
2127 | src = fetchurl { |
|
2127 | src = fetchurl { | |
2128 | url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"; |
|
2128 | url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"; | |
2129 | sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa"; |
|
2129 | sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa"; | |
2130 | }; |
|
2130 | }; | |
2131 | }; |
|
2131 | }; | |
2132 | "prelude-ls-1.1.2" = { |
|
2132 | "prelude-ls-1.1.2" = { | |
2133 | name = "prelude-ls"; |
|
2133 | name = "prelude-ls"; | |
2134 | packageName = "prelude-ls"; |
|
2134 | packageName = "prelude-ls"; | |
2135 | version = "1.1.2"; |
|
2135 | version = "1.1.2"; | |
2136 | src = fetchurl { |
|
2136 | src = fetchurl { | |
2137 | url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"; |
|
2137 | url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"; | |
2138 | sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54"; |
|
2138 | sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54"; | |
2139 | }; |
|
2139 | }; | |
2140 | }; |
|
2140 | }; | |
2141 | "process-nextick-args-2.0.0" = { |
|
2141 | "process-nextick-args-2.0.0" = { | |
2142 | name = "process-nextick-args"; |
|
2142 | name = "process-nextick-args"; | |
2143 | packageName = "process-nextick-args"; |
|
2143 | packageName = "process-nextick-args"; | |
2144 | version = "2.0.0"; |
|
2144 | version = "2.0.0"; | |
2145 | src = fetchurl { |
|
2145 | src = fetchurl { | |
2146 | url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz"; |
|
2146 | url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz"; | |
2147 | sha512 = "MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="; |
|
2147 | sha512 = "MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="; | |
2148 | }; |
|
2148 | }; | |
2149 | }; |
|
2149 | }; | |
2150 | "progress-1.1.8" = { |
|
2150 | "progress-1.1.8" = { | |
2151 | name = "progress"; |
|
2151 | name = "progress"; | |
2152 | packageName = "progress"; |
|
2152 | packageName = "progress"; | |
2153 | version = "1.1.8"; |
|
2153 | version = "1.1.8"; | |
2154 | src = fetchurl { |
|
2154 | src = fetchurl { | |
2155 | url = "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz"; |
|
2155 | url = "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz"; | |
2156 | sha1 = "e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"; |
|
2156 | sha1 = "e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"; | |
2157 | }; |
|
2157 | }; | |
2158 | }; |
|
2158 | }; | |
2159 | "promise-7.3.1" = { |
|
2159 | "promise-7.3.1" = { | |
2160 | name = "promise"; |
|
2160 | name = "promise"; | |
2161 | packageName = "promise"; |
|
2161 | packageName = "promise"; | |
2162 | version = "7.3.1"; |
|
2162 | version = "7.3.1"; | |
2163 | src = fetchurl { |
|
2163 | src = fetchurl { | |
2164 | url = "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz"; |
|
2164 | url = "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz"; | |
2165 | sha512 = "nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg=="; |
|
2165 | sha512 = "nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg=="; | |
2166 | }; |
|
2166 | }; | |
2167 | }; |
|
2167 | }; | |
2168 | "proto-list-1.2.4" = { |
|
2168 | "proto-list-1.2.4" = { | |
2169 | name = "proto-list"; |
|
2169 | name = "proto-list"; | |
2170 | packageName = "proto-list"; |
|
2170 | packageName = "proto-list"; | |
2171 | version = "1.2.4"; |
|
2171 | version = "1.2.4"; | |
2172 | src = fetchurl { |
|
2172 | src = fetchurl { | |
2173 | url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz"; |
|
2173 | url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz"; | |
2174 | sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849"; |
|
2174 | sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849"; | |
2175 | }; |
|
2175 | }; | |
2176 | }; |
|
2176 | }; | |
2177 | "prr-1.0.1" = { |
|
2177 | "prr-1.0.1" = { | |
2178 | name = "prr"; |
|
2178 | name = "prr"; | |
2179 | packageName = "prr"; |
|
2179 | packageName = "prr"; | |
2180 | version = "1.0.1"; |
|
2180 | version = "1.0.1"; | |
2181 | src = fetchurl { |
|
2181 | src = fetchurl { | |
2182 | url = "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz"; |
|
2182 | url = "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz"; | |
2183 | sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476"; |
|
2183 | sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476"; | |
2184 | }; |
|
2184 | }; | |
2185 | }; |
|
2185 | }; | |
2186 | "punycode-1.4.1" = { |
|
2186 | "punycode-1.4.1" = { | |
2187 | name = "punycode"; |
|
2187 | name = "punycode"; | |
2188 | packageName = "punycode"; |
|
2188 | packageName = "punycode"; | |
2189 | version = "1.4.1"; |
|
2189 | version = "1.4.1"; | |
2190 | src = fetchurl { |
|
2190 | src = fetchurl { | |
2191 | url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"; |
|
2191 | url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"; | |
2192 | sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"; |
|
2192 | sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"; | |
2193 | }; |
|
2193 | }; | |
2194 | }; |
|
2194 | }; | |
2195 | "qrious-4.0.2" = { |
|
2195 | "qrious-4.0.2" = { | |
2196 | name = "qrious"; |
|
2196 | name = "qrious"; | |
2197 | packageName = "qrious"; |
|
2197 | packageName = "qrious"; | |
2198 | version = "4.0.2"; |
|
2198 | version = "4.0.2"; | |
2199 | src = fetchurl { |
|
2199 | src = fetchurl { | |
2200 | url = "https://registry.npmjs.org/qrious/-/qrious-4.0.2.tgz"; |
|
2200 | url = "https://registry.npmjs.org/qrious/-/qrious-4.0.2.tgz"; | |
2201 | sha512 = "xWPJIrK1zu5Ypn898fBp8RHkT/9ibquV2Kv24S/JY9VYEhMBMKur1gHVsOiNUh7PHP9uCgejjpZUHUIXXKoU/g=="; |
|
2201 | sha512 = "xWPJIrK1zu5Ypn898fBp8RHkT/9ibquV2Kv24S/JY9VYEhMBMKur1gHVsOiNUh7PHP9uCgejjpZUHUIXXKoU/g=="; | |
2202 | }; |
|
2202 | }; | |
2203 | }; |
|
2203 | }; | |
2204 | "qs-0.5.6" = { |
|
2204 | "qs-0.5.6" = { | |
2205 | name = "qs"; |
|
2205 | name = "qs"; | |
2206 | packageName = "qs"; |
|
2206 | packageName = "qs"; | |
2207 | version = "0.5.6"; |
|
2207 | version = "0.5.6"; | |
2208 | src = fetchurl { |
|
2208 | src = fetchurl { | |
2209 | url = "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz"; |
|
2209 | url = "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz"; | |
2210 | sha1 = "31b1ad058567651c526921506b9a8793911a0384"; |
|
2210 | sha1 = "31b1ad058567651c526921506b9a8793911a0384"; | |
2211 | }; |
|
2211 | }; | |
2212 | }; |
|
2212 | }; | |
2213 | "qs-6.4.0" = { |
|
2213 | "qs-6.4.0" = { | |
2214 | name = "qs"; |
|
2214 | name = "qs"; | |
2215 | packageName = "qs"; |
|
2215 | packageName = "qs"; | |
2216 | version = "6.4.0"; |
|
2216 | version = "6.4.0"; | |
2217 | src = fetchurl { |
|
2217 | src = fetchurl { | |
2218 | url = "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz"; |
|
2218 | url = "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz"; | |
2219 | sha1 = "13e26d28ad6b0ffaa91312cd3bf708ed351e7233"; |
|
2219 | sha1 = "13e26d28ad6b0ffaa91312cd3bf708ed351e7233"; | |
2220 | }; |
|
2220 | }; | |
2221 | }; |
|
2221 | }; | |
2222 | "readable-stream-1.1.14" = { |
|
2222 | "readable-stream-1.1.14" = { | |
2223 | name = "readable-stream"; |
|
2223 | name = "readable-stream"; | |
2224 | packageName = "readable-stream"; |
|
2224 | packageName = "readable-stream"; | |
2225 | version = "1.1.14"; |
|
2225 | version = "1.1.14"; | |
2226 | src = fetchurl { |
|
2226 | src = fetchurl { | |
2227 | url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz"; |
|
2227 | url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz"; | |
2228 | sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9"; |
|
2228 | sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9"; | |
2229 | }; |
|
2229 | }; | |
2230 | }; |
|
2230 | }; | |
2231 | "readable-stream-2.3.6" = { |
|
2231 | "readable-stream-2.3.6" = { | |
2232 | name = "readable-stream"; |
|
2232 | name = "readable-stream"; | |
2233 | packageName = "readable-stream"; |
|
2233 | packageName = "readable-stream"; | |
2234 | version = "2.3.6"; |
|
2234 | version = "2.3.6"; | |
2235 | src = fetchurl { |
|
2235 | src = fetchurl { | |
2236 | url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz"; |
|
2236 | url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz"; | |
2237 | sha512 = "tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw=="; |
|
2237 | sha512 = "tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw=="; | |
2238 | }; |
|
2238 | }; | |
2239 | }; |
|
2239 | }; | |
2240 | "reduce-flatten-1.0.1" = { |
|
2240 | "reduce-flatten-1.0.1" = { | |
2241 | name = "reduce-flatten"; |
|
2241 | name = "reduce-flatten"; | |
2242 | packageName = "reduce-flatten"; |
|
2242 | packageName = "reduce-flatten"; | |
2243 | version = "1.0.1"; |
|
2243 | version = "1.0.1"; | |
2244 | src = fetchurl { |
|
2244 | src = fetchurl { | |
2245 | url = "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz"; |
|
2245 | url = "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz"; | |
2246 | sha1 = "258c78efd153ddf93cb561237f61184f3696e327"; |
|
2246 | sha1 = "258c78efd153ddf93cb561237f61184f3696e327"; | |
2247 | }; |
|
2247 | }; | |
2248 | }; |
|
2248 | }; | |
2249 | "regenerator-runtime-0.10.5" = { |
|
2249 | "regenerator-runtime-0.10.5" = { | |
2250 | name = "regenerator-runtime"; |
|
2250 | name = "regenerator-runtime"; | |
2251 | packageName = "regenerator-runtime"; |
|
2251 | packageName = "regenerator-runtime"; | |
2252 | version = "0.10.5"; |
|
2252 | version = "0.10.5"; | |
2253 | src = fetchurl { |
|
2253 | src = fetchurl { | |
2254 | url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz"; |
|
2254 | url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz"; | |
2255 | sha1 = "336c3efc1220adcedda2c9fab67b5a7955a33658"; |
|
2255 | sha1 = "336c3efc1220adcedda2c9fab67b5a7955a33658"; | |
2256 | }; |
|
2256 | }; | |
2257 | }; |
|
2257 | }; | |
2258 | "regenerator-runtime-0.11.1" = { |
|
2258 | "regenerator-runtime-0.11.1" = { | |
2259 | name = "regenerator-runtime"; |
|
2259 | name = "regenerator-runtime"; | |
2260 | packageName = "regenerator-runtime"; |
|
2260 | packageName = "regenerator-runtime"; | |
2261 | version = "0.11.1"; |
|
2261 | version = "0.11.1"; | |
2262 | src = fetchurl { |
|
2262 | src = fetchurl { | |
2263 | url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz"; |
|
2263 | url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz"; | |
2264 | sha512 = "MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="; |
|
2264 | sha512 = "MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="; | |
2265 | }; |
|
2265 | }; | |
2266 | }; |
|
2266 | }; | |
2267 | "request-2.81.0" = { |
|
2267 | "request-2.81.0" = { | |
2268 | name = "request"; |
|
2268 | name = "request"; | |
2269 | packageName = "request"; |
|
2269 | packageName = "request"; | |
2270 | version = "2.81.0"; |
|
2270 | version = "2.81.0"; | |
2271 | src = fetchurl { |
|
2271 | src = fetchurl { | |
2272 | url = "https://registry.npmjs.org/request/-/request-2.81.0.tgz"; |
|
2272 | url = "https://registry.npmjs.org/request/-/request-2.81.0.tgz"; | |
2273 | sha1 = "c6928946a0e06c5f8d6f8a9333469ffda46298a0"; |
|
2273 | sha1 = "c6928946a0e06c5f8d6f8a9333469ffda46298a0"; | |
2274 | }; |
|
2274 | }; | |
2275 | }; |
|
2275 | }; | |
2276 | "request-progress-2.0.1" = { |
|
2276 | "request-progress-2.0.1" = { | |
2277 | name = "request-progress"; |
|
2277 | name = "request-progress"; | |
2278 | packageName = "request-progress"; |
|
2278 | packageName = "request-progress"; | |
2279 | version = "2.0.1"; |
|
2279 | version = "2.0.1"; | |
2280 | src = fetchurl { |
|
2280 | src = fetchurl { | |
2281 | url = "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz"; |
|
2281 | url = "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz"; | |
2282 | sha1 = "5d36bb57961c673aa5b788dbc8141fdf23b44e08"; |
|
2282 | sha1 = "5d36bb57961c673aa5b788dbc8141fdf23b44e08"; | |
2283 | }; |
|
2283 | }; | |
2284 | }; |
|
2284 | }; | |
2285 | "retry-0.10.1" = { |
|
2285 | "retry-0.10.1" = { | |
2286 | name = "retry"; |
|
2286 | name = "retry"; | |
2287 | packageName = "retry"; |
|
2287 | packageName = "retry"; | |
2288 | version = "0.10.1"; |
|
2288 | version = "0.10.1"; | |
2289 | src = fetchurl { |
|
2289 | src = fetchurl { | |
2290 | url = "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz"; |
|
2290 | url = "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz"; | |
2291 | sha1 = "e76388d217992c252750241d3d3956fed98d8ff4"; |
|
2291 | sha1 = "e76388d217992c252750241d3d3956fed98d8ff4"; | |
2292 | }; |
|
2292 | }; | |
2293 | }; |
|
2293 | }; | |
2294 | "rimraf-2.2.8" = { |
|
2294 | "rimraf-2.2.8" = { | |
2295 | name = "rimraf"; |
|
2295 | name = "rimraf"; | |
2296 | packageName = "rimraf"; |
|
2296 | packageName = "rimraf"; | |
2297 | version = "2.2.8"; |
|
2297 | version = "2.2.8"; | |
2298 | src = fetchurl { |
|
2298 | src = fetchurl { | |
2299 | url = "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"; |
|
2299 | url = "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"; | |
2300 | sha1 = "e439be2aaee327321952730f99a8929e4fc50582"; |
|
2300 | sha1 = "e439be2aaee327321952730f99a8929e4fc50582"; | |
2301 | }; |
|
2301 | }; | |
2302 | }; |
|
2302 | }; | |
2303 | "safe-buffer-5.1.2" = { |
|
2303 | "safe-buffer-5.1.2" = { | |
2304 | name = "safe-buffer"; |
|
2304 | name = "safe-buffer"; | |
2305 | packageName = "safe-buffer"; |
|
2305 | packageName = "safe-buffer"; | |
2306 | version = "5.1.2"; |
|
2306 | version = "5.1.2"; | |
2307 | src = fetchurl { |
|
2307 | src = fetchurl { | |
2308 | url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"; |
|
2308 | url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"; | |
2309 | sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="; |
|
2309 | sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="; | |
2310 | }; |
|
2310 | }; | |
2311 | }; |
|
2311 | }; | |
2312 | "safer-buffer-2.1.2" = { |
|
2312 | "safer-buffer-2.1.2" = { | |
2313 | name = "safer-buffer"; |
|
2313 | name = "safer-buffer"; | |
2314 | packageName = "safer-buffer"; |
|
2314 | packageName = "safer-buffer"; | |
2315 | version = "2.1.2"; |
|
2315 | version = "2.1.2"; | |
2316 | src = fetchurl { |
|
2316 | src = fetchurl { | |
2317 | url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"; |
|
2317 | url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"; | |
2318 | sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="; |
|
2318 | sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="; | |
2319 | }; |
|
2319 | }; | |
2320 | }; |
|
2320 | }; | |
2321 | "select-1.1.2" = { |
|
2321 | "select-1.1.2" = { | |
2322 | name = "select"; |
|
2322 | name = "select"; | |
2323 | packageName = "select"; |
|
2323 | packageName = "select"; | |
2324 | version = "1.1.2"; |
|
2324 | version = "1.1.2"; | |
2325 | src = fetchurl { |
|
2325 | src = fetchurl { | |
2326 | url = "https://registry.npmjs.org/select/-/select-1.1.2.tgz"; |
|
2326 | url = "https://registry.npmjs.org/select/-/select-1.1.2.tgz"; | |
2327 | sha1 = "0e7350acdec80b1108528786ec1d4418d11b396d"; |
|
2327 | sha1 = "0e7350acdec80b1108528786ec1d4418d11b396d"; | |
2328 | }; |
|
2328 | }; | |
2329 | }; |
|
2329 | }; | |
2330 | "semver-4.3.6" = { |
|
2330 | "semver-4.3.6" = { | |
2331 | name = "semver"; |
|
2331 | name = "semver"; | |
2332 | packageName = "semver"; |
|
2332 | packageName = "semver"; | |
2333 | version = "4.3.6"; |
|
2333 | version = "4.3.6"; | |
2334 | src = fetchurl { |
|
2334 | src = fetchurl { | |
2335 | url = "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz"; |
|
2335 | url = "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz"; | |
2336 | sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da"; |
|
2336 | sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da"; | |
2337 | }; |
|
2337 | }; | |
2338 | }; |
|
2338 | }; | |
2339 |
"semver-5.5. |
|
2339 | "semver-5.5.1" = { | |
2340 | name = "semver"; |
|
2340 | name = "semver"; | |
2341 | packageName = "semver"; |
|
2341 | packageName = "semver"; | |
2342 |
version = "5.5. |
|
2342 | version = "5.5.1"; | |
2343 | src = fetchurl { |
|
2343 | src = fetchurl { | |
2344 |
url = "https://registry.npmjs.org/semver/-/semver-5.5. |
|
2344 | url = "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz"; | |
2345 | sha512 = "4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="; |
|
2345 | sha512 = "PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw=="; | |
2346 | }; |
|
2346 | }; | |
2347 | }; |
|
2347 | }; | |
2348 | "set-blocking-2.0.0" = { |
|
2348 | "set-blocking-2.0.0" = { | |
2349 | name = "set-blocking"; |
|
2349 | name = "set-blocking"; | |
2350 | packageName = "set-blocking"; |
|
2350 | packageName = "set-blocking"; | |
2351 | version = "2.0.0"; |
|
2351 | version = "2.0.0"; | |
2352 | src = fetchurl { |
|
2352 | src = fetchurl { | |
2353 | url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"; |
|
2353 | url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"; | |
2354 | sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7"; |
|
2354 | sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7"; | |
2355 | }; |
|
2355 | }; | |
2356 | }; |
|
2356 | }; | |
2357 | "shelljs-0.3.0" = { |
|
2357 | "shelljs-0.3.0" = { | |
2358 | name = "shelljs"; |
|
2358 | name = "shelljs"; | |
2359 | packageName = "shelljs"; |
|
2359 | packageName = "shelljs"; | |
2360 | version = "0.3.0"; |
|
2360 | version = "0.3.0"; | |
2361 | src = fetchurl { |
|
2361 | src = fetchurl { | |
2362 | url = "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz"; |
|
2362 | url = "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz"; | |
2363 | sha1 = "3596e6307a781544f591f37da618360f31db57b1"; |
|
2363 | sha1 = "3596e6307a781544f591f37da618360f31db57b1"; | |
2364 | }; |
|
2364 | }; | |
2365 | }; |
|
2365 | }; | |
2366 | "sigmund-1.0.1" = { |
|
2366 | "sigmund-1.0.1" = { | |
2367 | name = "sigmund"; |
|
2367 | name = "sigmund"; | |
2368 | packageName = "sigmund"; |
|
2368 | packageName = "sigmund"; | |
2369 | version = "1.0.1"; |
|
2369 | version = "1.0.1"; | |
2370 | src = fetchurl { |
|
2370 | src = fetchurl { | |
2371 | url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz"; |
|
2371 | url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz"; | |
2372 | sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590"; |
|
2372 | sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590"; | |
2373 | }; |
|
2373 | }; | |
2374 | }; |
|
2374 | }; | |
2375 | "signal-exit-3.0.2" = { |
|
2375 | "signal-exit-3.0.2" = { | |
2376 | name = "signal-exit"; |
|
2376 | name = "signal-exit"; | |
2377 | packageName = "signal-exit"; |
|
2377 | packageName = "signal-exit"; | |
2378 | version = "3.0.2"; |
|
2378 | version = "3.0.2"; | |
2379 | src = fetchurl { |
|
2379 | src = fetchurl { | |
2380 | url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz"; |
|
2380 | url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz"; | |
2381 | sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d"; |
|
2381 | sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d"; | |
2382 | }; |
|
2382 | }; | |
2383 | }; |
|
2383 | }; | |
2384 | "slasp-0.0.4" = { |
|
2384 | "slasp-0.0.4" = { | |
2385 | name = "slasp"; |
|
2385 | name = "slasp"; | |
2386 | packageName = "slasp"; |
|
2386 | packageName = "slasp"; | |
2387 | version = "0.0.4"; |
|
2387 | version = "0.0.4"; | |
2388 | src = fetchurl { |
|
2388 | src = fetchurl { | |
2389 | url = "https://registry.npmjs.org/slasp/-/slasp-0.0.4.tgz"; |
|
2389 | url = "https://registry.npmjs.org/slasp/-/slasp-0.0.4.tgz"; | |
2390 | sha1 = "9adc26ee729a0f95095851a5489f87a5258d57a9"; |
|
2390 | sha1 = "9adc26ee729a0f95095851a5489f87a5258d57a9"; | |
2391 | }; |
|
2391 | }; | |
2392 | }; |
|
2392 | }; | |
2393 | "slide-1.1.6" = { |
|
2393 | "slide-1.1.6" = { | |
2394 | name = "slide"; |
|
2394 | name = "slide"; | |
2395 | packageName = "slide"; |
|
2395 | packageName = "slide"; | |
2396 | version = "1.1.6"; |
|
2396 | version = "1.1.6"; | |
2397 | src = fetchurl { |
|
2397 | src = fetchurl { | |
2398 | url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz"; |
|
2398 | url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz"; | |
2399 | sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"; |
|
2399 | sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"; | |
2400 | }; |
|
2400 | }; | |
2401 | }; |
|
2401 | }; | |
2402 | "sntp-1.0.9" = { |
|
2402 | "sntp-1.0.9" = { | |
2403 | name = "sntp"; |
|
2403 | name = "sntp"; | |
2404 | packageName = "sntp"; |
|
2404 | packageName = "sntp"; | |
2405 | version = "1.0.9"; |
|
2405 | version = "1.0.9"; | |
2406 | src = fetchurl { |
|
2406 | src = fetchurl { | |
2407 | url = "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"; |
|
2407 | url = "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"; | |
2408 | sha1 = "6541184cc90aeea6c6e7b35e2659082443c66198"; |
|
2408 | sha1 = "6541184cc90aeea6c6e7b35e2659082443c66198"; | |
2409 | }; |
|
2409 | }; | |
2410 | }; |
|
2410 | }; | |
2411 | "source-map-0.3.0" = { |
|
2411 | "source-map-0.3.0" = { | |
2412 | name = "source-map"; |
|
2412 | name = "source-map"; | |
2413 | packageName = "source-map"; |
|
2413 | packageName = "source-map"; | |
2414 | version = "0.3.0"; |
|
2414 | version = "0.3.0"; | |
2415 | src = fetchurl { |
|
2415 | src = fetchurl { | |
2416 | url = "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz"; |
|
2416 | url = "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz"; | |
2417 | sha1 = "8586fb9a5a005e5b501e21cd18b6f21b457ad1f9"; |
|
2417 | sha1 = "8586fb9a5a005e5b501e21cd18b6f21b457ad1f9"; | |
2418 | }; |
|
2418 | }; | |
2419 | }; |
|
2419 | }; | |
2420 | "source-map-0.5.7" = { |
|
2420 | "source-map-0.5.7" = { | |
2421 | name = "source-map"; |
|
2421 | name = "source-map"; | |
2422 | packageName = "source-map"; |
|
2422 | packageName = "source-map"; | |
2423 | version = "0.5.7"; |
|
2423 | version = "0.5.7"; | |
2424 | src = fetchurl { |
|
2424 | src = fetchurl { | |
2425 | url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"; |
|
2425 | url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"; | |
2426 | sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"; |
|
2426 | sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"; | |
2427 | }; |
|
2427 | }; | |
2428 | }; |
|
2428 | }; | |
2429 | "source-map-0.6.1" = { |
|
2429 | "source-map-0.6.1" = { | |
2430 | name = "source-map"; |
|
2430 | name = "source-map"; | |
2431 | packageName = "source-map"; |
|
2431 | packageName = "source-map"; | |
2432 | version = "0.6.1"; |
|
2432 | version = "0.6.1"; | |
2433 | src = fetchurl { |
|
2433 | src = fetchurl { | |
2434 | url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"; |
|
2434 | url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"; | |
2435 | sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="; |
|
2435 | sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="; | |
2436 | }; |
|
2436 | }; | |
2437 | }; |
|
2437 | }; | |
2438 |
"spdx-correct-3.0. |
|
2438 | "spdx-correct-3.0.2" = { | |
2439 | name = "spdx-correct"; |
|
2439 | name = "spdx-correct"; | |
2440 | packageName = "spdx-correct"; |
|
2440 | packageName = "spdx-correct"; | |
2441 |
version = "3.0. |
|
2441 | version = "3.0.2"; | |
2442 | src = fetchurl { |
|
2442 | src = fetchurl { | |
2443 |
url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0. |
|
2443 | url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz"; | |
2444 | sha512 = "N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g=="; |
|
2444 | sha512 = "q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ=="; | |
2445 | }; |
|
2445 | }; | |
2446 | }; |
|
2446 | }; | |
2447 |
"spdx-exceptions-2. |
|
2447 | "spdx-exceptions-2.2.0" = { | |
2448 | name = "spdx-exceptions"; |
|
2448 | name = "spdx-exceptions"; | |
2449 | packageName = "spdx-exceptions"; |
|
2449 | packageName = "spdx-exceptions"; | |
2450 |
version = "2. |
|
2450 | version = "2.2.0"; | |
2451 | src = fetchurl { |
|
2451 | src = fetchurl { | |
2452 |
url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2. |
|
2452 | url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz"; | |
2453 | sha512 = "4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg=="; |
|
2453 | sha512 = "2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA=="; | |
2454 | }; |
|
2454 | }; | |
2455 | }; |
|
2455 | }; | |
2456 | "spdx-expression-parse-3.0.0" = { |
|
2456 | "spdx-expression-parse-3.0.0" = { | |
2457 | name = "spdx-expression-parse"; |
|
2457 | name = "spdx-expression-parse"; | |
2458 | packageName = "spdx-expression-parse"; |
|
2458 | packageName = "spdx-expression-parse"; | |
2459 | version = "3.0.0"; |
|
2459 | version = "3.0.0"; | |
2460 | src = fetchurl { |
|
2460 | src = fetchurl { | |
2461 | url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz"; |
|
2461 | url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz"; | |
2462 | sha512 = "Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg=="; |
|
2462 | sha512 = "Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg=="; | |
2463 | }; |
|
2463 | }; | |
2464 | }; |
|
2464 | }; | |
2465 |
"spdx-license-ids-3.0. |
|
2465 | "spdx-license-ids-3.0.1" = { | |
2466 | name = "spdx-license-ids"; |
|
2466 | name = "spdx-license-ids"; | |
2467 | packageName = "spdx-license-ids"; |
|
2467 | packageName = "spdx-license-ids"; | |
2468 |
version = "3.0. |
|
2468 | version = "3.0.1"; | |
2469 | src = fetchurl { |
|
2469 | src = fetchurl { | |
2470 |
url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0. |
|
2470 | url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz"; | |
2471 | sha512 = "2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA=="; |
|
2471 | sha512 = "TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w=="; | |
2472 | }; |
|
2472 | }; | |
2473 | }; |
|
2473 | }; | |
2474 | "split-1.0.1" = { |
|
2474 | "split-1.0.1" = { | |
2475 | name = "split"; |
|
2475 | name = "split"; | |
2476 | packageName = "split"; |
|
2476 | packageName = "split"; | |
2477 | version = "1.0.1"; |
|
2477 | version = "1.0.1"; | |
2478 | src = fetchurl { |
|
2478 | src = fetchurl { | |
2479 | url = "https://registry.npmjs.org/split/-/split-1.0.1.tgz"; |
|
2479 | url = "https://registry.npmjs.org/split/-/split-1.0.1.tgz"; | |
2480 | sha512 = "mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg=="; |
|
2480 | sha512 = "mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg=="; | |
2481 | }; |
|
2481 | }; | |
2482 | }; |
|
2482 | }; | |
2483 |
"sshpk-1.1 |
|
2483 | "sshpk-1.15.1" = { | |
2484 | name = "sshpk"; |
|
2484 | name = "sshpk"; | |
2485 | packageName = "sshpk"; |
|
2485 | packageName = "sshpk"; | |
2486 |
version = "1.1 |
|
2486 | version = "1.15.1"; | |
2487 | src = fetchurl { |
|
2487 | src = fetchurl { | |
2488 |
url = "https://registry.npmjs.org/sshpk/-/sshpk-1.1 |
|
2488 | url = "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz"; | |
2489 | sha1 = "c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98"; |
|
2489 | sha512 = "mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA=="; | |
2490 | }; |
|
2490 | }; | |
2491 | }; |
|
2491 | }; | |
2492 | "ssri-5.3.0" = { |
|
2492 | "ssri-5.3.0" = { | |
2493 | name = "ssri"; |
|
2493 | name = "ssri"; | |
2494 | packageName = "ssri"; |
|
2494 | packageName = "ssri"; | |
2495 | version = "5.3.0"; |
|
2495 | version = "5.3.0"; | |
2496 | src = fetchurl { |
|
2496 | src = fetchurl { | |
2497 | url = "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz"; |
|
2497 | url = "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz"; | |
2498 | sha512 = "XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ=="; |
|
2498 | sha512 = "XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ=="; | |
2499 | }; |
|
2499 | }; | |
2500 | }; |
|
2500 | }; | |
2501 | "stack-trace-0.0.10" = { |
|
2501 | "stack-trace-0.0.10" = { | |
2502 | name = "stack-trace"; |
|
2502 | name = "stack-trace"; | |
2503 | packageName = "stack-trace"; |
|
2503 | packageName = "stack-trace"; | |
2504 | version = "0.0.10"; |
|
2504 | version = "0.0.10"; | |
2505 | src = fetchurl { |
|
2505 | src = fetchurl { | |
2506 | url = "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz"; |
|
2506 | url = "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz"; | |
2507 | sha1 = "547c70b347e8d32b4e108ea1a2a159e5fdde19c0"; |
|
2507 | sha1 = "547c70b347e8d32b4e108ea1a2a159e5fdde19c0"; | |
2508 | }; |
|
2508 | }; | |
2509 | }; |
|
2509 | }; | |
|
2510 | "sticky-sidebar-3.3.1" = { | |||
|
2511 | name = "sticky-sidebar"; | |||
|
2512 | packageName = "sticky-sidebar"; | |||
|
2513 | version = "3.3.1"; | |||
|
2514 | src = fetchurl { | |||
|
2515 | url = "https://registry.npmjs.org/sticky-sidebar/-/sticky-sidebar-3.3.1.tgz"; | |||
|
2516 | sha1 = "142bf6b64c2b416e4b707ebf8f09b8b5a5043877"; | |||
|
2517 | }; | |||
|
2518 | }; | |||
2510 | "string-width-1.0.2" = { |
|
2519 | "string-width-1.0.2" = { | |
2511 | name = "string-width"; |
|
2520 | name = "string-width"; | |
2512 | packageName = "string-width"; |
|
2521 | packageName = "string-width"; | |
2513 | version = "1.0.2"; |
|
2522 | version = "1.0.2"; | |
2514 | src = fetchurl { |
|
2523 | src = fetchurl { | |
2515 | url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"; |
|
2524 | url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"; | |
2516 | sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"; |
|
2525 | sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"; | |
2517 | }; |
|
2526 | }; | |
2518 | }; |
|
2527 | }; | |
2519 | "string_decoder-0.10.31" = { |
|
2528 | "string_decoder-0.10.31" = { | |
2520 | name = "string_decoder"; |
|
2529 | name = "string_decoder"; | |
2521 | packageName = "string_decoder"; |
|
2530 | packageName = "string_decoder"; | |
2522 | version = "0.10.31"; |
|
2531 | version = "0.10.31"; | |
2523 | src = fetchurl { |
|
2532 | src = fetchurl { | |
2524 | url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"; |
|
2533 | url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"; | |
2525 | sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94"; |
|
2534 | sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94"; | |
2526 | }; |
|
2535 | }; | |
2527 | }; |
|
2536 | }; | |
2528 | "string_decoder-1.1.1" = { |
|
2537 | "string_decoder-1.1.1" = { | |
2529 | name = "string_decoder"; |
|
2538 | name = "string_decoder"; | |
2530 | packageName = "string_decoder"; |
|
2539 | packageName = "string_decoder"; | |
2531 | version = "1.1.1"; |
|
2540 | version = "1.1.1"; | |
2532 | src = fetchurl { |
|
2541 | src = fetchurl { | |
2533 | url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"; |
|
2542 | url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"; | |
2534 | sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="; |
|
2543 | sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="; | |
2535 | }; |
|
2544 | }; | |
2536 | }; |
|
2545 | }; | |
2537 | "stringstream-0.0.6" = { |
|
2546 | "stringstream-0.0.6" = { | |
2538 | name = "stringstream"; |
|
2547 | name = "stringstream"; | |
2539 | packageName = "stringstream"; |
|
2548 | packageName = "stringstream"; | |
2540 | version = "0.0.6"; |
|
2549 | version = "0.0.6"; | |
2541 | src = fetchurl { |
|
2550 | src = fetchurl { | |
2542 | url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz"; |
|
2551 | url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz"; | |
2543 | sha512 = "87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA=="; |
|
2552 | sha512 = "87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA=="; | |
2544 | }; |
|
2553 | }; | |
2545 | }; |
|
2554 | }; | |
2546 | "strip-ansi-0.3.0" = { |
|
2555 | "strip-ansi-0.3.0" = { | |
2547 | name = "strip-ansi"; |
|
2556 | name = "strip-ansi"; | |
2548 | packageName = "strip-ansi"; |
|
2557 | packageName = "strip-ansi"; | |
2549 | version = "0.3.0"; |
|
2558 | version = "0.3.0"; | |
2550 | src = fetchurl { |
|
2559 | src = fetchurl { | |
2551 | url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz"; |
|
2560 | url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz"; | |
2552 | sha1 = "25f48ea22ca79187f3174a4db8759347bb126220"; |
|
2561 | sha1 = "25f48ea22ca79187f3174a4db8759347bb126220"; | |
2553 | }; |
|
2562 | }; | |
2554 | }; |
|
2563 | }; | |
2555 | "strip-ansi-3.0.1" = { |
|
2564 | "strip-ansi-3.0.1" = { | |
2556 | name = "strip-ansi"; |
|
2565 | name = "strip-ansi"; | |
2557 | packageName = "strip-ansi"; |
|
2566 | packageName = "strip-ansi"; | |
2558 | version = "3.0.1"; |
|
2567 | version = "3.0.1"; | |
2559 | src = fetchurl { |
|
2568 | src = fetchurl { | |
2560 | url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"; |
|
2569 | url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"; | |
2561 | sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"; |
|
2570 | sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"; | |
2562 | }; |
|
2571 | }; | |
2563 | }; |
|
2572 | }; | |
2564 | "strip-json-comments-1.0.4" = { |
|
2573 | "strip-json-comments-1.0.4" = { | |
2565 | name = "strip-json-comments"; |
|
2574 | name = "strip-json-comments"; | |
2566 | packageName = "strip-json-comments"; |
|
2575 | packageName = "strip-json-comments"; | |
2567 | version = "1.0.4"; |
|
2576 | version = "1.0.4"; | |
2568 | src = fetchurl { |
|
2577 | src = fetchurl { | |
2569 | url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"; |
|
2578 | url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"; | |
2570 | sha1 = "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"; |
|
2579 | sha1 = "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"; | |
2571 | }; |
|
2580 | }; | |
2572 | }; |
|
2581 | }; | |
2573 | "supports-color-0.2.0" = { |
|
2582 | "supports-color-0.2.0" = { | |
2574 | name = "supports-color"; |
|
2583 | name = "supports-color"; | |
2575 | packageName = "supports-color"; |
|
2584 | packageName = "supports-color"; | |
2576 | version = "0.2.0"; |
|
2585 | version = "0.2.0"; | |
2577 | src = fetchurl { |
|
2586 | src = fetchurl { | |
2578 | url = "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"; |
|
2587 | url = "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"; | |
2579 | sha1 = "d92de2694eb3f67323973d7ae3d8b55b4c22190a"; |
|
2588 | sha1 = "d92de2694eb3f67323973d7ae3d8b55b4c22190a"; | |
2580 | }; |
|
2589 | }; | |
2581 | }; |
|
2590 | }; | |
2582 | "supports-color-2.0.0" = { |
|
2591 | "supports-color-2.0.0" = { | |
2583 | name = "supports-color"; |
|
2592 | name = "supports-color"; | |
2584 | packageName = "supports-color"; |
|
2593 | packageName = "supports-color"; | |
2585 | version = "2.0.0"; |
|
2594 | version = "2.0.0"; | |
2586 | src = fetchurl { |
|
2595 | src = fetchurl { | |
2587 | url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"; |
|
2596 | url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"; | |
2588 | sha1 = "535d045ce6b6363fa40117084629995e9df324c7"; |
|
2597 | sha1 = "535d045ce6b6363fa40117084629995e9df324c7"; | |
2589 | }; |
|
2598 | }; | |
2590 | }; |
|
2599 | }; | |
2591 | "table-layout-0.3.0" = { |
|
2600 | "table-layout-0.3.0" = { | |
2592 | name = "table-layout"; |
|
2601 | name = "table-layout"; | |
2593 | packageName = "table-layout"; |
|
2602 | packageName = "table-layout"; | |
2594 | version = "0.3.0"; |
|
2603 | version = "0.3.0"; | |
2595 | src = fetchurl { |
|
2604 | src = fetchurl { | |
2596 | url = "https://registry.npmjs.org/table-layout/-/table-layout-0.3.0.tgz"; |
|
2605 | url = "https://registry.npmjs.org/table-layout/-/table-layout-0.3.0.tgz"; | |
2597 | sha1 = "6ee20dc483db371b3e5c87f704ed2f7c799d2c9a"; |
|
2606 | sha1 = "6ee20dc483db371b3e5c87f704ed2f7c799d2c9a"; | |
2598 | }; |
|
2607 | }; | |
2599 | }; |
|
2608 | }; | |
2600 | "tar-3.1.15" = { |
|
2609 | "tar-3.1.15" = { | |
2601 | name = "tar"; |
|
2610 | name = "tar"; | |
2602 | packageName = "tar"; |
|
2611 | packageName = "tar"; | |
2603 | version = "3.1.15"; |
|
2612 | version = "3.1.15"; | |
2604 | src = fetchurl { |
|
2613 | src = fetchurl { | |
2605 | url = "https://registry.npmjs.org/tar/-/tar-3.1.15.tgz"; |
|
2614 | url = "https://registry.npmjs.org/tar/-/tar-3.1.15.tgz"; | |
2606 | sha512 = "pQNFsg+Wb6VXsrIPUnuQwrHR4wD5ASBR0jRyiT4/AALFA2Nl+CjhkDX5fTmIwCuULRtyQR3Dae2BBnP2EFHscw=="; |
|
2615 | sha512 = "pQNFsg+Wb6VXsrIPUnuQwrHR4wD5ASBR0jRyiT4/AALFA2Nl+CjhkDX5fTmIwCuULRtyQR3Dae2BBnP2EFHscw=="; | |
2607 | }; |
|
2616 | }; | |
2608 | }; |
|
2617 | }; | |
2609 | "temp-0.8.3" = { |
|
2618 | "temp-0.8.3" = { | |
2610 | name = "temp"; |
|
2619 | name = "temp"; | |
2611 | packageName = "temp"; |
|
2620 | packageName = "temp"; | |
2612 | version = "0.8.3"; |
|
2621 | version = "0.8.3"; | |
2613 | src = fetchurl { |
|
2622 | src = fetchurl { | |
2614 | url = "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz"; |
|
2623 | url = "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz"; | |
2615 | sha1 = "e0c6bc4d26b903124410e4fed81103014dfc1f59"; |
|
2624 | sha1 = "e0c6bc4d26b903124410e4fed81103014dfc1f59"; | |
2616 | }; |
|
2625 | }; | |
2617 | }; |
|
2626 | }; | |
2618 | "test-value-2.1.0" = { |
|
2627 | "test-value-2.1.0" = { | |
2619 | name = "test-value"; |
|
2628 | name = "test-value"; | |
2620 | packageName = "test-value"; |
|
2629 | packageName = "test-value"; | |
2621 | version = "2.1.0"; |
|
2630 | version = "2.1.0"; | |
2622 | src = fetchurl { |
|
2631 | src = fetchurl { | |
2623 | url = "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz"; |
|
2632 | url = "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz"; | |
2624 | sha1 = "11da6ff670f3471a73b625ca4f3fdcf7bb748291"; |
|
2633 | sha1 = "11da6ff670f3471a73b625ca4f3fdcf7bb748291"; | |
2625 | }; |
|
2634 | }; | |
2626 | }; |
|
2635 | }; | |
2627 | "throttleit-1.0.0" = { |
|
2636 | "throttleit-1.0.0" = { | |
2628 | name = "throttleit"; |
|
2637 | name = "throttleit"; | |
2629 | packageName = "throttleit"; |
|
2638 | packageName = "throttleit"; | |
2630 | version = "1.0.0"; |
|
2639 | version = "1.0.0"; | |
2631 | src = fetchurl { |
|
2640 | src = fetchurl { | |
2632 | url = "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz"; |
|
2641 | url = "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz"; | |
2633 | sha1 = "9e785836daf46743145a5984b6268d828528ac6c"; |
|
2642 | sha1 = "9e785836daf46743145a5984b6268d828528ac6c"; | |
2634 | }; |
|
2643 | }; | |
2635 | }; |
|
2644 | }; | |
2636 | "through-2.3.8" = { |
|
2645 | "through-2.3.8" = { | |
2637 | name = "through"; |
|
2646 | name = "through"; | |
2638 | packageName = "through"; |
|
2647 | packageName = "through"; | |
2639 | version = "2.3.8"; |
|
2648 | version = "2.3.8"; | |
2640 | src = fetchurl { |
|
2649 | src = fetchurl { | |
2641 | url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz"; |
|
2650 | url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz"; | |
2642 | sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"; |
|
2651 | sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"; | |
2643 | }; |
|
2652 | }; | |
2644 | }; |
|
2653 | }; | |
2645 | "tiny-emitter-2.0.2" = { |
|
2654 | "tiny-emitter-2.0.2" = { | |
2646 | name = "tiny-emitter"; |
|
2655 | name = "tiny-emitter"; | |
2647 | packageName = "tiny-emitter"; |
|
2656 | packageName = "tiny-emitter"; | |
2648 | version = "2.0.2"; |
|
2657 | version = "2.0.2"; | |
2649 | src = fetchurl { |
|
2658 | src = fetchurl { | |
2650 | url = "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz"; |
|
2659 | url = "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz"; | |
2651 | sha512 = "2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow=="; |
|
2660 | sha512 = "2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow=="; | |
2652 | }; |
|
2661 | }; | |
2653 | }; |
|
2662 | }; | |
2654 | "tiny-lr-fork-0.0.5" = { |
|
2663 | "tiny-lr-fork-0.0.5" = { | |
2655 | name = "tiny-lr-fork"; |
|
2664 | name = "tiny-lr-fork"; | |
2656 | packageName = "tiny-lr-fork"; |
|
2665 | packageName = "tiny-lr-fork"; | |
2657 | version = "0.0.5"; |
|
2666 | version = "0.0.5"; | |
2658 | src = fetchurl { |
|
2667 | src = fetchurl { | |
2659 | url = "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz"; |
|
2668 | url = "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz"; | |
2660 | sha1 = "1e99e1e2a8469b736ab97d97eefa98c71f76ed0a"; |
|
2669 | sha1 = "1e99e1e2a8469b736ab97d97eefa98c71f76ed0a"; | |
2661 | }; |
|
2670 | }; | |
2662 | }; |
|
2671 | }; | |
2663 | "tough-cookie-2.3.4" = { |
|
2672 | "tough-cookie-2.3.4" = { | |
2664 | name = "tough-cookie"; |
|
2673 | name = "tough-cookie"; | |
2665 | packageName = "tough-cookie"; |
|
2674 | packageName = "tough-cookie"; | |
2666 | version = "2.3.4"; |
|
2675 | version = "2.3.4"; | |
2667 | src = fetchurl { |
|
2676 | src = fetchurl { | |
2668 | url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz"; |
|
2677 | url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz"; | |
2669 | sha512 = "TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA=="; |
|
2678 | sha512 = "TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA=="; | |
2670 | }; |
|
2679 | }; | |
2671 | }; |
|
2680 | }; | |
2672 | "tunnel-agent-0.6.0" = { |
|
2681 | "tunnel-agent-0.6.0" = { | |
2673 | name = "tunnel-agent"; |
|
2682 | name = "tunnel-agent"; | |
2674 | packageName = "tunnel-agent"; |
|
2683 | packageName = "tunnel-agent"; | |
2675 | version = "0.6.0"; |
|
2684 | version = "0.6.0"; | |
2676 | src = fetchurl { |
|
2685 | src = fetchurl { | |
2677 | url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz"; |
|
2686 | url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz"; | |
2678 | sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd"; |
|
2687 | sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd"; | |
2679 | }; |
|
2688 | }; | |
2680 | }; |
|
2689 | }; | |
2681 | "tweetnacl-0.14.5" = { |
|
2690 | "tweetnacl-0.14.5" = { | |
2682 | name = "tweetnacl"; |
|
2691 | name = "tweetnacl"; | |
2683 | packageName = "tweetnacl"; |
|
2692 | packageName = "tweetnacl"; | |
2684 | version = "0.14.5"; |
|
2693 | version = "0.14.5"; | |
2685 | src = fetchurl { |
|
2694 | src = fetchurl { | |
2686 | url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz"; |
|
2695 | url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz"; | |
2687 | sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64"; |
|
2696 | sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64"; | |
2688 | }; |
|
2697 | }; | |
2689 | }; |
|
2698 | }; | |
2690 | "type-check-0.3.2" = { |
|
2699 | "type-check-0.3.2" = { | |
2691 | name = "type-check"; |
|
2700 | name = "type-check"; | |
2692 | packageName = "type-check"; |
|
2701 | packageName = "type-check"; | |
2693 | version = "0.3.2"; |
|
2702 | version = "0.3.2"; | |
2694 | src = fetchurl { |
|
2703 | src = fetchurl { | |
2695 | url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"; |
|
2704 | url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"; | |
2696 | sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72"; |
|
2705 | sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72"; | |
2697 | }; |
|
2706 | }; | |
2698 | }; |
|
2707 | }; | |
2699 | "typedarray-0.0.6" = { |
|
2708 | "typedarray-0.0.6" = { | |
2700 | name = "typedarray"; |
|
2709 | name = "typedarray"; | |
2701 | packageName = "typedarray"; |
|
2710 | packageName = "typedarray"; | |
2702 | version = "0.0.6"; |
|
2711 | version = "0.0.6"; | |
2703 | src = fetchurl { |
|
2712 | src = fetchurl { | |
2704 | url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"; |
|
2713 | url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"; | |
2705 | sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777"; |
|
2714 | sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777"; | |
2706 | }; |
|
2715 | }; | |
2707 | }; |
|
2716 | }; | |
2708 | "typical-2.6.1" = { |
|
2717 | "typical-2.6.1" = { | |
2709 | name = "typical"; |
|
2718 | name = "typical"; | |
2710 | packageName = "typical"; |
|
2719 | packageName = "typical"; | |
2711 | version = "2.6.1"; |
|
2720 | version = "2.6.1"; | |
2712 | src = fetchurl { |
|
2721 | src = fetchurl { | |
2713 | url = "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz"; |
|
2722 | url = "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz"; | |
2714 | sha1 = "5c080e5d661cbbe38259d2e70a3c7253e873881d"; |
|
2723 | sha1 = "5c080e5d661cbbe38259d2e70a3c7253e873881d"; | |
2715 | }; |
|
2724 | }; | |
2716 | }; |
|
2725 | }; | |
2717 | "uid-number-0.0.5" = { |
|
2726 | "uid-number-0.0.5" = { | |
2718 | name = "uid-number"; |
|
2727 | name = "uid-number"; | |
2719 | packageName = "uid-number"; |
|
2728 | packageName = "uid-number"; | |
2720 | version = "0.0.5"; |
|
2729 | version = "0.0.5"; | |
2721 | src = fetchurl { |
|
2730 | src = fetchurl { | |
2722 | url = "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz"; |
|
2731 | url = "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz"; | |
2723 | sha1 = "5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e"; |
|
2732 | sha1 = "5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e"; | |
2724 | }; |
|
2733 | }; | |
2725 | }; |
|
2734 | }; | |
2726 | "underscore-1.7.0" = { |
|
2735 | "underscore-1.7.0" = { | |
2727 | name = "underscore"; |
|
2736 | name = "underscore"; | |
2728 | packageName = "underscore"; |
|
2737 | packageName = "underscore"; | |
2729 | version = "1.7.0"; |
|
2738 | version = "1.7.0"; | |
2730 | src = fetchurl { |
|
2739 | src = fetchurl { | |
2731 | url = "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz"; |
|
2740 | url = "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz"; | |
2732 | sha1 = "6bbaf0877500d36be34ecaa584e0db9fef035209"; |
|
2741 | sha1 = "6bbaf0877500d36be34ecaa584e0db9fef035209"; | |
2733 | }; |
|
2742 | }; | |
2734 | }; |
|
2743 | }; | |
2735 | "underscore.string-2.2.1" = { |
|
2744 | "underscore.string-2.2.1" = { | |
2736 | name = "underscore.string"; |
|
2745 | name = "underscore.string"; | |
2737 | packageName = "underscore.string"; |
|
2746 | packageName = "underscore.string"; | |
2738 | version = "2.2.1"; |
|
2747 | version = "2.2.1"; | |
2739 | src = fetchurl { |
|
2748 | src = fetchurl { | |
2740 | url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz"; |
|
2749 | url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz"; | |
2741 | sha1 = "d7c0fa2af5d5a1a67f4253daee98132e733f0f19"; |
|
2750 | sha1 = "d7c0fa2af5d5a1a67f4253daee98132e733f0f19"; | |
2742 | }; |
|
2751 | }; | |
2743 | }; |
|
2752 | }; | |
2744 | "underscore.string-2.3.3" = { |
|
2753 | "underscore.string-2.3.3" = { | |
2745 | name = "underscore.string"; |
|
2754 | name = "underscore.string"; | |
2746 | packageName = "underscore.string"; |
|
2755 | packageName = "underscore.string"; | |
2747 | version = "2.3.3"; |
|
2756 | version = "2.3.3"; | |
2748 | src = fetchurl { |
|
2757 | src = fetchurl { | |
2749 | url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz"; |
|
2758 | url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz"; | |
2750 | sha1 = "71c08bf6b428b1133f37e78fa3a21c82f7329b0d"; |
|
2759 | sha1 = "71c08bf6b428b1133f37e78fa3a21c82f7329b0d"; | |
2751 | }; |
|
2760 | }; | |
2752 | }; |
|
2761 | }; | |
2753 | "underscore.string-2.4.0" = { |
|
2762 | "underscore.string-2.4.0" = { | |
2754 | name = "underscore.string"; |
|
2763 | name = "underscore.string"; | |
2755 | packageName = "underscore.string"; |
|
2764 | packageName = "underscore.string"; | |
2756 | version = "2.4.0"; |
|
2765 | version = "2.4.0"; | |
2757 | src = fetchurl { |
|
2766 | src = fetchurl { | |
2758 | url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz"; |
|
2767 | url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz"; | |
2759 | sha1 = "8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b"; |
|
2768 | sha1 = "8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b"; | |
2760 | }; |
|
2769 | }; | |
2761 | }; |
|
2770 | }; | |
2762 | "unicode-5.2.0-0.7.5" = { |
|
2771 | "unicode-5.2.0-0.7.5" = { | |
2763 | name = "unicode-5.2.0"; |
|
2772 | name = "unicode-5.2.0"; | |
2764 | packageName = "unicode-5.2.0"; |
|
2773 | packageName = "unicode-5.2.0"; | |
2765 | version = "0.7.5"; |
|
2774 | version = "0.7.5"; | |
2766 | src = fetchurl { |
|
2775 | src = fetchurl { | |
2767 | url = "https://registry.npmjs.org/unicode-5.2.0/-/unicode-5.2.0-0.7.5.tgz"; |
|
2776 | url = "https://registry.npmjs.org/unicode-5.2.0/-/unicode-5.2.0-0.7.5.tgz"; | |
2768 | sha512 = "KVGLW1Bri30x00yv4HNM8kBxoqFXr0Sbo55735nvrlsx4PYBZol3UtoWgO492fSwmsetzPEZzy73rbU8OGXJcA=="; |
|
2777 | sha512 = "KVGLW1Bri30x00yv4HNM8kBxoqFXr0Sbo55735nvrlsx4PYBZol3UtoWgO492fSwmsetzPEZzy73rbU8OGXJcA=="; | |
2769 | }; |
|
2778 | }; | |
2770 | }; |
|
2779 | }; | |
2771 | "util-deprecate-1.0.2" = { |
|
2780 | "util-deprecate-1.0.2" = { | |
2772 | name = "util-deprecate"; |
|
2781 | name = "util-deprecate"; | |
2773 | packageName = "util-deprecate"; |
|
2782 | packageName = "util-deprecate"; | |
2774 | version = "1.0.2"; |
|
2783 | version = "1.0.2"; | |
2775 | src = fetchurl { |
|
2784 | src = fetchurl { | |
2776 | url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"; |
|
2785 | url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"; | |
2777 | sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf"; |
|
2786 | sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf"; | |
2778 | }; |
|
2787 | }; | |
2779 | }; |
|
2788 | }; | |
2780 | "uuid-3.3.2" = { |
|
2789 | "uuid-3.3.2" = { | |
2781 | name = "uuid"; |
|
2790 | name = "uuid"; | |
2782 | packageName = "uuid"; |
|
2791 | packageName = "uuid"; | |
2783 | version = "3.3.2"; |
|
2792 | version = "3.3.2"; | |
2784 | src = fetchurl { |
|
2793 | src = fetchurl { | |
2785 | url = "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz"; |
|
2794 | url = "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz"; | |
2786 | sha512 = "yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="; |
|
2795 | sha512 = "yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="; | |
2787 | }; |
|
2796 | }; | |
2788 | }; |
|
2797 | }; | |
2789 |
"validate-npm-package-license-3.0. |
|
2798 | "validate-npm-package-license-3.0.4" = { | |
2790 | name = "validate-npm-package-license"; |
|
2799 | name = "validate-npm-package-license"; | |
2791 | packageName = "validate-npm-package-license"; |
|
2800 | packageName = "validate-npm-package-license"; | |
2792 |
version = "3.0. |
|
2801 | version = "3.0.4"; | |
2793 | src = fetchurl { |
|
2802 | src = fetchurl { | |
2794 |
url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0. |
|
2803 | url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"; | |
2795 | sha512 = "63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g=="; |
|
2804 | sha512 = "DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="; | |
2796 | }; |
|
2805 | }; | |
2797 | }; |
|
2806 | }; | |
2798 | "validate-npm-package-name-3.0.0" = { |
|
2807 | "validate-npm-package-name-3.0.0" = { | |
2799 | name = "validate-npm-package-name"; |
|
2808 | name = "validate-npm-package-name"; | |
2800 | packageName = "validate-npm-package-name"; |
|
2809 | packageName = "validate-npm-package-name"; | |
2801 | version = "3.0.0"; |
|
2810 | version = "3.0.0"; | |
2802 | src = fetchurl { |
|
2811 | src = fetchurl { | |
2803 | url = "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz"; |
|
2812 | url = "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz"; | |
2804 | sha1 = "5fa912d81eb7d0c74afc140de7317f0ca7df437e"; |
|
2813 | sha1 = "5fa912d81eb7d0c74afc140de7317f0ca7df437e"; | |
2805 | }; |
|
2814 | }; | |
2806 | }; |
|
2815 | }; | |
2807 | "verror-1.10.0" = { |
|
2816 | "verror-1.10.0" = { | |
2808 | name = "verror"; |
|
2817 | name = "verror"; | |
2809 | packageName = "verror"; |
|
2818 | packageName = "verror"; | |
2810 | version = "1.10.0"; |
|
2819 | version = "1.10.0"; | |
2811 | src = fetchurl { |
|
2820 | src = fetchurl { | |
2812 | url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz"; |
|
2821 | url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz"; | |
2813 | sha1 = "3a105ca17053af55d6e270c1f8288682e18da400"; |
|
2822 | sha1 = "3a105ca17053af55d6e270c1f8288682e18da400"; | |
2814 | }; |
|
2823 | }; | |
2815 | }; |
|
2824 | }; | |
2816 | "vulcanize-1.16.0" = { |
|
2825 | "vulcanize-1.16.0" = { | |
2817 | name = "vulcanize"; |
|
2826 | name = "vulcanize"; | |
2818 | packageName = "vulcanize"; |
|
2827 | packageName = "vulcanize"; | |
2819 | version = "1.16.0"; |
|
2828 | version = "1.16.0"; | |
2820 | src = fetchurl { |
|
2829 | src = fetchurl { | |
2821 | url = "https://registry.npmjs.org/vulcanize/-/vulcanize-1.16.0.tgz"; |
|
2830 | url = "https://registry.npmjs.org/vulcanize/-/vulcanize-1.16.0.tgz"; | |
2822 | sha512 = "TYlFljSc896b5+0FmMiw0JAMrHNBiHx0IAFC/dQR3Dxdb9Nx43ohm6wMWTlPXQn4sk/0WkqfgoAA6SLxyvPCLQ=="; |
|
2831 | sha512 = "TYlFljSc896b5+0FmMiw0JAMrHNBiHx0IAFC/dQR3Dxdb9Nx43ohm6wMWTlPXQn4sk/0WkqfgoAA6SLxyvPCLQ=="; | |
2823 | }; |
|
2832 | }; | |
2824 | }; |
|
2833 | }; | |
2825 | "walk-2.3.14" = { |
|
2834 | "walk-2.3.14" = { | |
2826 | name = "walk"; |
|
2835 | name = "walk"; | |
2827 | packageName = "walk"; |
|
2836 | packageName = "walk"; | |
2828 | version = "2.3.14"; |
|
2837 | version = "2.3.14"; | |
2829 | src = fetchurl { |
|
2838 | src = fetchurl { | |
2830 | url = "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz"; |
|
2839 | url = "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz"; | |
2831 | sha512 = "5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg=="; |
|
2840 | sha512 = "5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg=="; | |
2832 | }; |
|
2841 | }; | |
2833 | }; |
|
2842 | }; | |
|
2843 | "waypoints-4.0.1" = { | |||
|
2844 | name = "waypoints"; | |||
|
2845 | packageName = "waypoints"; | |||
|
2846 | version = "4.0.1"; | |||
|
2847 | src = fetchurl { | |||
|
2848 | url = "https://registry.npmjs.org/waypoints/-/waypoints-4.0.1.tgz"; | |||
|
2849 | sha1 = "09979a0573810b29627cba4366a284a062ec69c8"; | |||
|
2850 | }; | |||
|
2851 | }; | |||
2834 | "which-1.0.9" = { |
|
2852 | "which-1.0.9" = { | |
2835 | name = "which"; |
|
2853 | name = "which"; | |
2836 | packageName = "which"; |
|
2854 | packageName = "which"; | |
2837 | version = "1.0.9"; |
|
2855 | version = "1.0.9"; | |
2838 | src = fetchurl { |
|
2856 | src = fetchurl { | |
2839 | url = "https://registry.npmjs.org/which/-/which-1.0.9.tgz"; |
|
2857 | url = "https://registry.npmjs.org/which/-/which-1.0.9.tgz"; | |
2840 | sha1 = "460c1da0f810103d0321a9b633af9e575e64486f"; |
|
2858 | sha1 = "460c1da0f810103d0321a9b633af9e575e64486f"; | |
2841 | }; |
|
2859 | }; | |
2842 | }; |
|
2860 | }; | |
2843 | "which-1.3.1" = { |
|
2861 | "which-1.3.1" = { | |
2844 | name = "which"; |
|
2862 | name = "which"; | |
2845 | packageName = "which"; |
|
2863 | packageName = "which"; | |
2846 | version = "1.3.1"; |
|
2864 | version = "1.3.1"; | |
2847 | src = fetchurl { |
|
2865 | src = fetchurl { | |
2848 | url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz"; |
|
2866 | url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz"; | |
2849 | sha512 = "HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="; |
|
2867 | sha512 = "HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="; | |
2850 | }; |
|
2868 | }; | |
2851 | }; |
|
2869 | }; | |
2852 | "wide-align-1.1.3" = { |
|
2870 | "wide-align-1.1.3" = { | |
2853 | name = "wide-align"; |
|
2871 | name = "wide-align"; | |
2854 | packageName = "wide-align"; |
|
2872 | packageName = "wide-align"; | |
2855 | version = "1.1.3"; |
|
2873 | version = "1.1.3"; | |
2856 | src = fetchurl { |
|
2874 | src = fetchurl { | |
2857 | url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz"; |
|
2875 | url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz"; | |
2858 | sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA=="; |
|
2876 | sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA=="; | |
2859 | }; |
|
2877 | }; | |
2860 | }; |
|
2878 | }; | |
2861 |
"winston-2.4. |
|
2879 | "winston-2.4.4" = { | |
2862 | name = "winston"; |
|
2880 | name = "winston"; | |
2863 | packageName = "winston"; |
|
2881 | packageName = "winston"; | |
2864 |
version = "2.4. |
|
2882 | version = "2.4.4"; | |
2865 | src = fetchurl { |
|
2883 | src = fetchurl { | |
2866 |
url = "https://registry.npmjs.org/winston/-/winston-2.4. |
|
2884 | url = "https://registry.npmjs.org/winston/-/winston-2.4.4.tgz"; | |
2867 | sha512 = "GYKuysPz2pxYAVJD2NPsDLP5Z79SDEzPm9/j4tCjkF/n89iBNGBMJcR+dMUqxgPNgoSs6fVygPi+Vl2oxIpBuw=="; |
|
2885 | sha512 = "NBo2Pepn4hK4V01UfcWcDlmiVTs7VTB1h7bgnB0rgP146bYhMxX0ypCz3lBOfNxCO4Zuek7yeT+y/zM1OfMw4Q=="; | |
2868 | }; |
|
2886 | }; | |
2869 | }; |
|
2887 | }; | |
2870 | "wordwrap-1.0.0" = { |
|
2888 | "wordwrap-1.0.0" = { | |
2871 | name = "wordwrap"; |
|
2889 | name = "wordwrap"; | |
2872 | packageName = "wordwrap"; |
|
2890 | packageName = "wordwrap"; | |
2873 | version = "1.0.0"; |
|
2891 | version = "1.0.0"; | |
2874 | src = fetchurl { |
|
2892 | src = fetchurl { | |
2875 | url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"; |
|
2893 | url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"; | |
2876 | sha1 = "27584810891456a4171c8d0226441ade90cbcaeb"; |
|
2894 | sha1 = "27584810891456a4171c8d0226441ade90cbcaeb"; | |
2877 | }; |
|
2895 | }; | |
2878 | }; |
|
2896 | }; | |
2879 | "wordwrapjs-2.0.0" = { |
|
2897 | "wordwrapjs-2.0.0" = { | |
2880 | name = "wordwrapjs"; |
|
2898 | name = "wordwrapjs"; | |
2881 | packageName = "wordwrapjs"; |
|
2899 | packageName = "wordwrapjs"; | |
2882 | version = "2.0.0"; |
|
2900 | version = "2.0.0"; | |
2883 | src = fetchurl { |
|
2901 | src = fetchurl { | |
2884 | url = "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-2.0.0.tgz"; |
|
2902 | url = "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-2.0.0.tgz"; | |
2885 | sha1 = "ab55f695e6118da93858fdd70c053d1c5e01ac20"; |
|
2903 | sha1 = "ab55f695e6118da93858fdd70c053d1c5e01ac20"; | |
2886 | }; |
|
2904 | }; | |
2887 | }; |
|
2905 | }; | |
2888 | "wrappy-1.0.2" = { |
|
2906 | "wrappy-1.0.2" = { | |
2889 | name = "wrappy"; |
|
2907 | name = "wrappy"; | |
2890 | packageName = "wrappy"; |
|
2908 | packageName = "wrappy"; | |
2891 | version = "1.0.2"; |
|
2909 | version = "1.0.2"; | |
2892 | src = fetchurl { |
|
2910 | src = fetchurl { | |
2893 | url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"; |
|
2911 | url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"; | |
2894 | sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"; |
|
2912 | sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"; | |
2895 | }; |
|
2913 | }; | |
2896 | }; |
|
2914 | }; | |
2897 | "yallist-3.0.2" = { |
|
2915 | "yallist-3.0.2" = { | |
2898 | name = "yallist"; |
|
2916 | name = "yallist"; | |
2899 | packageName = "yallist"; |
|
2917 | packageName = "yallist"; | |
2900 | version = "3.0.2"; |
|
2918 | version = "3.0.2"; | |
2901 | src = fetchurl { |
|
2919 | src = fetchurl { | |
2902 | url = "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz"; |
|
2920 | url = "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz"; | |
2903 | sha1 = "8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"; |
|
2921 | sha1 = "8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"; | |
2904 | }; |
|
2922 | }; | |
2905 | }; |
|
2923 | }; | |
2906 | "yauzl-2.4.1" = { |
|
2924 | "yauzl-2.4.1" = { | |
2907 | name = "yauzl"; |
|
2925 | name = "yauzl"; | |
2908 | packageName = "yauzl"; |
|
2926 | packageName = "yauzl"; | |
2909 | version = "2.4.1"; |
|
2927 | version = "2.4.1"; | |
2910 | src = fetchurl { |
|
2928 | src = fetchurl { | |
2911 | url = "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz"; |
|
2929 | url = "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz"; | |
2912 | sha1 = "9528f442dab1b2284e58b4379bb194e22e0c4005"; |
|
2930 | sha1 = "9528f442dab1b2284e58b4379bb194e22e0c4005"; | |
2913 | }; |
|
2931 | }; | |
2914 | }; |
|
2932 | }; | |
2915 | }; |
|
2933 | }; | |
2916 | args = { |
|
2934 | args = { | |
2917 | name = "rhodecode-enterprise"; |
|
2935 | name = "rhodecode-enterprise"; | |
2918 | packageName = "rhodecode-enterprise"; |
|
2936 | packageName = "rhodecode-enterprise"; | |
2919 | version = "1.0.0"; |
|
2937 | version = "1.0.0"; | |
2920 | src = ./..; |
|
2938 | src = ./..; | |
2921 | dependencies = [ |
|
2939 | dependencies = [ | |
2922 | sources."@types/clone-0.1.30" |
|
2940 | sources."@types/clone-0.1.30" | |
2923 |
sources."@types/node-4. |
|
2941 | sources."@types/node-4.9.0" | |
2924 | (sources."@types/parse5-0.0.31" // { |
|
2942 | (sources."@types/parse5-0.0.31" // { | |
2925 | dependencies = [ |
|
2943 | dependencies = [ | |
2926 |
sources."@types/node-6.0.11 |
|
2944 | sources."@types/node-6.0.118" | |
2927 | ]; |
|
2945 | ]; | |
2928 | }) |
|
2946 | }) | |
2929 | sources."abbrev-1.1.1" |
|
2947 | sources."abbrev-1.1.1" | |
2930 | sources."acorn-3.3.0" |
|
2948 | sources."acorn-3.3.0" | |
2931 | sources."acorn-jsx-3.0.1" |
|
2949 | sources."acorn-jsx-3.0.1" | |
2932 | sources."ajv-4.11.8" |
|
2950 | sources."ajv-4.11.8" | |
2933 | sources."amdefine-1.0.1" |
|
2951 | sources."amdefine-1.0.1" | |
2934 | sources."ansi-escape-sequences-3.0.0" |
|
2952 | sources."ansi-escape-sequences-3.0.0" | |
2935 | sources."ansi-regex-2.1.1" |
|
2953 | sources."ansi-regex-2.1.1" | |
2936 | sources."ansi-styles-2.2.1" |
|
2954 | sources."ansi-styles-2.2.1" | |
2937 | sources."appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" |
|
2955 | sources."appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" | |
2938 | sources."aproba-1.2.0" |
|
2956 | sources."aproba-1.2.0" | |
2939 | sources."are-we-there-yet-1.1.5" |
|
2957 | sources."are-we-there-yet-1.1.5" | |
2940 | (sources."argparse-0.1.16" // { |
|
2958 | (sources."argparse-0.1.16" // { | |
2941 | dependencies = [ |
|
2959 | dependencies = [ | |
2942 | sources."underscore.string-2.4.0" |
|
2960 | sources."underscore.string-2.4.0" | |
2943 | ]; |
|
2961 | ]; | |
2944 | }) |
|
2962 | }) | |
2945 | sources."array-back-1.0.4" |
|
2963 | sources."array-back-1.0.4" | |
2946 | sources."asap-2.0.6" |
|
2964 | sources."asap-2.0.6" | |
2947 |
sources."asn1-0.2. |
|
2965 | sources."asn1-0.2.4" | |
2948 | sources."assert-plus-0.2.0" |
|
2966 | sources."assert-plus-0.2.0" | |
2949 | sources."async-0.1.22" |
|
2967 | sources."async-0.1.22" | |
2950 | sources."asynckit-0.4.0" |
|
2968 | sources."asynckit-0.4.0" | |
2951 | sources."aws-sign2-0.6.0" |
|
2969 | sources."aws-sign2-0.6.0" | |
2952 |
sources."aws4-1. |
|
2970 | sources."aws4-1.8.0" | |
2953 | sources."babel-polyfill-6.26.0" |
|
2971 | sources."babel-polyfill-6.26.0" | |
2954 | (sources."babel-runtime-6.26.0" // { |
|
2972 | (sources."babel-runtime-6.26.0" // { | |
2955 | dependencies = [ |
|
2973 | dependencies = [ | |
2956 | sources."regenerator-runtime-0.11.1" |
|
2974 | sources."regenerator-runtime-0.11.1" | |
2957 | ]; |
|
2975 | ]; | |
2958 | }) |
|
2976 | }) | |
2959 | sources."balanced-match-1.0.0" |
|
2977 | sources."balanced-match-1.0.0" | |
2960 | sources."base64-js-1.2.3" |
|
2978 | sources."base64-js-1.2.3" | |
2961 | sources."bcrypt-pbkdf-1.0.2" |
|
2979 | sources."bcrypt-pbkdf-1.0.2" | |
2962 | sources."boom-2.10.1" |
|
2980 | sources."boom-2.10.1" | |
2963 | sources."bower-1.8.4" |
|
2981 | sources."bower-1.8.4" | |
2964 | sources."brace-expansion-1.1.11" |
|
2982 | sources."brace-expansion-1.1.11" | |
2965 | sources."buffer-from-1.1.1" |
|
2983 | sources."buffer-from-1.1.1" | |
2966 | sources."builtin-modules-1.1.1" |
|
2984 | sources."builtin-modules-1.1.1" | |
2967 | sources."builtins-1.0.3" |
|
2985 | sources."builtins-1.0.3" | |
2968 | sources."caseless-0.12.0" |
|
2986 | sources."caseless-0.12.0" | |
2969 | sources."chalk-1.1.3" |
|
2987 | sources."chalk-1.1.3" | |
2970 | (sources."cli-1.0.1" // { |
|
2988 | (sources."cli-1.0.1" // { | |
2971 | dependencies = [ |
|
2989 | dependencies = [ | |
2972 |
sources."glob-7.1. |
|
2990 | sources."glob-7.1.3" | |
2973 | sources."minimatch-3.0.4" |
|
2991 | sources."minimatch-3.0.4" | |
2974 | ]; |
|
2992 | ]; | |
2975 | }) |
|
2993 | }) | |
2976 | sources."clipboard-2.0.1" |
|
2994 | sources."clipboard-2.0.1" | |
2977 | sources."clone-1.0.4" |
|
2995 | sources."clone-1.0.4" | |
2978 | sources."co-4.6.0" |
|
2996 | sources."co-4.6.0" | |
2979 | sources."code-point-at-1.1.0" |
|
2997 | sources."code-point-at-1.1.0" | |
2980 | sources."coffee-script-1.3.3" |
|
2998 | sources."coffee-script-1.3.3" | |
2981 | sources."colors-0.6.2" |
|
2999 | sources."colors-0.6.2" | |
2982 |
sources."combined-stream-1.0. |
|
3000 | sources."combined-stream-1.0.7" | |
2983 | sources."command-line-args-3.0.5" |
|
3001 | sources."command-line-args-3.0.5" | |
2984 | sources."command-line-usage-3.0.8" |
|
3002 | sources."command-line-usage-3.0.8" | |
2985 | sources."concat-map-0.0.1" |
|
3003 | sources."concat-map-0.0.1" | |
2986 | sources."concat-stream-1.6.2" |
|
3004 | sources."concat-stream-1.6.2" | |
2987 |
sources."config-chain-1.1.1 |
|
3005 | sources."config-chain-1.1.12" | |
2988 | sources."console-browserify-1.1.0" |
|
3006 | sources."console-browserify-1.1.0" | |
2989 | sources."console-control-strings-1.1.0" |
|
3007 | sources."console-control-strings-1.1.0" | |
2990 | sources."core-js-2.5.7" |
|
3008 | sources."core-js-2.5.7" | |
2991 | sources."core-util-is-1.0.2" |
|
3009 | sources."core-util-is-1.0.2" | |
2992 | sources."crisper-2.1.1" |
|
3010 | sources."crisper-2.1.1" | |
2993 | sources."cryptiles-2.0.5" |
|
3011 | sources."cryptiles-2.0.5" | |
2994 | sources."cycle-1.0.3" |
|
3012 | sources."cycle-1.0.3" | |
2995 | (sources."dashdash-1.14.1" // { |
|
3013 | (sources."dashdash-1.14.1" // { | |
2996 | dependencies = [ |
|
3014 | dependencies = [ | |
2997 | sources."assert-plus-1.0.0" |
|
3015 | sources."assert-plus-1.0.0" | |
2998 | ]; |
|
3016 | ]; | |
2999 | }) |
|
3017 | }) | |
3000 | sources."date-now-0.1.4" |
|
3018 | sources."date-now-0.1.4" | |
3001 | sources."dateformat-1.0.2-1.2.3" |
|
3019 | sources."dateformat-1.0.2-1.2.3" | |
3002 | sources."debug-0.7.4" |
|
3020 | sources."debug-0.7.4" | |
3003 | sources."deep-extend-0.4.2" |
|
3021 | sources."deep-extend-0.4.2" | |
3004 | sources."deep-is-0.1.3" |
|
3022 | sources."deep-is-0.1.3" | |
3005 | sources."delayed-stream-1.0.0" |
|
3023 | sources."delayed-stream-1.0.0" | |
3006 | sources."delegate-3.2.0" |
|
3024 | sources."delegate-3.2.0" | |
3007 | sources."delegates-1.0.0" |
|
3025 | sources."delegates-1.0.0" | |
3008 | sources."doctrine-0.7.2" |
|
3026 | sources."doctrine-0.7.2" | |
3009 | (sources."dom-serializer-0.1.0" // { |
|
3027 | (sources."dom-serializer-0.1.0" // { | |
3010 | dependencies = [ |
|
3028 | dependencies = [ | |
3011 | sources."domelementtype-1.1.3" |
|
3029 | sources."domelementtype-1.1.3" | |
3012 | sources."entities-1.1.1" |
|
3030 | sources."entities-1.1.1" | |
3013 | ]; |
|
3031 | ]; | |
3014 | }) |
|
3032 | }) | |
3015 | sources."dom5-1.3.6" |
|
3033 | sources."dom5-1.3.6" | |
3016 | sources."domelementtype-1.3.0" |
|
3034 | sources."domelementtype-1.3.0" | |
3017 | sources."domhandler-2.3.0" |
|
3035 | sources."domhandler-2.3.0" | |
3018 | sources."domutils-1.5.1" |
|
3036 | sources."domutils-1.5.1" | |
3019 | sources."ecc-jsbn-0.1.2" |
|
3037 | sources."ecc-jsbn-0.1.2" | |
3020 | sources."entities-1.0.0" |
|
3038 | sources."entities-1.0.0" | |
3021 | sources."errno-0.1.7" |
|
3039 | sources."errno-0.1.7" | |
3022 | sources."es6-promise-2.3.0" |
|
3040 | sources."es6-promise-2.3.0" | |
3023 | sources."escape-string-regexp-1.0.5" |
|
3041 | sources."escape-string-regexp-1.0.5" | |
3024 | (sources."escodegen-1.11.0" // { |
|
3042 | (sources."escodegen-1.11.0" // { | |
3025 | dependencies = [ |
|
3043 | dependencies = [ | |
3026 | sources."esprima-3.1.3" |
|
3044 | sources."esprima-3.1.3" | |
3027 | sources."estraverse-4.2.0" |
|
3045 | sources."estraverse-4.2.0" | |
3028 | sources."esutils-2.0.2" |
|
3046 | sources."esutils-2.0.2" | |
3029 | sources."source-map-0.6.1" |
|
3047 | sources."source-map-0.6.1" | |
3030 | ]; |
|
3048 | ]; | |
3031 | }) |
|
3049 | }) | |
3032 | (sources."espree-3.5.4" // { |
|
3050 | (sources."espree-3.5.4" // { | |
3033 | dependencies = [ |
|
3051 | dependencies = [ | |
3034 |
sources."acorn-5.7. |
|
3052 | sources."acorn-5.7.3" | |
3035 | ]; |
|
3053 | ]; | |
3036 | }) |
|
3054 | }) | |
3037 | sources."esprima-1.0.4" |
|
3055 | sources."esprima-1.0.4" | |
3038 | sources."estraverse-3.1.0" |
|
3056 | sources."estraverse-3.1.0" | |
3039 | sources."esutils-1.1.6" |
|
3057 | sources."esutils-1.1.6" | |
3040 | sources."eventemitter2-0.4.14" |
|
3058 | sources."eventemitter2-0.4.14" | |
3041 | sources."exit-0.1.2" |
|
3059 | sources."exit-0.1.2" | |
3042 | sources."extend-3.0.2" |
|
3060 | sources."extend-3.0.2" | |
3043 | (sources."extract-zip-1.6.7" // { |
|
3061 | (sources."extract-zip-1.6.7" // { | |
3044 | dependencies = [ |
|
3062 | dependencies = [ | |
3045 | sources."debug-2.6.9" |
|
3063 | sources."debug-2.6.9" | |
3046 | ]; |
|
3064 | ]; | |
3047 | }) |
|
3065 | }) | |
3048 | sources."extsprintf-1.3.0" |
|
3066 | sources."extsprintf-1.3.0" | |
3049 | sources."eyes-0.1.8" |
|
3067 | sources."eyes-0.1.8" | |
3050 | sources."fast-levenshtein-2.0.6" |
|
3068 | sources."fast-levenshtein-2.0.6" | |
3051 | sources."favico.js-0.3.10" |
|
3069 | sources."favico.js-0.3.10" | |
3052 | sources."faye-websocket-0.4.4" |
|
3070 | sources."faye-websocket-0.4.4" | |
3053 | sources."fd-slicer-1.0.1" |
|
3071 | sources."fd-slicer-1.0.1" | |
3054 | sources."feature-detect-es6-1.5.0" |
|
3072 | sources."feature-detect-es6-1.5.0" | |
3055 | sources."file-sync-cmp-0.1.1" |
|
3073 | sources."file-sync-cmp-0.1.1" | |
3056 | sources."find-replace-1.0.3" |
|
3074 | sources."find-replace-1.0.3" | |
3057 | sources."findit-2.0.0" |
|
3075 | sources."findit-2.0.0" | |
3058 | (sources."findup-sync-0.1.3" // { |
|
3076 | (sources."findup-sync-0.1.3" // { | |
3059 | dependencies = [ |
|
3077 | dependencies = [ | |
3060 | sources."glob-3.2.11" |
|
3078 | sources."glob-3.2.11" | |
3061 | sources."lodash-2.4.2" |
|
3079 | sources."lodash-2.4.2" | |
3062 | sources."minimatch-0.3.0" |
|
3080 | sources."minimatch-0.3.0" | |
3063 | ]; |
|
3081 | ]; | |
3064 | }) |
|
3082 | }) | |
3065 | sources."foreachasync-3.0.0" |
|
3083 | sources."foreachasync-3.0.0" | |
3066 | sources."forever-agent-0.6.1" |
|
3084 | sources."forever-agent-0.6.1" | |
3067 | sources."form-data-2.1.4" |
|
3085 | sources."form-data-2.1.4" | |
3068 | (sources."fs-extra-0.6.4" // { |
|
3086 | (sources."fs-extra-0.6.4" // { | |
3069 | dependencies = [ |
|
3087 | dependencies = [ | |
3070 | sources."mkdirp-0.3.5" |
|
3088 | sources."mkdirp-0.3.5" | |
3071 | ]; |
|
3089 | ]; | |
3072 | }) |
|
3090 | }) | |
3073 | (sources."fs.extra-1.3.2" // { |
|
3091 | (sources."fs.extra-1.3.2" // { | |
3074 | dependencies = [ |
|
3092 | dependencies = [ | |
3075 | sources."mkdirp-0.3.5" |
|
3093 | sources."mkdirp-0.3.5" | |
3076 | ]; |
|
3094 | ]; | |
3077 | }) |
|
3095 | }) | |
3078 | sources."fs.realpath-1.0.0" |
|
3096 | sources."fs.realpath-1.0.0" | |
3079 | sources."gauge-2.7.4" |
|
3097 | sources."gauge-2.7.4" | |
3080 | sources."gaze-0.5.2" |
|
3098 | sources."gaze-0.5.2" | |
3081 | sources."getobject-0.1.0" |
|
3099 | sources."getobject-0.1.0" | |
3082 | (sources."getpass-0.1.7" // { |
|
3100 | (sources."getpass-0.1.7" // { | |
3083 | dependencies = [ |
|
3101 | dependencies = [ | |
3084 | sources."assert-plus-1.0.0" |
|
3102 | sources."assert-plus-1.0.0" | |
3085 | ]; |
|
3103 | ]; | |
3086 | }) |
|
3104 | }) | |
3087 | (sources."glob-3.1.21" // { |
|
3105 | (sources."glob-3.1.21" // { | |
3088 | dependencies = [ |
|
3106 | dependencies = [ | |
3089 | sources."inherits-1.0.2" |
|
3107 | sources."inherits-1.0.2" | |
3090 | ]; |
|
3108 | ]; | |
3091 | }) |
|
3109 | }) | |
3092 | (sources."globule-0.1.0" // { |
|
3110 | (sources."globule-0.1.0" // { | |
3093 | dependencies = [ |
|
3111 | dependencies = [ | |
3094 | sources."lodash-1.0.2" |
|
3112 | sources."lodash-1.0.2" | |
3095 | ]; |
|
3113 | ]; | |
3096 | }) |
|
3114 | }) | |
3097 | sources."good-listener-1.2.2" |
|
3115 | sources."good-listener-1.2.2" | |
3098 | sources."graceful-fs-1.2.3" |
|
3116 | sources."graceful-fs-1.2.3" | |
3099 | sources."grunt-0.4.5" |
|
3117 | sources."grunt-0.4.5" | |
3100 | (sources."grunt-contrib-concat-0.5.1" // { |
|
3118 | (sources."grunt-contrib-concat-0.5.1" // { | |
3101 | dependencies = [ |
|
3119 | dependencies = [ | |
3102 | sources."ansi-regex-0.2.1" |
|
3120 | sources."ansi-regex-0.2.1" | |
3103 | sources."ansi-styles-1.1.0" |
|
3121 | sources."ansi-styles-1.1.0" | |
3104 | sources."chalk-0.5.1" |
|
3122 | sources."chalk-0.5.1" | |
3105 | sources."has-ansi-0.1.0" |
|
3123 | sources."has-ansi-0.1.0" | |
3106 | sources."strip-ansi-0.3.0" |
|
3124 | sources."strip-ansi-0.3.0" | |
3107 | sources."supports-color-0.2.0" |
|
3125 | sources."supports-color-0.2.0" | |
3108 | ]; |
|
3126 | ]; | |
3109 | }) |
|
3127 | }) | |
3110 | sources."grunt-contrib-copy-1.0.0" |
|
3128 | sources."grunt-contrib-copy-1.0.0" | |
3111 | sources."grunt-contrib-jshint-0.12.0" |
|
3129 | sources."grunt-contrib-jshint-0.12.0" | |
3112 | (sources."grunt-contrib-less-1.4.1" // { |
|
3130 | (sources."grunt-contrib-less-1.4.1" // { | |
3113 | dependencies = [ |
|
3131 | dependencies = [ | |
3114 | sources."async-2.6.1" |
|
3132 | sources."async-2.6.1" | |
3115 |
sources."lodash-4.17.1 |
|
3133 | sources."lodash-4.17.11" | |
3116 | ]; |
|
3134 | ]; | |
3117 | }) |
|
3135 | }) | |
3118 | (sources."grunt-contrib-watch-0.6.1" // { |
|
3136 | (sources."grunt-contrib-watch-0.6.1" // { | |
3119 | dependencies = [ |
|
3137 | dependencies = [ | |
3120 | sources."async-0.2.10" |
|
3138 | sources."async-0.2.10" | |
3121 | sources."lodash-2.4.2" |
|
3139 | sources."lodash-2.4.2" | |
3122 | ]; |
|
3140 | ]; | |
3123 | }) |
|
3141 | }) | |
3124 | sources."grunt-crisper-1.0.1" |
|
3142 | sources."grunt-crisper-1.0.1" | |
3125 | (sources."grunt-legacy-log-0.1.3" // { |
|
3143 | (sources."grunt-legacy-log-0.1.3" // { | |
3126 | dependencies = [ |
|
3144 | dependencies = [ | |
3127 | sources."lodash-2.4.2" |
|
3145 | sources."lodash-2.4.2" | |
3128 | sources."underscore.string-2.3.3" |
|
3146 | sources."underscore.string-2.3.3" | |
3129 | ]; |
|
3147 | ]; | |
3130 | }) |
|
3148 | }) | |
3131 | (sources."grunt-legacy-log-utils-0.1.1" // { |
|
3149 | (sources."grunt-legacy-log-utils-0.1.1" // { | |
3132 | dependencies = [ |
|
3150 | dependencies = [ | |
3133 | sources."lodash-2.4.2" |
|
3151 | sources."lodash-2.4.2" | |
3134 | sources."underscore.string-2.3.3" |
|
3152 | sources."underscore.string-2.3.3" | |
3135 | ]; |
|
3153 | ]; | |
3136 | }) |
|
3154 | }) | |
3137 | sources."grunt-legacy-util-0.2.0" |
|
3155 | sources."grunt-legacy-util-0.2.0" | |
3138 | (sources."grunt-vulcanize-1.0.0" // { |
|
3156 | (sources."grunt-vulcanize-1.0.0" // { | |
3139 | dependencies = [ |
|
3157 | dependencies = [ | |
3140 | sources."crisper-1.2.0" |
|
3158 | sources."crisper-1.2.0" | |
3141 | sources."nopt-3.0.6" |
|
3159 | sources."nopt-3.0.6" | |
3142 | ]; |
|
3160 | ]; | |
3143 | }) |
|
3161 | }) | |
3144 | sources."har-schema-1.0.5" |
|
3162 | sources."har-schema-1.0.5" | |
3145 | sources."har-validator-4.2.1" |
|
3163 | sources."har-validator-4.2.1" | |
3146 | sources."has-ansi-2.0.0" |
|
3164 | sources."has-ansi-2.0.0" | |
3147 | sources."has-unicode-2.0.1" |
|
3165 | sources."has-unicode-2.0.1" | |
3148 | sources."hasha-2.2.0" |
|
3166 | sources."hasha-2.2.0" | |
3149 | sources."hawk-3.1.3" |
|
3167 | sources."hawk-3.1.3" | |
3150 | sources."hoek-2.16.3" |
|
3168 | sources."hoek-2.16.3" | |
3151 | sources."hooker-0.2.3" |
|
3169 | sources."hooker-0.2.3" | |
3152 | sources."hosted-git-info-2.7.1" |
|
3170 | sources."hosted-git-info-2.7.1" | |
3153 | (sources."htmlparser2-3.8.3" // { |
|
3171 | (sources."htmlparser2-3.8.3" // { | |
3154 | dependencies = [ |
|
3172 | dependencies = [ | |
3155 | sources."readable-stream-1.1.14" |
|
3173 | sources."readable-stream-1.1.14" | |
3156 | sources."string_decoder-0.10.31" |
|
3174 | sources."string_decoder-0.10.31" | |
3157 | ]; |
|
3175 | ]; | |
3158 | }) |
|
3176 | }) | |
3159 | sources."http-signature-1.1.1" |
|
3177 | sources."http-signature-1.1.1" | |
3160 | (sources."hydrolysis-1.25.0" // { |
|
3178 | (sources."hydrolysis-1.25.0" // { | |
3161 | dependencies = [ |
|
3179 | dependencies = [ | |
3162 | sources."dom5-1.1.0" |
|
3180 | sources."dom5-1.1.0" | |
3163 | ]; |
|
3181 | ]; | |
3164 | }) |
|
3182 | }) | |
3165 | sources."iconv-lite-0.2.11" |
|
3183 | sources."iconv-lite-0.2.11" | |
3166 | sources."image-size-0.5.5" |
|
3184 | sources."image-size-0.5.5" | |
3167 | sources."inflight-1.0.6" |
|
3185 | sources."inflight-1.0.6" | |
3168 | sources."inherits-2.0.3" |
|
3186 | sources."inherits-2.0.3" | |
3169 | sources."ini-1.3.5" |
|
3187 | sources."ini-1.3.5" | |
3170 | sources."is-builtin-module-1.0.0" |
|
3188 | sources."is-builtin-module-1.0.0" | |
3171 | sources."is-fullwidth-code-point-1.0.0" |
|
3189 | sources."is-fullwidth-code-point-1.0.0" | |
3172 | sources."is-stream-1.1.0" |
|
3190 | sources."is-stream-1.1.0" | |
3173 | sources."is-typedarray-1.0.0" |
|
3191 | sources."is-typedarray-1.0.0" | |
3174 | sources."isarray-0.0.1" |
|
3192 | sources."isarray-0.0.1" | |
3175 | sources."isexe-2.0.0" |
|
3193 | sources."isexe-2.0.0" | |
3176 | sources."isstream-0.1.2" |
|
3194 | sources."isstream-0.1.2" | |
3177 | sources."jquery-1.11.3" |
|
3195 | sources."jquery-1.11.3" | |
3178 | sources."js-yaml-2.0.5" |
|
3196 | sources."js-yaml-2.0.5" | |
3179 | sources."jsbn-0.1.1" |
|
3197 | sources."jsbn-0.1.1" | |
3180 | (sources."jshint-2.9.6" // { |
|
3198 | (sources."jshint-2.9.6" // { | |
3181 | dependencies = [ |
|
3199 | dependencies = [ | |
3182 |
sources."lodash-4.17.1 |
|
3200 | sources."lodash-4.17.11" | |
3183 | sources."minimatch-3.0.4" |
|
3201 | sources."minimatch-3.0.4" | |
3184 | ]; |
|
3202 | ]; | |
3185 | }) |
|
3203 | }) | |
3186 | sources."json-schema-0.2.3" |
|
3204 | sources."json-schema-0.2.3" | |
3187 | sources."json-stable-stringify-1.0.1" |
|
3205 | sources."json-stable-stringify-1.0.1" | |
3188 | sources."json-stringify-safe-5.0.1" |
|
3206 | sources."json-stringify-safe-5.0.1" | |
3189 | sources."jsonfile-1.0.1" |
|
3207 | sources."jsonfile-1.0.1" | |
3190 | sources."jsonify-0.0.0" |
|
3208 | sources."jsonify-0.0.0" | |
3191 | (sources."jsprim-1.4.1" // { |
|
3209 | (sources."jsprim-1.4.1" // { | |
3192 | dependencies = [ |
|
3210 | dependencies = [ | |
3193 | sources."assert-plus-1.0.0" |
|
3211 | sources."assert-plus-1.0.0" | |
3194 | ]; |
|
3212 | ]; | |
3195 | }) |
|
3213 | }) | |
3196 | sources."kew-0.7.0" |
|
3214 | sources."kew-0.7.0" | |
3197 | (sources."klaw-1.3.1" // { |
|
3215 | (sources."klaw-1.3.1" // { | |
3198 | dependencies = [ |
|
3216 | dependencies = [ | |
3199 | sources."graceful-fs-4.1.11" |
|
3217 | sources."graceful-fs-4.1.11" | |
3200 | ]; |
|
3218 | ]; | |
3201 | }) |
|
3219 | }) | |
3202 | (sources."less-2.7.3" // { |
|
3220 | (sources."less-2.7.3" // { | |
3203 | dependencies = [ |
|
3221 | dependencies = [ | |
3204 | sources."graceful-fs-4.1.11" |
|
3222 | sources."graceful-fs-4.1.11" | |
3205 | sources."source-map-0.5.7" |
|
3223 | sources."source-map-0.5.7" | |
3206 | ]; |
|
3224 | ]; | |
3207 | }) |
|
3225 | }) | |
3208 | sources."levn-0.3.0" |
|
3226 | sources."levn-0.3.0" | |
3209 | sources."lodash-0.9.2" |
|
3227 | sources."lodash-0.9.2" | |
3210 | sources."lru-cache-2.7.3" |
|
3228 | sources."lru-cache-2.7.3" | |
3211 | sources."mime-1.6.0" |
|
3229 | sources."mime-1.6.0" | |
3212 |
sources."mime-db-1.3 |
|
3230 | sources."mime-db-1.36.0" | |
3213 |
sources."mime-types-2.1. |
|
3231 | sources."mime-types-2.1.20" | |
3214 | sources."minimatch-0.2.14" |
|
3232 | sources."minimatch-0.2.14" | |
3215 | sources."minimist-0.0.8" |
|
3233 | sources."minimist-0.0.8" | |
3216 |
sources."minipass-2.3. |
|
3234 | sources."minipass-2.3.4" | |
3217 |
sources."minizlib-1.1. |
|
3235 | sources."minizlib-1.1.1" | |
3218 | sources."mkdirp-0.5.1" |
|
3236 | sources."mkdirp-0.5.1" | |
3219 | sources."moment-2.22.2" |
|
3237 | sources."moment-2.22.2" | |
3220 | sources."mousetrap-1.6.2" |
|
3238 | sources."mousetrap-1.6.2" | |
3221 | sources."ms-2.0.0" |
|
3239 | sources."ms-2.0.0" | |
3222 | sources."ncp-0.4.2" |
|
3240 | sources."ncp-0.4.2" | |
3223 | sources."nijs-0.0.25" |
|
3241 | sources."nijs-0.0.25" | |
3224 | sources."node2nix-1.6.0" |
|
3242 | sources."node2nix-1.6.0" | |
3225 | sources."nopt-1.0.10" |
|
3243 | sources."nopt-1.0.10" | |
3226 | (sources."noptify-0.0.3" // { |
|
3244 | (sources."noptify-0.0.3" // { | |
3227 | dependencies = [ |
|
3245 | dependencies = [ | |
3228 | sources."nopt-2.0.0" |
|
3246 | sources."nopt-2.0.0" | |
3229 | ]; |
|
3247 | ]; | |
3230 | }) |
|
3248 | }) | |
3231 | sources."normalize-package-data-2.4.0" |
|
3249 | sources."normalize-package-data-2.4.0" | |
3232 | sources."npm-package-arg-6.1.0" |
|
3250 | sources."npm-package-arg-6.1.0" | |
3233 | (sources."npm-registry-client-8.5.1" // { |
|
3251 | (sources."npm-registry-client-8.5.1" // { | |
3234 | dependencies = [ |
|
3252 | dependencies = [ | |
3235 | sources."graceful-fs-4.1.11" |
|
3253 | sources."graceful-fs-4.1.11" | |
3236 | ]; |
|
3254 | ]; | |
3237 | }) |
|
3255 | }) | |
3238 | (sources."npmconf-2.1.3" // { |
|
3256 | (sources."npmconf-2.1.3" // { | |
3239 | dependencies = [ |
|
3257 | dependencies = [ | |
3240 | sources."nopt-3.0.6" |
|
3258 | sources."nopt-3.0.6" | |
3241 | sources."once-1.3.3" |
|
3259 | sources."once-1.3.3" | |
3242 | sources."semver-4.3.6" |
|
3260 | sources."semver-4.3.6" | |
3243 | ]; |
|
3261 | ]; | |
3244 | }) |
|
3262 | }) | |
3245 | sources."npmlog-4.1.2" |
|
3263 | sources."npmlog-4.1.2" | |
3246 | sources."number-is-nan-1.0.1" |
|
3264 | sources."number-is-nan-1.0.1" | |
3247 | sources."oauth-sign-0.8.2" |
|
3265 | sources."oauth-sign-0.8.2" | |
3248 | sources."object-assign-4.1.1" |
|
3266 | sources."object-assign-4.1.1" | |
3249 | sources."once-1.4.0" |
|
3267 | sources."once-1.4.0" | |
3250 | sources."optionator-0.8.2" |
|
3268 | sources."optionator-0.8.2" | |
3251 | sources."optparse-1.0.5" |
|
3269 | sources."optparse-1.0.5" | |
3252 | sources."os-homedir-1.0.2" |
|
3270 | sources."os-homedir-1.0.2" | |
3253 | sources."os-tmpdir-1.0.2" |
|
3271 | sources."os-tmpdir-1.0.2" | |
3254 | sources."osenv-0.1.5" |
|
3272 | sources."osenv-0.1.5" | |
3255 | sources."parse5-1.5.1" |
|
3273 | sources."parse5-1.5.1" | |
3256 | sources."path-is-absolute-1.0.1" |
|
3274 | sources."path-is-absolute-1.0.1" | |
3257 | sources."path-posix-1.0.0" |
|
3275 | sources."path-posix-1.0.0" | |
3258 | sources."pend-1.2.0" |
|
3276 | sources."pend-1.2.0" | |
3259 | sources."performance-now-0.2.0" |
|
3277 | sources."performance-now-0.2.0" | |
3260 | sources."phantom-4.0.12" |
|
3278 | sources."phantom-4.0.12" | |
3261 | (sources."phantomjs-prebuilt-2.1.16" // { |
|
3279 | (sources."phantomjs-prebuilt-2.1.16" // { | |
3262 | dependencies = [ |
|
3280 | dependencies = [ | |
3263 |
sources."es6-promise-4.2. |
|
3281 | sources."es6-promise-4.2.5" | |
3264 | sources."fs-extra-1.0.0" |
|
3282 | sources."fs-extra-1.0.0" | |
3265 | sources."graceful-fs-4.1.11" |
|
3283 | sources."graceful-fs-4.1.11" | |
3266 | sources."jsonfile-2.4.0" |
|
3284 | sources."jsonfile-2.4.0" | |
3267 | sources."which-1.3.1" |
|
3285 | sources."which-1.3.1" | |
3268 | ]; |
|
3286 | ]; | |
3269 | }) |
|
3287 | }) | |
3270 | sources."pinkie-2.0.4" |
|
3288 | sources."pinkie-2.0.4" | |
3271 | sources."pinkie-promise-2.0.1" |
|
3289 | sources."pinkie-promise-2.0.1" | |
3272 | sources."prelude-ls-1.1.2" |
|
3290 | sources."prelude-ls-1.1.2" | |
3273 | sources."process-nextick-args-2.0.0" |
|
3291 | sources."process-nextick-args-2.0.0" | |
3274 | sources."progress-1.1.8" |
|
3292 | sources."progress-1.1.8" | |
3275 | sources."promise-7.3.1" |
|
3293 | sources."promise-7.3.1" | |
3276 | sources."proto-list-1.2.4" |
|
3294 | sources."proto-list-1.2.4" | |
3277 | sources."prr-1.0.1" |
|
3295 | sources."prr-1.0.1" | |
3278 | sources."punycode-1.4.1" |
|
3296 | sources."punycode-1.4.1" | |
3279 | sources."qrious-4.0.2" |
|
3297 | sources."qrious-4.0.2" | |
3280 | sources."qs-6.4.0" |
|
3298 | sources."qs-6.4.0" | |
3281 | (sources."readable-stream-2.3.6" // { |
|
3299 | (sources."readable-stream-2.3.6" // { | |
3282 | dependencies = [ |
|
3300 | dependencies = [ | |
3283 | sources."isarray-1.0.0" |
|
3301 | sources."isarray-1.0.0" | |
3284 | ]; |
|
3302 | ]; | |
3285 | }) |
|
3303 | }) | |
3286 | sources."reduce-flatten-1.0.1" |
|
3304 | sources."reduce-flatten-1.0.1" | |
3287 | sources."regenerator-runtime-0.10.5" |
|
3305 | sources."regenerator-runtime-0.10.5" | |
3288 | sources."request-2.81.0" |
|
3306 | sources."request-2.81.0" | |
3289 | sources."request-progress-2.0.1" |
|
3307 | sources."request-progress-2.0.1" | |
3290 | sources."retry-0.10.1" |
|
3308 | sources."retry-0.10.1" | |
3291 | sources."rimraf-2.2.8" |
|
3309 | sources."rimraf-2.2.8" | |
3292 | sources."safe-buffer-5.1.2" |
|
3310 | sources."safe-buffer-5.1.2" | |
3293 | sources."safer-buffer-2.1.2" |
|
3311 | sources."safer-buffer-2.1.2" | |
3294 | sources."select-1.1.2" |
|
3312 | sources."select-1.1.2" | |
3295 |
sources."semver-5.5. |
|
3313 | sources."semver-5.5.1" | |
3296 | sources."set-blocking-2.0.0" |
|
3314 | sources."set-blocking-2.0.0" | |
3297 | sources."shelljs-0.3.0" |
|
3315 | sources."shelljs-0.3.0" | |
3298 | sources."sigmund-1.0.1" |
|
3316 | sources."sigmund-1.0.1" | |
3299 | sources."signal-exit-3.0.2" |
|
3317 | sources."signal-exit-3.0.2" | |
3300 | sources."slasp-0.0.4" |
|
3318 | sources."slasp-0.0.4" | |
3301 | sources."slide-1.1.6" |
|
3319 | sources."slide-1.1.6" | |
3302 | sources."sntp-1.0.9" |
|
3320 | sources."sntp-1.0.9" | |
3303 | sources."source-map-0.3.0" |
|
3321 | sources."source-map-0.3.0" | |
3304 |
sources."spdx-correct-3.0. |
|
3322 | sources."spdx-correct-3.0.2" | |
3305 |
sources."spdx-exceptions-2. |
|
3323 | sources."spdx-exceptions-2.2.0" | |
3306 | sources."spdx-expression-parse-3.0.0" |
|
3324 | sources."spdx-expression-parse-3.0.0" | |
3307 |
sources."spdx-license-ids-3.0. |
|
3325 | sources."spdx-license-ids-3.0.1" | |
3308 | sources."split-1.0.1" |
|
3326 | sources."split-1.0.1" | |
3309 |
(sources."sshpk-1.1 |
|
3327 | (sources."sshpk-1.15.1" // { | |
3310 | dependencies = [ |
|
3328 | dependencies = [ | |
3311 | sources."assert-plus-1.0.0" |
|
3329 | sources."assert-plus-1.0.0" | |
3312 | ]; |
|
3330 | ]; | |
3313 | }) |
|
3331 | }) | |
3314 | sources."ssri-5.3.0" |
|
3332 | sources."ssri-5.3.0" | |
3315 | sources."stack-trace-0.0.10" |
|
3333 | sources."stack-trace-0.0.10" | |
|
3334 | sources."sticky-sidebar-3.3.1" | |||
3316 | sources."string-width-1.0.2" |
|
3335 | sources."string-width-1.0.2" | |
3317 | sources."string_decoder-1.1.1" |
|
3336 | sources."string_decoder-1.1.1" | |
3318 | sources."stringstream-0.0.6" |
|
3337 | sources."stringstream-0.0.6" | |
3319 | sources."strip-ansi-3.0.1" |
|
3338 | sources."strip-ansi-3.0.1" | |
3320 | sources."strip-json-comments-1.0.4" |
|
3339 | sources."strip-json-comments-1.0.4" | |
3321 | sources."supports-color-2.0.0" |
|
3340 | sources."supports-color-2.0.0" | |
3322 | sources."table-layout-0.3.0" |
|
3341 | sources."table-layout-0.3.0" | |
3323 | sources."tar-3.1.15" |
|
3342 | sources."tar-3.1.15" | |
3324 | sources."temp-0.8.3" |
|
3343 | sources."temp-0.8.3" | |
3325 | sources."test-value-2.1.0" |
|
3344 | sources."test-value-2.1.0" | |
3326 | sources."throttleit-1.0.0" |
|
3345 | sources."throttleit-1.0.0" | |
3327 | sources."through-2.3.8" |
|
3346 | sources."through-2.3.8" | |
3328 | sources."tiny-emitter-2.0.2" |
|
3347 | sources."tiny-emitter-2.0.2" | |
3329 | (sources."tiny-lr-fork-0.0.5" // { |
|
3348 | (sources."tiny-lr-fork-0.0.5" // { | |
3330 | dependencies = [ |
|
3349 | dependencies = [ | |
3331 | sources."qs-0.5.6" |
|
3350 | sources."qs-0.5.6" | |
3332 | ]; |
|
3351 | ]; | |
3333 | }) |
|
3352 | }) | |
3334 | sources."tough-cookie-2.3.4" |
|
3353 | sources."tough-cookie-2.3.4" | |
3335 | sources."tunnel-agent-0.6.0" |
|
3354 | sources."tunnel-agent-0.6.0" | |
3336 | sources."tweetnacl-0.14.5" |
|
3355 | sources."tweetnacl-0.14.5" | |
3337 | sources."type-check-0.3.2" |
|
3356 | sources."type-check-0.3.2" | |
3338 | sources."typedarray-0.0.6" |
|
3357 | sources."typedarray-0.0.6" | |
3339 | sources."typical-2.6.1" |
|
3358 | sources."typical-2.6.1" | |
3340 | sources."uid-number-0.0.5" |
|
3359 | sources."uid-number-0.0.5" | |
3341 | sources."underscore-1.7.0" |
|
3360 | sources."underscore-1.7.0" | |
3342 | sources."underscore.string-2.2.1" |
|
3361 | sources."underscore.string-2.2.1" | |
3343 | sources."unicode-5.2.0-0.7.5" |
|
3362 | sources."unicode-5.2.0-0.7.5" | |
3344 | sources."util-deprecate-1.0.2" |
|
3363 | sources."util-deprecate-1.0.2" | |
3345 | sources."uuid-3.3.2" |
|
3364 | sources."uuid-3.3.2" | |
3346 |
sources."validate-npm-package-license-3.0. |
|
3365 | sources."validate-npm-package-license-3.0.4" | |
3347 | sources."validate-npm-package-name-3.0.0" |
|
3366 | sources."validate-npm-package-name-3.0.0" | |
3348 | (sources."verror-1.10.0" // { |
|
3367 | (sources."verror-1.10.0" // { | |
3349 | dependencies = [ |
|
3368 | dependencies = [ | |
3350 | sources."assert-plus-1.0.0" |
|
3369 | sources."assert-plus-1.0.0" | |
3351 | ]; |
|
3370 | ]; | |
3352 | }) |
|
3371 | }) | |
3353 | (sources."vulcanize-1.16.0" // { |
|
3372 | (sources."vulcanize-1.16.0" // { | |
3354 | dependencies = [ |
|
3373 | dependencies = [ | |
3355 | sources."nopt-3.0.6" |
|
3374 | sources."nopt-3.0.6" | |
3356 | ]; |
|
3375 | ]; | |
3357 | }) |
|
3376 | }) | |
3358 | sources."walk-2.3.14" |
|
3377 | sources."walk-2.3.14" | |
|
3378 | sources."waypoints-4.0.1" | |||
3359 | sources."which-1.0.9" |
|
3379 | sources."which-1.0.9" | |
3360 | sources."wide-align-1.1.3" |
|
3380 | sources."wide-align-1.1.3" | |
3361 |
(sources."winston-2.4. |
|
3381 | (sources."winston-2.4.4" // { | |
3362 | dependencies = [ |
|
3382 | dependencies = [ | |
3363 | sources."async-1.0.0" |
|
3383 | sources."async-1.0.0" | |
3364 | sources."colors-1.0.3" |
|
3384 | sources."colors-1.0.3" | |
3365 | ]; |
|
3385 | ]; | |
3366 | }) |
|
3386 | }) | |
3367 | sources."wordwrap-1.0.0" |
|
3387 | sources."wordwrap-1.0.0" | |
3368 | sources."wordwrapjs-2.0.0" |
|
3388 | sources."wordwrapjs-2.0.0" | |
3369 | sources."wrappy-1.0.2" |
|
3389 | sources."wrappy-1.0.2" | |
3370 | sources."yallist-3.0.2" |
|
3390 | sources."yallist-3.0.2" | |
3371 | sources."yauzl-2.4.1" |
|
3391 | sources."yauzl-2.4.1" | |
3372 | ]; |
|
3392 | ]; | |
3373 | buildInputs = globalBuildInputs; |
|
3393 | buildInputs = globalBuildInputs; | |
3374 | meta = { |
|
3394 | meta = { | |
3375 | description = "RhodeCode JS packaged"; |
|
3395 | description = "RhodeCode JS packaged"; | |
3376 | license = "SEE LICENSE IN LICENSE.txt"; |
|
3396 | license = "SEE LICENSE IN LICENSE.txt"; | |
3377 | }; |
|
3397 | }; | |
3378 | production = false; |
|
3398 | production = false; | |
3379 | bypassCache = false; |
|
3399 | bypassCache = false; | |
3380 | }; |
|
3400 | }; | |
3381 | in |
|
3401 | in | |
3382 | { |
|
3402 | { | |
3383 | tarball = nodeEnv.buildNodeSourceDist args; |
|
3403 | tarball = nodeEnv.buildNodeSourceDist args; | |
3384 | package = nodeEnv.buildNodePackage args; |
|
3404 | package = nodeEnv.buildNodePackage args; | |
3385 | shell = nodeEnv.buildNodeShell args; |
|
3405 | shell = nodeEnv.buildNodeShell args; | |
3386 | } No newline at end of file |
|
3406 | } |
@@ -1,320 +1,320 b'' | |||||
1 | # -*- coding: utf-8 -*- |
|
1 | # -*- coding: utf-8 -*- | |
2 |
|
2 | |||
3 | # Copyright (C) 2010-2018 RhodeCode GmbH |
|
3 | # Copyright (C) 2010-2018 RhodeCode GmbH | |
4 | # |
|
4 | # | |
5 | # This program is free software: you can redistribute it and/or modify |
|
5 | # This program is free software: you can redistribute it and/or modify | |
6 | # it under the terms of the GNU Affero General Public License, version 3 |
|
6 | # it under the terms of the GNU Affero General Public License, version 3 | |
7 | # (only), as published by the Free Software Foundation. |
|
7 | # (only), as published by the Free Software Foundation. | |
8 | # |
|
8 | # | |
9 | # This program is distributed in the hope that it will be useful, |
|
9 | # This program is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | # GNU General Public License for more details. |
|
12 | # GNU General Public License for more details. | |
13 | # |
|
13 | # | |
14 | # You should have received a copy of the GNU Affero General Public License |
|
14 | # You should have received a copy of the GNU Affero General Public License | |
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | # |
|
16 | # | |
17 | # This program is dual-licensed. If you wish to learn more about the |
|
17 | # This program is dual-licensed. If you wish to learn more about the | |
18 | # RhodeCode Enterprise Edition, including its added features, Support services, |
|
18 | # RhodeCode Enterprise Edition, including its added features, Support services, | |
19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ |
|
19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ | |
20 |
|
20 | |||
21 | import pytest |
|
21 | import pytest | |
22 |
|
22 | |||
23 | from rhodecode.tests import TestController |
|
23 | from rhodecode.tests import TestController | |
24 |
|
24 | |||
25 | from rhodecode.model.db import ( |
|
25 | from rhodecode.model.db import ( | |
26 | ChangesetComment, Notification, UserNotification) |
|
26 | ChangesetComment, Notification, UserNotification) | |
27 | from rhodecode.model.meta import Session |
|
27 | from rhodecode.model.meta import Session | |
28 | from rhodecode.lib import helpers as h |
|
28 | from rhodecode.lib import helpers as h | |
29 |
|
29 | |||
30 |
|
30 | |||
31 | def route_path(name, params=None, **kwargs): |
|
31 | def route_path(name, params=None, **kwargs): | |
32 | import urllib |
|
32 | import urllib | |
33 |
|
33 | |||
34 | base_url = { |
|
34 | base_url = { | |
35 | 'repo_commit': '/{repo_name}/changeset/{commit_id}', |
|
35 | 'repo_commit': '/{repo_name}/changeset/{commit_id}', | |
36 | 'repo_commit_comment_create': '/{repo_name}/changeset/{commit_id}/comment/create', |
|
36 | 'repo_commit_comment_create': '/{repo_name}/changeset/{commit_id}/comment/create', | |
37 | 'repo_commit_comment_preview': '/{repo_name}/changeset/{commit_id}/comment/preview', |
|
37 | 'repo_commit_comment_preview': '/{repo_name}/changeset/{commit_id}/comment/preview', | |
38 | 'repo_commit_comment_delete': '/{repo_name}/changeset/{commit_id}/comment/{comment_id}/delete', |
|
38 | 'repo_commit_comment_delete': '/{repo_name}/changeset/{commit_id}/comment/{comment_id}/delete', | |
39 | }[name].format(**kwargs) |
|
39 | }[name].format(**kwargs) | |
40 |
|
40 | |||
41 | if params: |
|
41 | if params: | |
42 | base_url = '{}?{}'.format(base_url, urllib.urlencode(params)) |
|
42 | base_url = '{}?{}'.format(base_url, urllib.urlencode(params)) | |
43 | return base_url |
|
43 | return base_url | |
44 |
|
44 | |||
45 |
|
45 | |||
46 | @pytest.mark.backends("git", "hg", "svn") |
|
46 | @pytest.mark.backends("git", "hg", "svn") | |
47 | class TestRepoCommitCommentsView(TestController): |
|
47 | class TestRepoCommitCommentsView(TestController): | |
48 |
|
48 | |||
49 | @pytest.fixture(autouse=True) |
|
49 | @pytest.fixture(autouse=True) | |
50 | def prepare(self, request, baseapp): |
|
50 | def prepare(self, request, baseapp): | |
51 | for x in ChangesetComment.query().all(): |
|
51 | for x in ChangesetComment.query().all(): | |
52 | Session().delete(x) |
|
52 | Session().delete(x) | |
53 | Session().commit() |
|
53 | Session().commit() | |
54 |
|
54 | |||
55 | for x in Notification.query().all(): |
|
55 | for x in Notification.query().all(): | |
56 | Session().delete(x) |
|
56 | Session().delete(x) | |
57 | Session().commit() |
|
57 | Session().commit() | |
58 |
|
58 | |||
59 | request.addfinalizer(self.cleanup) |
|
59 | request.addfinalizer(self.cleanup) | |
60 |
|
60 | |||
61 | def cleanup(self): |
|
61 | def cleanup(self): | |
62 | for x in ChangesetComment.query().all(): |
|
62 | for x in ChangesetComment.query().all(): | |
63 | Session().delete(x) |
|
63 | Session().delete(x) | |
64 | Session().commit() |
|
64 | Session().commit() | |
65 |
|
65 | |||
66 | for x in Notification.query().all(): |
|
66 | for x in Notification.query().all(): | |
67 | Session().delete(x) |
|
67 | Session().delete(x) | |
68 | Session().commit() |
|
68 | Session().commit() | |
69 |
|
69 | |||
70 | @pytest.mark.parametrize('comment_type', ChangesetComment.COMMENT_TYPES) |
|
70 | @pytest.mark.parametrize('comment_type', ChangesetComment.COMMENT_TYPES) | |
71 | def test_create(self, comment_type, backend): |
|
71 | def test_create(self, comment_type, backend): | |
72 | self.log_user() |
|
72 | self.log_user() | |
73 | commit = backend.repo.get_commit('300') |
|
73 | commit = backend.repo.get_commit('300') | |
74 | commit_id = commit.raw_id |
|
74 | commit_id = commit.raw_id | |
75 | text = u'CommentOnCommit' |
|
75 | text = u'CommentOnCommit' | |
76 |
|
76 | |||
77 | params = {'text': text, 'csrf_token': self.csrf_token, |
|
77 | params = {'text': text, 'csrf_token': self.csrf_token, | |
78 | 'comment_type': comment_type} |
|
78 | 'comment_type': comment_type} | |
79 | self.app.post( |
|
79 | self.app.post( | |
80 | route_path('repo_commit_comment_create', |
|
80 | route_path('repo_commit_comment_create', | |
81 | repo_name=backend.repo_name, commit_id=commit_id), |
|
81 | repo_name=backend.repo_name, commit_id=commit_id), | |
82 | params=params) |
|
82 | params=params) | |
83 |
|
83 | |||
84 | response = self.app.get( |
|
84 | response = self.app.get( | |
85 | route_path('repo_commit', |
|
85 | route_path('repo_commit', | |
86 | repo_name=backend.repo_name, commit_id=commit_id)) |
|
86 | repo_name=backend.repo_name, commit_id=commit_id)) | |
87 |
|
87 | |||
88 | # test DB |
|
88 | # test DB | |
89 | assert ChangesetComment.query().count() == 1 |
|
89 | assert ChangesetComment.query().count() == 1 | |
90 | assert_comment_links(response, ChangesetComment.query().count(), 0) |
|
90 | assert_comment_links(response, ChangesetComment.query().count(), 0) | |
91 |
|
91 | |||
92 | assert Notification.query().count() == 1 |
|
92 | assert Notification.query().count() == 1 | |
93 | assert ChangesetComment.query().count() == 1 |
|
93 | assert ChangesetComment.query().count() == 1 | |
94 |
|
94 | |||
95 | notification = Notification.query().all()[0] |
|
95 | notification = Notification.query().all()[0] | |
96 |
|
96 | |||
97 | comment_id = ChangesetComment.query().first().comment_id |
|
97 | comment_id = ChangesetComment.query().first().comment_id | |
98 | assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT |
|
98 | assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT | |
99 |
|
99 | |||
100 | author = notification.created_by_user.username_and_name |
|
100 | author = notification.created_by_user.username_and_name | |
101 | sbj = '{0} left a {1} on commit `{2}` in the {3} repository'.format( |
|
101 | sbj = '{0} left a {1} on commit `{2}` in the {3} repository'.format( | |
102 | author, comment_type, h.show_id(commit), backend.repo_name) |
|
102 | author, comment_type, h.show_id(commit), backend.repo_name) | |
103 | assert sbj == notification.subject |
|
103 | assert sbj == notification.subject | |
104 |
|
104 | |||
105 | lnk = (u'/{0}/changeset/{1}#comment-{2}'.format( |
|
105 | lnk = (u'/{0}/changeset/{1}#comment-{2}'.format( | |
106 | backend.repo_name, commit_id, comment_id)) |
|
106 | backend.repo_name, commit_id, comment_id)) | |
107 | assert lnk in notification.body |
|
107 | assert lnk in notification.body | |
108 |
|
108 | |||
109 | @pytest.mark.parametrize('comment_type', ChangesetComment.COMMENT_TYPES) |
|
109 | @pytest.mark.parametrize('comment_type', ChangesetComment.COMMENT_TYPES) | |
110 | def test_create_inline(self, comment_type, backend): |
|
110 | def test_create_inline(self, comment_type, backend): | |
111 | self.log_user() |
|
111 | self.log_user() | |
112 | commit = backend.repo.get_commit('300') |
|
112 | commit = backend.repo.get_commit('300') | |
113 | commit_id = commit.raw_id |
|
113 | commit_id = commit.raw_id | |
114 | text = u'CommentOnCommit' |
|
114 | text = u'CommentOnCommit' | |
115 | f_path = 'vcs/web/simplevcs/views/repository.py' |
|
115 | f_path = 'vcs/web/simplevcs/views/repository.py' | |
116 | line = 'n1' |
|
116 | line = 'n1' | |
117 |
|
117 | |||
118 | params = {'text': text, 'f_path': f_path, 'line': line, |
|
118 | params = {'text': text, 'f_path': f_path, 'line': line, | |
119 | 'comment_type': comment_type, |
|
119 | 'comment_type': comment_type, | |
120 | 'csrf_token': self.csrf_token} |
|
120 | 'csrf_token': self.csrf_token} | |
121 |
|
121 | |||
122 | self.app.post( |
|
122 | self.app.post( | |
123 | route_path('repo_commit_comment_create', |
|
123 | route_path('repo_commit_comment_create', | |
124 | repo_name=backend.repo_name, commit_id=commit_id), |
|
124 | repo_name=backend.repo_name, commit_id=commit_id), | |
125 | params=params) |
|
125 | params=params) | |
126 |
|
126 | |||
127 | response = self.app.get( |
|
127 | response = self.app.get( | |
128 | route_path('repo_commit', |
|
128 | route_path('repo_commit', | |
129 | repo_name=backend.repo_name, commit_id=commit_id)) |
|
129 | repo_name=backend.repo_name, commit_id=commit_id)) | |
130 |
|
130 | |||
131 | # test DB |
|
131 | # test DB | |
132 | assert ChangesetComment.query().count() == 1 |
|
132 | assert ChangesetComment.query().count() == 1 | |
133 | assert_comment_links(response, 0, ChangesetComment.query().count()) |
|
133 | assert_comment_links(response, 0, ChangesetComment.query().count()) | |
134 |
|
134 | |||
135 | if backend.alias == 'svn': |
|
135 | if backend.alias == 'svn': | |
136 | response.mustcontain( |
|
136 | response.mustcontain( | |
137 | '''data-f-path="vcs/commands/summary.py" ''' |
|
137 | '''data-f-path="vcs/commands/summary.py" ''' | |
138 |
'''id=" |
|
138 | '''data-anchor-id="c-300-ad05457a43f8"''' | |
139 | ) |
|
139 | ) | |
140 | if backend.alias == 'git': |
|
140 | if backend.alias == 'git': | |
141 | response.mustcontain( |
|
141 | response.mustcontain( | |
142 | '''data-f-path="vcs/backends/hg.py" ''' |
|
142 | '''data-f-path="vcs/backends/hg.py" ''' | |
143 |
'''id=" |
|
143 | '''data-anchor-id="c-883e775e89ea-9c390eb52cd6"''' | |
144 | ) |
|
144 | ) | |
145 |
|
145 | |||
146 | if backend.alias == 'hg': |
|
146 | if backend.alias == 'hg': | |
147 | response.mustcontain( |
|
147 | response.mustcontain( | |
148 | '''data-f-path="vcs/backends/hg.py" ''' |
|
148 | '''data-f-path="vcs/backends/hg.py" ''' | |
149 |
'''id=" |
|
149 | '''data-anchor-id="c-e58d85a3973b-9c390eb52cd6"''' | |
150 | ) |
|
150 | ) | |
151 |
|
151 | |||
152 | assert Notification.query().count() == 1 |
|
152 | assert Notification.query().count() == 1 | |
153 | assert ChangesetComment.query().count() == 1 |
|
153 | assert ChangesetComment.query().count() == 1 | |
154 |
|
154 | |||
155 | notification = Notification.query().all()[0] |
|
155 | notification = Notification.query().all()[0] | |
156 | comment = ChangesetComment.query().first() |
|
156 | comment = ChangesetComment.query().first() | |
157 | assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT |
|
157 | assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT | |
158 |
|
158 | |||
159 | assert comment.revision == commit_id |
|
159 | assert comment.revision == commit_id | |
160 |
|
160 | |||
161 | author = notification.created_by_user.username_and_name |
|
161 | author = notification.created_by_user.username_and_name | |
162 | sbj = '{0} left a {1} on file `{2}` in commit `{3}` in the {4} repository'.format( |
|
162 | sbj = '{0} left a {1} on file `{2}` in commit `{3}` in the {4} repository'.format( | |
163 | author, comment_type, f_path, h.show_id(commit), backend.repo_name) |
|
163 | author, comment_type, f_path, h.show_id(commit), backend.repo_name) | |
164 |
|
164 | |||
165 | assert sbj == notification.subject |
|
165 | assert sbj == notification.subject | |
166 |
|
166 | |||
167 | lnk = (u'/{0}/changeset/{1}#comment-{2}'.format( |
|
167 | lnk = (u'/{0}/changeset/{1}#comment-{2}'.format( | |
168 | backend.repo_name, commit_id, comment.comment_id)) |
|
168 | backend.repo_name, commit_id, comment.comment_id)) | |
169 | assert lnk in notification.body |
|
169 | assert lnk in notification.body | |
170 | assert 'on line n1' in notification.body |
|
170 | assert 'on line n1' in notification.body | |
171 |
|
171 | |||
172 | def test_create_with_mention(self, backend): |
|
172 | def test_create_with_mention(self, backend): | |
173 | self.log_user() |
|
173 | self.log_user() | |
174 |
|
174 | |||
175 | commit_id = backend.repo.get_commit('300').raw_id |
|
175 | commit_id = backend.repo.get_commit('300').raw_id | |
176 | text = u'@test_regular check CommentOnCommit' |
|
176 | text = u'@test_regular check CommentOnCommit' | |
177 |
|
177 | |||
178 | params = {'text': text, 'csrf_token': self.csrf_token} |
|
178 | params = {'text': text, 'csrf_token': self.csrf_token} | |
179 | self.app.post( |
|
179 | self.app.post( | |
180 | route_path('repo_commit_comment_create', |
|
180 | route_path('repo_commit_comment_create', | |
181 | repo_name=backend.repo_name, commit_id=commit_id), |
|
181 | repo_name=backend.repo_name, commit_id=commit_id), | |
182 | params=params) |
|
182 | params=params) | |
183 |
|
183 | |||
184 | response = self.app.get( |
|
184 | response = self.app.get( | |
185 | route_path('repo_commit', |
|
185 | route_path('repo_commit', | |
186 | repo_name=backend.repo_name, commit_id=commit_id)) |
|
186 | repo_name=backend.repo_name, commit_id=commit_id)) | |
187 | # test DB |
|
187 | # test DB | |
188 | assert ChangesetComment.query().count() == 1 |
|
188 | assert ChangesetComment.query().count() == 1 | |
189 | assert_comment_links(response, ChangesetComment.query().count(), 0) |
|
189 | assert_comment_links(response, ChangesetComment.query().count(), 0) | |
190 |
|
190 | |||
191 | notification = Notification.query().one() |
|
191 | notification = Notification.query().one() | |
192 |
|
192 | |||
193 | assert len(notification.recipients) == 2 |
|
193 | assert len(notification.recipients) == 2 | |
194 | users = [x.username for x in notification.recipients] |
|
194 | users = [x.username for x in notification.recipients] | |
195 |
|
195 | |||
196 | # test_regular gets notification by @mention |
|
196 | # test_regular gets notification by @mention | |
197 | assert sorted(users) == [u'test_admin', u'test_regular'] |
|
197 | assert sorted(users) == [u'test_admin', u'test_regular'] | |
198 |
|
198 | |||
199 | def test_create_with_status_change(self, backend): |
|
199 | def test_create_with_status_change(self, backend): | |
200 | self.log_user() |
|
200 | self.log_user() | |
201 | commit = backend.repo.get_commit('300') |
|
201 | commit = backend.repo.get_commit('300') | |
202 | commit_id = commit.raw_id |
|
202 | commit_id = commit.raw_id | |
203 | text = u'CommentOnCommit' |
|
203 | text = u'CommentOnCommit' | |
204 | f_path = 'vcs/web/simplevcs/views/repository.py' |
|
204 | f_path = 'vcs/web/simplevcs/views/repository.py' | |
205 | line = 'n1' |
|
205 | line = 'n1' | |
206 |
|
206 | |||
207 | params = {'text': text, 'changeset_status': 'approved', |
|
207 | params = {'text': text, 'changeset_status': 'approved', | |
208 | 'csrf_token': self.csrf_token} |
|
208 | 'csrf_token': self.csrf_token} | |
209 |
|
209 | |||
210 | self.app.post( |
|
210 | self.app.post( | |
211 | route_path( |
|
211 | route_path( | |
212 | 'repo_commit_comment_create', |
|
212 | 'repo_commit_comment_create', | |
213 | repo_name=backend.repo_name, commit_id=commit_id), |
|
213 | repo_name=backend.repo_name, commit_id=commit_id), | |
214 | params=params) |
|
214 | params=params) | |
215 |
|
215 | |||
216 | response = self.app.get( |
|
216 | response = self.app.get( | |
217 | route_path('repo_commit', |
|
217 | route_path('repo_commit', | |
218 | repo_name=backend.repo_name, commit_id=commit_id)) |
|
218 | repo_name=backend.repo_name, commit_id=commit_id)) | |
219 |
|
219 | |||
220 | # test DB |
|
220 | # test DB | |
221 | assert ChangesetComment.query().count() == 1 |
|
221 | assert ChangesetComment.query().count() == 1 | |
222 | assert_comment_links(response, ChangesetComment.query().count(), 0) |
|
222 | assert_comment_links(response, ChangesetComment.query().count(), 0) | |
223 |
|
223 | |||
224 | assert Notification.query().count() == 1 |
|
224 | assert Notification.query().count() == 1 | |
225 | assert ChangesetComment.query().count() == 1 |
|
225 | assert ChangesetComment.query().count() == 1 | |
226 |
|
226 | |||
227 | notification = Notification.query().all()[0] |
|
227 | notification = Notification.query().all()[0] | |
228 |
|
228 | |||
229 | comment_id = ChangesetComment.query().first().comment_id |
|
229 | comment_id = ChangesetComment.query().first().comment_id | |
230 | assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT |
|
230 | assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT | |
231 |
|
231 | |||
232 | author = notification.created_by_user.username_and_name |
|
232 | author = notification.created_by_user.username_and_name | |
233 | sbj = '[status: Approved] {0} left a note on commit `{1}` in the {2} repository'.format( |
|
233 | sbj = '[status: Approved] {0} left a note on commit `{1}` in the {2} repository'.format( | |
234 | author, h.show_id(commit), backend.repo_name) |
|
234 | author, h.show_id(commit), backend.repo_name) | |
235 | assert sbj == notification.subject |
|
235 | assert sbj == notification.subject | |
236 |
|
236 | |||
237 | lnk = (u'/{0}/changeset/{1}#comment-{2}'.format( |
|
237 | lnk = (u'/{0}/changeset/{1}#comment-{2}'.format( | |
238 | backend.repo_name, commit_id, comment_id)) |
|
238 | backend.repo_name, commit_id, comment_id)) | |
239 | assert lnk in notification.body |
|
239 | assert lnk in notification.body | |
240 |
|
240 | |||
241 | def test_delete(self, backend): |
|
241 | def test_delete(self, backend): | |
242 | self.log_user() |
|
242 | self.log_user() | |
243 | commit_id = backend.repo.get_commit('300').raw_id |
|
243 | commit_id = backend.repo.get_commit('300').raw_id | |
244 | text = u'CommentOnCommit' |
|
244 | text = u'CommentOnCommit' | |
245 |
|
245 | |||
246 | params = {'text': text, 'csrf_token': self.csrf_token} |
|
246 | params = {'text': text, 'csrf_token': self.csrf_token} | |
247 | self.app.post( |
|
247 | self.app.post( | |
248 | route_path( |
|
248 | route_path( | |
249 | 'repo_commit_comment_create', |
|
249 | 'repo_commit_comment_create', | |
250 | repo_name=backend.repo_name, commit_id=commit_id), |
|
250 | repo_name=backend.repo_name, commit_id=commit_id), | |
251 | params=params) |
|
251 | params=params) | |
252 |
|
252 | |||
253 | comments = ChangesetComment.query().all() |
|
253 | comments = ChangesetComment.query().all() | |
254 | assert len(comments) == 1 |
|
254 | assert len(comments) == 1 | |
255 | comment_id = comments[0].comment_id |
|
255 | comment_id = comments[0].comment_id | |
256 |
|
256 | |||
257 | self.app.post( |
|
257 | self.app.post( | |
258 | route_path('repo_commit_comment_delete', |
|
258 | route_path('repo_commit_comment_delete', | |
259 | repo_name=backend.repo_name, |
|
259 | repo_name=backend.repo_name, | |
260 | commit_id=commit_id, |
|
260 | commit_id=commit_id, | |
261 | comment_id=comment_id), |
|
261 | comment_id=comment_id), | |
262 | params={'csrf_token': self.csrf_token}) |
|
262 | params={'csrf_token': self.csrf_token}) | |
263 |
|
263 | |||
264 | comments = ChangesetComment.query().all() |
|
264 | comments = ChangesetComment.query().all() | |
265 | assert len(comments) == 0 |
|
265 | assert len(comments) == 0 | |
266 |
|
266 | |||
267 | response = self.app.get( |
|
267 | response = self.app.get( | |
268 | route_path('repo_commit', |
|
268 | route_path('repo_commit', | |
269 | repo_name=backend.repo_name, commit_id=commit_id)) |
|
269 | repo_name=backend.repo_name, commit_id=commit_id)) | |
270 | assert_comment_links(response, 0, 0) |
|
270 | assert_comment_links(response, 0, 0) | |
271 |
|
271 | |||
272 | @pytest.mark.parametrize('renderer, input, output', [ |
|
272 | @pytest.mark.parametrize('renderer, input, output', [ | |
273 | ('rst', 'plain text', '<p>plain text</p>'), |
|
273 | ('rst', 'plain text', '<p>plain text</p>'), | |
274 | ('rst', 'header\n======', '<h1 class="title">header</h1>'), |
|
274 | ('rst', 'header\n======', '<h1 class="title">header</h1>'), | |
275 | ('rst', '*italics*', '<em>italics</em>'), |
|
275 | ('rst', '*italics*', '<em>italics</em>'), | |
276 | ('rst', '**bold**', '<strong>bold</strong>'), |
|
276 | ('rst', '**bold**', '<strong>bold</strong>'), | |
277 | ('markdown', 'plain text', '<p>plain text</p>'), |
|
277 | ('markdown', 'plain text', '<p>plain text</p>'), | |
278 | ('markdown', '# header', '<h1>header</h1>'), |
|
278 | ('markdown', '# header', '<h1>header</h1>'), | |
279 | ('markdown', '*italics*', '<em>italics</em>'), |
|
279 | ('markdown', '*italics*', '<em>italics</em>'), | |
280 | ('markdown', '**bold**', '<strong>bold</strong>'), |
|
280 | ('markdown', '**bold**', '<strong>bold</strong>'), | |
281 | ], ids=['rst-plain', 'rst-header', 'rst-italics', 'rst-bold', 'md-plain', |
|
281 | ], ids=['rst-plain', 'rst-header', 'rst-italics', 'rst-bold', 'md-plain', | |
282 | 'md-header', 'md-italics', 'md-bold', ]) |
|
282 | 'md-header', 'md-italics', 'md-bold', ]) | |
283 | def test_preview(self, renderer, input, output, backend, xhr_header): |
|
283 | def test_preview(self, renderer, input, output, backend, xhr_header): | |
284 | self.log_user() |
|
284 | self.log_user() | |
285 | params = { |
|
285 | params = { | |
286 | 'renderer': renderer, |
|
286 | 'renderer': renderer, | |
287 | 'text': input, |
|
287 | 'text': input, | |
288 | 'csrf_token': self.csrf_token |
|
288 | 'csrf_token': self.csrf_token | |
289 | } |
|
289 | } | |
290 | commit_id = '0' * 16 # fake this for tests |
|
290 | commit_id = '0' * 16 # fake this for tests | |
291 | response = self.app.post( |
|
291 | response = self.app.post( | |
292 | route_path('repo_commit_comment_preview', |
|
292 | route_path('repo_commit_comment_preview', | |
293 | repo_name=backend.repo_name, commit_id=commit_id,), |
|
293 | repo_name=backend.repo_name, commit_id=commit_id,), | |
294 | params=params, |
|
294 | params=params, | |
295 | extra_environ=xhr_header) |
|
295 | extra_environ=xhr_header) | |
296 |
|
296 | |||
297 | response.mustcontain(output) |
|
297 | response.mustcontain(output) | |
298 |
|
298 | |||
299 |
|
299 | |||
300 | def assert_comment_links(response, comments, inline_comments): |
|
300 | def assert_comment_links(response, comments, inline_comments): | |
301 | if comments == 1: |
|
301 | if comments == 1: | |
302 | comments_text = "%d Commit comment" % comments |
|
302 | comments_text = "%d Commit comment" % comments | |
303 | else: |
|
303 | else: | |
304 | comments_text = "%d Commit comments" % comments |
|
304 | comments_text = "%d Commit comments" % comments | |
305 |
|
305 | |||
306 | if inline_comments == 1: |
|
306 | if inline_comments == 1: | |
307 | inline_comments_text = "%d Inline Comment" % inline_comments |
|
307 | inline_comments_text = "%d Inline Comment" % inline_comments | |
308 | else: |
|
308 | else: | |
309 | inline_comments_text = "%d Inline Comments" % inline_comments |
|
309 | inline_comments_text = "%d Inline Comments" % inline_comments | |
310 |
|
310 | |||
311 | if comments: |
|
311 | if comments: | |
312 | response.mustcontain('<a href="#comments">%s</a>,' % comments_text) |
|
312 | response.mustcontain('<a href="#comments">%s</a>,' % comments_text) | |
313 | else: |
|
313 | else: | |
314 | response.mustcontain(comments_text) |
|
314 | response.mustcontain(comments_text) | |
315 |
|
315 | |||
316 | if inline_comments: |
|
316 | if inline_comments: | |
317 | response.mustcontain( |
|
317 | response.mustcontain( | |
318 | 'id="inline-comments-counter">%s</' % inline_comments_text) |
|
318 | 'id="inline-comments-counter">%s</' % inline_comments_text) | |
319 | else: |
|
319 | else: | |
320 | response.mustcontain(inline_comments_text) |
|
320 | response.mustcontain(inline_comments_text) |
@@ -1,666 +1,666 b'' | |||||
1 | # -*- coding: utf-8 -*- |
|
1 | # -*- coding: utf-8 -*- | |
2 |
|
2 | |||
3 | # Copyright (C) 2010-2018 RhodeCode GmbH |
|
3 | # Copyright (C) 2010-2018 RhodeCode GmbH | |
4 | # |
|
4 | # | |
5 | # This program is free software: you can redistribute it and/or modify |
|
5 | # This program is free software: you can redistribute it and/or modify | |
6 | # it under the terms of the GNU Affero General Public License, version 3 |
|
6 | # it under the terms of the GNU Affero General Public License, version 3 | |
7 | # (only), as published by the Free Software Foundation. |
|
7 | # (only), as published by the Free Software Foundation. | |
8 | # |
|
8 | # | |
9 | # This program is distributed in the hope that it will be useful, |
|
9 | # This program is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | # GNU General Public License for more details. |
|
12 | # GNU General Public License for more details. | |
13 | # |
|
13 | # | |
14 | # You should have received a copy of the GNU Affero General Public License |
|
14 | # You should have received a copy of the GNU Affero General Public License | |
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | # |
|
16 | # | |
17 | # This program is dual-licensed. If you wish to learn more about the |
|
17 | # This program is dual-licensed. If you wish to learn more about the | |
18 | # RhodeCode Enterprise Edition, including its added features, Support services, |
|
18 | # RhodeCode Enterprise Edition, including its added features, Support services, | |
19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ |
|
19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ | |
20 |
|
20 | |||
21 | import mock |
|
21 | import mock | |
22 | import pytest |
|
22 | import pytest | |
23 | import lxml.html |
|
23 | import lxml.html | |
24 |
|
24 | |||
25 | from rhodecode.lib.vcs.exceptions import RepositoryRequirementError |
|
25 | from rhodecode.lib.vcs.exceptions import RepositoryRequirementError | |
26 | from rhodecode.tests import assert_session_flash |
|
26 | from rhodecode.tests import assert_session_flash | |
27 | from rhodecode.tests.utils import AssertResponse, commit_change |
|
27 | from rhodecode.tests.utils import AssertResponse, commit_change | |
28 |
|
28 | |||
29 |
|
29 | |||
30 | def route_path(name, params=None, **kwargs): |
|
30 | def route_path(name, params=None, **kwargs): | |
31 | import urllib |
|
31 | import urllib | |
32 |
|
32 | |||
33 | base_url = { |
|
33 | base_url = { | |
34 | 'repo_compare_select': '/{repo_name}/compare', |
|
34 | 'repo_compare_select': '/{repo_name}/compare', | |
35 | 'repo_compare': '/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}', |
|
35 | 'repo_compare': '/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}', | |
36 | }[name].format(**kwargs) |
|
36 | }[name].format(**kwargs) | |
37 |
|
37 | |||
38 | if params: |
|
38 | if params: | |
39 | base_url = '{}?{}'.format(base_url, urllib.urlencode(params)) |
|
39 | base_url = '{}?{}'.format(base_url, urllib.urlencode(params)) | |
40 | return base_url |
|
40 | return base_url | |
41 |
|
41 | |||
42 |
|
42 | |||
43 | @pytest.mark.usefixtures("autologin_user", "app") |
|
43 | @pytest.mark.usefixtures("autologin_user", "app") | |
44 | class TestCompareView(object): |
|
44 | class TestCompareView(object): | |
45 |
|
45 | |||
46 | def test_compare_index_is_reached_at_least_once(self, backend): |
|
46 | def test_compare_index_is_reached_at_least_once(self, backend): | |
47 | repo = backend.repo |
|
47 | repo = backend.repo | |
48 | self.app.get( |
|
48 | self.app.get( | |
49 | route_path('repo_compare_select', repo_name=repo.repo_name)) |
|
49 | route_path('repo_compare_select', repo_name=repo.repo_name)) | |
50 |
|
50 | |||
51 | @pytest.mark.xfail_backends("svn", reason="Requires pull") |
|
51 | @pytest.mark.xfail_backends("svn", reason="Requires pull") | |
52 | def test_compare_remote_with_different_commit_indexes(self, backend): |
|
52 | def test_compare_remote_with_different_commit_indexes(self, backend): | |
53 | # Preparing the following repository structure: |
|
53 | # Preparing the following repository structure: | |
54 | # |
|
54 | # | |
55 | # Origin repository has two commits: |
|
55 | # Origin repository has two commits: | |
56 | # |
|
56 | # | |
57 | # 0 1 |
|
57 | # 0 1 | |
58 | # A -- D |
|
58 | # A -- D | |
59 | # |
|
59 | # | |
60 | # The fork of it has a few more commits and "D" has a commit index |
|
60 | # The fork of it has a few more commits and "D" has a commit index | |
61 | # which does not exist in origin. |
|
61 | # which does not exist in origin. | |
62 | # |
|
62 | # | |
63 | # 0 1 2 3 4 |
|
63 | # 0 1 2 3 4 | |
64 | # A -- -- -- D -- E |
|
64 | # A -- -- -- D -- E | |
65 | # \- B -- C |
|
65 | # \- B -- C | |
66 | # |
|
66 | # | |
67 |
|
67 | |||
68 | fork = backend.create_repo() |
|
68 | fork = backend.create_repo() | |
69 |
|
69 | |||
70 | # prepare fork |
|
70 | # prepare fork | |
71 | commit0 = commit_change( |
|
71 | commit0 = commit_change( | |
72 | fork.repo_name, filename='file1', content='A', |
|
72 | fork.repo_name, filename='file1', content='A', | |
73 | message='A', vcs_type=backend.alias, parent=None, newfile=True) |
|
73 | message='A', vcs_type=backend.alias, parent=None, newfile=True) | |
74 |
|
74 | |||
75 | commit1 = commit_change( |
|
75 | commit1 = commit_change( | |
76 | fork.repo_name, filename='file1', content='B', |
|
76 | fork.repo_name, filename='file1', content='B', | |
77 | message='B, child of A', vcs_type=backend.alias, parent=commit0) |
|
77 | message='B, child of A', vcs_type=backend.alias, parent=commit0) | |
78 |
|
78 | |||
79 | commit_change( # commit 2 |
|
79 | commit_change( # commit 2 | |
80 | fork.repo_name, filename='file1', content='C', |
|
80 | fork.repo_name, filename='file1', content='C', | |
81 | message='C, child of B', vcs_type=backend.alias, parent=commit1) |
|
81 | message='C, child of B', vcs_type=backend.alias, parent=commit1) | |
82 |
|
82 | |||
83 | commit3 = commit_change( |
|
83 | commit3 = commit_change( | |
84 | fork.repo_name, filename='file1', content='D', |
|
84 | fork.repo_name, filename='file1', content='D', | |
85 | message='D, child of A', vcs_type=backend.alias, parent=commit0) |
|
85 | message='D, child of A', vcs_type=backend.alias, parent=commit0) | |
86 |
|
86 | |||
87 | commit4 = commit_change( |
|
87 | commit4 = commit_change( | |
88 | fork.repo_name, filename='file1', content='E', |
|
88 | fork.repo_name, filename='file1', content='E', | |
89 | message='E, child of D', vcs_type=backend.alias, parent=commit3) |
|
89 | message='E, child of D', vcs_type=backend.alias, parent=commit3) | |
90 |
|
90 | |||
91 | # prepare origin repository, taking just the history up to D |
|
91 | # prepare origin repository, taking just the history up to D | |
92 | origin = backend.create_repo() |
|
92 | origin = backend.create_repo() | |
93 |
|
93 | |||
94 | origin_repo = origin.scm_instance(cache=False) |
|
94 | origin_repo = origin.scm_instance(cache=False) | |
95 | origin_repo.config.clear_section('hooks') |
|
95 | origin_repo.config.clear_section('hooks') | |
96 | origin_repo.pull(fork.repo_full_path, commit_ids=[commit3.raw_id]) |
|
96 | origin_repo.pull(fork.repo_full_path, commit_ids=[commit3.raw_id]) | |
97 |
|
97 | |||
98 | # Verify test fixture setup |
|
98 | # Verify test fixture setup | |
99 | # This does not work for git |
|
99 | # This does not work for git | |
100 | if backend.alias != 'git': |
|
100 | if backend.alias != 'git': | |
101 | assert 5 == len(fork.scm_instance().commit_ids) |
|
101 | assert 5 == len(fork.scm_instance().commit_ids) | |
102 | assert 2 == len(origin_repo.commit_ids) |
|
102 | assert 2 == len(origin_repo.commit_ids) | |
103 |
|
103 | |||
104 | # Comparing the revisions |
|
104 | # Comparing the revisions | |
105 | response = self.app.get( |
|
105 | response = self.app.get( | |
106 | route_path('repo_compare', |
|
106 | route_path('repo_compare', | |
107 | repo_name=origin.repo_name, |
|
107 | repo_name=origin.repo_name, | |
108 | source_ref_type="rev", source_ref=commit3.raw_id, |
|
108 | source_ref_type="rev", source_ref=commit3.raw_id, | |
109 | target_ref_type="rev", target_ref=commit4.raw_id, |
|
109 | target_ref_type="rev", target_ref=commit4.raw_id, | |
110 | params=dict(merge='1', target_repo=fork.repo_name) |
|
110 | params=dict(merge='1', target_repo=fork.repo_name) | |
111 | )) |
|
111 | )) | |
112 |
|
112 | |||
113 | compare_page = ComparePage(response) |
|
113 | compare_page = ComparePage(response) | |
114 | compare_page.contains_commits([commit4]) |
|
114 | compare_page.contains_commits([commit4]) | |
115 |
|
115 | |||
116 | @pytest.mark.xfail_backends("svn", reason="Depends on branch support") |
|
116 | @pytest.mark.xfail_backends("svn", reason="Depends on branch support") | |
117 | def test_compare_forks_on_branch_extra_commits(self, backend): |
|
117 | def test_compare_forks_on_branch_extra_commits(self, backend): | |
118 | repo1 = backend.create_repo() |
|
118 | repo1 = backend.create_repo() | |
119 |
|
119 | |||
120 | # commit something ! |
|
120 | # commit something ! | |
121 | commit0 = commit_change( |
|
121 | commit0 = commit_change( | |
122 | repo1.repo_name, filename='file1', content='line1\n', |
|
122 | repo1.repo_name, filename='file1', content='line1\n', | |
123 | message='commit1', vcs_type=backend.alias, parent=None, |
|
123 | message='commit1', vcs_type=backend.alias, parent=None, | |
124 | newfile=True) |
|
124 | newfile=True) | |
125 |
|
125 | |||
126 | # fork this repo |
|
126 | # fork this repo | |
127 | repo2 = backend.create_fork() |
|
127 | repo2 = backend.create_fork() | |
128 |
|
128 | |||
129 | # add two extra commit into fork |
|
129 | # add two extra commit into fork | |
130 | commit1 = commit_change( |
|
130 | commit1 = commit_change( | |
131 | repo2.repo_name, filename='file1', content='line1\nline2\n', |
|
131 | repo2.repo_name, filename='file1', content='line1\nline2\n', | |
132 | message='commit2', vcs_type=backend.alias, parent=commit0) |
|
132 | message='commit2', vcs_type=backend.alias, parent=commit0) | |
133 |
|
133 | |||
134 | commit2 = commit_change( |
|
134 | commit2 = commit_change( | |
135 | repo2.repo_name, filename='file1', content='line1\nline2\nline3\n', |
|
135 | repo2.repo_name, filename='file1', content='line1\nline2\nline3\n', | |
136 | message='commit3', vcs_type=backend.alias, parent=commit1) |
|
136 | message='commit3', vcs_type=backend.alias, parent=commit1) | |
137 |
|
137 | |||
138 | commit_id1 = repo1.scm_instance().DEFAULT_BRANCH_NAME |
|
138 | commit_id1 = repo1.scm_instance().DEFAULT_BRANCH_NAME | |
139 | commit_id2 = repo2.scm_instance().DEFAULT_BRANCH_NAME |
|
139 | commit_id2 = repo2.scm_instance().DEFAULT_BRANCH_NAME | |
140 |
|
140 | |||
141 | response = self.app.get( |
|
141 | response = self.app.get( | |
142 | route_path('repo_compare', |
|
142 | route_path('repo_compare', | |
143 | repo_name=repo1.repo_name, |
|
143 | repo_name=repo1.repo_name, | |
144 | source_ref_type="branch", source_ref=commit_id2, |
|
144 | source_ref_type="branch", source_ref=commit_id2, | |
145 | target_ref_type="branch", target_ref=commit_id1, |
|
145 | target_ref_type="branch", target_ref=commit_id1, | |
146 | params=dict(merge='1', target_repo=repo2.repo_name) |
|
146 | params=dict(merge='1', target_repo=repo2.repo_name) | |
147 | )) |
|
147 | )) | |
148 |
|
148 | |||
149 | response.mustcontain('%s@%s' % (repo1.repo_name, commit_id2)) |
|
149 | response.mustcontain('%s@%s' % (repo1.repo_name, commit_id2)) | |
150 | response.mustcontain('%s@%s' % (repo2.repo_name, commit_id1)) |
|
150 | response.mustcontain('%s@%s' % (repo2.repo_name, commit_id1)) | |
151 |
|
151 | |||
152 | compare_page = ComparePage(response) |
|
152 | compare_page = ComparePage(response) | |
153 | compare_page.contains_change_summary(1, 2, 0) |
|
153 | compare_page.contains_change_summary(1, 2, 0) | |
154 | compare_page.contains_commits([commit1, commit2]) |
|
154 | compare_page.contains_commits([commit1, commit2]) | |
155 |
|
155 | |||
156 | anchor = 'a_c-{}-826e8142e6ba'.format(commit0.short_id) |
|
156 | anchor = 'a_c-{}-826e8142e6ba'.format(commit0.short_id) | |
157 | compare_page.contains_file_links_and_anchors([('file1', anchor), ]) |
|
157 | compare_page.contains_file_links_and_anchors([('file1', anchor), ]) | |
158 |
|
158 | |||
159 | # Swap is removed when comparing branches since it's a PR feature and |
|
159 | # Swap is removed when comparing branches since it's a PR feature and | |
160 | # it is then a preview mode |
|
160 | # it is then a preview mode | |
161 | compare_page.swap_is_hidden() |
|
161 | compare_page.swap_is_hidden() | |
162 | compare_page.target_source_are_disabled() |
|
162 | compare_page.target_source_are_disabled() | |
163 |
|
163 | |||
164 | @pytest.mark.xfail_backends("svn", reason="Depends on branch support") |
|
164 | @pytest.mark.xfail_backends("svn", reason="Depends on branch support") | |
165 | def test_compare_forks_on_branch_extra_commits_origin_has_incomming( |
|
165 | def test_compare_forks_on_branch_extra_commits_origin_has_incomming( | |
166 | self, backend): |
|
166 | self, backend): | |
167 | repo1 = backend.create_repo() |
|
167 | repo1 = backend.create_repo() | |
168 |
|
168 | |||
169 | # commit something ! |
|
169 | # commit something ! | |
170 | commit0 = commit_change( |
|
170 | commit0 = commit_change( | |
171 | repo1.repo_name, filename='file1', content='line1\n', |
|
171 | repo1.repo_name, filename='file1', content='line1\n', | |
172 | message='commit1', vcs_type=backend.alias, parent=None, |
|
172 | message='commit1', vcs_type=backend.alias, parent=None, | |
173 | newfile=True) |
|
173 | newfile=True) | |
174 |
|
174 | |||
175 | # fork this repo |
|
175 | # fork this repo | |
176 | repo2 = backend.create_fork() |
|
176 | repo2 = backend.create_fork() | |
177 |
|
177 | |||
178 | # now commit something to origin repo |
|
178 | # now commit something to origin repo | |
179 | commit_change( |
|
179 | commit_change( | |
180 | repo1.repo_name, filename='file2', content='line1file2\n', |
|
180 | repo1.repo_name, filename='file2', content='line1file2\n', | |
181 | message='commit2', vcs_type=backend.alias, parent=commit0, |
|
181 | message='commit2', vcs_type=backend.alias, parent=commit0, | |
182 | newfile=True) |
|
182 | newfile=True) | |
183 |
|
183 | |||
184 | # add two extra commit into fork |
|
184 | # add two extra commit into fork | |
185 | commit1 = commit_change( |
|
185 | commit1 = commit_change( | |
186 | repo2.repo_name, filename='file1', content='line1\nline2\n', |
|
186 | repo2.repo_name, filename='file1', content='line1\nline2\n', | |
187 | message='commit2', vcs_type=backend.alias, parent=commit0) |
|
187 | message='commit2', vcs_type=backend.alias, parent=commit0) | |
188 |
|
188 | |||
189 | commit2 = commit_change( |
|
189 | commit2 = commit_change( | |
190 | repo2.repo_name, filename='file1', content='line1\nline2\nline3\n', |
|
190 | repo2.repo_name, filename='file1', content='line1\nline2\nline3\n', | |
191 | message='commit3', vcs_type=backend.alias, parent=commit1) |
|
191 | message='commit3', vcs_type=backend.alias, parent=commit1) | |
192 |
|
192 | |||
193 | commit_id1 = repo1.scm_instance().DEFAULT_BRANCH_NAME |
|
193 | commit_id1 = repo1.scm_instance().DEFAULT_BRANCH_NAME | |
194 | commit_id2 = repo2.scm_instance().DEFAULT_BRANCH_NAME |
|
194 | commit_id2 = repo2.scm_instance().DEFAULT_BRANCH_NAME | |
195 |
|
195 | |||
196 | response = self.app.get( |
|
196 | response = self.app.get( | |
197 | route_path('repo_compare', |
|
197 | route_path('repo_compare', | |
198 | repo_name=repo1.repo_name, |
|
198 | repo_name=repo1.repo_name, | |
199 | source_ref_type="branch", source_ref=commit_id2, |
|
199 | source_ref_type="branch", source_ref=commit_id2, | |
200 | target_ref_type="branch", target_ref=commit_id1, |
|
200 | target_ref_type="branch", target_ref=commit_id1, | |
201 | params=dict(merge='1', target_repo=repo2.repo_name), |
|
201 | params=dict(merge='1', target_repo=repo2.repo_name), | |
202 | )) |
|
202 | )) | |
203 |
|
203 | |||
204 | response.mustcontain('%s@%s' % (repo1.repo_name, commit_id2)) |
|
204 | response.mustcontain('%s@%s' % (repo1.repo_name, commit_id2)) | |
205 | response.mustcontain('%s@%s' % (repo2.repo_name, commit_id1)) |
|
205 | response.mustcontain('%s@%s' % (repo2.repo_name, commit_id1)) | |
206 |
|
206 | |||
207 | compare_page = ComparePage(response) |
|
207 | compare_page = ComparePage(response) | |
208 | compare_page.contains_change_summary(1, 2, 0) |
|
208 | compare_page.contains_change_summary(1, 2, 0) | |
209 | compare_page.contains_commits([commit1, commit2]) |
|
209 | compare_page.contains_commits([commit1, commit2]) | |
210 | anchor = 'a_c-{}-826e8142e6ba'.format(commit0.short_id) |
|
210 | anchor = 'a_c-{}-826e8142e6ba'.format(commit0.short_id) | |
211 | compare_page.contains_file_links_and_anchors([('file1', anchor), ]) |
|
211 | compare_page.contains_file_links_and_anchors([('file1', anchor), ]) | |
212 |
|
212 | |||
213 | # Swap is removed when comparing branches since it's a PR feature and |
|
213 | # Swap is removed when comparing branches since it's a PR feature and | |
214 | # it is then a preview mode |
|
214 | # it is then a preview mode | |
215 | compare_page.swap_is_hidden() |
|
215 | compare_page.swap_is_hidden() | |
216 | compare_page.target_source_are_disabled() |
|
216 | compare_page.target_source_are_disabled() | |
217 |
|
217 | |||
218 | @pytest.mark.xfail_backends("svn") |
|
218 | @pytest.mark.xfail_backends("svn") | |
219 | # TODO(marcink): no svn support for compare two seperate repos |
|
219 | # TODO(marcink): no svn support for compare two seperate repos | |
220 | def test_compare_of_unrelated_forks(self, backend): |
|
220 | def test_compare_of_unrelated_forks(self, backend): | |
221 | orig = backend.create_repo(number_of_commits=1) |
|
221 | orig = backend.create_repo(number_of_commits=1) | |
222 | fork = backend.create_repo(number_of_commits=1) |
|
222 | fork = backend.create_repo(number_of_commits=1) | |
223 |
|
223 | |||
224 | response = self.app.get( |
|
224 | response = self.app.get( | |
225 | route_path('repo_compare', |
|
225 | route_path('repo_compare', | |
226 | repo_name=orig.repo_name, |
|
226 | repo_name=orig.repo_name, | |
227 | source_ref_type="rev", source_ref="tip", |
|
227 | source_ref_type="rev", source_ref="tip", | |
228 | target_ref_type="rev", target_ref="tip", |
|
228 | target_ref_type="rev", target_ref="tip", | |
229 | params=dict(merge='1', target_repo=fork.repo_name), |
|
229 | params=dict(merge='1', target_repo=fork.repo_name), | |
230 | ), |
|
230 | ), | |
231 | status=302) |
|
231 | status=302) | |
232 | response = response.follow() |
|
232 | response = response.follow() | |
233 | response.mustcontain("Repositories unrelated.") |
|
233 | response.mustcontain("Repositories unrelated.") | |
234 |
|
234 | |||
235 | @pytest.mark.xfail_backends("svn") |
|
235 | @pytest.mark.xfail_backends("svn") | |
236 | def test_compare_cherry_pick_commits_from_bottom(self, backend): |
|
236 | def test_compare_cherry_pick_commits_from_bottom(self, backend): | |
237 |
|
237 | |||
238 | # repo1: |
|
238 | # repo1: | |
239 | # commit0: |
|
239 | # commit0: | |
240 | # commit1: |
|
240 | # commit1: | |
241 | # repo1-fork- in which we will cherry pick bottom commits |
|
241 | # repo1-fork- in which we will cherry pick bottom commits | |
242 | # commit0: |
|
242 | # commit0: | |
243 | # commit1: |
|
243 | # commit1: | |
244 | # commit2: x |
|
244 | # commit2: x | |
245 | # commit3: x |
|
245 | # commit3: x | |
246 | # commit4: x |
|
246 | # commit4: x | |
247 | # commit5: |
|
247 | # commit5: | |
248 | # make repo1, and commit1+commit2 |
|
248 | # make repo1, and commit1+commit2 | |
249 |
|
249 | |||
250 | repo1 = backend.create_repo() |
|
250 | repo1 = backend.create_repo() | |
251 |
|
251 | |||
252 | # commit something ! |
|
252 | # commit something ! | |
253 | commit0 = commit_change( |
|
253 | commit0 = commit_change( | |
254 | repo1.repo_name, filename='file1', content='line1\n', |
|
254 | repo1.repo_name, filename='file1', content='line1\n', | |
255 | message='commit1', vcs_type=backend.alias, parent=None, |
|
255 | message='commit1', vcs_type=backend.alias, parent=None, | |
256 | newfile=True) |
|
256 | newfile=True) | |
257 | commit1 = commit_change( |
|
257 | commit1 = commit_change( | |
258 | repo1.repo_name, filename='file1', content='line1\nline2\n', |
|
258 | repo1.repo_name, filename='file1', content='line1\nline2\n', | |
259 | message='commit2', vcs_type=backend.alias, parent=commit0) |
|
259 | message='commit2', vcs_type=backend.alias, parent=commit0) | |
260 |
|
260 | |||
261 | # fork this repo |
|
261 | # fork this repo | |
262 | repo2 = backend.create_fork() |
|
262 | repo2 = backend.create_fork() | |
263 |
|
263 | |||
264 | # now make commit3-6 |
|
264 | # now make commit3-6 | |
265 | commit2 = commit_change( |
|
265 | commit2 = commit_change( | |
266 | repo1.repo_name, filename='file1', content='line1\nline2\nline3\n', |
|
266 | repo1.repo_name, filename='file1', content='line1\nline2\nline3\n', | |
267 | message='commit3', vcs_type=backend.alias, parent=commit1) |
|
267 | message='commit3', vcs_type=backend.alias, parent=commit1) | |
268 | commit3 = commit_change( |
|
268 | commit3 = commit_change( | |
269 | repo1.repo_name, filename='file1', |
|
269 | repo1.repo_name, filename='file1', | |
270 | content='line1\nline2\nline3\nline4\n', message='commit4', |
|
270 | content='line1\nline2\nline3\nline4\n', message='commit4', | |
271 | vcs_type=backend.alias, parent=commit2) |
|
271 | vcs_type=backend.alias, parent=commit2) | |
272 | commit4 = commit_change( |
|
272 | commit4 = commit_change( | |
273 | repo1.repo_name, filename='file1', |
|
273 | repo1.repo_name, filename='file1', | |
274 | content='line1\nline2\nline3\nline4\nline5\n', message='commit5', |
|
274 | content='line1\nline2\nline3\nline4\nline5\n', message='commit5', | |
275 | vcs_type=backend.alias, parent=commit3) |
|
275 | vcs_type=backend.alias, parent=commit3) | |
276 | commit_change( # commit 5 |
|
276 | commit_change( # commit 5 | |
277 | repo1.repo_name, filename='file1', |
|
277 | repo1.repo_name, filename='file1', | |
278 | content='line1\nline2\nline3\nline4\nline5\nline6\n', |
|
278 | content='line1\nline2\nline3\nline4\nline5\nline6\n', | |
279 | message='commit6', vcs_type=backend.alias, parent=commit4) |
|
279 | message='commit6', vcs_type=backend.alias, parent=commit4) | |
280 |
|
280 | |||
281 | response = self.app.get( |
|
281 | response = self.app.get( | |
282 | route_path('repo_compare', |
|
282 | route_path('repo_compare', | |
283 | repo_name=repo2.repo_name, |
|
283 | repo_name=repo2.repo_name, | |
284 | # parent of commit2, in target repo2 |
|
284 | # parent of commit2, in target repo2 | |
285 | source_ref_type="rev", source_ref=commit1.raw_id, |
|
285 | source_ref_type="rev", source_ref=commit1.raw_id, | |
286 | target_ref_type="rev", target_ref=commit4.raw_id, |
|
286 | target_ref_type="rev", target_ref=commit4.raw_id, | |
287 | params=dict(merge='1', target_repo=repo1.repo_name), |
|
287 | params=dict(merge='1', target_repo=repo1.repo_name), | |
288 | )) |
|
288 | )) | |
289 | response.mustcontain('%s@%s' % (repo2.repo_name, commit1.short_id)) |
|
289 | response.mustcontain('%s@%s' % (repo2.repo_name, commit1.short_id)) | |
290 | response.mustcontain('%s@%s' % (repo1.repo_name, commit4.short_id)) |
|
290 | response.mustcontain('%s@%s' % (repo1.repo_name, commit4.short_id)) | |
291 |
|
291 | |||
292 | # files |
|
292 | # files | |
293 | compare_page = ComparePage(response) |
|
293 | compare_page = ComparePage(response) | |
294 | compare_page.contains_change_summary(1, 3, 0) |
|
294 | compare_page.contains_change_summary(1, 3, 0) | |
295 | compare_page.contains_commits([commit2, commit3, commit4]) |
|
295 | compare_page.contains_commits([commit2, commit3, commit4]) | |
296 | anchor = 'a_c-{}-826e8142e6ba'.format(commit1.short_id) |
|
296 | anchor = 'a_c-{}-826e8142e6ba'.format(commit1.short_id) | |
297 | compare_page.contains_file_links_and_anchors([('file1', anchor),]) |
|
297 | compare_page.contains_file_links_and_anchors([('file1', anchor),]) | |
298 |
|
298 | |||
299 | @pytest.mark.xfail_backends("svn") |
|
299 | @pytest.mark.xfail_backends("svn") | |
300 | def test_compare_cherry_pick_commits_from_top(self, backend): |
|
300 | def test_compare_cherry_pick_commits_from_top(self, backend): | |
301 | # repo1: |
|
301 | # repo1: | |
302 | # commit0: |
|
302 | # commit0: | |
303 | # commit1: |
|
303 | # commit1: | |
304 | # repo1-fork- in which we will cherry pick bottom commits |
|
304 | # repo1-fork- in which we will cherry pick bottom commits | |
305 | # commit0: |
|
305 | # commit0: | |
306 | # commit1: |
|
306 | # commit1: | |
307 | # commit2: |
|
307 | # commit2: | |
308 | # commit3: x |
|
308 | # commit3: x | |
309 | # commit4: x |
|
309 | # commit4: x | |
310 | # commit5: x |
|
310 | # commit5: x | |
311 |
|
311 | |||
312 | # make repo1, and commit1+commit2 |
|
312 | # make repo1, and commit1+commit2 | |
313 | repo1 = backend.create_repo() |
|
313 | repo1 = backend.create_repo() | |
314 |
|
314 | |||
315 | # commit something ! |
|
315 | # commit something ! | |
316 | commit0 = commit_change( |
|
316 | commit0 = commit_change( | |
317 | repo1.repo_name, filename='file1', content='line1\n', |
|
317 | repo1.repo_name, filename='file1', content='line1\n', | |
318 | message='commit1', vcs_type=backend.alias, parent=None, |
|
318 | message='commit1', vcs_type=backend.alias, parent=None, | |
319 | newfile=True) |
|
319 | newfile=True) | |
320 | commit1 = commit_change( |
|
320 | commit1 = commit_change( | |
321 | repo1.repo_name, filename='file1', content='line1\nline2\n', |
|
321 | repo1.repo_name, filename='file1', content='line1\nline2\n', | |
322 | message='commit2', vcs_type=backend.alias, parent=commit0) |
|
322 | message='commit2', vcs_type=backend.alias, parent=commit0) | |
323 |
|
323 | |||
324 | # fork this repo |
|
324 | # fork this repo | |
325 | backend.create_fork() |
|
325 | backend.create_fork() | |
326 |
|
326 | |||
327 | # now make commit3-6 |
|
327 | # now make commit3-6 | |
328 | commit2 = commit_change( |
|
328 | commit2 = commit_change( | |
329 | repo1.repo_name, filename='file1', content='line1\nline2\nline3\n', |
|
329 | repo1.repo_name, filename='file1', content='line1\nline2\nline3\n', | |
330 | message='commit3', vcs_type=backend.alias, parent=commit1) |
|
330 | message='commit3', vcs_type=backend.alias, parent=commit1) | |
331 | commit3 = commit_change( |
|
331 | commit3 = commit_change( | |
332 | repo1.repo_name, filename='file1', |
|
332 | repo1.repo_name, filename='file1', | |
333 | content='line1\nline2\nline3\nline4\n', message='commit4', |
|
333 | content='line1\nline2\nline3\nline4\n', message='commit4', | |
334 | vcs_type=backend.alias, parent=commit2) |
|
334 | vcs_type=backend.alias, parent=commit2) | |
335 | commit4 = commit_change( |
|
335 | commit4 = commit_change( | |
336 | repo1.repo_name, filename='file1', |
|
336 | repo1.repo_name, filename='file1', | |
337 | content='line1\nline2\nline3\nline4\nline5\n', message='commit5', |
|
337 | content='line1\nline2\nline3\nline4\nline5\n', message='commit5', | |
338 | vcs_type=backend.alias, parent=commit3) |
|
338 | vcs_type=backend.alias, parent=commit3) | |
339 | commit5 = commit_change( |
|
339 | commit5 = commit_change( | |
340 | repo1.repo_name, filename='file1', |
|
340 | repo1.repo_name, filename='file1', | |
341 | content='line1\nline2\nline3\nline4\nline5\nline6\n', |
|
341 | content='line1\nline2\nline3\nline4\nline5\nline6\n', | |
342 | message='commit6', vcs_type=backend.alias, parent=commit4) |
|
342 | message='commit6', vcs_type=backend.alias, parent=commit4) | |
343 |
|
343 | |||
344 | response = self.app.get( |
|
344 | response = self.app.get( | |
345 | route_path('repo_compare', |
|
345 | route_path('repo_compare', | |
346 | repo_name=repo1.repo_name, |
|
346 | repo_name=repo1.repo_name, | |
347 | # parent of commit3, not in source repo2 |
|
347 | # parent of commit3, not in source repo2 | |
348 | source_ref_type="rev", source_ref=commit2.raw_id, |
|
348 | source_ref_type="rev", source_ref=commit2.raw_id, | |
349 | target_ref_type="rev", target_ref=commit5.raw_id, |
|
349 | target_ref_type="rev", target_ref=commit5.raw_id, | |
350 | params=dict(merge='1'),)) |
|
350 | params=dict(merge='1'),)) | |
351 |
|
351 | |||
352 | response.mustcontain('%s@%s' % (repo1.repo_name, commit2.short_id)) |
|
352 | response.mustcontain('%s@%s' % (repo1.repo_name, commit2.short_id)) | |
353 | response.mustcontain('%s@%s' % (repo1.repo_name, commit5.short_id)) |
|
353 | response.mustcontain('%s@%s' % (repo1.repo_name, commit5.short_id)) | |
354 |
|
354 | |||
355 | compare_page = ComparePage(response) |
|
355 | compare_page = ComparePage(response) | |
356 | compare_page.contains_change_summary(1, 3, 0) |
|
356 | compare_page.contains_change_summary(1, 3, 0) | |
357 | compare_page.contains_commits([commit3, commit4, commit5]) |
|
357 | compare_page.contains_commits([commit3, commit4, commit5]) | |
358 |
|
358 | |||
359 | # files |
|
359 | # files | |
360 | anchor = 'a_c-{}-826e8142e6ba'.format(commit2.short_id) |
|
360 | anchor = 'a_c-{}-826e8142e6ba'.format(commit2.short_id) | |
361 | compare_page.contains_file_links_and_anchors([('file1', anchor),]) |
|
361 | compare_page.contains_file_links_and_anchors([('file1', anchor),]) | |
362 |
|
362 | |||
363 | @pytest.mark.xfail_backends("svn") |
|
363 | @pytest.mark.xfail_backends("svn") | |
364 | def test_compare_remote_branches(self, backend): |
|
364 | def test_compare_remote_branches(self, backend): | |
365 | repo1 = backend.repo |
|
365 | repo1 = backend.repo | |
366 | repo2 = backend.create_fork() |
|
366 | repo2 = backend.create_fork() | |
367 |
|
367 | |||
368 | commit_id1 = repo1.get_commit(commit_idx=3).raw_id |
|
368 | commit_id1 = repo1.get_commit(commit_idx=3).raw_id | |
369 | commit_id1_short = repo1.get_commit(commit_idx=3).short_id |
|
369 | commit_id1_short = repo1.get_commit(commit_idx=3).short_id | |
370 | commit_id2 = repo1.get_commit(commit_idx=6).raw_id |
|
370 | commit_id2 = repo1.get_commit(commit_idx=6).raw_id | |
371 | commit_id2_short = repo1.get_commit(commit_idx=6).short_id |
|
371 | commit_id2_short = repo1.get_commit(commit_idx=6).short_id | |
372 |
|
372 | |||
373 | response = self.app.get( |
|
373 | response = self.app.get( | |
374 | route_path('repo_compare', |
|
374 | route_path('repo_compare', | |
375 | repo_name=repo1.repo_name, |
|
375 | repo_name=repo1.repo_name, | |
376 | source_ref_type="rev", source_ref=commit_id1, |
|
376 | source_ref_type="rev", source_ref=commit_id1, | |
377 | target_ref_type="rev", target_ref=commit_id2, |
|
377 | target_ref_type="rev", target_ref=commit_id2, | |
378 | params=dict(merge='1', target_repo=repo2.repo_name), |
|
378 | params=dict(merge='1', target_repo=repo2.repo_name), | |
379 | )) |
|
379 | )) | |
380 |
|
380 | |||
381 | response.mustcontain('%s@%s' % (repo1.repo_name, commit_id1)) |
|
381 | response.mustcontain('%s@%s' % (repo1.repo_name, commit_id1)) | |
382 | response.mustcontain('%s@%s' % (repo2.repo_name, commit_id2)) |
|
382 | response.mustcontain('%s@%s' % (repo2.repo_name, commit_id2)) | |
383 |
|
383 | |||
384 | compare_page = ComparePage(response) |
|
384 | compare_page = ComparePage(response) | |
385 |
|
385 | |||
386 | # outgoing commits between those commits |
|
386 | # outgoing commits between those commits | |
387 | compare_page.contains_commits( |
|
387 | compare_page.contains_commits( | |
388 | [repo2.get_commit(commit_idx=x) for x in [4, 5, 6]]) |
|
388 | [repo2.get_commit(commit_idx=x) for x in [4, 5, 6]]) | |
389 |
|
389 | |||
390 | # files |
|
390 | # files | |
391 | compare_page.contains_file_links_and_anchors([ |
|
391 | compare_page.contains_file_links_and_anchors([ | |
392 | ('vcs/backends/hg.py', 'a_c-{}-9c390eb52cd6'.format(commit_id2_short)), |
|
392 | ('vcs/backends/hg.py', 'a_c-{}-9c390eb52cd6'.format(commit_id2_short)), | |
393 | ('vcs/backends/__init__.py', 'a_c-{}-41b41c1f2796'.format(commit_id1_short)), |
|
393 | ('vcs/backends/__init__.py', 'a_c-{}-41b41c1f2796'.format(commit_id1_short)), | |
394 | ('vcs/backends/base.py', 'a_c-{}-2f574d260608'.format(commit_id1_short)), |
|
394 | ('vcs/backends/base.py', 'a_c-{}-2f574d260608'.format(commit_id1_short)), | |
395 | ]) |
|
395 | ]) | |
396 |
|
396 | |||
397 | @pytest.mark.xfail_backends("svn") |
|
397 | @pytest.mark.xfail_backends("svn") | |
398 | def test_source_repo_new_commits_after_forking_simple_diff(self, backend): |
|
398 | def test_source_repo_new_commits_after_forking_simple_diff(self, backend): | |
399 | repo1 = backend.create_repo() |
|
399 | repo1 = backend.create_repo() | |
400 | r1_name = repo1.repo_name |
|
400 | r1_name = repo1.repo_name | |
401 |
|
401 | |||
402 | commit0 = commit_change( |
|
402 | commit0 = commit_change( | |
403 | repo=r1_name, filename='file1', |
|
403 | repo=r1_name, filename='file1', | |
404 | content='line1', message='commit1', vcs_type=backend.alias, |
|
404 | content='line1', message='commit1', vcs_type=backend.alias, | |
405 | newfile=True) |
|
405 | newfile=True) | |
406 | assert repo1.scm_instance().commit_ids == [commit0.raw_id] |
|
406 | assert repo1.scm_instance().commit_ids == [commit0.raw_id] | |
407 |
|
407 | |||
408 | # fork the repo1 |
|
408 | # fork the repo1 | |
409 | repo2 = backend.create_fork() |
|
409 | repo2 = backend.create_fork() | |
410 | assert repo2.scm_instance().commit_ids == [commit0.raw_id] |
|
410 | assert repo2.scm_instance().commit_ids == [commit0.raw_id] | |
411 |
|
411 | |||
412 | self.r2_id = repo2.repo_id |
|
412 | self.r2_id = repo2.repo_id | |
413 | r2_name = repo2.repo_name |
|
413 | r2_name = repo2.repo_name | |
414 |
|
414 | |||
415 | commit1 = commit_change( |
|
415 | commit1 = commit_change( | |
416 | repo=r2_name, filename='file1-fork', |
|
416 | repo=r2_name, filename='file1-fork', | |
417 | content='file1-line1-from-fork', message='commit1-fork', |
|
417 | content='file1-line1-from-fork', message='commit1-fork', | |
418 | vcs_type=backend.alias, parent=repo2.scm_instance()[-1], |
|
418 | vcs_type=backend.alias, parent=repo2.scm_instance()[-1], | |
419 | newfile=True) |
|
419 | newfile=True) | |
420 |
|
420 | |||
421 | commit2 = commit_change( |
|
421 | commit2 = commit_change( | |
422 | repo=r2_name, filename='file2-fork', |
|
422 | repo=r2_name, filename='file2-fork', | |
423 | content='file2-line1-from-fork', message='commit2-fork', |
|
423 | content='file2-line1-from-fork', message='commit2-fork', | |
424 | vcs_type=backend.alias, parent=commit1, |
|
424 | vcs_type=backend.alias, parent=commit1, | |
425 | newfile=True) |
|
425 | newfile=True) | |
426 |
|
426 | |||
427 | commit_change( # commit 3 |
|
427 | commit_change( # commit 3 | |
428 | repo=r2_name, filename='file3-fork', |
|
428 | repo=r2_name, filename='file3-fork', | |
429 | content='file3-line1-from-fork', message='commit3-fork', |
|
429 | content='file3-line1-from-fork', message='commit3-fork', | |
430 | vcs_type=backend.alias, parent=commit2, newfile=True) |
|
430 | vcs_type=backend.alias, parent=commit2, newfile=True) | |
431 |
|
431 | |||
432 | # compare ! |
|
432 | # compare ! | |
433 | commit_id1 = repo1.scm_instance().DEFAULT_BRANCH_NAME |
|
433 | commit_id1 = repo1.scm_instance().DEFAULT_BRANCH_NAME | |
434 | commit_id2 = repo2.scm_instance().DEFAULT_BRANCH_NAME |
|
434 | commit_id2 = repo2.scm_instance().DEFAULT_BRANCH_NAME | |
435 |
|
435 | |||
436 | response = self.app.get( |
|
436 | response = self.app.get( | |
437 | route_path('repo_compare', |
|
437 | route_path('repo_compare', | |
438 | repo_name=r2_name, |
|
438 | repo_name=r2_name, | |
439 | source_ref_type="branch", source_ref=commit_id1, |
|
439 | source_ref_type="branch", source_ref=commit_id1, | |
440 | target_ref_type="branch", target_ref=commit_id2, |
|
440 | target_ref_type="branch", target_ref=commit_id2, | |
441 | params=dict(merge='1', target_repo=r1_name), |
|
441 | params=dict(merge='1', target_repo=r1_name), | |
442 | )) |
|
442 | )) | |
443 |
|
443 | |||
444 | response.mustcontain('%s@%s' % (r2_name, commit_id1)) |
|
444 | response.mustcontain('%s@%s' % (r2_name, commit_id1)) | |
445 | response.mustcontain('%s@%s' % (r1_name, commit_id2)) |
|
445 | response.mustcontain('%s@%s' % (r1_name, commit_id2)) | |
446 | response.mustcontain('No files') |
|
446 | response.mustcontain('No files') | |
447 | response.mustcontain('No commits in this compare') |
|
447 | response.mustcontain('No commits in this compare') | |
448 |
|
448 | |||
449 | commit0 = commit_change( |
|
449 | commit0 = commit_change( | |
450 | repo=r1_name, filename='file2', |
|
450 | repo=r1_name, filename='file2', | |
451 | content='line1-added-after-fork', message='commit2-parent', |
|
451 | content='line1-added-after-fork', message='commit2-parent', | |
452 | vcs_type=backend.alias, parent=None, newfile=True) |
|
452 | vcs_type=backend.alias, parent=None, newfile=True) | |
453 |
|
453 | |||
454 | # compare ! |
|
454 | # compare ! | |
455 | response = self.app.get( |
|
455 | response = self.app.get( | |
456 | route_path('repo_compare', |
|
456 | route_path('repo_compare', | |
457 | repo_name=r2_name, |
|
457 | repo_name=r2_name, | |
458 | source_ref_type="branch", source_ref=commit_id1, |
|
458 | source_ref_type="branch", source_ref=commit_id1, | |
459 | target_ref_type="branch", target_ref=commit_id2, |
|
459 | target_ref_type="branch", target_ref=commit_id2, | |
460 | params=dict(merge='1', target_repo=r1_name), |
|
460 | params=dict(merge='1', target_repo=r1_name), | |
461 | )) |
|
461 | )) | |
462 |
|
462 | |||
463 | response.mustcontain('%s@%s' % (r2_name, commit_id1)) |
|
463 | response.mustcontain('%s@%s' % (r2_name, commit_id1)) | |
464 | response.mustcontain('%s@%s' % (r1_name, commit_id2)) |
|
464 | response.mustcontain('%s@%s' % (r1_name, commit_id2)) | |
465 |
|
465 | |||
466 | response.mustcontain("""commit2-parent""") |
|
466 | response.mustcontain("""commit2-parent""") | |
467 | response.mustcontain("""line1-added-after-fork""") |
|
467 | response.mustcontain("""line1-added-after-fork""") | |
468 | compare_page = ComparePage(response) |
|
468 | compare_page = ComparePage(response) | |
469 | compare_page.contains_change_summary(1, 1, 0) |
|
469 | compare_page.contains_change_summary(1, 1, 0) | |
470 |
|
470 | |||
471 | @pytest.mark.xfail_backends("svn") |
|
471 | @pytest.mark.xfail_backends("svn") | |
472 | def test_compare_commits(self, backend, xhr_header): |
|
472 | def test_compare_commits(self, backend, xhr_header): | |
473 | commit0 = backend.repo.get_commit(commit_idx=0) |
|
473 | commit0 = backend.repo.get_commit(commit_idx=0) | |
474 | commit1 = backend.repo.get_commit(commit_idx=1) |
|
474 | commit1 = backend.repo.get_commit(commit_idx=1) | |
475 |
|
475 | |||
476 | response = self.app.get( |
|
476 | response = self.app.get( | |
477 | route_path('repo_compare', |
|
477 | route_path('repo_compare', | |
478 | repo_name=backend.repo_name, |
|
478 | repo_name=backend.repo_name, | |
479 | source_ref_type="rev", source_ref=commit0.raw_id, |
|
479 | source_ref_type="rev", source_ref=commit0.raw_id, | |
480 | target_ref_type="rev", target_ref=commit1.raw_id, |
|
480 | target_ref_type="rev", target_ref=commit1.raw_id, | |
481 | params=dict(merge='1') |
|
481 | params=dict(merge='1') | |
482 | ), |
|
482 | ), | |
483 | extra_environ=xhr_header, ) |
|
483 | extra_environ=xhr_header, ) | |
484 |
|
484 | |||
485 | # outgoing commits between those commits |
|
485 | # outgoing commits between those commits | |
486 | compare_page = ComparePage(response) |
|
486 | compare_page = ComparePage(response) | |
487 | compare_page.contains_commits(commits=[commit1], ancestors=[commit0]) |
|
487 | compare_page.contains_commits(commits=[commit1], ancestors=[commit0]) | |
488 |
|
488 | |||
489 | def test_errors_when_comparing_unknown_source_repo(self, backend): |
|
489 | def test_errors_when_comparing_unknown_source_repo(self, backend): | |
490 | repo = backend.repo |
|
490 | repo = backend.repo | |
491 | badrepo = 'badrepo' |
|
491 | badrepo = 'badrepo' | |
492 |
|
492 | |||
493 | response = self.app.get( |
|
493 | response = self.app.get( | |
494 | route_path('repo_compare', |
|
494 | route_path('repo_compare', | |
495 | repo_name=badrepo, |
|
495 | repo_name=badrepo, | |
496 | source_ref_type="rev", source_ref='tip', |
|
496 | source_ref_type="rev", source_ref='tip', | |
497 | target_ref_type="rev", target_ref='tip', |
|
497 | target_ref_type="rev", target_ref='tip', | |
498 | params=dict(merge='1', target_repo=repo.repo_name) |
|
498 | params=dict(merge='1', target_repo=repo.repo_name) | |
499 | ), |
|
499 | ), | |
500 | status=404) |
|
500 | status=404) | |
501 |
|
501 | |||
502 | def test_errors_when_comparing_unknown_target_repo(self, backend): |
|
502 | def test_errors_when_comparing_unknown_target_repo(self, backend): | |
503 | repo = backend.repo |
|
503 | repo = backend.repo | |
504 | badrepo = 'badrepo' |
|
504 | badrepo = 'badrepo' | |
505 |
|
505 | |||
506 | response = self.app.get( |
|
506 | response = self.app.get( | |
507 | route_path('repo_compare', |
|
507 | route_path('repo_compare', | |
508 | repo_name=repo.repo_name, |
|
508 | repo_name=repo.repo_name, | |
509 | source_ref_type="rev", source_ref='tip', |
|
509 | source_ref_type="rev", source_ref='tip', | |
510 | target_ref_type="rev", target_ref='tip', |
|
510 | target_ref_type="rev", target_ref='tip', | |
511 | params=dict(merge='1', target_repo=badrepo), |
|
511 | params=dict(merge='1', target_repo=badrepo), | |
512 | ), |
|
512 | ), | |
513 | status=302) |
|
513 | status=302) | |
514 | redirected = response.follow() |
|
514 | redirected = response.follow() | |
515 | redirected.mustcontain( |
|
515 | redirected.mustcontain( | |
516 | 'Could not find the target repo: `{}`'.format(badrepo)) |
|
516 | 'Could not find the target repo: `{}`'.format(badrepo)) | |
517 |
|
517 | |||
518 | def test_compare_not_in_preview_mode(self, backend_stub): |
|
518 | def test_compare_not_in_preview_mode(self, backend_stub): | |
519 | commit0 = backend_stub.repo.get_commit(commit_idx=0) |
|
519 | commit0 = backend_stub.repo.get_commit(commit_idx=0) | |
520 | commit1 = backend_stub.repo.get_commit(commit_idx=1) |
|
520 | commit1 = backend_stub.repo.get_commit(commit_idx=1) | |
521 |
|
521 | |||
522 | response = self.app.get( |
|
522 | response = self.app.get( | |
523 | route_path('repo_compare', |
|
523 | route_path('repo_compare', | |
524 | repo_name=backend_stub.repo_name, |
|
524 | repo_name=backend_stub.repo_name, | |
525 | source_ref_type="rev", source_ref=commit0.raw_id, |
|
525 | source_ref_type="rev", source_ref=commit0.raw_id, | |
526 | target_ref_type="rev", target_ref=commit1.raw_id, |
|
526 | target_ref_type="rev", target_ref=commit1.raw_id, | |
527 | )) |
|
527 | )) | |
528 |
|
528 | |||
529 | # outgoing commits between those commits |
|
529 | # outgoing commits between those commits | |
530 | compare_page = ComparePage(response) |
|
530 | compare_page = ComparePage(response) | |
531 | compare_page.swap_is_visible() |
|
531 | compare_page.swap_is_visible() | |
532 | compare_page.target_source_are_enabled() |
|
532 | compare_page.target_source_are_enabled() | |
533 |
|
533 | |||
534 | def test_compare_of_fork_with_largefiles(self, backend_hg, settings_util): |
|
534 | def test_compare_of_fork_with_largefiles(self, backend_hg, settings_util): | |
535 | orig = backend_hg.create_repo(number_of_commits=1) |
|
535 | orig = backend_hg.create_repo(number_of_commits=1) | |
536 | fork = backend_hg.create_fork() |
|
536 | fork = backend_hg.create_fork() | |
537 |
|
537 | |||
538 | settings_util.create_repo_rhodecode_ui( |
|
538 | settings_util.create_repo_rhodecode_ui( | |
539 | orig, 'extensions', value='', key='largefiles', active=False) |
|
539 | orig, 'extensions', value='', key='largefiles', active=False) | |
540 | settings_util.create_repo_rhodecode_ui( |
|
540 | settings_util.create_repo_rhodecode_ui( | |
541 | fork, 'extensions', value='', key='largefiles', active=True) |
|
541 | fork, 'extensions', value='', key='largefiles', active=True) | |
542 |
|
542 | |||
543 | compare_module = ('rhodecode.lib.vcs.backends.hg.repository.' |
|
543 | compare_module = ('rhodecode.lib.vcs.backends.hg.repository.' | |
544 | 'MercurialRepository.compare') |
|
544 | 'MercurialRepository.compare') | |
545 | with mock.patch(compare_module) as compare_mock: |
|
545 | with mock.patch(compare_module) as compare_mock: | |
546 | compare_mock.side_effect = RepositoryRequirementError() |
|
546 | compare_mock.side_effect = RepositoryRequirementError() | |
547 |
|
547 | |||
548 | response = self.app.get( |
|
548 | response = self.app.get( | |
549 | route_path('repo_compare', |
|
549 | route_path('repo_compare', | |
550 | repo_name=orig.repo_name, |
|
550 | repo_name=orig.repo_name, | |
551 | source_ref_type="rev", source_ref="tip", |
|
551 | source_ref_type="rev", source_ref="tip", | |
552 | target_ref_type="rev", target_ref="tip", |
|
552 | target_ref_type="rev", target_ref="tip", | |
553 | params=dict(merge='1', target_repo=fork.repo_name), |
|
553 | params=dict(merge='1', target_repo=fork.repo_name), | |
554 | ), |
|
554 | ), | |
555 | status=302) |
|
555 | status=302) | |
556 |
|
556 | |||
557 | assert_session_flash( |
|
557 | assert_session_flash( | |
558 | response, |
|
558 | response, | |
559 | 'Could not compare repos with different large file settings') |
|
559 | 'Could not compare repos with different large file settings') | |
560 |
|
560 | |||
561 |
|
561 | |||
562 | @pytest.mark.usefixtures("autologin_user") |
|
562 | @pytest.mark.usefixtures("autologin_user") | |
563 | class TestCompareControllerSvn(object): |
|
563 | class TestCompareControllerSvn(object): | |
564 |
|
564 | |||
565 | def test_supports_references_with_path(self, app, backend_svn): |
|
565 | def test_supports_references_with_path(self, app, backend_svn): | |
566 | repo = backend_svn['svn-simple-layout'] |
|
566 | repo = backend_svn['svn-simple-layout'] | |
567 | commit_id = repo.get_commit(commit_idx=-1).raw_id |
|
567 | commit_id = repo.get_commit(commit_idx=-1).raw_id | |
568 | response = app.get( |
|
568 | response = app.get( | |
569 | route_path('repo_compare', |
|
569 | route_path('repo_compare', | |
570 | repo_name=repo.repo_name, |
|
570 | repo_name=repo.repo_name, | |
571 | source_ref_type="tag", |
|
571 | source_ref_type="tag", | |
572 | source_ref="%s@%s" % ('tags/v0.1', commit_id), |
|
572 | source_ref="%s@%s" % ('tags/v0.1', commit_id), | |
573 | target_ref_type="tag", |
|
573 | target_ref_type="tag", | |
574 | target_ref="%s@%s" % ('tags/v0.2', commit_id), |
|
574 | target_ref="%s@%s" % ('tags/v0.2', commit_id), | |
575 | params=dict(merge='1'), |
|
575 | params=dict(merge='1'), | |
576 | ), |
|
576 | ), | |
577 | status=200) |
|
577 | status=200) | |
578 |
|
578 | |||
579 | # Expecting no commits, since both paths are at the same revision |
|
579 | # Expecting no commits, since both paths are at the same revision | |
580 | response.mustcontain('No commits in this compare') |
|
580 | response.mustcontain('No commits in this compare') | |
581 |
|
581 | |||
582 | # Should find only one file changed when comparing those two tags |
|
582 | # Should find only one file changed when comparing those two tags | |
583 | response.mustcontain('example.py') |
|
583 | response.mustcontain('example.py') | |
584 | compare_page = ComparePage(response) |
|
584 | compare_page = ComparePage(response) | |
585 | compare_page.contains_change_summary(1, 5, 1) |
|
585 | compare_page.contains_change_summary(1, 5, 1) | |
586 |
|
586 | |||
587 | def test_shows_commits_if_different_ids(self, app, backend_svn): |
|
587 | def test_shows_commits_if_different_ids(self, app, backend_svn): | |
588 | repo = backend_svn['svn-simple-layout'] |
|
588 | repo = backend_svn['svn-simple-layout'] | |
589 | source_id = repo.get_commit(commit_idx=-6).raw_id |
|
589 | source_id = repo.get_commit(commit_idx=-6).raw_id | |
590 | target_id = repo.get_commit(commit_idx=-1).raw_id |
|
590 | target_id = repo.get_commit(commit_idx=-1).raw_id | |
591 | response = app.get( |
|
591 | response = app.get( | |
592 | route_path('repo_compare', |
|
592 | route_path('repo_compare', | |
593 | repo_name=repo.repo_name, |
|
593 | repo_name=repo.repo_name, | |
594 | source_ref_type="tag", |
|
594 | source_ref_type="tag", | |
595 | source_ref="%s@%s" % ('tags/v0.1', source_id), |
|
595 | source_ref="%s@%s" % ('tags/v0.1', source_id), | |
596 | target_ref_type="tag", |
|
596 | target_ref_type="tag", | |
597 | target_ref="%s@%s" % ('tags/v0.2', target_id), |
|
597 | target_ref="%s@%s" % ('tags/v0.2', target_id), | |
598 | params=dict(merge='1') |
|
598 | params=dict(merge='1') | |
599 | ), |
|
599 | ), | |
600 | status=200) |
|
600 | status=200) | |
601 |
|
601 | |||
602 | # It should show commits |
|
602 | # It should show commits | |
603 | assert 'No commits in this compare' not in response.body |
|
603 | assert 'No commits in this compare' not in response.body | |
604 |
|
604 | |||
605 | # Should find only one file changed when comparing those two tags |
|
605 | # Should find only one file changed when comparing those two tags | |
606 | response.mustcontain('example.py') |
|
606 | response.mustcontain('example.py') | |
607 | compare_page = ComparePage(response) |
|
607 | compare_page = ComparePage(response) | |
608 | compare_page.contains_change_summary(1, 5, 1) |
|
608 | compare_page.contains_change_summary(1, 5, 1) | |
609 |
|
609 | |||
610 |
|
610 | |||
611 | class ComparePage(AssertResponse): |
|
611 | class ComparePage(AssertResponse): | |
612 | """ |
|
612 | """ | |
613 | Abstracts the page template from the tests |
|
613 | Abstracts the page template from the tests | |
614 | """ |
|
614 | """ | |
615 |
|
615 | |||
616 | def contains_file_links_and_anchors(self, files): |
|
616 | def contains_file_links_and_anchors(self, files): | |
617 | doc = lxml.html.fromstring(self.response.body) |
|
617 | doc = lxml.html.fromstring(self.response.body) | |
618 | for filename, file_id in files: |
|
618 | for filename, file_id in files: | |
619 | self.contains_one_anchor(file_id) |
|
619 | self.contains_one_anchor(file_id) | |
620 | diffblock = doc.cssselect('[data-f-path="%s"]' % filename) |
|
620 | diffblock = doc.cssselect('[data-f-path="%s"]' % filename) | |
621 |
assert len(diffblock) == |
|
621 | assert len(diffblock) == 2 | |
622 | assert len(diffblock[0].cssselect('a[href="#%s"]' % file_id)) == 1 |
|
622 | assert len(diffblock[0].cssselect('a[href="#%s"]' % file_id)) == 1 | |
623 |
|
623 | |||
624 | def contains_change_summary(self, files_changed, inserted, deleted): |
|
624 | def contains_change_summary(self, files_changed, inserted, deleted): | |
625 | template = ( |
|
625 | template = ( | |
626 | "{files_changed} file{plural} changed: " |
|
626 | "{files_changed} file{plural} changed: " | |
627 | "{inserted} inserted, {deleted} deleted") |
|
627 | "{inserted} inserted, {deleted} deleted") | |
628 | self.response.mustcontain(template.format( |
|
628 | self.response.mustcontain(template.format( | |
629 | files_changed=files_changed, |
|
629 | files_changed=files_changed, | |
630 | plural="s" if files_changed > 1 else "", |
|
630 | plural="s" if files_changed > 1 else "", | |
631 | inserted=inserted, |
|
631 | inserted=inserted, | |
632 | deleted=deleted)) |
|
632 | deleted=deleted)) | |
633 |
|
633 | |||
634 | def contains_commits(self, commits, ancestors=None): |
|
634 | def contains_commits(self, commits, ancestors=None): | |
635 | response = self.response |
|
635 | response = self.response | |
636 |
|
636 | |||
637 | for commit in commits: |
|
637 | for commit in commits: | |
638 | # Expecting to see the commit message in an element which |
|
638 | # Expecting to see the commit message in an element which | |
639 | # has the ID "c-{commit.raw_id}" |
|
639 | # has the ID "c-{commit.raw_id}" | |
640 | self.element_contains('#c-' + commit.raw_id, commit.message) |
|
640 | self.element_contains('#c-' + commit.raw_id, commit.message) | |
641 | self.contains_one_link( |
|
641 | self.contains_one_link( | |
642 | 'r%s:%s' % (commit.idx, commit.short_id), |
|
642 | 'r%s:%s' % (commit.idx, commit.short_id), | |
643 | self._commit_url(commit)) |
|
643 | self._commit_url(commit)) | |
644 | if ancestors: |
|
644 | if ancestors: | |
645 | response.mustcontain('Ancestor') |
|
645 | response.mustcontain('Ancestor') | |
646 | for ancestor in ancestors: |
|
646 | for ancestor in ancestors: | |
647 | self.contains_one_link( |
|
647 | self.contains_one_link( | |
648 | ancestor.short_id, self._commit_url(ancestor)) |
|
648 | ancestor.short_id, self._commit_url(ancestor)) | |
649 |
|
649 | |||
650 | def _commit_url(self, commit): |
|
650 | def _commit_url(self, commit): | |
651 | return '/%s/changeset/%s' % (commit.repository.name, commit.raw_id) |
|
651 | return '/%s/changeset/%s' % (commit.repository.name, commit.raw_id) | |
652 |
|
652 | |||
653 | def swap_is_hidden(self): |
|
653 | def swap_is_hidden(self): | |
654 | assert '<a id="btn-swap"' not in self.response.text |
|
654 | assert '<a id="btn-swap"' not in self.response.text | |
655 |
|
655 | |||
656 | def swap_is_visible(self): |
|
656 | def swap_is_visible(self): | |
657 | assert '<a id="btn-swap"' in self.response.text |
|
657 | assert '<a id="btn-swap"' in self.response.text | |
658 |
|
658 | |||
659 | def target_source_are_disabled(self): |
|
659 | def target_source_are_disabled(self): | |
660 | response = self.response |
|
660 | response = self.response | |
661 | response.mustcontain("var enable_fields = false;") |
|
661 | response.mustcontain("var enable_fields = false;") | |
662 | response.mustcontain('.select2("enable", enable_fields)') |
|
662 | response.mustcontain('.select2("enable", enable_fields)') | |
663 |
|
663 | |||
664 | def target_source_are_enabled(self): |
|
664 | def target_source_are_enabled(self): | |
665 | response = self.response |
|
665 | response = self.response | |
666 | response.mustcontain("var enable_fields = true;") |
|
666 | response.mustcontain("var enable_fields = true;") |
@@ -1,1228 +1,1228 b'' | |||||
1 | # -*- coding: utf-8 -*- |
|
1 | # -*- coding: utf-8 -*- | |
2 |
|
2 | |||
3 | # Copyright (C) 2011-2018 RhodeCode GmbH |
|
3 | # Copyright (C) 2011-2018 RhodeCode GmbH | |
4 | # |
|
4 | # | |
5 | # This program is free software: you can redistribute it and/or modify |
|
5 | # This program is free software: you can redistribute it and/or modify | |
6 | # it under the terms of the GNU Affero General Public License, version 3 |
|
6 | # it under the terms of the GNU Affero General Public License, version 3 | |
7 | # (only), as published by the Free Software Foundation. |
|
7 | # (only), as published by the Free Software Foundation. | |
8 | # |
|
8 | # | |
9 | # This program is distributed in the hope that it will be useful, |
|
9 | # This program is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | # GNU General Public License for more details. |
|
12 | # GNU General Public License for more details. | |
13 | # |
|
13 | # | |
14 | # You should have received a copy of the GNU Affero General Public License |
|
14 | # You should have received a copy of the GNU Affero General Public License | |
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | # |
|
16 | # | |
17 | # This program is dual-licensed. If you wish to learn more about the |
|
17 | # This program is dual-licensed. If you wish to learn more about the | |
18 | # RhodeCode Enterprise Edition, including its added features, Support services, |
|
18 | # RhodeCode Enterprise Edition, including its added features, Support services, | |
19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ |
|
19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ | |
20 |
|
20 | |||
21 |
|
21 | |||
22 | """ |
|
22 | """ | |
23 | Set of diffing helpers, previously part of vcs |
|
23 | Set of diffing helpers, previously part of vcs | |
24 | """ |
|
24 | """ | |
25 |
|
25 | |||
26 | import os |
|
26 | import os | |
27 | import re |
|
27 | import re | |
28 | import bz2 |
|
28 | import bz2 | |
29 |
|
29 | |||
30 | import collections |
|
30 | import collections | |
31 | import difflib |
|
31 | import difflib | |
32 | import logging |
|
32 | import logging | |
33 | import cPickle as pickle |
|
33 | import cPickle as pickle | |
34 | from itertools import tee, imap |
|
34 | from itertools import tee, imap | |
35 |
|
35 | |||
36 | from rhodecode.lib.vcs.exceptions import VCSError |
|
36 | from rhodecode.lib.vcs.exceptions import VCSError | |
37 | from rhodecode.lib.vcs.nodes import FileNode, SubModuleNode |
|
37 | from rhodecode.lib.vcs.nodes import FileNode, SubModuleNode | |
38 | from rhodecode.lib.utils2 import safe_unicode, safe_str |
|
38 | from rhodecode.lib.utils2 import safe_unicode, safe_str | |
39 |
|
39 | |||
40 | log = logging.getLogger(__name__) |
|
40 | log = logging.getLogger(__name__) | |
41 |
|
41 | |||
42 | # define max context, a file with more than this numbers of lines is unusable |
|
42 | # define max context, a file with more than this numbers of lines is unusable | |
43 | # in browser anyway |
|
43 | # in browser anyway | |
44 | MAX_CONTEXT = 1024 * 1014 |
|
44 | MAX_CONTEXT = 1024 * 1014 | |
45 |
|
45 | |||
46 |
|
46 | |||
47 | class OPS(object): |
|
47 | class OPS(object): | |
48 | ADD = 'A' |
|
48 | ADD = 'A' | |
49 | MOD = 'M' |
|
49 | MOD = 'M' | |
50 | DEL = 'D' |
|
50 | DEL = 'D' | |
51 |
|
51 | |||
52 |
|
52 | |||
53 | def get_gitdiff(filenode_old, filenode_new, ignore_whitespace=True, context=3): |
|
53 | def get_gitdiff(filenode_old, filenode_new, ignore_whitespace=True, context=3): | |
54 | """ |
|
54 | """ | |
55 | Returns git style diff between given ``filenode_old`` and ``filenode_new``. |
|
55 | Returns git style diff between given ``filenode_old`` and ``filenode_new``. | |
56 |
|
56 | |||
57 | :param ignore_whitespace: ignore whitespaces in diff |
|
57 | :param ignore_whitespace: ignore whitespaces in diff | |
58 | """ |
|
58 | """ | |
59 | # make sure we pass in default context |
|
59 | # make sure we pass in default context | |
60 | context = context or 3 |
|
60 | context = context or 3 | |
61 | # protect against IntOverflow when passing HUGE context |
|
61 | # protect against IntOverflow when passing HUGE context | |
62 | if context > MAX_CONTEXT: |
|
62 | if context > MAX_CONTEXT: | |
63 | context = MAX_CONTEXT |
|
63 | context = MAX_CONTEXT | |
64 |
|
64 | |||
65 | submodules = filter(lambda o: isinstance(o, SubModuleNode), |
|
65 | submodules = filter(lambda o: isinstance(o, SubModuleNode), | |
66 | [filenode_new, filenode_old]) |
|
66 | [filenode_new, filenode_old]) | |
67 | if submodules: |
|
67 | if submodules: | |
68 | return '' |
|
68 | return '' | |
69 |
|
69 | |||
70 | for filenode in (filenode_old, filenode_new): |
|
70 | for filenode in (filenode_old, filenode_new): | |
71 | if not isinstance(filenode, FileNode): |
|
71 | if not isinstance(filenode, FileNode): | |
72 | raise VCSError( |
|
72 | raise VCSError( | |
73 | "Given object should be FileNode object, not %s" |
|
73 | "Given object should be FileNode object, not %s" | |
74 | % filenode.__class__) |
|
74 | % filenode.__class__) | |
75 |
|
75 | |||
76 | repo = filenode_new.commit.repository |
|
76 | repo = filenode_new.commit.repository | |
77 | old_commit = filenode_old.commit or repo.EMPTY_COMMIT |
|
77 | old_commit = filenode_old.commit or repo.EMPTY_COMMIT | |
78 | new_commit = filenode_new.commit |
|
78 | new_commit = filenode_new.commit | |
79 |
|
79 | |||
80 | vcs_gitdiff = repo.get_diff( |
|
80 | vcs_gitdiff = repo.get_diff( | |
81 | old_commit, new_commit, filenode_new.path, |
|
81 | old_commit, new_commit, filenode_new.path, | |
82 | ignore_whitespace, context, path1=filenode_old.path) |
|
82 | ignore_whitespace, context, path1=filenode_old.path) | |
83 | return vcs_gitdiff |
|
83 | return vcs_gitdiff | |
84 |
|
84 | |||
85 | NEW_FILENODE = 1 |
|
85 | NEW_FILENODE = 1 | |
86 | DEL_FILENODE = 2 |
|
86 | DEL_FILENODE = 2 | |
87 | MOD_FILENODE = 3 |
|
87 | MOD_FILENODE = 3 | |
88 | RENAMED_FILENODE = 4 |
|
88 | RENAMED_FILENODE = 4 | |
89 | COPIED_FILENODE = 5 |
|
89 | COPIED_FILENODE = 5 | |
90 | CHMOD_FILENODE = 6 |
|
90 | CHMOD_FILENODE = 6 | |
91 | BIN_FILENODE = 7 |
|
91 | BIN_FILENODE = 7 | |
92 |
|
92 | |||
93 |
|
93 | |||
94 | class LimitedDiffContainer(object): |
|
94 | class LimitedDiffContainer(object): | |
95 |
|
95 | |||
96 | def __init__(self, diff_limit, cur_diff_size, diff): |
|
96 | def __init__(self, diff_limit, cur_diff_size, diff): | |
97 | self.diff = diff |
|
97 | self.diff = diff | |
98 | self.diff_limit = diff_limit |
|
98 | self.diff_limit = diff_limit | |
99 | self.cur_diff_size = cur_diff_size |
|
99 | self.cur_diff_size = cur_diff_size | |
100 |
|
100 | |||
101 | def __getitem__(self, key): |
|
101 | def __getitem__(self, key): | |
102 | return self.diff.__getitem__(key) |
|
102 | return self.diff.__getitem__(key) | |
103 |
|
103 | |||
104 | def __iter__(self): |
|
104 | def __iter__(self): | |
105 | for l in self.diff: |
|
105 | for l in self.diff: | |
106 | yield l |
|
106 | yield l | |
107 |
|
107 | |||
108 |
|
108 | |||
109 | class Action(object): |
|
109 | class Action(object): | |
110 | """ |
|
110 | """ | |
111 | Contains constants for the action value of the lines in a parsed diff. |
|
111 | Contains constants for the action value of the lines in a parsed diff. | |
112 | """ |
|
112 | """ | |
113 |
|
113 | |||
114 | ADD = 'add' |
|
114 | ADD = 'add' | |
115 | DELETE = 'del' |
|
115 | DELETE = 'del' | |
116 | UNMODIFIED = 'unmod' |
|
116 | UNMODIFIED = 'unmod' | |
117 |
|
117 | |||
118 | CONTEXT = 'context' |
|
118 | CONTEXT = 'context' | |
119 | OLD_NO_NL = 'old-no-nl' |
|
119 | OLD_NO_NL = 'old-no-nl' | |
120 | NEW_NO_NL = 'new-no-nl' |
|
120 | NEW_NO_NL = 'new-no-nl' | |
121 |
|
121 | |||
122 |
|
122 | |||
123 | class DiffProcessor(object): |
|
123 | class DiffProcessor(object): | |
124 | """ |
|
124 | """ | |
125 | Give it a unified or git diff and it returns a list of the files that were |
|
125 | Give it a unified or git diff and it returns a list of the files that were | |
126 | mentioned in the diff together with a dict of meta information that |
|
126 | mentioned in the diff together with a dict of meta information that | |
127 | can be used to render it in a HTML template. |
|
127 | can be used to render it in a HTML template. | |
128 |
|
128 | |||
129 | .. note:: Unicode handling |
|
129 | .. note:: Unicode handling | |
130 |
|
130 | |||
131 | The original diffs are a byte sequence and can contain filenames |
|
131 | The original diffs are a byte sequence and can contain filenames | |
132 | in mixed encodings. This class generally returns `unicode` objects |
|
132 | in mixed encodings. This class generally returns `unicode` objects | |
133 | since the result is intended for presentation to the user. |
|
133 | since the result is intended for presentation to the user. | |
134 |
|
134 | |||
135 | """ |
|
135 | """ | |
136 | _chunk_re = re.compile(r'^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(.*)') |
|
136 | _chunk_re = re.compile(r'^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(.*)') | |
137 | _newline_marker = re.compile(r'^\\ No newline at end of file') |
|
137 | _newline_marker = re.compile(r'^\\ No newline at end of file') | |
138 |
|
138 | |||
139 | # used for inline highlighter word split |
|
139 | # used for inline highlighter word split | |
140 | _token_re = re.compile(r'()(>|<|&|\W+?)') |
|
140 | _token_re = re.compile(r'()(>|<|&|\W+?)') | |
141 |
|
141 | |||
142 | # collapse ranges of commits over given number |
|
142 | # collapse ranges of commits over given number | |
143 | _collapse_commits_over = 5 |
|
143 | _collapse_commits_over = 5 | |
144 |
|
144 | |||
145 | def __init__(self, diff, format='gitdiff', diff_limit=None, |
|
145 | def __init__(self, diff, format='gitdiff', diff_limit=None, | |
146 | file_limit=None, show_full_diff=True): |
|
146 | file_limit=None, show_full_diff=True): | |
147 | """ |
|
147 | """ | |
148 | :param diff: A `Diff` object representing a diff from a vcs backend |
|
148 | :param diff: A `Diff` object representing a diff from a vcs backend | |
149 | :param format: format of diff passed, `udiff` or `gitdiff` |
|
149 | :param format: format of diff passed, `udiff` or `gitdiff` | |
150 | :param diff_limit: define the size of diff that is considered "big" |
|
150 | :param diff_limit: define the size of diff that is considered "big" | |
151 | based on that parameter cut off will be triggered, set to None |
|
151 | based on that parameter cut off will be triggered, set to None | |
152 | to show full diff |
|
152 | to show full diff | |
153 | """ |
|
153 | """ | |
154 | self._diff = diff |
|
154 | self._diff = diff | |
155 | self._format = format |
|
155 | self._format = format | |
156 | self.adds = 0 |
|
156 | self.adds = 0 | |
157 | self.removes = 0 |
|
157 | self.removes = 0 | |
158 | # calculate diff size |
|
158 | # calculate diff size | |
159 | self.diff_limit = diff_limit |
|
159 | self.diff_limit = diff_limit | |
160 | self.file_limit = file_limit |
|
160 | self.file_limit = file_limit | |
161 | self.show_full_diff = show_full_diff |
|
161 | self.show_full_diff = show_full_diff | |
162 | self.cur_diff_size = 0 |
|
162 | self.cur_diff_size = 0 | |
163 | self.parsed = False |
|
163 | self.parsed = False | |
164 | self.parsed_diff = [] |
|
164 | self.parsed_diff = [] | |
165 |
|
165 | |||
166 | log.debug('Initialized DiffProcessor with %s mode', format) |
|
166 | log.debug('Initialized DiffProcessor with %s mode', format) | |
167 | if format == 'gitdiff': |
|
167 | if format == 'gitdiff': | |
168 | self.differ = self._highlight_line_difflib |
|
168 | self.differ = self._highlight_line_difflib | |
169 | self._parser = self._parse_gitdiff |
|
169 | self._parser = self._parse_gitdiff | |
170 | else: |
|
170 | else: | |
171 | self.differ = self._highlight_line_udiff |
|
171 | self.differ = self._highlight_line_udiff | |
172 | self._parser = self._new_parse_gitdiff |
|
172 | self._parser = self._new_parse_gitdiff | |
173 |
|
173 | |||
174 | def _copy_iterator(self): |
|
174 | def _copy_iterator(self): | |
175 | """ |
|
175 | """ | |
176 | make a fresh copy of generator, we should not iterate thru |
|
176 | make a fresh copy of generator, we should not iterate thru | |
177 | an original as it's needed for repeating operations on |
|
177 | an original as it's needed for repeating operations on | |
178 | this instance of DiffProcessor |
|
178 | this instance of DiffProcessor | |
179 | """ |
|
179 | """ | |
180 | self.__udiff, iterator_copy = tee(self.__udiff) |
|
180 | self.__udiff, iterator_copy = tee(self.__udiff) | |
181 | return iterator_copy |
|
181 | return iterator_copy | |
182 |
|
182 | |||
183 | def _escaper(self, string): |
|
183 | def _escaper(self, string): | |
184 | """ |
|
184 | """ | |
185 | Escaper for diff escapes special chars and checks the diff limit |
|
185 | Escaper for diff escapes special chars and checks the diff limit | |
186 |
|
186 | |||
187 | :param string: |
|
187 | :param string: | |
188 | """ |
|
188 | """ | |
189 | self.cur_diff_size += len(string) |
|
189 | self.cur_diff_size += len(string) | |
190 |
|
190 | |||
191 | if not self.show_full_diff and (self.cur_diff_size > self.diff_limit): |
|
191 | if not self.show_full_diff and (self.cur_diff_size > self.diff_limit): | |
192 | raise DiffLimitExceeded('Diff Limit Exceeded') |
|
192 | raise DiffLimitExceeded('Diff Limit Exceeded') | |
193 |
|
193 | |||
194 | return string \ |
|
194 | return string \ | |
195 | .replace('&', '&')\ |
|
195 | .replace('&', '&')\ | |
196 | .replace('<', '<')\ |
|
196 | .replace('<', '<')\ | |
197 | .replace('>', '>') |
|
197 | .replace('>', '>') | |
198 |
|
198 | |||
199 | def _line_counter(self, l): |
|
199 | def _line_counter(self, l): | |
200 | """ |
|
200 | """ | |
201 | Checks each line and bumps total adds/removes for this diff |
|
201 | Checks each line and bumps total adds/removes for this diff | |
202 |
|
202 | |||
203 | :param l: |
|
203 | :param l: | |
204 | """ |
|
204 | """ | |
205 | if l.startswith('+') and not l.startswith('+++'): |
|
205 | if l.startswith('+') and not l.startswith('+++'): | |
206 | self.adds += 1 |
|
206 | self.adds += 1 | |
207 | elif l.startswith('-') and not l.startswith('---'): |
|
207 | elif l.startswith('-') and not l.startswith('---'): | |
208 | self.removes += 1 |
|
208 | self.removes += 1 | |
209 | return safe_unicode(l) |
|
209 | return safe_unicode(l) | |
210 |
|
210 | |||
211 | def _highlight_line_difflib(self, line, next_): |
|
211 | def _highlight_line_difflib(self, line, next_): | |
212 | """ |
|
212 | """ | |
213 | Highlight inline changes in both lines. |
|
213 | Highlight inline changes in both lines. | |
214 | """ |
|
214 | """ | |
215 |
|
215 | |||
216 | if line['action'] == Action.DELETE: |
|
216 | if line['action'] == Action.DELETE: | |
217 | old, new = line, next_ |
|
217 | old, new = line, next_ | |
218 | else: |
|
218 | else: | |
219 | old, new = next_, line |
|
219 | old, new = next_, line | |
220 |
|
220 | |||
221 | oldwords = self._token_re.split(old['line']) |
|
221 | oldwords = self._token_re.split(old['line']) | |
222 | newwords = self._token_re.split(new['line']) |
|
222 | newwords = self._token_re.split(new['line']) | |
223 | sequence = difflib.SequenceMatcher(None, oldwords, newwords) |
|
223 | sequence = difflib.SequenceMatcher(None, oldwords, newwords) | |
224 |
|
224 | |||
225 | oldfragments, newfragments = [], [] |
|
225 | oldfragments, newfragments = [], [] | |
226 | for tag, i1, i2, j1, j2 in sequence.get_opcodes(): |
|
226 | for tag, i1, i2, j1, j2 in sequence.get_opcodes(): | |
227 | oldfrag = ''.join(oldwords[i1:i2]) |
|
227 | oldfrag = ''.join(oldwords[i1:i2]) | |
228 | newfrag = ''.join(newwords[j1:j2]) |
|
228 | newfrag = ''.join(newwords[j1:j2]) | |
229 | if tag != 'equal': |
|
229 | if tag != 'equal': | |
230 | if oldfrag: |
|
230 | if oldfrag: | |
231 | oldfrag = '<del>%s</del>' % oldfrag |
|
231 | oldfrag = '<del>%s</del>' % oldfrag | |
232 | if newfrag: |
|
232 | if newfrag: | |
233 | newfrag = '<ins>%s</ins>' % newfrag |
|
233 | newfrag = '<ins>%s</ins>' % newfrag | |
234 | oldfragments.append(oldfrag) |
|
234 | oldfragments.append(oldfrag) | |
235 | newfragments.append(newfrag) |
|
235 | newfragments.append(newfrag) | |
236 |
|
236 | |||
237 | old['line'] = "".join(oldfragments) |
|
237 | old['line'] = "".join(oldfragments) | |
238 | new['line'] = "".join(newfragments) |
|
238 | new['line'] = "".join(newfragments) | |
239 |
|
239 | |||
240 | def _highlight_line_udiff(self, line, next_): |
|
240 | def _highlight_line_udiff(self, line, next_): | |
241 | """ |
|
241 | """ | |
242 | Highlight inline changes in both lines. |
|
242 | Highlight inline changes in both lines. | |
243 | """ |
|
243 | """ | |
244 | start = 0 |
|
244 | start = 0 | |
245 | limit = min(len(line['line']), len(next_['line'])) |
|
245 | limit = min(len(line['line']), len(next_['line'])) | |
246 | while start < limit and line['line'][start] == next_['line'][start]: |
|
246 | while start < limit and line['line'][start] == next_['line'][start]: | |
247 | start += 1 |
|
247 | start += 1 | |
248 | end = -1 |
|
248 | end = -1 | |
249 | limit -= start |
|
249 | limit -= start | |
250 | while -end <= limit and line['line'][end] == next_['line'][end]: |
|
250 | while -end <= limit and line['line'][end] == next_['line'][end]: | |
251 | end -= 1 |
|
251 | end -= 1 | |
252 | end += 1 |
|
252 | end += 1 | |
253 | if start or end: |
|
253 | if start or end: | |
254 | def do(l): |
|
254 | def do(l): | |
255 | last = end + len(l['line']) |
|
255 | last = end + len(l['line']) | |
256 | if l['action'] == Action.ADD: |
|
256 | if l['action'] == Action.ADD: | |
257 | tag = 'ins' |
|
257 | tag = 'ins' | |
258 | else: |
|
258 | else: | |
259 | tag = 'del' |
|
259 | tag = 'del' | |
260 | l['line'] = '%s<%s>%s</%s>%s' % ( |
|
260 | l['line'] = '%s<%s>%s</%s>%s' % ( | |
261 | l['line'][:start], |
|
261 | l['line'][:start], | |
262 | tag, |
|
262 | tag, | |
263 | l['line'][start:last], |
|
263 | l['line'][start:last], | |
264 | tag, |
|
264 | tag, | |
265 | l['line'][last:] |
|
265 | l['line'][last:] | |
266 | ) |
|
266 | ) | |
267 | do(line) |
|
267 | do(line) | |
268 | do(next_) |
|
268 | do(next_) | |
269 |
|
269 | |||
270 | def _clean_line(self, line, command): |
|
270 | def _clean_line(self, line, command): | |
271 | if command in ['+', '-', ' ']: |
|
271 | if command in ['+', '-', ' ']: | |
272 | # only modify the line if it's actually a diff thing |
|
272 | # only modify the line if it's actually a diff thing | |
273 | line = line[1:] |
|
273 | line = line[1:] | |
274 | return line |
|
274 | return line | |
275 |
|
275 | |||
276 | def _parse_gitdiff(self, inline_diff=True): |
|
276 | def _parse_gitdiff(self, inline_diff=True): | |
277 | _files = [] |
|
277 | _files = [] | |
278 | diff_container = lambda arg: arg |
|
278 | diff_container = lambda arg: arg | |
279 |
|
279 | |||
280 | for chunk in self._diff.chunks(): |
|
280 | for chunk in self._diff.chunks(): | |
281 | head = chunk.header |
|
281 | head = chunk.header | |
282 |
|
282 | |||
283 | diff = imap(self._escaper, self.diff_splitter(chunk.diff)) |
|
283 | diff = imap(self._escaper, self.diff_splitter(chunk.diff)) | |
284 | raw_diff = chunk.raw |
|
284 | raw_diff = chunk.raw | |
285 | limited_diff = False |
|
285 | limited_diff = False | |
286 | exceeds_limit = False |
|
286 | exceeds_limit = False | |
287 |
|
287 | |||
288 | op = None |
|
288 | op = None | |
289 | stats = { |
|
289 | stats = { | |
290 | 'added': 0, |
|
290 | 'added': 0, | |
291 | 'deleted': 0, |
|
291 | 'deleted': 0, | |
292 | 'binary': False, |
|
292 | 'binary': False, | |
293 | 'ops': {}, |
|
293 | 'ops': {}, | |
294 | } |
|
294 | } | |
295 |
|
295 | |||
296 | if head['deleted_file_mode']: |
|
296 | if head['deleted_file_mode']: | |
297 | op = OPS.DEL |
|
297 | op = OPS.DEL | |
298 | stats['binary'] = True |
|
298 | stats['binary'] = True | |
299 | stats['ops'][DEL_FILENODE] = 'deleted file' |
|
299 | stats['ops'][DEL_FILENODE] = 'deleted file' | |
300 |
|
300 | |||
301 | elif head['new_file_mode']: |
|
301 | elif head['new_file_mode']: | |
302 | op = OPS.ADD |
|
302 | op = OPS.ADD | |
303 | stats['binary'] = True |
|
303 | stats['binary'] = True | |
304 | stats['ops'][NEW_FILENODE] = 'new file %s' % head['new_file_mode'] |
|
304 | stats['ops'][NEW_FILENODE] = 'new file %s' % head['new_file_mode'] | |
305 | else: # modify operation, can be copy, rename or chmod |
|
305 | else: # modify operation, can be copy, rename or chmod | |
306 |
|
306 | |||
307 | # CHMOD |
|
307 | # CHMOD | |
308 | if head['new_mode'] and head['old_mode']: |
|
308 | if head['new_mode'] and head['old_mode']: | |
309 | op = OPS.MOD |
|
309 | op = OPS.MOD | |
310 | stats['binary'] = True |
|
310 | stats['binary'] = True | |
311 | stats['ops'][CHMOD_FILENODE] = ( |
|
311 | stats['ops'][CHMOD_FILENODE] = ( | |
312 | 'modified file chmod %s => %s' % ( |
|
312 | 'modified file chmod %s => %s' % ( | |
313 | head['old_mode'], head['new_mode'])) |
|
313 | head['old_mode'], head['new_mode'])) | |
314 | # RENAME |
|
314 | # RENAME | |
315 | if head['rename_from'] != head['rename_to']: |
|
315 | if head['rename_from'] != head['rename_to']: | |
316 | op = OPS.MOD |
|
316 | op = OPS.MOD | |
317 | stats['binary'] = True |
|
317 | stats['binary'] = True | |
318 | stats['ops'][RENAMED_FILENODE] = ( |
|
318 | stats['ops'][RENAMED_FILENODE] = ( | |
319 | 'file renamed from %s to %s' % ( |
|
319 | 'file renamed from %s to %s' % ( | |
320 | head['rename_from'], head['rename_to'])) |
|
320 | head['rename_from'], head['rename_to'])) | |
321 | # COPY |
|
321 | # COPY | |
322 | if head.get('copy_from') and head.get('copy_to'): |
|
322 | if head.get('copy_from') and head.get('copy_to'): | |
323 | op = OPS.MOD |
|
323 | op = OPS.MOD | |
324 | stats['binary'] = True |
|
324 | stats['binary'] = True | |
325 | stats['ops'][COPIED_FILENODE] = ( |
|
325 | stats['ops'][COPIED_FILENODE] = ( | |
326 | 'file copied from %s to %s' % ( |
|
326 | 'file copied from %s to %s' % ( | |
327 | head['copy_from'], head['copy_to'])) |
|
327 | head['copy_from'], head['copy_to'])) | |
328 |
|
328 | |||
329 | # If our new parsed headers didn't match anything fallback to |
|
329 | # If our new parsed headers didn't match anything fallback to | |
330 | # old style detection |
|
330 | # old style detection | |
331 | if op is None: |
|
331 | if op is None: | |
332 | if not head['a_file'] and head['b_file']: |
|
332 | if not head['a_file'] and head['b_file']: | |
333 | op = OPS.ADD |
|
333 | op = OPS.ADD | |
334 | stats['binary'] = True |
|
334 | stats['binary'] = True | |
335 | stats['ops'][NEW_FILENODE] = 'new file' |
|
335 | stats['ops'][NEW_FILENODE] = 'new file' | |
336 |
|
336 | |||
337 | elif head['a_file'] and not head['b_file']: |
|
337 | elif head['a_file'] and not head['b_file']: | |
338 | op = OPS.DEL |
|
338 | op = OPS.DEL | |
339 | stats['binary'] = True |
|
339 | stats['binary'] = True | |
340 | stats['ops'][DEL_FILENODE] = 'deleted file' |
|
340 | stats['ops'][DEL_FILENODE] = 'deleted file' | |
341 |
|
341 | |||
342 | # it's not ADD not DELETE |
|
342 | # it's not ADD not DELETE | |
343 | if op is None: |
|
343 | if op is None: | |
344 | op = OPS.MOD |
|
344 | op = OPS.MOD | |
345 | stats['binary'] = True |
|
345 | stats['binary'] = True | |
346 | stats['ops'][MOD_FILENODE] = 'modified file' |
|
346 | stats['ops'][MOD_FILENODE] = 'modified file' | |
347 |
|
347 | |||
348 | # a real non-binary diff |
|
348 | # a real non-binary diff | |
349 | if head['a_file'] or head['b_file']: |
|
349 | if head['a_file'] or head['b_file']: | |
350 | try: |
|
350 | try: | |
351 | raw_diff, chunks, _stats = self._parse_lines(diff) |
|
351 | raw_diff, chunks, _stats = self._parse_lines(diff) | |
352 | stats['binary'] = False |
|
352 | stats['binary'] = False | |
353 | stats['added'] = _stats[0] |
|
353 | stats['added'] = _stats[0] | |
354 | stats['deleted'] = _stats[1] |
|
354 | stats['deleted'] = _stats[1] | |
355 | # explicit mark that it's a modified file |
|
355 | # explicit mark that it's a modified file | |
356 | if op == OPS.MOD: |
|
356 | if op == OPS.MOD: | |
357 | stats['ops'][MOD_FILENODE] = 'modified file' |
|
357 | stats['ops'][MOD_FILENODE] = 'modified file' | |
358 | exceeds_limit = len(raw_diff) > self.file_limit |
|
358 | exceeds_limit = len(raw_diff) > self.file_limit | |
359 |
|
359 | |||
360 | # changed from _escaper function so we validate size of |
|
360 | # changed from _escaper function so we validate size of | |
361 | # each file instead of the whole diff |
|
361 | # each file instead of the whole diff | |
362 | # diff will hide big files but still show small ones |
|
362 | # diff will hide big files but still show small ones | |
363 | # from my tests, big files are fairly safe to be parsed |
|
363 | # from my tests, big files are fairly safe to be parsed | |
364 | # but the browser is the bottleneck |
|
364 | # but the browser is the bottleneck | |
365 | if not self.show_full_diff and exceeds_limit: |
|
365 | if not self.show_full_diff and exceeds_limit: | |
366 | raise DiffLimitExceeded('File Limit Exceeded') |
|
366 | raise DiffLimitExceeded('File Limit Exceeded') | |
367 |
|
367 | |||
368 | except DiffLimitExceeded: |
|
368 | except DiffLimitExceeded: | |
369 | diff_container = lambda _diff: \ |
|
369 | diff_container = lambda _diff: \ | |
370 | LimitedDiffContainer( |
|
370 | LimitedDiffContainer( | |
371 | self.diff_limit, self.cur_diff_size, _diff) |
|
371 | self.diff_limit, self.cur_diff_size, _diff) | |
372 |
|
372 | |||
373 | exceeds_limit = len(raw_diff) > self.file_limit |
|
373 | exceeds_limit = len(raw_diff) > self.file_limit | |
374 | limited_diff = True |
|
374 | limited_diff = True | |
375 | chunks = [] |
|
375 | chunks = [] | |
376 |
|
376 | |||
377 | else: # GIT format binary patch, or possibly empty diff |
|
377 | else: # GIT format binary patch, or possibly empty diff | |
378 | if head['bin_patch']: |
|
378 | if head['bin_patch']: | |
379 | # we have operation already extracted, but we mark simply |
|
379 | # we have operation already extracted, but we mark simply | |
380 | # it's a diff we wont show for binary files |
|
380 | # it's a diff we wont show for binary files | |
381 | stats['ops'][BIN_FILENODE] = 'binary diff hidden' |
|
381 | stats['ops'][BIN_FILENODE] = 'binary diff hidden' | |
382 | chunks = [] |
|
382 | chunks = [] | |
383 |
|
383 | |||
384 | if chunks and not self.show_full_diff and op == OPS.DEL: |
|
384 | if chunks and not self.show_full_diff and op == OPS.DEL: | |
385 | # if not full diff mode show deleted file contents |
|
385 | # if not full diff mode show deleted file contents | |
386 | # TODO: anderson: if the view is not too big, there is no way |
|
386 | # TODO: anderson: if the view is not too big, there is no way | |
387 | # to see the content of the file |
|
387 | # to see the content of the file | |
388 | chunks = [] |
|
388 | chunks = [] | |
389 |
|
389 | |||
390 | chunks.insert(0, [{ |
|
390 | chunks.insert(0, [{ | |
391 | 'old_lineno': '', |
|
391 | 'old_lineno': '', | |
392 | 'new_lineno': '', |
|
392 | 'new_lineno': '', | |
393 | 'action': Action.CONTEXT, |
|
393 | 'action': Action.CONTEXT, | |
394 | 'line': msg, |
|
394 | 'line': msg, | |
395 | } for _op, msg in stats['ops'].iteritems() |
|
395 | } for _op, msg in stats['ops'].iteritems() | |
396 | if _op not in [MOD_FILENODE]]) |
|
396 | if _op not in [MOD_FILENODE]]) | |
397 |
|
397 | |||
398 | _files.append({ |
|
398 | _files.append({ | |
399 | 'filename': safe_unicode(head['b_path']), |
|
399 | 'filename': safe_unicode(head['b_path']), | |
400 | 'old_revision': head['a_blob_id'], |
|
400 | 'old_revision': head['a_blob_id'], | |
401 | 'new_revision': head['b_blob_id'], |
|
401 | 'new_revision': head['b_blob_id'], | |
402 | 'chunks': chunks, |
|
402 | 'chunks': chunks, | |
403 | 'raw_diff': safe_unicode(raw_diff), |
|
403 | 'raw_diff': safe_unicode(raw_diff), | |
404 | 'operation': op, |
|
404 | 'operation': op, | |
405 | 'stats': stats, |
|
405 | 'stats': stats, | |
406 | 'exceeds_limit': exceeds_limit, |
|
406 | 'exceeds_limit': exceeds_limit, | |
407 | 'is_limited_diff': limited_diff, |
|
407 | 'is_limited_diff': limited_diff, | |
408 | }) |
|
408 | }) | |
409 |
|
409 | |||
410 | sorter = lambda info: {OPS.ADD: 0, OPS.MOD: 1, |
|
410 | sorter = lambda info: {OPS.ADD: 0, OPS.MOD: 1, | |
411 | OPS.DEL: 2}.get(info['operation']) |
|
411 | OPS.DEL: 2}.get(info['operation']) | |
412 |
|
412 | |||
413 | if not inline_diff: |
|
413 | if not inline_diff: | |
414 | return diff_container(sorted(_files, key=sorter)) |
|
414 | return diff_container(sorted(_files, key=sorter)) | |
415 |
|
415 | |||
416 | # highlight inline changes |
|
416 | # highlight inline changes | |
417 | for diff_data in _files: |
|
417 | for diff_data in _files: | |
418 | for chunk in diff_data['chunks']: |
|
418 | for chunk in diff_data['chunks']: | |
419 | lineiter = iter(chunk) |
|
419 | lineiter = iter(chunk) | |
420 | try: |
|
420 | try: | |
421 | while 1: |
|
421 | while 1: | |
422 | line = lineiter.next() |
|
422 | line = lineiter.next() | |
423 | if line['action'] not in ( |
|
423 | if line['action'] not in ( | |
424 | Action.UNMODIFIED, Action.CONTEXT): |
|
424 | Action.UNMODIFIED, Action.CONTEXT): | |
425 | nextline = lineiter.next() |
|
425 | nextline = lineiter.next() | |
426 | if nextline['action'] in ['unmod', 'context'] or \ |
|
426 | if nextline['action'] in ['unmod', 'context'] or \ | |
427 | nextline['action'] == line['action']: |
|
427 | nextline['action'] == line['action']: | |
428 | continue |
|
428 | continue | |
429 | self.differ(line, nextline) |
|
429 | self.differ(line, nextline) | |
430 | except StopIteration: |
|
430 | except StopIteration: | |
431 | pass |
|
431 | pass | |
432 |
|
432 | |||
433 | return diff_container(sorted(_files, key=sorter)) |
|
433 | return diff_container(sorted(_files, key=sorter)) | |
434 |
|
434 | |||
435 | def _check_large_diff(self): |
|
435 | def _check_large_diff(self): | |
436 | log.debug('Diff exceeds current diff_limit of %s', self.diff_limit) |
|
436 | log.debug('Diff exceeds current diff_limit of %s', self.diff_limit) | |
437 | if not self.show_full_diff and (self.cur_diff_size > self.diff_limit): |
|
437 | if not self.show_full_diff and (self.cur_diff_size > self.diff_limit): | |
438 | raise DiffLimitExceeded('Diff Limit `%s` Exceeded', self.diff_limit) |
|
438 | raise DiffLimitExceeded('Diff Limit `%s` Exceeded', self.diff_limit) | |
439 |
|
439 | |||
440 | # FIXME: NEWDIFFS: dan: this replaces _parse_gitdiff |
|
440 | # FIXME: NEWDIFFS: dan: this replaces _parse_gitdiff | |
441 | def _new_parse_gitdiff(self, inline_diff=True): |
|
441 | def _new_parse_gitdiff(self, inline_diff=True): | |
442 | _files = [] |
|
442 | _files = [] | |
443 |
|
443 | |||
444 | # this can be overriden later to a LimitedDiffContainer type |
|
444 | # this can be overriden later to a LimitedDiffContainer type | |
445 | diff_container = lambda arg: arg |
|
445 | diff_container = lambda arg: arg | |
446 |
|
446 | |||
447 | for chunk in self._diff.chunks(): |
|
447 | for chunk in self._diff.chunks(): | |
448 | head = chunk.header |
|
448 | head = chunk.header | |
449 | log.debug('parsing diff %r', head) |
|
449 | log.debug('parsing diff %r', head) | |
450 |
|
450 | |||
451 | raw_diff = chunk.raw |
|
451 | raw_diff = chunk.raw | |
452 | limited_diff = False |
|
452 | limited_diff = False | |
453 | exceeds_limit = False |
|
453 | exceeds_limit = False | |
454 |
|
454 | |||
455 | op = None |
|
455 | op = None | |
456 | stats = { |
|
456 | stats = { | |
457 | 'added': 0, |
|
457 | 'added': 0, | |
458 | 'deleted': 0, |
|
458 | 'deleted': 0, | |
459 | 'binary': False, |
|
459 | 'binary': False, | |
460 | 'old_mode': None, |
|
460 | 'old_mode': None, | |
461 | 'new_mode': None, |
|
461 | 'new_mode': None, | |
462 | 'ops': {}, |
|
462 | 'ops': {}, | |
463 | } |
|
463 | } | |
464 | if head['old_mode']: |
|
464 | if head['old_mode']: | |
465 | stats['old_mode'] = head['old_mode'] |
|
465 | stats['old_mode'] = head['old_mode'] | |
466 | if head['new_mode']: |
|
466 | if head['new_mode']: | |
467 | stats['new_mode'] = head['new_mode'] |
|
467 | stats['new_mode'] = head['new_mode'] | |
468 | if head['b_mode']: |
|
468 | if head['b_mode']: | |
469 | stats['new_mode'] = head['b_mode'] |
|
469 | stats['new_mode'] = head['b_mode'] | |
470 |
|
470 | |||
471 | # delete file |
|
471 | # delete file | |
472 | if head['deleted_file_mode']: |
|
472 | if head['deleted_file_mode']: | |
473 | op = OPS.DEL |
|
473 | op = OPS.DEL | |
474 | stats['binary'] = True |
|
474 | stats['binary'] = True | |
475 | stats['ops'][DEL_FILENODE] = 'deleted file' |
|
475 | stats['ops'][DEL_FILENODE] = 'deleted file' | |
476 |
|
476 | |||
477 | # new file |
|
477 | # new file | |
478 | elif head['new_file_mode']: |
|
478 | elif head['new_file_mode']: | |
479 | op = OPS.ADD |
|
479 | op = OPS.ADD | |
480 | stats['binary'] = True |
|
480 | stats['binary'] = True | |
481 | stats['old_mode'] = None |
|
481 | stats['old_mode'] = None | |
482 | stats['new_mode'] = head['new_file_mode'] |
|
482 | stats['new_mode'] = head['new_file_mode'] | |
483 | stats['ops'][NEW_FILENODE] = 'new file %s' % head['new_file_mode'] |
|
483 | stats['ops'][NEW_FILENODE] = 'new file %s' % head['new_file_mode'] | |
484 |
|
484 | |||
485 | # modify operation, can be copy, rename or chmod |
|
485 | # modify operation, can be copy, rename or chmod | |
486 | else: |
|
486 | else: | |
487 | # CHMOD |
|
487 | # CHMOD | |
488 | if head['new_mode'] and head['old_mode']: |
|
488 | if head['new_mode'] and head['old_mode']: | |
489 | op = OPS.MOD |
|
489 | op = OPS.MOD | |
490 | stats['binary'] = True |
|
490 | stats['binary'] = True | |
491 | stats['ops'][CHMOD_FILENODE] = ( |
|
491 | stats['ops'][CHMOD_FILENODE] = ( | |
492 | 'modified file chmod %s => %s' % ( |
|
492 | 'modified file chmod %s => %s' % ( | |
493 | head['old_mode'], head['new_mode'])) |
|
493 | head['old_mode'], head['new_mode'])) | |
494 |
|
494 | |||
495 | # RENAME |
|
495 | # RENAME | |
496 | if head['rename_from'] != head['rename_to']: |
|
496 | if head['rename_from'] != head['rename_to']: | |
497 | op = OPS.MOD |
|
497 | op = OPS.MOD | |
498 | stats['binary'] = True |
|
498 | stats['binary'] = True | |
499 | stats['renamed'] = (head['rename_from'], head['rename_to']) |
|
499 | stats['renamed'] = (head['rename_from'], head['rename_to']) | |
500 | stats['ops'][RENAMED_FILENODE] = ( |
|
500 | stats['ops'][RENAMED_FILENODE] = ( | |
501 | 'file renamed from %s to %s' % ( |
|
501 | 'file renamed from %s to %s' % ( | |
502 | head['rename_from'], head['rename_to'])) |
|
502 | head['rename_from'], head['rename_to'])) | |
503 | # COPY |
|
503 | # COPY | |
504 | if head.get('copy_from') and head.get('copy_to'): |
|
504 | if head.get('copy_from') and head.get('copy_to'): | |
505 | op = OPS.MOD |
|
505 | op = OPS.MOD | |
506 | stats['binary'] = True |
|
506 | stats['binary'] = True | |
507 | stats['copied'] = (head['copy_from'], head['copy_to']) |
|
507 | stats['copied'] = (head['copy_from'], head['copy_to']) | |
508 | stats['ops'][COPIED_FILENODE] = ( |
|
508 | stats['ops'][COPIED_FILENODE] = ( | |
509 | 'file copied from %s to %s' % ( |
|
509 | 'file copied from %s to %s' % ( | |
510 | head['copy_from'], head['copy_to'])) |
|
510 | head['copy_from'], head['copy_to'])) | |
511 |
|
511 | |||
512 | # If our new parsed headers didn't match anything fallback to |
|
512 | # If our new parsed headers didn't match anything fallback to | |
513 | # old style detection |
|
513 | # old style detection | |
514 | if op is None: |
|
514 | if op is None: | |
515 | if not head['a_file'] and head['b_file']: |
|
515 | if not head['a_file'] and head['b_file']: | |
516 | op = OPS.ADD |
|
516 | op = OPS.ADD | |
517 | stats['binary'] = True |
|
517 | stats['binary'] = True | |
518 | stats['new_file'] = True |
|
518 | stats['new_file'] = True | |
519 | stats['ops'][NEW_FILENODE] = 'new file' |
|
519 | stats['ops'][NEW_FILENODE] = 'new file' | |
520 |
|
520 | |||
521 | elif head['a_file'] and not head['b_file']: |
|
521 | elif head['a_file'] and not head['b_file']: | |
522 | op = OPS.DEL |
|
522 | op = OPS.DEL | |
523 | stats['binary'] = True |
|
523 | stats['binary'] = True | |
524 | stats['ops'][DEL_FILENODE] = 'deleted file' |
|
524 | stats['ops'][DEL_FILENODE] = 'deleted file' | |
525 |
|
525 | |||
526 | # it's not ADD not DELETE |
|
526 | # it's not ADD not DELETE | |
527 | if op is None: |
|
527 | if op is None: | |
528 | op = OPS.MOD |
|
528 | op = OPS.MOD | |
529 | stats['binary'] = True |
|
529 | stats['binary'] = True | |
530 | stats['ops'][MOD_FILENODE] = 'modified file' |
|
530 | stats['ops'][MOD_FILENODE] = 'modified file' | |
531 |
|
531 | |||
532 | # a real non-binary diff |
|
532 | # a real non-binary diff | |
533 | if head['a_file'] or head['b_file']: |
|
533 | if head['a_file'] or head['b_file']: | |
534 | # simulate splitlines, so we keep the line end part |
|
534 | # simulate splitlines, so we keep the line end part | |
535 | diff = self.diff_splitter(chunk.diff) |
|
535 | diff = self.diff_splitter(chunk.diff) | |
536 |
|
536 | |||
537 | # append each file to the diff size |
|
537 | # append each file to the diff size | |
538 | raw_chunk_size = len(raw_diff) |
|
538 | raw_chunk_size = len(raw_diff) | |
539 |
|
539 | |||
540 | exceeds_limit = raw_chunk_size > self.file_limit |
|
540 | exceeds_limit = raw_chunk_size > self.file_limit | |
541 | self.cur_diff_size += raw_chunk_size |
|
541 | self.cur_diff_size += raw_chunk_size | |
542 |
|
542 | |||
543 | try: |
|
543 | try: | |
544 | # Check each file instead of the whole diff. |
|
544 | # Check each file instead of the whole diff. | |
545 | # Diff will hide big files but still show small ones. |
|
545 | # Diff will hide big files but still show small ones. | |
546 | # From the tests big files are fairly safe to be parsed |
|
546 | # From the tests big files are fairly safe to be parsed | |
547 | # but the browser is the bottleneck. |
|
547 | # but the browser is the bottleneck. | |
548 | if not self.show_full_diff and exceeds_limit: |
|
548 | if not self.show_full_diff and exceeds_limit: | |
549 | log.debug('File `%s` exceeds current file_limit of %s', |
|
549 | log.debug('File `%s` exceeds current file_limit of %s', | |
550 | safe_unicode(head['b_path']), self.file_limit) |
|
550 | safe_unicode(head['b_path']), self.file_limit) | |
551 | raise DiffLimitExceeded( |
|
551 | raise DiffLimitExceeded( | |
552 | 'File Limit %s Exceeded', self.file_limit) |
|
552 | 'File Limit %s Exceeded', self.file_limit) | |
553 |
|
553 | |||
554 | self._check_large_diff() |
|
554 | self._check_large_diff() | |
555 |
|
555 | |||
556 | raw_diff, chunks, _stats = self._new_parse_lines(diff) |
|
556 | raw_diff, chunks, _stats = self._new_parse_lines(diff) | |
557 | stats['binary'] = False |
|
557 | stats['binary'] = False | |
558 | stats['added'] = _stats[0] |
|
558 | stats['added'] = _stats[0] | |
559 | stats['deleted'] = _stats[1] |
|
559 | stats['deleted'] = _stats[1] | |
560 | # explicit mark that it's a modified file |
|
560 | # explicit mark that it's a modified file | |
561 | if op == OPS.MOD: |
|
561 | if op == OPS.MOD: | |
562 | stats['ops'][MOD_FILENODE] = 'modified file' |
|
562 | stats['ops'][MOD_FILENODE] = 'modified file' | |
563 |
|
563 | |||
564 | except DiffLimitExceeded: |
|
564 | except DiffLimitExceeded: | |
565 | diff_container = lambda _diff: \ |
|
565 | diff_container = lambda _diff: \ | |
566 | LimitedDiffContainer( |
|
566 | LimitedDiffContainer( | |
567 | self.diff_limit, self.cur_diff_size, _diff) |
|
567 | self.diff_limit, self.cur_diff_size, _diff) | |
568 |
|
568 | |||
569 | limited_diff = True |
|
569 | limited_diff = True | |
570 | chunks = [] |
|
570 | chunks = [] | |
571 |
|
571 | |||
572 | else: # GIT format binary patch, or possibly empty diff |
|
572 | else: # GIT format binary patch, or possibly empty diff | |
573 | if head['bin_patch']: |
|
573 | if head['bin_patch']: | |
574 | # we have operation already extracted, but we mark simply |
|
574 | # we have operation already extracted, but we mark simply | |
575 | # it's a diff we wont show for binary files |
|
575 | # it's a diff we wont show for binary files | |
576 | stats['ops'][BIN_FILENODE] = 'binary diff hidden' |
|
576 | stats['ops'][BIN_FILENODE] = 'binary diff hidden' | |
577 | chunks = [] |
|
577 | chunks = [] | |
578 |
|
578 | |||
579 | # Hide content of deleted node by setting empty chunks |
|
579 | # Hide content of deleted node by setting empty chunks | |
580 | if chunks and not self.show_full_diff and op == OPS.DEL: |
|
580 | if chunks and not self.show_full_diff and op == OPS.DEL: | |
581 | # if not full diff mode show deleted file contents |
|
581 | # if not full diff mode show deleted file contents | |
582 | # TODO: anderson: if the view is not too big, there is no way |
|
582 | # TODO: anderson: if the view is not too big, there is no way | |
583 | # to see the content of the file |
|
583 | # to see the content of the file | |
584 | chunks = [] |
|
584 | chunks = [] | |
585 |
|
585 | |||
586 | chunks.insert( |
|
586 | chunks.insert( | |
587 | 0, [{'old_lineno': '', |
|
587 | 0, [{'old_lineno': '', | |
588 | 'new_lineno': '', |
|
588 | 'new_lineno': '', | |
589 | 'action': Action.CONTEXT, |
|
589 | 'action': Action.CONTEXT, | |
590 | 'line': msg, |
|
590 | 'line': msg, | |
591 | } for _op, msg in stats['ops'].iteritems() |
|
591 | } for _op, msg in stats['ops'].iteritems() | |
592 | if _op not in [MOD_FILENODE]]) |
|
592 | if _op not in [MOD_FILENODE]]) | |
593 |
|
593 | |||
594 | original_filename = safe_unicode(head['a_path']) |
|
594 | original_filename = safe_unicode(head['a_path']) | |
595 | _files.append({ |
|
595 | _files.append({ | |
596 | 'original_filename': original_filename, |
|
596 | 'original_filename': original_filename, | |
597 | 'filename': safe_unicode(head['b_path']), |
|
597 | 'filename': safe_unicode(head['b_path']), | |
598 | 'old_revision': head['a_blob_id'], |
|
598 | 'old_revision': head['a_blob_id'], | |
599 | 'new_revision': head['b_blob_id'], |
|
599 | 'new_revision': head['b_blob_id'], | |
600 | 'chunks': chunks, |
|
600 | 'chunks': chunks, | |
601 | 'raw_diff': safe_unicode(raw_diff), |
|
601 | 'raw_diff': safe_unicode(raw_diff), | |
602 | 'operation': op, |
|
602 | 'operation': op, | |
603 | 'stats': stats, |
|
603 | 'stats': stats, | |
604 | 'exceeds_limit': exceeds_limit, |
|
604 | 'exceeds_limit': exceeds_limit, | |
605 | 'is_limited_diff': limited_diff, |
|
605 | 'is_limited_diff': limited_diff, | |
606 | }) |
|
606 | }) | |
607 |
|
607 | |||
608 | sorter = lambda info: {OPS.ADD: 0, OPS.MOD: 1, |
|
608 | sorter = lambda info: {OPS.ADD: 0, OPS.MOD: 1, | |
609 | OPS.DEL: 2}.get(info['operation']) |
|
609 | OPS.DEL: 2}.get(info['operation']) | |
610 |
|
610 | |||
611 | return diff_container(sorted(_files, key=sorter)) |
|
611 | return diff_container(sorted(_files, key=sorter)) | |
612 |
|
612 | |||
613 | # FIXME: NEWDIFFS: dan: this gets replaced by _new_parse_lines |
|
613 | # FIXME: NEWDIFFS: dan: this gets replaced by _new_parse_lines | |
614 | def _parse_lines(self, diff_iter): |
|
614 | def _parse_lines(self, diff_iter): | |
615 | """ |
|
615 | """ | |
616 | Parse the diff an return data for the template. |
|
616 | Parse the diff an return data for the template. | |
617 | """ |
|
617 | """ | |
618 |
|
618 | |||
619 | stats = [0, 0] |
|
619 | stats = [0, 0] | |
620 | chunks = [] |
|
620 | chunks = [] | |
621 | raw_diff = [] |
|
621 | raw_diff = [] | |
622 |
|
622 | |||
623 | try: |
|
623 | try: | |
624 | line = diff_iter.next() |
|
624 | line = diff_iter.next() | |
625 |
|
625 | |||
626 | while line: |
|
626 | while line: | |
627 | raw_diff.append(line) |
|
627 | raw_diff.append(line) | |
628 | lines = [] |
|
628 | lines = [] | |
629 | chunks.append(lines) |
|
629 | chunks.append(lines) | |
630 |
|
630 | |||
631 | match = self._chunk_re.match(line) |
|
631 | match = self._chunk_re.match(line) | |
632 |
|
632 | |||
633 | if not match: |
|
633 | if not match: | |
634 | break |
|
634 | break | |
635 |
|
635 | |||
636 | gr = match.groups() |
|
636 | gr = match.groups() | |
637 | (old_line, old_end, |
|
637 | (old_line, old_end, | |
638 | new_line, new_end) = [int(x or 1) for x in gr[:-1]] |
|
638 | new_line, new_end) = [int(x or 1) for x in gr[:-1]] | |
639 | old_line -= 1 |
|
639 | old_line -= 1 | |
640 | new_line -= 1 |
|
640 | new_line -= 1 | |
641 |
|
641 | |||
642 | context = len(gr) == 5 |
|
642 | context = len(gr) == 5 | |
643 | old_end += old_line |
|
643 | old_end += old_line | |
644 | new_end += new_line |
|
644 | new_end += new_line | |
645 |
|
645 | |||
646 | if context: |
|
646 | if context: | |
647 | # skip context only if it's first line |
|
647 | # skip context only if it's first line | |
648 | if int(gr[0]) > 1: |
|
648 | if int(gr[0]) > 1: | |
649 | lines.append({ |
|
649 | lines.append({ | |
650 | 'old_lineno': '...', |
|
650 | 'old_lineno': '...', | |
651 | 'new_lineno': '...', |
|
651 | 'new_lineno': '...', | |
652 | 'action': Action.CONTEXT, |
|
652 | 'action': Action.CONTEXT, | |
653 | 'line': line, |
|
653 | 'line': line, | |
654 | }) |
|
654 | }) | |
655 |
|
655 | |||
656 | line = diff_iter.next() |
|
656 | line = diff_iter.next() | |
657 |
|
657 | |||
658 | while old_line < old_end or new_line < new_end: |
|
658 | while old_line < old_end or new_line < new_end: | |
659 | command = ' ' |
|
659 | command = ' ' | |
660 | if line: |
|
660 | if line: | |
661 | command = line[0] |
|
661 | command = line[0] | |
662 |
|
662 | |||
663 | affects_old = affects_new = False |
|
663 | affects_old = affects_new = False | |
664 |
|
664 | |||
665 | # ignore those if we don't expect them |
|
665 | # ignore those if we don't expect them | |
666 | if command in '#@': |
|
666 | if command in '#@': | |
667 | continue |
|
667 | continue | |
668 | elif command == '+': |
|
668 | elif command == '+': | |
669 | affects_new = True |
|
669 | affects_new = True | |
670 | action = Action.ADD |
|
670 | action = Action.ADD | |
671 | stats[0] += 1 |
|
671 | stats[0] += 1 | |
672 | elif command == '-': |
|
672 | elif command == '-': | |
673 | affects_old = True |
|
673 | affects_old = True | |
674 | action = Action.DELETE |
|
674 | action = Action.DELETE | |
675 | stats[1] += 1 |
|
675 | stats[1] += 1 | |
676 | else: |
|
676 | else: | |
677 | affects_old = affects_new = True |
|
677 | affects_old = affects_new = True | |
678 | action = Action.UNMODIFIED |
|
678 | action = Action.UNMODIFIED | |
679 |
|
679 | |||
680 | if not self._newline_marker.match(line): |
|
680 | if not self._newline_marker.match(line): | |
681 | old_line += affects_old |
|
681 | old_line += affects_old | |
682 | new_line += affects_new |
|
682 | new_line += affects_new | |
683 | lines.append({ |
|
683 | lines.append({ | |
684 | 'old_lineno': affects_old and old_line or '', |
|
684 | 'old_lineno': affects_old and old_line or '', | |
685 | 'new_lineno': affects_new and new_line or '', |
|
685 | 'new_lineno': affects_new and new_line or '', | |
686 | 'action': action, |
|
686 | 'action': action, | |
687 | 'line': self._clean_line(line, command) |
|
687 | 'line': self._clean_line(line, command) | |
688 | }) |
|
688 | }) | |
689 | raw_diff.append(line) |
|
689 | raw_diff.append(line) | |
690 |
|
690 | |||
691 | line = diff_iter.next() |
|
691 | line = diff_iter.next() | |
692 |
|
692 | |||
693 | if self._newline_marker.match(line): |
|
693 | if self._newline_marker.match(line): | |
694 | # we need to append to lines, since this is not |
|
694 | # we need to append to lines, since this is not | |
695 | # counted in the line specs of diff |
|
695 | # counted in the line specs of diff | |
696 | lines.append({ |
|
696 | lines.append({ | |
697 | 'old_lineno': '...', |
|
697 | 'old_lineno': '...', | |
698 | 'new_lineno': '...', |
|
698 | 'new_lineno': '...', | |
699 | 'action': Action.CONTEXT, |
|
699 | 'action': Action.CONTEXT, | |
700 | 'line': self._clean_line(line, command) |
|
700 | 'line': self._clean_line(line, command) | |
701 | }) |
|
701 | }) | |
702 |
|
702 | |||
703 | except StopIteration: |
|
703 | except StopIteration: | |
704 | pass |
|
704 | pass | |
705 | return ''.join(raw_diff), chunks, stats |
|
705 | return ''.join(raw_diff), chunks, stats | |
706 |
|
706 | |||
707 | # FIXME: NEWDIFFS: dan: this replaces _parse_lines |
|
707 | # FIXME: NEWDIFFS: dan: this replaces _parse_lines | |
708 | def _new_parse_lines(self, diff_iter): |
|
708 | def _new_parse_lines(self, diff_iter): | |
709 | """ |
|
709 | """ | |
710 | Parse the diff an return data for the template. |
|
710 | Parse the diff an return data for the template. | |
711 | """ |
|
711 | """ | |
712 |
|
712 | |||
713 | stats = [0, 0] |
|
713 | stats = [0, 0] | |
714 | chunks = [] |
|
714 | chunks = [] | |
715 | raw_diff = [] |
|
715 | raw_diff = [] | |
716 |
|
716 | |||
717 | try: |
|
717 | try: | |
718 | line = diff_iter.next() |
|
718 | line = diff_iter.next() | |
719 |
|
719 | |||
720 | while line: |
|
720 | while line: | |
721 | raw_diff.append(line) |
|
721 | raw_diff.append(line) | |
722 | # match header e.g @@ -0,0 +1 @@\n' |
|
722 | # match header e.g @@ -0,0 +1 @@\n' | |
723 | match = self._chunk_re.match(line) |
|
723 | match = self._chunk_re.match(line) | |
724 |
|
724 | |||
725 | if not match: |
|
725 | if not match: | |
726 | break |
|
726 | break | |
727 |
|
727 | |||
728 | gr = match.groups() |
|
728 | gr = match.groups() | |
729 | (old_line, old_end, |
|
729 | (old_line, old_end, | |
730 | new_line, new_end) = [int(x or 1) for x in gr[:-1]] |
|
730 | new_line, new_end) = [int(x or 1) for x in gr[:-1]] | |
731 |
|
731 | |||
732 | lines = [] |
|
732 | lines = [] | |
733 | hunk = { |
|
733 | hunk = { | |
734 | 'section_header': gr[-1], |
|
734 | 'section_header': gr[-1], | |
735 | 'source_start': old_line, |
|
735 | 'source_start': old_line, | |
736 | 'source_length': old_end, |
|
736 | 'source_length': old_end, | |
737 | 'target_start': new_line, |
|
737 | 'target_start': new_line, | |
738 | 'target_length': new_end, |
|
738 | 'target_length': new_end, | |
739 | 'lines': lines, |
|
739 | 'lines': lines, | |
740 | } |
|
740 | } | |
741 | chunks.append(hunk) |
|
741 | chunks.append(hunk) | |
742 |
|
742 | |||
743 | old_line -= 1 |
|
743 | old_line -= 1 | |
744 | new_line -= 1 |
|
744 | new_line -= 1 | |
745 |
|
745 | |||
746 | context = len(gr) == 5 |
|
746 | context = len(gr) == 5 | |
747 | old_end += old_line |
|
747 | old_end += old_line | |
748 | new_end += new_line |
|
748 | new_end += new_line | |
749 |
|
749 | |||
750 | line = diff_iter.next() |
|
750 | line = diff_iter.next() | |
751 |
|
751 | |||
752 | while old_line < old_end or new_line < new_end: |
|
752 | while old_line < old_end or new_line < new_end: | |
753 | command = ' ' |
|
753 | command = ' ' | |
754 | if line: |
|
754 | if line: | |
755 | command = line[0] |
|
755 | command = line[0] | |
756 |
|
756 | |||
757 | affects_old = affects_new = False |
|
757 | affects_old = affects_new = False | |
758 |
|
758 | |||
759 | # ignore those if we don't expect them |
|
759 | # ignore those if we don't expect them | |
760 | if command in '#@': |
|
760 | if command in '#@': | |
761 | continue |
|
761 | continue | |
762 | elif command == '+': |
|
762 | elif command == '+': | |
763 | affects_new = True |
|
763 | affects_new = True | |
764 | action = Action.ADD |
|
764 | action = Action.ADD | |
765 | stats[0] += 1 |
|
765 | stats[0] += 1 | |
766 | elif command == '-': |
|
766 | elif command == '-': | |
767 | affects_old = True |
|
767 | affects_old = True | |
768 | action = Action.DELETE |
|
768 | action = Action.DELETE | |
769 | stats[1] += 1 |
|
769 | stats[1] += 1 | |
770 | else: |
|
770 | else: | |
771 | affects_old = affects_new = True |
|
771 | affects_old = affects_new = True | |
772 | action = Action.UNMODIFIED |
|
772 | action = Action.UNMODIFIED | |
773 |
|
773 | |||
774 | if not self._newline_marker.match(line): |
|
774 | if not self._newline_marker.match(line): | |
775 | old_line += affects_old |
|
775 | old_line += affects_old | |
776 | new_line += affects_new |
|
776 | new_line += affects_new | |
777 | lines.append({ |
|
777 | lines.append({ | |
778 | 'old_lineno': affects_old and old_line or '', |
|
778 | 'old_lineno': affects_old and old_line or '', | |
779 | 'new_lineno': affects_new and new_line or '', |
|
779 | 'new_lineno': affects_new and new_line or '', | |
780 | 'action': action, |
|
780 | 'action': action, | |
781 | 'line': self._clean_line(line, command) |
|
781 | 'line': self._clean_line(line, command) | |
782 | }) |
|
782 | }) | |
783 | raw_diff.append(line) |
|
783 | raw_diff.append(line) | |
784 |
|
784 | |||
785 | line = diff_iter.next() |
|
785 | line = diff_iter.next() | |
786 |
|
786 | |||
787 | if self._newline_marker.match(line): |
|
787 | if self._newline_marker.match(line): | |
788 | # we need to append to lines, since this is not |
|
788 | # we need to append to lines, since this is not | |
789 | # counted in the line specs of diff |
|
789 | # counted in the line specs of diff | |
790 | if affects_old: |
|
790 | if affects_old: | |
791 | action = Action.OLD_NO_NL |
|
791 | action = Action.OLD_NO_NL | |
792 | elif affects_new: |
|
792 | elif affects_new: | |
793 | action = Action.NEW_NO_NL |
|
793 | action = Action.NEW_NO_NL | |
794 | else: |
|
794 | else: | |
795 | raise Exception('invalid context for no newline') |
|
795 | raise Exception('invalid context for no newline') | |
796 |
|
796 | |||
797 | lines.append({ |
|
797 | lines.append({ | |
798 | 'old_lineno': None, |
|
798 | 'old_lineno': None, | |
799 | 'new_lineno': None, |
|
799 | 'new_lineno': None, | |
800 | 'action': action, |
|
800 | 'action': action, | |
801 | 'line': self._clean_line(line, command) |
|
801 | 'line': self._clean_line(line, command) | |
802 | }) |
|
802 | }) | |
803 |
|
803 | |||
804 | except StopIteration: |
|
804 | except StopIteration: | |
805 | pass |
|
805 | pass | |
806 |
|
806 | |||
807 | return ''.join(raw_diff), chunks, stats |
|
807 | return ''.join(raw_diff), chunks, stats | |
808 |
|
808 | |||
809 | def _safe_id(self, idstring): |
|
809 | def _safe_id(self, idstring): | |
810 | """Make a string safe for including in an id attribute. |
|
810 | """Make a string safe for including in an id attribute. | |
811 |
|
811 | |||
812 | The HTML spec says that id attributes 'must begin with |
|
812 | The HTML spec says that id attributes 'must begin with | |
813 | a letter ([A-Za-z]) and may be followed by any number |
|
813 | a letter ([A-Za-z]) and may be followed by any number | |
814 | of letters, digits ([0-9]), hyphens ("-"), underscores |
|
814 | of letters, digits ([0-9]), hyphens ("-"), underscores | |
815 | ("_"), colons (":"), and periods (".")'. These regexps |
|
815 | ("_"), colons (":"), and periods (".")'. These regexps | |
816 | are slightly over-zealous, in that they remove colons |
|
816 | are slightly over-zealous, in that they remove colons | |
817 | and periods unnecessarily. |
|
817 | and periods unnecessarily. | |
818 |
|
818 | |||
819 | Whitespace is transformed into underscores, and then |
|
819 | Whitespace is transformed into underscores, and then | |
820 | anything which is not a hyphen or a character that |
|
820 | anything which is not a hyphen or a character that | |
821 | matches \w (alphanumerics and underscore) is removed. |
|
821 | matches \w (alphanumerics and underscore) is removed. | |
822 |
|
822 | |||
823 | """ |
|
823 | """ | |
824 | # Transform all whitespace to underscore |
|
824 | # Transform all whitespace to underscore | |
825 | idstring = re.sub(r'\s', "_", '%s' % idstring) |
|
825 | idstring = re.sub(r'\s', "_", '%s' % idstring) | |
826 | # Remove everything that is not a hyphen or a member of \w |
|
826 | # Remove everything that is not a hyphen or a member of \w | |
827 | idstring = re.sub(r'(?!-)\W', "", idstring).lower() |
|
827 | idstring = re.sub(r'(?!-)\W', "", idstring).lower() | |
828 | return idstring |
|
828 | return idstring | |
829 |
|
829 | |||
830 | @classmethod |
|
830 | @classmethod | |
831 | def diff_splitter(cls, string): |
|
831 | def diff_splitter(cls, string): | |
832 | """ |
|
832 | """ | |
833 | Diff split that emulates .splitlines() but works only on \n |
|
833 | Diff split that emulates .splitlines() but works only on \n | |
834 | """ |
|
834 | """ | |
835 | if not string: |
|
835 | if not string: | |
836 | return |
|
836 | return | |
837 | elif string == '\n': |
|
837 | elif string == '\n': | |
838 | yield u'\n' |
|
838 | yield u'\n' | |
839 | else: |
|
839 | else: | |
840 |
|
840 | |||
841 | has_newline = string.endswith('\n') |
|
841 | has_newline = string.endswith('\n') | |
842 | elements = string.split('\n') |
|
842 | elements = string.split('\n') | |
843 | if has_newline: |
|
843 | if has_newline: | |
844 | # skip last element as it's empty string from newlines |
|
844 | # skip last element as it's empty string from newlines | |
845 | elements = elements[:-1] |
|
845 | elements = elements[:-1] | |
846 |
|
846 | |||
847 | len_elements = len(elements) |
|
847 | len_elements = len(elements) | |
848 |
|
848 | |||
849 | for cnt, line in enumerate(elements, start=1): |
|
849 | for cnt, line in enumerate(elements, start=1): | |
850 | last_line = cnt == len_elements |
|
850 | last_line = cnt == len_elements | |
851 | if last_line and not has_newline: |
|
851 | if last_line and not has_newline: | |
852 | yield safe_unicode(line) |
|
852 | yield safe_unicode(line) | |
853 | else: |
|
853 | else: | |
854 | yield safe_unicode(line) + '\n' |
|
854 | yield safe_unicode(line) + '\n' | |
855 |
|
855 | |||
856 | def prepare(self, inline_diff=True): |
|
856 | def prepare(self, inline_diff=True): | |
857 | """ |
|
857 | """ | |
858 | Prepare the passed udiff for HTML rendering. |
|
858 | Prepare the passed udiff for HTML rendering. | |
859 |
|
859 | |||
860 | :return: A list of dicts with diff information. |
|
860 | :return: A list of dicts with diff information. | |
861 | """ |
|
861 | """ | |
862 | parsed = self._parser(inline_diff=inline_diff) |
|
862 | parsed = self._parser(inline_diff=inline_diff) | |
863 | self.parsed = True |
|
863 | self.parsed = True | |
864 | self.parsed_diff = parsed |
|
864 | self.parsed_diff = parsed | |
865 | return parsed |
|
865 | return parsed | |
866 |
|
866 | |||
867 | def as_raw(self, diff_lines=None): |
|
867 | def as_raw(self, diff_lines=None): | |
868 | """ |
|
868 | """ | |
869 | Returns raw diff as a byte string |
|
869 | Returns raw diff as a byte string | |
870 | """ |
|
870 | """ | |
871 | return self._diff.raw |
|
871 | return self._diff.raw | |
872 |
|
872 | |||
873 | def as_html(self, table_class='code-difftable', line_class='line', |
|
873 | def as_html(self, table_class='code-difftable', line_class='line', | |
874 | old_lineno_class='lineno old', new_lineno_class='lineno new', |
|
874 | old_lineno_class='lineno old', new_lineno_class='lineno new', | |
875 | code_class='code', enable_comments=False, parsed_lines=None): |
|
875 | code_class='code', enable_comments=False, parsed_lines=None): | |
876 | """ |
|
876 | """ | |
877 | Return given diff as html table with customized css classes |
|
877 | Return given diff as html table with customized css classes | |
878 | """ |
|
878 | """ | |
879 | # TODO(marcink): not sure how to pass in translator |
|
879 | # TODO(marcink): not sure how to pass in translator | |
880 | # here in an efficient way, leave the _ for proper gettext extraction |
|
880 | # here in an efficient way, leave the _ for proper gettext extraction | |
881 | _ = lambda s: s |
|
881 | _ = lambda s: s | |
882 |
|
882 | |||
883 | def _link_to_if(condition, label, url): |
|
883 | def _link_to_if(condition, label, url): | |
884 | """ |
|
884 | """ | |
885 | Generates a link if condition is meet or just the label if not. |
|
885 | Generates a link if condition is meet or just the label if not. | |
886 | """ |
|
886 | """ | |
887 |
|
887 | |||
888 | if condition: |
|
888 | if condition: | |
889 | return '''<a href="%(url)s" class="tooltip" |
|
889 | return '''<a href="%(url)s" class="tooltip" | |
890 | title="%(title)s">%(label)s</a>''' % { |
|
890 | title="%(title)s">%(label)s</a>''' % { | |
891 | 'title': _('Click to select line'), |
|
891 | 'title': _('Click to select line'), | |
892 | 'url': url, |
|
892 | 'url': url, | |
893 | 'label': label |
|
893 | 'label': label | |
894 | } |
|
894 | } | |
895 | else: |
|
895 | else: | |
896 | return label |
|
896 | return label | |
897 | if not self.parsed: |
|
897 | if not self.parsed: | |
898 | self.prepare() |
|
898 | self.prepare() | |
899 |
|
899 | |||
900 | diff_lines = self.parsed_diff |
|
900 | diff_lines = self.parsed_diff | |
901 | if parsed_lines: |
|
901 | if parsed_lines: | |
902 | diff_lines = parsed_lines |
|
902 | diff_lines = parsed_lines | |
903 |
|
903 | |||
904 | _html_empty = True |
|
904 | _html_empty = True | |
905 | _html = [] |
|
905 | _html = [] | |
906 | _html.append('''<table class="%(table_class)s">\n''' % { |
|
906 | _html.append('''<table class="%(table_class)s">\n''' % { | |
907 | 'table_class': table_class |
|
907 | 'table_class': table_class | |
908 | }) |
|
908 | }) | |
909 |
|
909 | |||
910 | for diff in diff_lines: |
|
910 | for diff in diff_lines: | |
911 | for line in diff['chunks']: |
|
911 | for line in diff['chunks']: | |
912 | _html_empty = False |
|
912 | _html_empty = False | |
913 | for change in line: |
|
913 | for change in line: | |
914 | _html.append('''<tr class="%(lc)s %(action)s">\n''' % { |
|
914 | _html.append('''<tr class="%(lc)s %(action)s">\n''' % { | |
915 | 'lc': line_class, |
|
915 | 'lc': line_class, | |
916 | 'action': change['action'] |
|
916 | 'action': change['action'] | |
917 | }) |
|
917 | }) | |
918 | anchor_old_id = '' |
|
918 | anchor_old_id = '' | |
919 | anchor_new_id = '' |
|
919 | anchor_new_id = '' | |
920 | anchor_old = "%(filename)s_o%(oldline_no)s" % { |
|
920 | anchor_old = "%(filename)s_o%(oldline_no)s" % { | |
921 | 'filename': self._safe_id(diff['filename']), |
|
921 | 'filename': self._safe_id(diff['filename']), | |
922 | 'oldline_no': change['old_lineno'] |
|
922 | 'oldline_no': change['old_lineno'] | |
923 | } |
|
923 | } | |
924 | anchor_new = "%(filename)s_n%(oldline_no)s" % { |
|
924 | anchor_new = "%(filename)s_n%(oldline_no)s" % { | |
925 | 'filename': self._safe_id(diff['filename']), |
|
925 | 'filename': self._safe_id(diff['filename']), | |
926 | 'oldline_no': change['new_lineno'] |
|
926 | 'oldline_no': change['new_lineno'] | |
927 | } |
|
927 | } | |
928 | cond_old = (change['old_lineno'] != '...' and |
|
928 | cond_old = (change['old_lineno'] != '...' and | |
929 | change['old_lineno']) |
|
929 | change['old_lineno']) | |
930 | cond_new = (change['new_lineno'] != '...' and |
|
930 | cond_new = (change['new_lineno'] != '...' and | |
931 | change['new_lineno']) |
|
931 | change['new_lineno']) | |
932 | if cond_old: |
|
932 | if cond_old: | |
933 | anchor_old_id = 'id="%s"' % anchor_old |
|
933 | anchor_old_id = 'id="%s"' % anchor_old | |
934 | if cond_new: |
|
934 | if cond_new: | |
935 | anchor_new_id = 'id="%s"' % anchor_new |
|
935 | anchor_new_id = 'id="%s"' % anchor_new | |
936 |
|
936 | |||
937 | if change['action'] != Action.CONTEXT: |
|
937 | if change['action'] != Action.CONTEXT: | |
938 | anchor_link = True |
|
938 | anchor_link = True | |
939 | else: |
|
939 | else: | |
940 | anchor_link = False |
|
940 | anchor_link = False | |
941 |
|
941 | |||
942 | ########################################################### |
|
942 | ########################################################### | |
943 | # COMMENT ICONS |
|
943 | # COMMENT ICONS | |
944 | ########################################################### |
|
944 | ########################################################### | |
945 | _html.append('''\t<td class="add-comment-line"><span class="add-comment-content">''') |
|
945 | _html.append('''\t<td class="add-comment-line"><span class="add-comment-content">''') | |
946 |
|
946 | |||
947 | if enable_comments and change['action'] != Action.CONTEXT: |
|
947 | if enable_comments and change['action'] != Action.CONTEXT: | |
948 | _html.append('''<a href="#"><span class="icon-comment-add"></span></a>''') |
|
948 | _html.append('''<a href="#"><span class="icon-comment-add"></span></a>''') | |
949 |
|
949 | |||
950 | _html.append('''</span></td><td class="comment-toggle tooltip" title="Toggle Comment Thread"><i class="icon-comment"></i></td>\n''') |
|
950 | _html.append('''</span></td><td class="comment-toggle tooltip" title="Toggle Comment Thread"><i class="icon-comment"></i></td>\n''') | |
951 |
|
951 | |||
952 | ########################################################### |
|
952 | ########################################################### | |
953 | # OLD LINE NUMBER |
|
953 | # OLD LINE NUMBER | |
954 | ########################################################### |
|
954 | ########################################################### | |
955 | _html.append('''\t<td %(a_id)s class="%(olc)s">''' % { |
|
955 | _html.append('''\t<td %(a_id)s class="%(olc)s">''' % { | |
956 | 'a_id': anchor_old_id, |
|
956 | 'a_id': anchor_old_id, | |
957 | 'olc': old_lineno_class |
|
957 | 'olc': old_lineno_class | |
958 | }) |
|
958 | }) | |
959 |
|
959 | |||
960 | _html.append('''%(link)s''' % { |
|
960 | _html.append('''%(link)s''' % { | |
961 | 'link': _link_to_if(anchor_link, change['old_lineno'], |
|
961 | 'link': _link_to_if(anchor_link, change['old_lineno'], | |
962 | '#%s' % anchor_old) |
|
962 | '#%s' % anchor_old) | |
963 | }) |
|
963 | }) | |
964 | _html.append('''</td>\n''') |
|
964 | _html.append('''</td>\n''') | |
965 | ########################################################### |
|
965 | ########################################################### | |
966 | # NEW LINE NUMBER |
|
966 | # NEW LINE NUMBER | |
967 | ########################################################### |
|
967 | ########################################################### | |
968 |
|
968 | |||
969 | _html.append('''\t<td %(a_id)s class="%(nlc)s">''' % { |
|
969 | _html.append('''\t<td %(a_id)s class="%(nlc)s">''' % { | |
970 | 'a_id': anchor_new_id, |
|
970 | 'a_id': anchor_new_id, | |
971 | 'nlc': new_lineno_class |
|
971 | 'nlc': new_lineno_class | |
972 | }) |
|
972 | }) | |
973 |
|
973 | |||
974 | _html.append('''%(link)s''' % { |
|
974 | _html.append('''%(link)s''' % { | |
975 | 'link': _link_to_if(anchor_link, change['new_lineno'], |
|
975 | 'link': _link_to_if(anchor_link, change['new_lineno'], | |
976 | '#%s' % anchor_new) |
|
976 | '#%s' % anchor_new) | |
977 | }) |
|
977 | }) | |
978 | _html.append('''</td>\n''') |
|
978 | _html.append('''</td>\n''') | |
979 | ########################################################### |
|
979 | ########################################################### | |
980 | # CODE |
|
980 | # CODE | |
981 | ########################################################### |
|
981 | ########################################################### | |
982 | code_classes = [code_class] |
|
982 | code_classes = [code_class] | |
983 | if (not enable_comments or |
|
983 | if (not enable_comments or | |
984 | change['action'] == Action.CONTEXT): |
|
984 | change['action'] == Action.CONTEXT): | |
985 | code_classes.append('no-comment') |
|
985 | code_classes.append('no-comment') | |
986 | _html.append('\t<td class="%s">' % ' '.join(code_classes)) |
|
986 | _html.append('\t<td class="%s">' % ' '.join(code_classes)) | |
987 | _html.append('''\n\t\t<pre>%(code)s</pre>\n''' % { |
|
987 | _html.append('''\n\t\t<pre>%(code)s</pre>\n''' % { | |
988 | 'code': change['line'] |
|
988 | 'code': change['line'] | |
989 | }) |
|
989 | }) | |
990 |
|
990 | |||
991 | _html.append('''\t</td>''') |
|
991 | _html.append('''\t</td>''') | |
992 | _html.append('''\n</tr>\n''') |
|
992 | _html.append('''\n</tr>\n''') | |
993 | _html.append('''</table>''') |
|
993 | _html.append('''</table>''') | |
994 | if _html_empty: |
|
994 | if _html_empty: | |
995 | return None |
|
995 | return None | |
996 | return ''.join(_html) |
|
996 | return ''.join(_html) | |
997 |
|
997 | |||
998 | def stat(self): |
|
998 | def stat(self): | |
999 | """ |
|
999 | """ | |
1000 | Returns tuple of added, and removed lines for this instance |
|
1000 | Returns tuple of added, and removed lines for this instance | |
1001 | """ |
|
1001 | """ | |
1002 | return self.adds, self.removes |
|
1002 | return self.adds, self.removes | |
1003 |
|
1003 | |||
1004 | def get_context_of_line( |
|
1004 | def get_context_of_line( | |
1005 | self, path, diff_line=None, context_before=3, context_after=3): |
|
1005 | self, path, diff_line=None, context_before=3, context_after=3): | |
1006 | """ |
|
1006 | """ | |
1007 | Returns the context lines for the specified diff line. |
|
1007 | Returns the context lines for the specified diff line. | |
1008 |
|
1008 | |||
1009 | :type diff_line: :class:`DiffLineNumber` |
|
1009 | :type diff_line: :class:`DiffLineNumber` | |
1010 | """ |
|
1010 | """ | |
1011 | assert self.parsed, "DiffProcessor is not initialized." |
|
1011 | assert self.parsed, "DiffProcessor is not initialized." | |
1012 |
|
1012 | |||
1013 | if None not in diff_line: |
|
1013 | if None not in diff_line: | |
1014 | raise ValueError( |
|
1014 | raise ValueError( | |
1015 | "Cannot specify both line numbers: {}".format(diff_line)) |
|
1015 | "Cannot specify both line numbers: {}".format(diff_line)) | |
1016 |
|
1016 | |||
1017 | file_diff = self._get_file_diff(path) |
|
1017 | file_diff = self._get_file_diff(path) | |
1018 | chunk, idx = self._find_chunk_line_index(file_diff, diff_line) |
|
1018 | chunk, idx = self._find_chunk_line_index(file_diff, diff_line) | |
1019 |
|
1019 | |||
1020 | first_line_to_include = max(idx - context_before, 0) |
|
1020 | first_line_to_include = max(idx - context_before, 0) | |
1021 | first_line_after_context = idx + context_after + 1 |
|
1021 | first_line_after_context = idx + context_after + 1 | |
1022 | context_lines = chunk[first_line_to_include:first_line_after_context] |
|
1022 | context_lines = chunk[first_line_to_include:first_line_after_context] | |
1023 |
|
1023 | |||
1024 | line_contents = [ |
|
1024 | line_contents = [ | |
1025 | _context_line(line) for line in context_lines |
|
1025 | _context_line(line) for line in context_lines | |
1026 | if _is_diff_content(line)] |
|
1026 | if _is_diff_content(line)] | |
1027 | # TODO: johbo: Interim fixup, the diff chunks drop the final newline. |
|
1027 | # TODO: johbo: Interim fixup, the diff chunks drop the final newline. | |
1028 | # Once they are fixed, we can drop this line here. |
|
1028 | # Once they are fixed, we can drop this line here. | |
1029 | if line_contents: |
|
1029 | if line_contents: | |
1030 | line_contents[-1] = ( |
|
1030 | line_contents[-1] = ( | |
1031 | line_contents[-1][0], line_contents[-1][1].rstrip('\n') + '\n') |
|
1031 | line_contents[-1][0], line_contents[-1][1].rstrip('\n') + '\n') | |
1032 | return line_contents |
|
1032 | return line_contents | |
1033 |
|
1033 | |||
1034 | def find_context(self, path, context, offset=0): |
|
1034 | def find_context(self, path, context, offset=0): | |
1035 | """ |
|
1035 | """ | |
1036 | Finds the given `context` inside of the diff. |
|
1036 | Finds the given `context` inside of the diff. | |
1037 |
|
1037 | |||
1038 | Use the parameter `offset` to specify which offset the target line has |
|
1038 | Use the parameter `offset` to specify which offset the target line has | |
1039 | inside of the given `context`. This way the correct diff line will be |
|
1039 | inside of the given `context`. This way the correct diff line will be | |
1040 | returned. |
|
1040 | returned. | |
1041 |
|
1041 | |||
1042 | :param offset: Shall be used to specify the offset of the main line |
|
1042 | :param offset: Shall be used to specify the offset of the main line | |
1043 | within the given `context`. |
|
1043 | within the given `context`. | |
1044 | """ |
|
1044 | """ | |
1045 | if offset < 0 or offset >= len(context): |
|
1045 | if offset < 0 or offset >= len(context): | |
1046 | raise ValueError( |
|
1046 | raise ValueError( | |
1047 | "Only positive values up to the length of the context " |
|
1047 | "Only positive values up to the length of the context " | |
1048 | "minus one are allowed.") |
|
1048 | "minus one are allowed.") | |
1049 |
|
1049 | |||
1050 | matches = [] |
|
1050 | matches = [] | |
1051 | file_diff = self._get_file_diff(path) |
|
1051 | file_diff = self._get_file_diff(path) | |
1052 |
|
1052 | |||
1053 | for chunk in file_diff['chunks']: |
|
1053 | for chunk in file_diff['chunks']: | |
1054 | context_iter = iter(context) |
|
1054 | context_iter = iter(context) | |
1055 | for line_idx, line in enumerate(chunk): |
|
1055 | for line_idx, line in enumerate(chunk): | |
1056 | try: |
|
1056 | try: | |
1057 | if _context_line(line) == context_iter.next(): |
|
1057 | if _context_line(line) == context_iter.next(): | |
1058 | continue |
|
1058 | continue | |
1059 | except StopIteration: |
|
1059 | except StopIteration: | |
1060 | matches.append((line_idx, chunk)) |
|
1060 | matches.append((line_idx, chunk)) | |
1061 | context_iter = iter(context) |
|
1061 | context_iter = iter(context) | |
1062 |
|
1062 | |||
1063 | # Increment position and triger StopIteration |
|
1063 | # Increment position and triger StopIteration | |
1064 | # if we had a match at the end |
|
1064 | # if we had a match at the end | |
1065 | line_idx += 1 |
|
1065 | line_idx += 1 | |
1066 | try: |
|
1066 | try: | |
1067 | context_iter.next() |
|
1067 | context_iter.next() | |
1068 | except StopIteration: |
|
1068 | except StopIteration: | |
1069 | matches.append((line_idx, chunk)) |
|
1069 | matches.append((line_idx, chunk)) | |
1070 |
|
1070 | |||
1071 | effective_offset = len(context) - offset |
|
1071 | effective_offset = len(context) - offset | |
1072 | found_at_diff_lines = [ |
|
1072 | found_at_diff_lines = [ | |
1073 | _line_to_diff_line_number(chunk[idx - effective_offset]) |
|
1073 | _line_to_diff_line_number(chunk[idx - effective_offset]) | |
1074 | for idx, chunk in matches] |
|
1074 | for idx, chunk in matches] | |
1075 |
|
1075 | |||
1076 | return found_at_diff_lines |
|
1076 | return found_at_diff_lines | |
1077 |
|
1077 | |||
1078 | def _get_file_diff(self, path): |
|
1078 | def _get_file_diff(self, path): | |
1079 | for file_diff in self.parsed_diff: |
|
1079 | for file_diff in self.parsed_diff: | |
1080 | if file_diff['filename'] == path: |
|
1080 | if file_diff['filename'] == path: | |
1081 | break |
|
1081 | break | |
1082 | else: |
|
1082 | else: | |
1083 | raise FileNotInDiffException("File {} not in diff".format(path)) |
|
1083 | raise FileNotInDiffException("File {} not in diff".format(path)) | |
1084 | return file_diff |
|
1084 | return file_diff | |
1085 |
|
1085 | |||
1086 | def _find_chunk_line_index(self, file_diff, diff_line): |
|
1086 | def _find_chunk_line_index(self, file_diff, diff_line): | |
1087 | for chunk in file_diff['chunks']: |
|
1087 | for chunk in file_diff['chunks']: | |
1088 | for idx, line in enumerate(chunk): |
|
1088 | for idx, line in enumerate(chunk): | |
1089 | if line['old_lineno'] == diff_line.old: |
|
1089 | if line['old_lineno'] == diff_line.old: | |
1090 | return chunk, idx |
|
1090 | return chunk, idx | |
1091 | if line['new_lineno'] == diff_line.new: |
|
1091 | if line['new_lineno'] == diff_line.new: | |
1092 | return chunk, idx |
|
1092 | return chunk, idx | |
1093 | raise LineNotInDiffException( |
|
1093 | raise LineNotInDiffException( | |
1094 | "The line {} is not part of the diff.".format(diff_line)) |
|
1094 | "The line {} is not part of the diff.".format(diff_line)) | |
1095 |
|
1095 | |||
1096 |
|
1096 | |||
1097 | def _is_diff_content(line): |
|
1097 | def _is_diff_content(line): | |
1098 | return line['action'] in ( |
|
1098 | return line['action'] in ( | |
1099 | Action.UNMODIFIED, Action.ADD, Action.DELETE) |
|
1099 | Action.UNMODIFIED, Action.ADD, Action.DELETE) | |
1100 |
|
1100 | |||
1101 |
|
1101 | |||
1102 | def _context_line(line): |
|
1102 | def _context_line(line): | |
1103 | return (line['action'], line['line']) |
|
1103 | return (line['action'], line['line']) | |
1104 |
|
1104 | |||
1105 |
|
1105 | |||
1106 | DiffLineNumber = collections.namedtuple('DiffLineNumber', ['old', 'new']) |
|
1106 | DiffLineNumber = collections.namedtuple('DiffLineNumber', ['old', 'new']) | |
1107 |
|
1107 | |||
1108 |
|
1108 | |||
1109 | def _line_to_diff_line_number(line): |
|
1109 | def _line_to_diff_line_number(line): | |
1110 | new_line_no = line['new_lineno'] or None |
|
1110 | new_line_no = line['new_lineno'] or None | |
1111 | old_line_no = line['old_lineno'] or None |
|
1111 | old_line_no = line['old_lineno'] or None | |
1112 | return DiffLineNumber(old=old_line_no, new=new_line_no) |
|
1112 | return DiffLineNumber(old=old_line_no, new=new_line_no) | |
1113 |
|
1113 | |||
1114 |
|
1114 | |||
1115 | class FileNotInDiffException(Exception): |
|
1115 | class FileNotInDiffException(Exception): | |
1116 | """ |
|
1116 | """ | |
1117 | Raised when the context for a missing file is requested. |
|
1117 | Raised when the context for a missing file is requested. | |
1118 |
|
1118 | |||
1119 | If you request the context for a line in a file which is not part of the |
|
1119 | If you request the context for a line in a file which is not part of the | |
1120 | given diff, then this exception is raised. |
|
1120 | given diff, then this exception is raised. | |
1121 | """ |
|
1121 | """ | |
1122 |
|
1122 | |||
1123 |
|
1123 | |||
1124 | class LineNotInDiffException(Exception): |
|
1124 | class LineNotInDiffException(Exception): | |
1125 | """ |
|
1125 | """ | |
1126 | Raised when the context for a missing line is requested. |
|
1126 | Raised when the context for a missing line is requested. | |
1127 |
|
1127 | |||
1128 | If you request the context for a line in a file and this line is not |
|
1128 | If you request the context for a line in a file and this line is not | |
1129 | part of the given diff, then this exception is raised. |
|
1129 | part of the given diff, then this exception is raised. | |
1130 | """ |
|
1130 | """ | |
1131 |
|
1131 | |||
1132 |
|
1132 | |||
1133 | class DiffLimitExceeded(Exception): |
|
1133 | class DiffLimitExceeded(Exception): | |
1134 | pass |
|
1134 | pass | |
1135 |
|
1135 | |||
1136 |
|
1136 | |||
1137 | # NOTE(marcink): if diffs.mako change, probably this |
|
1137 | # NOTE(marcink): if diffs.mako change, probably this | |
1138 | # needs a bump to next version |
|
1138 | # needs a bump to next version | |
1139 |
CURRENT_DIFF_VERSION = 'v |
|
1139 | CURRENT_DIFF_VERSION = 'v3' | |
1140 |
|
1140 | |||
1141 |
|
1141 | |||
1142 | def _cleanup_cache_file(cached_diff_file): |
|
1142 | def _cleanup_cache_file(cached_diff_file): | |
1143 | # cleanup file to not store it "damaged" |
|
1143 | # cleanup file to not store it "damaged" | |
1144 | try: |
|
1144 | try: | |
1145 | os.remove(cached_diff_file) |
|
1145 | os.remove(cached_diff_file) | |
1146 | except Exception: |
|
1146 | except Exception: | |
1147 | log.exception('Failed to cleanup path %s', cached_diff_file) |
|
1147 | log.exception('Failed to cleanup path %s', cached_diff_file) | |
1148 |
|
1148 | |||
1149 |
|
1149 | |||
1150 | def cache_diff(cached_diff_file, diff, commits): |
|
1150 | def cache_diff(cached_diff_file, diff, commits): | |
1151 |
|
1151 | |||
1152 | struct = { |
|
1152 | struct = { | |
1153 | 'version': CURRENT_DIFF_VERSION, |
|
1153 | 'version': CURRENT_DIFF_VERSION, | |
1154 | 'diff': diff, |
|
1154 | 'diff': diff, | |
1155 | 'commits': commits |
|
1155 | 'commits': commits | |
1156 | } |
|
1156 | } | |
1157 |
|
1157 | |||
1158 | try: |
|
1158 | try: | |
1159 | with bz2.BZ2File(cached_diff_file, 'wb') as f: |
|
1159 | with bz2.BZ2File(cached_diff_file, 'wb') as f: | |
1160 | pickle.dump(struct, f) |
|
1160 | pickle.dump(struct, f) | |
1161 | log.debug('Saved diff cache under %s', cached_diff_file) |
|
1161 | log.debug('Saved diff cache under %s', cached_diff_file) | |
1162 | except Exception: |
|
1162 | except Exception: | |
1163 | log.warn('Failed to save cache', exc_info=True) |
|
1163 | log.warn('Failed to save cache', exc_info=True) | |
1164 | _cleanup_cache_file(cached_diff_file) |
|
1164 | _cleanup_cache_file(cached_diff_file) | |
1165 |
|
1165 | |||
1166 |
|
1166 | |||
1167 | def load_cached_diff(cached_diff_file): |
|
1167 | def load_cached_diff(cached_diff_file): | |
1168 |
|
1168 | |||
1169 | default_struct = { |
|
1169 | default_struct = { | |
1170 | 'version': CURRENT_DIFF_VERSION, |
|
1170 | 'version': CURRENT_DIFF_VERSION, | |
1171 | 'diff': None, |
|
1171 | 'diff': None, | |
1172 | 'commits': None |
|
1172 | 'commits': None | |
1173 | } |
|
1173 | } | |
1174 |
|
1174 | |||
1175 | has_cache = os.path.isfile(cached_diff_file) |
|
1175 | has_cache = os.path.isfile(cached_diff_file) | |
1176 | if not has_cache: |
|
1176 | if not has_cache: | |
1177 | return default_struct |
|
1177 | return default_struct | |
1178 |
|
1178 | |||
1179 | data = None |
|
1179 | data = None | |
1180 | try: |
|
1180 | try: | |
1181 | with bz2.BZ2File(cached_diff_file, 'rb') as f: |
|
1181 | with bz2.BZ2File(cached_diff_file, 'rb') as f: | |
1182 | data = pickle.load(f) |
|
1182 | data = pickle.load(f) | |
1183 | log.debug('Loaded diff cache from %s', cached_diff_file) |
|
1183 | log.debug('Loaded diff cache from %s', cached_diff_file) | |
1184 | except Exception: |
|
1184 | except Exception: | |
1185 | log.warn('Failed to read diff cache file', exc_info=True) |
|
1185 | log.warn('Failed to read diff cache file', exc_info=True) | |
1186 |
|
1186 | |||
1187 | if not data: |
|
1187 | if not data: | |
1188 | data = default_struct |
|
1188 | data = default_struct | |
1189 |
|
1189 | |||
1190 | if not isinstance(data, dict): |
|
1190 | if not isinstance(data, dict): | |
1191 | # old version of data ? |
|
1191 | # old version of data ? | |
1192 | data = default_struct |
|
1192 | data = default_struct | |
1193 |
|
1193 | |||
1194 | # check version |
|
1194 | # check version | |
1195 | if data.get('version') != CURRENT_DIFF_VERSION: |
|
1195 | if data.get('version') != CURRENT_DIFF_VERSION: | |
1196 | # purge cache |
|
1196 | # purge cache | |
1197 | _cleanup_cache_file(cached_diff_file) |
|
1197 | _cleanup_cache_file(cached_diff_file) | |
1198 | return default_struct |
|
1198 | return default_struct | |
1199 |
|
1199 | |||
1200 | return data |
|
1200 | return data | |
1201 |
|
1201 | |||
1202 |
|
1202 | |||
1203 | def generate_diff_cache_key(*args): |
|
1203 | def generate_diff_cache_key(*args): | |
1204 | """ |
|
1204 | """ | |
1205 | Helper to generate a cache key using arguments |
|
1205 | Helper to generate a cache key using arguments | |
1206 | """ |
|
1206 | """ | |
1207 | def arg_mapper(input_param): |
|
1207 | def arg_mapper(input_param): | |
1208 | input_param = safe_str(input_param) |
|
1208 | input_param = safe_str(input_param) | |
1209 | # we cannot allow '/' in arguments since it would allow |
|
1209 | # we cannot allow '/' in arguments since it would allow | |
1210 | # subdirectory usage |
|
1210 | # subdirectory usage | |
1211 | input_param.replace('/', '_') |
|
1211 | input_param.replace('/', '_') | |
1212 | return input_param or None # prevent empty string arguments |
|
1212 | return input_param or None # prevent empty string arguments | |
1213 |
|
1213 | |||
1214 | return '_'.join([ |
|
1214 | return '_'.join([ | |
1215 | '{}' for i in range(len(args))]).format(*map(arg_mapper, args)) |
|
1215 | '{}' for i in range(len(args))]).format(*map(arg_mapper, args)) | |
1216 |
|
1216 | |||
1217 |
|
1217 | |||
1218 | def diff_cache_exist(cache_storage, *args): |
|
1218 | def diff_cache_exist(cache_storage, *args): | |
1219 | """ |
|
1219 | """ | |
1220 | Based on all generated arguments check and return a cache path |
|
1220 | Based on all generated arguments check and return a cache path | |
1221 | """ |
|
1221 | """ | |
1222 | cache_key = generate_diff_cache_key(*args) |
|
1222 | cache_key = generate_diff_cache_key(*args) | |
1223 | cache_file_path = os.path.join(cache_storage, cache_key) |
|
1223 | cache_file_path = os.path.join(cache_storage, cache_key) | |
1224 | # prevent path traversal attacks using some param that have e.g '../../' |
|
1224 | # prevent path traversal attacks using some param that have e.g '../../' | |
1225 | if not os.path.abspath(cache_file_path).startswith(cache_storage): |
|
1225 | if not os.path.abspath(cache_file_path).startswith(cache_storage): | |
1226 | raise ValueError('Final path must be within {}'.format(cache_storage)) |
|
1226 | raise ValueError('Final path must be within {}'.format(cache_storage)) | |
1227 |
|
1227 | |||
1228 | return cache_file_path |
|
1228 | return cache_file_path |
@@ -1,1172 +1,1221 b'' | |||||
1 | // Default styles |
|
1 | // Default styles | |
2 |
|
2 | |||
3 | .diff-collapse { |
|
3 | .diff-collapse { | |
4 | margin: @padding 0; |
|
4 | margin: @padding 0; | |
5 | text-align: right; |
|
5 | text-align: right; | |
6 | } |
|
6 | } | |
7 |
|
7 | |||
8 | .diff-container { |
|
8 | .diff-container { | |
9 | margin-bottom: @space; |
|
9 | margin-bottom: @space; | |
10 |
|
10 | |||
11 | .diffblock { |
|
11 | .diffblock { | |
12 | margin-bottom: @space; |
|
12 | margin-bottom: @space; | |
13 | } |
|
13 | } | |
14 |
|
14 | |||
15 | &.hidden { |
|
15 | &.hidden { | |
16 | display: none; |
|
16 | display: none; | |
17 | overflow: hidden; |
|
17 | overflow: hidden; | |
18 | } |
|
18 | } | |
19 | } |
|
19 | } | |
20 |
|
20 | |||
21 |
|
21 | |||
22 | div.diffblock .sidebyside { |
|
22 | div.diffblock .sidebyside { | |
23 | background: #ffffff; |
|
23 | background: #ffffff; | |
24 | } |
|
24 | } | |
25 |
|
25 | |||
26 | div.diffblock { |
|
26 | div.diffblock { | |
27 | overflow-x: auto; |
|
27 | overflow-x: auto; | |
28 | overflow-y: hidden; |
|
28 | overflow-y: hidden; | |
29 | clear: both; |
|
29 | clear: both; | |
30 | padding: 0px; |
|
30 | padding: 0px; | |
31 | background: @grey6; |
|
31 | background: @grey6; | |
32 | border: @border-thickness solid @grey5; |
|
32 | border: @border-thickness solid @grey5; | |
33 | -webkit-border-radius: @border-radius @border-radius 0px 0px; |
|
33 | -webkit-border-radius: @border-radius @border-radius 0px 0px; | |
34 | border-radius: @border-radius @border-radius 0px 0px; |
|
34 | border-radius: @border-radius @border-radius 0px 0px; | |
35 |
|
35 | |||
36 |
|
36 | |||
37 | .comments-number { |
|
37 | .comments-number { | |
38 | float: right; |
|
38 | float: right; | |
39 | } |
|
39 | } | |
40 |
|
40 | |||
41 | // BEGIN CODE-HEADER STYLES |
|
41 | // BEGIN CODE-HEADER STYLES | |
42 |
|
42 | |||
43 | .code-header { |
|
43 | .code-header { | |
44 | background: @grey6; |
|
44 | background: @grey6; | |
45 | padding: 10px 0 10px 0; |
|
45 | padding: 10px 0 10px 0; | |
46 | height: auto; |
|
46 | height: auto; | |
47 | width: 100%; |
|
47 | width: 100%; | |
48 |
|
48 | |||
49 | .hash { |
|
49 | .hash { | |
50 | float: left; |
|
50 | float: left; | |
51 | padding: 2px 0 0 2px; |
|
51 | padding: 2px 0 0 2px; | |
52 | } |
|
52 | } | |
53 |
|
53 | |||
54 | .date { |
|
54 | .date { | |
55 | float: left; |
|
55 | float: left; | |
56 | text-transform: uppercase; |
|
56 | text-transform: uppercase; | |
57 | padding: 4px 0px 0px 2px; |
|
57 | padding: 4px 0px 0px 2px; | |
58 | } |
|
58 | } | |
59 |
|
59 | |||
60 | div { |
|
60 | div { | |
61 | margin-left: 4px; |
|
61 | margin-left: 4px; | |
62 | } |
|
62 | } | |
63 |
|
63 | |||
64 | div.compare_header { |
|
64 | div.compare_header { | |
65 | min-height: 40px; |
|
65 | min-height: 40px; | |
66 | margin: 0; |
|
66 | margin: 0; | |
67 | padding: 0 @padding; |
|
67 | padding: 0 @padding; | |
68 |
|
68 | |||
69 | .drop-menu { |
|
69 | .drop-menu { | |
70 | float:left; |
|
70 | float:left; | |
71 | display: block; |
|
71 | display: block; | |
72 | margin:0 0 @padding 0; |
|
72 | margin:0 0 @padding 0; | |
73 | } |
|
73 | } | |
74 |
|
74 | |||
75 | .compare-label { |
|
75 | .compare-label { | |
76 | float: left; |
|
76 | float: left; | |
77 | clear: both; |
|
77 | clear: both; | |
78 | display: inline-block; |
|
78 | display: inline-block; | |
79 | min-width: 5em; |
|
79 | min-width: 5em; | |
80 | margin: 0; |
|
80 | margin: 0; | |
81 | padding: @button-padding @button-padding @button-padding 0; |
|
81 | padding: @button-padding @button-padding @button-padding 0; | |
82 | font-family: @text-semibold; |
|
82 | font-family: @text-semibold; | |
83 | } |
|
83 | } | |
84 |
|
84 | |||
85 | .compare-buttons { |
|
85 | .compare-buttons { | |
86 | float: left; |
|
86 | float: left; | |
87 | margin: 0; |
|
87 | margin: 0; | |
88 | padding: 0 0 @padding; |
|
88 | padding: 0 0 @padding; | |
89 |
|
89 | |||
90 | .btn { |
|
90 | .btn { | |
91 | margin: 0 @padding 0 0; |
|
91 | margin: 0 @padding 0 0; | |
92 | } |
|
92 | } | |
93 | } |
|
93 | } | |
94 | } |
|
94 | } | |
95 |
|
95 | |||
96 | } |
|
96 | } | |
97 |
|
97 | |||
98 | .parents { |
|
98 | .parents { | |
99 | float: left; |
|
99 | float: left; | |
100 | width: 100px; |
|
100 | width: 100px; | |
101 | font-weight: 400; |
|
101 | font-weight: 400; | |
102 | vertical-align: middle; |
|
102 | vertical-align: middle; | |
103 | padding: 0px 2px 0px 2px; |
|
103 | padding: 0px 2px 0px 2px; | |
104 | background-color: @grey6; |
|
104 | background-color: @grey6; | |
105 |
|
105 | |||
106 | #parent_link { |
|
106 | #parent_link { | |
107 | margin: 00px 2px; |
|
107 | margin: 00px 2px; | |
108 |
|
108 | |||
109 | &.double { |
|
109 | &.double { | |
110 | margin: 0px 2px; |
|
110 | margin: 0px 2px; | |
111 | } |
|
111 | } | |
112 |
|
112 | |||
113 | &.disabled{ |
|
113 | &.disabled{ | |
114 | margin-right: @padding; |
|
114 | margin-right: @padding; | |
115 | } |
|
115 | } | |
116 | } |
|
116 | } | |
117 | } |
|
117 | } | |
118 |
|
118 | |||
119 | .children { |
|
119 | .children { | |
120 | float: right; |
|
120 | float: right; | |
121 | width: 100px; |
|
121 | width: 100px; | |
122 | font-weight: 400; |
|
122 | font-weight: 400; | |
123 | vertical-align: middle; |
|
123 | vertical-align: middle; | |
124 | text-align: right; |
|
124 | text-align: right; | |
125 | padding: 0px 2px 0px 2px; |
|
125 | padding: 0px 2px 0px 2px; | |
126 | background-color: @grey6; |
|
126 | background-color: @grey6; | |
127 |
|
127 | |||
128 | #child_link { |
|
128 | #child_link { | |
129 | margin: 0px 2px; |
|
129 | margin: 0px 2px; | |
130 |
|
130 | |||
131 | &.double { |
|
131 | &.double { | |
132 | margin: 0px 2px; |
|
132 | margin: 0px 2px; | |
133 | } |
|
133 | } | |
134 |
|
134 | |||
135 | &.disabled{ |
|
135 | &.disabled{ | |
136 | margin-right: @padding; |
|
136 | margin-right: @padding; | |
137 | } |
|
137 | } | |
138 | } |
|
138 | } | |
139 | } |
|
139 | } | |
140 |
|
140 | |||
141 | .changeset_header { |
|
141 | .changeset_header { | |
142 | height: 16px; |
|
142 | height: 16px; | |
143 |
|
143 | |||
144 | & > div{ |
|
144 | & > div{ | |
145 | margin-right: @padding; |
|
145 | margin-right: @padding; | |
146 | } |
|
146 | } | |
147 | } |
|
147 | } | |
148 |
|
148 | |||
149 | .changeset_file { |
|
149 | .changeset_file { | |
150 | text-align: left; |
|
150 | text-align: left; | |
151 | float: left; |
|
151 | float: left; | |
152 | padding: 0; |
|
152 | padding: 0; | |
153 |
|
153 | |||
154 | a{ |
|
154 | a{ | |
155 | display: inline-block; |
|
155 | display: inline-block; | |
156 | margin-right: 0.5em; |
|
156 | margin-right: 0.5em; | |
157 | } |
|
157 | } | |
158 |
|
158 | |||
159 | #selected_mode{ |
|
159 | #selected_mode{ | |
160 | margin-left: 0; |
|
160 | margin-left: 0; | |
161 | } |
|
161 | } | |
162 | } |
|
162 | } | |
163 |
|
163 | |||
164 | .diff-menu-wrapper { |
|
164 | .diff-menu-wrapper { | |
165 | float: left; |
|
165 | float: left; | |
166 | } |
|
166 | } | |
167 |
|
167 | |||
168 | .diff-menu { |
|
168 | .diff-menu { | |
169 | position: absolute; |
|
169 | position: absolute; | |
170 | background: none repeat scroll 0 0 #FFFFFF; |
|
170 | background: none repeat scroll 0 0 #FFFFFF; | |
171 | border-color: #003367 @grey3 @grey3; |
|
171 | border-color: #003367 @grey3 @grey3; | |
172 | border-right: 1px solid @grey3; |
|
172 | border-right: 1px solid @grey3; | |
173 | border-style: solid solid solid; |
|
173 | border-style: solid solid solid; | |
174 | border-width: @border-thickness; |
|
174 | border-width: @border-thickness; | |
175 | box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2); |
|
175 | box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2); | |
176 | margin-top: 5px; |
|
176 | margin-top: 5px; | |
177 | margin-left: 1px; |
|
177 | margin-left: 1px; | |
178 | } |
|
178 | } | |
179 |
|
179 | |||
180 | .diff-actions, .editor-actions { |
|
180 | .diff-actions, .editor-actions { | |
181 | float: left; |
|
181 | float: left; | |
182 |
|
182 | |||
183 | input{ |
|
183 | input{ | |
184 | margin: 0 0.5em 0 0; |
|
184 | margin: 0 0.5em 0 0; | |
185 | } |
|
185 | } | |
186 | } |
|
186 | } | |
187 |
|
187 | |||
188 | // END CODE-HEADER STYLES |
|
188 | // END CODE-HEADER STYLES | |
189 |
|
189 | |||
190 | // BEGIN CODE-BODY STYLES |
|
190 | // BEGIN CODE-BODY STYLES | |
191 |
|
191 | |||
192 | .code-body { |
|
192 | .code-body { | |
193 | padding: 0; |
|
193 | padding: 0; | |
194 | background-color: #ffffff; |
|
194 | background-color: #ffffff; | |
195 | position: relative; |
|
195 | position: relative; | |
196 | max-width: none; |
|
196 | max-width: none; | |
197 | box-sizing: border-box; |
|
197 | box-sizing: border-box; | |
198 | // TODO: johbo: Parent has overflow: auto, this forces the child here |
|
198 | // TODO: johbo: Parent has overflow: auto, this forces the child here | |
199 | // to have the intended size and to scroll. Should be simplified. |
|
199 | // to have the intended size and to scroll. Should be simplified. | |
200 | width: 100%; |
|
200 | width: 100%; | |
201 | overflow-x: auto; |
|
201 | overflow-x: auto; | |
202 | } |
|
202 | } | |
203 |
|
203 | |||
204 | pre.raw { |
|
204 | pre.raw { | |
205 | background: white; |
|
205 | background: white; | |
206 | color: @grey1; |
|
206 | color: @grey1; | |
207 | } |
|
207 | } | |
208 | // END CODE-BODY STYLES |
|
208 | // END CODE-BODY STYLES | |
209 |
|
209 | |||
210 | } |
|
210 | } | |
211 |
|
211 | |||
212 |
|
212 | |||
213 | table.code-difftable { |
|
213 | table.code-difftable { | |
214 | border-collapse: collapse; |
|
214 | border-collapse: collapse; | |
215 | width: 99%; |
|
215 | width: 99%; | |
216 | border-radius: 0px !important; |
|
216 | border-radius: 0px !important; | |
217 |
|
217 | |||
218 | td { |
|
218 | td { | |
219 | padding: 0 !important; |
|
219 | padding: 0 !important; | |
220 | background: none !important; |
|
220 | background: none !important; | |
221 | border: 0 !important; |
|
221 | border: 0 !important; | |
222 | } |
|
222 | } | |
223 |
|
223 | |||
224 | .context { |
|
224 | .context { | |
225 | background: none repeat scroll 0 0 #DDE7EF; |
|
225 | background: none repeat scroll 0 0 #DDE7EF; | |
226 | } |
|
226 | } | |
227 |
|
227 | |||
228 | .add { |
|
228 | .add { | |
229 | background: none repeat scroll 0 0 #DDFFDD; |
|
229 | background: none repeat scroll 0 0 #DDFFDD; | |
230 |
|
230 | |||
231 | ins { |
|
231 | ins { | |
232 | background: none repeat scroll 0 0 #AAFFAA; |
|
232 | background: none repeat scroll 0 0 #AAFFAA; | |
233 | text-decoration: none; |
|
233 | text-decoration: none; | |
234 | } |
|
234 | } | |
235 | } |
|
235 | } | |
236 |
|
236 | |||
237 | .del { |
|
237 | .del { | |
238 | background: none repeat scroll 0 0 #FFDDDD; |
|
238 | background: none repeat scroll 0 0 #FFDDDD; | |
239 |
|
239 | |||
240 | del { |
|
240 | del { | |
241 | background: none repeat scroll 0 0 #FFAAAA; |
|
241 | background: none repeat scroll 0 0 #FFAAAA; | |
242 | text-decoration: none; |
|
242 | text-decoration: none; | |
243 | } |
|
243 | } | |
244 | } |
|
244 | } | |
245 |
|
245 | |||
246 | /** LINE NUMBERS **/ |
|
246 | /** LINE NUMBERS **/ | |
247 | .lineno { |
|
247 | .lineno { | |
248 | padding-left: 2px !important; |
|
248 | padding-left: 2px !important; | |
249 | padding-right: 2px; |
|
249 | padding-right: 2px; | |
250 | text-align: right; |
|
250 | text-align: right; | |
251 | width: 32px; |
|
251 | width: 32px; | |
252 | -moz-user-select: none; |
|
252 | -moz-user-select: none; | |
253 | -webkit-user-select: none; |
|
253 | -webkit-user-select: none; | |
254 | border-right: @border-thickness solid @grey5 !important; |
|
254 | border-right: @border-thickness solid @grey5 !important; | |
255 | border-left: 0px solid #CCC !important; |
|
255 | border-left: 0px solid #CCC !important; | |
256 | border-top: 0px solid #CCC !important; |
|
256 | border-top: 0px solid #CCC !important; | |
257 | border-bottom: none !important; |
|
257 | border-bottom: none !important; | |
258 |
|
258 | |||
259 | a { |
|
259 | a { | |
260 | &:extend(pre); |
|
260 | &:extend(pre); | |
261 | text-align: right; |
|
261 | text-align: right; | |
262 | padding-right: 2px; |
|
262 | padding-right: 2px; | |
263 | cursor: pointer; |
|
263 | cursor: pointer; | |
264 | display: block; |
|
264 | display: block; | |
265 | width: 32px; |
|
265 | width: 32px; | |
266 | } |
|
266 | } | |
267 | } |
|
267 | } | |
268 |
|
268 | |||
269 | .context { |
|
269 | .context { | |
270 | cursor: auto; |
|
270 | cursor: auto; | |
271 | &:extend(pre); |
|
271 | &:extend(pre); | |
272 | } |
|
272 | } | |
273 |
|
273 | |||
274 | .lineno-inline { |
|
274 | .lineno-inline { | |
275 | background: none repeat scroll 0 0 #FFF !important; |
|
275 | background: none repeat scroll 0 0 #FFF !important; | |
276 | padding-left: 2px; |
|
276 | padding-left: 2px; | |
277 | padding-right: 2px; |
|
277 | padding-right: 2px; | |
278 | text-align: right; |
|
278 | text-align: right; | |
279 | width: 30px; |
|
279 | width: 30px; | |
280 | -moz-user-select: none; |
|
280 | -moz-user-select: none; | |
281 | -webkit-user-select: none; |
|
281 | -webkit-user-select: none; | |
282 | } |
|
282 | } | |
283 |
|
283 | |||
284 | /** CODE **/ |
|
284 | /** CODE **/ | |
285 | .code { |
|
285 | .code { | |
286 | display: block; |
|
286 | display: block; | |
287 | width: 100%; |
|
287 | width: 100%; | |
288 |
|
288 | |||
289 | td { |
|
289 | td { | |
290 | margin: 0; |
|
290 | margin: 0; | |
291 | padding: 0; |
|
291 | padding: 0; | |
292 | } |
|
292 | } | |
293 |
|
293 | |||
294 | pre { |
|
294 | pre { | |
295 | margin: 0; |
|
295 | margin: 0; | |
296 | padding: 0; |
|
296 | padding: 0; | |
297 | margin-left: .5em; |
|
297 | margin-left: .5em; | |
298 | } |
|
298 | } | |
299 | } |
|
299 | } | |
300 | } |
|
300 | } | |
301 |
|
301 | |||
302 |
|
302 | |||
303 | // Comments |
|
303 | // Comments | |
304 |
|
304 | |||
305 | div.comment:target { |
|
305 | div.comment:target { | |
306 | border-left: 6px solid @comment-highlight-color !important; |
|
306 | border-left: 6px solid @comment-highlight-color !important; | |
307 | padding-left: 3px; |
|
307 | padding-left: 3px; | |
308 | margin-left: -9px; |
|
308 | margin-left: -9px; | |
309 | } |
|
309 | } | |
310 |
|
310 | |||
311 | //TODO: anderson: can't get an absolute number out of anything, so had to put the |
|
311 | //TODO: anderson: can't get an absolute number out of anything, so had to put the | |
312 | //current values that might change. But to make it clear I put as a calculation |
|
312 | //current values that might change. But to make it clear I put as a calculation | |
313 | @comment-max-width: 1065px; |
|
313 | @comment-max-width: 1065px; | |
314 | @pr-extra-margin: 34px; |
|
314 | @pr-extra-margin: 34px; | |
315 | @pr-border-spacing: 4px; |
|
315 | @pr-border-spacing: 4px; | |
316 | @pr-comment-width: @comment-max-width - @pr-extra-margin - @pr-border-spacing; |
|
316 | @pr-comment-width: @comment-max-width - @pr-extra-margin - @pr-border-spacing; | |
317 |
|
317 | |||
318 | // Pull Request |
|
318 | // Pull Request | |
319 | .cs_files .code-difftable { |
|
319 | .cs_files .code-difftable { | |
320 | border: @border-thickness solid @grey5; //borders only on PRs |
|
320 | border: @border-thickness solid @grey5; //borders only on PRs | |
321 |
|
321 | |||
322 | .comment-inline-form, |
|
322 | .comment-inline-form, | |
323 | div.comment { |
|
323 | div.comment { | |
324 | width: @pr-comment-width; |
|
324 | width: @pr-comment-width; | |
325 | } |
|
325 | } | |
326 | } |
|
326 | } | |
327 |
|
327 | |||
328 | // Changeset |
|
328 | // Changeset | |
329 | .code-difftable { |
|
329 | .code-difftable { | |
330 | .comment-inline-form, |
|
330 | .comment-inline-form, | |
331 | div.comment { |
|
331 | div.comment { | |
332 | width: @comment-max-width; |
|
332 | width: @comment-max-width; | |
333 | } |
|
333 | } | |
334 | } |
|
334 | } | |
335 |
|
335 | |||
336 | //Style page |
|
336 | //Style page | |
337 | @style-extra-margin: @sidebar-width + (@sidebarpadding * 3) + @padding; |
|
337 | @style-extra-margin: @sidebar-width + (@sidebarpadding * 3) + @padding; | |
338 | #style-page .code-difftable{ |
|
338 | #style-page .code-difftable{ | |
339 | .comment-inline-form, |
|
339 | .comment-inline-form, | |
340 | div.comment { |
|
340 | div.comment { | |
341 | width: @comment-max-width - @style-extra-margin; |
|
341 | width: @comment-max-width - @style-extra-margin; | |
342 | } |
|
342 | } | |
343 | } |
|
343 | } | |
344 |
|
344 | |||
345 | #context-bar > h2 { |
|
345 | #context-bar > h2 { | |
346 | font-size: 20px; |
|
346 | font-size: 20px; | |
347 | } |
|
347 | } | |
348 |
|
348 | |||
349 | #context-bar > h2> a { |
|
349 | #context-bar > h2> a { | |
350 | font-size: 20px; |
|
350 | font-size: 20px; | |
351 | } |
|
351 | } | |
352 | // end of defaults |
|
352 | // end of defaults | |
353 |
|
353 | |||
354 | .file_diff_buttons { |
|
354 | .file_diff_buttons { | |
355 | padding: 0 0 @padding; |
|
355 | padding: 0 0 @padding; | |
356 |
|
356 | |||
357 | .drop-menu { |
|
357 | .drop-menu { | |
358 | float: left; |
|
358 | float: left; | |
359 | margin: 0 @padding 0 0; |
|
359 | margin: 0 @padding 0 0; | |
360 | } |
|
360 | } | |
361 | .btn { |
|
361 | .btn { | |
362 | margin: 0 @padding 0 0; |
|
362 | margin: 0 @padding 0 0; | |
363 | } |
|
363 | } | |
364 | } |
|
364 | } | |
365 |
|
365 | |||
366 | .code-body.textarea.editor { |
|
366 | .code-body.textarea.editor { | |
367 | max-width: none; |
|
367 | max-width: none; | |
368 | padding: 15px; |
|
368 | padding: 15px; | |
369 | } |
|
369 | } | |
370 |
|
370 | |||
371 | td.injected_diff{ |
|
371 | td.injected_diff{ | |
372 | max-width: 1178px; |
|
372 | max-width: 1178px; | |
373 | overflow-x: auto; |
|
373 | overflow-x: auto; | |
374 | overflow-y: hidden; |
|
374 | overflow-y: hidden; | |
375 |
|
375 | |||
376 | div.diff-container, |
|
376 | div.diff-container, | |
377 | div.diffblock{ |
|
377 | div.diffblock{ | |
378 | max-width: 100%; |
|
378 | max-width: 100%; | |
379 | } |
|
379 | } | |
380 |
|
380 | |||
381 | div.code-body { |
|
381 | div.code-body { | |
382 | max-width: 1124px; |
|
382 | max-width: 1124px; | |
383 | overflow-x: auto; |
|
383 | overflow-x: auto; | |
384 | overflow-y: hidden; |
|
384 | overflow-y: hidden; | |
385 | padding: 0; |
|
385 | padding: 0; | |
386 | } |
|
386 | } | |
387 | div.diffblock { |
|
387 | div.diffblock { | |
388 | border: none; |
|
388 | border: none; | |
389 | } |
|
389 | } | |
390 |
|
390 | |||
391 | &.inline-form { |
|
391 | &.inline-form { | |
392 | width: 99% |
|
392 | width: 99% | |
393 | } |
|
393 | } | |
394 | } |
|
394 | } | |
395 |
|
395 | |||
396 |
|
396 | |||
397 | table.code-difftable { |
|
397 | table.code-difftable { | |
398 | width: 100%; |
|
398 | width: 100%; | |
399 | } |
|
399 | } | |
400 |
|
400 | |||
401 | /** PYGMENTS COLORING **/ |
|
401 | /** PYGMENTS COLORING **/ | |
402 | div.codeblock { |
|
402 | div.codeblock { | |
403 |
|
403 | |||
404 | // TODO: johbo: Added interim to get rid of the margin around |
|
404 | // TODO: johbo: Added interim to get rid of the margin around | |
405 | // Select2 widgets. This needs further cleanup. |
|
405 | // Select2 widgets. This needs further cleanup. | |
406 | margin-top: @padding; |
|
406 | margin-top: @padding; | |
407 |
|
407 | |||
408 | overflow: auto; |
|
408 | overflow: auto; | |
409 | padding: 0px; |
|
409 | padding: 0px; | |
410 | border: @border-thickness solid @grey5; |
|
410 | border: @border-thickness solid @grey5; | |
411 | background: @grey6; |
|
411 | background: @grey6; | |
412 | .border-radius(@border-radius); |
|
412 | .border-radius(@border-radius); | |
413 |
|
413 | |||
414 | #remove_gist { |
|
414 | #remove_gist { | |
415 | float: right; |
|
415 | float: right; | |
416 | } |
|
416 | } | |
417 |
|
417 | |||
418 | .gist_url { |
|
418 | .gist_url { | |
419 | padding: 0px 0px 10px 0px; |
|
419 | padding: 0px 0px 10px 0px; | |
420 | } |
|
420 | } | |
421 |
|
421 | |||
422 | .author { |
|
422 | .author { | |
423 | clear: both; |
|
423 | clear: both; | |
424 | vertical-align: middle; |
|
424 | vertical-align: middle; | |
425 | font-family: @text-bold; |
|
425 | font-family: @text-bold; | |
426 | } |
|
426 | } | |
427 |
|
427 | |||
428 | .btn-mini { |
|
428 | .btn-mini { | |
429 | float: left; |
|
429 | float: left; | |
430 | margin: 0 5px 0 0; |
|
430 | margin: 0 5px 0 0; | |
431 | } |
|
431 | } | |
432 |
|
432 | |||
433 | .code-header { |
|
433 | .code-header { | |
434 | padding: @padding; |
|
434 | padding: @padding; | |
435 | border-bottom: @border-thickness solid @grey5; |
|
435 | border-bottom: @border-thickness solid @grey5; | |
436 |
|
436 | |||
437 | .rc-user { |
|
437 | .rc-user { | |
438 | min-width: 0; |
|
438 | min-width: 0; | |
439 | margin-right: .5em; |
|
439 | margin-right: .5em; | |
440 | } |
|
440 | } | |
441 |
|
441 | |||
442 | .stats { |
|
442 | .stats { | |
443 | clear: both; |
|
443 | clear: both; | |
444 | margin: 0 0 @padding 0; |
|
444 | margin: 0 0 @padding 0; | |
445 | padding: 0; |
|
445 | padding: 0; | |
446 | .left { |
|
446 | .left { | |
447 | float: left; |
|
447 | float: left; | |
448 | clear: left; |
|
448 | clear: left; | |
449 | max-width: 75%; |
|
449 | max-width: 75%; | |
450 | margin: 0 0 @padding 0; |
|
450 | margin: 0 0 @padding 0; | |
451 |
|
451 | |||
452 | &.item { |
|
452 | &.item { | |
453 | margin-right: @padding; |
|
453 | margin-right: @padding; | |
454 | &.last { border-right: none; } |
|
454 | &.last { border-right: none; } | |
455 | } |
|
455 | } | |
456 | } |
|
456 | } | |
457 | .buttons { float: right; } |
|
457 | .buttons { float: right; } | |
458 | .author { |
|
458 | .author { | |
459 | height: 25px; margin-left: 15px; font-weight: bold; |
|
459 | height: 25px; margin-left: 15px; font-weight: bold; | |
460 | } |
|
460 | } | |
461 | } |
|
461 | } | |
462 |
|
462 | |||
463 | .commit { |
|
463 | .commit { | |
464 | margin: 5px 0 0 26px; |
|
464 | margin: 5px 0 0 26px; | |
465 | font-weight: normal; |
|
465 | font-weight: normal; | |
466 | white-space: pre-wrap; |
|
466 | white-space: pre-wrap; | |
467 | } |
|
467 | } | |
468 | } |
|
468 | } | |
469 |
|
469 | |||
470 | .message { |
|
470 | .message { | |
471 | position: relative; |
|
471 | position: relative; | |
472 | margin: @padding; |
|
472 | margin: @padding; | |
473 |
|
473 | |||
474 | .codeblock-label { |
|
474 | .codeblock-label { | |
475 | margin: 0 0 1em 0; |
|
475 | margin: 0 0 1em 0; | |
476 | } |
|
476 | } | |
477 | } |
|
477 | } | |
478 |
|
478 | |||
479 | .code-body { |
|
479 | .code-body { | |
480 | padding: @padding; |
|
480 | padding: @padding; | |
481 | background-color: #ffffff; |
|
481 | background-color: #ffffff; | |
482 | min-width: 100%; |
|
482 | min-width: 100%; | |
483 | box-sizing: border-box; |
|
483 | box-sizing: border-box; | |
484 | // TODO: johbo: Parent has overflow: auto, this forces the child here |
|
484 | // TODO: johbo: Parent has overflow: auto, this forces the child here | |
485 | // to have the intended size and to scroll. Should be simplified. |
|
485 | // to have the intended size and to scroll. Should be simplified. | |
486 | width: 100%; |
|
486 | width: 100%; | |
487 | overflow-x: auto; |
|
487 | overflow-x: auto; | |
488 |
|
488 | |||
489 | img.rendered-binary { |
|
489 | img.rendered-binary { | |
490 | height: auto; |
|
490 | height: auto; | |
491 | width: 100%; |
|
491 | width: 100%; | |
492 | } |
|
492 | } | |
493 | } |
|
493 | } | |
494 | } |
|
494 | } | |
495 |
|
495 | |||
496 | .code-highlighttable, |
|
496 | .code-highlighttable, | |
497 | div.codeblock { |
|
497 | div.codeblock { | |
498 |
|
498 | |||
499 | &.readme { |
|
499 | &.readme { | |
500 | background-color: white; |
|
500 | background-color: white; | |
501 | } |
|
501 | } | |
502 |
|
502 | |||
503 | .markdown-block table { |
|
503 | .markdown-block table { | |
504 | border-collapse: collapse; |
|
504 | border-collapse: collapse; | |
505 |
|
505 | |||
506 | th, |
|
506 | th, | |
507 | td { |
|
507 | td { | |
508 | padding: .5em; |
|
508 | padding: .5em; | |
509 | border: @border-thickness solid @border-default-color; |
|
509 | border: @border-thickness solid @border-default-color; | |
510 | } |
|
510 | } | |
511 | } |
|
511 | } | |
512 |
|
512 | |||
513 | table { |
|
513 | table { | |
514 | border: 0px; |
|
514 | border: 0px; | |
515 | margin: 0; |
|
515 | margin: 0; | |
516 | letter-spacing: normal; |
|
516 | letter-spacing: normal; | |
517 |
|
517 | |||
518 |
|
518 | |||
519 | td { |
|
519 | td { | |
520 | border: 0px; |
|
520 | border: 0px; | |
521 | vertical-align: top; |
|
521 | vertical-align: top; | |
522 | } |
|
522 | } | |
523 | } |
|
523 | } | |
524 | } |
|
524 | } | |
525 |
|
525 | |||
526 | div.codeblock .code-header .search-path { padding: 0 0 0 10px; } |
|
526 | div.codeblock .code-header .search-path { padding: 0 0 0 10px; } | |
527 | div.search-code-body { |
|
527 | div.search-code-body { | |
528 | background-color: #ffffff; padding: 5px 0 5px 10px; |
|
528 | background-color: #ffffff; padding: 5px 0 5px 10px; | |
529 | pre { |
|
529 | pre { | |
530 | .match { background-color: #faffa6;} |
|
530 | .match { background-color: #faffa6;} | |
531 | .break { display: block; width: 100%; background-color: #DDE7EF; color: #747474; } |
|
531 | .break { display: block; width: 100%; background-color: #DDE7EF; color: #747474; } | |
532 | } |
|
532 | } | |
533 | .code-highlighttable { |
|
533 | .code-highlighttable { | |
534 | border-collapse: collapse; |
|
534 | border-collapse: collapse; | |
535 |
|
535 | |||
536 | tr:hover { |
|
536 | tr:hover { | |
537 | background: #fafafa; |
|
537 | background: #fafafa; | |
538 | } |
|
538 | } | |
539 | td.code { |
|
539 | td.code { | |
540 | padding-left: 10px; |
|
540 | padding-left: 10px; | |
541 | } |
|
541 | } | |
542 | td.line { |
|
542 | td.line { | |
543 | border-right: 1px solid #ccc !important; |
|
543 | border-right: 1px solid #ccc !important; | |
544 | padding-right: 10px; |
|
544 | padding-right: 10px; | |
545 | text-align: right; |
|
545 | text-align: right; | |
546 | font-family: "Lucida Console",Monaco,monospace; |
|
546 | font-family: "Lucida Console",Monaco,monospace; | |
547 | span { |
|
547 | span { | |
548 | white-space: pre-wrap; |
|
548 | white-space: pre-wrap; | |
549 | color: #666666; |
|
549 | color: #666666; | |
550 | } |
|
550 | } | |
551 | } |
|
551 | } | |
552 | } |
|
552 | } | |
553 | } |
|
553 | } | |
554 |
|
554 | |||
555 | div.annotatediv { margin-left: 2px; margin-right: 4px; } |
|
555 | div.annotatediv { margin-left: 2px; margin-right: 4px; } | |
556 | .code-highlight { |
|
556 | .code-highlight { | |
557 | margin: 0; padding: 0; border-left: @border-thickness solid @grey5; |
|
557 | margin: 0; padding: 0; border-left: @border-thickness solid @grey5; | |
558 | pre, .linenodiv pre { padding: 0 5px; margin: 0; } |
|
558 | pre, .linenodiv pre { padding: 0 5px; margin: 0; } | |
559 | pre div:target {background-color: @comment-highlight-color !important;} |
|
559 | pre div:target {background-color: @comment-highlight-color !important;} | |
560 | } |
|
560 | } | |
561 |
|
561 | |||
562 | .linenos a { text-decoration: none; } |
|
562 | .linenos a { text-decoration: none; } | |
563 |
|
563 | |||
564 | .CodeMirror-selected { background: @rchighlightblue; } |
|
564 | .CodeMirror-selected { background: @rchighlightblue; } | |
565 | .CodeMirror-focused .CodeMirror-selected { background: @rchighlightblue; } |
|
565 | .CodeMirror-focused .CodeMirror-selected { background: @rchighlightblue; } | |
566 | .CodeMirror ::selection { background: @rchighlightblue; } |
|
566 | .CodeMirror ::selection { background: @rchighlightblue; } | |
567 | .CodeMirror ::-moz-selection { background: @rchighlightblue; } |
|
567 | .CodeMirror ::-moz-selection { background: @rchighlightblue; } | |
568 |
|
568 | |||
569 | .code { display: block; border:0px !important; } |
|
569 | .code { display: block; border:0px !important; } | |
570 | .code-highlight, /* TODO: dan: merge codehilite into code-highlight */ |
|
570 | .code-highlight, /* TODO: dan: merge codehilite into code-highlight */ | |
571 | .codehilite { |
|
571 | .codehilite { | |
572 | .hll { background-color: #ffffcc } |
|
572 | .hll { background-color: #ffffcc } | |
573 | .c { color: #408080; font-style: italic } /* Comment */ |
|
573 | .c { color: #408080; font-style: italic } /* Comment */ | |
574 | .err, .codehilite .err { border: none } /* Error */ |
|
574 | .err, .codehilite .err { border: none } /* Error */ | |
575 | .k { color: #008000; font-weight: bold } /* Keyword */ |
|
575 | .k { color: #008000; font-weight: bold } /* Keyword */ | |
576 | .o { color: #666666 } /* Operator */ |
|
576 | .o { color: #666666 } /* Operator */ | |
577 | .cm { color: #408080; font-style: italic } /* Comment.Multiline */ |
|
577 | .cm { color: #408080; font-style: italic } /* Comment.Multiline */ | |
578 | .cp { color: #BC7A00 } /* Comment.Preproc */ |
|
578 | .cp { color: #BC7A00 } /* Comment.Preproc */ | |
579 | .c1 { color: #408080; font-style: italic } /* Comment.Single */ |
|
579 | .c1 { color: #408080; font-style: italic } /* Comment.Single */ | |
580 | .cs { color: #408080; font-style: italic } /* Comment.Special */ |
|
580 | .cs { color: #408080; font-style: italic } /* Comment.Special */ | |
581 | .gd { color: #A00000 } /* Generic.Deleted */ |
|
581 | .gd { color: #A00000 } /* Generic.Deleted */ | |
582 | .ge { font-style: italic } /* Generic.Emph */ |
|
582 | .ge { font-style: italic } /* Generic.Emph */ | |
583 | .gr { color: #FF0000 } /* Generic.Error */ |
|
583 | .gr { color: #FF0000 } /* Generic.Error */ | |
584 | .gh { color: #000080; font-weight: bold } /* Generic.Heading */ |
|
584 | .gh { color: #000080; font-weight: bold } /* Generic.Heading */ | |
585 | .gi { color: #00A000 } /* Generic.Inserted */ |
|
585 | .gi { color: #00A000 } /* Generic.Inserted */ | |
586 | .go { color: #808080 } /* Generic.Output */ |
|
586 | .go { color: #808080 } /* Generic.Output */ | |
587 | .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ |
|
587 | .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ | |
588 | .gs { font-weight: bold } /* Generic.Strong */ |
|
588 | .gs { font-weight: bold } /* Generic.Strong */ | |
589 | .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ |
|
589 | .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ | |
590 | .gt { color: #0040D0 } /* Generic.Traceback */ |
|
590 | .gt { color: #0040D0 } /* Generic.Traceback */ | |
591 | .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ |
|
591 | .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ | |
592 | .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ |
|
592 | .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ | |
593 | .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ |
|
593 | .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ | |
594 | .kp { color: #008000 } /* Keyword.Pseudo */ |
|
594 | .kp { color: #008000 } /* Keyword.Pseudo */ | |
595 | .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ |
|
595 | .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ | |
596 | .kt { color: #B00040 } /* Keyword.Type */ |
|
596 | .kt { color: #B00040 } /* Keyword.Type */ | |
597 | .m { color: #666666 } /* Literal.Number */ |
|
597 | .m { color: #666666 } /* Literal.Number */ | |
598 | .s { color: #BA2121 } /* Literal.String */ |
|
598 | .s { color: #BA2121 } /* Literal.String */ | |
599 | .na { color: #7D9029 } /* Name.Attribute */ |
|
599 | .na { color: #7D9029 } /* Name.Attribute */ | |
600 | .nb { color: #008000 } /* Name.Builtin */ |
|
600 | .nb { color: #008000 } /* Name.Builtin */ | |
601 | .nc { color: #0000FF; font-weight: bold } /* Name.Class */ |
|
601 | .nc { color: #0000FF; font-weight: bold } /* Name.Class */ | |
602 | .no { color: #880000 } /* Name.Constant */ |
|
602 | .no { color: #880000 } /* Name.Constant */ | |
603 | .nd { color: #AA22FF } /* Name.Decorator */ |
|
603 | .nd { color: #AA22FF } /* Name.Decorator */ | |
604 | .ni { color: #999999; font-weight: bold } /* Name.Entity */ |
|
604 | .ni { color: #999999; font-weight: bold } /* Name.Entity */ | |
605 | .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ |
|
605 | .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ | |
606 | .nf { color: #0000FF } /* Name.Function */ |
|
606 | .nf { color: #0000FF } /* Name.Function */ | |
607 | .nl { color: #A0A000 } /* Name.Label */ |
|
607 | .nl { color: #A0A000 } /* Name.Label */ | |
608 | .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ |
|
608 | .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ | |
609 | .nt { color: #008000; font-weight: bold } /* Name.Tag */ |
|
609 | .nt { color: #008000; font-weight: bold } /* Name.Tag */ | |
610 | .nv { color: #19177C } /* Name.Variable */ |
|
610 | .nv { color: #19177C } /* Name.Variable */ | |
611 | .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ |
|
611 | .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ | |
612 | .w { color: #bbbbbb } /* Text.Whitespace */ |
|
612 | .w { color: #bbbbbb } /* Text.Whitespace */ | |
613 | .mf { color: #666666 } /* Literal.Number.Float */ |
|
613 | .mf { color: #666666 } /* Literal.Number.Float */ | |
614 | .mh { color: #666666 } /* Literal.Number.Hex */ |
|
614 | .mh { color: #666666 } /* Literal.Number.Hex */ | |
615 | .mi { color: #666666 } /* Literal.Number.Integer */ |
|
615 | .mi { color: #666666 } /* Literal.Number.Integer */ | |
616 | .mo { color: #666666 } /* Literal.Number.Oct */ |
|
616 | .mo { color: #666666 } /* Literal.Number.Oct */ | |
617 | .sb { color: #BA2121 } /* Literal.String.Backtick */ |
|
617 | .sb { color: #BA2121 } /* Literal.String.Backtick */ | |
618 | .sc { color: #BA2121 } /* Literal.String.Char */ |
|
618 | .sc { color: #BA2121 } /* Literal.String.Char */ | |
619 | .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ |
|
619 | .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ | |
620 | .s2 { color: #BA2121 } /* Literal.String.Double */ |
|
620 | .s2 { color: #BA2121 } /* Literal.String.Double */ | |
621 | .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ |
|
621 | .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ | |
622 | .sh { color: #BA2121 } /* Literal.String.Heredoc */ |
|
622 | .sh { color: #BA2121 } /* Literal.String.Heredoc */ | |
623 | .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ |
|
623 | .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ | |
624 | .sx { color: #008000 } /* Literal.String.Other */ |
|
624 | .sx { color: #008000 } /* Literal.String.Other */ | |
625 | .sr { color: #BB6688 } /* Literal.String.Regex */ |
|
625 | .sr { color: #BB6688 } /* Literal.String.Regex */ | |
626 | .s1 { color: #BA2121 } /* Literal.String.Single */ |
|
626 | .s1 { color: #BA2121 } /* Literal.String.Single */ | |
627 | .ss { color: #19177C } /* Literal.String.Symbol */ |
|
627 | .ss { color: #19177C } /* Literal.String.Symbol */ | |
628 | .bp { color: #008000 } /* Name.Builtin.Pseudo */ |
|
628 | .bp { color: #008000 } /* Name.Builtin.Pseudo */ | |
629 | .vc { color: #19177C } /* Name.Variable.Class */ |
|
629 | .vc { color: #19177C } /* Name.Variable.Class */ | |
630 | .vg { color: #19177C } /* Name.Variable.Global */ |
|
630 | .vg { color: #19177C } /* Name.Variable.Global */ | |
631 | .vi { color: #19177C } /* Name.Variable.Instance */ |
|
631 | .vi { color: #19177C } /* Name.Variable.Instance */ | |
632 | .il { color: #666666 } /* Literal.Number.Integer.Long */ |
|
632 | .il { color: #666666 } /* Literal.Number.Integer.Long */ | |
633 | } |
|
633 | } | |
634 |
|
634 | |||
635 | /* customized pre blocks for markdown/rst */ |
|
635 | /* customized pre blocks for markdown/rst */ | |
636 | pre.literal-block, .codehilite pre{ |
|
636 | pre.literal-block, .codehilite pre{ | |
637 | padding: @padding; |
|
637 | padding: @padding; | |
638 | border: 1px solid @grey6; |
|
638 | border: 1px solid @grey6; | |
639 | .border-radius(@border-radius); |
|
639 | .border-radius(@border-radius); | |
640 | background-color: @grey7; |
|
640 | background-color: @grey7; | |
641 | } |
|
641 | } | |
642 |
|
642 | |||
643 |
|
643 | |||
644 | /* START NEW CODE BLOCK CSS */ |
|
644 | /* START NEW CODE BLOCK CSS */ | |
645 |
|
645 | |||
646 | @cb-line-height: 18px; |
|
646 | @cb-line-height: 18px; | |
647 | @cb-line-code-padding: 10px; |
|
647 | @cb-line-code-padding: 10px; | |
648 | @cb-text-padding: 5px; |
|
648 | @cb-text-padding: 5px; | |
649 |
|
649 | |||
650 | @pill-padding: 2px 7px; |
|
650 | @pill-padding: 2px 7px; | |
651 | @pill-padding-small: 2px 2px 1px 2px; |
|
651 | @pill-padding-small: 2px 2px 1px 2px; | |
652 |
|
652 | |||
653 | input.filediff-collapse-state { |
|
653 | input.filediff-collapse-state { | |
654 | display: none; |
|
654 | display: none; | |
655 |
|
655 | |||
656 | &:checked + .filediff { /* file diff is collapsed */ |
|
656 | &:checked + .filediff { /* file diff is collapsed */ | |
657 | .cb { |
|
657 | .cb { | |
658 | display: none |
|
658 | display: none | |
659 | } |
|
659 | } | |
660 | .filediff-collapse-indicator { |
|
660 | .filediff-collapse-indicator { | |
661 | width: 0; |
|
661 | width: 0; | |
662 | height: 0; |
|
662 | height: 0; | |
663 | border-style: solid; |
|
663 | border-style: solid; | |
664 | border-width: 4.5px 0 4.5px 9.3px; |
|
664 | border-width: 4.5px 0 4.5px 9.3px; | |
665 | border-color: transparent transparent transparent #aaa; |
|
665 | border-color: transparent transparent transparent #aaa; | |
666 | margin: 6px 0px; |
|
666 | margin: 6px 0px; | |
667 | } |
|
667 | } | |
668 | .filediff-menu { |
|
668 | .filediff-menu { | |
669 | display: none; |
|
669 | display: none; | |
670 | } |
|
670 | } | |
671 | margin: 10px 0 0 0; |
|
671 | ||
672 | } |
|
672 | } | |
673 |
|
673 | |||
674 | &+ .filediff { /* file diff is expanded */ |
|
674 | &+ .filediff { /* file diff is expanded */ | |
675 | .filediff-collapse-indicator { |
|
675 | .filediff-collapse-indicator { | |
676 | width: 0; |
|
676 | width: 0; | |
677 | height: 0; |
|
677 | height: 0; | |
678 | border-style: solid; |
|
678 | border-style: solid; | |
679 | border-width: 9.3px 4.5px 0 4.5px; |
|
679 | border-width: 9.3px 4.5px 0 4.5px; | |
680 | border-color: #aaa transparent transparent transparent; |
|
680 | border-color: #aaa transparent transparent transparent; | |
681 | margin: 6px 0px; |
|
681 | margin: 6px 0px; | |
682 |
|
682 | |||
683 | } |
|
683 | } | |
684 | .filediff-menu { |
|
684 | .filediff-menu { | |
685 | display: block; |
|
685 | display: block; | |
686 | } |
|
686 | } | |
687 | margin: 10px 0; |
|
687 | margin: 10px 0; | |
688 | &:nth-child(2) { |
|
688 | &:nth-child(2) { | |
689 | margin: 0; |
|
689 | margin: 0; | |
690 | } |
|
690 | } | |
691 | } |
|
691 | } | |
692 | } |
|
692 | } | |
|
693 | ||||
|
694 | .filediffs .anchor { | |||
|
695 | display: block; | |||
|
696 | height: 40px; | |||
|
697 | margin-top: -40px; | |||
|
698 | visibility: hidden; | |||
|
699 | } | |||
|
700 | ||||
|
701 | .filediffs .anchor:nth-of-type(1) { | |||
|
702 | display: block; | |||
|
703 | height: 80px; | |||
|
704 | margin-top: -80px; | |||
|
705 | visibility: hidden; | |||
|
706 | } | |||
|
707 | ||||
693 | .cs_files { |
|
708 | .cs_files { | |
694 | clear: both; |
|
709 | clear: both; | |
695 | } |
|
710 | } | |
696 |
|
711 | |||
|
712 | #diff-file-sticky{ | |||
|
713 | will-change: min-height; | |||
|
714 | } | |||
|
715 | ||||
|
716 | .sidebar__inner{ | |||
|
717 | transform: translate(0, 0); /* For browsers don't support translate3d. */ | |||
|
718 | transform: translate3d(0, 0, 0); | |||
|
719 | will-change: position, transform; | |||
|
720 | height: 60px; | |||
|
721 | } | |||
|
722 | ||||
|
723 | .fpath-placeholder { | |||
|
724 | clear: both; | |||
|
725 | visibility: hidden | |||
|
726 | } | |||
|
727 | ||||
|
728 | .is-affixed { | |||
|
729 | .sidebar_inner_shadow { | |||
|
730 | position: fixed; | |||
|
731 | top: 43px; | |||
|
732 | right: 0; | |||
|
733 | left: 0; | |||
|
734 | z-index: 28; | |||
|
735 | display: block; | |||
|
736 | height: 5px; | |||
|
737 | content: ""; | |||
|
738 | background: linear-gradient(rgba(0, 0, 0, 0.075), rgba(0, 0, 0, 0.001)) repeat-x 0 0; | |||
|
739 | border-top: 1px solid rgba(0, 0, 0, 0.15); | |||
|
740 | } | |||
|
741 | .fpath-placeholder { | |||
|
742 | visibility: visible !important; | |||
|
743 | } | |||
|
744 | } | |||
|
745 | ||||
697 | .diffset-menu { |
|
746 | .diffset-menu { | |
698 | margin-bottom: 20px; |
|
747 | margin-bottom: 20px; | |
699 | } |
|
748 | } | |
700 | .diffset { |
|
749 | .diffset { | |
701 | margin: 20px auto; |
|
750 | margin: 20px auto; | |
702 | .diffset-heading { |
|
751 | .diffset-heading { | |
703 | border: 1px solid @grey5; |
|
752 | border: 1px solid @grey5; | |
704 | margin-bottom: -1px; |
|
753 | margin-bottom: -1px; | |
705 | // margin-top: 20px; |
|
754 | // margin-top: 20px; | |
706 | h2 { |
|
755 | h2 { | |
707 | margin: 0; |
|
756 | margin: 0; | |
708 | line-height: 38px; |
|
757 | line-height: 38px; | |
709 | padding-left: 10px; |
|
758 | padding-left: 10px; | |
710 | } |
|
759 | } | |
711 | .btn { |
|
760 | .btn { | |
712 | margin: 0; |
|
761 | margin: 0; | |
713 | } |
|
762 | } | |
714 | background: @grey6; |
|
763 | background: @grey6; | |
715 | display: block; |
|
764 | display: block; | |
716 | padding: 5px; |
|
765 | padding: 5px; | |
717 | } |
|
766 | } | |
718 | .diffset-heading-warning { |
|
767 | .diffset-heading-warning { | |
719 | background: @alert3-inner; |
|
768 | background: @alert3-inner; | |
720 | border: 1px solid @alert3; |
|
769 | border: 1px solid @alert3; | |
721 | } |
|
770 | } | |
722 | &.diffset-comments-disabled { |
|
771 | &.diffset-comments-disabled { | |
723 | .cb-comment-box-opener, .comment-inline-form, .cb-comment-add-button { |
|
772 | .cb-comment-box-opener, .comment-inline-form, .cb-comment-add-button { | |
724 | display: none !important; |
|
773 | display: none !important; | |
725 | } |
|
774 | } | |
726 | } |
|
775 | } | |
727 | } |
|
776 | } | |
728 |
|
777 | |||
729 | .filelist { |
|
778 | .filelist { | |
730 | .pill { |
|
779 | .pill { | |
731 | display: block; |
|
780 | display: block; | |
732 | float: left; |
|
781 | float: left; | |
733 | padding: @pill-padding-small; |
|
782 | padding: @pill-padding-small; | |
734 | } |
|
783 | } | |
735 | } |
|
784 | } | |
736 |
|
785 | |||
737 | .pill { |
|
786 | .pill { | |
738 | display: block; |
|
787 | display: block; | |
739 | float: left; |
|
788 | float: left; | |
740 | padding: @pill-padding; |
|
789 | padding: @pill-padding; | |
741 | } |
|
790 | } | |
742 |
|
791 | |||
743 | .pill-group { |
|
792 | .pill-group { | |
744 | .pill { |
|
793 | .pill { | |
745 | opacity: .8; |
|
794 | opacity: .8; | |
746 | margin-right: 3px; |
|
795 | margin-right: 3px; | |
747 |
|
796 | |||
748 | &:first-child { |
|
797 | &:first-child { | |
749 | border-radius: @border-radius 0 0 @border-radius; |
|
798 | border-radius: @border-radius 0 0 @border-radius; | |
750 | } |
|
799 | } | |
751 | &:last-child { |
|
800 | &:last-child { | |
752 | border-radius: 0 @border-radius @border-radius 0; |
|
801 | border-radius: 0 @border-radius @border-radius 0; | |
753 | } |
|
802 | } | |
754 | &:only-child { |
|
803 | &:only-child { | |
755 | border-radius: @border-radius; |
|
804 | border-radius: @border-radius; | |
756 | margin-right: 0; |
|
805 | margin-right: 0; | |
757 | } |
|
806 | } | |
758 | } |
|
807 | } | |
759 | } |
|
808 | } | |
760 |
|
809 | |||
761 | /* Main comments*/ |
|
810 | /* Main comments*/ | |
762 | #comments { |
|
811 | #comments { | |
763 | .comment-selected { |
|
812 | .comment-selected { | |
764 | border-left: 6px solid @comment-highlight-color; |
|
813 | border-left: 6px solid @comment-highlight-color; | |
765 | padding-left: 3px; |
|
814 | padding-left: 3px; | |
766 | margin-left: -9px; |
|
815 | margin-left: -9px; | |
767 | } |
|
816 | } | |
768 | } |
|
817 | } | |
769 |
|
818 | |||
770 | .filediff { |
|
819 | .filediff { | |
771 | border: 1px solid @grey5; |
|
820 | border: 1px solid @grey5; | |
772 |
|
821 | |||
773 | /* START OVERRIDES */ |
|
822 | /* START OVERRIDES */ | |
774 | .code-highlight { |
|
823 | .code-highlight { | |
775 | border: none; // TODO: remove this border from the global |
|
824 | border: none; // TODO: remove this border from the global | |
776 |
|
|
825 | // .code-highlight, it doesn't belong there | |
777 | } |
|
826 | } | |
778 | label { |
|
827 | label { | |
779 | margin: 0; // TODO: remove this margin definition from global label |
|
828 | margin: 0; // TODO: remove this margin definition from global label | |
780 | // it doesn't belong there - if margin on labels |
|
829 | // it doesn't belong there - if margin on labels | |
781 | // are needed for a form they should be defined |
|
830 | // are needed for a form they should be defined | |
782 | // in the form's class |
|
831 | // in the form's class | |
783 | } |
|
832 | } | |
784 | /* END OVERRIDES */ |
|
833 | /* END OVERRIDES */ | |
785 |
|
834 | |||
786 | * { |
|
835 | * { | |
787 | box-sizing: border-box; |
|
836 | box-sizing: border-box; | |
788 | } |
|
837 | } | |
789 | .filediff-anchor { |
|
838 | .filediff-anchor { | |
790 | visibility: hidden; |
|
839 | visibility: hidden; | |
791 | } |
|
840 | } | |
792 | &:hover { |
|
841 | &:hover { | |
793 | .filediff-anchor { |
|
842 | .filediff-anchor { | |
794 | visibility: visible; |
|
843 | visibility: visible; | |
795 | } |
|
844 | } | |
796 | } |
|
845 | } | |
797 |
|
846 | |||
798 | .filediff-collapse-indicator { |
|
847 | .filediff-collapse-indicator { | |
799 | border-style: solid; |
|
848 | border-style: solid; | |
800 | float: left; |
|
849 | float: left; | |
801 | margin: 4px 0px 0 0; |
|
850 | margin: 4px 0px 0 0; | |
802 | cursor: pointer; |
|
851 | cursor: pointer; | |
803 | } |
|
852 | } | |
804 |
|
853 | |||
805 | .filediff-heading { |
|
854 | .filediff-heading { | |
806 | background: @grey7; |
|
855 | background: @grey7; | |
807 | cursor: pointer; |
|
856 | cursor: pointer; | |
808 | display: block; |
|
857 | display: block; | |
809 | padding: 5px 10px; |
|
858 | padding: 5px 10px; | |
810 | } |
|
859 | } | |
811 | .filediff-heading:after { |
|
860 | .filediff-heading:after { | |
812 | content: ""; |
|
861 | content: ""; | |
813 | display: table; |
|
862 | display: table; | |
814 | clear: both; |
|
863 | clear: both; | |
815 | } |
|
864 | } | |
816 | .filediff-heading:hover { |
|
865 | .filediff-heading:hover { | |
817 | background: #e1e9f4 !important; |
|
866 | background: #e1e9f4 !important; | |
818 | } |
|
867 | } | |
819 |
|
868 | |||
820 | .filediff-menu { |
|
869 | .filediff-menu { | |
821 | float: right; |
|
870 | float: right; | |
822 | text-align: right; |
|
871 | text-align: right; | |
823 | padding: 5px 5px 5px 0px; |
|
872 | padding: 5px 5px 5px 0px; | |
824 |
|
873 | |||
825 | &> a, |
|
874 | &> a, | |
826 | &> span { |
|
875 | &> span { | |
827 | padding: 1px; |
|
876 | padding: 1px; | |
828 | } |
|
877 | } | |
829 | } |
|
878 | } | |
830 |
|
879 | |||
831 | .filediff-collapse-button, .filediff-expand-button { |
|
880 | .filediff-collapse-button, .filediff-expand-button { | |
832 | cursor: pointer; |
|
881 | cursor: pointer; | |
833 | } |
|
882 | } | |
834 | .filediff-collapse-button { |
|
883 | .filediff-collapse-button { | |
835 | display: inline; |
|
884 | display: inline; | |
836 | } |
|
885 | } | |
837 | .filediff-expand-button { |
|
886 | .filediff-expand-button { | |
838 | display: none; |
|
887 | display: none; | |
839 | } |
|
888 | } | |
840 | .filediff-collapsed .filediff-collapse-button { |
|
889 | .filediff-collapsed .filediff-collapse-button { | |
841 | display: none; |
|
890 | display: none; | |
842 | } |
|
891 | } | |
843 | .filediff-collapsed .filediff-expand-button { |
|
892 | .filediff-collapsed .filediff-expand-button { | |
844 | display: inline; |
|
893 | display: inline; | |
845 | } |
|
894 | } | |
846 |
|
895 | |||
847 | /**** COMMENTS ****/ |
|
896 | /**** COMMENTS ****/ | |
848 |
|
897 | |||
849 | .filediff-menu { |
|
898 | .filediff-menu { | |
850 | .show-comment-button { |
|
899 | .show-comment-button { | |
851 | display: none; |
|
900 | display: none; | |
852 | } |
|
901 | } | |
853 | } |
|
902 | } | |
854 | &.hide-comments { |
|
903 | &.hide-comments { | |
855 | .inline-comments { |
|
904 | .inline-comments { | |
856 | display: none; |
|
905 | display: none; | |
857 | } |
|
906 | } | |
858 | .filediff-menu { |
|
907 | .filediff-menu { | |
859 | .show-comment-button { |
|
908 | .show-comment-button { | |
860 | display: inline; |
|
909 | display: inline; | |
861 | } |
|
910 | } | |
862 | .hide-comment-button { |
|
911 | .hide-comment-button { | |
863 | display: none; |
|
912 | display: none; | |
864 | } |
|
913 | } | |
865 | } |
|
914 | } | |
866 | } |
|
915 | } | |
867 |
|
916 | |||
868 | .hide-line-comments { |
|
917 | .hide-line-comments { | |
869 | .inline-comments { |
|
918 | .inline-comments { | |
870 | display: none; |
|
919 | display: none; | |
871 | } |
|
920 | } | |
872 | } |
|
921 | } | |
873 |
|
922 | |||
874 | /**** END COMMENTS ****/ |
|
923 | /**** END COMMENTS ****/ | |
875 |
|
924 | |||
876 | } |
|
925 | } | |
877 |
|
926 | |||
878 |
|
927 | |||
879 |
|
928 | |||
880 | .filediff, .filelist { |
|
929 | .filediff, .filelist { | |
881 | .pill { |
|
930 | .pill { | |
882 | &[op="name"] { |
|
931 | &[op="name"] { | |
883 | background: none; |
|
932 | background: none; | |
884 | opacity: 1; |
|
933 | opacity: 1; | |
885 | color: white; |
|
934 | color: white; | |
886 | } |
|
935 | } | |
887 | &[op="limited"] { |
|
936 | &[op="limited"] { | |
888 | background: @grey2; |
|
937 | background: @grey2; | |
889 | color: white; |
|
938 | color: white; | |
890 | } |
|
939 | } | |
891 | &[op="binary"] { |
|
940 | &[op="binary"] { | |
892 | background: @color7; |
|
941 | background: @color7; | |
893 | color: white; |
|
942 | color: white; | |
894 | } |
|
943 | } | |
895 | &[op="modified"] { |
|
944 | &[op="modified"] { | |
896 | background: @alert1; |
|
945 | background: @alert1; | |
897 | color: white; |
|
946 | color: white; | |
898 | } |
|
947 | } | |
899 | &[op="renamed"] { |
|
948 | &[op="renamed"] { | |
900 | background: @color4; |
|
949 | background: @color4; | |
901 | color: white; |
|
950 | color: white; | |
902 | } |
|
951 | } | |
903 | &[op="copied"] { |
|
952 | &[op="copied"] { | |
904 | background: @color4; |
|
953 | background: @color4; | |
905 | color: white; |
|
954 | color: white; | |
906 | } |
|
955 | } | |
907 | &[op="mode"] { |
|
956 | &[op="mode"] { | |
908 | background: @grey3; |
|
957 | background: @grey3; | |
909 | color: white; |
|
958 | color: white; | |
910 | } |
|
959 | } | |
911 | &[op="symlink"] { |
|
960 | &[op="symlink"] { | |
912 | background: @color8; |
|
961 | background: @color8; | |
913 | color: white; |
|
962 | color: white; | |
914 | } |
|
963 | } | |
915 |
|
964 | |||
916 | &[op="added"] { /* added lines */ |
|
965 | &[op="added"] { /* added lines */ | |
917 | background: @alert1; |
|
966 | background: @alert1; | |
918 | color: white; |
|
967 | color: white; | |
919 | } |
|
968 | } | |
920 | &[op="deleted"] { /* deleted lines */ |
|
969 | &[op="deleted"] { /* deleted lines */ | |
921 | background: @alert2; |
|
970 | background: @alert2; | |
922 | color: white; |
|
971 | color: white; | |
923 | } |
|
972 | } | |
924 |
|
973 | |||
925 | &[op="created"] { /* created file */ |
|
974 | &[op="created"] { /* created file */ | |
926 | background: @alert1; |
|
975 | background: @alert1; | |
927 | color: white; |
|
976 | color: white; | |
928 | } |
|
977 | } | |
929 | &[op="removed"] { /* deleted file */ |
|
978 | &[op="removed"] { /* deleted file */ | |
930 | background: @color5; |
|
979 | background: @color5; | |
931 | color: white; |
|
980 | color: white; | |
932 | } |
|
981 | } | |
933 | } |
|
982 | } | |
934 | } |
|
983 | } | |
935 |
|
984 | |||
936 |
|
985 | |||
937 | .filediff-outdated { |
|
986 | .filediff-outdated { | |
938 | padding: 8px 0; |
|
987 | padding: 8px 0; | |
939 |
|
988 | |||
940 | .filediff-heading { |
|
989 | .filediff-heading { | |
941 | opacity: .5; |
|
990 | opacity: .5; | |
942 | } |
|
991 | } | |
943 | } |
|
992 | } | |
944 |
|
993 | |||
945 | table.cb { |
|
994 | table.cb { | |
946 | width: 100%; |
|
995 | width: 100%; | |
947 | border-collapse: collapse; |
|
996 | border-collapse: collapse; | |
948 |
|
997 | |||
949 | .cb-text { |
|
998 | .cb-text { | |
950 | padding: @cb-text-padding; |
|
999 | padding: @cb-text-padding; | |
951 | } |
|
1000 | } | |
952 | .cb-hunk { |
|
1001 | .cb-hunk { | |
953 | padding: @cb-text-padding; |
|
1002 | padding: @cb-text-padding; | |
954 | } |
|
1003 | } | |
955 | .cb-expand { |
|
1004 | .cb-expand { | |
956 | display: none; |
|
1005 | display: none; | |
957 | } |
|
1006 | } | |
958 | .cb-collapse { |
|
1007 | .cb-collapse { | |
959 | display: inline; |
|
1008 | display: inline; | |
960 | } |
|
1009 | } | |
961 | &.cb-collapsed { |
|
1010 | &.cb-collapsed { | |
962 | .cb-line { |
|
1011 | .cb-line { | |
963 | display: none; |
|
1012 | display: none; | |
964 | } |
|
1013 | } | |
965 | .cb-expand { |
|
1014 | .cb-expand { | |
966 | display: inline; |
|
1015 | display: inline; | |
967 | } |
|
1016 | } | |
968 | .cb-collapse { |
|
1017 | .cb-collapse { | |
969 | display: none; |
|
1018 | display: none; | |
970 | } |
|
1019 | } | |
971 | } |
|
1020 | } | |
972 |
|
1021 | |||
973 | /* intentionally general selector since .cb-line-selected must override it |
|
1022 | /* intentionally general selector since .cb-line-selected must override it | |
974 | and they both use !important since the td itself may have a random color |
|
1023 | and they both use !important since the td itself may have a random color | |
975 | generated by annotation blocks. TLDR: if you change it, make sure |
|
1024 | generated by annotation blocks. TLDR: if you change it, make sure | |
976 | annotated block selection and line selection in file view still work */ |
|
1025 | annotated block selection and line selection in file view still work */ | |
977 | .cb-line-fresh .cb-content { |
|
1026 | .cb-line-fresh .cb-content { | |
978 | background: white !important; |
|
1027 | background: white !important; | |
979 | } |
|
1028 | } | |
980 | .cb-warning { |
|
1029 | .cb-warning { | |
981 | background: #fff4dd; |
|
1030 | background: #fff4dd; | |
982 | } |
|
1031 | } | |
983 |
|
1032 | |||
984 | &.cb-diff-sideside { |
|
1033 | &.cb-diff-sideside { | |
985 | td { |
|
1034 | td { | |
986 | &.cb-content { |
|
1035 | &.cb-content { | |
987 | width: 50%; |
|
1036 | width: 50%; | |
988 | } |
|
1037 | } | |
989 | } |
|
1038 | } | |
990 | } |
|
1039 | } | |
991 |
|
1040 | |||
992 | tr { |
|
1041 | tr { | |
993 | &.cb-annotate { |
|
1042 | &.cb-annotate { | |
994 | border-top: 1px solid #eee; |
|
1043 | border-top: 1px solid #eee; | |
995 | } |
|
1044 | } | |
996 |
|
1045 | |||
997 | &.cb-comment-info { |
|
1046 | &.cb-comment-info { | |
998 | border-top: 1px solid #eee; |
|
1047 | border-top: 1px solid #eee; | |
999 | color: rgba(0, 0, 0, 0.3); |
|
1048 | color: rgba(0, 0, 0, 0.3); | |
1000 | background: #edf2f9; |
|
1049 | background: #edf2f9; | |
1001 |
|
1050 | |||
1002 | td { |
|
1051 | td { | |
1003 |
|
1052 | |||
1004 | } |
|
1053 | } | |
1005 | } |
|
1054 | } | |
1006 |
|
1055 | |||
1007 | &.cb-hunk { |
|
1056 | &.cb-hunk { | |
1008 | font-family: @font-family-monospace; |
|
1057 | font-family: @font-family-monospace; | |
1009 | color: rgba(0, 0, 0, 0.3); |
|
1058 | color: rgba(0, 0, 0, 0.3); | |
1010 |
|
1059 | |||
1011 | td { |
|
1060 | td { | |
1012 | &:first-child { |
|
1061 | &:first-child { | |
1013 | background: #edf2f9; |
|
1062 | background: #edf2f9; | |
1014 | } |
|
1063 | } | |
1015 | &:last-child { |
|
1064 | &:last-child { | |
1016 | background: #f4f7fb; |
|
1065 | background: #f4f7fb; | |
1017 | } |
|
1066 | } | |
1018 | } |
|
1067 | } | |
1019 | } |
|
1068 | } | |
1020 | } |
|
1069 | } | |
1021 |
|
1070 | |||
1022 |
|
1071 | |||
1023 | td { |
|
1072 | td { | |
1024 | vertical-align: top; |
|
1073 | vertical-align: top; | |
1025 | padding: 0; |
|
1074 | padding: 0; | |
1026 |
|
1075 | |||
1027 | &.cb-content { |
|
1076 | &.cb-content { | |
1028 | font-size: 12.35px; |
|
1077 | font-size: 12.35px; | |
1029 |
|
1078 | |||
1030 | &.cb-line-selected .cb-code { |
|
1079 | &.cb-line-selected .cb-code { | |
1031 | background: @comment-highlight-color !important; |
|
1080 | background: @comment-highlight-color !important; | |
1032 | } |
|
1081 | } | |
1033 |
|
1082 | |||
1034 | span.cb-code { |
|
1083 | span.cb-code { | |
1035 | line-height: @cb-line-height; |
|
1084 | line-height: @cb-line-height; | |
1036 | padding-left: @cb-line-code-padding; |
|
1085 | padding-left: @cb-line-code-padding; | |
1037 | padding-right: @cb-line-code-padding; |
|
1086 | padding-right: @cb-line-code-padding; | |
1038 | display: block; |
|
1087 | display: block; | |
1039 | white-space: pre-wrap; |
|
1088 | white-space: pre-wrap; | |
1040 | font-family: @font-family-monospace; |
|
1089 | font-family: @font-family-monospace; | |
1041 | word-break: break-all; |
|
1090 | word-break: break-all; | |
1042 | .nonl { |
|
1091 | .nonl { | |
1043 | color: @color5; |
|
1092 | color: @color5; | |
1044 | } |
|
1093 | } | |
1045 | } |
|
1094 | } | |
1046 |
|
1095 | |||
1047 | &> button.cb-comment-box-opener { |
|
1096 | &> button.cb-comment-box-opener { | |
1048 |
|
1097 | |||
1049 | padding: 2px 2px 1px 3px; |
|
1098 | padding: 2px 2px 1px 3px; | |
1050 | margin-left: -6px; |
|
1099 | margin-left: -6px; | |
1051 | margin-top: -1px; |
|
1100 | margin-top: -1px; | |
1052 |
|
1101 | |||
1053 | border-radius: @border-radius; |
|
1102 | border-radius: @border-radius; | |
1054 | position: absolute; |
|
1103 | position: absolute; | |
1055 | display: none; |
|
1104 | display: none; | |
1056 | } |
|
1105 | } | |
1057 | .cb-comment { |
|
1106 | .cb-comment { | |
1058 | margin-top: 10px; |
|
1107 | margin-top: 10px; | |
1059 | white-space: normal; |
|
1108 | white-space: normal; | |
1060 | } |
|
1109 | } | |
1061 | } |
|
1110 | } | |
1062 | &:hover { |
|
1111 | &:hover { | |
1063 | button.cb-comment-box-opener { |
|
1112 | button.cb-comment-box-opener { | |
1064 | display: block; |
|
1113 | display: block; | |
1065 | } |
|
1114 | } | |
1066 | &+ td button.cb-comment-box-opener { |
|
1115 | &+ td button.cb-comment-box-opener { | |
1067 | display: block |
|
1116 | display: block | |
1068 | } |
|
1117 | } | |
1069 | } |
|
1118 | } | |
1070 |
|
1119 | |||
1071 | &.cb-data { |
|
1120 | &.cb-data { | |
1072 | text-align: right; |
|
1121 | text-align: right; | |
1073 | width: 30px; |
|
1122 | width: 30px; | |
1074 | font-family: @font-family-monospace; |
|
1123 | font-family: @font-family-monospace; | |
1075 |
|
1124 | |||
1076 | .icon-comment { |
|
1125 | .icon-comment { | |
1077 | cursor: pointer; |
|
1126 | cursor: pointer; | |
1078 | } |
|
1127 | } | |
1079 | &.cb-line-selected > div { |
|
1128 | &.cb-line-selected > div { | |
1080 | display: block; |
|
1129 | display: block; | |
1081 | background: @comment-highlight-color !important; |
|
1130 | background: @comment-highlight-color !important; | |
1082 | line-height: @cb-line-height; |
|
1131 | line-height: @cb-line-height; | |
1083 | color: rgba(0, 0, 0, 0.3); |
|
1132 | color: rgba(0, 0, 0, 0.3); | |
1084 | } |
|
1133 | } | |
1085 | } |
|
1134 | } | |
1086 |
|
1135 | |||
1087 | &.cb-lineno { |
|
1136 | &.cb-lineno { | |
1088 | padding: 0; |
|
1137 | padding: 0; | |
1089 | width: 50px; |
|
1138 | width: 50px; | |
1090 | color: rgba(0, 0, 0, 0.3); |
|
1139 | color: rgba(0, 0, 0, 0.3); | |
1091 | text-align: right; |
|
1140 | text-align: right; | |
1092 | border-right: 1px solid #eee; |
|
1141 | border-right: 1px solid #eee; | |
1093 | font-family: @font-family-monospace; |
|
1142 | font-family: @font-family-monospace; | |
1094 | -webkit-user-select: none; |
|
1143 | -webkit-user-select: none; | |
1095 | -moz-user-select: none; |
|
1144 | -moz-user-select: none; | |
1096 | user-select: none; |
|
1145 | user-select: none; | |
1097 |
|
1146 | |||
1098 | a::before { |
|
1147 | a::before { | |
1099 | content: attr(data-line-no); |
|
1148 | content: attr(data-line-no); | |
1100 | } |
|
1149 | } | |
1101 | &.cb-line-selected a { |
|
1150 | &.cb-line-selected a { | |
1102 | background: @comment-highlight-color !important; |
|
1151 | background: @comment-highlight-color !important; | |
1103 | } |
|
1152 | } | |
1104 |
|
1153 | |||
1105 | a { |
|
1154 | a { | |
1106 | display: block; |
|
1155 | display: block; | |
1107 | padding-right: @cb-line-code-padding; |
|
1156 | padding-right: @cb-line-code-padding; | |
1108 | padding-left: @cb-line-code-padding; |
|
1157 | padding-left: @cb-line-code-padding; | |
1109 | line-height: @cb-line-height; |
|
1158 | line-height: @cb-line-height; | |
1110 | color: rgba(0, 0, 0, 0.3); |
|
1159 | color: rgba(0, 0, 0, 0.3); | |
1111 | } |
|
1160 | } | |
1112 | } |
|
1161 | } | |
1113 |
|
1162 | |||
1114 | &.cb-empty { |
|
1163 | &.cb-empty { | |
1115 | background: @grey7; |
|
1164 | background: @grey7; | |
1116 | } |
|
1165 | } | |
1117 |
|
1166 | |||
1118 | ins { |
|
1167 | ins { | |
1119 | color: black; |
|
1168 | color: black; | |
1120 | background: #a6f3a6; |
|
1169 | background: #a6f3a6; | |
1121 | text-decoration: none; |
|
1170 | text-decoration: none; | |
1122 | } |
|
1171 | } | |
1123 | del { |
|
1172 | del { | |
1124 | color: black; |
|
1173 | color: black; | |
1125 | background: #f8cbcb; |
|
1174 | background: #f8cbcb; | |
1126 | text-decoration: none; |
|
1175 | text-decoration: none; | |
1127 | } |
|
1176 | } | |
1128 | &.cb-addition { |
|
1177 | &.cb-addition { | |
1129 | background: #ecffec; |
|
1178 | background: #ecffec; | |
1130 |
|
1179 | |||
1131 | &.blob-lineno { |
|
1180 | &.blob-lineno { | |
1132 | background: #ddffdd; |
|
1181 | background: #ddffdd; | |
1133 | } |
|
1182 | } | |
1134 | } |
|
1183 | } | |
1135 | &.cb-deletion { |
|
1184 | &.cb-deletion { | |
1136 | background: #ffecec; |
|
1185 | background: #ffecec; | |
1137 |
|
1186 | |||
1138 | &.blob-lineno { |
|
1187 | &.blob-lineno { | |
1139 | background: #ffdddd; |
|
1188 | background: #ffdddd; | |
1140 | } |
|
1189 | } | |
1141 | } |
|
1190 | } | |
1142 | &.cb-annotate-message-spacer { |
|
1191 | &.cb-annotate-message-spacer { | |
1143 | width:8px; |
|
1192 | width:8px; | |
1144 | padding: 1px 0px 0px 3px; |
|
1193 | padding: 1px 0px 0px 3px; | |
1145 | } |
|
1194 | } | |
1146 | &.cb-annotate-info { |
|
1195 | &.cb-annotate-info { | |
1147 | width: 320px; |
|
1196 | width: 320px; | |
1148 | min-width: 320px; |
|
1197 | min-width: 320px; | |
1149 | max-width: 320px; |
|
1198 | max-width: 320px; | |
1150 | padding: 5px 2px; |
|
1199 | padding: 5px 2px; | |
1151 | font-size: 13px; |
|
1200 | font-size: 13px; | |
1152 |
|
1201 | |||
1153 | .cb-annotate-message { |
|
1202 | .cb-annotate-message { | |
1154 | padding: 2px 0px 0px 0px; |
|
1203 | padding: 2px 0px 0px 0px; | |
1155 | white-space: pre-line; |
|
1204 | white-space: pre-line; | |
1156 | overflow: hidden; |
|
1205 | overflow: hidden; | |
1157 | } |
|
1206 | } | |
1158 | .rc-user { |
|
1207 | .rc-user { | |
1159 | float: none; |
|
1208 | float: none; | |
1160 | padding: 0 6px 0 17px; |
|
1209 | padding: 0 6px 0 17px; | |
1161 | min-width: unset; |
|
1210 | min-width: unset; | |
1162 | min-height: unset; |
|
1211 | min-height: unset; | |
1163 | } |
|
1212 | } | |
1164 | } |
|
1213 | } | |
1165 |
|
1214 | |||
1166 | &.cb-annotate-revision { |
|
1215 | &.cb-annotate-revision { | |
1167 | cursor: pointer; |
|
1216 | cursor: pointer; | |
1168 | text-align: right; |
|
1217 | text-align: right; | |
1169 | padding: 1px 3px 0px 3px; |
|
1218 | padding: 1px 3px 0px 3px; | |
1170 | } |
|
1219 | } | |
1171 | } |
|
1220 | } | |
1172 | } |
|
1221 | } |
@@ -1,829 +1,836 b'' | |||||
1 | // # Copyright (C) 2010-2018 RhodeCode GmbH |
|
1 | // # Copyright (C) 2010-2018 RhodeCode GmbH | |
2 | // # |
|
2 | // # | |
3 | // # This program is free software: you can redistribute it and/or modify |
|
3 | // # This program is free software: you can redistribute it and/or modify | |
4 | // # it under the terms of the GNU Affero General Public License, version 3 |
|
4 | // # it under the terms of the GNU Affero General Public License, version 3 | |
5 | // # (only), as published by the Free Software Foundation. |
|
5 | // # (only), as published by the Free Software Foundation. | |
6 | // # |
|
6 | // # | |
7 | // # This program is distributed in the hope that it will be useful, |
|
7 | // # This program is distributed in the hope that it will be useful, | |
8 | // # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
8 | // # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
9 | // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
9 | // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
10 | // # GNU General Public License for more details. |
|
10 | // # GNU General Public License for more details. | |
11 | // # |
|
11 | // # | |
12 | // # You should have received a copy of the GNU Affero General Public License |
|
12 | // # You should have received a copy of the GNU Affero General Public License | |
13 | // # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
13 | // # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
14 | // # |
|
14 | // # | |
15 | // # This program is dual-licensed. If you wish to learn more about the |
|
15 | // # This program is dual-licensed. If you wish to learn more about the | |
16 | // # RhodeCode Enterprise Edition, including its added features, Support services, |
|
16 | // # RhodeCode Enterprise Edition, including its added features, Support services, | |
17 | // # and proprietary license terms, please see https://rhodecode.com/licenses/ |
|
17 | // # and proprietary license terms, please see https://rhodecode.com/licenses/ | |
18 |
|
18 | |||
19 | var firefoxAnchorFix = function() { |
|
19 | var firefoxAnchorFix = function() { | |
20 | // hack to make anchor links behave properly on firefox, in our inline |
|
20 | // hack to make anchor links behave properly on firefox, in our inline | |
21 | // comments generation when comments are injected firefox is misbehaving |
|
21 | // comments generation when comments are injected firefox is misbehaving | |
22 | // when jumping to anchor links |
|
22 | // when jumping to anchor links | |
23 | if (location.href.indexOf('#') > -1) { |
|
23 | if (location.href.indexOf('#') > -1) { | |
24 | location.href += ''; |
|
24 | location.href += ''; | |
25 | } |
|
25 | } | |
26 | }; |
|
26 | }; | |
27 |
|
27 | |||
28 | var linkifyComments = function(comments) { |
|
28 | var linkifyComments = function(comments) { | |
29 | var firstCommentId = null; |
|
29 | var firstCommentId = null; | |
30 | if (comments) { |
|
30 | if (comments) { | |
31 | firstCommentId = $(comments[0]).data('comment-id'); |
|
31 | firstCommentId = $(comments[0]).data('comment-id'); | |
32 | } |
|
32 | } | |
33 |
|
33 | |||
34 | if (firstCommentId){ |
|
34 | if (firstCommentId){ | |
35 | $('#inline-comments-counter').attr('href', '#comment-' + firstCommentId); |
|
35 | $('#inline-comments-counter').attr('href', '#comment-' + firstCommentId); | |
36 | } |
|
36 | } | |
37 | }; |
|
37 | }; | |
38 |
|
38 | |||
39 | var bindToggleButtons = function() { |
|
39 | var bindToggleButtons = function() { | |
40 | $('.comment-toggle').on('click', function() { |
|
40 | $('.comment-toggle').on('click', function() { | |
41 | $(this).parent().nextUntil('tr.line').toggle('inline-comments'); |
|
41 | $(this).parent().nextUntil('tr.line').toggle('inline-comments'); | |
42 | }); |
|
42 | }); | |
43 | }; |
|
43 | }; | |
44 |
|
44 | |||
45 |
|
45 | |||
46 |
|
46 | |||
47 | var _submitAjaxPOST = function(url, postData, successHandler, failHandler) { |
|
47 | var _submitAjaxPOST = function(url, postData, successHandler, failHandler) { | |
48 | failHandler = failHandler || function() {}; |
|
48 | failHandler = failHandler || function() {}; | |
49 | postData = toQueryString(postData); |
|
49 | postData = toQueryString(postData); | |
50 | var request = $.ajax({ |
|
50 | var request = $.ajax({ | |
51 | url: url, |
|
51 | url: url, | |
52 | type: 'POST', |
|
52 | type: 'POST', | |
53 | data: postData, |
|
53 | data: postData, | |
54 | headers: {'X-PARTIAL-XHR': true} |
|
54 | headers: {'X-PARTIAL-XHR': true} | |
55 | }) |
|
55 | }) | |
56 | .done(function (data) { |
|
56 | .done(function (data) { | |
57 | successHandler(data); |
|
57 | successHandler(data); | |
58 | }) |
|
58 | }) | |
59 | .fail(function (data, textStatus, errorThrown) { |
|
59 | .fail(function (data, textStatus, errorThrown) { | |
60 | failHandler(data, textStatus, errorThrown) |
|
60 | failHandler(data, textStatus, errorThrown) | |
61 | }); |
|
61 | }); | |
62 | return request; |
|
62 | return request; | |
63 | }; |
|
63 | }; | |
64 |
|
64 | |||
65 |
|
65 | |||
66 |
|
66 | |||
67 |
|
67 | |||
68 | /* Comment form for main and inline comments */ |
|
68 | /* Comment form for main and inline comments */ | |
69 | (function(mod) { |
|
69 | (function(mod) { | |
70 |
|
70 | |||
71 | if (typeof exports == "object" && typeof module == "object") { |
|
71 | if (typeof exports == "object" && typeof module == "object") { | |
72 | // CommonJS |
|
72 | // CommonJS | |
73 | module.exports = mod(); |
|
73 | module.exports = mod(); | |
74 | } |
|
74 | } | |
75 | else { |
|
75 | else { | |
76 | // Plain browser env |
|
76 | // Plain browser env | |
77 | (this || window).CommentForm = mod(); |
|
77 | (this || window).CommentForm = mod(); | |
78 | } |
|
78 | } | |
79 |
|
79 | |||
80 | })(function() { |
|
80 | })(function() { | |
81 | "use strict"; |
|
81 | "use strict"; | |
82 |
|
82 | |||
83 | function CommentForm(formElement, commitId, pullRequestId, lineNo, initAutocompleteActions, resolvesCommentId) { |
|
83 | function CommentForm(formElement, commitId, pullRequestId, lineNo, initAutocompleteActions, resolvesCommentId) { | |
84 | if (!(this instanceof CommentForm)) { |
|
84 | if (!(this instanceof CommentForm)) { | |
85 | return new CommentForm(formElement, commitId, pullRequestId, lineNo, initAutocompleteActions, resolvesCommentId); |
|
85 | return new CommentForm(formElement, commitId, pullRequestId, lineNo, initAutocompleteActions, resolvesCommentId); | |
86 | } |
|
86 | } | |
87 |
|
87 | |||
88 | // bind the element instance to our Form |
|
88 | // bind the element instance to our Form | |
89 | $(formElement).get(0).CommentForm = this; |
|
89 | $(formElement).get(0).CommentForm = this; | |
90 |
|
90 | |||
91 | this.withLineNo = function(selector) { |
|
91 | this.withLineNo = function(selector) { | |
92 | var lineNo = this.lineNo; |
|
92 | var lineNo = this.lineNo; | |
93 | if (lineNo === undefined) { |
|
93 | if (lineNo === undefined) { | |
94 | return selector |
|
94 | return selector | |
95 | } else { |
|
95 | } else { | |
96 | return selector + '_' + lineNo; |
|
96 | return selector + '_' + lineNo; | |
97 | } |
|
97 | } | |
98 | }; |
|
98 | }; | |
99 |
|
99 | |||
100 | this.commitId = commitId; |
|
100 | this.commitId = commitId; | |
101 | this.pullRequestId = pullRequestId; |
|
101 | this.pullRequestId = pullRequestId; | |
102 | this.lineNo = lineNo; |
|
102 | this.lineNo = lineNo; | |
103 | this.initAutocompleteActions = initAutocompleteActions; |
|
103 | this.initAutocompleteActions = initAutocompleteActions; | |
104 |
|
104 | |||
105 | this.previewButton = this.withLineNo('#preview-btn'); |
|
105 | this.previewButton = this.withLineNo('#preview-btn'); | |
106 | this.previewContainer = this.withLineNo('#preview-container'); |
|
106 | this.previewContainer = this.withLineNo('#preview-container'); | |
107 |
|
107 | |||
108 | this.previewBoxSelector = this.withLineNo('#preview-box'); |
|
108 | this.previewBoxSelector = this.withLineNo('#preview-box'); | |
109 |
|
109 | |||
110 | this.editButton = this.withLineNo('#edit-btn'); |
|
110 | this.editButton = this.withLineNo('#edit-btn'); | |
111 | this.editContainer = this.withLineNo('#edit-container'); |
|
111 | this.editContainer = this.withLineNo('#edit-container'); | |
112 | this.cancelButton = this.withLineNo('#cancel-btn'); |
|
112 | this.cancelButton = this.withLineNo('#cancel-btn'); | |
113 | this.commentType = this.withLineNo('#comment_type'); |
|
113 | this.commentType = this.withLineNo('#comment_type'); | |
114 |
|
114 | |||
115 | this.resolvesId = null; |
|
115 | this.resolvesId = null; | |
116 | this.resolvesActionId = null; |
|
116 | this.resolvesActionId = null; | |
117 |
|
117 | |||
118 | this.closesPr = '#close_pull_request'; |
|
118 | this.closesPr = '#close_pull_request'; | |
119 |
|
119 | |||
120 | this.cmBox = this.withLineNo('#text'); |
|
120 | this.cmBox = this.withLineNo('#text'); | |
121 | this.cm = initCommentBoxCodeMirror(this, this.cmBox, this.initAutocompleteActions); |
|
121 | this.cm = initCommentBoxCodeMirror(this, this.cmBox, this.initAutocompleteActions); | |
122 |
|
122 | |||
123 | this.statusChange = this.withLineNo('#change_status'); |
|
123 | this.statusChange = this.withLineNo('#change_status'); | |
124 |
|
124 | |||
125 | this.submitForm = formElement; |
|
125 | this.submitForm = formElement; | |
126 | this.submitButton = $(this.submitForm).find('input[type="submit"]'); |
|
126 | this.submitButton = $(this.submitForm).find('input[type="submit"]'); | |
127 | this.submitButtonText = this.submitButton.val(); |
|
127 | this.submitButtonText = this.submitButton.val(); | |
128 |
|
128 | |||
129 | this.previewUrl = pyroutes.url('repo_commit_comment_preview', |
|
129 | this.previewUrl = pyroutes.url('repo_commit_comment_preview', | |
130 | {'repo_name': templateContext.repo_name, |
|
130 | {'repo_name': templateContext.repo_name, | |
131 | 'commit_id': templateContext.commit_data.commit_id}); |
|
131 | 'commit_id': templateContext.commit_data.commit_id}); | |
132 |
|
132 | |||
133 | if (resolvesCommentId){ |
|
133 | if (resolvesCommentId){ | |
134 | this.resolvesId = '#resolve_comment_{0}'.format(resolvesCommentId); |
|
134 | this.resolvesId = '#resolve_comment_{0}'.format(resolvesCommentId); | |
135 | this.resolvesActionId = '#resolve_comment_action_{0}'.format(resolvesCommentId); |
|
135 | this.resolvesActionId = '#resolve_comment_action_{0}'.format(resolvesCommentId); | |
136 | $(this.commentType).prop('disabled', true); |
|
136 | $(this.commentType).prop('disabled', true); | |
137 | $(this.commentType).addClass('disabled'); |
|
137 | $(this.commentType).addClass('disabled'); | |
138 |
|
138 | |||
139 | // disable select |
|
139 | // disable select | |
140 | setTimeout(function() { |
|
140 | setTimeout(function() { | |
141 | $(self.statusChange).select2('readonly', true); |
|
141 | $(self.statusChange).select2('readonly', true); | |
142 | }, 10); |
|
142 | }, 10); | |
143 |
|
143 | |||
144 | var resolvedInfo = ( |
|
144 | var resolvedInfo = ( | |
145 | '<li class="resolve-action">' + |
|
145 | '<li class="resolve-action">' + | |
146 | '<input type="hidden" id="resolve_comment_{0}" name="resolve_comment_{0}" value="{0}">' + |
|
146 | '<input type="hidden" id="resolve_comment_{0}" name="resolve_comment_{0}" value="{0}">' + | |
147 | '<button id="resolve_comment_action_{0}" class="resolve-text btn btn-sm" onclick="return Rhodecode.comments.submitResolution({0})">{1} #{0}</button>' + |
|
147 | '<button id="resolve_comment_action_{0}" class="resolve-text btn btn-sm" onclick="return Rhodecode.comments.submitResolution({0})">{1} #{0}</button>' + | |
148 | '</li>' |
|
148 | '</li>' | |
149 | ).format(resolvesCommentId, _gettext('resolve comment')); |
|
149 | ).format(resolvesCommentId, _gettext('resolve comment')); | |
150 | $(resolvedInfo).insertAfter($(this.commentType).parent()); |
|
150 | $(resolvedInfo).insertAfter($(this.commentType).parent()); | |
151 | } |
|
151 | } | |
152 |
|
152 | |||
153 | // based on commitId, or pullRequestId decide where do we submit |
|
153 | // based on commitId, or pullRequestId decide where do we submit | |
154 | // out data |
|
154 | // out data | |
155 | if (this.commitId){ |
|
155 | if (this.commitId){ | |
156 | this.submitUrl = pyroutes.url('repo_commit_comment_create', |
|
156 | this.submitUrl = pyroutes.url('repo_commit_comment_create', | |
157 | {'repo_name': templateContext.repo_name, |
|
157 | {'repo_name': templateContext.repo_name, | |
158 | 'commit_id': this.commitId}); |
|
158 | 'commit_id': this.commitId}); | |
159 | this.selfUrl = pyroutes.url('repo_commit', |
|
159 | this.selfUrl = pyroutes.url('repo_commit', | |
160 | {'repo_name': templateContext.repo_name, |
|
160 | {'repo_name': templateContext.repo_name, | |
161 | 'commit_id': this.commitId}); |
|
161 | 'commit_id': this.commitId}); | |
162 |
|
162 | |||
163 | } else if (this.pullRequestId) { |
|
163 | } else if (this.pullRequestId) { | |
164 | this.submitUrl = pyroutes.url('pullrequest_comment_create', |
|
164 | this.submitUrl = pyroutes.url('pullrequest_comment_create', | |
165 | {'repo_name': templateContext.repo_name, |
|
165 | {'repo_name': templateContext.repo_name, | |
166 | 'pull_request_id': this.pullRequestId}); |
|
166 | 'pull_request_id': this.pullRequestId}); | |
167 | this.selfUrl = pyroutes.url('pullrequest_show', |
|
167 | this.selfUrl = pyroutes.url('pullrequest_show', | |
168 | {'repo_name': templateContext.repo_name, |
|
168 | {'repo_name': templateContext.repo_name, | |
169 | 'pull_request_id': this.pullRequestId}); |
|
169 | 'pull_request_id': this.pullRequestId}); | |
170 |
|
170 | |||
171 | } else { |
|
171 | } else { | |
172 | throw new Error( |
|
172 | throw new Error( | |
173 | 'CommentForm requires pullRequestId, or commitId to be specified.') |
|
173 | 'CommentForm requires pullRequestId, or commitId to be specified.') | |
174 | } |
|
174 | } | |
175 |
|
175 | |||
176 | // FUNCTIONS and helpers |
|
176 | // FUNCTIONS and helpers | |
177 | var self = this; |
|
177 | var self = this; | |
178 |
|
178 | |||
179 | this.isInline = function(){ |
|
179 | this.isInline = function(){ | |
180 | return this.lineNo && this.lineNo != 'general'; |
|
180 | return this.lineNo && this.lineNo != 'general'; | |
181 | }; |
|
181 | }; | |
182 |
|
182 | |||
183 | this.getCmInstance = function(){ |
|
183 | this.getCmInstance = function(){ | |
184 | return this.cm |
|
184 | return this.cm | |
185 | }; |
|
185 | }; | |
186 |
|
186 | |||
187 | this.setPlaceholder = function(placeholder) { |
|
187 | this.setPlaceholder = function(placeholder) { | |
188 | var cm = this.getCmInstance(); |
|
188 | var cm = this.getCmInstance(); | |
189 | if (cm){ |
|
189 | if (cm){ | |
190 | cm.setOption('placeholder', placeholder); |
|
190 | cm.setOption('placeholder', placeholder); | |
191 | } |
|
191 | } | |
192 | }; |
|
192 | }; | |
193 |
|
193 | |||
194 | this.getCommentStatus = function() { |
|
194 | this.getCommentStatus = function() { | |
195 | return $(this.submitForm).find(this.statusChange).val(); |
|
195 | return $(this.submitForm).find(this.statusChange).val(); | |
196 | }; |
|
196 | }; | |
197 | this.getCommentType = function() { |
|
197 | this.getCommentType = function() { | |
198 | return $(this.submitForm).find(this.commentType).val(); |
|
198 | return $(this.submitForm).find(this.commentType).val(); | |
199 | }; |
|
199 | }; | |
200 |
|
200 | |||
201 | this.getResolvesId = function() { |
|
201 | this.getResolvesId = function() { | |
202 | return $(this.submitForm).find(this.resolvesId).val() || null; |
|
202 | return $(this.submitForm).find(this.resolvesId).val() || null; | |
203 | }; |
|
203 | }; | |
204 |
|
204 | |||
205 | this.getClosePr = function() { |
|
205 | this.getClosePr = function() { | |
206 | return $(this.submitForm).find(this.closesPr).val() || null; |
|
206 | return $(this.submitForm).find(this.closesPr).val() || null; | |
207 | }; |
|
207 | }; | |
208 |
|
208 | |||
209 | this.markCommentResolved = function(resolvedCommentId){ |
|
209 | this.markCommentResolved = function(resolvedCommentId){ | |
210 | $('#comment-label-{0}'.format(resolvedCommentId)).find('.resolved').show(); |
|
210 | $('#comment-label-{0}'.format(resolvedCommentId)).find('.resolved').show(); | |
211 | $('#comment-label-{0}'.format(resolvedCommentId)).find('.resolve').hide(); |
|
211 | $('#comment-label-{0}'.format(resolvedCommentId)).find('.resolve').hide(); | |
212 | }; |
|
212 | }; | |
213 |
|
213 | |||
214 | this.isAllowedToSubmit = function() { |
|
214 | this.isAllowedToSubmit = function() { | |
215 | return !$(this.submitButton).prop('disabled'); |
|
215 | return !$(this.submitButton).prop('disabled'); | |
216 | }; |
|
216 | }; | |
217 |
|
217 | |||
218 | this.initStatusChangeSelector = function(){ |
|
218 | this.initStatusChangeSelector = function(){ | |
219 | var formatChangeStatus = function(state, escapeMarkup) { |
|
219 | var formatChangeStatus = function(state, escapeMarkup) { | |
220 | var originalOption = state.element; |
|
220 | var originalOption = state.element; | |
221 | return '<div class="flag_status ' + $(originalOption).data('status') + ' pull-left"></div>' + |
|
221 | return '<div class="flag_status ' + $(originalOption).data('status') + ' pull-left"></div>' + | |
222 | '<span>' + escapeMarkup(state.text) + '</span>'; |
|
222 | '<span>' + escapeMarkup(state.text) + '</span>'; | |
223 | }; |
|
223 | }; | |
224 | var formatResult = function(result, container, query, escapeMarkup) { |
|
224 | var formatResult = function(result, container, query, escapeMarkup) { | |
225 | return formatChangeStatus(result, escapeMarkup); |
|
225 | return formatChangeStatus(result, escapeMarkup); | |
226 | }; |
|
226 | }; | |
227 |
|
227 | |||
228 | var formatSelection = function(data, container, escapeMarkup) { |
|
228 | var formatSelection = function(data, container, escapeMarkup) { | |
229 | return formatChangeStatus(data, escapeMarkup); |
|
229 | return formatChangeStatus(data, escapeMarkup); | |
230 | }; |
|
230 | }; | |
231 |
|
231 | |||
232 | $(this.submitForm).find(this.statusChange).select2({ |
|
232 | $(this.submitForm).find(this.statusChange).select2({ | |
233 | placeholder: _gettext('Status Review'), |
|
233 | placeholder: _gettext('Status Review'), | |
234 | formatResult: formatResult, |
|
234 | formatResult: formatResult, | |
235 | formatSelection: formatSelection, |
|
235 | formatSelection: formatSelection, | |
236 | containerCssClass: "drop-menu status_box_menu", |
|
236 | containerCssClass: "drop-menu status_box_menu", | |
237 | dropdownCssClass: "drop-menu-dropdown", |
|
237 | dropdownCssClass: "drop-menu-dropdown", | |
238 | dropdownAutoWidth: true, |
|
238 | dropdownAutoWidth: true, | |
239 | minimumResultsForSearch: -1 |
|
239 | minimumResultsForSearch: -1 | |
240 | }); |
|
240 | }); | |
241 | $(this.submitForm).find(this.statusChange).on('change', function() { |
|
241 | $(this.submitForm).find(this.statusChange).on('change', function() { | |
242 | var status = self.getCommentStatus(); |
|
242 | var status = self.getCommentStatus(); | |
243 |
|
243 | |||
244 | if (status && !self.isInline()) { |
|
244 | if (status && !self.isInline()) { | |
245 | $(self.submitButton).prop('disabled', false); |
|
245 | $(self.submitButton).prop('disabled', false); | |
246 | } |
|
246 | } | |
247 |
|
247 | |||
248 | var placeholderText = _gettext('Comment text will be set automatically based on currently selected status ({0}) ...').format(status); |
|
248 | var placeholderText = _gettext('Comment text will be set automatically based on currently selected status ({0}) ...').format(status); | |
249 | self.setPlaceholder(placeholderText) |
|
249 | self.setPlaceholder(placeholderText) | |
250 | }) |
|
250 | }) | |
251 | }; |
|
251 | }; | |
252 |
|
252 | |||
253 | // reset the comment form into it's original state |
|
253 | // reset the comment form into it's original state | |
254 | this.resetCommentFormState = function(content) { |
|
254 | this.resetCommentFormState = function(content) { | |
255 | content = content || ''; |
|
255 | content = content || ''; | |
256 |
|
256 | |||
257 | $(this.editContainer).show(); |
|
257 | $(this.editContainer).show(); | |
258 | $(this.editButton).parent().addClass('active'); |
|
258 | $(this.editButton).parent().addClass('active'); | |
259 |
|
259 | |||
260 | $(this.previewContainer).hide(); |
|
260 | $(this.previewContainer).hide(); | |
261 | $(this.previewButton).parent().removeClass('active'); |
|
261 | $(this.previewButton).parent().removeClass('active'); | |
262 |
|
262 | |||
263 | this.setActionButtonsDisabled(true); |
|
263 | this.setActionButtonsDisabled(true); | |
264 | self.cm.setValue(content); |
|
264 | self.cm.setValue(content); | |
265 | self.cm.setOption("readOnly", false); |
|
265 | self.cm.setOption("readOnly", false); | |
266 |
|
266 | |||
267 | if (this.resolvesId) { |
|
267 | if (this.resolvesId) { | |
268 | // destroy the resolve action |
|
268 | // destroy the resolve action | |
269 | $(this.resolvesId).parent().remove(); |
|
269 | $(this.resolvesId).parent().remove(); | |
270 | } |
|
270 | } | |
271 | // reset closingPR flag |
|
271 | // reset closingPR flag | |
272 | $('.close-pr-input').remove(); |
|
272 | $('.close-pr-input').remove(); | |
273 |
|
273 | |||
274 | $(this.statusChange).select2('readonly', false); |
|
274 | $(this.statusChange).select2('readonly', false); | |
275 | }; |
|
275 | }; | |
276 |
|
276 | |||
277 | this.globalSubmitSuccessCallback = function(){ |
|
277 | this.globalSubmitSuccessCallback = function(){ | |
278 | // default behaviour is to call GLOBAL hook, if it's registered. |
|
278 | // default behaviour is to call GLOBAL hook, if it's registered. | |
279 | if (window.commentFormGlobalSubmitSuccessCallback !== undefined){ |
|
279 | if (window.commentFormGlobalSubmitSuccessCallback !== undefined){ | |
280 | commentFormGlobalSubmitSuccessCallback() |
|
280 | commentFormGlobalSubmitSuccessCallback() | |
281 | } |
|
281 | } | |
282 | }; |
|
282 | }; | |
283 |
|
283 | |||
284 | this.submitAjaxPOST = function(url, postData, successHandler, failHandler) { |
|
284 | this.submitAjaxPOST = function(url, postData, successHandler, failHandler) { | |
285 | return _submitAjaxPOST(url, postData, successHandler, failHandler); |
|
285 | return _submitAjaxPOST(url, postData, successHandler, failHandler); | |
286 | }; |
|
286 | }; | |
287 |
|
287 | |||
288 | // overwrite a submitHandler, we need to do it for inline comments |
|
288 | // overwrite a submitHandler, we need to do it for inline comments | |
289 | this.setHandleFormSubmit = function(callback) { |
|
289 | this.setHandleFormSubmit = function(callback) { | |
290 | this.handleFormSubmit = callback; |
|
290 | this.handleFormSubmit = callback; | |
291 | }; |
|
291 | }; | |
292 |
|
292 | |||
293 | // overwrite a submitSuccessHandler |
|
293 | // overwrite a submitSuccessHandler | |
294 | this.setGlobalSubmitSuccessCallback = function(callback) { |
|
294 | this.setGlobalSubmitSuccessCallback = function(callback) { | |
295 | this.globalSubmitSuccessCallback = callback; |
|
295 | this.globalSubmitSuccessCallback = callback; | |
296 | }; |
|
296 | }; | |
297 |
|
297 | |||
298 | // default handler for for submit for main comments |
|
298 | // default handler for for submit for main comments | |
299 | this.handleFormSubmit = function() { |
|
299 | this.handleFormSubmit = function() { | |
300 | var text = self.cm.getValue(); |
|
300 | var text = self.cm.getValue(); | |
301 | var status = self.getCommentStatus(); |
|
301 | var status = self.getCommentStatus(); | |
302 | var commentType = self.getCommentType(); |
|
302 | var commentType = self.getCommentType(); | |
303 | var resolvesCommentId = self.getResolvesId(); |
|
303 | var resolvesCommentId = self.getResolvesId(); | |
304 | var closePullRequest = self.getClosePr(); |
|
304 | var closePullRequest = self.getClosePr(); | |
305 |
|
305 | |||
306 | if (text === "" && !status) { |
|
306 | if (text === "" && !status) { | |
307 | return; |
|
307 | return; | |
308 | } |
|
308 | } | |
309 |
|
309 | |||
310 | var excludeCancelBtn = false; |
|
310 | var excludeCancelBtn = false; | |
311 | var submitEvent = true; |
|
311 | var submitEvent = true; | |
312 | self.setActionButtonsDisabled(true, excludeCancelBtn, submitEvent); |
|
312 | self.setActionButtonsDisabled(true, excludeCancelBtn, submitEvent); | |
313 | self.cm.setOption("readOnly", true); |
|
313 | self.cm.setOption("readOnly", true); | |
314 |
|
314 | |||
315 | var postData = { |
|
315 | var postData = { | |
316 | 'text': text, |
|
316 | 'text': text, | |
317 | 'changeset_status': status, |
|
317 | 'changeset_status': status, | |
318 | 'comment_type': commentType, |
|
318 | 'comment_type': commentType, | |
319 | 'csrf_token': CSRF_TOKEN |
|
319 | 'csrf_token': CSRF_TOKEN | |
320 | }; |
|
320 | }; | |
321 |
|
321 | |||
322 | if (resolvesCommentId) { |
|
322 | if (resolvesCommentId) { | |
323 | postData['resolves_comment_id'] = resolvesCommentId; |
|
323 | postData['resolves_comment_id'] = resolvesCommentId; | |
324 | } |
|
324 | } | |
325 |
|
325 | |||
326 | if (closePullRequest) { |
|
326 | if (closePullRequest) { | |
327 | postData['close_pull_request'] = true; |
|
327 | postData['close_pull_request'] = true; | |
328 | } |
|
328 | } | |
329 |
|
329 | |||
330 | var submitSuccessCallback = function(o) { |
|
330 | var submitSuccessCallback = function(o) { | |
331 | // reload page if we change status for single commit. |
|
331 | // reload page if we change status for single commit. | |
332 | if (status && self.commitId) { |
|
332 | if (status && self.commitId) { | |
333 | location.reload(true); |
|
333 | location.reload(true); | |
334 | } else { |
|
334 | } else { | |
335 | $('#injected_page_comments').append(o.rendered_text); |
|
335 | $('#injected_page_comments').append(o.rendered_text); | |
336 | self.resetCommentFormState(); |
|
336 | self.resetCommentFormState(); | |
337 | timeagoActivate(); |
|
337 | timeagoActivate(); | |
338 |
|
338 | |||
339 | // mark visually which comment was resolved |
|
339 | // mark visually which comment was resolved | |
340 | if (resolvesCommentId) { |
|
340 | if (resolvesCommentId) { | |
341 | self.markCommentResolved(resolvesCommentId); |
|
341 | self.markCommentResolved(resolvesCommentId); | |
342 | } |
|
342 | } | |
343 | } |
|
343 | } | |
344 |
|
344 | |||
345 | // run global callback on submit |
|
345 | // run global callback on submit | |
346 | self.globalSubmitSuccessCallback(); |
|
346 | self.globalSubmitSuccessCallback(); | |
347 |
|
347 | |||
348 | }; |
|
348 | }; | |
349 | var submitFailCallback = function(data) { |
|
349 | var submitFailCallback = function(data) { | |
350 | alert( |
|
350 | alert( | |
351 | "Error while submitting comment.\n" + |
|
351 | "Error while submitting comment.\n" + | |
352 | "Error code {0} ({1}).".format(data.status, data.statusText) |
|
352 | "Error code {0} ({1}).".format(data.status, data.statusText) | |
353 | ); |
|
353 | ); | |
354 | self.resetCommentFormState(text); |
|
354 | self.resetCommentFormState(text); | |
355 | }; |
|
355 | }; | |
356 | self.submitAjaxPOST( |
|
356 | self.submitAjaxPOST( | |
357 | self.submitUrl, postData, submitSuccessCallback, submitFailCallback); |
|
357 | self.submitUrl, postData, submitSuccessCallback, submitFailCallback); | |
358 | }; |
|
358 | }; | |
359 |
|
359 | |||
360 | this.previewSuccessCallback = function(o) { |
|
360 | this.previewSuccessCallback = function(o) { | |
361 | $(self.previewBoxSelector).html(o); |
|
361 | $(self.previewBoxSelector).html(o); | |
362 | $(self.previewBoxSelector).removeClass('unloaded'); |
|
362 | $(self.previewBoxSelector).removeClass('unloaded'); | |
363 |
|
363 | |||
364 | // swap buttons, making preview active |
|
364 | // swap buttons, making preview active | |
365 | $(self.previewButton).parent().addClass('active'); |
|
365 | $(self.previewButton).parent().addClass('active'); | |
366 | $(self.editButton).parent().removeClass('active'); |
|
366 | $(self.editButton).parent().removeClass('active'); | |
367 |
|
367 | |||
368 | // unlock buttons |
|
368 | // unlock buttons | |
369 | self.setActionButtonsDisabled(false); |
|
369 | self.setActionButtonsDisabled(false); | |
370 | }; |
|
370 | }; | |
371 |
|
371 | |||
372 | this.setActionButtonsDisabled = function(state, excludeCancelBtn, submitEvent) { |
|
372 | this.setActionButtonsDisabled = function(state, excludeCancelBtn, submitEvent) { | |
373 | excludeCancelBtn = excludeCancelBtn || false; |
|
373 | excludeCancelBtn = excludeCancelBtn || false; | |
374 | submitEvent = submitEvent || false; |
|
374 | submitEvent = submitEvent || false; | |
375 |
|
375 | |||
376 | $(this.editButton).prop('disabled', state); |
|
376 | $(this.editButton).prop('disabled', state); | |
377 | $(this.previewButton).prop('disabled', state); |
|
377 | $(this.previewButton).prop('disabled', state); | |
378 |
|
378 | |||
379 | if (!excludeCancelBtn) { |
|
379 | if (!excludeCancelBtn) { | |
380 | $(this.cancelButton).prop('disabled', state); |
|
380 | $(this.cancelButton).prop('disabled', state); | |
381 | } |
|
381 | } | |
382 |
|
382 | |||
383 | var submitState = state; |
|
383 | var submitState = state; | |
384 | if (!submitEvent && this.getCommentStatus() && !self.isInline()) { |
|
384 | if (!submitEvent && this.getCommentStatus() && !self.isInline()) { | |
385 | // if the value of commit review status is set, we allow |
|
385 | // if the value of commit review status is set, we allow | |
386 | // submit button, but only on Main form, isInline means inline |
|
386 | // submit button, but only on Main form, isInline means inline | |
387 | submitState = false |
|
387 | submitState = false | |
388 | } |
|
388 | } | |
389 |
|
389 | |||
390 | $(this.submitButton).prop('disabled', submitState); |
|
390 | $(this.submitButton).prop('disabled', submitState); | |
391 | if (submitEvent) { |
|
391 | if (submitEvent) { | |
392 | $(this.submitButton).val(_gettext('Submitting...')); |
|
392 | $(this.submitButton).val(_gettext('Submitting...')); | |
393 | } else { |
|
393 | } else { | |
394 | $(this.submitButton).val(this.submitButtonText); |
|
394 | $(this.submitButton).val(this.submitButtonText); | |
395 | } |
|
395 | } | |
396 |
|
396 | |||
397 | }; |
|
397 | }; | |
398 |
|
398 | |||
399 | // lock preview/edit/submit buttons on load, but exclude cancel button |
|
399 | // lock preview/edit/submit buttons on load, but exclude cancel button | |
400 | var excludeCancelBtn = true; |
|
400 | var excludeCancelBtn = true; | |
401 | this.setActionButtonsDisabled(true, excludeCancelBtn); |
|
401 | this.setActionButtonsDisabled(true, excludeCancelBtn); | |
402 |
|
402 | |||
403 | // anonymous users don't have access to initialized CM instance |
|
403 | // anonymous users don't have access to initialized CM instance | |
404 | if (this.cm !== undefined){ |
|
404 | if (this.cm !== undefined){ | |
405 | this.cm.on('change', function(cMirror) { |
|
405 | this.cm.on('change', function(cMirror) { | |
406 | if (cMirror.getValue() === "") { |
|
406 | if (cMirror.getValue() === "") { | |
407 | self.setActionButtonsDisabled(true, excludeCancelBtn) |
|
407 | self.setActionButtonsDisabled(true, excludeCancelBtn) | |
408 | } else { |
|
408 | } else { | |
409 | self.setActionButtonsDisabled(false, excludeCancelBtn) |
|
409 | self.setActionButtonsDisabled(false, excludeCancelBtn) | |
410 | } |
|
410 | } | |
411 | }); |
|
411 | }); | |
412 | } |
|
412 | } | |
413 |
|
413 | |||
414 | $(this.editButton).on('click', function(e) { |
|
414 | $(this.editButton).on('click', function(e) { | |
415 | e.preventDefault(); |
|
415 | e.preventDefault(); | |
416 |
|
416 | |||
417 | $(self.previewButton).parent().removeClass('active'); |
|
417 | $(self.previewButton).parent().removeClass('active'); | |
418 | $(self.previewContainer).hide(); |
|
418 | $(self.previewContainer).hide(); | |
419 |
|
419 | |||
420 | $(self.editButton).parent().addClass('active'); |
|
420 | $(self.editButton).parent().addClass('active'); | |
421 | $(self.editContainer).show(); |
|
421 | $(self.editContainer).show(); | |
422 |
|
422 | |||
423 | }); |
|
423 | }); | |
424 |
|
424 | |||
425 | $(this.previewButton).on('click', function(e) { |
|
425 | $(this.previewButton).on('click', function(e) { | |
426 | e.preventDefault(); |
|
426 | e.preventDefault(); | |
427 | var text = self.cm.getValue(); |
|
427 | var text = self.cm.getValue(); | |
428 |
|
428 | |||
429 | if (text === "") { |
|
429 | if (text === "") { | |
430 | return; |
|
430 | return; | |
431 | } |
|
431 | } | |
432 |
|
432 | |||
433 | var postData = { |
|
433 | var postData = { | |
434 | 'text': text, |
|
434 | 'text': text, | |
435 | 'renderer': templateContext.visual.default_renderer, |
|
435 | 'renderer': templateContext.visual.default_renderer, | |
436 | 'csrf_token': CSRF_TOKEN |
|
436 | 'csrf_token': CSRF_TOKEN | |
437 | }; |
|
437 | }; | |
438 |
|
438 | |||
439 | // lock ALL buttons on preview |
|
439 | // lock ALL buttons on preview | |
440 | self.setActionButtonsDisabled(true); |
|
440 | self.setActionButtonsDisabled(true); | |
441 |
|
441 | |||
442 | $(self.previewBoxSelector).addClass('unloaded'); |
|
442 | $(self.previewBoxSelector).addClass('unloaded'); | |
443 | $(self.previewBoxSelector).html(_gettext('Loading ...')); |
|
443 | $(self.previewBoxSelector).html(_gettext('Loading ...')); | |
444 |
|
444 | |||
445 | $(self.editContainer).hide(); |
|
445 | $(self.editContainer).hide(); | |
446 | $(self.previewContainer).show(); |
|
446 | $(self.previewContainer).show(); | |
447 |
|
447 | |||
448 | // by default we reset state of comment preserving the text |
|
448 | // by default we reset state of comment preserving the text | |
449 | var previewFailCallback = function(data){ |
|
449 | var previewFailCallback = function(data){ | |
450 | alert( |
|
450 | alert( | |
451 | "Error while preview of comment.\n" + |
|
451 | "Error while preview of comment.\n" + | |
452 | "Error code {0} ({1}).".format(data.status, data.statusText) |
|
452 | "Error code {0} ({1}).".format(data.status, data.statusText) | |
453 | ); |
|
453 | ); | |
454 | self.resetCommentFormState(text) |
|
454 | self.resetCommentFormState(text) | |
455 | }; |
|
455 | }; | |
456 | self.submitAjaxPOST( |
|
456 | self.submitAjaxPOST( | |
457 | self.previewUrl, postData, self.previewSuccessCallback, |
|
457 | self.previewUrl, postData, self.previewSuccessCallback, | |
458 | previewFailCallback); |
|
458 | previewFailCallback); | |
459 |
|
459 | |||
460 | $(self.previewButton).parent().addClass('active'); |
|
460 | $(self.previewButton).parent().addClass('active'); | |
461 | $(self.editButton).parent().removeClass('active'); |
|
461 | $(self.editButton).parent().removeClass('active'); | |
462 | }); |
|
462 | }); | |
463 |
|
463 | |||
464 | $(this.submitForm).submit(function(e) { |
|
464 | $(this.submitForm).submit(function(e) { | |
465 | e.preventDefault(); |
|
465 | e.preventDefault(); | |
466 | var allowedToSubmit = self.isAllowedToSubmit(); |
|
466 | var allowedToSubmit = self.isAllowedToSubmit(); | |
467 | if (!allowedToSubmit){ |
|
467 | if (!allowedToSubmit){ | |
468 | return false; |
|
468 | return false; | |
469 | } |
|
469 | } | |
470 | self.handleFormSubmit(); |
|
470 | self.handleFormSubmit(); | |
471 | }); |
|
471 | }); | |
472 |
|
472 | |||
473 | } |
|
473 | } | |
474 |
|
474 | |||
475 | return CommentForm; |
|
475 | return CommentForm; | |
476 | }); |
|
476 | }); | |
477 |
|
477 | |||
478 | /* comments controller */ |
|
478 | /* comments controller */ | |
479 | var CommentsController = function() { |
|
479 | var CommentsController = function() { | |
480 | var mainComment = '#text'; |
|
480 | var mainComment = '#text'; | |
481 | var self = this; |
|
481 | var self = this; | |
482 |
|
482 | |||
483 | this.cancelComment = function(node) { |
|
483 | this.cancelComment = function(node) { | |
484 | var $node = $(node); |
|
484 | var $node = $(node); | |
485 | var $td = $node.closest('td'); |
|
485 | var $td = $node.closest('td'); | |
486 | $node.closest('.comment-inline-form').remove(); |
|
486 | $node.closest('.comment-inline-form').remove(); | |
487 | return false; |
|
487 | return false; | |
488 | }; |
|
488 | }; | |
489 |
|
489 | |||
490 | this.getLineNumber = function(node) { |
|
490 | this.getLineNumber = function(node) { | |
491 | var $node = $(node); |
|
491 | var $node = $(node); | |
492 | var lineNo = $node.closest('td').attr('data-line-no'); |
|
492 | var lineNo = $node.closest('td').attr('data-line-no'); | |
493 | if (lineNo === undefined && $node.data('commentInline')){ |
|
493 | if (lineNo === undefined && $node.data('commentInline')){ | |
494 | lineNo = $node.data('commentLineNo') |
|
494 | lineNo = $node.data('commentLineNo') | |
495 | } |
|
495 | } | |
496 |
|
496 | |||
497 | return lineNo |
|
497 | return lineNo | |
498 | }; |
|
498 | }; | |
499 |
|
499 | |||
500 | this.scrollToComment = function(node, offset, outdated) { |
|
500 | this.scrollToComment = function(node, offset, outdated) { | |
501 | if (offset === undefined) { |
|
501 | if (offset === undefined) { | |
502 | offset = 0; |
|
502 | offset = 0; | |
503 | } |
|
503 | } | |
504 | var outdated = outdated || false; |
|
504 | var outdated = outdated || false; | |
505 | var klass = outdated ? 'div.comment-outdated' : 'div.comment-current'; |
|
505 | var klass = outdated ? 'div.comment-outdated' : 'div.comment-current'; | |
506 |
|
506 | |||
507 | if (!node) { |
|
507 | if (!node) { | |
508 | node = $('.comment-selected'); |
|
508 | node = $('.comment-selected'); | |
509 | if (!node.length) { |
|
509 | if (!node.length) { | |
510 | node = $('comment-current') |
|
510 | node = $('comment-current') | |
511 | } |
|
511 | } | |
512 | } |
|
512 | } | |
513 | $wrapper = $(node).closest('div.comment'); |
|
513 | $wrapper = $(node).closest('div.comment'); | |
514 | $comment = $(node).closest(klass); |
|
514 | $comment = $(node).closest(klass); | |
515 | $comments = $(klass); |
|
515 | $comments = $(klass); | |
516 |
|
516 | |||
517 | // show hidden comment when referenced. |
|
517 | // show hidden comment when referenced. | |
518 | if (!$wrapper.is(':visible')){ |
|
518 | if (!$wrapper.is(':visible')){ | |
519 | $wrapper.show(); |
|
519 | $wrapper.show(); | |
520 | } |
|
520 | } | |
521 |
|
521 | |||
522 | $('.comment-selected').removeClass('comment-selected'); |
|
522 | $('.comment-selected').removeClass('comment-selected'); | |
523 |
|
523 | |||
524 | var nextIdx = $(klass).index($comment) + offset; |
|
524 | var nextIdx = $(klass).index($comment) + offset; | |
525 | if (nextIdx >= $comments.length) { |
|
525 | if (nextIdx >= $comments.length) { | |
526 | nextIdx = 0; |
|
526 | nextIdx = 0; | |
527 | } |
|
527 | } | |
528 | var $next = $(klass).eq(nextIdx); |
|
528 | var $next = $(klass).eq(nextIdx); | |
529 |
|
529 | |||
530 | var $cb = $next.closest('.cb'); |
|
530 | var $cb = $next.closest('.cb'); | |
531 | $cb.removeClass('cb-collapsed'); |
|
531 | $cb.removeClass('cb-collapsed'); | |
532 |
|
532 | |||
533 | var $filediffCollapseState = $cb.closest('.filediff').prev(); |
|
533 | var $filediffCollapseState = $cb.closest('.filediff').prev(); | |
534 | $filediffCollapseState.prop('checked', false); |
|
534 | $filediffCollapseState.prop('checked', false); | |
535 | $next.addClass('comment-selected'); |
|
535 | $next.addClass('comment-selected'); | |
536 | scrollToElement($next); |
|
536 | scrollToElement($next); | |
537 | return false; |
|
537 | return false; | |
538 | }; |
|
538 | }; | |
539 |
|
539 | |||
540 | this.nextComment = function(node) { |
|
540 | this.nextComment = function(node) { | |
541 | return self.scrollToComment(node, 1); |
|
541 | return self.scrollToComment(node, 1); | |
542 | }; |
|
542 | }; | |
543 |
|
543 | |||
544 | this.prevComment = function(node) { |
|
544 | this.prevComment = function(node) { | |
545 | return self.scrollToComment(node, -1); |
|
545 | return self.scrollToComment(node, -1); | |
546 | }; |
|
546 | }; | |
547 |
|
547 | |||
548 | this.nextOutdatedComment = function(node) { |
|
548 | this.nextOutdatedComment = function(node) { | |
549 | return self.scrollToComment(node, 1, true); |
|
549 | return self.scrollToComment(node, 1, true); | |
550 | }; |
|
550 | }; | |
551 |
|
551 | |||
552 | this.prevOutdatedComment = function(node) { |
|
552 | this.prevOutdatedComment = function(node) { | |
553 | return self.scrollToComment(node, -1, true); |
|
553 | return self.scrollToComment(node, -1, true); | |
554 | }; |
|
554 | }; | |
555 |
|
555 | |||
556 | this.deleteComment = function(node) { |
|
556 | this.deleteComment = function(node) { | |
557 | if (!confirm(_gettext('Delete this comment?'))) { |
|
557 | if (!confirm(_gettext('Delete this comment?'))) { | |
558 | return false; |
|
558 | return false; | |
559 | } |
|
559 | } | |
560 | var $node = $(node); |
|
560 | var $node = $(node); | |
561 | var $td = $node.closest('td'); |
|
561 | var $td = $node.closest('td'); | |
562 | var $comment = $node.closest('.comment'); |
|
562 | var $comment = $node.closest('.comment'); | |
563 | var comment_id = $comment.attr('data-comment-id'); |
|
563 | var comment_id = $comment.attr('data-comment-id'); | |
564 | var url = AJAX_COMMENT_DELETE_URL.replace('__COMMENT_ID__', comment_id); |
|
564 | var url = AJAX_COMMENT_DELETE_URL.replace('__COMMENT_ID__', comment_id); | |
565 | var postData = { |
|
565 | var postData = { | |
566 | 'csrf_token': CSRF_TOKEN |
|
566 | 'csrf_token': CSRF_TOKEN | |
567 | }; |
|
567 | }; | |
568 |
|
568 | |||
569 | $comment.addClass('comment-deleting'); |
|
569 | $comment.addClass('comment-deleting'); | |
570 | $comment.hide('fast'); |
|
570 | $comment.hide('fast'); | |
571 |
|
571 | |||
572 | var success = function(response) { |
|
572 | var success = function(response) { | |
573 | $comment.remove(); |
|
573 | $comment.remove(); | |
574 | return false; |
|
574 | return false; | |
575 | }; |
|
575 | }; | |
576 | var failure = function(data, textStatus, xhr) { |
|
576 | var failure = function(data, textStatus, xhr) { | |
577 | alert("error processing request: " + textStatus); |
|
577 | alert("error processing request: " + textStatus); | |
578 | $comment.show('fast'); |
|
578 | $comment.show('fast'); | |
579 | $comment.removeClass('comment-deleting'); |
|
579 | $comment.removeClass('comment-deleting'); | |
580 | return false; |
|
580 | return false; | |
581 | }; |
|
581 | }; | |
582 | ajaxPOST(url, postData, success, failure); |
|
582 | ajaxPOST(url, postData, success, failure); | |
583 | }; |
|
583 | }; | |
584 |
|
584 | |||
585 | this.toggleWideMode = function (node) { |
|
585 | this.toggleWideMode = function (node) { | |
586 | if ($('#content').hasClass('wrapper')) { |
|
586 | if ($('#content').hasClass('wrapper')) { | |
587 | $('#content').removeClass("wrapper"); |
|
587 | $('#content').removeClass("wrapper"); | |
588 | $('#content').addClass("wide-mode-wrapper"); |
|
588 | $('#content').addClass("wide-mode-wrapper"); | |
589 | $(node).addClass('btn-success'); |
|
589 | $(node).addClass('btn-success'); | |
590 | } else { |
|
590 | } else { | |
591 | $('#content').removeClass("wide-mode-wrapper"); |
|
591 | $('#content').removeClass("wide-mode-wrapper"); | |
592 | $('#content').addClass("wrapper"); |
|
592 | $('#content').addClass("wrapper"); | |
593 | $(node).removeClass('btn-success'); |
|
593 | $(node).removeClass('btn-success'); | |
594 | } |
|
594 | } | |
595 | return false; |
|
595 | return false; | |
596 | }; |
|
596 | }; | |
597 |
|
597 | |||
598 | this.toggleComments = function(node, show) { |
|
598 | this.toggleComments = function(node, show) { | |
599 | var $filediff = $(node).closest('.filediff'); |
|
599 | var $filediff = $(node).closest('.filediff'); | |
600 | if (show === true) { |
|
600 | if (show === true) { | |
601 | $filediff.removeClass('hide-comments'); |
|
601 | $filediff.removeClass('hide-comments'); | |
602 | } else if (show === false) { |
|
602 | } else if (show === false) { | |
603 | $filediff.find('.hide-line-comments').removeClass('hide-line-comments'); |
|
603 | $filediff.find('.hide-line-comments').removeClass('hide-line-comments'); | |
604 | $filediff.addClass('hide-comments'); |
|
604 | $filediff.addClass('hide-comments'); | |
605 | } else { |
|
605 | } else { | |
606 | $filediff.find('.hide-line-comments').removeClass('hide-line-comments'); |
|
606 | $filediff.find('.hide-line-comments').removeClass('hide-line-comments'); | |
607 | $filediff.toggleClass('hide-comments'); |
|
607 | $filediff.toggleClass('hide-comments'); | |
608 | } |
|
608 | } | |
609 | return false; |
|
609 | return false; | |
610 | }; |
|
610 | }; | |
611 |
|
611 | |||
612 | this.toggleLineComments = function(node) { |
|
612 | this.toggleLineComments = function(node) { | |
613 | self.toggleComments(node, true); |
|
613 | self.toggleComments(node, true); | |
614 | var $node = $(node); |
|
614 | var $node = $(node); | |
615 | // mark outdated comments as visible before the toggle; |
|
615 | // mark outdated comments as visible before the toggle; | |
616 | $(node.closest('tr')).find('.comment-outdated').show(); |
|
616 | $(node.closest('tr')).find('.comment-outdated').show(); | |
617 | $node.closest('tr').toggleClass('hide-line-comments'); |
|
617 | $node.closest('tr').toggleClass('hide-line-comments'); | |
618 | }; |
|
618 | }; | |
619 |
|
619 | |||
620 | this.createCommentForm = function(formElement, lineno, placeholderText, initAutocompleteActions, resolvesCommentId){ |
|
620 | this.createCommentForm = function(formElement, lineno, placeholderText, initAutocompleteActions, resolvesCommentId){ | |
621 | var pullRequestId = templateContext.pull_request_data.pull_request_id; |
|
621 | var pullRequestId = templateContext.pull_request_data.pull_request_id; | |
622 | var commitId = templateContext.commit_data.commit_id; |
|
622 | var commitId = templateContext.commit_data.commit_id; | |
623 |
|
623 | |||
624 | var commentForm = new CommentForm( |
|
624 | var commentForm = new CommentForm( | |
625 | formElement, commitId, pullRequestId, lineno, initAutocompleteActions, resolvesCommentId); |
|
625 | formElement, commitId, pullRequestId, lineno, initAutocompleteActions, resolvesCommentId); | |
626 | var cm = commentForm.getCmInstance(); |
|
626 | var cm = commentForm.getCmInstance(); | |
627 |
|
627 | |||
628 | if (resolvesCommentId){ |
|
628 | if (resolvesCommentId){ | |
629 | var placeholderText = _gettext('Leave a comment, or click resolve button to resolve TODO comment #{0}').format(resolvesCommentId); |
|
629 | var placeholderText = _gettext('Leave a comment, or click resolve button to resolve TODO comment #{0}').format(resolvesCommentId); | |
630 | } |
|
630 | } | |
631 |
|
631 | |||
632 | setTimeout(function() { |
|
632 | setTimeout(function() { | |
633 | // callbacks |
|
633 | // callbacks | |
634 | if (cm !== undefined) { |
|
634 | if (cm !== undefined) { | |
635 | commentForm.setPlaceholder(placeholderText); |
|
635 | commentForm.setPlaceholder(placeholderText); | |
636 | if (commentForm.isInline()) { |
|
636 | if (commentForm.isInline()) { | |
637 | cm.focus(); |
|
637 | cm.focus(); | |
638 | cm.refresh(); |
|
638 | cm.refresh(); | |
639 | } |
|
639 | } | |
640 | } |
|
640 | } | |
641 | }, 10); |
|
641 | }, 10); | |
642 |
|
642 | |||
643 | // trigger scrolldown to the resolve comment, since it might be away |
|
643 | // trigger scrolldown to the resolve comment, since it might be away | |
644 | // from the clicked |
|
644 | // from the clicked | |
645 | if (resolvesCommentId){ |
|
645 | if (resolvesCommentId){ | |
646 | var actionNode = $(commentForm.resolvesActionId).offset(); |
|
646 | var actionNode = $(commentForm.resolvesActionId).offset(); | |
647 |
|
647 | |||
648 | setTimeout(function() { |
|
648 | setTimeout(function() { | |
649 | if (actionNode) { |
|
649 | if (actionNode) { | |
650 | $('body, html').animate({scrollTop: actionNode.top}, 10); |
|
650 | $('body, html').animate({scrollTop: actionNode.top}, 10); | |
651 | } |
|
651 | } | |
652 | }, 100); |
|
652 | }, 100); | |
653 | } |
|
653 | } | |
654 |
|
654 | |||
655 | return commentForm; |
|
655 | return commentForm; | |
656 | }; |
|
656 | }; | |
657 |
|
657 | |||
658 | this.createGeneralComment = function (lineNo, placeholderText, resolvesCommentId) { |
|
658 | this.createGeneralComment = function (lineNo, placeholderText, resolvesCommentId) { | |
659 |
|
659 | |||
660 | var tmpl = $('#cb-comment-general-form-template').html(); |
|
660 | var tmpl = $('#cb-comment-general-form-template').html(); | |
661 | tmpl = tmpl.format(null, 'general'); |
|
661 | tmpl = tmpl.format(null, 'general'); | |
662 | var $form = $(tmpl); |
|
662 | var $form = $(tmpl); | |
663 |
|
663 | |||
664 | var $formPlaceholder = $('#cb-comment-general-form-placeholder'); |
|
664 | var $formPlaceholder = $('#cb-comment-general-form-placeholder'); | |
665 | var curForm = $formPlaceholder.find('form'); |
|
665 | var curForm = $formPlaceholder.find('form'); | |
666 | if (curForm){ |
|
666 | if (curForm){ | |
667 | curForm.remove(); |
|
667 | curForm.remove(); | |
668 | } |
|
668 | } | |
669 | $formPlaceholder.append($form); |
|
669 | $formPlaceholder.append($form); | |
670 |
|
670 | |||
671 | var _form = $($form[0]); |
|
671 | var _form = $($form[0]); | |
672 | var autocompleteActions = ['approve', 'reject', 'as_note', 'as_todo']; |
|
672 | var autocompleteActions = ['approve', 'reject', 'as_note', 'as_todo']; | |
673 | var commentForm = this.createCommentForm( |
|
673 | var commentForm = this.createCommentForm( | |
674 | _form, lineNo, placeholderText, autocompleteActions, resolvesCommentId); |
|
674 | _form, lineNo, placeholderText, autocompleteActions, resolvesCommentId); | |
675 | commentForm.initStatusChangeSelector(); |
|
675 | commentForm.initStatusChangeSelector(); | |
676 |
|
676 | |||
677 | return commentForm; |
|
677 | return commentForm; | |
678 | }; |
|
678 | }; | |
679 |
|
679 | |||
680 | this.createComment = function(node, resolutionComment) { |
|
680 | this.createComment = function(node, resolutionComment) { | |
681 | var resolvesCommentId = resolutionComment || null; |
|
681 | var resolvesCommentId = resolutionComment || null; | |
682 | var $node = $(node); |
|
682 | var $node = $(node); | |
683 | var $td = $node.closest('td'); |
|
683 | var $td = $node.closest('td'); | |
684 | var $form = $td.find('.comment-inline-form'); |
|
684 | var $form = $td.find('.comment-inline-form'); | |
685 |
|
685 | |||
686 | if (!$form.length) { |
|
686 | if (!$form.length) { | |
687 |
|
687 | |||
688 | var $filediff = $node.closest('.filediff'); |
|
688 | var $filediff = $node.closest('.filediff'); | |
689 | $filediff.removeClass('hide-comments'); |
|
689 | $filediff.removeClass('hide-comments'); | |
690 | var f_path = $filediff.attr('data-f-path'); |
|
690 | var f_path = $filediff.attr('data-f-path'); | |
691 | var lineno = self.getLineNumber(node); |
|
691 | var lineno = self.getLineNumber(node); | |
692 | // create a new HTML from template |
|
692 | // create a new HTML from template | |
693 | var tmpl = $('#cb-comment-inline-form-template').html(); |
|
693 | var tmpl = $('#cb-comment-inline-form-template').html(); | |
694 | tmpl = tmpl.format(escapeHtml(f_path), lineno); |
|
694 | tmpl = tmpl.format(escapeHtml(f_path), lineno); | |
695 | $form = $(tmpl); |
|
695 | $form = $(tmpl); | |
696 |
|
696 | |||
697 | var $comments = $td.find('.inline-comments'); |
|
697 | var $comments = $td.find('.inline-comments'); | |
698 | if (!$comments.length) { |
|
698 | if (!$comments.length) { | |
699 | $comments = $( |
|
699 | $comments = $( | |
700 | $('#cb-comments-inline-container-template').html()); |
|
700 | $('#cb-comments-inline-container-template').html()); | |
701 | $td.append($comments); |
|
701 | $td.append($comments); | |
702 | } |
|
702 | } | |
703 |
|
703 | |||
704 | $td.find('.cb-comment-add-button').before($form); |
|
704 | $td.find('.cb-comment-add-button').before($form); | |
705 |
|
705 | |||
706 | var placeholderText = _gettext('Leave a comment on line {0}.').format(lineno); |
|
706 | var placeholderText = _gettext('Leave a comment on line {0}.').format(lineno); | |
707 | var _form = $($form[0]).find('form'); |
|
707 | var _form = $($form[0]).find('form'); | |
708 | var autocompleteActions = ['as_note', 'as_todo']; |
|
708 | var autocompleteActions = ['as_note', 'as_todo']; | |
709 | var commentForm = this.createCommentForm( |
|
709 | var commentForm = this.createCommentForm( | |
710 | _form, lineno, placeholderText, autocompleteActions, resolvesCommentId); |
|
710 | _form, lineno, placeholderText, autocompleteActions, resolvesCommentId); | |
711 |
|
711 | |||
712 | $.Topic('/ui/plugins/code/comment_form_built').prepareOrPublish({ |
|
712 | $.Topic('/ui/plugins/code/comment_form_built').prepareOrPublish({ | |
713 | form: _form, |
|
713 | form: _form, | |
714 | parent: $td[0], |
|
714 | parent: $td[0], | |
715 | lineno: lineno, |
|
715 | lineno: lineno, | |
716 | f_path: f_path} |
|
716 | f_path: f_path} | |
717 | ); |
|
717 | ); | |
718 |
|
718 | |||
719 | // set a CUSTOM submit handler for inline comments. |
|
719 | // set a CUSTOM submit handler for inline comments. | |
720 | commentForm.setHandleFormSubmit(function(o) { |
|
720 | commentForm.setHandleFormSubmit(function(o) { | |
721 | var text = commentForm.cm.getValue(); |
|
721 | var text = commentForm.cm.getValue(); | |
722 | var commentType = commentForm.getCommentType(); |
|
722 | var commentType = commentForm.getCommentType(); | |
723 | var resolvesCommentId = commentForm.getResolvesId(); |
|
723 | var resolvesCommentId = commentForm.getResolvesId(); | |
724 |
|
724 | |||
725 | if (text === "") { |
|
725 | if (text === "") { | |
726 | return; |
|
726 | return; | |
727 | } |
|
727 | } | |
728 |
|
728 | |||
729 | if (lineno === undefined) { |
|
729 | if (lineno === undefined) { | |
730 | alert('missing line !'); |
|
730 | alert('missing line !'); | |
731 | return; |
|
731 | return; | |
732 | } |
|
732 | } | |
733 | if (f_path === undefined) { |
|
733 | if (f_path === undefined) { | |
734 | alert('missing file path !'); |
|
734 | alert('missing file path !'); | |
735 | return; |
|
735 | return; | |
736 | } |
|
736 | } | |
737 |
|
737 | |||
738 | var excludeCancelBtn = false; |
|
738 | var excludeCancelBtn = false; | |
739 | var submitEvent = true; |
|
739 | var submitEvent = true; | |
740 | commentForm.setActionButtonsDisabled(true, excludeCancelBtn, submitEvent); |
|
740 | commentForm.setActionButtonsDisabled(true, excludeCancelBtn, submitEvent); | |
741 | commentForm.cm.setOption("readOnly", true); |
|
741 | commentForm.cm.setOption("readOnly", true); | |
742 | var postData = { |
|
742 | var postData = { | |
743 | 'text': text, |
|
743 | 'text': text, | |
744 | 'f_path': f_path, |
|
744 | 'f_path': f_path, | |
745 | 'line': lineno, |
|
745 | 'line': lineno, | |
746 | 'comment_type': commentType, |
|
746 | 'comment_type': commentType, | |
747 | 'csrf_token': CSRF_TOKEN |
|
747 | 'csrf_token': CSRF_TOKEN | |
748 | }; |
|
748 | }; | |
749 | if (resolvesCommentId){ |
|
749 | if (resolvesCommentId){ | |
750 | postData['resolves_comment_id'] = resolvesCommentId; |
|
750 | postData['resolves_comment_id'] = resolvesCommentId; | |
751 | } |
|
751 | } | |
752 |
|
752 | |||
753 | var submitSuccessCallback = function(json_data) { |
|
753 | var submitSuccessCallback = function(json_data) { | |
754 | $form.remove(); |
|
754 | $form.remove(); | |
755 | try { |
|
755 | try { | |
756 | var html = json_data.rendered_text; |
|
756 | var html = json_data.rendered_text; | |
757 | var lineno = json_data.line_no; |
|
757 | var lineno = json_data.line_no; | |
758 | var target_id = json_data.target_id; |
|
758 | var target_id = json_data.target_id; | |
759 |
|
759 | |||
760 | $comments.find('.cb-comment-add-button').before(html); |
|
760 | $comments.find('.cb-comment-add-button').before(html); | |
761 |
|
761 | |||
762 | //mark visually which comment was resolved |
|
762 | //mark visually which comment was resolved | |
763 | if (resolvesCommentId) { |
|
763 | if (resolvesCommentId) { | |
764 | commentForm.markCommentResolved(resolvesCommentId); |
|
764 | commentForm.markCommentResolved(resolvesCommentId); | |
765 | } |
|
765 | } | |
766 |
|
766 | |||
767 | // run global callback on submit |
|
767 | // run global callback on submit | |
768 | commentForm.globalSubmitSuccessCallback(); |
|
768 | commentForm.globalSubmitSuccessCallback(); | |
769 |
|
769 | |||
770 | } catch (e) { |
|
770 | } catch (e) { | |
771 | console.error(e); |
|
771 | console.error(e); | |
772 | } |
|
772 | } | |
773 |
|
773 | |||
774 | // re trigger the linkification of next/prev navigation |
|
774 | // re trigger the linkification of next/prev navigation | |
775 | linkifyComments($('.inline-comment-injected')); |
|
775 | linkifyComments($('.inline-comment-injected')); | |
776 | timeagoActivate(); |
|
776 | timeagoActivate(); | |
|
777 | ||||
|
778 | if (window.Waypoint !== undefined) { | |||
|
779 | // potentially our comments change the active window size, so we | |||
|
780 | // notify waypint to re-paint | |||
|
781 | Waypoint.refreshAll() | |||
|
782 | } | |||
|
783 | ||||
777 | commentForm.setActionButtonsDisabled(false); |
|
784 | commentForm.setActionButtonsDisabled(false); | |
778 |
|
785 | |||
779 | }; |
|
786 | }; | |
780 | var submitFailCallback = function(data){ |
|
787 | var submitFailCallback = function(data){ | |
781 | alert( |
|
788 | alert( | |
782 | "Error while submitting comment.\n" + |
|
789 | "Error while submitting comment.\n" + | |
783 | "Error code {0} ({1}).".format(data.status, data.statusText) |
|
790 | "Error code {0} ({1}).".format(data.status, data.statusText) | |
784 | ); |
|
791 | ); | |
785 | commentForm.resetCommentFormState(text) |
|
792 | commentForm.resetCommentFormState(text) | |
786 | }; |
|
793 | }; | |
787 | commentForm.submitAjaxPOST( |
|
794 | commentForm.submitAjaxPOST( | |
788 | commentForm.submitUrl, postData, submitSuccessCallback, submitFailCallback); |
|
795 | commentForm.submitUrl, postData, submitSuccessCallback, submitFailCallback); | |
789 | }); |
|
796 | }); | |
790 | } |
|
797 | } | |
791 |
|
798 | |||
792 | $form.addClass('comment-inline-form-open'); |
|
799 | $form.addClass('comment-inline-form-open'); | |
793 | }; |
|
800 | }; | |
794 |
|
801 | |||
795 | this.createResolutionComment = function(commentId){ |
|
802 | this.createResolutionComment = function(commentId){ | |
796 | // hide the trigger text |
|
803 | // hide the trigger text | |
797 | $('#resolve-comment-{0}'.format(commentId)).hide(); |
|
804 | $('#resolve-comment-{0}'.format(commentId)).hide(); | |
798 |
|
805 | |||
799 | var comment = $('#comment-'+commentId); |
|
806 | var comment = $('#comment-'+commentId); | |
800 | var commentData = comment.data(); |
|
807 | var commentData = comment.data(); | |
801 | if (commentData.commentInline) { |
|
808 | if (commentData.commentInline) { | |
802 | this.createComment(comment, commentId) |
|
809 | this.createComment(comment, commentId) | |
803 | } else { |
|
810 | } else { | |
804 | Rhodecode.comments.createGeneralComment('general', "$placeholder", commentId) |
|
811 | Rhodecode.comments.createGeneralComment('general', "$placeholder", commentId) | |
805 | } |
|
812 | } | |
806 |
|
813 | |||
807 | return false; |
|
814 | return false; | |
808 | }; |
|
815 | }; | |
809 |
|
816 | |||
810 | this.submitResolution = function(commentId){ |
|
817 | this.submitResolution = function(commentId){ | |
811 | var form = $('#resolve_comment_{0}'.format(commentId)).closest('form'); |
|
818 | var form = $('#resolve_comment_{0}'.format(commentId)).closest('form'); | |
812 | var commentForm = form.get(0).CommentForm; |
|
819 | var commentForm = form.get(0).CommentForm; | |
813 |
|
820 | |||
814 | var cm = commentForm.getCmInstance(); |
|
821 | var cm = commentForm.getCmInstance(); | |
815 | var renderer = templateContext.visual.default_renderer; |
|
822 | var renderer = templateContext.visual.default_renderer; | |
816 | if (renderer == 'rst'){ |
|
823 | if (renderer == 'rst'){ | |
817 | var commentUrl = '`#{0} <{1}#comment-{0}>`_'.format(commentId, commentForm.selfUrl); |
|
824 | var commentUrl = '`#{0} <{1}#comment-{0}>`_'.format(commentId, commentForm.selfUrl); | |
818 | } else if (renderer == 'markdown') { |
|
825 | } else if (renderer == 'markdown') { | |
819 | var commentUrl = '[#{0}]({1}#comment-{0})'.format(commentId, commentForm.selfUrl); |
|
826 | var commentUrl = '[#{0}]({1}#comment-{0})'.format(commentId, commentForm.selfUrl); | |
820 | } else { |
|
827 | } else { | |
821 | var commentUrl = '{1}#comment-{0}'.format(commentId, commentForm.selfUrl); |
|
828 | var commentUrl = '{1}#comment-{0}'.format(commentId, commentForm.selfUrl); | |
822 | } |
|
829 | } | |
823 |
|
830 | |||
824 | cm.setValue(_gettext('TODO from comment {0} was fixed.').format(commentUrl)); |
|
831 | cm.setValue(_gettext('TODO from comment {0} was fixed.').format(commentUrl)); | |
825 | form.submit(); |
|
832 | form.submit(); | |
826 | return false; |
|
833 | return false; | |
827 | }; |
|
834 | }; | |
828 |
|
835 | |||
829 | }; |
|
836 | }; |
@@ -1,230 +1,235 b'' | |||||
1 | /** |
|
1 | /** | |
2 | @license @nocompile |
|
2 | @license @nocompile | |
3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. |
|
3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. | |
4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
|
4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt | |
5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
|
5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt | |
6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
|
6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt | |
7 | Code distributed by Google as part of the polymer project is also |
|
7 | Code distributed by Google as part of the polymer project is also | |
8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
|
8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt | |
9 | */ |
|
9 | */ | |
10 | (function(){/* |
|
10 | (function(){/* | |
11 |
|
11 | |||
12 | Copyright (c) 2016 The Polymer Project Authors. All rights reserved. |
|
12 | Copyright (c) 2016 The Polymer Project Authors. All rights reserved. | |
13 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
|
13 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt | |
14 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
|
14 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt | |
15 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
|
15 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt | |
16 | Code distributed by Google as part of the polymer project is also |
|
16 | Code distributed by Google as part of the polymer project is also | |
17 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
|
17 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt | |
18 | */ |
|
18 | */ | |
19 |
'use strict';var |
|
19 | 'use strict';var n,ca="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},q="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this;function da(){da=function(){};q.Symbol||(q.Symbol=ea)}var ea=function(){var a=0;return function(b){return"jscomp_symbol_"+(b||"")+a++}}(); | |
20 |
function |
|
20 | function fa(){da();var a=q.Symbol.iterator;a||(a=q.Symbol.iterator=q.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&ca(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ha(this)}});fa=function(){}}function ha(a){var b=0;return ia(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ia(a){fa();a={next:a};a[q.Symbol.iterator]=function(){return this};return a}function ja(a){fa();var b=a[Symbol.iterator];return b?b.call(a):ha(a)} | |
21 |
function |
|
21 | function ka(a){for(var b,c=[];!(b=a.next()).done;)c.push(b.value);return c} | |
22 | (function(){if(!function(){var a=document.createEvent("Event");a.initEvent("foo",!0,!0);a.preventDefault();return a.defaultPrevented}()){var a=Event.prototype.preventDefault;Event.prototype.preventDefault=function(){this.cancelable&&(a.call(this),Object.defineProperty(this,"defaultPrevented",{get:function(){return!0},configurable:!0}))}}var b=/Trident/.test(navigator.userAgent);if(!window.CustomEvent||b&&"function"!==typeof window.CustomEvent)window.CustomEvent=function(a,b){b=b||{};var c=document.createEvent("CustomEvent"); |
|
22 | (function(){if(!function(){var a=document.createEvent("Event");a.initEvent("foo",!0,!0);a.preventDefault();return a.defaultPrevented}()){var a=Event.prototype.preventDefault;Event.prototype.preventDefault=function(){this.cancelable&&(a.call(this),Object.defineProperty(this,"defaultPrevented",{get:function(){return!0},configurable:!0}))}}var b=/Trident/.test(navigator.userAgent);if(!window.CustomEvent||b&&"function"!==typeof window.CustomEvent)window.CustomEvent=function(a,b){b=b||{};var c=document.createEvent("CustomEvent"); | |
23 | c.initCustomEvent(a,!!b.bubbles,!!b.cancelable,b.detail);return c},window.CustomEvent.prototype=window.Event.prototype;if(!window.Event||b&&"function"!==typeof window.Event){var c=window.Event;window.Event=function(a,b){b=b||{};var c=document.createEvent("Event");c.initEvent(a,!!b.bubbles,!!b.cancelable);return c};if(c)for(var d in c)window.Event[d]=c[d];window.Event.prototype=c.prototype}if(!window.MouseEvent||b&&"function"!==typeof window.MouseEvent){b=window.MouseEvent;window.MouseEvent=function(a, |
|
23 | c.initCustomEvent(a,!!b.bubbles,!!b.cancelable,b.detail);return c},window.CustomEvent.prototype=window.Event.prototype;if(!window.Event||b&&"function"!==typeof window.Event){var c=window.Event;window.Event=function(a,b){b=b||{};var c=document.createEvent("Event");c.initEvent(a,!!b.bubbles,!!b.cancelable);return c};if(c)for(var d in c)window.Event[d]=c[d];window.Event.prototype=c.prototype}if(!window.MouseEvent||b&&"function"!==typeof window.MouseEvent){b=window.MouseEvent;window.MouseEvent=function(a, | |
24 | b){b=b||{};var c=document.createEvent("MouseEvent");c.initMouseEvent(a,!!b.bubbles,!!b.cancelable,b.view||window,b.detail,b.screenX,b.screenY,b.clientX,b.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,b.button,b.relatedTarget);return c};if(b)for(d in b)window.MouseEvent[d]=b[d];window.MouseEvent.prototype=b.prototype}Array.from||(Array.from=function(a){return[].slice.call(a)});Object.assign||(Object.assign=function(a,b){for(var c=[].slice.call(arguments,1),d=0,e;d<c.length;d++)if(e=c[d])for(var f= |
|
24 | b){b=b||{};var c=document.createEvent("MouseEvent");c.initMouseEvent(a,!!b.bubbles,!!b.cancelable,b.view||window,b.detail,b.screenX,b.screenY,b.clientX,b.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,b.button,b.relatedTarget);return c};if(b)for(d in b)window.MouseEvent[d]=b[d];window.MouseEvent.prototype=b.prototype}Array.from||(Array.from=function(a){return[].slice.call(a)});Object.assign||(Object.assign=function(a,b){for(var c=[].slice.call(arguments,1),d=0,e;d<c.length;d++)if(e=c[d])for(var f= | |
25 |
a,m=e, |
|
25 | a,m=e,p=Object.getOwnPropertyNames(m),x=0;x<p.length;x++)e=p[x],f[e]=m[e];return a})})(window.WebComponents);(function(){function a(){}function b(a,b){if(!a.childNodes.length)return[];switch(a.nodeType){case Node.DOCUMENT_NODE:return va.call(a,b);case Node.DOCUMENT_FRAGMENT_NODE:return jb.call(a,b);default:return Y.call(a,b)}}var c="undefined"===typeof HTMLTemplateElement,d=!(document.createDocumentFragment().cloneNode()instanceof DocumentFragment),e=!1;/Trident/.test(navigator.userAgent)&&function(){function a(a,b){if(a instanceof DocumentFragment)for(var d;d=a.firstChild;)c.call(this,d,b);else c.call(this, | |
26 | a,b);return a}e=!0;var b=Node.prototype.cloneNode;Node.prototype.cloneNode=function(a){a=b.call(this,a);this instanceof DocumentFragment&&(a.__proto__=DocumentFragment.prototype);return a};DocumentFragment.prototype.querySelectorAll=HTMLElement.prototype.querySelectorAll;DocumentFragment.prototype.querySelector=HTMLElement.prototype.querySelector;Object.defineProperties(DocumentFragment.prototype,{nodeType:{get:function(){return Node.DOCUMENT_FRAGMENT_NODE},configurable:!0},localName:{get:function(){}, |
|
26 | a,b);return a}e=!0;var b=Node.prototype.cloneNode;Node.prototype.cloneNode=function(a){a=b.call(this,a);this instanceof DocumentFragment&&(a.__proto__=DocumentFragment.prototype);return a};DocumentFragment.prototype.querySelectorAll=HTMLElement.prototype.querySelectorAll;DocumentFragment.prototype.querySelector=HTMLElement.prototype.querySelector;Object.defineProperties(DocumentFragment.prototype,{nodeType:{get:function(){return Node.DOCUMENT_FRAGMENT_NODE},configurable:!0},localName:{get:function(){}, | |
27 | configurable:!0},nodeName:{get:function(){return"#document-fragment"},configurable:!0}});var c=Node.prototype.insertBefore;Node.prototype.insertBefore=a;var d=Node.prototype.appendChild;Node.prototype.appendChild=function(b){b instanceof DocumentFragment?a.call(this,b,null):d.call(this,b);return b};var f=Node.prototype.removeChild,h=Node.prototype.replaceChild;Node.prototype.replaceChild=function(b,c){b instanceof DocumentFragment?(a.call(this,b,c),f.call(this,c)):h.call(this,b,c);return c};Document.prototype.createDocumentFragment= |
|
27 | configurable:!0},nodeName:{get:function(){return"#document-fragment"},configurable:!0}});var c=Node.prototype.insertBefore;Node.prototype.insertBefore=a;var d=Node.prototype.appendChild;Node.prototype.appendChild=function(b){b instanceof DocumentFragment?a.call(this,b,null):d.call(this,b);return b};var f=Node.prototype.removeChild,h=Node.prototype.replaceChild;Node.prototype.replaceChild=function(b,c){b instanceof DocumentFragment?(a.call(this,b,c),f.call(this,c)):h.call(this,b,c);return c};Document.prototype.createDocumentFragment= | |
28 |
function(){var a=this.createElement("df");a.__proto__=DocumentFragment.prototype;return a};var g=Document.prototype.importNode;Document.prototype.importNode=function(a,b){b=g.call(this,a,b||!1);a instanceof DocumentFragment&&(b.__proto__=DocumentFragment.prototype);return b}}();var f=Node.prototype.cloneNode,h=Document.prototype.createElement,g=Document.prototype.importNode,k=Node.prototype.removeChild,l=Node.prototype.appendChild,m=Node.prototype.replaceChild, |
|
28 | function(){var a=this.createElement("df");a.__proto__=DocumentFragment.prototype;return a};var g=Document.prototype.importNode;Document.prototype.importNode=function(a,b){b=g.call(this,a,b||!1);a instanceof DocumentFragment&&(b.__proto__=DocumentFragment.prototype);return b}}();var f=Node.prototype.cloneNode,h=Document.prototype.createElement,g=Document.prototype.importNode,k=Node.prototype.removeChild,l=Node.prototype.appendChild,m=Node.prototype.replaceChild,p=DOMParser.prototype.parseFromString, | |
29 |
|
|
29 | x=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,"innerHTML")||{get:function(){return this.innerHTML},set:function(a){this.innerHTML=a}},N=Object.getOwnPropertyDescriptor(window.Node.prototype,"childNodes")||{get:function(){return this.childNodes}},Y=Element.prototype.querySelectorAll,va=Document.prototype.querySelectorAll,jb=DocumentFragment.prototype.querySelectorAll,kb=function(){if(!c){var a=document.createElement("template"),b=document.createElement("template");b.content.appendChild(document.createElement("div")); | |
30 |
0===a.content.firstChild.content.childNodes.length||d}}();if(c){var |
|
30 | a.content.appendChild(b);a=a.cloneNode(!0);return 0===a.content.childNodes.length||0===a.content.firstChild.content.childNodes.length||d}}();if(c){var T=document.implementation.createHTMLDocument("template"),C=!0,Z=document.createElement("style");Z.textContent="template{display:none;}";var oa=document.head;oa.insertBefore(Z,oa.firstElementChild);a.prototype=Object.create(HTMLElement.prototype);var wa=!document.createElement("div").hasOwnProperty("innerHTML");a.H=function(b){if(!b.content&&b.namespaceURI=== | |
31 |
for(var c;c=b.firstChild;)l.call(b.content,c);if( |
|
31 | document.documentElement.namespaceURI){b.content=T.createDocumentFragment();for(var c;c=b.firstChild;)l.call(b.content,c);if(wa)b.__proto__=a.prototype;else if(b.cloneNode=function(b){return a.a(this,b)},C)try{Q(b),aa(b)}catch(rh){C=!1}a.C(b.content)}};var ba={option:["select"],thead:["table"],col:["colgroup","table"],tr:["tbody","table"],th:["tr","tbody","table"],td:["tr","tbody","table"]},Q=function(b){Object.defineProperty(b,"innerHTML",{get:function(){return lb(this)},set:function(b){var c=ba[(/<([a-z][^/\0>\x20\t\r\n\f]+)/i.exec(b)|| | |
32 |
0;d<c.length;d++)b="<"+c[d]+">"+b+"</"+c[d]+">"; |
|
32 | ["",""])[1].toLowerCase()];if(c)for(var d=0;d<c.length;d++)b="<"+c[d]+">"+b+"</"+c[d]+">";T.body.innerHTML=b;for(a.C(T);this.content.firstChild;)k.call(this.content,this.content.firstChild);b=T.body;if(c)for(d=0;d<c.length;d++)b=b.lastChild;for(;b.firstChild;)l.call(this.content,b.firstChild)},configurable:!0})},aa=function(a){Object.defineProperty(a,"outerHTML",{get:function(){return"<template>"+this.innerHTML+"</template>"},set:function(a){if(this.parentNode){T.body.innerHTML=a;for(a=this.ownerDocument.createDocumentFragment();T.body.firstChild;)l.call(a, | |
33 |
|
|
33 | T.body.firstChild);m.call(this.parentNode,a,this)}else throw Error("Failed to set the 'outerHTML' property on 'Element': This element has no parent node.");},configurable:!0})};Q(a.prototype);aa(a.prototype);a.C=function(c){c=b(c,"template");for(var d=0,e=c.length,f;d<e&&(f=c[d]);d++)a.H(f)};document.addEventListener("DOMContentLoaded",function(){a.C(document)});Document.prototype.createElement=function(){var b=h.apply(this,arguments);"template"===b.localName&&a.H(b);return b};DOMParser.prototype.parseFromString= | |
34 |
function(){var b= |
|
34 | function(){var b=p.apply(this,arguments);a.C(b);return b};Object.defineProperty(HTMLElement.prototype,"innerHTML",{get:function(){return lb(this)},set:function(b){x.set.call(this,b);a.C(this)},configurable:!0,enumerable:!0});var bf=/[&\u00A0"]/g,yc=/[&\u00A0<>]/g,zc=function(a){switch(a){case "&":return"&";case "<":return"<";case ">":return">";case '"':return""";case "\u00a0":return" "}};Z=function(a){for(var b={},c=0;c<a.length;c++)b[a[c]]=!0;return b};var cf=Z("area base br col command embed hr img input keygen link meta param source track wbr".split(" ")), | |
35 |
|
|
35 | df=Z("style script xmp iframe noembed noframes plaintext noscript".split(" ")),lb=function(a,b){"template"===a.localName&&(a=a.content);for(var c="",d=b?b(a):N.get.call(a),e=0,f=d.length,h;e<f&&(h=d[e]);e++){a:{var g=h;var k=a;var l=b;switch(g.nodeType){case Node.ELEMENT_NODE:for(var Q=g.localName,m="<"+Q,aa=g.attributes,p=0;k=aa[p];p++)m+=" "+k.name+'="'+k.value.replace(bf,zc)+'"';m+=">";g=cf[Q]?m:m+lb(g,l)+"</"+Q+">";break a;case Node.TEXT_NODE:g=g.data;g=k&&df[k.localName]?g:g.replace(yc,zc);break a; | |
36 |
|
|
36 | case Node.COMMENT_NODE:g="\x3c!--"+g.data+"--\x3e";break a;default:throw window.console.error(g),Error("not implemented");}}c+=g}return c}}if(c||kb){a.a=function(a,b){var c=f.call(a,!1);this.H&&this.H(c);b&&(l.call(c.content,f.call(a.content,!0)),mb(c.content,a.content));return c};var mb=function(c,d){if(d.querySelectorAll&&(d=b(d,"template"),0!==d.length)){c=b(c,"template");for(var e=0,f=c.length,h,g;e<f;e++)g=d[e],h=c[e],a&&a.H&&a.H(g),m.call(h.parentNode,ef.call(g,!0),h)}},ef=Node.prototype.cloneNode= | |
37 |
function(b){if(!e&&d&&this instanceof DocumentFragment)if(b)var c= |
|
37 | function(b){if(!e&&d&&this instanceof DocumentFragment)if(b)var c=ff.call(this.ownerDocument,this,!0);else return this.ownerDocument.createDocumentFragment();else this.nodeType===Node.ELEMENT_NODE&&"template"===this.localName&&this.namespaceURI==document.documentElement.namespaceURI?c=a.a(this,b):c=f.call(this,b);b&&mb(c,this);return c},ff=Document.prototype.importNode=function(c,d){d=d||!1;if("template"===c.localName)return a.a(c,d);var e=g.call(this,c,d);if(d){mb(e,c);c=b(e,'script:not([type]),script[type="application/javascript"],script[type="text/javascript"]'); | |
38 | for(var f,k=0;k<c.length;k++){f=c[k];d=h.call(document,"script");d.textContent=f.textContent;for(var l=f.attributes,T=0,da;T<l.length;T++)da=l[T],d.setAttribute(da.name,da.value);m.call(f.parentNode,d,f)}}return e}}c&&(window.HTMLTemplateElement=a)})();var pa;Array.isArray?pa=Array.isArray:pa=function(a){return"[object Array]"===Object.prototype.toString.call(a)};var qa=pa;var ra=0,sa,ta="undefined"!==typeof window?window:void 0,ua=ta||{},va=ua.MutationObserver||ua.WebKitMutationObserver,wa="undefined"!==typeof Uint8ClampedArray&&"undefined"!==typeof importScripts&&"undefined"!==typeof MessageChannel;function xa(){return"undefined"!==typeof sa?function(){sa(Aa)}:Ba()}function Ca(){var a=0,b=new va(Aa),c=document.createTextNode("");b.observe(c,{characterData:!0});return function(){c.data=a=++a%2}} |
|
38 | for(var f,k=0;k<c.length;k++){f=c[k];d=h.call(document,"script");d.textContent=f.textContent;for(var l=f.attributes,Q=0,aa;Q<l.length;Q++)aa=l[Q],d.setAttribute(aa.name,aa.value);m.call(f.parentNode,d,f)}}return e}}c&&(window.HTMLTemplateElement=a)})();var la=setTimeout;function ma(){}function na(a,b){return function(){a.apply(b,arguments)}}function r(a){if(!(this instanceof r))throw new TypeError("Promises must be constructed via new");if("function"!==typeof a)throw new TypeError("not a function");this.v=0;this.qa=!1;this.j=void 0;this.K=[];pa(a,this)} | |
39 | function Da(){var a=new MessageChannel;a.port1.onmessage=Aa;return function(){return a.port2.postMessage(0)}}function Ba(){var a=setTimeout;return function(){return a(Aa,1)}}var Ea=Array(1E3);function Aa(){for(var a=0;a<ra;a+=2)(0,Ea[a])(Ea[a+1]),Ea[a]=void 0,Ea[a+1]=void 0;ra=0}var Fa,Ga; |
|
39 | function qa(a,b){for(;3===a.v;)a=a.j;0===a.v?a.K.push(b):(a.qa=!0,ra(function(){var c=1===a.v?b.Ua:b.Va;if(null===c)(1===a.v?sa:ta)(b.ja,a.j);else{try{var d=c(a.j)}catch(e){ta(b.ja,e);return}sa(b.ja,d)}}))}function sa(a,b){try{if(b===a)throw new TypeError("A promise cannot be resolved with itself.");if(b&&("object"===typeof b||"function"===typeof b)){var c=b.then;if(b instanceof r){a.v=3;a.j=b;ua(a);return}if("function"===typeof c){pa(na(c,b),a);return}}a.v=1;a.j=b;ua(a)}catch(d){ta(a,d)}} | |
40 | if("undefined"===typeof self&&"undefined"!==typeof process&&"[object process]"==={}.toString.call(process))Ga=function(){return process.vb(Aa)};else{var Ha;if(va)Ha=Ca();else{var Ia;if(wa)Ia=Da();else{var Ja;if(void 0===ta&&"function"===typeof require)try{var Ka=require("vertx");sa=Ka.xb||Ka.wb;Ja=xa()}catch(a){Ja=Ba()}else Ja=Ba();Ia=Ja}Ha=Ia}Ga=Ha}Fa=Ga;function La(a,b){Ea[ra]=a;Ea[ra+1]=b;ra+=2;2===ra&&Fa()};function Ma(a,b){var c=this,d=new this.constructor(Na);void 0===d[Oa]&&Pa(d);var e=c.h;if(e){var f=arguments[e-1];La(function(){return Qa(e,d,f,c.f)})}else Ra(c,d,a,b);return d};function Sa(a){if(a&&"object"===typeof a&&a.constructor===this)return a;var b=new this(Na);Ta(b,a);return b};var Oa=Math.random().toString(36).substring(16);function Na(){}var Va=new Ua;function Wa(a){try{return a.then}catch(b){return Va.error=b,Va}}function Xa(a,b,c,d){try{a.call(b,c,d)}catch(e){return e}}function Ya(a,b,c){La(function(a){var d=!1,f=Xa(c,b,function(c){d||(d=!0,b!==c?Ta(a,c):q(a,c))},function(b){d||(d=!0,r(a,b))});!d&&f&&(d=!0,r(a,f))},a)}function Za(a,b){1===b.h?q(a,b.f):2===b.h?r(a,b.f):Ra(b,void 0,function(b){return Ta(a,b)},function(b){return r(a,b)})} |
|
40 | function ta(a,b){a.v=2;a.j=b;ua(a)}function ua(a){2===a.v&&0===a.K.length&&ra(function(){a.qa||"undefined"!==typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",a.j)});for(var b=0,c=a.K.length;b<c;b++)qa(a,a.K[b]);a.K=null}function xa(a,b,c){this.Ua="function"===typeof a?a:null;this.Va="function"===typeof b?b:null;this.ja=c}function pa(a,b){var c=!1;try{a(function(a){c||(c=!0,sa(b,a))},function(a){c||(c=!0,ta(b,a))})}catch(d){c||(c=!0,ta(b,d))}} | |
41 | function $a(a,b,c){b.constructor===a.constructor&&c===Ma&&b.constructor.resolve===Sa?Za(a,b):c===Va?(r(a,Va.error),Va.error=null):void 0===c?q(a,b):"function"===typeof c?Ya(a,b,c):q(a,b)}function Ta(a,b){if(a===b)r(a,new TypeError("You cannot resolve a promise with itself"));else{var c=typeof b;null===b||"object"!==c&&"function"!==c?q(a,b):$a(a,b,Wa(b))}}function ab(a){a.va&&a.va(a.f);bb(a)}function q(a,b){void 0===a.h&&(a.f=b,a.h=1,0!==a.M.length&&La(bb,a))} |
|
41 | r.prototype["catch"]=function(a){return this.then(null,a)};r.prototype.then=function(a,b){var c=new this.constructor(ma);qa(this,new xa(a,b,c));return c};r.prototype["finally"]=function(a){var b=this.constructor;return this.then(function(c){return b.resolve(a()).then(function(){return c})},function(c){return b.resolve(a()).then(function(){return b.reject(c)})})}; | |
42 | function r(a,b){void 0===a.h&&(a.h=2,a.f=b,La(ab,a))}function Ra(a,b,c,d){var e=a.M,f=e.length;a.va=null;e[f]=b;e[f+1]=c;e[f+2]=d;0===f&&a.h&&La(bb,a)}function bb(a){var b=a.M,c=a.h;if(0!==b.length){for(var d,e,f=a.f,h=0;h<b.length;h+=3)d=b[h],e=b[h+c],d?Qa(c,d,e,f):e(f);a.M.length=0}}function Ua(){this.error=null}var cb=new Ua; |
|
42 | function ya(a){return new r(function(b,c){function d(a,h){try{if(h&&("object"===typeof h||"function"===typeof h)){var g=h.then;if("function"===typeof g){g.call(h,function(b){d(a,b)},c);return}}e[a]=h;0===--f&&b(e)}catch(m){c(m)}}if(!a||"undefined"===typeof a.length)throw new TypeError("Promise.all accepts an array");var e=Array.prototype.slice.call(a);if(0===e.length)return b([]);for(var f=e.length,h=0;h<e.length;h++)d(h,e[h])})} | |
43 | function Qa(a,b,c,d){var e="function"===typeof c;if(e){try{var f=c(d)}catch(l){cb.error=l,f=cb}if(f===cb){var h=!0;var g=f.error;f.error=null}else var k=!0;if(b===f){r(b,new TypeError("A promises callback cannot return that same promise."));return}}else f=d,k=!0;void 0===b.h&&(e&&k?Ta(b,f):h?r(b,g):1===a?q(b,f):2===a&&r(b,f))}function db(a,b){try{b(function(b){Ta(a,b)},function(b){r(a,b)})}catch(c){r(a,c)}}var eb=0;function Pa(a){a[Oa]=eb++;a.h=void 0;a.f=void 0;a.M=[]};function fb(a,b){this.Ka=a;this.F=new a(Na);this.F[Oa]||Pa(this.F);if(qa(b))if(this.V=this.length=b.length,this.f=Array(this.length),0===this.length)q(this.F,this.f);else{this.length=this.length||0;for(a=0;void 0===this.h&&a<b.length;a++)gb(this,b[a],a);0===this.V&&q(this.F,this.f)}else r(this.F,Error("Array Methods must be provided an Array"))} |
|
43 | function za(a){return a&&"object"===typeof a&&a.constructor===r?a:new r(function(b){b(a)})}function Aa(a){return new r(function(b,c){c(a)})}function Ba(a){return new r(function(b,c){for(var d=0,e=a.length;d<e;d++)a[d].then(b,c)})}var ra="function"===typeof setImmediate&&function(a){setImmediate(a)}||function(a){la(a,0)};/* | |
44 | function gb(a,b,c){var d=a.Ka,e=d.resolve;e===Sa?(e=Wa(b),e===Ma&&void 0!==b.h?hb(a,b.h,c,b.f):"function"!==typeof e?(a.V--,a.f[c]=b):d===u?(d=new d(Na),$a(d,b,e),ib(a,d,c)):ib(a,new d(function(a){return a(b)}),c)):ib(a,e(b),c)}function hb(a,b,c,d){var e=a.F;void 0===e.h&&(a.V--,2===b?r(e,d):a.f[c]=d);0===a.V&&q(e,a.f)}function ib(a,b,c){Ra(b,void 0,function(b){return hb(a,1,c,b)},function(b){return hb(a,2,c,b)})};function jb(a){return(new fb(this,a)).F};function kb(a){var b=this;return qa(a)?new b(function(c,d){for(var e=a.length,f=0;f<e;f++)b.resolve(a[f]).then(c,d)}):new b(function(a,b){return b(new TypeError("You must pass an array to race."))})};function lb(a){var b=new this(Na);r(b,a);return b};function u(a){this[Oa]=eb++;this.f=this.h=void 0;this.M=[];if(Na!==a){if("function"!==typeof a)throw new TypeError("You must pass a resolver function as the first argument to the promise constructor");if(this instanceof u)db(this,a);else throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");}}u.prototype={constructor:u,then:Ma,a:function(a){return this.then(null,a)}};/* |
|
|||
45 |
|
44 | |||
46 | Copyright (c) 2017 The Polymer Project Authors. All rights reserved. |
|
45 | Copyright (c) 2017 The Polymer Project Authors. All rights reserved. | |
47 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
|
46 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt | |
48 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
|
47 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt | |
49 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
|
48 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt | |
50 | Code distributed by Google as part of the polymer project is also |
|
49 | Code distributed by Google as part of the polymer project is also | |
51 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
|
50 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt | |
52 | */ |
|
51 | */ | |
53 |
window.Promise |
|
52 | if(!window.Promise){window.Promise=r;r.prototype.then=r.prototype.then;r.all=ya;r.race=Ba;r.resolve=za;r.reject=Aa;var Ca=document.createTextNode(""),Da=[];(new MutationObserver(function(){for(var a=Da.length,b=0;b<a;b++)Da[b]();Da.splice(0,a)})).observe(Ca,{characterData:!0});ra=function(a){Da.push(a);Ca.textContent=0<Ca.textContent.length?"":"a"}};(function(a){function b(a,b){if("function"===typeof window.CustomEvent)return new CustomEvent(a,b);var c=document.createEvent("CustomEvent");c.initCustomEvent(a,!!b.bubbles,!!b.cancelable,b.detail);return c}function c(a){if(N)return a.ownerDocument!==document?a.ownerDocument:null;var b=a.__importDoc;if(!b&&a.parentNode){b=a.parentNode;if("function"===typeof b.closest)b=b.closest("link[rel=import]");else for(;!g(b)&&(b=b.parentNode););a.__importDoc=b}return b}function d(a){var b=m(document,"link[rel=import]:not([import-dependency])"), | |
54 |
c=b.length;c? |
|
53 | c=b.length;c?p(b,function(b){return h(b,function(){0===--c&&a()})}):a()}function e(a){function b(){"loading"!==document.readyState&&document.body&&(document.removeEventListener("readystatechange",b),a())}document.addEventListener("readystatechange",b);b()}function f(a){e(function(){return d(function(){return a&&a()})})}function h(a,b){if(a.__loaded)b&&b();else if("script"===a.localName&&!a.src||"style"===a.localName&&!a.firstChild)a.__loaded=!0,b&&b();else{var c=function(d){a.removeEventListener(d.type, | |
55 |
c);a.__loaded=!0;b&&b()};a.addEventListener("load",c);oa&&"style"===a.localName||a.addEventListener("error",c)}}function g(a){return a.nodeType===Node.ELEMENT_NODE&&"link"===a.localName&&"import"===a.rel}function k(){var a=this;this.a={};this.b=0;this.c=new MutationObserver(function(b){return a. |
|
54 | c);a.__loaded=!0;b&&b()};a.addEventListener("load",c);oa&&"style"===a.localName||a.addEventListener("error",c)}}function g(a){return a.nodeType===Node.ELEMENT_NODE&&"link"===a.localName&&"import"===a.rel}function k(){var a=this;this.a={};this.b=0;this.c=new MutationObserver(function(b){return a.Qa(b)});this.c.observe(document.head,{childList:!0,subtree:!0});this.loadImports(document)}function l(a){p(m(a,"template"),function(a){p(m(a.content,'script:not([type]),script[type="application/javascript"],script[type="text/javascript"],script[type="module"]'), | |
56 |
function(a){var b=document.createElement("script"); |
|
55 | function(a){var b=document.createElement("script");p(a.attributes,function(a){return b.setAttribute(a.name,a.value)});b.textContent=a.textContent;a.parentNode.replaceChild(b,a)});l(a.content)})}function m(a,b){return a.childNodes.length?a.querySelectorAll(b):Y}function p(a,b,c){var d=a?a.length:0,e=c?-1:1;for(c=c?d-1:0;c<d&&0<=c;c+=e)b(a[c],c)}var x=document.createElement("link"),N="import"in x,Y=x.querySelectorAll("*"),va=null;!1==="currentScript"in document&&Object.defineProperty(document,"currentScript", | |
57 |
{get:function(){return |
|
56 | {get:function(){return va||("complete"!==document.readyState?document.scripts[document.scripts.length-1]:null)},configurable:!0});var jb=/(url\()([^)]*)(\))/g,kb=/(@import[\s]+(?!url\())([^;]*)(;)/g,T=/(<link[^>]*)(rel=['|"]?stylesheet['|"]?[^>]*>)/g,C={La:function(a,b){a.href&&a.setAttribute("href",C.Z(a.getAttribute("href"),b));a.src&&a.setAttribute("src",C.Z(a.getAttribute("src"),b));if("style"===a.localName){var c=C.ua(a.textContent,b,jb);a.textContent=C.ua(c,b,kb)}},ua:function(a,b,c){return a.replace(c, | |
58 |
function(a,c,d,e){a=d.replace(/["']/g,"");b&&(a= |
|
57 | function(a,c,d,e){a=d.replace(/["']/g,"");b&&(a=C.Z(a,b));return c+"'"+a+"'"+e})},Z:function(a,b){if(void 0===C.fa){C.fa=!1;try{var c=new URL("b","http://a");c.pathname="c%20d";C.fa="http://a/c%20d"===c.href}catch(yc){}}if(C.fa)return(new URL(a,b)).href;c=C.Ea;c||(c=document.implementation.createHTMLDocument("temp"),C.Ea=c,c.ma=c.createElement("base"),c.head.appendChild(c.ma),c.la=c.createElement("a"));c.ma.href=b;c.la.href=a;return c.la.href||a}},Z={async:!0,load:function(a,b,c){if(a)if(a.match(/^data:/)){a= | |
59 |
a.split(",");var d=a[1];d=-1<a[0].indexOf(";base64")?atob(d):decodeURIComponent(d);b(d)}else{var e=new XMLHttpRequest;e.open("GET",a, |
|
58 | a.split(",");var d=a[1];d=-1<a[0].indexOf(";base64")?atob(d):decodeURIComponent(d);b(d)}else{var e=new XMLHttpRequest;e.open("GET",a,Z.async);e.onload=function(){var a=e.responseURL||e.getResponseHeader("Location");a&&0===a.indexOf("/")&&(a=(location.origin||location.protocol+"//"+location.host)+a);var d=e.response||e.responseText;304===e.status||0===e.status||200<=e.status&&300>e.status?b(d,a):c(d)};e.send()}else c("error: href must be specified")}},oa=/Trident/.test(navigator.userAgent)||/Edge\/\d./i.test(navigator.userAgent); | |
60 |
k.prototype.loadImports=function(a){var b=this;a=m(a,"link[rel=import]"); |
|
59 | k.prototype.loadImports=function(a){var b=this;a=m(a,"link[rel=import]");p(a,function(a){return b.h(a)})};k.prototype.h=function(a){var b=this,c=a.href;if(void 0!==this.a[c]){var d=this.a[c];d&&d.__loaded&&(a.__import=d,this.f(a))}else this.b++,this.a[c]="pending",Z.load(c,function(a,d){a=b.Ra(a,d||c);b.a[c]=a;b.b--;b.loadImports(a);b.o()},function(){b.a[c]=null;b.b--;b.o()})};k.prototype.Ra=function(a,b){if(!a)return document.createDocumentFragment();oa&&(a=a.replace(T,function(a,b,c){return-1=== | |
61 |
a.indexOf("type=")?b+" type=import-disable "+c:a}));var c=document.createElement("template");c.innerHTML=a;if(c.content)a=c.content,l(a);else for(a=document.createDocumentFragment();c.firstChild;)a.appendChild(c.firstChild);if(c=a.querySelector("base"))b= |
|
60 | a.indexOf("type=")?b+" type=import-disable "+c:a}));var c=document.createElement("template");c.innerHTML=a;if(c.content)a=c.content,l(a);else for(a=document.createDocumentFragment();c.firstChild;)a.appendChild(c.firstChild);if(c=a.querySelector("base"))b=C.Z(c.getAttribute("href"),b),c.removeAttribute("href");c=m(a,'link[rel=import],link[rel=stylesheet][href][type=import-disable],style:not([type]),link[rel=stylesheet][href]:not([type]),script:not([type]),script[type="application/javascript"],script[type="text/javascript"],script[type="module"]'); | |
62 |
var d=0; |
|
61 | var d=0;p(c,function(a){h(a);C.La(a,b);a.setAttribute("import-dependency","");if("script"===a.localName&&!a.src&&a.textContent){if("module"===a.type)throw Error("Inline module scripts are not supported in HTML Imports.");a.setAttribute("src","data:text/javascript;charset=utf-8,"+encodeURIComponent(a.textContent+("\n//# sourceURL="+b+(d?"-"+d:"")+".js\n")));a.textContent="";d++}});return a};k.prototype.o=function(){var a=this;if(!this.b){this.c.disconnect();this.flatten(document);var b=!1,c=!1,d=function(){c&& | |
63 |
b&&(a.loadImports(document),a.b||(a.c.observe(document.head,{childList:!0,subtree:!0}),a.Ta( |
|
62 | b&&(a.loadImports(document),a.b||(a.c.observe(document.head,{childList:!0,subtree:!0}),a.ha()))};this.Ta(function(){c=!0;d()});this.Sa(function(){b=!0;d()})}};k.prototype.flatten=function(a){var b=this;a=m(a,"link[rel=import]");p(a,function(a){var c=b.a[a.href];(a.__import=c)&&c.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(b.a[a.href]=a,a.readyState="loading",a.__import=a,b.flatten(c),a.appendChild(c))})};k.prototype.Sa=function(a){function b(e){if(e<d){var f=c[e],g=document.createElement("script");f.removeAttribute("import-dependency"); | |
64 |
|
|
63 | p(f.attributes,function(a){return g.setAttribute(a.name,a.value)});va=g;f.parentNode.replaceChild(g,f);h(g,function(){va=null;b(e+1)})}else a()}var c=m(document,"script[import-dependency]"),d=c.length;b(0)};k.prototype.Ta=function(a){var b=m(document,"style[import-dependency],link[rel=stylesheet][import-dependency]"),d=b.length;if(d){var e=oa&&!!document.querySelector("link[rel=stylesheet][href][type=import-disable]");p(b,function(b){h(b,function(){b.removeAttribute("import-dependency");0===--d&& | |
65 |
a()});if(e&&b.parentNode!==document.head){var f=document.createElement(b.localName);f.__appliedElement=b;f.setAttribute("type","import-placeholder");b.parentNode.insertBefore(f,b.nextSibling);for(f=c(b);f&&c(f);)f=c(f);f.parentNode!==document.head&&(f=null);document.head.insertBefore(b,f);b.removeAttribute("type")}})}else a()};k.prototype. |
|
64 | a()});if(e&&b.parentNode!==document.head){var f=document.createElement(b.localName);f.__appliedElement=b;f.setAttribute("type","import-placeholder");b.parentNode.insertBefore(f,b.nextSibling);for(f=c(b);f&&c(f);)f=c(f);f.parentNode!==document.head&&(f=null);document.head.insertBefore(b,f);b.removeAttribute("type")}})}else a()};k.prototype.ha=function(){var a=this,b=m(document,"link[rel=import]");p(b,function(b){return a.f(b)},!0)};k.prototype.f=function(a){a.__loaded||(a.__loaded=!0,a.import&&(a.import.readyState= | |
66 |
"complete"),a.dispatchEvent(b(a.import?"load":"error",{bubbles:!1,cancelable:!1,detail:void 0})))};k.prototype. |
|
65 | "complete"),a.dispatchEvent(b(a.import?"load":"error",{bubbles:!1,cancelable:!1,detail:void 0})))};k.prototype.Qa=function(a){var b=this;p(a,function(a){return p(a.addedNodes,function(a){a&&a.nodeType===Node.ELEMENT_NODE&&(g(a)?b.h(a):b.loadImports(a))})})};var wa=null;if(N)x=m(document,"link[rel=import]"),p(x,function(a){a.import&&"loading"===a.import.readyState||(a.__loaded=!0)}),x=function(a){a=a.target;g(a)&&(a.__loaded=!0)},document.addEventListener("load",x,!0),document.addEventListener("error", | |
67 |
|
|
66 | x,!0);else{var ba=Object.getOwnPropertyDescriptor(Node.prototype,"baseURI");Object.defineProperty((!ba||ba.configurable?Node:Element).prototype,"baseURI",{get:function(){var a=g(this)?this:c(this);return a?a.href:ba&&ba.get?ba.get.call(this):(document.querySelector("base")||window.location).href},configurable:!0,enumerable:!0});Object.defineProperty(HTMLLinkElement.prototype,"import",{get:function(){return this.__import||null},configurable:!0,enumerable:!0});e(function(){wa=new k})}f(function(){return document.dispatchEvent(b("HTMLImportsLoaded", | |
68 |
{cancelable:!0,bubbles:!0,detail:void 0}))});a.useNative= |
|
67 | {cancelable:!0,bubbles:!0,detail:void 0}))});a.useNative=N;a.whenReady=f;a.importForElement=c;a.loadImports=function(a){wa&&wa.loadImports(a)}})(window.HTMLImports=window.HTMLImports||{});/* | |
69 |
|
68 | |||
70 | Copyright (c) 2014 The Polymer Project Authors. All rights reserved. |
|
69 | Copyright (c) 2014 The Polymer Project Authors. All rights reserved. | |
71 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
|
70 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt | |
72 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
|
71 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt | |
73 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
|
72 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt | |
74 | Code distributed by Google as part of the polymer project is also |
|
73 | Code distributed by Google as part of the polymer project is also | |
75 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
|
74 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt | |
76 | */ |
|
75 | */ | |
77 |
window.WebComponents=window.WebComponents||{flags:{}};var |
|
76 | window.WebComponents=window.WebComponents||{flags:{}};var Ea=document.querySelector('script[src*="webcomponents-lite.js"]'),Fa=/wc-(.+)/,t={};if(!t.noOpts){location.search.slice(1).split("&").forEach(function(a){a=a.split("=");var b;a[0]&&(b=a[0].match(Fa))&&(t[b[1]]=a[1]||!0)});if(Ea)for(var Ga=0,Ha=void 0;Ha=Ea.attributes[Ga];Ga++)"src"!==Ha.name&&(t[Ha.name]=Ha.value||!0);if(t.log&&t.log.split){var Ia=t.log.split(",");t.log={};Ia.forEach(function(a){t.log[a]=!0})}else t.log={}} | |
78 |
window.WebComponents.flags= |
|
77 | window.WebComponents.flags=t;var Ja=t.shadydom;Ja&&(window.ShadyDOM=window.ShadyDOM||{},window.ShadyDOM.force=Ja);var Ka=t.register||t.ce;Ka&&window.customElements&&(window.customElements.forcePolyfill=Ka);/* | |
79 |
|
78 | |||
80 | Copyright (c) 2016 The Polymer Project Authors. All rights reserved. |
|
79 | Copyright (c) 2016 The Polymer Project Authors. All rights reserved. | |
81 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
|
80 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt | |
82 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
|
81 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt | |
83 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
|
82 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt | |
84 | Code distributed by Google as part of the polymer project is also |
|
83 | Code distributed by Google as part of the polymer project is also | |
85 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
|
84 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt | |
86 | */ |
|
85 | */ | |
87 |
function |
|
86 | function La(){this.ta=this.root=null;this.W=!1;this.D=this.R=this.ga=this.assignedSlot=this.assignedNodes=this.I=null;this.childNodes=this.nextSibling=this.previousSibling=this.lastChild=this.firstChild=this.parentNode=this.L=void 0;this.Aa=this.oa=!1;this.P={}}La.prototype.toJSON=function(){return{}};function u(a){a.da||(a.da=new La);return a.da}function v(a){return a&&a.da};var w=window.ShadyDOM||{};w.Na=!(!Element.prototype.attachShadow||!Node.prototype.getRootNode);var Ma=Object.getOwnPropertyDescriptor(Node.prototype,"firstChild");w.w=!!(Ma&&Ma.configurable&&Ma.get);w.ia=w.force||!w.Na;var Na=navigator.userAgent.match("Trident"),Oa=navigator.userAgent.match("Edge");void 0===w.wa&&(w.wa=w.w&&(Na||Oa));function Pa(a){return(a=v(a))&&void 0!==a.firstChild}function y(a){return"ShadyRoot"===a.Ga}function Qa(a){a=a.getRootNode();if(y(a))return a} | |
88 |
var |
|
87 | var Ra=Element.prototype,Sa=Ra.matches||Ra.matchesSelector||Ra.mozMatchesSelector||Ra.msMatchesSelector||Ra.oMatchesSelector||Ra.webkitMatchesSelector;function Ta(a,b){if(a&&b)for(var c=Object.getOwnPropertyNames(b),d=0,e=void 0;d<c.length&&(e=c[d]);d++){var f=e,h=a,g=Object.getOwnPropertyDescriptor(b,f);g&&Object.defineProperty(h,f,g)}}function Ua(a,b){for(var c=[],d=1;d<arguments.length;++d)c[d-1]=arguments[d];for(d=0;d<c.length;d++)Ta(a,c[d]);return a} | |
89 |
var |
|
88 | function Va(a,b){for(var c in b)a[c]=b[c]}var Wa=document.createTextNode(""),Xa=0,Ya=[];(new MutationObserver(function(){for(;Ya.length;)try{Ya.shift()()}catch(a){throw Wa.textContent=Xa++,a;}})).observe(Wa,{characterData:!0});function Za(a){Ya.push(a);Wa.textContent=Xa++}var $a=!!document.contains;function ab(a,b){for(;b;){if(b==a)return!0;b=b.parentNode}return!1} | |
90 |
function |
|
89 | function bb(a){for(var b=a.length-1;0<=b;b--){var c=a[b],d=c.getAttribute("id")||c.getAttribute("name");d&&"length"!==d&&isNaN(d)&&(a[d]=c)}a.item=function(b){return a[b]};a.namedItem=function(b){if("length"!==b&&isNaN(b)&&a[b])return a[b];for(var c=ja(a),d=c.next();!d.done;d=c.next())if(d=d.value,(d.getAttribute("id")||d.getAttribute("name"))==b)return d;return null};return a};var cb=[],db;function eb(a){db||(db=!0,Za(fb));cb.push(a)}function fb(){db=!1;for(var a=!!cb.length;cb.length;)cb.shift()();return a}fb.list=cb;function gb(){this.a=!1;this.addedNodes=[];this.removedNodes=[];this.U=new Set}function hb(a){a.a||(a.a=!0,Za(function(){a.flush()}))}gb.prototype.flush=function(){if(this.a){this.a=!1;var a=this.takeRecords();a.length&&this.U.forEach(function(b){b(a)})}};gb.prototype.takeRecords=function(){if(this.addedNodes.length||this.removedNodes.length){var a=[{addedNodes:this.addedNodes,removedNodes:this.removedNodes}];this.addedNodes=[];this.removedNodes=[];return a}return[]}; | |
91 | function Wb(a,b){var c=w(a);c.K||(c.K=new Tb);c.K.Y.add(b);var d=c.K;return{Ia:b,H:d,Ma:a,takeRecords:function(){return d.takeRecords()}}}function Xb(a){var b=a&&a.H;b&&(b.Y.delete(a.Ia),b.Y.size||(w(a.Ma).K=null))} |
|
90 | function ib(a,b){var c=u(a);c.I||(c.I=new gb);c.I.U.add(b);var d=c.I;return{Fa:b,G:d,Ha:a,takeRecords:function(){return d.takeRecords()}}}function nb(a){var b=a&&a.G;b&&(b.U.delete(a.Fa),b.U.size||(u(a.Ha).I=null))} | |
92 |
function |
|
91 | function ob(a,b){var c=b.getRootNode();return a.map(function(a){var b=c===a.target.getRootNode();if(b&&a.addedNodes){if(b=Array.from(a.addedNodes).filter(function(a){return c===a.getRootNode()}),b.length)return a=Object.create(a),Object.defineProperty(a,"addedNodes",{value:b,configurable:!0}),a}else if(b)return a}).filter(function(a){return a})};var pb=Element.prototype.insertBefore,qb=Element.prototype.replaceChild,rb=Element.prototype.removeChild,sb=Element.prototype.setAttribute,tb=Element.prototype.removeAttribute,ub=Element.prototype.cloneNode,vb=Document.prototype.importNode,wb=Element.prototype.addEventListener,xb=Element.prototype.removeEventListener,yb=Window.prototype.addEventListener,zb=Window.prototype.removeEventListener,Ab=Element.prototype.dispatchEvent,Bb=Node.prototype.contains||HTMLElement.prototype.contains,Cb=Document.prototype.getElementById, | |
93 | mc=Element.prototype.querySelector,nc=DocumentFragment.prototype.querySelector,oc=Document.prototype.querySelector,pc=Element.prototype.querySelectorAll,qc=DocumentFragment.prototype.querySelectorAll,rc=Document.prototype.querySelectorAll;A.appendChild=Element.prototype.appendChild;A.insertBefore=Zb;A.replaceChild=$b;A.removeChild=ac;A.setAttribute=bc;A.removeAttribute=cc;A.cloneNode=dc;A.importNode=ec;A.addEventListener=fc;A.removeEventListener=gc;A.fb=hc;A.gb=ic;A.dispatchEvent=jc;A.contains=kc; |
|
92 | Db=Element.prototype.querySelector,Eb=DocumentFragment.prototype.querySelector,Fb=Document.prototype.querySelector,Gb=Element.prototype.querySelectorAll,Hb=DocumentFragment.prototype.querySelectorAll,Ib=Document.prototype.querySelectorAll,z={};z.appendChild=Element.prototype.appendChild;z.insertBefore=pb;z.replaceChild=qb;z.removeChild=rb;z.setAttribute=sb;z.removeAttribute=tb;z.cloneNode=ub;z.importNode=vb;z.addEventListener=wb;z.removeEventListener=xb;z.eb=yb;z.fb=zb;z.dispatchEvent=Ab; | |
94 |
|
|
93 | z.contains=Bb;z.getElementById=Cb;z.nb=Db;z.qb=Eb;z.lb=Fb;z.querySelector=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return Db.call(this,a);case Node.DOCUMENT_NODE:return Fb.call(this,a);default:return Eb.call(this,a)}};z.ob=Gb;z.rb=Hb;z.mb=Ib;z.querySelectorAll=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return Gb.call(this,a);case Node.DOCUMENT_NODE:return Ib.call(this,a);default:return Hb.call(this,a)}};var Jb=/[&\u00A0"]/g,Kb=/[&\u00A0<>]/g;function Lb(a){switch(a){case "&":return"&";case "<":return"<";case ">":return">";case '"':return""";case "\u00a0":return" "}}function Mb(a){for(var b={},c=0;c<a.length;c++)b[a[c]]=!0;return b}var Nb=Mb("area base br col command embed hr img input keygen link meta param source track wbr".split(" ")),Ob=Mb("style script xmp iframe noembed noframes plaintext noscript".split(" ")); | |
95 |
function |
|
94 | function Pb(a,b){"template"===a.localName&&(a=a.content);for(var c="",d=b?b(a):a.childNodes,e=0,f=d.length,h=void 0;e<f&&(h=d[e]);e++){a:{var g=h;var k=a,l=b;switch(g.nodeType){case Node.ELEMENT_NODE:k=g.localName;for(var m="<"+k,p=g.attributes,x=0,N;N=p[x];x++)m+=" "+N.name+'="'+N.value.replace(Jb,Lb)+'"';m+=">";g=Nb[k]?m:m+Pb(g,l)+"</"+k+">";break a;case Node.TEXT_NODE:g=g.data;g=k&&Ob[k.localName]?g:g.replace(Kb,Lb);break a;case Node.COMMENT_NODE:g="\x3c!--"+g.data+"--\x3e";break a;default:throw window.console.error(g), | |
96 |
Error("not implemented");}}c+=g}return c};var |
|
95 | Error("not implemented");}}c+=g}return c};var A=document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,!1),B=document.createTreeWalker(document,NodeFilter.SHOW_ELEMENT,null,!1);function Qb(a){var b=[];A.currentNode=a;for(a=A.firstChild();a;)b.push(a),a=A.nextSibling();return b} | |
97 | B.nextSibling=function(a){E.currentNode=a;return E.nextSibling()};B.childNodes=zc;B.parentElement=function(a){F.currentNode=a;return F.parentNode()};B.firstElementChild=function(a){F.currentNode=a;return F.firstChild()};B.lastElementChild=function(a){F.currentNode=a;return F.lastChild()};B.previousElementSibling=function(a){F.currentNode=a;return F.previousSibling()};B.nextElementSibling=function(a){F.currentNode=a;return F.nextSibling()}; |
|
96 | var D={parentNode:function(a){A.currentNode=a;return A.parentNode()},firstChild:function(a){A.currentNode=a;return A.firstChild()},lastChild:function(a){A.currentNode=a;return A.lastChild()},previousSibling:function(a){A.currentNode=a;return A.previousSibling()},nextSibling:function(a){A.currentNode=a;return A.nextSibling()}};D.childNodes=Qb;D.parentElement=function(a){B.currentNode=a;return B.parentNode()};D.firstElementChild=function(a){B.currentNode=a;return B.firstChild()}; | |
98 | B.children=function(a){var b=[];F.currentNode=a;for(a=F.firstChild();a;)b.push(a),a=F.nextSibling();return Ob(b)};B.innerHTML=function(a){return yc(a,function(a){return zc(a)})};B.textContent=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:a=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);for(var b="",c;c=a.nextNode();)b+=c.nodeValue;return b;default:return a.nodeValue}};var G={},Ac=y.w,Bc=[Node.prototype,Element.prototype,HTMLElement.prototype];function H(a){var b;a:{for(b=0;b<Bc.length;b++){var c=Bc[b];if(c.hasOwnProperty(a)){b=c;break a}}b=void 0}if(!b)throw Error("Could not find descriptor for "+a);return Object.getOwnPropertyDescriptor(b,a)} |
|
97 | D.lastElementChild=function(a){B.currentNode=a;return B.lastChild()};D.previousElementSibling=function(a){B.currentNode=a;return B.previousSibling()};D.nextElementSibling=function(a){B.currentNode=a;return B.nextSibling()};D.children=function(a){var b=[];B.currentNode=a;for(a=B.firstChild();a;)b.push(a),a=B.nextSibling();return bb(b)};D.innerHTML=function(a){return Pb(a,function(a){return Qb(a)})}; | |
99 | var I=Ac?{parentNode:H("parentNode"),firstChild:H("firstChild"),lastChild:H("lastChild"),previousSibling:H("previousSibling"),nextSibling:H("nextSibling"),childNodes:H("childNodes"),parentElement:H("parentElement"),previousElementSibling:H("previousElementSibling"),nextElementSibling:H("nextElementSibling"),innerHTML:H("innerHTML"),textContent:H("textContent"),firstElementChild:H("firstElementChild"),lastElementChild:H("lastElementChild"),children:H("children")}:{},Cc=Ac?{firstElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype, |
|
98 | D.textContent=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:a=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);for(var b="",c;c=a.nextNode();)b+=c.nodeValue;return b;default:return a.nodeValue}};var Rb=w.w,Sb=[Node.prototype,Element.prototype,HTMLElement.prototype];function E(a){var b;a:{for(b=0;b<Sb.length;b++){var c=Sb[b];if(c.hasOwnProperty(a)){b=c;break a}}b=void 0}if(!b)throw Error("Could not find descriptor for "+a);return Object.getOwnPropertyDescriptor(b,a)} | |
100 | "firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"children")}:{},Dc=Ac?{firstElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(Document.prototype,"children")}:{};G.xa=I;G.rb=Cc;G.mb=Dc;G.parentNode=function(a){return I.parentNode.get.call(a)}; |
|
99 | var F=Rb?{parentNode:E("parentNode"),firstChild:E("firstChild"),lastChild:E("lastChild"),previousSibling:E("previousSibling"),nextSibling:E("nextSibling"),childNodes:E("childNodes"),parentElement:E("parentElement"),previousElementSibling:E("previousElementSibling"),nextElementSibling:E("nextElementSibling"),innerHTML:E("innerHTML"),textContent:E("textContent"),firstElementChild:E("firstElementChild"),lastElementChild:E("lastElementChild"),children:E("children")}:{},Tb=Rb?{firstElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype, | |
101 | G.firstChild=function(a){return I.firstChild.get.call(a)};G.lastChild=function(a){return I.lastChild.get.call(a)};G.previousSibling=function(a){return I.previousSibling.get.call(a)};G.nextSibling=function(a){return I.nextSibling.get.call(a)};G.childNodes=function(a){return Array.prototype.slice.call(I.childNodes.get.call(a))};G.parentElement=function(a){return I.parentElement.get.call(a)};G.previousElementSibling=function(a){return I.previousElementSibling.get.call(a)};G.nextElementSibling=function(a){return I.nextElementSibling.get.call(a)}; |
|
100 | "firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"children")}:{},Ub=Rb?{firstElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(Document.prototype,"children")}:{},Vb={sa:F,pb:Tb,kb:Ub,parentNode:function(a){return F.parentNode.get.call(a)}, | |
102 | G.innerHTML=function(a){return I.innerHTML.get.call(a)};G.textContent=function(a){return I.textContent.get.call(a)};G.children=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return Cc.children.get.call(a);case Node.DOCUMENT_NODE:return Dc.children.get.call(a);default:return I.children.get.call(a)}}; |
|
101 | firstChild:function(a){return F.firstChild.get.call(a)},lastChild:function(a){return F.lastChild.get.call(a)},previousSibling:function(a){return F.previousSibling.get.call(a)},nextSibling:function(a){return F.nextSibling.get.call(a)},childNodes:function(a){return Array.prototype.slice.call(F.childNodes.get.call(a))},parentElement:function(a){return F.parentElement.get.call(a)},previousElementSibling:function(a){return F.previousElementSibling.get.call(a)},nextElementSibling:function(a){return F.nextElementSibling.get.call(a)}, | |
103 |
|
|
102 | innerHTML:function(a){return F.innerHTML.get.call(a)},textContent:function(a){return F.textContent.get.call(a)},children:function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return Tb.children.get.call(a);case Node.DOCUMENT_NODE:return Ub.children.get.call(a);default:return F.children.get.call(a)}},firstElementChild:function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return Tb.firstElementChild.get.call(a);case Node.DOCUMENT_NODE:return Ub.firstElementChild.get.call(a);default:return F.firstElementChild.get.call(a)}}, | |
104 | var Fc=y.w,Gc=document.implementation.createHTMLDocument("inert"),Hc=Object.getOwnPropertyDescriptor(Node.prototype,"isConnected"),Ic=Hc&&Hc.get,Jc=Object.getOwnPropertyDescriptor(Document.prototype,"activeElement"),Mc={parentElement:{get:function(){var a=x(this);(a=a&&a.parentNode)&&a.nodeType!==Node.ELEMENT_NODE&&(a=null);return void 0!==a?a:J.parentElement(this)},configurable:!0},parentNode:{get:function(){var a=x(this);a=a&&a.parentNode;return void 0!==a?a:J.parentNode(this)},configurable:!0}, |
|
103 | lastElementChild:function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return Tb.lastElementChild.get.call(a);case Node.DOCUMENT_NODE:return Ub.lastElementChild.get.call(a);default:return F.lastElementChild.get.call(a)}}};var G=w.wa?Vb:D;function Wb(a){for(;a.firstChild;)a.removeChild(a.firstChild)} | |
105 | nextSibling:{get:function(){var a=x(this);a=a&&a.nextSibling;return void 0!==a?a:J.nextSibling(this)},configurable:!0},previousSibling:{get:function(){var a=x(this);a=a&&a.previousSibling;return void 0!==a?a:J.previousSibling(this)},configurable:!0},nextElementSibling:{get:function(){var a=x(this);if(a&&void 0!==a.nextSibling){for(a=this.nextSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return J.nextElementSibling(this)},configurable:!0},previousElementSibling:{get:function(){var a= |
|
104 | var Xb=w.w,Yb=document.implementation.createHTMLDocument("inert"),Zb=Object.getOwnPropertyDescriptor(Node.prototype,"isConnected"),$b=Zb&&Zb.get,ac=Object.getOwnPropertyDescriptor(Document.prototype,"activeElement"),bc={parentElement:{get:function(){var a=v(this);(a=a&&a.parentNode)&&a.nodeType!==Node.ELEMENT_NODE&&(a=null);return void 0!==a?a:G.parentElement(this)},configurable:!0},parentNode:{get:function(){var a=v(this);a=a&&a.parentNode;return void 0!==a?a:G.parentNode(this)},configurable:!0}, | |
106 | x(this);if(a&&void 0!==a.previousSibling){for(a=this.previousSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return J.previousElementSibling(this)},configurable:!0}},Nc={className:{get:function(){return this.getAttribute("class")||""},set:function(a){this.setAttribute("class",a)},configurable:!0}},Oc={childNodes:{get:function(){if(Bb(this)){var a=x(this);if(!a.childNodes){a.childNodes=[];for(var b=this.firstChild;b;b=b.nextSibling)a.childNodes.push(b)}var c=a.childNodes}else c= |
|
105 | nextSibling:{get:function(){var a=v(this);a=a&&a.nextSibling;return void 0!==a?a:G.nextSibling(this)},configurable:!0},previousSibling:{get:function(){var a=v(this);a=a&&a.previousSibling;return void 0!==a?a:G.previousSibling(this)},configurable:!0},nextElementSibling:{get:function(){var a=v(this);if(a&&void 0!==a.nextSibling){for(a=this.nextSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return G.nextElementSibling(this)},configurable:!0},previousElementSibling:{get:function(){var a= | |
107 | J.childNodes(this);c.item=function(a){return c[a]};return c},configurable:!0},childElementCount:{get:function(){return this.children.length},configurable:!0},firstChild:{get:function(){var a=x(this);a=a&&a.firstChild;return void 0!==a?a:J.firstChild(this)},configurable:!0},lastChild:{get:function(){var a=x(this);a=a&&a.lastChild;return void 0!==a?a:J.lastChild(this)},configurable:!0},textContent:{get:function(){if(Bb(this)){for(var a=[],b=0,c=this.childNodes,d;d=c[b];b++)d.nodeType!==Node.COMMENT_NODE&& |
|
106 | v(this);if(a&&void 0!==a.previousSibling){for(a=this.previousSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return G.previousElementSibling(this)},configurable:!0}},cc={className:{get:function(){return this.getAttribute("class")||""},set:function(a){this.setAttribute("class",a)},configurable:!0}},dc={childNodes:{get:function(){if(Pa(this)){var a=v(this);if(!a.childNodes){a.childNodes=[];for(var b=this.firstChild;b;b=b.nextSibling)a.childNodes.push(b)}var c=a.childNodes}else c= | |
108 | a.push(d.textContent);return a.join("")}return J.textContent(this)},set:function(a){if("undefined"===typeof a||null===a)a="";switch(this.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:if(!Bb(this)&&Fc){var b=this.firstChild;(b!=this.lastChild||b&&b.nodeType!=Node.TEXT_NODE)&&Ec(this);G.xa.textContent.set.call(this,a)}else Ec(this),(0<a.length||this.nodeType===Node.ELEMENT_NODE)&&this.appendChild(document.createTextNode(a));break;default:this.nodeValue=a}},configurable:!0},firstElementChild:{get:function(){var a= |
|
107 | G.childNodes(this);c.item=function(a){return c[a]};return c},configurable:!0},childElementCount:{get:function(){return this.children.length},configurable:!0},firstChild:{get:function(){var a=v(this);a=a&&a.firstChild;return void 0!==a?a:G.firstChild(this)},configurable:!0},lastChild:{get:function(){var a=v(this);a=a&&a.lastChild;return void 0!==a?a:G.lastChild(this)},configurable:!0},textContent:{get:function(){if(Pa(this)){for(var a=[],b=0,c=this.childNodes,d;d=c[b];b++)d.nodeType!==Node.COMMENT_NODE&& | |
109 | x(this);if(a&&void 0!==a.firstChild){for(a=this.firstChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return J.firstElementChild(this)},configurable:!0},lastElementChild:{get:function(){var a=x(this);if(a&&void 0!==a.lastChild){for(a=this.lastChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return J.lastElementChild(this)},configurable:!0},children:{get:function(){return Bb(this)?Ob(Array.prototype.filter.call(this.childNodes,function(a){return a.nodeType===Node.ELEMENT_NODE})): |
|
108 | a.push(d.textContent);return a.join("")}return G.textContent(this)},set:function(a){if("undefined"===typeof a||null===a)a="";switch(this.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:if(!Pa(this)&&Xb){var b=this.firstChild;(b!=this.lastChild||b&&b.nodeType!=Node.TEXT_NODE)&&Wb(this);Vb.sa.textContent.set.call(this,a)}else Wb(this),(0<a.length||this.nodeType===Node.ELEMENT_NODE)&&this.appendChild(document.createTextNode(a));break;default:this.nodeValue=a}},configurable:!0},firstElementChild:{get:function(){var a= | |
110 | J.children(this)},configurable:!0},innerHTML:{get:function(){return Bb(this)?yc("template"===this.localName?this.content:this):J.innerHTML(this)},set:function(a){var b="template"===this.localName?this.content:this;Ec(b);var c=this.localName||"div";c=this.namespaceURI&&this.namespaceURI!==Gc.namespaceURI?Gc.createElementNS(this.namespaceURI,c):Gc.createElement(c);Fc?G.xa.innerHTML.set.call(c,a):c.innerHTML=a;for(a="template"===this.localName?c.content:c;a.firstChild;)b.appendChild(a.firstChild)},configurable:!0}}, |
|
109 | v(this);if(a&&void 0!==a.firstChild){for(a=this.firstChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return G.firstElementChild(this)},configurable:!0},lastElementChild:{get:function(){var a=v(this);if(a&&void 0!==a.lastChild){for(a=this.lastChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return G.lastElementChild(this)},configurable:!0},children:{get:function(){return Pa(this)?bb(Array.prototype.filter.call(this.childNodes,function(a){return a.nodeType===Node.ELEMENT_NODE})): | |
111 | Pc={shadowRoot:{get:function(){var a=x(this);return a&&a.ya||null},configurable:!0}},Qc={activeElement:{get:function(){var a=Jc&&Jc.get?Jc.get.call(document):y.w?void 0:document.activeElement;if(a&&a.nodeType){var b=!!z(this);if(this===document||b&&this.host!==a&&A.contains.call(this.host,a)){for(b=Cb(a);b&&b!==this;)a=b.host,b=Cb(a);a=this===document?b?null:a:b===this?a:null}else a=null}else a=null;return a},set:function(){},configurable:!0}}; |
|
110 | G.children(this)},configurable:!0},innerHTML:{get:function(){return Pa(this)?Pb("template"===this.localName?this.content:this):G.innerHTML(this)},set:function(a){var b="template"===this.localName?this.content:this;Wb(b);var c=this.localName||"div";c=this.namespaceURI&&this.namespaceURI!==Yb.namespaceURI?Yb.createElementNS(this.namespaceURI,c):Yb.createElement(c);Xb?Vb.sa.innerHTML.set.call(c,a):c.innerHTML=a;for(a="template"===this.localName?c.content:c;a.firstChild;)b.appendChild(a.firstChild)}, | |
112 | function K(a,b,c){for(var d in b){var e=Object.getOwnPropertyDescriptor(a,d);e&&e.configurable||!e&&c?Object.defineProperty(a,d,b[d]):c&&console.warn("Could not define",d,"on",a)}}function Rc(a){K(a,Mc);K(a,Nc);K(a,Oc);K(a,Qc)} |
|
111 | configurable:!0}},ec={shadowRoot:{get:function(){var a=v(this);return a&&a.ta||null},configurable:!0}},fc={activeElement:{get:function(){var a=ac&&ac.get?ac.get.call(document):w.w?void 0:document.activeElement;if(a&&a.nodeType){var b=!!y(this);if(this===document||b&&this.host!==a&&z.contains.call(this.host,a)){for(b=Qa(a);b&&b!==this;)a=b.host,b=Qa(a);a=this===document?b?null:a:b===this?a:null}else a=null}else a=null;return a},set:function(){},configurable:!0}}; | |
113 | function Sc(){var a=Tc.prototype;a.__proto__=DocumentFragment.prototype;K(a,Mc,!0);K(a,Oc,!0);K(a,Qc,!0);Object.defineProperties(a,{nodeType:{value:Node.DOCUMENT_FRAGMENT_NODE,configurable:!0},nodeName:{value:"#document-fragment",configurable:!0},nodeValue:{value:null,configurable:!0}});["localName","namespaceURI","prefix"].forEach(function(b){Object.defineProperty(a,b,{value:void 0,configurable:!0})});["ownerDocument","baseURI","isConnected"].forEach(function(b){Object.defineProperty(a,b,{get:function(){return this.host[b]}, |
|
112 | function H(a,b,c){for(var d in b){var e=Object.getOwnPropertyDescriptor(a,d);e&&e.configurable||!e&&c?Object.defineProperty(a,d,b[d]):c&&console.warn("Could not define",d,"on",a)}}function gc(a){H(a,bc);H(a,cc);H(a,dc);H(a,fc)} | |
114 | configurable:!0})})}var Uc=y.w?function(){}:function(a){var b=w(a);b.ta||(b.ta=!0,K(a,Mc,!0),K(a,Nc,!0))},Vc=y.w?function(){}:function(a){w(a).Da||(K(a,Oc,!0),K(a,Pc,!0))};var Wc=J.childNodes;function Xc(a,b,c){Uc(a);c=c||null;var d=w(a),e=w(b),f=c?w(c):null;d.previousSibling=c?f.previousSibling:b.lastChild;if(f=x(d.previousSibling))f.nextSibling=a;if(f=x(d.nextSibling=c))f.previousSibling=a;d.parentNode=b;c?c===e.firstChild&&(e.firstChild=a):(e.lastChild=a,e.firstChild||(e.firstChild=a));e.childNodes=null} |
|
113 | function hc(){var a=ic.prototype;a.__proto__=DocumentFragment.prototype;H(a,bc,!0);H(a,dc,!0);H(a,fc,!0);Object.defineProperties(a,{nodeType:{value:Node.DOCUMENT_FRAGMENT_NODE,configurable:!0},nodeName:{value:"#document-fragment",configurable:!0},nodeValue:{value:null,configurable:!0}});["localName","namespaceURI","prefix"].forEach(function(b){Object.defineProperty(a,b,{value:void 0,configurable:!0})});["ownerDocument","baseURI","isConnected"].forEach(function(b){Object.defineProperty(a,b,{get:function(){return this.host[b]}, | |
115 | function Yc(a){var b=w(a);if(void 0===b.firstChild){b.childNodes=null;var c=Wc(a);b.firstChild=c[0]||null;b.lastChild=c[c.length-1]||null;Vc(a);for(b=0;b<c.length;b++){var d=c[b],e=w(d);e.parentNode=a;e.nextSibling=c[b+1]||null;e.previousSibling=c[b-1]||null;Uc(d)}}};var Zc=J.parentNode; |
|
114 | configurable:!0})})}var jc=w.w?function(){}:function(a){var b=u(a);b.oa||(b.oa=!0,H(a,bc,!0),H(a,cc,!0))},kc=w.w?function(){}:function(a){u(a).Aa||(H(a,dc,!0),H(a,ec,!0))};var lc=G.childNodes;function mc(a,b,c){kc(b);var d=u(b);void 0!==d.firstChild&&(d.childNodes=null);if(a.nodeType===Node.DOCUMENT_FRAGMENT_NODE){d=a.childNodes;for(var e=0;e<d.length;e++)nc(d[e],b,c);a=u(a);b=void 0!==a.firstChild?null:void 0;a.firstChild=a.lastChild=b;a.childNodes=b}else nc(a,b,c)} | |
116 | function $c(a,b,c){if(b===a)throw Error("Failed to execute 'appendChild' on 'Node': The new child element contains the parent.");if(c){var d=x(c);d=d&&d.parentNode;if(void 0!==d&&d!==a||void 0===d&&Zc(c)!==a)throw Error("Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.");}if(c===b)return b;b.parentNode&&ad(b.parentNode,b);var e,f;if(!b.__noInsertionPoint){if(f=e=Cb(a)){var h;"slot"===b.localName?h=[b]:b.querySelectorAll&& |
|
115 | function nc(a,b,c){jc(a);c=c||null;var d=u(a),e=u(b),f=c?u(c):null;d.previousSibling=c?f.previousSibling:b.lastChild;if(f=v(d.previousSibling))f.nextSibling=a;if(f=v(d.nextSibling=c))f.previousSibling=a;d.parentNode=b;c?c===e.firstChild&&(e.firstChild=a):(e.lastChild=a,e.firstChild||(e.firstChild=a));e.childNodes=null} | |
117 | (h=b.querySelectorAll("slot"));f=h&&h.length?h:void 0}f&&(h=e,d=f,h.a=h.a||[],h.g=h.g||[],h.j=h.j||{},h.a.push.apply(h.a,[].concat(d instanceof Array?d:na(ma(d)))))}("slot"===a.localName||f)&&(e=e||Cb(a))&&bd(e);if(Bb(a)){e=c;Vc(a);f=w(a);void 0!==f.firstChild&&(f.childNodes=null);if(b.nodeType===Node.DOCUMENT_FRAGMENT_NODE){f=b.childNodes;for(h=0;h<f.length;h++)Xc(f[h],a,e);e=w(b);f=void 0!==e.firstChild?null:void 0;e.firstChild=e.lastChild=f;e.childNodes=f}else Xc(b,a,e);e=x(a);if(cd(a)){bd(e.root); |
|
116 | function oc(a,b){var c=u(a);b=u(b);a===b.firstChild&&(b.firstChild=c.nextSibling);a===b.lastChild&&(b.lastChild=c.previousSibling);a=c.previousSibling;var d=c.nextSibling;a&&(u(a).nextSibling=d);d&&(u(d).previousSibling=a);c.parentNode=c.previousSibling=c.nextSibling=void 0;void 0!==b.childNodes&&(b.childNodes=null)} | |
118 | var g=!0}else e.root&&(g=!0)}g||(g=z(a)?a.host:a,c?(c=dd(c),A.insertBefore.call(g,b,c)):A.appendChild.call(g,b));ed(a,b);return b} |
|
117 | function pc(a){var b=u(a);if(void 0===b.firstChild){b.childNodes=null;var c=lc(a);b.firstChild=c[0]||null;b.lastChild=c[c.length-1]||null;kc(a);for(b=0;b<c.length;b++){var d=c[b],e=u(d);e.parentNode=a;e.nextSibling=c[b+1]||null;e.previousSibling=c[b-1]||null;jc(d)}}};var qc=G.parentNode; | |
119 | function ad(a,b){if(b.parentNode!==a)throw Error("The node to be removed is not a child of this node: "+b);var c=Cb(b),d=x(a);if(Bb(a)){var e=w(b),f=w(a);b===f.firstChild&&(f.firstChild=e.nextSibling);b===f.lastChild&&(f.lastChild=e.previousSibling);var h=e.previousSibling,g=e.nextSibling;h&&(w(h).nextSibling=g);g&&(w(g).previousSibling=h);e.parentNode=e.previousSibling=e.nextSibling=void 0;void 0!==f.childNodes&&(f.childNodes=null);if(cd(a)){bd(d.root);var k=!0}}fd(b);if(c){(e=a&&"slot"===a.localName)&& |
|
118 | function rc(a,b,c){if(b===a)throw Error("Failed to execute 'appendChild' on 'Node': The new child element contains the parent.");if(c){var d=v(c);d=d&&d.parentNode;if(void 0!==d&&d!==a||void 0===d&&qc(c)!==a)throw Error("Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.");}if(c===b)return b;var e=[],f=sc,h=Qa(a),g=h?h.host.localName:"";if(b.parentNode){var k=tc(b);uc(b.parentNode,b,!!h||!(b.getRootNode()instanceof ShadowRoot)); | |
120 | (k=!0);if(c.g){gd(c);f=c.j;for(ba in f)for(h=f[ba],g=0;g<h.length;g++){var l=h[g];if(Nb(b,l)){h.splice(g,1);var m=c.g.indexOf(l);0<=m&&c.g.splice(m,1);g--;m=x(l);if(l=m.D)for(var n=0;n<l.length;n++){var t=l[n],C=hd(t);C&&A.removeChild.call(C,t)}m.D=[];m.assignedNodes=[];m=!0}}var ba=m}else ba=void 0;(ba||e)&&bd(c)}k||(k=z(a)?a.host:a,(!d.root&&"slot"!==b.localName||k===Zc(b))&&A.removeChild.call(k,b));ed(a,null,b);return b} |
|
119 | f=function(a,b){vc()&&(wc(a,k),sc(a,b))}}d=!0;var l=!xc(b,g);!h||b.__noInsertionPoint&&!l||Ac(b,function(a){"slot"===a.localName&&e.push(a);l&&f(a,g)});e.length&&Bc(h,e);("slot"===a.localName||e.length)&&h&&Cc(h);Pa(a)&&(mc(b,a,c),h=v(a),Dc(a)?(Cc(h.root),d=!1):h.root&&(d=!1));d?(d=y(a)?a.host:a,c?(c=Ec(c),z.insertBefore.call(d,b,c)):z.appendChild.call(d,b)):b.ownerDocument!==a.ownerDocument&&a.ownerDocument.adoptNode(b);Fc(a,b);return b} | |
121 | function fd(a){var b=x(a);if(b&&void 0!==b.N){b=a.childNodes;for(var c=0,d=b.length,e;c<d&&(e=b[c]);c++)fd(e)}if(a=x(a))a.N=void 0}function dd(a){var b=a;a&&"slot"===a.localName&&(b=(b=(b=x(a))&&b.D)&&b.length?b[0]:dd(a.nextSibling));return b}function cd(a){return(a=(a=x(a))&&a.root)&&id(a)} |
|
120 | function uc(a,b,c){c=void 0===c?!1:c;if(b.parentNode!==a)throw Error("The node to be removed is not a child of this node: "+b);var d=Qa(b),e=v(a);if(Pa(a)&&(oc(b,a),Dc(a))){Cc(e.root);var f=!0}if(vc()&&!c&&d){var h=tc(b);Ac(b,function(a){wc(a,h)})}Gc(b);if(d){var g=a&&"slot"===a.localName;g&&(f=!0);((c=Hc(d,b))||g)&&Cc(d)}f||(f=y(a)?a.host:a,(!e.root&&"slot"!==b.localName||f===qc(b))&&z.removeChild.call(f,b));Fc(a,null,b);return b} | |
122 | function jd(a,b){if("slot"===b)a=a.parentNode,cd(a)&&bd(x(a).root);else if("slot"===a.localName&&"name"===b&&(b=Cb(a))){if(b.g){gd(b);var c=a.Ga,d=kd(a);if(d!==c){c=b.j[c];var e=c.indexOf(a);0<=e&&c.splice(e,1);c=b.j[d]||(b.j[d]=[]);c.push(a);1<c.length&&(b.j[d]=ld(c))}}bd(b)}}function ed(a,b,c){if(a=(a=x(a))&&a.K)b&&a.addedNodes.push(b),c&&a.removedNodes.push(c),Ub(a)} |
|
121 | function Gc(a){var b=v(a);if(b&&void 0!==b.L){b=a.childNodes;for(var c=0,d=b.length,e=void 0;c<d&&(e=b[c]);c++)Gc(e)}if(a=v(a))a.L=void 0}function Ec(a){var b=a;a&&"slot"===a.localName&&(b=(b=(b=v(a))&&b.D)&&b.length?b[0]:Ec(a.nextSibling));return b}function Dc(a){return(a=(a=v(a))&&a.root)&&Ic(a)} | |
123 | function md(a){if(a&&a.nodeType){var b=w(a),c=b.N;void 0===c&&(z(a)?(c=a,b.N=c):(c=(c=a.parentNode)?md(c):a,A.contains.call(document.documentElement,a)&&(b.N=c)));return c}}function nd(a,b,c){var d=[];od(a.childNodes,b,c,d);return d}function od(a,b,c,d){for(var e=0,f=a.length,h;e<f&&(h=a[e]);e++){var g;if(g=h.nodeType===Node.ELEMENT_NODE){g=h;var k=b,l=c,m=d,n=k(g);n&&m.push(g);l&&l(n)?g=n:(od(g.childNodes,k,l,m),g=void 0)}if(g)break}}var pd=null; |
|
122 | function Jc(a,b){if("slot"===b)a=a.parentNode,Dc(a)&&Cc(v(a).root);else if("slot"===a.localName&&"name"===b&&(b=Qa(a))){if(b.g){Kc(b);var c=a.Da,d=Lc(a);if(d!==c){c=b.i[c];var e=c.indexOf(a);0<=e&&c.splice(e,1);c=b.i[d]||(b.i[d]=[]);c.push(a);1<c.length&&(b.i[d]=Mc(c))}}Cc(b)}}function Fc(a,b,c){if(a=(a=v(a))&&a.I)b&&a.addedNodes.push(b),c&&a.removedNodes.push(c),hb(a)} | |
124 | function qd(a,b,c){pd||(pd=window.ShadyCSS&&window.ShadyCSS.ScopingShim);pd&&"class"===b?pd.setElementClass(a,c):(A.setAttribute.call(a,b,c),jd(a,b))}function rd(a,b){if(a.ownerDocument!==document||"template"===a.localName)return A.importNode.call(document,a,b);var c=A.importNode.call(document,a,!1);if(b){a=a.childNodes;b=0;for(var d;b<a.length;b++)d=rd(a[b],!0),c.appendChild(d)}return c};var sd="__eventWrappers"+Date.now(),td=function(){var a=Object.getOwnPropertyDescriptor(Event.prototype,"composed");return a?function(b){return a.get.call(b)}:null}(),ud={blur:!0,focus:!0,focusin:!0,focusout:!0,click:!0,dblclick:!0,mousedown:!0,mouseenter:!0,mouseleave:!0,mousemove:!0,mouseout:!0,mouseover:!0,mouseup:!0,wheel:!0,beforeinput:!0,input:!0,keydown:!0,keyup:!0,compositionstart:!0,compositionupdate:!0,compositionend:!0,touchstart:!0,touchend:!0,touchmove:!0,touchcancel:!0,pointerover:!0, |
|
123 | function Nc(a){if(a&&a.nodeType){var b=u(a),c=b.L;void 0===c&&(y(a)?(c=a,b.L=c):(c=(c=a.parentNode)?Nc(c):a,z.contains.call(document.documentElement,a)&&(b.L=c)));return c}}function Oc(a,b,c){var d=[];Pc(a.childNodes,b,c,d);return d}function Pc(a,b,c,d){for(var e=0,f=a.length,h=void 0;e<f&&(h=a[e]);e++){var g;if(g=h.nodeType===Node.ELEMENT_NODE){g=h;var k=b,l=c,m=d,p=k(g);p&&m.push(g);l&&l(p)?g=p:(Pc(g.childNodes,k,l,m),g=void 0)}if(g)break}}var Qc=null; | |
125 | pointerenter:!0,pointerdown:!0,pointermove:!0,pointerup:!0,pointercancel:!0,pointerout:!0,pointerleave:!0,gotpointercapture:!0,lostpointercapture:!0,dragstart:!0,drag:!0,dragenter:!0,dragleave:!0,dragover:!0,drop:!0,dragend:!0,DOMActivate:!0,DOMFocusIn:!0,DOMFocusOut:!0,keypress:!0},vd={DOMAttrModified:!0,DOMAttributeNameChanged:!0,DOMCharacterDataModified:!0,DOMElementNameChanged:!0,DOMNodeInserted:!0,DOMNodeInsertedIntoDocument:!0,DOMNodeRemoved:!0,DOMNodeRemovedFromDocument:!0,DOMSubtreeModified:!0}; |
|
124 | function vc(){Qc||(Qc=window.ShadyCSS&&window.ShadyCSS.ScopingShim);return Qc||null}function Rc(a,b,c){var d=vc();d&&"class"===b?d.setElementClass(a,c):(z.setAttribute.call(a,b,c),Jc(a,b))}function Sc(a,b){if(a.ownerDocument!==document||"template"===a.localName)return z.importNode.call(document,a,b);var c=z.importNode.call(document,a,!1);if(b){a=a.childNodes;b=0;for(var d;b<a.length;b++)d=Sc(a[b],!0),c.appendChild(d)}return c}function sc(a,b){var c=vc();c&&c.scopeNode(a,b)} | |
126 | function wd(a,b){var c=[],d=a;for(a=a===window?window:a.getRootNode();d;)c.push(d),d=d.assignedSlot?d.assignedSlot:d.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&d.host&&(b||d!==a)?d.host:d.parentNode;c[c.length-1]===document&&c.push(window);return c}function xd(a,b){if(!z)return a;a=wd(a,!0);for(var c=0,d,e,f,h;c<b.length;c++)if(d=b[c],f=d===window?window:d.getRootNode(),f!==e&&(h=a.indexOf(f),e=f),!z(f)||-1<h)return d} |
|
125 | function wc(a,b){var c=vc();c&&c.unscopeNode(a,b)}function xc(a,b){var c=vc();if(!c)return!0;if(a.nodeType===Node.DOCUMENT_FRAGMENT_NODE){c=!0;for(var d=0;c&&d<a.childNodes.length;d++)c=c&&xc(a.childNodes[d],b);return c}return a.nodeType!==Node.ELEMENT_NODE?!0:c.currentScopeForNode(a)===b}function tc(a){if(a.nodeType!==Node.ELEMENT_NODE)return"";var b=vc();return b?b.currentScopeForNode(a):""} | |
127 | var yd={get composed(){void 0===this.R&&(td?this.R=td(this):!1!==this.isTrusted&&(this.R=ud[this.type]));return this.R||!1},composedPath:function(){this.sa||(this.sa=wd(this.__target,this.composed));return this.sa},get target(){return xd(this.currentTarget||this.__previousCurrentTarget,this.composedPath())},get relatedTarget(){if(!this.ea)return null;this.ua||(this.ua=wd(this.ea,!0));return xd(this.currentTarget,this.ua)},stopPropagation:function(){Event.prototype.stopPropagation.call(this);this.da= |
|
126 | function Ac(a,b){if(a){a.nodeType===Node.ELEMENT_NODE&&b(a);for(var c=0,d;c<a.childNodes.length;c++)d=a.childNodes[c],d.nodeType===Node.ELEMENT_NODE&&Ac(d,b)}};var Tc="__eventWrappers"+Date.now(),Uc=function(){var a=Object.getOwnPropertyDescriptor(Event.prototype,"composed");return a?function(b){return a.get.call(b)}:null}(),Vc={blur:!0,focus:!0,focusin:!0,focusout:!0,click:!0,dblclick:!0,mousedown:!0,mouseenter:!0,mouseleave:!0,mousemove:!0,mouseout:!0,mouseover:!0,mouseup:!0,wheel:!0,beforeinput:!0,input:!0,keydown:!0,keyup:!0,compositionstart:!0,compositionupdate:!0,compositionend:!0,touchstart:!0,touchend:!0,touchmove:!0,touchcancel:!0,pointerover:!0, | |
128 | !0},stopImmediatePropagation:function(){Event.prototype.stopImmediatePropagation.call(this);this.da=this.Ca=!0}};function zd(a){function b(b,d){b=new a(b,d);b.R=d&&!!d.composed;return b}Hb(b,a);b.prototype=a.prototype;return b}var Ad={focus:!0,blur:!0};function Bd(a){return a.__target!==a.target||a.ea!==a.relatedTarget}function Cd(a,b,c){if(c=b.__handlers&&b.__handlers[a.type]&&b.__handlers[a.type][c])for(var d=0,e;(e=c[d])&&(!Bd(a)||a.target!==a.relatedTarget)&&(e.call(b,a),!a.Ca);d++);} |
|
127 | pointerenter:!0,pointerdown:!0,pointermove:!0,pointerup:!0,pointercancel:!0,pointerout:!0,pointerleave:!0,gotpointercapture:!0,lostpointercapture:!0,dragstart:!0,drag:!0,dragenter:!0,dragleave:!0,dragover:!0,drop:!0,dragend:!0,DOMActivate:!0,DOMFocusIn:!0,DOMFocusOut:!0,keypress:!0},Wc={DOMAttrModified:!0,DOMAttributeNameChanged:!0,DOMCharacterDataModified:!0,DOMElementNameChanged:!0,DOMNodeInserted:!0,DOMNodeInsertedIntoDocument:!0,DOMNodeRemoved:!0,DOMNodeRemovedFromDocument:!0,DOMSubtreeModified:!0}; | |
129 | function Dd(a){var b=a.composedPath();Object.defineProperty(a,"currentTarget",{get:function(){return d},configurable:!0});for(var c=b.length-1;0<=c;c--){var d=b[c];Cd(a,d,"capture");if(a.da)return}Object.defineProperty(a,"eventPhase",{get:function(){return Event.AT_TARGET}});var e;for(c=0;c<b.length;c++){d=b[c];var f=x(d);f=f&&f.root;if(0===c||f&&f===e)if(Cd(a,d,"bubble"),d!==window&&(e=d.getRootNode()),a.da)break}} |
|
128 | function Xc(a,b){var c=[],d=a;for(a=a===window?window:a.getRootNode();d;)c.push(d),d=d.assignedSlot?d.assignedSlot:d.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&d.host&&(b||d!==a)?d.host:d.parentNode;c[c.length-1]===document&&c.push(window);return c}function Yc(a,b){if(!y)return a;a=Xc(a,!0);for(var c=0,d,e=void 0,f,h=void 0;c<b.length;c++)if(d=b[c],f=d===window?window:d.getRootNode(),f!==e&&(h=a.indexOf(f),e=f),!y(f)||-1<h)return d} | |
130 | function Ed(a,b,c,d,e,f){for(var h=0;h<a.length;h++){var g=a[h],k=g.type,l=g.capture,m=g.once,n=g.passive;if(b===g.node&&c===k&&d===l&&e===m&&f===n)return h}return-1} |
|
129 | var Zc={get composed(){void 0===this.O&&(Uc?this.O="focusin"===this.type||"focusout"===this.type||Uc(this):!1!==this.isTrusted&&(this.O=Vc[this.type]));return this.O||!1},composedPath:function(){this.na||(this.na=Xc(this.__target,this.composed));return this.na},get target(){return Yc(this.currentTarget||this.__previousCurrentTarget,this.composedPath())},get relatedTarget(){if(!this.ca)return null;this.pa||(this.pa=Xc(this.ca,!0));return Yc(this.currentTarget||this.__previousCurrentTarget,this.pa)}, | |
131 | function Fd(a,b,c){if(b){var d=typeof b;if("function"===d||"object"===d)if("object"!==d||b.handleEvent&&"function"===typeof b.handleEvent){var e=this instanceof Window?A.fb:A.addEventListener;if(vd[a])return e.call(this,a,b,c);if(c&&"object"===typeof c){var f=!!c.capture;var h=!!c.once;var g=!!c.passive}else f=!!c,g=h=!1;var k=c&&c.ga||this,l=b[sd];if(l){if(-1<Ed(l,k,a,f,h,g))return}else b[sd]=[];l=function(e){h&&this.removeEventListener(a,b,c);e.__target||Gd(e);if(k!==this){var f=Object.getOwnPropertyDescriptor(e, |
|
130 | stopPropagation:function(){Event.prototype.stopPropagation.call(this);this.ba=!0},stopImmediatePropagation:function(){Event.prototype.stopImmediatePropagation.call(this);this.ba=this.za=!0}};function $c(a){function b(b,d){b=new a(b,d);b.O=d&&!!d.composed;return b}Va(b,a);b.prototype=a.prototype;return b}var ad={focus:!0,blur:!0};function bd(a){return a.__target!==a.target||a.ca!==a.relatedTarget} | |
132 | "currentTarget");Object.defineProperty(e,"currentTarget",{get:function(){return k},configurable:!0})}e.__previousCurrentTarget=e.currentTarget;if(!z(k)||-1!=e.composedPath().indexOf(k))if(e.composed||-1<e.composedPath().indexOf(k))if(Bd(e)&&e.target===e.relatedTarget)e.eventPhase===Event.BUBBLING_PHASE&&e.stopImmediatePropagation();else if(e.eventPhase===Event.CAPTURING_PHASE||e.bubbles||e.target===k||k instanceof Window){var g="function"===d?b.call(k,e):b.handleEvent&&b.handleEvent(e);k!==this&& |
|
131 | function cd(a,b,c){if(c=b.__handlers&&b.__handlers[a.type]&&b.__handlers[a.type][c])for(var d=0,e;(e=c[d])&&(!bd(a)||a.target!==a.relatedTarget)&&(e.call(b,a),!a.za);d++);} | |
133 | (f?(Object.defineProperty(e,"currentTarget",f),f=null):delete e.currentTarget);return g}};b[sd].push({node:k,type:a,capture:f,once:h,passive:g,hb:l});Ad[a]?(this.__handlers=this.__handlers||{},this.__handlers[a]=this.__handlers[a]||{capture:[],bubble:[]},this.__handlers[a][f?"capture":"bubble"].push(l)):e.call(this,a,l,c)}}} |
|
132 | function dd(a){var b=a.composedPath();Object.defineProperty(a,"currentTarget",{get:function(){return d},configurable:!0});for(var c=b.length-1;0<=c;c--){var d=b[c];cd(a,d,"capture");if(a.ba)return}Object.defineProperty(a,"eventPhase",{get:function(){return Event.AT_TARGET}});var e;for(c=0;c<b.length;c++){d=b[c];var f=v(d);f=f&&f.root;if(0===c||f&&f===e)if(cd(a,d,"bubble"),d!==window&&(e=d.getRootNode()),a.ba)break}} | |
134 | function Hd(a,b,c){if(b){var d=this instanceof Window?A.gb:A.removeEventListener;if(vd[a])return d.call(this,a,b,c);if(c&&"object"===typeof c){var e=!!c.capture;var f=!!c.once;var h=!!c.passive}else e=!!c,h=f=!1;var g=c&&c.ga||this,k=void 0;var l=null;try{l=b[sd]}catch(m){}l&&(f=Ed(l,g,a,e,f,h),-1<f&&(k=l.splice(f,1)[0].hb,l.length||(b[sd]=void 0)));d.call(this,a,k||b,c);k&&Ad[a]&&this.__handlers&&this.__handlers[a]&&(a=this.__handlers[a][e?"capture":"bubble"],k=a.indexOf(k),-1<k&&a.splice(k,1))}} |
|
133 | function ed(a,b,c,d,e,f){for(var h=0;h<a.length;h++){var g=a[h],k=g.type,l=g.capture,m=g.once,p=g.passive;if(b===g.node&&c===k&&d===l&&e===m&&f===p)return h}return-1} | |
135 | function Id(){for(var a in Ad)window.addEventListener(a,function(a){a.__target||(Gd(a),Dd(a))},!0)}function Gd(a){a.__target=a.target;a.ea=a.relatedTarget;if(y.w){var b=Object.getPrototypeOf(a);if(!b.hasOwnProperty("__patchProto")){var c=Object.create(b);c.jb=b;Fb(c,yd);b.__patchProto=c}a.__proto__=b.__patchProto}else Fb(a,yd)}var Jd=zd(window.Event),Kd=zd(window.CustomEvent),Ld=zd(window.MouseEvent); |
|
134 | function fd(a,b,c){if(b){var d=typeof b;if("function"===d||"object"===d)if("object"!==d||b.handleEvent&&"function"===typeof b.handleEvent){var e=this instanceof Window?z.eb:z.addEventListener;if(Wc[a])return e.call(this,a,b,c);if(c&&"object"===typeof c){var f=!!c.capture;var h=!!c.once;var g=!!c.passive}else f=!!c,g=h=!1;var k=c&&c.ea||this,l=b[Tc];if(l){if(-1<ed(l,k,a,f,h,g))return}else b[Tc]=[];l=function(e){h&&this.removeEventListener(a,b,c);e.__target||gd(e);if(k!==this){var f=Object.getOwnPropertyDescriptor(e, | |
136 | function Md(){window.Event=Jd;window.CustomEvent=Kd;window.MouseEvent=Ld;Id();if(!td&&Object.getOwnPropertyDescriptor(Event.prototype,"isTrusted")){var a=function(){var a=new MouseEvent("click",{bubbles:!0,cancelable:!0,composed:!0});this.dispatchEvent(a)};Element.prototype.click?Element.prototype.click=a:HTMLElement.prototype.click&&(HTMLElement.prototype.click=a)}};function Nd(a,b){return{index:a,O:[],X:b}} |
|
135 | "currentTarget");Object.defineProperty(e,"currentTarget",{get:function(){return k},configurable:!0})}e.__previousCurrentTarget=e.currentTarget;if(!y(k)||-1!=e.composedPath().indexOf(k))if(e.composed||-1<e.composedPath().indexOf(k))if(bd(e)&&e.target===e.relatedTarget)e.eventPhase===Event.BUBBLING_PHASE&&e.stopImmediatePropagation();else if(e.eventPhase===Event.CAPTURING_PHASE||e.bubbles||e.target===k||k instanceof Window){var g="function"===d?b.call(k,e):b.handleEvent&&b.handleEvent(e);k!==this&& | |
137 | function Od(a,b,c,d){var e=0,f=0,h=0,g=0,k=Math.min(b-e,d-f);if(0==e&&0==f)a:{for(h=0;h<k;h++)if(a[h]!==c[h])break a;h=k}if(b==a.length&&d==c.length){g=a.length;for(var l=c.length,m=0;m<k-h&&Pd(a[--g],c[--l]);)m++;g=m}e+=h;f+=h;b-=g;d-=g;if(0==b-e&&0==d-f)return[];if(e==b){for(b=Nd(e,0);f<d;)b.O.push(c[f++]);return[b]}if(f==d)return[Nd(e,b-e)];k=e;h=f;d=d-h+1;g=b-k+1;b=Array(d);for(l=0;l<d;l++)b[l]=Array(g),b[l][0]=l;for(l=0;l<g;l++)b[0][l]=l;for(l=1;l<d;l++)for(m=1;m<g;m++)if(a[k+m-1]===c[h+l-1])b[l][m]= |
|
136 | (f?(Object.defineProperty(e,"currentTarget",f),f=null):delete e.currentTarget);return g}};b[Tc].push({node:k,type:a,capture:f,once:h,passive:g,gb:l});ad[a]?(this.__handlers=this.__handlers||{},this.__handlers[a]=this.__handlers[a]||{capture:[],bubble:[]},this.__handlers[a][f?"capture":"bubble"].push(l)):e.call(this,a,l,c)}}} | |
138 | b[l-1][m-1];else{var n=b[l-1][m]+1,t=b[l][m-1]+1;b[l][m]=n<t?n:t}k=b.length-1;h=b[0].length-1;d=b[k][h];for(a=[];0<k||0<h;)0==k?(a.push(2),h--):0==h?(a.push(3),k--):(g=b[k-1][h-1],l=b[k-1][h],m=b[k][h-1],n=l<m?l<g?l:g:m<g?m:g,n==g?(g==d?a.push(0):(a.push(1),d=g),k--,h--):n==l?(a.push(3),k--,d=l):(a.push(2),h--,d=m));a.reverse();b=void 0;k=[];for(h=0;h<a.length;h++)switch(a[h]){case 0:b&&(k.push(b),b=void 0);e++;f++;break;case 1:b||(b=Nd(e,0));b.X++;e++;b.O.push(c[f]);f++;break;case 2:b||(b=Nd(e,0)); |
|
137 | function hd(a,b,c){if(b){var d=this instanceof Window?z.fb:z.removeEventListener;if(Wc[a])return d.call(this,a,b,c);if(c&&"object"===typeof c){var e=!!c.capture;var f=!!c.once;var h=!!c.passive}else e=!!c,h=f=!1;var g=c&&c.ea||this,k=void 0;var l=null;try{l=b[Tc]}catch(m){}l&&(f=ed(l,g,a,e,f,h),-1<f&&(k=l.splice(f,1)[0].gb,l.length||(b[Tc]=void 0)));d.call(this,a,k||b,c);k&&ad[a]&&this.__handlers&&this.__handlers[a]&&(a=this.__handlers[a][e?"capture":"bubble"],k=a.indexOf(k),-1<k&&a.splice(k,1))}} | |
139 | b.X++;e++;break;case 3:b||(b=Nd(e,0)),b.O.push(c[f]),f++}b&&k.push(b);return k}function Pd(a,b){return a===b};var hd=J.parentNode,Qd=J.childNodes,Rd={},Sd=y.deferConnectionCallbacks&&"loading"===document.readyState,Td;function Ud(a){var b=[];do b.unshift(a);while(a=a.parentNode);return b} |
|
138 | function id(){for(var a in ad)window.addEventListener(a,function(a){a.__target||(gd(a),dd(a))},!0)}function gd(a){a.__target=a.target;a.ca=a.relatedTarget;if(w.w){var b=Object.getPrototypeOf(a);if(!b.hasOwnProperty("__patchProto")){var c=Object.create(b);c.hb=b;Ta(c,Zc);b.__patchProto=c}a.__proto__=b.__patchProto}else Ta(a,Zc)}var jd=$c(window.Event),kd=$c(window.CustomEvent),ld=$c(window.MouseEvent); | |
140 | function Tc(a,b,c){if(a!==Rd)throw new TypeError("Illegal constructor");this.La="ShadyRoot";this.host=b;this.c=c&&c.mode;Yc(b);a=w(b);a.root=this;a.ya="closed"!==this.c?this:null;a=w(this);a.firstChild=a.lastChild=a.parentNode=a.nextSibling=a.previousSibling=null;a.childNodes=[];this.b=this.W=!1;this.a=this.j=this.g=null;bd(this)}function bd(a){a.W||(a.W=!0,Rb(function(){return Vd(a)}))} |
|
139 | function md(){window.Event=jd;window.CustomEvent=kd;window.MouseEvent=ld;id();if(!Uc&&Object.getOwnPropertyDescriptor(Event.prototype,"isTrusted")){var a=function(){var a=new MouseEvent("click",{bubbles:!0,cancelable:!0,composed:!0});this.dispatchEvent(a)};Element.prototype.click?Element.prototype.click=a:HTMLElement.prototype.click&&(HTMLElement.prototype.click=a)}};function nd(a,b){return{index:a,M:[],T:b}} | |
141 | function Vd(a){for(var b;a;){a.W&&(b=a);a:{var c=a;a=c.host.getRootNode();if(z(a))for(var d=c.host.childNodes,e=0;e<d.length;e++)if(c=d[e],"slot"==c.localName)break a;a=void 0}}b&&b._renderRoot()} |
|
140 | function od(a,b,c,d){var e=0,f=0,h=0,g=0,k=Math.min(b-e,d-f);if(0==e&&0==f)a:{for(h=0;h<k;h++)if(a[h]!==c[h])break a;h=k}if(b==a.length&&d==c.length){g=a.length;for(var l=c.length,m=0;m<k-h&&pd(a[--g],c[--l]);)m++;g=m}e+=h;f+=h;b-=g;d-=g;if(0==b-e&&0==d-f)return[];if(e==b){for(b=nd(e,0);f<d;)b.M.push(c[f++]);return[b]}if(f==d)return[nd(e,b-e)];k=e;h=f;d=d-h+1;g=b-k+1;b=Array(d);for(l=0;l<d;l++)b[l]=Array(g),b[l][0]=l;for(l=0;l<g;l++)b[0][l]=l;for(l=1;l<d;l++)for(m=1;m<g;m++)if(a[k+m-1]===c[h+l-1])b[l][m]= | |
142 | Tc.prototype._renderRoot=function(){var a=Sd;Sd=!0;this.W=!1;if(this.g){gd(this);for(var b=0,c;b<this.g.length;b++){c=this.g[b];var d=x(c),e=d.assignedNodes;d.assignedNodes=[];d.D=[];if(d.la=e)for(d=0;d<e.length;d++){var f=x(e[d]);f.U=f.assignedSlot;f.assignedSlot===c&&(f.assignedSlot=null)}}for(c=this.host.firstChild;c;c=c.nextSibling)Wd(this,c);for(b=0;b<this.g.length;b++){c=this.g[b];e=x(c);if(!e.assignedNodes.length)for(d=c.firstChild;d;d=d.nextSibling)Wd(this,d,c);(d=(d=x(c.parentNode))&&d.root)&& |
|
141 | b[l-1][m-1];else{var p=b[l-1][m]+1,x=b[l][m-1]+1;b[l][m]=p<x?p:x}k=b.length-1;h=b[0].length-1;d=b[k][h];for(a=[];0<k||0<h;)0==k?(a.push(2),h--):0==h?(a.push(3),k--):(g=b[k-1][h-1],l=b[k-1][h],m=b[k][h-1],p=l<m?l<g?l:g:m<g?m:g,p==g?(g==d?a.push(0):(a.push(1),d=g),k--,h--):p==l?(a.push(3),k--,d=l):(a.push(2),h--,d=m));a.reverse();b=void 0;k=[];for(h=0;h<a.length;h++)switch(a[h]){case 0:b&&(k.push(b),b=void 0);e++;f++;break;case 1:b||(b=nd(e,0));b.T++;e++;b.M.push(c[f]);f++;break;case 2:b||(b=nd(e,0)); | |
143 | id(d)&&d._renderRoot();Xd(this,e.D,e.assignedNodes);if(d=e.la){for(f=0;f<d.length;f++)x(d[f]).U=null;e.la=null;d.length>e.assignedNodes.length&&(e.Z=!0)}e.Z&&(e.Z=!1,Yd(this,c))}b=this.g;c=[];for(e=0;e<b.length;e++)d=b[e].parentNode,(f=x(d))&&f.root||!(0>c.indexOf(d))||c.push(d);for(b=0;b<c.length;b++){e=c[b];d=e===this?this.host:e;f=[];e=e.childNodes;for(var h=0;h<e.length;h++){var g=e[h];if("slot"==g.localName){g=x(g).D;for(var k=0;k<g.length;k++)f.push(g[k])}else f.push(g)}e=void 0;h=Qd(d);g=Od(f, |
|
142 | b.T++;e++;break;case 3:b||(b=nd(e,0)),b.M.push(c[f]),f++}b&&k.push(b);return k}function pd(a,b){return a===b};var qd=G.parentNode,rd=G.childNodes,sd={},td=w.deferConnectionCallbacks&&"loading"===document.readyState,ud;function vd(a){var b=[];do b.unshift(a);while(a=a.parentNode);return b} | |
144 | f.length,h,h.length);for(var l=k=0;k<g.length&&(e=g[k]);k++){for(var m=0,n;m<e.O.length&&(n=e.O[m]);m++)hd(n)===d&&A.removeChild.call(d,n),h.splice(e.index+l,1);l-=e.X}for(l=0;l<g.length&&(e=g[l]);l++)for(k=h[e.index],m=e.index;m<e.index+e.X;m++)n=f[m],A.insertBefore.call(d,n,k),h.splice(m,0,n)}}if(!this.b)for(n=this.host.childNodes,c=0,b=n.length;c<b;c++)e=n[c],d=x(e),hd(e)!==this.host||"slot"!==e.localName&&d.assignedSlot||A.removeChild.call(this.host,e);this.b=!0;Sd=a;Td&&Td()}; |
|
143 | function ic(a,b,c){if(a!==sd)throw new TypeError("Illegal constructor");this.Ga="ShadyRoot";this.host=b;this.c=c&&c.mode;pc(b);a=u(b);a.root=this;a.ta="closed"!==this.c?this:null;a=u(this);a.firstChild=a.lastChild=a.parentNode=a.nextSibling=a.previousSibling=null;a.childNodes=[];this.b=this.S=!1;this.a=this.i=this.g=null;Cc(this)}function Cc(a){a.S||(a.S=!0,eb(function(){return wd(a)}))} | |
145 | function Wd(a,b,c){var d=w(b),e=d.U;d.U=null;c||(c=(a=a.j[b.slot||"__catchall"])&&a[0]);c?(w(c).assignedNodes.push(b),d.assignedSlot=c):d.assignedSlot=void 0;e!==d.assignedSlot&&d.assignedSlot&&(w(d.assignedSlot).Z=!0)}function Xd(a,b,c){for(var d=0,e;d<c.length&&(e=c[d]);d++)if("slot"==e.localName){var f=x(e).assignedNodes;f&&f.length&&Xd(a,b,f)}else b.push(c[d])}function Yd(a,b){A.dispatchEvent.call(b,new Event("slotchange"));b=x(b);b.assignedSlot&&Yd(a,b.assignedSlot)} |
|
144 | function wd(a){for(var b;a;){a.S&&(b=a);a:{var c=a;a=c.host.getRootNode();if(y(a))for(var d=c.host.childNodes,e=0;e<d.length;e++)if(c=d[e],"slot"==c.localName)break a;a=void 0}}b&&b._renderRoot()} | |
146 | function gd(a){if(a.a&&a.a.length){for(var b=a.a,c,d=0;d<b.length;d++){var e=b[d];Yc(e);Yc(e.parentNode);var f=kd(e);a.j[f]?(c=c||{},c[f]=!0,a.j[f].push(e)):a.j[f]=[e];a.g.push(e)}if(c)for(var h in c)a.j[h]=ld(a.j[h]);a.a=[]}}function kd(a){var b=a.name||a.getAttribute("name")||"__catchall";return a.Ga=b}function ld(a){return a.sort(function(a,c){a=Ud(a);for(var b=Ud(c),e=0;e<a.length;e++){c=a[e];var f=b[e];if(c!==f)return a=Array.from(c.parentNode.childNodes),a.indexOf(c)-a.indexOf(f)}})} |
|
145 | ic.prototype._renderRoot=function(){var a=td;td=!0;this.S=!1;if(this.g){Kc(this);for(var b=0,c;b<this.g.length;b++){c=this.g[b];var d=v(c),e=d.assignedNodes;d.assignedNodes=[];d.D=[];if(d.ga=e)for(d=0;d<e.length;d++){var f=v(e[d]);f.R=f.assignedSlot;f.assignedSlot===c&&(f.assignedSlot=null)}}for(b=this.host.firstChild;b;b=b.nextSibling)xd(this,b);for(b=0;b<this.g.length;b++){c=this.g[b];e=v(c);if(!e.assignedNodes.length)for(d=c.firstChild;d;d=d.nextSibling)xd(this,d,c);(d=(d=v(c.parentNode))&&d.root)&& | |
147 | function id(a){gd(a);return!(!a.g||!a.g.length)} |
|
146 | Ic(d)&&d._renderRoot();yd(this,e.D,e.assignedNodes);if(d=e.ga){for(f=0;f<d.length;f++)v(d[f]).R=null;e.ga=null;d.length>e.assignedNodes.length&&(e.W=!0)}e.W&&(e.W=!1,zd(this,c))}c=this.g;b=[];for(e=0;e<c.length;e++)d=c[e].parentNode,(f=v(d))&&f.root||!(0>b.indexOf(d))||b.push(d);for(c=0;c<b.length;c++){f=b[c];e=f===this?this.host:f;d=[];f=f.childNodes;for(var h=0;h<f.length;h++){var g=f[h];if("slot"==g.localName){g=v(g).D;for(var k=0;k<g.length;k++)d.push(g[k])}else d.push(g)}f=rd(e);h=od(d,d.length, | |
148 | if(window.customElements&&y.na){var Zd=new Map;Td=function(){var a=Array.from(Zd);Zd.clear();a=ma(a);for(var b=a.next();!b.done;b=a.next()){b=ma(b.value);var c=b.next().value;b.next().value?c.Ea():c.Fa()}};Sd&&document.addEventListener("readystatechange",function(){Sd=!1;Td()},{once:!0});var $d=function(a,b,c){var d=0,e="__isConnected"+d++;if(b||c)a.prototype.connectedCallback=a.prototype.Ea=function(){Sd?Zd.set(this,!0):this[e]||(this[e]=!0,b&&b.call(this))},a.prototype.disconnectedCallback=a.prototype.Fa= |
|
147 | f,f.length);k=g=0;for(var l=void 0;g<h.length&&(l=h[g]);g++){for(var m=0,p=void 0;m<l.M.length&&(p=l.M[m]);m++)qd(p)===e&&z.removeChild.call(e,p),f.splice(l.index+k,1);k-=l.T}k=0;for(l=void 0;k<h.length&&(l=h[k]);k++)for(g=f[l.index],m=l.index;m<l.index+l.T;m++)p=d[m],z.insertBefore.call(e,p,g),f.splice(m,0,p)}}if(!this.b)for(b=this.host.childNodes,c=0,e=b.length;c<e;c++)d=b[c],f=v(d),qd(d)!==this.host||"slot"!==d.localName&&f.assignedSlot||z.removeChild.call(this.host,d);this.b=!0;td=a;ud&&ud()}; | |
149 | function(){Sd?this.isConnected||Zd.set(this,!1):this[e]&&(this[e]=!1,c&&c.call(this))};return a},define=window.customElements.define;Object.defineProperty(window.CustomElementRegistry.prototype,"define",{value:function(a,b){var c=b.prototype.connectedCallback,d=b.prototype.disconnectedCallback;define.call(window.customElements,a,$d(b,c,d));b.prototype.connectedCallback=c;b.prototype.disconnectedCallback=d}})};function ae(a){var b=a.getRootNode();z(b)&&Vd(b);return(a=x(a))&&a.assignedSlot||null} |
|
148 | function xd(a,b,c){var d=u(b),e=d.R;d.R=null;c||(c=(a=a.i[b.slot||"__catchall"])&&a[0]);c?(u(c).assignedNodes.push(b),d.assignedSlot=c):d.assignedSlot=void 0;e!==d.assignedSlot&&d.assignedSlot&&(u(d.assignedSlot).W=!0)}function yd(a,b,c){for(var d=0,e=void 0;d<c.length&&(e=c[d]);d++)if("slot"==e.localName){var f=v(e).assignedNodes;f&&f.length&&yd(a,b,f)}else b.push(c[d])}function zd(a,b){z.dispatchEvent.call(b,new Event("slotchange"));b=v(b);b.assignedSlot&&zd(a,b.assignedSlot)} | |
150 | var be={addEventListener:Fd.bind(window),removeEventListener:Hd.bind(window)},ce={addEventListener:Fd,removeEventListener:Hd,appendChild:function(a){return $c(this,a)},insertBefore:function(a,b){return $c(this,a,b)},removeChild:function(a){return ad(this,a)},replaceChild:function(a,b){$c(this,a,b);ad(this,b);return a},cloneNode:function(a){if("template"==this.localName)var b=A.cloneNode.call(this,a);else if(b=A.cloneNode.call(this,!1),a&&b.nodeType!==Node.ATTRIBUTE_NODE){a=this.childNodes;for(var c= |
|
149 | function Bc(a,b){a.a=a.a||[];a.g=a.g||[];a.i=a.i||{};a.a.push.apply(a.a,b instanceof Array?b:ka(ja(b)))}function Kc(a){if(a.a&&a.a.length){for(var b=a.a,c,d=0;d<b.length;d++){var e=b[d];pc(e);pc(e.parentNode);var f=Lc(e);a.i[f]?(c=c||{},c[f]=!0,a.i[f].push(e)):a.i[f]=[e];a.g.push(e)}if(c)for(var h in c)a.i[h]=Mc(a.i[h]);a.a=[]}}function Lc(a){var b=a.name||a.getAttribute("name")||"__catchall";return a.Da=b} | |
151 | 0,d;c<a.length;c++)d=a[c].cloneNode(!0),b.appendChild(d)}return b},getRootNode:function(){return md(this)},contains:function(a){return Nb(this,a)},dispatchEvent:function(a){Sb();return A.dispatchEvent.call(this,a)}}; |
|
150 | function Mc(a){return a.sort(function(a,c){a=vd(a);for(var b=vd(c),e=0;e<a.length;e++){c=a[e];var f=b[e];if(c!==f)return a=Array.from(c.parentNode.childNodes),a.indexOf(c)-a.indexOf(f)}})}function Hc(a,b){if(a.g){Kc(a);var c=a.i,d;for(d in c)for(var e=c[d],f=0;f<e.length;f++){var h=e[f];if(ab(b,h)){e.splice(f,1);var g=a.g.indexOf(h);0<=g&&a.g.splice(g,1);f--;h=v(h);if(g=h.D)for(var k=0;k<g.length;k++){var l=g[k],m=qd(l);m&&z.removeChild.call(m,l)}h.D=[];h.assignedNodes=[];g=!0}}return g}} | |
152 | Object.defineProperties(ce,{isConnected:{get:function(){if(Ic&&Ic.call(this))return!0;if(this.nodeType==Node.DOCUMENT_FRAGMENT_NODE)return!1;var a=this.ownerDocument;if(Mb){if(A.contains.call(a,this))return!0}else if(a.documentElement&&A.contains.call(a.documentElement,this))return!0;for(a=this;a&&!(a instanceof Document);)a=a.parentNode||(z(a)?a.host:void 0);return!!(a&&a instanceof Document)},configurable:!0}}); |
|
151 | function Ic(a){Kc(a);return!(!a.g||!a.g.length)} | |
153 | var de={get assignedSlot(){return ae(this)}},ee={querySelector:function(a){return nd(this,function(b){return Eb.call(b,a)},function(a){return!!a})[0]||null},querySelectorAll:function(a,b){if(b){b=Array.prototype.slice.call(A.querySelectorAll.call(this,a));var c=this.getRootNode();return b.filter(function(a){return a.getRootNode()==c})}return nd(this,function(b){return Eb.call(b,a)})}},fe={assignedNodes:function(a){if("slot"===this.localName){var b=this.getRootNode();z(b)&&Vd(b);return(b=x(this))? |
|
152 | if(window.customElements&&w.ia){var Ad=new Map;ud=function(){var a=Array.from(Ad);Ad.clear();a=ja(a);for(var b=a.next();!b.done;b=a.next()){b=ja(b.value);var c=b.next().value;b.next().value?c.Ba():c.Ca()}};td&&document.addEventListener("readystatechange",function(){td=!1;ud()},{once:!0});var Bd=function(a,b,c){var d=0,e="__isConnected"+d++;if(b||c)a.prototype.connectedCallback=a.prototype.Ba=function(){td?Ad.set(this,!0):this[e]||(this[e]=!0,b&&b.call(this))},a.prototype.disconnectedCallback=a.prototype.Ca= | |
154 | (a&&a.flatten?b.D:b.assignedNodes)||[]:[]}}},ge=Gb({setAttribute:function(a,b){qd(this,a,b)},removeAttribute:function(a){A.removeAttribute.call(this,a);jd(this,a)},attachShadow:function(a){if(!this)throw"Must provide a host.";if(!a)throw"Not enough arguments.";return new Tc(Rd,this,a)},get slot(){return this.getAttribute("slot")},set slot(a){qd(this,"slot",a)},get assignedSlot(){return ae(this)}},ee,fe);Object.defineProperties(ge,Pc); |
|
153 | function(){td?this.isConnected||Ad.set(this,!1):this[e]&&(this[e]=!1,c&&c.call(this))};return a},Cd=window.customElements.define;Object.defineProperty(window.CustomElementRegistry.prototype,"define",{value:function(a,b){var c=b.prototype.connectedCallback,d=b.prototype.disconnectedCallback;Cd.call(window.customElements,a,Bd(b,c,d));b.prototype.connectedCallback=c;b.prototype.disconnectedCallback=d}})};function Dd(a){var b=a.getRootNode();y(b)&&wd(b);return(a=v(a))&&a.assignedSlot||null} | |
155 | var he=Gb({importNode:function(a,b){return rd(a,b)},getElementById:function(a){return nd(this,function(b){return b.id==a},function(a){return!!a})[0]||null}},ee);Object.defineProperties(he,{_activeElement:Qc.activeElement}); |
|
154 | var Ed={addEventListener:fd.bind(window),removeEventListener:hd.bind(window)},Fd={addEventListener:fd,removeEventListener:hd,appendChild:function(a){return rc(this,a)},insertBefore:function(a,b){return rc(this,a,b)},removeChild:function(a){return uc(this,a)},replaceChild:function(a,b){rc(this,a,b);uc(this,b);return a},cloneNode:function(a){if("template"==this.localName)var b=z.cloneNode.call(this,a);else if(b=z.cloneNode.call(this,!1),a&&b.nodeType!==Node.ATTRIBUTE_NODE){a=this.childNodes;for(var c= | |
156 | for(var ie=HTMLElement.prototype.blur,je={blur:function(){var a=x(this);(a=(a=a&&a.root)&&a.activeElement)?a.blur():ie.call(this)}},ke={},le=ma(Object.getOwnPropertyNames(Document.prototype)),me=le.next();!me.done;ke={u:ke.u},me=le.next())ke.u=me.value,"on"===ke.u.substring(0,2)&&Object.defineProperty(je,ke.u,{set:function(a){return function(b){var c=w(this),d=a.u.substring(2);c.S[a.u]&&this.removeEventListener(d,c.S[a.u]);this.addEventListener(d,b,{});c.S[a.u]=b}}(ke),get:function(a){return function(){var b= |
|
155 | 0,d;c<a.length;c++)d=a[c].cloneNode(!0),b.appendChild(d)}return b},getRootNode:function(){return Nc(this)},contains:function(a){return ab(this,a)},dispatchEvent:function(a){fb();return z.dispatchEvent.call(this,a)}}; | |
157 | x(this);return b&&b.S[a.u]}}(ke),configurable:!0});var ne={addEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.ga=this;this.host.addEventListener(a,b,c)},removeEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.ga=this;this.host.removeEventListener(a,b,c)},getElementById:function(a){return nd(this,function(b){return b.id==a},function(a){return!!a})[0]||null}}; |
|
156 | Object.defineProperties(Fd,{isConnected:{get:function(){if($b&&$b.call(this))return!0;if(this.nodeType==Node.DOCUMENT_FRAGMENT_NODE)return!1;var a=this.ownerDocument;if($a){if(z.contains.call(a,this))return!0}else if(a.documentElement&&z.contains.call(a.documentElement,this))return!0;for(a=this;a&&!(a instanceof Document);)a=a.parentNode||(y(a)?a.host:void 0);return!!(a&&a instanceof Document)},configurable:!0}}); | |
158 | function L(a,b){for(var c=Object.getOwnPropertyNames(b),d=0;d<c.length;d++){var e=c[d],f=Object.getOwnPropertyDescriptor(b,e);f.value?a[e]=f.value:Object.defineProperty(a,e,f)}};if(y.na){var ShadyDOM={inUse:y.na,patch:function(a){Vc(a);Uc(a);return a},isShadyRoot:z,enqueue:Rb,flush:Sb,settings:y,filterMutations:Yb,observeChildren:Wb,unobserveChildren:Xb,nativeMethods:A,nativeTree:J,deferConnectionCallbacks:y.deferConnectionCallbacks};window.ShadyDOM=ShadyDOM;Md();var oe=window.customElements&&window.customElements.nativeHTMLElement||HTMLElement;L(Tc.prototype,ne);L(window.Node.prototype,ce);L(window.Window.prototype,be);L(window.Text.prototype,de);L(window.DocumentFragment.prototype, |
|
157 | var Gd={get assignedSlot(){return Dd(this)}},Hd={querySelector:function(a){return Oc(this,function(b){return Sa.call(b,a)},function(a){return!!a})[0]||null},querySelectorAll:function(a,b){if(b){b=Array.prototype.slice.call(z.querySelectorAll.call(this,a));var c=this.getRootNode();return b.filter(function(a){return a.getRootNode()==c})}return Oc(this,function(b){return Sa.call(b,a)})}},Id={assignedNodes:function(a){if("slot"===this.localName){var b=this.getRootNode();y(b)&&wd(b);return(b=v(this))? | |
159 | ee);L(window.Element.prototype,ge);L(window.Document.prototype,he);window.HTMLSlotElement&&L(window.HTMLSlotElement.prototype,fe);L(oe.prototype,je);y.w&&(Rc(window.Node.prototype),Rc(window.Text.prototype),Rc(window.DocumentFragment.prototype),Rc(window.Element.prototype),Rc(oe.prototype),Rc(window.Document.prototype),window.HTMLSlotElement&&Rc(window.HTMLSlotElement.prototype));Sc();window.ShadowRoot=Tc};var pe=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function qe(a){var b=pe.has(a);a=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(a);return!b&&a}function M(a){var b=a.isConnected;if(void 0!==b)return b;for(;a&&!(a.__CE_isImportDocument||a instanceof Document);)a=a.parentNode||(window.ShadowRoot&&a instanceof ShadowRoot?a.host:void 0);return!(!a||!(a.__CE_isImportDocument||a instanceof Document))} |
|
158 | (a&&a.flatten?b.D:b.assignedNodes)||[]:[]}}},Jd=Ua({setAttribute:function(a,b){Rc(this,a,b)},removeAttribute:function(a){z.removeAttribute.call(this,a);Jc(this,a)},attachShadow:function(a){if(!this)throw"Must provide a host.";if(!a)throw"Not enough arguments.";return new ic(sd,this,a)},get slot(){return this.getAttribute("slot")},set slot(a){Rc(this,"slot",a)},get assignedSlot(){return Dd(this)}},Hd,Id);Object.defineProperties(Jd,ec); | |
160 | function re(a,b){for(;b&&b!==a&&!b.nextSibling;)b=b.parentNode;return b&&b!==a?b.nextSibling:null} |
|
159 | var Kd=Ua({importNode:function(a,b){return Sc(a,b)},getElementById:function(a){return Oc(this,function(b){return b.id==a},function(a){return!!a})[0]||null}},Hd);Object.defineProperties(Kd,{_activeElement:fc.activeElement}); | |
161 | function se(a,b,c){c=void 0===c?new Set:c;for(var d=a;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d;b(e);var f=e.localName;if("link"===f&&"import"===e.getAttribute("rel")){d=e.import;if(d instanceof Node&&!c.has(d))for(c.add(d),d=d.firstChild;d;d=d.nextSibling)se(d,b,c);d=re(a,e);continue}else if("template"===f){d=re(a,e);continue}if(e=e.__CE_shadowRoot)for(e=e.firstChild;e;e=e.nextSibling)se(e,b,c)}d=d.firstChild?d.firstChild:re(a,d)}}function N(a,b,c){a[b]=c};function te(){this.a=new Map;this.o=new Map;this.i=[];this.c=!1}function ue(a,b,c){a.a.set(b,c);a.o.set(c.constructor,c)}function ve(a,b){a.c=!0;a.i.push(b)}function we(a,b){a.c&&se(b,function(b){return a.b(b)})}te.prototype.b=function(a){if(this.c&&!a.__CE_patched){a.__CE_patched=!0;for(var b=0;b<this.i.length;b++)this.i[b](a)}};function O(a,b){var c=[];se(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state?a.connectedCallback(d):xe(a,d)}} |
|
160 | for(var Ld=HTMLElement.prototype.blur,Md={blur:function(){var a=v(this);(a=(a=a&&a.root)&&a.activeElement)?a.blur():Ld.call(this)}},Nd={},Od=ja(Object.getOwnPropertyNames(Document.prototype)),Pd=Od.next();!Pd.done;Nd={s:Nd.s},Pd=Od.next())Nd.s=Pd.value,"on"===Nd.s.substring(0,2)&&Object.defineProperty(Md,Nd.s,{set:function(a){return function(b){var c=u(this),d=a.s.substring(2);c.P[a.s]&&this.removeEventListener(d,c.P[a.s]);this.addEventListener(d,b,{});c.P[a.s]=b}}(Nd),get:function(a){return function(){var b= | |
162 | function P(a,b){var c=[];se(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state&&a.disconnectedCallback(d)}} |
|
161 | v(this);return b&&b.P[a.s]}}(Nd),configurable:!0});var Qd={addEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.ea=this;this.host.addEventListener(a,b,c)},removeEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.ea=this;this.host.removeEventListener(a,b,c)},getElementById:function(a){return Oc(this,function(b){return b.id==a},function(a){return!!a})[0]||null}}; | |
163 | function Q(a,b,c){c=void 0===c?{}:c;var d=c.eb||new Set,e=c.ca||function(b){return xe(a,b)},f=[];se(b,function(b){if("link"===b.localName&&"import"===b.getAttribute("rel")){var c=b.import;c instanceof Node&&(c.__CE_isImportDocument=!0,c.__CE_hasRegistry=!0);c&&"complete"===c.readyState?c.__CE_documentLoadHandled=!0:b.addEventListener("load",function(){var c=b.import;if(!c.__CE_documentLoadHandled){c.__CE_documentLoadHandled=!0;var f=new Set(d);f.delete(c);Q(a,c,{eb:f,ca:e})}})}else f.push(b)},d); |
|
162 | function I(a,b){for(var c=Object.getOwnPropertyNames(b),d=0;d<c.length;d++){var e=c[d],f=Object.getOwnPropertyDescriptor(b,e);f.value?a[e]=f.value:Object.defineProperty(a,e,f)}};if(w.ia){var ShadyDOM={inUse:w.ia,patch:function(a){kc(a);jc(a);return a},isShadyRoot:y,enqueue:eb,flush:fb,settings:w,filterMutations:ob,observeChildren:ib,unobserveChildren:nb,nativeMethods:z,nativeTree:G,deferConnectionCallbacks:w.deferConnectionCallbacks,handlesDynamicScoping:!0};window.ShadyDOM=ShadyDOM;md();var Rd=window.customElements&&window.customElements.nativeHTMLElement||HTMLElement;I(ic.prototype,Qd);I(window.Node.prototype,Fd);I(window.Window.prototype,Ed);I(window.Text.prototype,Gd); | |
164 | if(a.c)for(b=0;b<f.length;b++)a.b(f[b]);for(b=0;b<f.length;b++)e(f[b])} |
|
163 | I(window.DocumentFragment.prototype,Hd);I(window.Element.prototype,Jd);I(window.Document.prototype,Kd);window.HTMLSlotElement&&I(window.HTMLSlotElement.prototype,Id);I(Rd.prototype,Md);w.w&&(gc(window.Node.prototype),gc(window.Text.prototype),gc(window.DocumentFragment.prototype),gc(window.Element.prototype),gc(Rd.prototype),gc(window.Document.prototype),window.HTMLSlotElement&&gc(window.HTMLSlotElement.prototype));hc();window.ShadowRoot=ic};var Sd=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function Td(a){var b=Sd.has(a);a=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(a);return!b&&a}function J(a){var b=a.isConnected;if(void 0!==b)return b;for(;a&&!(a.__CE_isImportDocument||a instanceof Document);)a=a.parentNode||(window.ShadowRoot&&a instanceof ShadowRoot?a.host:void 0);return!(!a||!(a.__CE_isImportDocument||a instanceof Document))} | |
165 | function xe(a,b){if(void 0===b.__CE_state){var c=b.ownerDocument;if(c.defaultView||c.__CE_isImportDocument&&c.__CE_hasRegistry)if(c=a.a.get(b.localName)){c.constructionStack.push(b);var d=c.constructor;try{try{if(new d!==b)throw Error("The custom element constructor did not produce the element being upgraded.");}finally{c.constructionStack.pop()}}catch(h){throw b.__CE_state=2,h;}b.__CE_state=1;b.__CE_definition=c;if(c.attributeChangedCallback)for(c=c.observedAttributes,d=0;d<c.length;d++){var e=c[d], |
|
164 | function Ud(a,b){for(;b&&b!==a&&!b.nextSibling;)b=b.parentNode;return b&&b!==a?b.nextSibling:null} | |
166 | f=b.getAttribute(e);null!==f&&a.attributeChangedCallback(b,e,null,f,null)}M(b)&&a.connectedCallback(b)}}}te.prototype.connectedCallback=function(a){var b=a.__CE_definition;b.connectedCallback&&b.connectedCallback.call(a)};te.prototype.disconnectedCallback=function(a){var b=a.__CE_definition;b.disconnectedCallback&&b.disconnectedCallback.call(a)}; |
|
165 | function Vd(a,b,c){c=void 0===c?new Set:c;for(var d=a;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d;b(e);var f=e.localName;if("link"===f&&"import"===e.getAttribute("rel")){d=e.import;if(d instanceof Node&&!c.has(d))for(c.add(d),d=d.firstChild;d;d=d.nextSibling)Vd(d,b,c);d=Ud(a,e);continue}else if("template"===f){d=Ud(a,e);continue}if(e=e.__CE_shadowRoot)for(e=e.firstChild;e;e=e.nextSibling)Vd(e,b,c)}d=d.firstChild?d.firstChild:Ud(a,d)}}function K(a,b,c){a[b]=c};function Wd(){this.a=new Map;this.h=new Map;this.f=[];this.c=!1}function Xd(a,b,c){a.a.set(b,c);a.h.set(c.constructor,c)}function Yd(a,b){a.c=!0;a.f.push(b)}function Zd(a,b){a.c&&Vd(b,function(b){return a.b(b)})}Wd.prototype.b=function(a){if(this.c&&!a.__CE_patched){a.__CE_patched=!0;for(var b=0;b<this.f.length;b++)this.f[b](a)}};function L(a,b){var c=[];Vd(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state?a.connectedCallback(d):$d(a,d)}} | |
167 | te.prototype.attributeChangedCallback=function(a,b,c,d,e){var f=a.__CE_definition;f.attributeChangedCallback&&-1<f.observedAttributes.indexOf(b)&&f.attributeChangedCallback.call(a,b,c,d,e)};function ye(a){var b=document;this.l=a;this.a=b;this.H=void 0;Q(this.l,this.a);"loading"===this.a.readyState&&(this.H=new MutationObserver(this.b.bind(this)),this.H.observe(this.a,{childList:!0,subtree:!0}))}function ze(a){a.H&&a.H.disconnect()}ye.prototype.b=function(a){var b=this.a.readyState;"interactive"!==b&&"complete"!==b||ze(this);for(b=0;b<a.length;b++)for(var c=a[b].addedNodes,d=0;d<c.length;d++)Q(this.l,c[d])};function Ae(){var a=this;this.b=this.a=void 0;this.c=new Promise(function(b){a.b=b;a.a&&b(a.a)})}Ae.prototype.resolve=function(a){if(this.a)throw Error("Already resolved.");this.a=a;this.b&&this.b(a)};function R(a){this.ia=!1;this.l=a;this.ma=new Map;this.ja=function(a){return a()};this.T=!1;this.ka=[];this.Ja=new ye(a)}p=R.prototype; |
|
166 | function M(a,b){var c=[];Vd(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state&&a.disconnectedCallback(d)}} | |
168 | p.define=function(a,b){var c=this;if(!(b instanceof Function))throw new TypeError("Custom element constructors must be functions.");if(!qe(a))throw new SyntaxError("The element name '"+a+"' is not valid.");if(this.l.a.get(a))throw Error("A custom element with name '"+a+"' has already been defined.");if(this.ia)throw Error("A custom element is already being defined.");this.ia=!0;try{var d=function(a){var b=e[a];if(void 0!==b&&!(b instanceof Function))throw Error("The '"+a+"' callback must be a function."); |
|
167 | function O(a,b,c){c=void 0===c?{}:c;var d=c.cb||new Set,e=c.$||function(b){return $d(a,b)},f=[];Vd(b,function(b){if("link"===b.localName&&"import"===b.getAttribute("rel")){var c=b.import;c instanceof Node&&(c.__CE_isImportDocument=!0,c.__CE_hasRegistry=!0);c&&"complete"===c.readyState?c.__CE_documentLoadHandled=!0:b.addEventListener("load",function(){var c=b.import;if(!c.__CE_documentLoadHandled){c.__CE_documentLoadHandled=!0;var f=new Set(d);f.delete(c);O(a,c,{cb:f,$:e})}})}else f.push(b)},d);if(a.c)for(b= | |
169 | return b},e=b.prototype;if(!(e instanceof Object))throw new TypeError("The custom element constructor's prototype is not an object.");var f=d("connectedCallback");var h=d("disconnectedCallback");var g=d("adoptedCallback");var k=d("attributeChangedCallback");var l=b.observedAttributes||[]}catch(m){return}finally{this.ia=!1}b={localName:a,constructor:b,connectedCallback:f,disconnectedCallback:h,adoptedCallback:g,attributeChangedCallback:k,observedAttributes:l,constructionStack:[]};ue(this.l,a,b);this.ka.push(b); |
|
168 | 0;b<f.length;b++)a.b(f[b]);for(b=0;b<f.length;b++)e(f[b])} | |
170 | this.T||(this.T=!0,this.ja(function(){return Be(c)}))};p.ca=function(a){Q(this.l,a)}; |
|
169 | function $d(a,b){if(void 0===b.__CE_state){var c=b.ownerDocument;if(c.defaultView||c.__CE_isImportDocument&&c.__CE_hasRegistry)if(c=a.a.get(b.localName)){c.constructionStack.push(b);var d=c.constructor;try{try{if(new d!==b)throw Error("The custom element constructor did not produce the element being upgraded.");}finally{c.constructionStack.pop()}}catch(h){throw b.__CE_state=2,h;}b.__CE_state=1;b.__CE_definition=c;if(c.attributeChangedCallback)for(c=c.observedAttributes,d=0;d<c.length;d++){var e=c[d], | |
171 | function Be(a){if(!1!==a.T){a.T=!1;for(var b=a.ka,c=[],d=new Map,e=0;e<b.length;e++)d.set(b[e].localName,[]);Q(a.l,document,{ca:function(b){if(void 0===b.__CE_state){var e=b.localName,f=d.get(e);f?f.push(b):a.l.a.get(e)&&c.push(b)}}});for(e=0;e<c.length;e++)xe(a.l,c[e]);for(;0<b.length;){var f=b.shift();e=f.localName;f=d.get(f.localName);for(var h=0;h<f.length;h++)xe(a.l,f[h]);(e=a.ma.get(e))&&e.resolve(void 0)}}}p.get=function(a){if(a=this.l.a.get(a))return a.constructor}; |
|
170 | f=b.getAttribute(e);null!==f&&a.attributeChangedCallback(b,e,null,f,null)}J(b)&&a.connectedCallback(b)}}}Wd.prototype.connectedCallback=function(a){var b=a.__CE_definition;b.connectedCallback&&b.connectedCallback.call(a)};Wd.prototype.disconnectedCallback=function(a){var b=a.__CE_definition;b.disconnectedCallback&&b.disconnectedCallback.call(a)}; | |
172 | p.whenDefined=function(a){if(!qe(a))return Promise.reject(new SyntaxError("'"+a+"' is not a valid custom element name."));var b=this.ma.get(a);if(b)return b.c;b=new Ae;this.ma.set(a,b);this.l.a.get(a)&&!this.ka.some(function(b){return b.localName===a})&&b.resolve(void 0);return b.c};p.Za=function(a){ze(this.Ja);var b=this.ja;this.ja=function(c){return a(function(){return b(c)})}};window.CustomElementRegistry=R;R.prototype.define=R.prototype.define;R.prototype.upgrade=R.prototype.ca; |
|
171 | Wd.prototype.attributeChangedCallback=function(a,b,c,d,e){var f=a.__CE_definition;f.attributeChangedCallback&&-1<f.observedAttributes.indexOf(b)&&f.attributeChangedCallback.call(a,b,c,d,e)};function ae(a){var b=document;this.b=a;this.a=b;this.G=void 0;O(this.b,this.a);"loading"===this.a.readyState&&(this.G=new MutationObserver(this.c.bind(this)),this.G.observe(this.a,{childList:!0,subtree:!0}))}function be(a){a.G&&a.G.disconnect()}ae.prototype.c=function(a){var b=this.a.readyState;"interactive"!==b&&"complete"!==b||be(this);for(b=0;b<a.length;b++)for(var c=a[b].addedNodes,d=0;d<c.length;d++)O(this.b,c[d])};function ce(){var a=this;this.a=this.j=void 0;this.b=new Promise(function(b){a.a=b;a.j&&b(a.j)})}ce.prototype.resolve=function(a){if(this.j)throw Error("Already resolved.");this.j=a;this.a&&this.a(a)};function P(a){this.c=!1;this.a=a;this.o=new Map;this.f=function(a){return a()};this.b=!1;this.h=[];this.ha=new ae(a)}n=P.prototype; | |
173 | R.prototype.get=R.prototype.get;R.prototype.whenDefined=R.prototype.whenDefined;R.prototype.polyfillWrapFlushCallback=R.prototype.Za;var Ce=window.Document.prototype.createElement,De=window.Document.prototype.createElementNS,Ee=window.Document.prototype.importNode,Fe=window.Document.prototype.prepend,Ge=window.Document.prototype.append,He=window.DocumentFragment.prototype.prepend,Ie=window.DocumentFragment.prototype.append,Je=window.Node.prototype.cloneNode,Ke=window.Node.prototype.appendChild,Le=window.Node.prototype.insertBefore,Me=window.Node.prototype.removeChild,Ne=window.Node.prototype.replaceChild,Oe=Object.getOwnPropertyDescriptor(window.Node.prototype, |
|
172 | n.xa=function(a,b){var c=this;if(!(b instanceof Function))throw new TypeError("Custom element constructors must be functions.");if(!Td(a))throw new SyntaxError("The element name '"+a+"' is not valid.");if(this.a.a.get(a))throw Error("A custom element with name '"+a+"' has already been defined.");if(this.c)throw Error("A custom element is already being defined.");this.c=!0;try{var d=function(a){var b=e[a];if(void 0!==b&&!(b instanceof Function))throw Error("The '"+a+"' callback must be a function."); | |
174 | "textContent"),Pe=window.Element.prototype.attachShadow,Qe=Object.getOwnPropertyDescriptor(window.Element.prototype,"innerHTML"),Re=window.Element.prototype.getAttribute,Se=window.Element.prototype.setAttribute,Te=window.Element.prototype.removeAttribute,Ue=window.Element.prototype.getAttributeNS,Ve=window.Element.prototype.setAttributeNS,We=window.Element.prototype.removeAttributeNS,Xe=window.Element.prototype.insertAdjacentElement,Ye=window.Element.prototype.insertAdjacentHTML,Ze=window.Element.prototype.prepend, |
|
173 | return b},e=b.prototype;if(!(e instanceof Object))throw new TypeError("The custom element constructor's prototype is not an object.");var f=d("connectedCallback");var h=d("disconnectedCallback");var g=d("adoptedCallback");var k=d("attributeChangedCallback");var l=b.observedAttributes||[]}catch(m){return}finally{this.c=!1}b={localName:a,constructor:b,connectedCallback:f,disconnectedCallback:h,adoptedCallback:g,attributeChangedCallback:k,observedAttributes:l,constructionStack:[]};Xd(this.a,a,b);this.h.push(b); | |
175 | $e=window.Element.prototype.append,af=window.Element.prototype.before,bf=window.Element.prototype.after,cf=window.Element.prototype.replaceWith,df=window.Element.prototype.remove,ef=window.HTMLElement,ff=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,"innerHTML"),gf=window.HTMLElement.prototype.insertAdjacentElement,hf=window.HTMLElement.prototype.insertAdjacentHTML;var jf=new function(){};function kf(){var a=lf;window.HTMLElement=function(){function b(){var b=this.constructor,d=a.o.get(b);if(!d)throw Error("The custom element being constructed was not registered with `customElements`.");var e=d.constructionStack;if(0===e.length)return e=Ce.call(document,d.localName),Object.setPrototypeOf(e,b.prototype),e.__CE_state=1,e.__CE_definition=d,a.b(e),e;d=e.length-1;var f=e[d];if(f===jf)throw Error("The HTMLElement constructor was either called reentrantly for this constructor or called multiple times."); |
|
174 | this.b||(this.b=!0,this.f(function(){return de(c)}))};n.$=function(a){O(this.a,a)};function de(a){if(!1!==a.b){a.b=!1;for(var b=a.h,c=[],d=new Map,e=0;e<b.length;e++)d.set(b[e].localName,[]);O(a.a,document,{$:function(b){if(void 0===b.__CE_state){var e=b.localName,f=d.get(e);f?f.push(b):a.a.a.get(e)&&c.push(b)}}});for(e=0;e<c.length;e++)$d(a.a,c[e]);for(;0<b.length;){var f=b.shift();e=f.localName;f=d.get(f.localName);for(var h=0;h<f.length;h++)$d(a.a,f[h]);(e=a.o.get(e))&&e.resolve(void 0)}}} | |
176 | e[d]=jf;Object.setPrototypeOf(f,b.prototype);a.b(f);return f}b.prototype=ef.prototype;Object.defineProperty(b.prototype,"constructor",{writable:!0,configurable:!0,enumerable:!1,value:b});return b}()};function mf(a,b,c){function d(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];e=[];for(var f=[],l=0;l<d.length;l++){var m=d[l];m instanceof Element&&M(m)&&f.push(m);if(m instanceof DocumentFragment)for(m=m.firstChild;m;m=m.nextSibling)e.push(m);else e.push(m)}b.apply(this,d);for(d=0;d<f.length;d++)P(a,f[d]);if(M(this))for(d=0;d<e.length;d++)f=e[d],f instanceof Element&&O(a,f)}}void 0!==c.aa&&(b.prepend=d(c.aa));void 0!==c.append&&(b.append=d(c.append))};function nf(){var a=lf;N(Document.prototype,"createElement",function(b){if(this.__CE_hasRegistry){var c=a.a.get(b);if(c)return new c.constructor}b=Ce.call(this,b);a.b(b);return b});N(Document.prototype,"importNode",function(b,c){b=Ee.call(this,b,c);this.__CE_hasRegistry?Q(a,b):we(a,b);return b});N(Document.prototype,"createElementNS",function(b,c){if(this.__CE_hasRegistry&&(null===b||"http://www.w3.org/1999/xhtml"===b)){var d=a.a.get(c);if(d)return new d.constructor}b=De.call(this,b,c);a.b(b);return b}); |
|
175 | n.get=function(a){if(a=this.a.a.get(a))return a.constructor};n.ya=function(a){if(!Td(a))return Promise.reject(new SyntaxError("'"+a+"' is not a valid custom element name."));var b=this.o.get(a);if(b)return b.b;b=new ce;this.o.set(a,b);this.a.a.get(a)&&!this.h.some(function(b){return b.localName===a})&&b.resolve(void 0);return b.b};n.Wa=function(a){be(this.ha);var b=this.f;this.f=function(c){return a(function(){return b(c)})}};window.CustomElementRegistry=P;P.prototype.define=P.prototype.xa; | |
177 | mf(a,Document.prototype,{aa:Fe,append:Ge})};function of(){var a=lf;function b(b,d){Object.defineProperty(b,"textContent",{enumerable:d.enumerable,configurable:!0,get:d.get,set:function(b){if(this.nodeType===Node.TEXT_NODE)d.set.call(this,b);else{var c=void 0;if(this.firstChild){var e=this.childNodes,g=e.length;if(0<g&&M(this)){c=Array(g);for(var k=0;k<g;k++)c[k]=e[k]}}d.set.call(this,b);if(c)for(b=0;b<c.length;b++)P(a,c[b])}}})}N(Node.prototype,"insertBefore",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes); |
|
176 | P.prototype.upgrade=P.prototype.$;P.prototype.get=P.prototype.get;P.prototype.whenDefined=P.prototype.ya;P.prototype.polyfillWrapFlushCallback=P.prototype.Wa;var ee=window.Document.prototype.createElement,fe=window.Document.prototype.createElementNS,ge=window.Document.prototype.importNode,he=window.Document.prototype.prepend,ie=window.Document.prototype.append,je=window.DocumentFragment.prototype.prepend,ke=window.DocumentFragment.prototype.append,le=window.Node.prototype.cloneNode,me=window.Node.prototype.appendChild,ne=window.Node.prototype.insertBefore,oe=window.Node.prototype.removeChild,pe=window.Node.prototype.replaceChild,qe=Object.getOwnPropertyDescriptor(window.Node.prototype, | |
178 | b=Le.call(this,b,d);if(M(this))for(d=0;d<c.length;d++)O(a,c[d]);return b}c=M(b);d=Le.call(this,b,d);c&&P(a,b);M(this)&&O(a,b);return d});N(Node.prototype,"appendChild",function(b){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=Ke.call(this,b);if(M(this))for(var e=0;e<c.length;e++)O(a,c[e]);return b}c=M(b);e=Ke.call(this,b);c&&P(a,b);M(this)&&O(a,b);return e});N(Node.prototype,"cloneNode",function(b){b=Je.call(this,b);this.ownerDocument.__CE_hasRegistry?Q(a,b): |
|
177 | "textContent"),re=window.Element.prototype.attachShadow,se=Object.getOwnPropertyDescriptor(window.Element.prototype,"innerHTML"),te=window.Element.prototype.getAttribute,ue=window.Element.prototype.setAttribute,ve=window.Element.prototype.removeAttribute,we=window.Element.prototype.getAttributeNS,xe=window.Element.prototype.setAttributeNS,ye=window.Element.prototype.removeAttributeNS,ze=window.Element.prototype.insertAdjacentElement,Ae=window.Element.prototype.insertAdjacentHTML,Be=window.Element.prototype.prepend, | |
179 | we(a,b);return b});N(Node.prototype,"removeChild",function(b){var c=M(b),e=Me.call(this,b);c&&P(a,b);return e});N(Node.prototype,"replaceChild",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=Ne.call(this,b,d);if(M(this))for(P(a,d),d=0;d<c.length;d++)O(a,c[d]);return b}c=M(b);var f=Ne.call(this,b,d),h=M(this);h&&P(a,d);c&&P(a,b);h&&O(a,b);return f});Oe&&Oe.get?b(Node.prototype,Oe):ve(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){for(var a= |
|
178 | Ce=window.Element.prototype.append,De=window.Element.prototype.before,Ee=window.Element.prototype.after,Fe=window.Element.prototype.replaceWith,Ge=window.Element.prototype.remove,He=window.HTMLElement,Ie=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,"innerHTML"),Je=window.HTMLElement.prototype.insertAdjacentElement,Ke=window.HTMLElement.prototype.insertAdjacentHTML;var Le=new function(){};function Me(){var a=Ne;window.HTMLElement=function(){function b(){var b=this.constructor,d=a.h.get(b);if(!d)throw Error("The custom element being constructed was not registered with `customElements`.");var e=d.constructionStack;if(0===e.length)return e=ee.call(document,d.localName),Object.setPrototypeOf(e,b.prototype),e.__CE_state=1,e.__CE_definition=d,a.b(e),e;d=e.length-1;var f=e[d];if(f===Le)throw Error("The HTMLElement constructor was either called reentrantly for this constructor or called multiple times."); | |
180 | [],b=0;b<this.childNodes.length;b++)a.push(this.childNodes[b].textContent);return a.join("")},set:function(a){for(;this.firstChild;)Me.call(this,this.firstChild);Ke.call(this,document.createTextNode(a))}})})};function pf(a){var b=Element.prototype;function c(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];e=[];for(var g=[],k=0;k<d.length;k++){var l=d[k];l instanceof Element&&M(l)&&g.push(l);if(l instanceof DocumentFragment)for(l=l.firstChild;l;l=l.nextSibling)e.push(l);else e.push(l)}b.apply(this,d);for(d=0;d<g.length;d++)P(a,g[d]);if(M(this))for(d=0;d<e.length;d++)g=e[d],g instanceof Element&&O(a,g)}}void 0!==af&&(b.before=c(af));void 0!==af&&(b.after=c(bf));void 0!== |
|
179 | e[d]=Le;Object.setPrototypeOf(f,b.prototype);a.b(f);return f}b.prototype=He.prototype;Object.defineProperty(b.prototype,"constructor",{writable:!0,configurable:!0,enumerable:!1,value:b});return b}()};function Oe(a,b,c){function d(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e]=arguments[e];e=[];for(var f=[],l=0;l<d.length;l++){var m=d[l];m instanceof Element&&J(m)&&f.push(m);if(m instanceof DocumentFragment)for(m=m.firstChild;m;m=m.nextSibling)e.push(m);else e.push(m)}b.apply(this,d);for(d=0;d<f.length;d++)M(a,f[d]);if(J(this))for(d=0;d<e.length;d++)f=e[d],f instanceof Element&&L(a,f)}}void 0!==c.Y&&(b.prepend=d(c.Y));void 0!==c.append&&(b.append=d(c.append))};function Pe(){var a=Ne;K(Document.prototype,"createElement",function(b){if(this.__CE_hasRegistry){var c=a.a.get(b);if(c)return new c.constructor}b=ee.call(this,b);a.b(b);return b});K(Document.prototype,"importNode",function(b,c){b=ge.call(this,b,c);this.__CE_hasRegistry?O(a,b):Zd(a,b);return b});K(Document.prototype,"createElementNS",function(b,c){if(this.__CE_hasRegistry&&(null===b||"http://www.w3.org/1999/xhtml"===b)){var d=a.a.get(c);if(d)return new d.constructor}b=fe.call(this,b,c);a.b(b);return b}); | |
181 | cf&&N(b,"replaceWith",function(b){for(var c=[],d=0;d<arguments.length;++d)c[d-0]=arguments[d];d=[];for(var h=[],g=0;g<c.length;g++){var k=c[g];k instanceof Element&&M(k)&&h.push(k);if(k instanceof DocumentFragment)for(k=k.firstChild;k;k=k.nextSibling)d.push(k);else d.push(k)}g=M(this);cf.apply(this,c);for(c=0;c<h.length;c++)P(a,h[c]);if(g)for(P(a,this),c=0;c<d.length;c++)h=d[c],h instanceof Element&&O(a,h)});void 0!==df&&N(b,"remove",function(){var b=M(this);df.call(this);b&&P(a,this)})};function qf(){var a=lf;function b(b,c){Object.defineProperty(b,"innerHTML",{enumerable:c.enumerable,configurable:!0,get:c.get,set:function(b){var d=this,e=void 0;M(this)&&(e=[],se(this,function(a){a!==d&&e.push(a)}));c.set.call(this,b);if(e)for(var f=0;f<e.length;f++){var h=e[f];1===h.__CE_state&&a.disconnectedCallback(h)}this.ownerDocument.__CE_hasRegistry?Q(a,this):we(a,this);return b}})}function c(b,c){N(b,"insertAdjacentElement",function(b,d){var e=M(d);b=c.call(this,b,d);e&&P(a,d);M(b)&&O(a, |
|
180 | Oe(a,Document.prototype,{Y:he,append:ie})};function Qe(){function a(a,d){Object.defineProperty(a,"textContent",{enumerable:d.enumerable,configurable:!0,get:d.get,set:function(a){if(this.nodeType===Node.TEXT_NODE)d.set.call(this,a);else{var c=void 0;if(this.firstChild){var e=this.childNodes,g=e.length;if(0<g&&J(this)){c=Array(g);for(var k=0;k<g;k++)c[k]=e[k]}}d.set.call(this,a);if(c)for(a=0;a<c.length;a++)M(b,c[a])}}})}var b=Ne;K(Node.prototype,"insertBefore",function(a,d){if(a instanceof DocumentFragment){var c=Array.prototype.slice.apply(a.childNodes); | |
182 | d);return b})}function d(b,c){function d(b,c){for(var d=[];b!==c;b=b.nextSibling)d.push(b);for(c=0;c<d.length;c++)Q(a,d[c])}N(b,"insertAdjacentHTML",function(a,b){a=a.toLowerCase();if("beforebegin"===a){var e=this.previousSibling;c.call(this,a,b);d(e||this.parentNode.firstChild,this)}else if("afterbegin"===a)e=this.firstChild,c.call(this,a,b),d(this.firstChild,e);else if("beforeend"===a)e=this.lastChild,c.call(this,a,b),d(e||this.firstChild,null);else if("afterend"===a)e=this.nextSibling,c.call(this, |
|
181 | a=ne.call(this,a,d);if(J(this))for(d=0;d<c.length;d++)L(b,c[d]);return a}c=J(a);d=ne.call(this,a,d);c&&M(b,a);J(this)&&L(b,a);return d});K(Node.prototype,"appendChild",function(a){if(a instanceof DocumentFragment){var c=Array.prototype.slice.apply(a.childNodes);a=me.call(this,a);if(J(this))for(var e=0;e<c.length;e++)L(b,c[e]);return a}c=J(a);e=me.call(this,a);c&&M(b,a);J(this)&&L(b,a);return e});K(Node.prototype,"cloneNode",function(a){a=le.call(this,a);this.ownerDocument.__CE_hasRegistry?O(b,a): | |
183 | a,b),d(this.nextSibling,e);else throw new SyntaxError("The value provided ("+String(a)+") is not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.");})}Pe&&N(Element.prototype,"attachShadow",function(a){return this.__CE_shadowRoot=a=Pe.call(this,a)});Qe&&Qe.get?b(Element.prototype,Qe):ff&&ff.get?b(HTMLElement.prototype,ff):ve(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){return Je.call(this,!0).innerHTML},set:function(a){var b="template"===this.localName,c=b?this.content: |
|
182 | Zd(b,a);return a});K(Node.prototype,"removeChild",function(a){var c=J(a),e=oe.call(this,a);c&&M(b,a);return e});K(Node.prototype,"replaceChild",function(a,d){if(a instanceof DocumentFragment){var c=Array.prototype.slice.apply(a.childNodes);a=pe.call(this,a,d);if(J(this))for(M(b,d),d=0;d<c.length;d++)L(b,c[d]);return a}c=J(a);var f=pe.call(this,a,d),h=J(this);h&&M(b,d);c&&M(b,a);h&&L(b,a);return f});qe&&qe.get?a(Node.prototype,qe):Yd(b,function(b){a(b,{enumerable:!0,configurable:!0,get:function(){for(var a= | |
184 | this,d=De.call(document,this.namespaceURI,this.localName);for(d.innerHTML=a;0<c.childNodes.length;)Me.call(c,c.childNodes[0]);for(a=b?d.content:d;0<a.childNodes.length;)Ke.call(c,a.childNodes[0])}})});N(Element.prototype,"setAttribute",function(b,c){if(1!==this.__CE_state)return Se.call(this,b,c);var d=Re.call(this,b);Se.call(this,b,c);c=Re.call(this,b);a.attributeChangedCallback(this,b,d,c,null)});N(Element.prototype,"setAttributeNS",function(b,c,d){if(1!==this.__CE_state)return Ve.call(this,b,c, |
|
183 | [],b=0;b<this.childNodes.length;b++)a.push(this.childNodes[b].textContent);return a.join("")},set:function(a){for(;this.firstChild;)oe.call(this,this.firstChild);me.call(this,document.createTextNode(a))}})})};function Re(a){function b(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e]=arguments[e];e=[];for(var g=[],k=0;k<d.length;k++){var l=d[k];l instanceof Element&&J(l)&&g.push(l);if(l instanceof DocumentFragment)for(l=l.firstChild;l;l=l.nextSibling)e.push(l);else e.push(l)}b.apply(this,d);for(d=0;d<g.length;d++)M(a,g[d]);if(J(this))for(d=0;d<e.length;d++)g=e[d],g instanceof Element&&L(a,g)}}var c=Element.prototype;void 0!==De&&(c.before=b(De));void 0!==De&&(c.after=b(Ee));void 0!==Fe&& | |
185 | d);var e=Ue.call(this,b,c);Ve.call(this,b,c,d);d=Ue.call(this,b,c);a.attributeChangedCallback(this,c,e,d,b)});N(Element.prototype,"removeAttribute",function(b){if(1!==this.__CE_state)return Te.call(this,b);var c=Re.call(this,b);Te.call(this,b);null!==c&&a.attributeChangedCallback(this,b,c,null,null)});N(Element.prototype,"removeAttributeNS",function(b,c){if(1!==this.__CE_state)return We.call(this,b,c);var d=Ue.call(this,b,c);We.call(this,b,c);var e=Ue.call(this,b,c);d!==e&&a.attributeChangedCallback(this, |
|
184 | K(c,"replaceWith",function(b){for(var c=[],d=0;d<arguments.length;++d)c[d]=arguments[d];d=[];for(var h=[],g=0;g<c.length;g++){var k=c[g];k instanceof Element&&J(k)&&h.push(k);if(k instanceof DocumentFragment)for(k=k.firstChild;k;k=k.nextSibling)d.push(k);else d.push(k)}g=J(this);Fe.apply(this,c);for(c=0;c<h.length;c++)M(a,h[c]);if(g)for(M(a,this),c=0;c<d.length;c++)h=d[c],h instanceof Element&&L(a,h)});void 0!==Ge&&K(c,"remove",function(){var b=J(this);Ge.call(this);b&&M(a,this)})};function Se(){function a(a,b){Object.defineProperty(a,"innerHTML",{enumerable:b.enumerable,configurable:!0,get:b.get,set:function(a){var c=this,e=void 0;J(this)&&(e=[],Vd(this,function(a){a!==c&&e.push(a)}));b.set.call(this,a);if(e)for(var f=0;f<e.length;f++){var h=e[f];1===h.__CE_state&&d.disconnectedCallback(h)}this.ownerDocument.__CE_hasRegistry?O(d,this):Zd(d,this);return a}})}function b(a,b){K(a,"insertAdjacentElement",function(a,c){var e=J(c);a=b.call(this,a,c);e&&M(d,c);J(a)&&L(d,c);return a})} | |
186 | c,d,e,b)});gf?c(HTMLElement.prototype,gf):Xe?c(Element.prototype,Xe):console.warn("Custom Elements: `Element#insertAdjacentElement` was not patched.");hf?d(HTMLElement.prototype,hf):Ye?d(Element.prototype,Ye):console.warn("Custom Elements: `Element#insertAdjacentHTML` was not patched.");mf(a,Element.prototype,{aa:Ze,append:$e});pf(a)};var rf=window.customElements;if(!rf||rf.forcePolyfill||"function"!=typeof rf.define||"function"!=typeof rf.get){var lf=new te;kf();nf();mf(lf,DocumentFragment.prototype,{aa:He,append:Ie});of();qf();document.__CE_hasRegistry=!0;var customElements=new R(lf);Object.defineProperty(window,"customElements",{configurable:!0,enumerable:!0,value:customElements})};function xf(){this.end=this.start=0;this.rules=this.parent=this.previous=null;this.cssText=this.parsedCssText="";this.atRule=!1;this.type=0;this.parsedSelector=this.selector=this.keyframesName=""} |
|
185 | function c(a,b){function c(a,b){for(var c=[];a!==b;a=a.nextSibling)c.push(a);for(b=0;b<c.length;b++)O(d,c[b])}K(a,"insertAdjacentHTML",function(a,d){a=a.toLowerCase();if("beforebegin"===a){var e=this.previousSibling;b.call(this,a,d);c(e||this.parentNode.firstChild,this)}else if("afterbegin"===a)e=this.firstChild,b.call(this,a,d),c(this.firstChild,e);else if("beforeend"===a)e=this.lastChild,b.call(this,a,d),c(e||this.firstChild,null);else if("afterend"===a)e=this.nextSibling,b.call(this,a,d),c(this.nextSibling, | |
187 | function yf(a){a=a.replace(zf,"").replace(Af,"");var b=Bf,c=a,d=new xf;d.start=0;d.end=c.length;for(var e=d,f=0,h=c.length;f<h;f++)if("{"===c[f]){e.rules||(e.rules=[]);var g=e,k=g.rules[g.rules.length-1]||null;e=new xf;e.start=f+1;e.parent=g;e.previous=k;g.rules.push(e)}else"}"===c[f]&&(e.end=f+1,e=e.parent||d);return b(d,a)} |
|
186 | e);else throw new SyntaxError("The value provided ("+String(a)+") is not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.");})}var d=Ne;re&&K(Element.prototype,"attachShadow",function(a){return this.__CE_shadowRoot=a=re.call(this,a)});se&&se.get?a(Element.prototype,se):Ie&&Ie.get?a(HTMLElement.prototype,Ie):Yd(d,function(b){a(b,{enumerable:!0,configurable:!0,get:function(){return le.call(this,!0).innerHTML},set:function(a){var b="template"===this.localName,c=b?this.content:this,d=fe.call(document, | |
188 | function Bf(a,b){var c=b.substring(a.start,a.end-1);a.parsedCssText=a.cssText=c.trim();a.parent&&(c=b.substring(a.previous?a.previous.end:a.parent.start,a.start-1),c=Cf(c),c=c.replace(Df," "),c=c.substring(c.lastIndexOf(";")+1),c=a.parsedSelector=a.selector=c.trim(),a.atRule=0===c.indexOf("@"),a.atRule?0===c.indexOf("@media")?a.type=Ef:c.match(Ff)&&(a.type=Gf,a.keyframesName=a.selector.split(Df).pop()):a.type=0===c.indexOf("--")?Hf:If);if(c=a.rules)for(var d=0,e=c.length,f;d<e&&(f=c[d]);d++)Bf(f, |
|
187 | this.namespaceURI,this.localName);for(d.innerHTML=a;0<c.childNodes.length;)oe.call(c,c.childNodes[0]);for(a=b?d.content:d;0<a.childNodes.length;)me.call(c,a.childNodes[0])}})});K(Element.prototype,"setAttribute",function(a,b){if(1!==this.__CE_state)return ue.call(this,a,b);var c=te.call(this,a);ue.call(this,a,b);b=te.call(this,a);d.attributeChangedCallback(this,a,c,b,null)});K(Element.prototype,"setAttributeNS",function(a,b,c){if(1!==this.__CE_state)return xe.call(this,a,b,c);var e=we.call(this,a, | |
189 | b);return a}function Cf(a){return a.replace(/\\([0-9a-f]{1,6})\s/gi,function(a,c){a=c;for(c=6-a.length;c--;)a="0"+a;return"\\"+a})} |
|
188 | b);xe.call(this,a,b,c);c=we.call(this,a,b);d.attributeChangedCallback(this,b,e,c,a)});K(Element.prototype,"removeAttribute",function(a){if(1!==this.__CE_state)return ve.call(this,a);var b=te.call(this,a);ve.call(this,a);null!==b&&d.attributeChangedCallback(this,a,b,null,null)});K(Element.prototype,"removeAttributeNS",function(a,b){if(1!==this.__CE_state)return ye.call(this,a,b);var c=we.call(this,a,b);ye.call(this,a,b);var e=we.call(this,a,b);c!==e&&d.attributeChangedCallback(this,b,c,e,a)});Je?b(HTMLElement.prototype, | |
190 | function Jf(a,b,c){c=void 0===c?"":c;var d="";if(a.cssText||a.rules){var e=a.rules,f;if(f=e)f=e[0],f=!(f&&f.selector&&0===f.selector.indexOf("--"));if(f){f=0;for(var h=e.length,g;f<h&&(g=e[f]);f++)d=Jf(g,b,d)}else b?b=a.cssText:(b=a.cssText,b=b.replace(Kf,"").replace(Lf,""),b=b.replace(Mf,"").replace(Nf,"")),(d=b.trim())&&(d=" "+d+"\n")}d&&(a.selector&&(c+=a.selector+" {\n"),c+=d,a.selector&&(c+="}\n\n"));return c} |
|
189 | Je):ze?b(Element.prototype,ze):console.warn("Custom Elements: `Element#insertAdjacentElement` was not patched.");Ke?c(HTMLElement.prototype,Ke):Ae?c(Element.prototype,Ae):console.warn("Custom Elements: `Element#insertAdjacentHTML` was not patched.");Oe(d,Element.prototype,{Y:Be,append:Ce});Re(d)};var Te=window.customElements;if(!Te||Te.forcePolyfill||"function"!=typeof Te.define||"function"!=typeof Te.get){var Ne=new Wd;Me();Pe();Oe(Ne,DocumentFragment.prototype,{Y:je,append:ke});Qe();Se();document.__CE_hasRegistry=!0;var customElements=new P(Ne);Object.defineProperty(window,"customElements",{configurable:!0,enumerable:!0,value:customElements})};function Ue(){this.end=this.start=0;this.rules=this.parent=this.previous=null;this.cssText=this.parsedCssText="";this.atRule=!1;this.type=0;this.parsedSelector=this.selector=this.keyframesName=""} | |
191 | var If=1,Gf=7,Ef=4,Hf=1E3,zf=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,Af=/@import[^;]*;/gim,Kf=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,Lf=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,Mf=/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,Nf=/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,Ff=/^@[^\s]*keyframes/,Df=/\s+/g;var S=!(window.ShadyDOM&&window.ShadyDOM.inUse),Of;function Pf(a){Of=a&&a.shimcssproperties?!1:S||!(navigator.userAgent.match(/AppleWebKit\/601|Edge\/15/)||!window.CSS||!CSS.supports||!CSS.supports("box-shadow","0 0 0 var(--foo)"))}window.ShadyCSS&&void 0!==window.ShadyCSS.nativeCss?Of=window.ShadyCSS.nativeCss:window.ShadyCSS?(Pf(window.ShadyCSS),window.ShadyCSS=void 0):Pf(window.WebComponents&&window.WebComponents.flags);var U=Of;var Qf=/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};{])+)|\{([^}]*)\}(?:(?=[;\s}])|$))/gi,Rf=/(?:^|\W+)@apply\s*\(?([^);\n]*)\)?/gi,Sf=/(--[\w-]+)\s*([:,;)]|$)/gi,Tf=/(animation\s*:)|(animation-name\s*:)/,Uf=/@media\s(.*)/,Vf=/\{[^}]*\}/g;var Wf=new Set;function Xf(a,b){if(!a)return"";"string"===typeof a&&(a=yf(a));b&&Yf(a,b);return Jf(a,U)}function Zf(a){!a.__cssRules&&a.textContent&&(a.__cssRules=yf(a.textContent));return a.__cssRules||null}function $f(a){return!!a.parent&&a.parent.type===Gf}function Yf(a,b,c,d){if(a){var e=!1,f=a.type;if(d&&f===Ef){var h=a.selector.match(Uf);h&&(window.matchMedia(h[1]).matches||(e=!0))}f===If?b(a):c&&f===Gf?c(a):f===Hf&&(e=!0);if((a=a.rules)&&!e){e=0;f=a.length;for(var g;e<f&&(g=a[e]);e++)Yf(g,b,c,d)}}} |
|
190 | function Ve(a){a=a.replace(We,"").replace(Xe,"");var b=Ye,c=a,d=new Ue;d.start=0;d.end=c.length;for(var e=d,f=0,h=c.length;f<h;f++)if("{"===c[f]){e.rules||(e.rules=[]);var g=e,k=g.rules[g.rules.length-1]||null;e=new Ue;e.start=f+1;e.parent=g;e.previous=k;g.rules.push(e)}else"}"===c[f]&&(e.end=f+1,e=e.parent||d);return b(d,a)} | |
192 | function ag(a,b,c,d){var e=document.createElement("style");b&&e.setAttribute("scope",b);e.textContent=a;bg(e,c,d);return e}var cg=null;function bg(a,b,c){b=b||document.head;b.insertBefore(a,c&&c.nextSibling||b.firstChild);cg?a.compareDocumentPosition(cg)===Node.DOCUMENT_POSITION_PRECEDING&&(cg=a):cg=a} |
|
191 | function Ye(a,b){var c=b.substring(a.start,a.end-1);a.parsedCssText=a.cssText=c.trim();a.parent&&(c=b.substring(a.previous?a.previous.end:a.parent.start,a.start-1),c=Ze(c),c=c.replace($e," "),c=c.substring(c.lastIndexOf(";")+1),c=a.parsedSelector=a.selector=c.trim(),a.atRule=0===c.indexOf("@"),a.atRule?0===c.indexOf("@media")?a.type=af:c.match(gf)&&(a.type=hf,a.keyframesName=a.selector.split($e).pop()):a.type=0===c.indexOf("--")?jf:kf);if(c=a.rules)for(var d=0,e=c.length,f=void 0;d<e&&(f=c[d]);d++)Ye(f, | |
193 | function dg(a,b){var c=a.indexOf("var(");if(-1===c)return b(a,"","","");a:{var d=0;var e=c+3;for(var f=a.length;e<f;e++)if("("===a[e])d++;else if(")"===a[e]&&0===--d)break a;e=-1}d=a.substring(c+4,e);c=a.substring(0,c);a=dg(a.substring(e+1),b);e=d.indexOf(",");return-1===e?b(c,d.trim(),"",a):b(c,d.substring(0,e).trim(),d.substring(e+1).trim(),a)}function eg(a,b){S?a.setAttribute("class",b):window.ShadyDOM.nativeMethods.setAttribute.call(a,"class",b)} |
|
192 | b);return a}function Ze(a){return a.replace(/\\([0-9a-f]{1,6})\s/gi,function(a,c){a=c;for(c=6-a.length;c--;)a="0"+a;return"\\"+a})} | |
194 | function fg(a){var b=a.localName,c="";b?-1<b.indexOf("-")||(c=b,b=a.getAttribute&&a.getAttribute("is")||""):(b=a.is,c=a.extends);return{is:b,P:c}};function gg(){}function hg(a,b){var c=W;a.__styleScoped?a.__styleScoped=null:ig(c,a,function(a){jg(a,b||"")})}function ig(a,b,c){b.nodeType===Node.ELEMENT_NODE&&c(b);if(b="template"===b.localName?(b.content||b.kb||b).childNodes:b.children||b.childNodes)for(var d=0;d<b.length;d++)ig(a,b[d],c)} |
|
193 | function lf(a,b,c){c=void 0===c?"":c;var d="";if(a.cssText||a.rules){var e=a.rules,f;if(f=e)f=e[0],f=!(f&&f.selector&&0===f.selector.indexOf("--"));if(f){f=0;for(var h=e.length,g=void 0;f<h&&(g=e[f]);f++)d=lf(g,b,d)}else b?b=a.cssText:(b=a.cssText,b=b.replace(mf,"").replace(nf,""),b=b.replace(of,"").replace(pf,"")),(d=b.trim())&&(d=" "+d+"\n")}d&&(a.selector&&(c+=a.selector+" {\n"),c+=d,a.selector&&(c+="}\n\n"));return c} | |
195 | function jg(a,b,c){if(b)if(a.classList)c?(a.classList.remove("style-scope"),a.classList.remove(b)):(a.classList.add("style-scope"),a.classList.add(b));else if(a.getAttribute){var d=a.getAttribute(kg);c?d&&(b=d.replace("style-scope","").replace(b,""),eg(a,b)):eg(a,(d?d+" ":"")+"style-scope "+b)}}function lg(a,b,c){var d=W;a.__styleScoped?a.__styleScoped=null:ig(d,a,function(a){jg(a,b,!0);jg(a,c)})}function mg(a,b){var c=W;a.__styleScoped?a.__styleScoped=null:ig(c,a,function(a){jg(a,b||"",!0)})} |
|
194 | var kf=1,hf=7,af=4,jf=1E3,We=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,Xe=/@import[^;]*;/gim,mf=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,nf=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,of=/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,pf=/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,gf=/^@[^\s]*keyframes/,$e=/\s+/g;var R=!(window.ShadyDOM&&window.ShadyDOM.inUse),qf;function rf(a){qf=a&&a.shimcssproperties?!1:R||!(navigator.userAgent.match(/AppleWebKit\/601|Edge\/15/)||!window.CSS||!CSS.supports||!CSS.supports("box-shadow","0 0 0 var(--foo)"))}window.ShadyCSS&&void 0!==window.ShadyCSS.nativeCss?qf=window.ShadyCSS.nativeCss:window.ShadyCSS?(rf(window.ShadyCSS),window.ShadyCSS=void 0):rf(window.WebComponents&&window.WebComponents.flags);var S=qf;var sf=/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};{])+)|\{([^}]*)\}(?:(?=[;\s}])|$))/gi,tf=/(?:^|\W+)@apply\s*\(?([^);\n]*)\)?/gi,uf=/(--[\w-]+)\s*([:,;)]|$)/gi,vf=/(animation\s*:)|(animation-name\s*:)/,wf=/@media\s(.*)/,xf=/\{[^}]*\}/g;var yf=new Set;function zf(a,b){if(!a)return"";"string"===typeof a&&(a=Ve(a));b&&Af(a,b);return lf(a,S)}function Bf(a){!a.__cssRules&&a.textContent&&(a.__cssRules=Ve(a.textContent));return a.__cssRules||null}function Cf(a){return!!a.parent&&a.parent.type===hf}function Af(a,b,c,d){if(a){var e=!1,f=a.type;if(d&&f===af){var h=a.selector.match(wf);h&&(window.matchMedia(h[1]).matches||(e=!0))}f===kf?b(a):c&&f===hf?c(a):f===jf&&(e=!0);if((a=a.rules)&&!e)for(e=0,f=a.length,h=void 0;e<f&&(h=a[e]);e++)Af(h,b,c,d)}} | |
196 | function ng(a,b,c){var d=W,e=a.__cssBuild;S||"shady"===e?b=Xf(b,c):(a=fg(a),b=og(d,b,a.is,a.P,c)+"\n\n");return b.trim()}function og(a,b,c,d,e){var f=pg(c,d);c=c?qg+c:"";return Xf(b,function(b){b.c||(b.selector=b.s=rg(a,b,a.b,c,f),b.c=!0);e&&e(b,c,f)})}function pg(a,b){return b?"[is="+a+"]":a}function rg(a,b,c,d,e){var f=b.selector.split(sg);if(!$f(b)){b=0;for(var h=f.length,g;b<h&&(g=f[b]);b++)f[b]=c.call(a,g,d,e)}return f.join(sg)} |
|
195 | function Df(a,b,c,d){var e=document.createElement("style");b&&e.setAttribute("scope",b);e.textContent=a;Ef(e,c,d);return e}var Ff=null;function Gf(a){a=document.createComment(" Shady DOM styles for "+a+" ");var b=document.head;b.insertBefore(a,(Ff?Ff.nextSibling:null)||b.firstChild);return Ff=a}function Ef(a,b,c){b=b||document.head;b.insertBefore(a,c&&c.nextSibling||b.firstChild);Ff?a.compareDocumentPosition(Ff)===Node.DOCUMENT_POSITION_PRECEDING&&(Ff=a):Ff=a} | |
197 | function tg(a){return a.replace(ug,function(a,c,d){-1<d.indexOf("+")?d=d.replace(/\+/g,"___"):-1<d.indexOf("___")&&(d=d.replace(/___/g,"+"));return":"+c+"("+d+")"})}gg.prototype.b=function(a,b,c){var d=!1;a=a.trim();var e=ug.test(a);e&&(a=a.replace(ug,function(a,b,c){return":"+b+"("+c.replace(/\s/g,"")+")"}),a=tg(a));a=a.replace(vg,wg+" $1");a=a.replace(xg,function(a,e,g){d||(a=yg(g,e,b,c),d=d||a.stop,e=a.Oa,g=a.value);return e+g});e&&(a=tg(a));return a}; |
|
196 | function Hf(a,b){for(var c=0,d=a.length;b<d;b++)if("("===a[b])c++;else if(")"===a[b]&&0===--c)return b;return-1}function If(a,b){var c=a.indexOf("var(");if(-1===c)return b(a,"","","");var d=Hf(a,c+3),e=a.substring(c+4,d);c=a.substring(0,c);a=If(a.substring(d+1),b);d=e.indexOf(",");return-1===d?b(c,e.trim(),"",a):b(c,e.substring(0,d).trim(),e.substring(d+1).trim(),a)}function Jf(a,b){R?a.setAttribute("class",b):window.ShadyDOM.nativeMethods.setAttribute.call(a,"class",b)} | |
198 | function yg(a,b,c,d){var e=a.indexOf(zg);0<=a.indexOf(wg)?a=Ag(a,d):0!==e&&(a=c?Bg(a,c):a);c=!1;0<=e&&(b="",c=!0);if(c){var f=!0;c&&(a=a.replace(Cg,function(a,b){return" > "+b}))}a=a.replace(Dg,function(a,b,c){return'[dir="'+c+'"] '+b+", "+b+'[dir="'+c+'"]'});return{value:a,Oa:b,stop:f}}function Bg(a,b){a=a.split(Eg);a[0]+=b;return a.join(Eg)} |
|
197 | function Kf(a){var b=a.localName,c="";b?-1<b.indexOf("-")||(c=b,b=a.getAttribute&&a.getAttribute("is")||""):(b=a.is,c=a.extends);return{is:b,N:c}}function Lf(a){for(var b=[],c="",d=0;0<=d&&d<a.length;d++)if("("===a[d]){var e=Hf(a,d);c+=a.slice(d,e+1);d=e}else","===a[d]?(b.push(c),c=""):c+=a[d];c&&b.push(c);return b} | |
199 | function Ag(a,b){var c=a.match(Fg);return(c=c&&c[2].trim()||"")?c[0].match(Gg)?a.replace(Fg,function(a,c,f){return b+f}):c.split(Gg)[0]===b?c:Hg:a.replace(wg,b)}function Ig(a){a.selector===Jg&&(a.selector="html")}gg.prototype.c=function(a){return a.match(zg)?this.b(a,Kg):Bg(a.trim(),Kg)};ea.Object.defineProperties(gg.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"style-scope"}}}); |
|
198 | function Mf(a){if(void 0===a.aa){var b=a.getAttribute("css-build");if(b)a.aa=b;else{a:{b="template"===a.localName?a.content.firstChild:a.firstChild;if(b instanceof Comment&&(b=b.textContent.trim().split(":"),"css-build"===b[0])){b=b[1];break a}b=""}if(""!==b){var c="template"===a.localName?a.content.firstChild:a.firstChild;c.parentNode.removeChild(c)}a.aa=b}}return a.aa||""};function Nf(){}function Of(a,b){Pf(U,a,function(a){Qf(a,b||"")})}function Pf(a,b,c){b.nodeType===Node.ELEMENT_NODE&&c(b);if(b="template"===b.localName?(b.content||b.ib||b).childNodes:b.children||b.childNodes)for(var d=0;d<b.length;d++)Pf(a,b[d],c)} | |
200 | var ug=/:(nth[-\w]+)\(([^)]+)\)/,Kg=":not(.style-scope)",sg=",",xg=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=[])+)/g,Gg=/[[.:#*]/,wg=":host",Jg=":root",zg="::slotted",vg=new RegExp("^("+zg+")"),Fg=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,Cg=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,Dg=/(.*):dir\((?:(ltr|rtl))\)/,qg=".",Eg=":",kg="class",Hg="should_not_match",W=new gg;function Lg(a,b,c,d){this.B=a||null;this.b=b||null;this.oa=c||[];this.L=null;this.P=d||"";this.a=this.v=this.G=null}function X(a){return a?a.__styleInfo:null}function Mg(a,b){return a.__styleInfo=b}Lg.prototype.c=function(){return this.B};Lg.prototype._getStyleRules=Lg.prototype.c;function Ng(a){var b=this.matches||this.matchesSelector||this.mozMatchesSelector||this.msMatchesSelector||this.oMatchesSelector||this.webkitMatchesSelector;return b&&b.call(this,a)}var Og=navigator.userAgent.match("Trident");function Pg(){}function Qg(a){var b={},c=[],d=0;Yf(a,function(a){Rg(a);a.index=d++;a=a.m.cssText;for(var c;c=Sf.exec(a);){var e=c[1];":"!==c[2]&&(b[e]=!0)}},function(a){c.push(a)});a.b=c;a=[];for(var e in b)a.push(e);return a} |
|
199 | function Qf(a,b,c){if(b)if(a.classList)c?(a.classList.remove("style-scope"),a.classList.remove(b)):(a.classList.add("style-scope"),a.classList.add(b));else if(a.getAttribute){var d=a.getAttribute(Rf);c?d&&(b=d.replace("style-scope","").replace(b,""),Jf(a,b)):Jf(a,(d?d+" ":"")+"style-scope "+b)}}function Sf(a,b,c){Pf(U,a,function(a){Qf(a,b,!0);Qf(a,c)})}function Tf(a,b){Pf(U,a,function(a){Qf(a,b||"",!0)})} | |
201 | function Rg(a){if(!a.m){var b={},c={};Sg(a,c)&&(b.A=c,a.rules=null);b.cssText=a.parsedCssText.replace(Vf,"").replace(Qf,"");a.m=b}}function Sg(a,b){var c=a.m;if(c){if(c.A)return Object.assign(b,c.A),!0}else{c=a.parsedCssText;for(var d;a=Qf.exec(c);){d=(a[2]||a[3]).trim();if("inherit"!==d||"unset"!==d)b[a[1].trim()]=d;d=!0}return d}} |
|
200 | function Uf(a,b,c,d){var e=U;R||"shady"===(void 0===d?"":d)?b=zf(b,c):(a=Kf(a),b=Vf(e,b,a.is,a.N,c)+"\n\n");return b.trim()}function Vf(a,b,c,d,e){var f=Wf(c,d);c=c?Xf+c:"";return zf(b,function(b){b.c||(b.selector=b.m=Yf(a,b,a.b,c,f),b.c=!0);e&&e(b,c,f)})}function Wf(a,b){return b?"[is="+a+"]":a}function Yf(a,b,c,d,e){var f=Lf(b.selector);if(!Cf(b)){b=0;for(var h=f.length,g=void 0;b<h&&(g=f[b]);b++)f[b]=c.call(a,g,d,e)}return f.filter(function(a){return!!a}).join(Zf)} | |
202 | function Tg(a,b,c){b&&(b=0<=b.indexOf(";")?Ug(a,b,c):dg(b,function(b,e,f,h){if(!e)return b+h;(e=Tg(a,c[e],c))&&"initial"!==e?"apply-shim-inherit"===e&&(e="inherit"):e=Tg(a,c[f]||f,c)||f;return b+(e||"")+h}));return b&&b.trim()||""} |
|
201 | function $f(a){return a.replace(ag,function(a,c,d){-1<d.indexOf("+")?d=d.replace(/\+/g,"___"):-1<d.indexOf("___")&&(d=d.replace(/___/g,"+"));return":"+c+"("+d+")"})}function bg(a){for(var b=[],c;c=a.match(cg);){var d=c.index,e=Hf(a,d);if(-1===e)throw Error(c.input+" selector missing ')'");c=a.slice(d,e+1);a=a.replace(c,"\ue000");b.push(c)}return{ka:a,matches:b}}function dg(a,b){var c=a.split("\ue000");return b.reduce(function(a,b,f){return a+b+c[f+1]},c[0])} | |
203 | function Ug(a,b,c){b=b.split(";");for(var d=0,e,f;d<b.length;d++)if(e=b[d]){Rf.lastIndex=0;if(f=Rf.exec(e))e=Tg(a,c[f[1]],c);else if(f=e.indexOf(":"),-1!==f){var h=e.substring(f);h=h.trim();h=Tg(a,h,c)||h;e=e.substring(0,f)+h}b[d]=e&&e.lastIndexOf(";")===e.length-1?e.slice(0,-1):e||""}return b.join(";")} |
|
202 | Nf.prototype.b=function(a,b,c){var d=!1;a=a.trim();var e=ag.test(a);e&&(a=a.replace(ag,function(a,b,c){return":"+b+"("+c.replace(/\s/g,"")+")"}),a=$f(a));var f=cg.test(a);if(f){var h=bg(a);a=h.ka;h=h.matches}a=a.replace(eg,fg+" $1");a=a.replace(gg,function(a,e,f){d||(a=hg(f,e,b,c),d=d||a.stop,e=a.Ja,f=a.value);return e+f});f&&(a=dg(a,h));e&&(a=$f(a));return a}; | |
204 | function Vg(a,b){var c={},d=[];Yf(a,function(a){a.m||Rg(a);var e=a.s||a.parsedSelector;b&&a.m.A&&e&&Ng.call(b,e)&&(Sg(a,c),a=a.index,e=parseInt(a/32,10),d[e]=(d[e]||0)|1<<a%32)},null,!0);return{A:c,key:d}} |
|
203 | function hg(a,b,c,d){var e=a.indexOf(ig);0<=a.indexOf(fg)?a=jg(a,d):0!==e&&(a=c?kg(a,c):a);c=!1;0<=e&&(b="",c=!0);if(c){var f=!0;c&&(a=a.replace(lg,function(a,b){return" > "+b}))}a=a.replace(mg,function(a,b,c){return'[dir="'+c+'"] '+b+", "+b+'[dir="'+c+'"]'});return{value:a,Ja:b,stop:f}}function kg(a,b){a=a.split(ng);a[0]+=b;return a.join(ng)} | |
205 | function Wg(a,b,c,d){b.m||Rg(b);if(b.m.A){var e=fg(a);a=e.is;e=e.P;e=a?pg(a,e):"html";var f=b.parsedSelector,h=":host > *"===f||"html"===f,g=0===f.indexOf(":host")&&!h;"shady"===c&&(h=f===e+" > *."+e||-1!==f.indexOf("html"),g=!h&&0===f.indexOf(e));"shadow"===c&&(h=":host > *"===f||"html"===f,g=g&&!h);if(h||g)c=e,g&&(b.s||(b.s=rg(W,b,W.b,a?qg+a:"",e)),c=b.s||e),d({ab:c,Ua:g,ub:h})}} |
|
204 | function jg(a,b){var c=a.match(og);return(c=c&&c[2].trim()||"")?c[0].match(pg)?a.replace(og,function(a,c,f){return b+f}):c.split(pg)[0]===b?c:qg:a.replace(fg,b)}function rg(a){a.selector===sg&&(a.selector="html")}Nf.prototype.c=function(a){return a.match(fg)?"":a.match(ig)?this.b(a,tg):kg(a.trim(),tg)};q.Object.defineProperties(Nf.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"style-scope"}}}); | |
206 | function Xg(a,b){var c={},d={},e=b&&b.__cssBuild;Yf(b,function(b){Wg(a,b,e,function(e){Ng.call(a.lb||a,e.ab)&&(e.Ua?Sg(b,c):Sg(b,d))})},null,!0);return{$a:d,Sa:c}} |
|
205 | var ag=/:(nth[-\w]+)\(([^)]+)\)/,tg=":not(.style-scope)",Zf=",",gg=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=[])+)/g,pg=/[[.:#*]/,fg=":host",sg=":root",ig="::slotted",eg=new RegExp("^("+ig+")"),og=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,lg=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,mg=/(.*):dir\((?:(ltr|rtl))\)/,Xf=".",ng=":",Rf="class",qg="should_not_match",cg=/:(?:matches|any|-(?:webkit|moz)-any)/,U=new Nf;function ug(a,b,c,d,e){this.B=a||null;this.b=b||null;this.c=c||[];this.J=null;this.V=e||"";this.N=d||"";this.a=this.u=this.F=null}function V(a){return a?a.__styleInfo:null}function vg(a,b){return a.__styleInfo=b}ug.prototype.f=function(){return this.B};ug.prototype._getStyleRules=ug.prototype.f;function wg(a){var b=this.matches||this.matchesSelector||this.mozMatchesSelector||this.msMatchesSelector||this.oMatchesSelector||this.webkitMatchesSelector;return b&&b.call(this,a)}var xg=navigator.userAgent.match("Trident");function yg(){}function zg(a){var b={},c=[],d=0;Af(a,function(a){Ag(a);a.index=d++;a=a.l.cssText;for(var c;c=uf.exec(a);){var e=c[1];":"!==c[2]&&(b[e]=!0)}},function(a){c.push(a)});a.b=c;a=[];for(var e in b)a.push(e);return a} | |
207 | function Yg(a,b,c,d){var e=fg(b),f=pg(e.is,e.P),h=new RegExp("(?:^|[^.#[:])"+(b.extends?"\\"+f.slice(0,-1)+"\\]":f)+"($|[.:[\\s>+~])");e=X(b).B;var g=Zg(e,d);return ng(b,e,function(b){var e="";b.m||Rg(b);b.m.cssText&&(e=Ug(a,b.m.cssText,c));b.cssText=e;if(!S&&!$f(b)&&b.cssText){var k=e=b.cssText;null==b.wa&&(b.wa=Tf.test(e));if(b.wa)if(null==b.$){b.$=[];for(var n in g)k=g[n],k=k(e),e!==k&&(e=k,b.$.push(n))}else{for(n=0;n<b.$.length;++n)k=g[b.$[n]],e=k(e);k=e}b.cssText=k;b.s=b.s||b.selector;e="."+ |
|
206 | function Ag(a){if(!a.l){var b={},c={};Bg(a,c)&&(b.A=c,a.rules=null);b.cssText=a.parsedCssText.replace(xf,"").replace(sf,"");a.l=b}}function Bg(a,b){var c=a.l;if(c){if(c.A)return Object.assign(b,c.A),!0}else{c=a.parsedCssText;for(var d;a=sf.exec(c);){d=(a[2]||a[3]).trim();if("inherit"!==d||"unset"!==d)b[a[1].trim()]=d;d=!0}return d}} | |
208 | d;n=b.s.split(",");k=0;for(var t=n.length,C;k<t&&(C=n[k]);k++)n[k]=C.match(h)?C.replace(f,e):e+" "+C;b.selector=n.join(",")}})}function Zg(a,b){a=a.b;var c={};if(!S&&a)for(var d=0,e=a[d];d<a.length;e=a[++d]){var f=e,h=b;f.i=new RegExp("\\b"+f.keyframesName+"(?!\\B|-)","g");f.a=f.keyframesName+"-"+h;f.s=f.s||f.selector;f.selector=f.s.replace(f.keyframesName,f.a);c[e.keyframesName]=$g(e)}return c}function $g(a){return function(b){return b.replace(a.i,a.a)}} |
|
207 | function Cg(a,b,c){b&&(b=0<=b.indexOf(";")?Dg(a,b,c):If(b,function(b,e,f,h){if(!e)return b+h;(e=Cg(a,c[e],c))&&"initial"!==e?"apply-shim-inherit"===e&&(e="inherit"):e=Cg(a,c[f]||f,c)||f;return b+(e||"")+h}));return b&&b.trim()||""} | |
209 | function ah(a,b){var c=bh,d=Zf(a);a.textContent=Xf(d,function(a){var d=a.cssText=a.parsedCssText;a.m&&a.m.cssText&&(d=d.replace(Kf,"").replace(Lf,""),a.cssText=Ug(c,d,b))})}ea.Object.defineProperties(Pg.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"x-scope"}}});var bh=new Pg;var ch={},dh=window.customElements;if(dh&&!S){var eh=dh.define;dh.define=function(a,b,c){var d=document.createComment(" Shady DOM styles for "+a+" "),e=document.head;e.insertBefore(d,(cg?cg.nextSibling:null)||e.firstChild);cg=d;ch[a]=d;eh.call(dh,a,b,c)}};function fh(){this.cache={}}fh.prototype.store=function(a,b,c,d){var e=this.cache[a]||[];e.push({A:b,styleElement:c,v:d});100<e.length&&e.shift();this.cache[a]=e};fh.prototype.fetch=function(a,b,c){if(a=this.cache[a])for(var d=a.length-1;0<=d;d--){var e=a[d],f;a:{for(f=0;f<c.length;f++){var h=c[f];if(e.A[h]!==b[h]){f=!1;break a}}f=!0}if(f)return e}};function gh(){} |
|
208 | function Dg(a,b,c){b=b.split(";");for(var d=0,e,f;d<b.length;d++)if(e=b[d]){tf.lastIndex=0;if(f=tf.exec(e))e=Cg(a,c[f[1]],c);else if(f=e.indexOf(":"),-1!==f){var h=e.substring(f);h=h.trim();h=Cg(a,h,c)||h;e=e.substring(0,f)+h}b[d]=e&&e.lastIndexOf(";")===e.length-1?e.slice(0,-1):e||""}return b.join(";")} | |
210 | function hh(a){for(var b=0;b<a.length;b++){var c=a[b];if(c.target!==document.documentElement&&c.target!==document.head)for(var d=0;d<c.addedNodes.length;d++){var e=c.addedNodes[d];if(e.nodeType===Node.ELEMENT_NODE){var f=e.getRootNode();var h=e;var g=[];h.classList?g=Array.from(h.classList):h instanceof window.SVGElement&&h.hasAttribute("class")&&(g=h.getAttribute("class").split(/\s+/));h=g;g=h.indexOf(W.a);if((h=-1<g?h[g+1]:"")&&f===e.ownerDocument)mg(e,h);else if(f.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(f= |
|
209 | function Eg(a,b){var c={},d=[];Af(a,function(a){a.l||Ag(a);var e=a.m||a.parsedSelector;b&&a.l.A&&e&&wg.call(b,e)&&(Bg(a,c),a=a.index,e=parseInt(a/32,10),d[e]=(d[e]||0)|1<<a%32)},null,!0);return{A:c,key:d}} | |
211 | f.host))for(f=fg(f).is,f!==h&&lg(e,h,f),e=window.ShadyDOM.nativeMethods.querySelectorAll.call(e,":not(."+W.a+")"),f=0;f<e.length;f++)if(h=e[f],g=h.getRootNode().host)g=fg(g).is,jg(h,g)}}}} |
|
210 | function Fg(a,b,c,d){b.l||Ag(b);if(b.l.A){var e=Kf(a);a=e.is;e=e.N;e=a?Wf(a,e):"html";var f=b.parsedSelector,h=":host > *"===f||"html"===f,g=0===f.indexOf(":host")&&!h;"shady"===c&&(h=f===e+" > *."+e||-1!==f.indexOf("html"),g=!h&&0===f.indexOf(e));if(h||g)c=e,g&&(b.m||(b.m=Yf(U,b,U.b,a?Xf+a:"",e)),c=b.m||e),d({ka:c,Pa:g,sb:h})}}function Gg(a,b,c){var d={},e={};Af(b,function(b){Fg(a,b,c,function(c){wg.call(a.jb||a,c.ka)&&(c.Pa?Bg(b,d):Bg(b,e))})},null,!0);return{Xa:e,Oa:d}} | |
212 | if(!S){var ih=new MutationObserver(hh),jh=function(a){ih.observe(a,{childList:!0,subtree:!0})};if(window.customElements&&!window.customElements.polyfillWrapFlushCallback)jh(document);else{var kh=function(){jh(document.body)};window.HTMLImports?window.HTMLImports.whenReady(kh):requestAnimationFrame(function(){if("loading"===document.readyState){var a=function(){kh();document.removeEventListener("readystatechange",a)};document.addEventListener("readystatechange",a)}else kh()})}gh=function(){hh(ih.takeRecords())}} |
|
211 | function Hg(a,b,c,d){var e=Kf(b),f=Wf(e.is,e.N),h=new RegExp("(?:^|[^.#[:])"+(b.extends?"\\"+f.slice(0,-1)+"\\]":f)+"($|[.:[\\s>+~])"),g=V(b);e=g.B;g=g.V;var k=Ig(e,d);return Uf(b,e,function(b){var e="";b.l||Ag(b);b.l.cssText&&(e=Dg(a,b.l.cssText,c));b.cssText=e;if(!R&&!Cf(b)&&b.cssText){var g=e=b.cssText;null==b.ra&&(b.ra=vf.test(e));if(b.ra)if(null==b.X){b.X=[];for(var l in k)g=k[l],g=g(e),e!==g&&(e=g,b.X.push(l))}else{for(l=0;l<b.X.length;++l)g=k[b.X[l]],e=g(e);g=e}b.cssText=g;b.m=b.m||b.selector; | |
213 | var lh=gh;var mh={};var nh=Promise.resolve();function oh(a){if(a=mh[a])a._applyShimCurrentVersion=a._applyShimCurrentVersion||0,a._applyShimValidatingVersion=a._applyShimValidatingVersion||0,a._applyShimNextVersion=(a._applyShimNextVersion||0)+1}function ph(a){return a._applyShimCurrentVersion===a._applyShimNextVersion}function qh(a){a._applyShimValidatingVersion=a._applyShimNextVersion;a.b||(a.b=!0,nh.then(function(){a._applyShimCurrentVersion=a._applyShimNextVersion;a.b=!1}))};var rh=new fh;function Y(){this.J={};this.c=document.documentElement;var a=new xf;a.rules=[];this.i=Mg(this.c,new Lg(a));this.o=!1;this.b=this.a=null}p=Y.prototype;p.pa=function(){lh()};p.Qa=function(a){return Zf(a)};p.cb=function(a){return Xf(a)};p.prepareTemplate=function(a,b,c){this.prepareTemplateDom(a,b);this.prepareTemplateStyles(a,b,c)}; |
|
212 | e="."+d;l=Lf(b.m);g=0;for(var N=l.length,Y=void 0;g<N&&(Y=l[g]);g++)l[g]=Y.match(h)?Y.replace(f,e):e+" "+Y;b.selector=l.join(",")}},g)}function Ig(a,b){a=a.b;var c={};if(!R&&a)for(var d=0,e=a[d];d<a.length;e=a[++d]){var f=e,h=b;f.f=new RegExp("\\b"+f.keyframesName+"(?!\\B|-)","g");f.a=f.keyframesName+"-"+h;f.m=f.m||f.selector;f.selector=f.m.replace(f.keyframesName,f.a);c[e.keyframesName]=Jg(e)}return c}function Jg(a){return function(b){return b.replace(a.f,a.a)}} | |
214 | p.prepareTemplateStyles=function(a,b,c){if(!a.o){a.o=!0;a.name=b;a.extends=c;mh[b]=a;var d=(d=a.content.querySelector("style"))?d.getAttribute("css-build")||"":"";var e=[];for(var f=a.content.querySelectorAll("style"),h=0;h<f.length;h++){var g=f[h];if(g.hasAttribute("shady-unscoped")){if(!S){var k=g.textContent;Wf.has(k)||(Wf.add(k),k=g.cloneNode(!0),document.head.appendChild(k));g.parentNode.removeChild(g)}}else e.push(g.textContent),g.parentNode.removeChild(g)}e=e.join("").trim();c={is:b,extends:c, |
|
213 | function Kg(a,b){var c=Lg,d=Bf(a);a.textContent=zf(d,function(a){var d=a.cssText=a.parsedCssText;a.l&&a.l.cssText&&(d=d.replace(mf,"").replace(nf,""),a.cssText=Dg(c,d,b))})}q.Object.defineProperties(yg.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"x-scope"}}});var Lg=new yg;var Mg={},Ng=window.customElements;if(Ng&&!R){var Og=Ng.define;Ng.define=function(a,b,c){Mg[a]||(Mg[a]=Gf(a));Og.call(Ng,a,b,c)}};function Pg(){this.cache={}}Pg.prototype.store=function(a,b,c,d){var e=this.cache[a]||[];e.push({A:b,styleElement:c,u:d});100<e.length&&e.shift();this.cache[a]=e};Pg.prototype.fetch=function(a,b,c){if(a=this.cache[a])for(var d=a.length-1;0<=d;d--){var e=a[d],f;a:{for(f=0;f<c.length;f++){var h=c[f];if(e.A[h]!==b[h]){f=!1;break a}}f=!0}if(f)return e}};function Qg(){}function Rg(a){var b=[];a.classList?b=Array.from(a.classList):a instanceof window.SVGElement&&a.hasAttribute("class")&&(b=a.getAttribute("class").split(/\s+/));a=b;b=a.indexOf(U.a);return-1<b?a[b+1]:""}function Sg(a){var b=a.getRootNode();return b===a||b===a.ownerDocument?"":(a=b.host)?Kf(a).is:""} | |
215 | ib:d};sh(this);f=Rf.test(e)||Qf.test(e);Rf.lastIndex=0;Qf.lastIndex=0;e=yf(e);f&&U&&this.a&&this.a.transformRules(e,b);a._styleAst=e;a.J=d;d=[];U||(d=Qg(a._styleAst));if(!d.length||U)e=S?a.content:null,b=ch[b],f=ng(c,a._styleAst),b=f.length?ag(f,c.is,e,b):void 0,a.a=b;a.i=d}};p.prepareTemplateDom=function(a,b){S||a.c||(a.c=!0,hg(a.content,b))}; |
|
214 | function Tg(a){for(var b=0;b<a.length;b++){var c=a[b];if(c.target!==document.documentElement&&c.target!==document.head)for(var d=0;d<c.addedNodes.length;d++){var e=c.addedNodes[d];if(e.nodeType===Node.ELEMENT_NODE){var f=e.getRootNode(),h=Rg(e);if(h&&f===e.ownerDocument&&("style"!==e.localName&&"template"!==e.localName||""===Mf(e)))Tf(e,h);else if(f instanceof ShadowRoot)for(f=Sg(e),f!==h&&Sf(e,h,f),e=window.ShadyDOM.nativeMethods.querySelectorAll.call(e,":not(."+U.a+")"),h=0;h<e.length;h++){f=e[h]; | |
216 | function th(a){!a.b&&window.ShadyCSS&&window.ShadyCSS.CustomStyleInterface&&(a.b=window.ShadyCSS.CustomStyleInterface,a.b.transformCallback=function(b){a.Aa(b)},a.b.validateCallback=function(){requestAnimationFrame(function(){(a.b.enqueued||a.o)&&a.flushCustomStyles()})})}function sh(a){!a.a&&window.ShadyCSS&&window.ShadyCSS.ApplyShim&&(a.a=window.ShadyCSS.ApplyShim,a.a.invalidCallback=oh);th(a)} |
|
215 | var g=Sg(f);g&&Qf(f,g)}}}}} | |
217 | p.flushCustomStyles=function(){sh(this);if(this.b){var a=this.b.processStyles();if(this.b.enqueued){if(U)for(var b=0;b<a.length;b++){var c=this.b.getStyleForCustomStyle(a[b]);if(c&&U&&this.a){var d=Zf(c);sh(this);this.a.transformRules(d);c.textContent=Xf(d)}}else for(uh(this,this.c,this.i),b=0;b<a.length;b++)(c=this.b.getStyleForCustomStyle(a[b]))&&ah(c,this.i.G);this.b.enqueued=!1;this.o&&!U&&this.styleDocument()}}}; |
|
216 | if(!(R||window.ShadyDOM&&window.ShadyDOM.handlesDynamicScoping)){var Ug=new MutationObserver(Tg),Vg=function(a){Ug.observe(a,{childList:!0,subtree:!0})};if(window.customElements&&!window.customElements.polyfillWrapFlushCallback)Vg(document);else{var Wg=function(){Vg(document.body)};window.HTMLImports?window.HTMLImports.whenReady(Wg):requestAnimationFrame(function(){if("loading"===document.readyState){var a=function(){Wg();document.removeEventListener("readystatechange",a)};document.addEventListener("readystatechange", | |
218 | p.styleElement=function(a,b){var c=fg(a).is,d=X(a);if(!d){var e=fg(a);d=e.is;e=e.P;var f=ch[d];d=mh[d];if(d){var h=d._styleAst;var g=d.i}d=Mg(a,new Lg(h,f,g,e))}a!==this.c&&(this.o=!0);b&&(d.L=d.L||{},Object.assign(d.L,b));if(U){if(d.L){b=d.L;for(var k in b)null===k?a.style.removeProperty(k):a.style.setProperty(k,b[k])}if(((k=mh[c])||a===this.c)&&k&&k.a&&!ph(k)){if(ph(k)||k._applyShimValidatingVersion!==k._applyShimNextVersion)sh(this),this.a&&this.a.transformRules(k._styleAst,c),k.a.textContent= |
|
217 | a)}else Wg()})}Qg=function(){Tg(Ug.takeRecords())}}var Xg=Qg;var Yg={};var Zg=Promise.resolve();function $g(a){if(a=Yg[a])a._applyShimCurrentVersion=a._applyShimCurrentVersion||0,a._applyShimValidatingVersion=a._applyShimValidatingVersion||0,a._applyShimNextVersion=(a._applyShimNextVersion||0)+1}function ah(a){return a._applyShimCurrentVersion===a._applyShimNextVersion}function bh(a){a._applyShimValidatingVersion=a._applyShimNextVersion;a.b||(a.b=!0,Zg.then(function(){a._applyShimCurrentVersion=a._applyShimNextVersion;a.b=!1}))};var ch=new Pg;function W(){this.o={};this.c=document.documentElement;var a=new Ue;a.rules=[];this.f=vg(this.c,new ug(a));this.h=!1;this.b=this.a=null}n=W.prototype;n.flush=function(){Xg()};n.Ma=function(a){return Bf(a)};n.ab=function(a){return zf(a)};n.prepareTemplate=function(a,b,c){this.prepareTemplateDom(a,b);this.prepareTemplateStyles(a,b,c)}; | |
219 | ng(a,d.B),qh(k);S&&(c=a.shadowRoot)&&(c.querySelector("style").textContent=ng(a,d.B));d.B=k._styleAst}}else if(this.pa(),uh(this,a,d),d.oa&&d.oa.length){c=d;k=fg(a).is;d=(b=rh.fetch(k,c.G,c.oa))?b.styleElement:null;h=c.v;(g=b&&b.v)||(g=this.J[k]=(this.J[k]||0)+1,g=k+"-"+g);c.v=g;g=c.v;e=bh;e=d?d.textContent||"":Yg(e,a,c.G,g);f=X(a);var l=f.a;l&&!S&&l!==d&&(l._useCount--,0>=l._useCount&&l.parentNode&&l.parentNode.removeChild(l));S?f.a?(f.a.textContent=e,d=f.a):e&&(d=ag(e,g,a.shadowRoot,f.b)):d?d.parentNode|| |
|
218 | n.prepareTemplateStyles=function(a,b,c){if(!a.h){R||Mg[b]||(Mg[b]=Gf(b));a.h=!0;a.name=b;a.extends=c;Yg[b]=a;var d=Mf(a);var e=[];for(var f=a.content.querySelectorAll("style"),h=0;h<f.length;h++){var g=f[h];if(g.hasAttribute("shady-unscoped")){if(!R){var k=g.textContent;yf.has(k)||(yf.add(k),k=g.cloneNode(!0),document.head.appendChild(k));g.parentNode.removeChild(g)}}else e.push(g.textContent),g.parentNode.removeChild(g)}e=e.join("").trim();c={is:b,extends:c};dh(this);if(f=""===Mf(a))f=tf.test(e)|| | |
220 | (Og&&-1<e.indexOf("@media")&&(d.textContent=e),bg(d,null,f.b)):e&&(d=ag(e,g,null,f.b));d&&(d._useCount=d._useCount||0,f.a!=d&&d._useCount++,f.a=d);g=d;S||(d=c.v,f=e=a.getAttribute("class")||"",h&&(f=e.replace(new RegExp("\\s*x-scope\\s*"+h+"\\s*","g")," ")),f+=(f?" ":"")+"x-scope "+d,e!==f&&eg(a,f));b||rh.store(k,c.G,g,c.v)}};function vh(a,b){return(b=b.getRootNode().host)?X(b)?b:vh(a,b):a.c} |
|
219 | sf.test(e),tf.lastIndex=0,sf.lastIndex=0;e=Ve(e);f&&S&&this.a&&this.a.transformRules(e,b);a._styleAst=e;e=[];S||(e=zg(a._styleAst));if(!e.length||S)f=R?a.content:null,b=Mg[b]||null,d=Uf(c,a._styleAst,null,d),d=d.length?Df(d,c.is,f,b):void 0,a.a=d;a.f=e}};n.prepareTemplateDom=function(a,b){var c=Mf(a);R||"shady"===c||a.c||(a.c=!0,Of(a.content,b))}; | |
221 | function uh(a,b,c){a=vh(a,b);var d=X(a);a=Object.create(d.G||null);var e=Xg(b,c.B);b=Vg(d.B,b).A;Object.assign(a,e.Sa,b,e.$a);b=c.L;for(var f in b)if((e=b[f])||0===e)a[f]=e;f=bh;b=Object.getOwnPropertyNames(a);for(e=0;e<b.length;e++)d=b[e],a[d]=Tg(f,a[d],a);c.G=a}p.styleDocument=function(a){this.styleSubtree(this.c,a)}; |
|
220 | function eh(a){!a.b&&window.ShadyCSS&&window.ShadyCSS.CustomStyleInterface&&(a.b=window.ShadyCSS.CustomStyleInterface,a.b.transformCallback=function(b){a.va(b)},a.b.validateCallback=function(){requestAnimationFrame(function(){(a.b.enqueued||a.h)&&a.flushCustomStyles()})})}function dh(a){!a.a&&window.ShadyCSS&&window.ShadyCSS.ApplyShim&&(a.a=window.ShadyCSS.ApplyShim,a.a.invalidCallback=$g);eh(a)} | |
222 | p.styleSubtree=function(a,b){var c=a.shadowRoot;(c||a===this.c)&&this.styleElement(a,b);if(b=c&&(c.children||c.childNodes))for(a=0;a<b.length;a++)this.styleSubtree(b[a]);else if(a=a.children||a.childNodes)for(b=0;b<a.length;b++)this.styleSubtree(a[b])};p.Aa=function(a){var b=this,c=Zf(a);Yf(c,function(a){if(S)Ig(a);else{var c=W;a.selector=a.parsedSelector;Ig(a);a.selector=a.s=rg(c,a,c.c,void 0,void 0)}U&&(sh(b),b.a&&b.a.transformRule(a))});U?a.textContent=Xf(c):this.i.B.rules.push(c)}; |
|
221 | n.flushCustomStyles=function(){dh(this);if(this.b){var a=this.b.processStyles();if(this.b.enqueued){if(S)for(var b=0;b<a.length;b++){var c=this.b.getStyleForCustomStyle(a[b]);if(c&&S&&this.a){var d=Bf(c);dh(this);this.a.transformRules(d);c.textContent=zf(d)}}else for(fh(this,this.c,this.f),b=0;b<a.length;b++)(c=this.b.getStyleForCustomStyle(a[b]))&&Kg(c,this.f.F);this.b.enqueued=!1;this.h&&!S&&this.styleDocument()}}}; | |
223 | p.getComputedStyleValue=function(a,b){var c;U||(c=(X(a)||X(vh(this,a))).G[b]);return(c=c||window.getComputedStyle(a).getPropertyValue(b))?c.trim():""};p.bb=function(a,b){var c=a.getRootNode();b=b?b.split(/\s/):[];c=c.host&&c.host.localName;if(!c){var d=a.getAttribute("class");if(d){d=d.split(/\s/);for(var e=0;e<d.length;e++)if(d[e]===W.a){c=d[e+1];break}}}c&&b.push(W.a,c);U||(c=X(a))&&c.v&&b.push(bh.a,c.v);eg(a,b.join(" "))};p.Na=function(a){return X(a)};Y.prototype.flush=Y.prototype.pa; |
|
222 | n.styleElement=function(a,b){var c=V(a);if(!c){var d=Kf(a);c=d.is;d=d.N;var e=Mg[c]||null;c=Yg[c];if(c){var f=c._styleAst;var h=c.f;var g=Mf(c)}f=new ug(f,e,h,d,g);c&&vg(a,f);c=f}a!==this.c&&(this.h=!0);b&&(c.J=c.J||{},Object.assign(c.J,b));if(S){b=c;f=Kf(a).is;if(b.J){h=b.J;for(var k in h)null===k?a.style.removeProperty(k):a.style.setProperty(k,h[k])}if(!(!(k=Yg[f])&&a!==this.c||k&&""!==Mf(k))&&k&&k.a&&!ah(k)){if(ah(k)||k._applyShimValidatingVersion!==k._applyShimNextVersion)dh(this),this.a&&this.a.transformRules(k._styleAst, | |
224 | Y.prototype.prepareTemplate=Y.prototype.prepareTemplate;Y.prototype.styleElement=Y.prototype.styleElement;Y.prototype.styleDocument=Y.prototype.styleDocument;Y.prototype.styleSubtree=Y.prototype.styleSubtree;Y.prototype.getComputedStyleValue=Y.prototype.getComputedStyleValue;Y.prototype.setElementClass=Y.prototype.bb;Y.prototype._styleInfoForNode=Y.prototype.Na;Y.prototype.transformCustomStyleForDocument=Y.prototype.Aa;Y.prototype.getStyleAst=Y.prototype.Qa;Y.prototype.styleAstToString=Y.prototype.cb; |
|
223 | f),k.a.textContent=Uf(a,b.B),bh(k);R&&(f=a.shadowRoot)&&(f=f.querySelector("style"))&&(f.textContent=Uf(a,b.B));b.B=k._styleAst}}else if(k=c,this.flush(),fh(this,a,k),k.c&&k.c.length){b=Kf(a).is;c=(f=ch.fetch(b,k.F,k.c))?f.styleElement:null;h=k.u;(g=f&&f.u)||(g=this.o[b]=(this.o[b]||0)+1,g=b+"-"+g);k.u=g;g=k.u;d=Lg;d=c?c.textContent||"":Hg(d,a,k.F,g);e=V(a);var l=e.a;l&&!R&&l!==c&&(l._useCount--,0>=l._useCount&&l.parentNode&&l.parentNode.removeChild(l));R?e.a?(e.a.textContent=d,c=e.a):d&&(c=Df(d, | |
225 | Y.prototype.flushCustomStyles=Y.prototype.flushCustomStyles;Object.defineProperties(Y.prototype,{nativeShadow:{get:function(){return S}},nativeCss:{get:function(){return U}}});var Z=new Y,wh,xh;window.ShadyCSS&&(wh=window.ShadyCSS.ApplyShim,xh=window.ShadyCSS.CustomStyleInterface); |
|
224 | g,a.shadowRoot,e.b)):c?c.parentNode||(xg&&-1<d.indexOf("@media")&&(c.textContent=d),Ef(c,null,e.b)):d&&(c=Df(d,g,null,e.b));c&&(c._useCount=c._useCount||0,e.a!=c&&c._useCount++,e.a=c);g=c;R||(c=k.u,e=d=a.getAttribute("class")||"",h&&(e=d.replace(new RegExp("\\s*x-scope\\s*"+h+"\\s*","g")," ")),e+=(e?" ":"")+"x-scope "+c,d!==e&&Jf(a,e));f||ch.store(b,k.F,g,k.u)}};function gh(a,b){return(b=b.getRootNode().host)?V(b)?b:gh(a,b):a.c} | |
226 | window.ShadyCSS={ScopingShim:Z,prepareTemplate:function(a,b,c){Z.flushCustomStyles();Z.prepareTemplate(a,b,c)},prepareTemplateDom:function(a,b){Z.prepareTemplateDom(a,b)},prepareTemplateStyles:function(a,b,c){Z.flushCustomStyles();Z.prepareTemplateStyles(a,b,c)},styleSubtree:function(a,b){Z.flushCustomStyles();Z.styleSubtree(a,b)},styleElement:function(a){Z.flushCustomStyles();Z.styleElement(a)},styleDocument:function(a){Z.flushCustomStyles();Z.styleDocument(a)},flushCustomStyles:function(){Z.flushCustomStyles()}, |
|
225 | function fh(a,b,c){a=gh(a,b);var d=V(a);a=Object.create(d.F||null);var e=Gg(b,c.B,c.V);b=Eg(d.B,b).A;Object.assign(a,e.Oa,b,e.Xa);b=c.J;for(var f in b)if((e=b[f])||0===e)a[f]=e;f=Lg;b=Object.getOwnPropertyNames(a);for(e=0;e<b.length;e++)d=b[e],a[d]=Cg(f,a[d],a);c.F=a}n.styleDocument=function(a){this.styleSubtree(this.c,a)}; | |
227 | getComputedStyleValue:function(a,b){return Z.getComputedStyleValue(a,b)},nativeCss:U,nativeShadow:S};wh&&(window.ShadyCSS.ApplyShim=wh);xh&&(window.ShadyCSS.CustomStyleInterface=xh);var yh=window.customElements,zh=window.HTMLImports,Ah=window.HTMLTemplateElement;window.WebComponents=window.WebComponents||{};if(yh&&yh.polyfillWrapFlushCallback){var Bh,Ch=function(){if(Bh){Ah.C&&Ah.C(window.document);var a=Bh;Bh=null;a();return!0}},Dh=zh.whenReady;yh.polyfillWrapFlushCallback(function(a){Bh=a;Dh(Ch)});zh.whenReady=function(a){Dh(function(){Ch()?zh.whenReady(a):a()})}} |
|
226 | n.styleSubtree=function(a,b){var c=a.shadowRoot;(c||a===this.c)&&this.styleElement(a,b);if(b=c&&(c.children||c.childNodes))for(a=0;a<b.length;a++)this.styleSubtree(b[a]);else if(a=a.children||a.childNodes)for(b=0;b<a.length;b++)this.styleSubtree(a[b])}; | |
228 | zh.whenReady(function(){requestAnimationFrame(function(){window.WebComponents.ready=!0;document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})});var Eh=document.createElement("style");Eh.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n";var Fh=document.querySelector("head");Fh.insertBefore(Eh,Fh.firstChild);}).call(this); |
|
227 | n.va=function(a){var b=this,c=Bf(a),d=Mf(a);d!==this.f.V&&(this.f.V=d);Af(c,function(a){if(R)rg(a);else{var c=U;a.selector=a.parsedSelector;rg(a);a.selector=a.m=Yf(c,a,c.c,void 0,void 0)}S&&""===d&&(dh(b),b.a&&b.a.transformRule(a))});S?a.textContent=zf(c):this.f.B.rules.push(c)};n.getComputedStyleValue=function(a,b){var c;S||(c=(V(a)||V(gh(this,a))).F[b]);return(c=c||window.getComputedStyle(a).getPropertyValue(b))?c.trim():""}; | |
|
228 | n.$a=function(a,b){var c=a.getRootNode();b=b?b.split(/\s/):[];c=c.host&&c.host.localName;if(!c){var d=a.getAttribute("class");if(d){d=d.split(/\s/);for(var e=0;e<d.length;e++)if(d[e]===U.a){c=d[e+1];break}}}c&&b.push(U.a,c);S||(c=V(a))&&c.u&&b.push(Lg.a,c.u);Jf(a,b.join(" "))};n.Ia=function(a){return V(a)};n.Za=function(a,b){Qf(a,b)};n.bb=function(a,b){Qf(a,b,!0)};n.Ya=function(a){return Sg(a)};n.Ka=function(a){return Rg(a)};W.prototype.flush=W.prototype.flush;W.prototype.prepareTemplate=W.prototype.prepareTemplate; | |||
|
229 | W.prototype.styleElement=W.prototype.styleElement;W.prototype.styleDocument=W.prototype.styleDocument;W.prototype.styleSubtree=W.prototype.styleSubtree;W.prototype.getComputedStyleValue=W.prototype.getComputedStyleValue;W.prototype.setElementClass=W.prototype.$a;W.prototype._styleInfoForNode=W.prototype.Ia;W.prototype.transformCustomStyleForDocument=W.prototype.va;W.prototype.getStyleAst=W.prototype.Ma;W.prototype.styleAstToString=W.prototype.ab;W.prototype.flushCustomStyles=W.prototype.flushCustomStyles; | |||
|
230 | W.prototype.scopeNode=W.prototype.Za;W.prototype.unscopeNode=W.prototype.bb;W.prototype.scopeForNode=W.prototype.Ya;W.prototype.currentScopeForNode=W.prototype.Ka;Object.defineProperties(W.prototype,{nativeShadow:{get:function(){return R}},nativeCss:{get:function(){return S}}});var X=new W,hh,ih;window.ShadyCSS&&(hh=window.ShadyCSS.ApplyShim,ih=window.ShadyCSS.CustomStyleInterface); | |||
|
231 | window.ShadyCSS={ScopingShim:X,prepareTemplate:function(a,b,c){X.flushCustomStyles();X.prepareTemplate(a,b,c)},prepareTemplateDom:function(a,b){X.prepareTemplateDom(a,b)},prepareTemplateStyles:function(a,b,c){X.flushCustomStyles();X.prepareTemplateStyles(a,b,c)},styleSubtree:function(a,b){X.flushCustomStyles();X.styleSubtree(a,b)},styleElement:function(a){X.flushCustomStyles();X.styleElement(a)},styleDocument:function(a){X.flushCustomStyles();X.styleDocument(a)},flushCustomStyles:function(){X.flushCustomStyles()}, | |||
|
232 | getComputedStyleValue:function(a,b){return X.getComputedStyleValue(a,b)},nativeCss:S,nativeShadow:R};hh&&(window.ShadyCSS.ApplyShim=hh);ih&&(window.ShadyCSS.CustomStyleInterface=ih);var jh=window.customElements,kh=window.HTMLImports,lh=window.HTMLTemplateElement;window.WebComponents=window.WebComponents||{};if(jh&&jh.polyfillWrapFlushCallback){var mh,nh=function(){if(mh){lh.C&&lh.C(window.document);var a=mh;mh=null;a();return!0}},oh=kh.whenReady;jh.polyfillWrapFlushCallback(function(a){mh=a;oh(nh)});kh.whenReady=function(a){oh(function(){nh()?kh.whenReady(a):a()})}} | |||
|
233 | kh.whenReady(function(){requestAnimationFrame(function(){window.WebComponents.ready=!0;document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})});var ph=document.createElement("style");ph.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n";var qh=document.querySelector("head");qh.insertBefore(ph,qh.firstChild);}).call(this); | |||
229 |
|
234 | |||
230 | //# sourceMappingURL=webcomponents-lite.js.map |
|
235 | //# sourceMappingURL=webcomponents-lite.js.map |
@@ -1,884 +1,967 b'' | |||||
1 | <%namespace name="commentblock" file="/changeset/changeset_file_comment.mako"/> |
|
1 | <%namespace name="commentblock" file="/changeset/changeset_file_comment.mako"/> | |
2 |
|
2 | |||
3 | <%def name="diff_line_anchor(filename, line, type)"><% |
|
3 | <%def name="diff_line_anchor(filename, line, type)"><% | |
4 | return '%s_%s_%i' % (h.safeid(filename), type, line) |
|
4 | return '%s_%s_%i' % (h.safeid(filename), type, line) | |
5 | %></%def> |
|
5 | %></%def> | |
6 |
|
6 | |||
7 | <%def name="action_class(action)"> |
|
7 | <%def name="action_class(action)"> | |
8 | <% |
|
8 | <% | |
9 | return { |
|
9 | return { | |
10 | '-': 'cb-deletion', |
|
10 | '-': 'cb-deletion', | |
11 | '+': 'cb-addition', |
|
11 | '+': 'cb-addition', | |
12 | ' ': 'cb-context', |
|
12 | ' ': 'cb-context', | |
13 | }.get(action, 'cb-empty') |
|
13 | }.get(action, 'cb-empty') | |
14 | %> |
|
14 | %> | |
15 | </%def> |
|
15 | </%def> | |
16 |
|
16 | |||
17 | <%def name="op_class(op_id)"> |
|
17 | <%def name="op_class(op_id)"> | |
18 | <% |
|
18 | <% | |
19 | return { |
|
19 | return { | |
20 | DEL_FILENODE: 'deletion', # file deleted |
|
20 | DEL_FILENODE: 'deletion', # file deleted | |
21 | BIN_FILENODE: 'warning' # binary diff hidden |
|
21 | BIN_FILENODE: 'warning' # binary diff hidden | |
22 | }.get(op_id, 'addition') |
|
22 | }.get(op_id, 'addition') | |
23 | %> |
|
23 | %> | |
24 | </%def> |
|
24 | </%def> | |
25 |
|
25 | |||
26 |
|
26 | |||
27 |
|
27 | |||
28 | <%def name="render_diffset(diffset, commit=None, |
|
28 | <%def name="render_diffset(diffset, commit=None, | |
29 |
|
29 | |||
30 | # collapse all file diff entries when there are more than this amount of files in the diff |
|
30 | # collapse all file diff entries when there are more than this amount of files in the diff | |
31 | collapse_when_files_over=20, |
|
31 | collapse_when_files_over=20, | |
32 |
|
32 | |||
33 | # collapse lines in the diff when more than this amount of lines changed in the file diff |
|
33 | # collapse lines in the diff when more than this amount of lines changed in the file diff | |
34 | lines_changed_limit=500, |
|
34 | lines_changed_limit=500, | |
35 |
|
35 | |||
36 | # add a ruler at to the output |
|
36 | # add a ruler at to the output | |
37 | ruler_at_chars=0, |
|
37 | ruler_at_chars=0, | |
38 |
|
38 | |||
39 | # show inline comments |
|
39 | # show inline comments | |
40 | use_comments=False, |
|
40 | use_comments=False, | |
41 |
|
41 | |||
42 | # disable new comments |
|
42 | # disable new comments | |
43 | disable_new_comments=False, |
|
43 | disable_new_comments=False, | |
44 |
|
44 | |||
45 | # special file-comments that were deleted in previous versions |
|
45 | # special file-comments that were deleted in previous versions | |
46 | # it's used for showing outdated comments for deleted files in a PR |
|
46 | # it's used for showing outdated comments for deleted files in a PR | |
47 | deleted_files_comments=None, |
|
47 | deleted_files_comments=None, | |
48 |
|
48 | |||
49 | # for cache purpose |
|
49 | # for cache purpose | |
50 | inline_comments=None, |
|
50 | inline_comments=None, | |
51 |
|
51 | |||
52 | )"> |
|
52 | )"> | |
53 | %if use_comments: |
|
53 | %if use_comments: | |
54 | <div id="cb-comments-inline-container-template" class="js-template"> |
|
54 | <div id="cb-comments-inline-container-template" class="js-template"> | |
55 | ${inline_comments_container([], inline_comments)} |
|
55 | ${inline_comments_container([], inline_comments)} | |
56 | </div> |
|
56 | </div> | |
57 | <div class="js-template" id="cb-comment-inline-form-template"> |
|
57 | <div class="js-template" id="cb-comment-inline-form-template"> | |
58 | <div class="comment-inline-form ac"> |
|
58 | <div class="comment-inline-form ac"> | |
59 |
|
59 | |||
60 | %if c.rhodecode_user.username != h.DEFAULT_USER: |
|
60 | %if c.rhodecode_user.username != h.DEFAULT_USER: | |
61 | ## render template for inline comments |
|
61 | ## render template for inline comments | |
62 | ${commentblock.comment_form(form_type='inline')} |
|
62 | ${commentblock.comment_form(form_type='inline')} | |
63 | %else: |
|
63 | %else: | |
64 | ${h.form('', class_='inline-form comment-form-login', method='get')} |
|
64 | ${h.form('', class_='inline-form comment-form-login', method='get')} | |
65 | <div class="pull-left"> |
|
65 | <div class="pull-left"> | |
66 | <div class="comment-help pull-right"> |
|
66 | <div class="comment-help pull-right"> | |
67 | ${_('You need to be logged in to leave comments.')} <a href="${h.route_path('login', _query={'came_from': h.current_route_path(request)})}">${_('Login now')}</a> |
|
67 | ${_('You need to be logged in to leave comments.')} <a href="${h.route_path('login', _query={'came_from': h.current_route_path(request)})}">${_('Login now')}</a> | |
68 | </div> |
|
68 | </div> | |
69 | </div> |
|
69 | </div> | |
70 | <div class="comment-button pull-right"> |
|
70 | <div class="comment-button pull-right"> | |
71 | <button type="button" class="cb-comment-cancel" onclick="return Rhodecode.comments.cancelComment(this);"> |
|
71 | <button type="button" class="cb-comment-cancel" onclick="return Rhodecode.comments.cancelComment(this);"> | |
72 | ${_('Cancel')} |
|
72 | ${_('Cancel')} | |
73 | </button> |
|
73 | </button> | |
74 | </div> |
|
74 | </div> | |
75 | <div class="clearfix"></div> |
|
75 | <div class="clearfix"></div> | |
76 | ${h.end_form()} |
|
76 | ${h.end_form()} | |
77 | %endif |
|
77 | %endif | |
78 | </div> |
|
78 | </div> | |
79 | </div> |
|
79 | </div> | |
80 |
|
80 | |||
81 | %endif |
|
81 | %endif | |
82 | <% |
|
82 | <% | |
83 | collapse_all = len(diffset.files) > collapse_when_files_over |
|
83 | collapse_all = len(diffset.files) > collapse_when_files_over | |
84 | %> |
|
84 | %> | |
85 |
|
85 | |||
86 | %if c.user_session_attrs["diffmode"] == 'sideside': |
|
86 | %if c.user_session_attrs["diffmode"] == 'sideside': | |
87 | <style> |
|
87 | <style> | |
88 | .wrapper { |
|
88 | .wrapper { | |
89 | max-width: 1600px !important; |
|
89 | max-width: 1600px !important; | |
90 | } |
|
90 | } | |
91 | </style> |
|
91 | </style> | |
92 | %endif |
|
92 | %endif | |
93 |
|
93 | |||
94 | %if ruler_at_chars: |
|
94 | %if ruler_at_chars: | |
95 | <style> |
|
95 | <style> | |
96 | .diff table.cb .cb-content:after { |
|
96 | .diff table.cb .cb-content:after { | |
97 | content: ""; |
|
97 | content: ""; | |
98 | border-left: 1px solid blue; |
|
98 | border-left: 1px solid blue; | |
99 | position: absolute; |
|
99 | position: absolute; | |
100 | top: 0; |
|
100 | top: 0; | |
101 | height: 18px; |
|
101 | height: 18px; | |
102 | opacity: .2; |
|
102 | opacity: .2; | |
103 | z-index: 10; |
|
103 | z-index: 10; | |
104 | //## +5 to account for diff action (+/-) |
|
104 | //## +5 to account for diff action (+/-) | |
105 | left: ${ruler_at_chars + 5}ch; |
|
105 | left: ${ruler_at_chars + 5}ch; | |
106 | </style> |
|
106 | </style> | |
107 | %endif |
|
107 | %endif | |
108 |
|
108 | |||
109 | <div class="diffset ${disable_new_comments and 'diffset-comments-disabled'}"> |
|
109 | <div class="diffset ${disable_new_comments and 'diffset-comments-disabled'}"> | |
110 | <div class="diffset-heading ${diffset.limited_diff and 'diffset-heading-warning' or ''}"> |
|
110 | <div class="diffset-heading ${diffset.limited_diff and 'diffset-heading-warning' or ''}"> | |
111 | %if commit: |
|
111 | %if commit: | |
112 | <div class="pull-right"> |
|
112 | <div class="pull-right"> | |
113 | <a class="btn tooltip" title="${h.tooltip(_('Browse Files at revision {}').format(commit.raw_id))}" href="${h.route_path('repo_files',repo_name=diffset.repo_name, commit_id=commit.raw_id, f_path='')}"> |
|
113 | <a class="btn tooltip" title="${h.tooltip(_('Browse Files at revision {}').format(commit.raw_id))}" href="${h.route_path('repo_files',repo_name=diffset.repo_name, commit_id=commit.raw_id, f_path='')}"> | |
114 | ${_('Browse Files')} |
|
114 | ${_('Browse Files')} | |
115 | </a> |
|
115 | </a> | |
116 | </div> |
|
116 | </div> | |
117 | %endif |
|
117 | %endif | |
118 | <h2 class="clearinner"> |
|
118 | <h2 class="clearinner"> | |
119 | ## invidual commit |
|
119 | ## invidual commit | |
120 | % if commit: |
|
120 | % if commit: | |
121 | <a class="tooltip revision" title="${h.tooltip(commit.message)}" href="${h.route_path('repo_commit',repo_name=diffset.repo_name,commit_id=commit.raw_id)}">${('r%s:%s' % (commit.idx,h.short_id(commit.raw_id)))}</a> - |
|
121 | <a class="tooltip revision" title="${h.tooltip(commit.message)}" href="${h.route_path('repo_commit',repo_name=diffset.repo_name,commit_id=commit.raw_id)}">${('r%s:%s' % (commit.idx,h.short_id(commit.raw_id)))}</a> - | |
122 | ${h.age_component(commit.date)} |
|
122 | ${h.age_component(commit.date)} | |
123 | % if diffset.limited_diff: |
|
123 | % if diffset.limited_diff: | |
124 | - ${_('The requested commit is too big and content was truncated.')} |
|
124 | - ${_('The requested commit is too big and content was truncated.')} | |
125 | ${_ungettext('%(num)s file changed.', '%(num)s files changed.', diffset.changed_files) % {'num': diffset.changed_files}} |
|
125 | ${_ungettext('%(num)s file changed.', '%(num)s files changed.', diffset.changed_files) % {'num': diffset.changed_files}} | |
126 | <a href="${h.current_route_path(request, fulldiff=1)}" onclick="return confirm('${_("Showing a big diff might take some time and resources, continue?")}')">${_('Show full diff')}</a> |
|
126 | <a href="${h.current_route_path(request, fulldiff=1)}" onclick="return confirm('${_("Showing a big diff might take some time and resources, continue?")}')">${_('Show full diff')}</a> | |
127 | % elif hasattr(c, 'commit_ranges') and len(c.commit_ranges) > 1: |
|
127 | % elif hasattr(c, 'commit_ranges') and len(c.commit_ranges) > 1: | |
128 | ## compare diff, has no file-selector and we want to show stats anyway |
|
128 | ## compare diff, has no file-selector and we want to show stats anyway | |
129 | ${_ungettext('{num} file changed: {linesadd} inserted, ''{linesdel} deleted', |
|
129 | ${_ungettext('{num} file changed: {linesadd} inserted, ''{linesdel} deleted', | |
130 | '{num} files changed: {linesadd} inserted, {linesdel} deleted', diffset.changed_files) \ |
|
130 | '{num} files changed: {linesadd} inserted, {linesdel} deleted', diffset.changed_files) \ | |
131 | .format(num=diffset.changed_files, linesadd=diffset.lines_added, linesdel=diffset.lines_deleted)} |
|
131 | .format(num=diffset.changed_files, linesadd=diffset.lines_added, linesdel=diffset.lines_deleted)} | |
132 | % endif |
|
132 | % endif | |
133 | % else: |
|
133 | % else: | |
134 | ## pull requests/compare |
|
134 | ## pull requests/compare | |
135 | ${_('File Changes')} |
|
135 | ${_('File Changes')} | |
136 | % endif |
|
136 | % endif | |
137 |
|
137 | |||
138 | </h2> |
|
138 | </h2> | |
139 | </div> |
|
139 | </div> | |
140 |
|
140 | |||
141 | %if diffset.has_hidden_changes: |
|
141 | %if diffset.has_hidden_changes: | |
142 | <p class="empty_data">${_('Some changes may be hidden')}</p> |
|
142 | <p class="empty_data">${_('Some changes may be hidden')}</p> | |
143 | %elif not diffset.files: |
|
143 | %elif not diffset.files: | |
144 | <p class="empty_data">${_('No files')}</p> |
|
144 | <p class="empty_data">${_('No files')}</p> | |
145 | %endif |
|
145 | %endif | |
146 |
|
146 | |||
147 | <div class="filediffs"> |
|
147 | <div class="filediffs"> | |
|
148 | ||||
148 | ## initial value could be marked as False later on |
|
149 | ## initial value could be marked as False later on | |
149 | <% over_lines_changed_limit = False %> |
|
150 | <% over_lines_changed_limit = False %> | |
150 | %for i, filediff in enumerate(diffset.files): |
|
151 | %for i, filediff in enumerate(diffset.files): | |
151 |
|
152 | |||
152 | <% |
|
153 | <% | |
153 | lines_changed = filediff.patch['stats']['added'] + filediff.patch['stats']['deleted'] |
|
154 | lines_changed = filediff.patch['stats']['added'] + filediff.patch['stats']['deleted'] | |
154 | over_lines_changed_limit = lines_changed > lines_changed_limit |
|
155 | over_lines_changed_limit = lines_changed > lines_changed_limit | |
155 | %> |
|
156 | %> | |
|
157 | ## anchor with support of sticky header | |||
|
158 | <div class="anchor" id="a_${h.FID(filediff.raw_id, filediff.patch['filename'])}"></div> | |||
156 |
|
159 | |||
157 | <input ${(collapse_all and 'checked' or '')} class="filediff-collapse-state" id="filediff-collapse-${id(filediff)}" type="checkbox"> |
|
160 | <input ${(collapse_all and 'checked' or '')} class="filediff-collapse-state" id="filediff-collapse-${id(filediff)}" type="checkbox" onchange="Waypoint.refreshAll();"> | |
158 | <div |
|
161 | <div | |
159 | class="filediff" |
|
162 | class="filediff" | |
160 | data-f-path="${filediff.patch['filename']}" |
|
163 | data-f-path="${filediff.patch['filename']}" | |
161 |
id=" |
|
164 | data-anchor-id="${h.FID(filediff.raw_id, filediff.patch['filename'])}" | |
162 | > |
|
165 | > | |
163 |
|
||||
164 | <label for="filediff-collapse-${id(filediff)}" class="filediff-heading"> |
|
166 | <label for="filediff-collapse-${id(filediff)}" class="filediff-heading"> | |
165 | <div class="filediff-collapse-indicator"></div> |
|
167 | <div class="filediff-collapse-indicator"></div> | |
166 | ${diff_ops(filediff)} |
|
168 | ${diff_ops(filediff)} | |
167 | </label> |
|
169 | </label> | |
|
170 | ||||
168 | ${diff_menu(filediff, use_comments=use_comments)} |
|
171 | ${diff_menu(filediff, use_comments=use_comments)} | |
169 | <table class="cb cb-diff-${c.user_session_attrs["diffmode"]} code-highlight ${(over_lines_changed_limit and 'cb-collapsed' or '')}"> |
|
172 | <table data-f-path="${filediff.patch['filename']}" data-anchor-id="${h.FID(filediff.raw_id, filediff.patch['filename'])}" class="code-visible-block cb cb-diff-${c.user_session_attrs["diffmode"]} code-highlight ${(over_lines_changed_limit and 'cb-collapsed' or '')}"> | |
170 |
|
173 | |||
171 | ## new/deleted/empty content case |
|
174 | ## new/deleted/empty content case | |
172 | % if not filediff.hunks: |
|
175 | % if not filediff.hunks: | |
173 | ## Comment container, on "fakes" hunk that contains all data to render comments |
|
176 | ## Comment container, on "fakes" hunk that contains all data to render comments | |
174 | ${render_hunk_lines(c.user_session_attrs["diffmode"], filediff.hunk_ops, use_comments=use_comments, inline_comments=inline_comments)} |
|
177 | ${render_hunk_lines(c.user_session_attrs["diffmode"], filediff.hunk_ops, use_comments=use_comments, inline_comments=inline_comments)} | |
175 | % endif |
|
178 | % endif | |
176 |
|
179 | |||
177 | %if filediff.limited_diff: |
|
180 | %if filediff.limited_diff: | |
178 | <tr class="cb-warning cb-collapser"> |
|
181 | <tr class="cb-warning cb-collapser"> | |
179 | <td class="cb-text" ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=4' or 'colspan=6')}> |
|
182 | <td class="cb-text" ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=4' or 'colspan=6')}> | |
180 | ${_('The requested commit is too big and content was truncated.')} <a href="${h.current_route_path(request, fulldiff=1)}" onclick="return confirm('${_("Showing a big diff might take some time and resources, continue?")}')">${_('Show full diff')}</a> |
|
183 | ${_('The requested commit is too big and content was truncated.')} <a href="${h.current_route_path(request, fulldiff=1)}" onclick="return confirm('${_("Showing a big diff might take some time and resources, continue?")}')">${_('Show full diff')}</a> | |
181 | </td> |
|
184 | </td> | |
182 | </tr> |
|
185 | </tr> | |
183 | %else: |
|
186 | %else: | |
184 | %if over_lines_changed_limit: |
|
187 | %if over_lines_changed_limit: | |
185 | <tr class="cb-warning cb-collapser"> |
|
188 | <tr class="cb-warning cb-collapser"> | |
186 | <td class="cb-text" ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=4' or 'colspan=6')}> |
|
189 | <td class="cb-text" ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=4' or 'colspan=6')}> | |
187 | ${_('This diff has been collapsed as it changes many lines, (%i lines changed)' % lines_changed)} |
|
190 | ${_('This diff has been collapsed as it changes many lines, (%i lines changed)' % lines_changed)} | |
188 | <a href="#" class="cb-expand" |
|
191 | <a href="#" class="cb-expand" | |
189 | onclick="$(this).closest('table').removeClass('cb-collapsed'); return false;">${_('Show them')} |
|
192 | onclick="$(this).closest('table').removeClass('cb-collapsed'); return false;">${_('Show them')} | |
190 | </a> |
|
193 | </a> | |
191 | <a href="#" class="cb-collapse" |
|
194 | <a href="#" class="cb-collapse" | |
192 | onclick="$(this).closest('table').addClass('cb-collapsed'); return false;">${_('Hide them')} |
|
195 | onclick="$(this).closest('table').addClass('cb-collapsed'); return false;">${_('Hide them')} | |
193 | </a> |
|
196 | </a> | |
194 | </td> |
|
197 | </td> | |
195 | </tr> |
|
198 | </tr> | |
196 | %endif |
|
199 | %endif | |
197 | %endif |
|
200 | %endif | |
198 |
|
201 | |||
199 | % for hunk in filediff.hunks: |
|
202 | % for hunk in filediff.hunks: | |
200 | <tr class="cb-hunk"> |
|
203 | <tr class="cb-hunk"> | |
201 | <td ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=3' or '')}> |
|
204 | <td ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=3' or '')}> | |
202 | ## TODO: dan: add ajax loading of more context here |
|
205 | ## TODO: dan: add ajax loading of more context here | |
203 | ## <a href="#"> |
|
206 | ## <a href="#"> | |
204 | <i class="icon-more"></i> |
|
207 | <i class="icon-more"></i> | |
205 | ## </a> |
|
208 | ## </a> | |
206 | </td> |
|
209 | </td> | |
207 | <td ${(c.user_session_attrs["diffmode"] == 'sideside' and 'colspan=5' or '')}> |
|
210 | <td ${(c.user_session_attrs["diffmode"] == 'sideside' and 'colspan=5' or '')}> | |
208 | @@ |
|
211 | @@ | |
209 | -${hunk.source_start},${hunk.source_length} |
|
212 | -${hunk.source_start},${hunk.source_length} | |
210 | +${hunk.target_start},${hunk.target_length} |
|
213 | +${hunk.target_start},${hunk.target_length} | |
211 | ${hunk.section_header} |
|
214 | ${hunk.section_header} | |
212 | </td> |
|
215 | </td> | |
213 | </tr> |
|
216 | </tr> | |
214 | ${render_hunk_lines(c.user_session_attrs["diffmode"], hunk, use_comments=use_comments, inline_comments=inline_comments)} |
|
217 | ${render_hunk_lines(c.user_session_attrs["diffmode"], hunk, use_comments=use_comments, inline_comments=inline_comments)} | |
215 | % endfor |
|
218 | % endfor | |
216 |
|
219 | |||
217 | <% unmatched_comments = (inline_comments or {}).get(filediff.patch['filename'], {}) %> |
|
220 | <% unmatched_comments = (inline_comments or {}).get(filediff.patch['filename'], {}) %> | |
218 |
|
221 | |||
219 | ## outdated comments that do not fit into currently displayed lines |
|
222 | ## outdated comments that do not fit into currently displayed lines | |
220 | % for lineno, comments in unmatched_comments.items(): |
|
223 | % for lineno, comments in unmatched_comments.items(): | |
221 |
|
224 | |||
222 | %if c.user_session_attrs["diffmode"] == 'unified': |
|
225 | %if c.user_session_attrs["diffmode"] == 'unified': | |
223 | % if loop.index == 0: |
|
226 | % if loop.index == 0: | |
224 | <tr class="cb-hunk"> |
|
227 | <tr class="cb-hunk"> | |
225 | <td colspan="3"></td> |
|
228 | <td colspan="3"></td> | |
226 | <td> |
|
229 | <td> | |
227 | <div> |
|
230 | <div> | |
228 | ${_('Unmatched inline comments below')} |
|
231 | ${_('Unmatched inline comments below')} | |
229 | </div> |
|
232 | </div> | |
230 | </td> |
|
233 | </td> | |
231 | </tr> |
|
234 | </tr> | |
232 | % endif |
|
235 | % endif | |
233 | <tr class="cb-line"> |
|
236 | <tr class="cb-line"> | |
234 | <td class="cb-data cb-context"></td> |
|
237 | <td class="cb-data cb-context"></td> | |
235 | <td class="cb-lineno cb-context"></td> |
|
238 | <td class="cb-lineno cb-context"></td> | |
236 | <td class="cb-lineno cb-context"></td> |
|
239 | <td class="cb-lineno cb-context"></td> | |
237 | <td class="cb-content cb-context"> |
|
240 | <td class="cb-content cb-context"> | |
238 | ${inline_comments_container(comments, inline_comments)} |
|
241 | ${inline_comments_container(comments, inline_comments)} | |
239 | </td> |
|
242 | </td> | |
240 | </tr> |
|
243 | </tr> | |
241 | %elif c.user_session_attrs["diffmode"] == 'sideside': |
|
244 | %elif c.user_session_attrs["diffmode"] == 'sideside': | |
242 | % if loop.index == 0: |
|
245 | % if loop.index == 0: | |
243 | <tr class="cb-comment-info"> |
|
246 | <tr class="cb-comment-info"> | |
244 | <td colspan="2"></td> |
|
247 | <td colspan="2"></td> | |
245 | <td class="cb-line"> |
|
248 | <td class="cb-line"> | |
246 | <div> |
|
249 | <div> | |
247 | ${_('Unmatched inline comments below')} |
|
250 | ${_('Unmatched inline comments below')} | |
248 | </div> |
|
251 | </div> | |
249 | </td> |
|
252 | </td> | |
250 | <td colspan="2"></td> |
|
253 | <td colspan="2"></td> | |
251 | <td class="cb-line"> |
|
254 | <td class="cb-line"> | |
252 | <div> |
|
255 | <div> | |
253 | ${_('Unmatched comments below')} |
|
256 | ${_('Unmatched comments below')} | |
254 | </div> |
|
257 | </div> | |
255 | </td> |
|
258 | </td> | |
256 | </tr> |
|
259 | </tr> | |
257 | % endif |
|
260 | % endif | |
258 | <tr class="cb-line"> |
|
261 | <tr class="cb-line"> | |
259 | <td class="cb-data cb-context"></td> |
|
262 | <td class="cb-data cb-context"></td> | |
260 | <td class="cb-lineno cb-context"></td> |
|
263 | <td class="cb-lineno cb-context"></td> | |
261 | <td class="cb-content cb-context"> |
|
264 | <td class="cb-content cb-context"> | |
262 | % if lineno.startswith('o'): |
|
265 | % if lineno.startswith('o'): | |
263 | ${inline_comments_container(comments, inline_comments)} |
|
266 | ${inline_comments_container(comments, inline_comments)} | |
264 | % endif |
|
267 | % endif | |
265 | </td> |
|
268 | </td> | |
266 |
|
269 | |||
267 | <td class="cb-data cb-context"></td> |
|
270 | <td class="cb-data cb-context"></td> | |
268 | <td class="cb-lineno cb-context"></td> |
|
271 | <td class="cb-lineno cb-context"></td> | |
269 | <td class="cb-content cb-context"> |
|
272 | <td class="cb-content cb-context"> | |
270 | % if lineno.startswith('n'): |
|
273 | % if lineno.startswith('n'): | |
271 | ${inline_comments_container(comments, inline_comments)} |
|
274 | ${inline_comments_container(comments, inline_comments)} | |
272 | % endif |
|
275 | % endif | |
273 | </td> |
|
276 | </td> | |
274 | </tr> |
|
277 | </tr> | |
275 | %endif |
|
278 | %endif | |
276 |
|
279 | |||
277 | % endfor |
|
280 | % endfor | |
278 |
|
281 | |||
279 | </table> |
|
282 | </table> | |
280 | </div> |
|
283 | </div> | |
281 | %endfor |
|
284 | %endfor | |
282 |
|
285 | |||
283 | ## outdated comments that are made for a file that has been deleted |
|
286 | ## outdated comments that are made for a file that has been deleted | |
284 | % for filename, comments_dict in (deleted_files_comments or {}).items(): |
|
287 | % for filename, comments_dict in (deleted_files_comments or {}).items(): | |
285 | <% |
|
288 | <% | |
286 | display_state = 'display: none' |
|
289 | display_state = 'display: none' | |
287 | open_comments_in_file = [x for x in comments_dict['comments'] if x.outdated is False] |
|
290 | open_comments_in_file = [x for x in comments_dict['comments'] if x.outdated is False] | |
288 | if open_comments_in_file: |
|
291 | if open_comments_in_file: | |
289 | display_state = '' |
|
292 | display_state = '' | |
290 | %> |
|
293 | %> | |
291 | <div class="filediffs filediff-outdated" style="${display_state}"> |
|
294 | <div class="filediffs filediff-outdated" style="${display_state}"> | |
292 | <input ${(collapse_all and 'checked' or '')} class="filediff-collapse-state" id="filediff-collapse-${id(filename)}" type="checkbox"> |
|
295 | <input ${(collapse_all and 'checked' or '')} class="filediff-collapse-state" id="filediff-collapse-${id(filename)}" type="checkbox" onchange="Waypoint.refreshAll();"> | |
293 | <div class="filediff" data-f-path="${filename}" id="a_${h.FID(filediff.raw_id, filename)}"> |
|
296 | <div class="filediff" data-f-path="${filename}" id="a_${h.FID(filediff.raw_id, filename)}"> | |
294 | <label for="filediff-collapse-${id(filename)}" class="filediff-heading"> |
|
297 | <label for="filediff-collapse-${id(filename)}" class="filediff-heading"> | |
295 | <div class="filediff-collapse-indicator"></div> |
|
298 | <div class="filediff-collapse-indicator"></div> | |
296 | <span class="pill"> |
|
299 | <span class="pill"> | |
297 | ## file was deleted |
|
300 | ## file was deleted | |
298 | <strong>${filename}</strong> |
|
301 | <strong>${filename}</strong> | |
299 | </span> |
|
302 | </span> | |
300 | <span class="pill-group" style="float: left"> |
|
303 | <span class="pill-group" style="float: left"> | |
301 | ## file op, doesn't need translation |
|
304 | ## file op, doesn't need translation | |
302 | <span class="pill" op="removed">removed in this version</span> |
|
305 | <span class="pill" op="removed">removed in this version</span> | |
303 | </span> |
|
306 | </span> | |
304 | <a class="pill filediff-anchor" href="#a_${h.FID(filediff.raw_id, filename)}">ΒΆ</a> |
|
307 | <a class="pill filediff-anchor" href="#a_${h.FID(filediff.raw_id, filename)}">ΒΆ</a> | |
305 | <span class="pill-group" style="float: right"> |
|
308 | <span class="pill-group" style="float: right"> | |
306 | <span class="pill" op="deleted">-${comments_dict['stats']}</span> |
|
309 | <span class="pill" op="deleted">-${comments_dict['stats']}</span> | |
307 | </span> |
|
310 | </span> | |
308 | </label> |
|
311 | </label> | |
309 |
|
312 | |||
310 | <table class="cb cb-diff-${c.user_session_attrs["diffmode"]} code-highlight ${over_lines_changed_limit and 'cb-collapsed' or ''}"> |
|
313 | <table class="cb cb-diff-${c.user_session_attrs["diffmode"]} code-highlight ${over_lines_changed_limit and 'cb-collapsed' or ''}"> | |
311 | <tr> |
|
314 | <tr> | |
312 | % if c.user_session_attrs["diffmode"] == 'unified': |
|
315 | % if c.user_session_attrs["diffmode"] == 'unified': | |
313 | <td></td> |
|
316 | <td></td> | |
314 | %endif |
|
317 | %endif | |
315 |
|
318 | |||
316 | <td></td> |
|
319 | <td></td> | |
317 | <td class="cb-text cb-${op_class(BIN_FILENODE)}" ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=4' or 'colspan=5')}> |
|
320 | <td class="cb-text cb-${op_class(BIN_FILENODE)}" ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=4' or 'colspan=5')}> | |
318 | ${_('File was deleted in this version. There are still outdated/unresolved comments attached to it.')} |
|
321 | ${_('File was deleted in this version. There are still outdated/unresolved comments attached to it.')} | |
319 | </td> |
|
322 | </td> | |
320 | </tr> |
|
323 | </tr> | |
321 | %if c.user_session_attrs["diffmode"] == 'unified': |
|
324 | %if c.user_session_attrs["diffmode"] == 'unified': | |
322 | <tr class="cb-line"> |
|
325 | <tr class="cb-line"> | |
323 | <td class="cb-data cb-context"></td> |
|
326 | <td class="cb-data cb-context"></td> | |
324 | <td class="cb-lineno cb-context"></td> |
|
327 | <td class="cb-lineno cb-context"></td> | |
325 | <td class="cb-lineno cb-context"></td> |
|
328 | <td class="cb-lineno cb-context"></td> | |
326 | <td class="cb-content cb-context"> |
|
329 | <td class="cb-content cb-context"> | |
327 | ${inline_comments_container(comments_dict['comments'], inline_comments)} |
|
330 | ${inline_comments_container(comments_dict['comments'], inline_comments)} | |
328 | </td> |
|
331 | </td> | |
329 | </tr> |
|
332 | </tr> | |
330 | %elif c.user_session_attrs["diffmode"] == 'sideside': |
|
333 | %elif c.user_session_attrs["diffmode"] == 'sideside': | |
331 | <tr class="cb-line"> |
|
334 | <tr class="cb-line"> | |
332 | <td class="cb-data cb-context"></td> |
|
335 | <td class="cb-data cb-context"></td> | |
333 | <td class="cb-lineno cb-context"></td> |
|
336 | <td class="cb-lineno cb-context"></td> | |
334 | <td class="cb-content cb-context"></td> |
|
337 | <td class="cb-content cb-context"></td> | |
335 |
|
338 | |||
336 | <td class="cb-data cb-context"></td> |
|
339 | <td class="cb-data cb-context"></td> | |
337 | <td class="cb-lineno cb-context"></td> |
|
340 | <td class="cb-lineno cb-context"></td> | |
338 | <td class="cb-content cb-context"> |
|
341 | <td class="cb-content cb-context"> | |
339 | ${inline_comments_container(comments_dict['comments'], inline_comments)} |
|
342 | ${inline_comments_container(comments_dict['comments'], inline_comments)} | |
340 | </td> |
|
343 | </td> | |
341 | </tr> |
|
344 | </tr> | |
342 | %endif |
|
345 | %endif | |
343 | </table> |
|
346 | </table> | |
344 | </div> |
|
347 | </div> | |
345 | </div> |
|
348 | </div> | |
346 | % endfor |
|
349 | % endfor | |
347 |
|
350 | |||
348 | </div> |
|
351 | </div> | |
349 | </div> |
|
352 | </div> | |
350 | </%def> |
|
353 | </%def> | |
351 |
|
354 | |||
352 | <%def name="diff_ops(filediff)"> |
|
355 | <%def name="diff_ops(filediff)"> | |
353 | <% |
|
356 | <% | |
354 | from rhodecode.lib.diffs import NEW_FILENODE, DEL_FILENODE, \ |
|
357 | from rhodecode.lib.diffs import NEW_FILENODE, DEL_FILENODE, \ | |
355 | MOD_FILENODE, RENAMED_FILENODE, CHMOD_FILENODE, BIN_FILENODE, COPIED_FILENODE |
|
358 | MOD_FILENODE, RENAMED_FILENODE, CHMOD_FILENODE, BIN_FILENODE, COPIED_FILENODE | |
356 | %> |
|
359 | %> | |
357 | <span class="pill"> |
|
360 | <span class="pill"> | |
358 | %if filediff.source_file_path and filediff.target_file_path: |
|
361 | %if filediff.source_file_path and filediff.target_file_path: | |
359 | %if filediff.source_file_path != filediff.target_file_path: |
|
362 | %if filediff.source_file_path != filediff.target_file_path: | |
360 | ## file was renamed, or copied |
|
363 | ## file was renamed, or copied | |
361 | %if RENAMED_FILENODE in filediff.patch['stats']['ops']: |
|
364 | %if RENAMED_FILENODE in filediff.patch['stats']['ops']: | |
362 | <strong>${filediff.target_file_path}</strong> β¬ <del>${filediff.source_file_path}</del> |
|
365 | <strong>${filediff.target_file_path}</strong> β¬ <del>${filediff.source_file_path}</del> | |
363 | <% final_path = filediff.target_file_path %> |
|
366 | <% final_path = filediff.target_file_path %> | |
364 | %elif COPIED_FILENODE in filediff.patch['stats']['ops']: |
|
367 | %elif COPIED_FILENODE in filediff.patch['stats']['ops']: | |
365 | <strong>${filediff.target_file_path}</strong> β¬ ${filediff.source_file_path} |
|
368 | <strong>${filediff.target_file_path}</strong> β¬ ${filediff.source_file_path} | |
366 | <% final_path = filediff.target_file_path %> |
|
369 | <% final_path = filediff.target_file_path %> | |
367 | %endif |
|
370 | %endif | |
368 | %else: |
|
371 | %else: | |
369 | ## file was modified |
|
372 | ## file was modified | |
370 | <strong>${filediff.source_file_path}</strong> |
|
373 | <strong>${filediff.source_file_path}</strong> | |
371 | <% final_path = filediff.source_file_path %> |
|
374 | <% final_path = filediff.source_file_path %> | |
372 | %endif |
|
375 | %endif | |
373 | %else: |
|
376 | %else: | |
374 | %if filediff.source_file_path: |
|
377 | %if filediff.source_file_path: | |
375 | ## file was deleted |
|
378 | ## file was deleted | |
376 | <strong>${filediff.source_file_path}</strong> |
|
379 | <strong>${filediff.source_file_path}</strong> | |
377 | <% final_path = filediff.source_file_path %> |
|
380 | <% final_path = filediff.source_file_path %> | |
378 | %else: |
|
381 | %else: | |
379 | ## file was added |
|
382 | ## file was added | |
380 | <strong>${filediff.target_file_path}</strong> |
|
383 | <strong>${filediff.target_file_path}</strong> | |
381 | <% final_path = filediff.target_file_path %> |
|
384 | <% final_path = filediff.target_file_path %> | |
382 | %endif |
|
385 | %endif | |
383 | %endif |
|
386 | %endif | |
384 | <i style="color: #aaa" class="tooltip icon-clipboard clipboard-action" data-clipboard-text="${final_path}" title="${_('Copy the full path')}" onclick="return false;"></i> |
|
387 | <i style="color: #aaa" class="tooltip icon-clipboard clipboard-action" data-clipboard-text="${final_path}" title="${_('Copy the full path')}" onclick="return false;"></i> | |
385 | </span> |
|
388 | </span> | |
386 | ## anchor link |
|
389 | ## anchor link | |
387 | <a class="pill filediff-anchor" href="#a_${h.FID(filediff.raw_id, filediff.patch['filename'])}">ΒΆ</a> |
|
390 | <a class="pill filediff-anchor" href="#a_${h.FID(filediff.raw_id, filediff.patch['filename'])}">ΒΆ</a> | |
388 |
|
391 | |||
389 | <span class="pill-group" style="float: right"> |
|
392 | <span class="pill-group" style="float: right"> | |
390 |
|
393 | |||
391 | ## ops pills |
|
394 | ## ops pills | |
392 | %if filediff.limited_diff: |
|
395 | %if filediff.limited_diff: | |
393 | <span class="pill tooltip" op="limited" title="The stats for this diff are not complete">limited diff</span> |
|
396 | <span class="pill tooltip" op="limited" title="The stats for this diff are not complete">limited diff</span> | |
394 | %endif |
|
397 | %endif | |
395 |
|
398 | |||
396 | %if NEW_FILENODE in filediff.patch['stats']['ops']: |
|
399 | %if NEW_FILENODE in filediff.patch['stats']['ops']: | |
397 | <span class="pill" op="created">created</span> |
|
400 | <span class="pill" op="created">created</span> | |
398 | %if filediff['target_mode'].startswith('120'): |
|
401 | %if filediff['target_mode'].startswith('120'): | |
399 | <span class="pill" op="symlink">symlink</span> |
|
402 | <span class="pill" op="symlink">symlink</span> | |
400 | %else: |
|
403 | %else: | |
401 | <span class="pill" op="mode">${nice_mode(filediff['target_mode'])}</span> |
|
404 | <span class="pill" op="mode">${nice_mode(filediff['target_mode'])}</span> | |
402 | %endif |
|
405 | %endif | |
403 | %endif |
|
406 | %endif | |
404 |
|
407 | |||
405 | %if RENAMED_FILENODE in filediff.patch['stats']['ops']: |
|
408 | %if RENAMED_FILENODE in filediff.patch['stats']['ops']: | |
406 | <span class="pill" op="renamed">renamed</span> |
|
409 | <span class="pill" op="renamed">renamed</span> | |
407 | %endif |
|
410 | %endif | |
408 |
|
411 | |||
409 | %if COPIED_FILENODE in filediff.patch['stats']['ops']: |
|
412 | %if COPIED_FILENODE in filediff.patch['stats']['ops']: | |
410 | <span class="pill" op="copied">copied</span> |
|
413 | <span class="pill" op="copied">copied</span> | |
411 | %endif |
|
414 | %endif | |
412 |
|
415 | |||
413 | %if DEL_FILENODE in filediff.patch['stats']['ops']: |
|
416 | %if DEL_FILENODE in filediff.patch['stats']['ops']: | |
414 | <span class="pill" op="removed">removed</span> |
|
417 | <span class="pill" op="removed">removed</span> | |
415 | %endif |
|
418 | %endif | |
416 |
|
419 | |||
417 | %if CHMOD_FILENODE in filediff.patch['stats']['ops']: |
|
420 | %if CHMOD_FILENODE in filediff.patch['stats']['ops']: | |
418 | <span class="pill" op="mode"> |
|
421 | <span class="pill" op="mode"> | |
419 | ${nice_mode(filediff['source_mode'])} β‘ ${nice_mode(filediff['target_mode'])} |
|
422 | ${nice_mode(filediff['source_mode'])} β‘ ${nice_mode(filediff['target_mode'])} | |
420 | </span> |
|
423 | </span> | |
421 | %endif |
|
424 | %endif | |
422 |
|
425 | |||
423 | %if BIN_FILENODE in filediff.patch['stats']['ops']: |
|
426 | %if BIN_FILENODE in filediff.patch['stats']['ops']: | |
424 | <span class="pill" op="binary">binary</span> |
|
427 | <span class="pill" op="binary">binary</span> | |
425 | %if MOD_FILENODE in filediff.patch['stats']['ops']: |
|
428 | %if MOD_FILENODE in filediff.patch['stats']['ops']: | |
426 | <span class="pill" op="modified">modified</span> |
|
429 | <span class="pill" op="modified">modified</span> | |
427 | %endif |
|
430 | %endif | |
428 | %endif |
|
431 | %endif | |
429 |
|
432 | |||
430 | <span class="pill" op="added">${('+' if filediff.patch['stats']['added'] else '')}${filediff.patch['stats']['added']}</span> |
|
433 | <span class="pill" op="added">${('+' if filediff.patch['stats']['added'] else '')}${filediff.patch['stats']['added']}</span> | |
431 | <span class="pill" op="deleted">${((h.safe_int(filediff.patch['stats']['deleted']) or 0) * -1)}</span> |
|
434 | <span class="pill" op="deleted">${((h.safe_int(filediff.patch['stats']['deleted']) or 0) * -1)}</span> | |
432 |
|
435 | |||
433 | </span> |
|
436 | </span> | |
434 |
|
437 | |||
435 | </%def> |
|
438 | </%def> | |
436 |
|
439 | |||
437 | <%def name="nice_mode(filemode)"> |
|
440 | <%def name="nice_mode(filemode)"> | |
438 | ${(filemode.startswith('100') and filemode[3:] or filemode)} |
|
441 | ${(filemode.startswith('100') and filemode[3:] or filemode)} | |
439 | </%def> |
|
442 | </%def> | |
440 |
|
443 | |||
441 | <%def name="diff_menu(filediff, use_comments=False)"> |
|
444 | <%def name="diff_menu(filediff, use_comments=False)"> | |
442 | <div class="filediff-menu"> |
|
445 | <div class="filediff-menu"> | |
443 | %if filediff.diffset.source_ref: |
|
446 | %if filediff.diffset.source_ref: | |
444 | %if filediff.operation in ['D', 'M']: |
|
447 | %if filediff.operation in ['D', 'M']: | |
445 | <a |
|
448 | <a | |
446 | class="tooltip" |
|
449 | class="tooltip" | |
447 | href="${h.route_path('repo_files',repo_name=filediff.diffset.repo_name,commit_id=filediff.diffset.source_ref,f_path=filediff.source_file_path)}" |
|
450 | href="${h.route_path('repo_files',repo_name=filediff.diffset.repo_name,commit_id=filediff.diffset.source_ref,f_path=filediff.source_file_path)}" | |
448 | title="${h.tooltip(_('Show file at commit: %(commit_id)s') % {'commit_id': filediff.diffset.source_ref[:12]})}" |
|
451 | title="${h.tooltip(_('Show file at commit: %(commit_id)s') % {'commit_id': filediff.diffset.source_ref[:12]})}" | |
449 | > |
|
452 | > | |
450 | ${_('Show file before')} |
|
453 | ${_('Show file before')} | |
451 | </a> | |
|
454 | </a> | | |
452 | %else: |
|
455 | %else: | |
453 | <span |
|
456 | <span | |
454 | class="tooltip" |
|
457 | class="tooltip" | |
455 | title="${h.tooltip(_('File no longer present at commit: %(commit_id)s') % {'commit_id': filediff.diffset.source_ref[:12]})}" |
|
458 | title="${h.tooltip(_('File no longer present at commit: %(commit_id)s') % {'commit_id': filediff.diffset.source_ref[:12]})}" | |
456 | > |
|
459 | > | |
457 | ${_('Show file before')} |
|
460 | ${_('Show file before')} | |
458 | </span> | |
|
461 | </span> | | |
459 | %endif |
|
462 | %endif | |
460 | %if filediff.operation in ['A', 'M']: |
|
463 | %if filediff.operation in ['A', 'M']: | |
461 | <a |
|
464 | <a | |
462 | class="tooltip" |
|
465 | class="tooltip" | |
463 | href="${h.route_path('repo_files',repo_name=filediff.diffset.source_repo_name,commit_id=filediff.diffset.target_ref,f_path=filediff.target_file_path)}" |
|
466 | href="${h.route_path('repo_files',repo_name=filediff.diffset.source_repo_name,commit_id=filediff.diffset.target_ref,f_path=filediff.target_file_path)}" | |
464 | title="${h.tooltip(_('Show file at commit: %(commit_id)s') % {'commit_id': filediff.diffset.target_ref[:12]})}" |
|
467 | title="${h.tooltip(_('Show file at commit: %(commit_id)s') % {'commit_id': filediff.diffset.target_ref[:12]})}" | |
465 | > |
|
468 | > | |
466 | ${_('Show file after')} |
|
469 | ${_('Show file after')} | |
467 | </a> | |
|
470 | </a> | | |
468 | %else: |
|
471 | %else: | |
469 | <span |
|
472 | <span | |
470 | class="tooltip" |
|
473 | class="tooltip" | |
471 | title="${h.tooltip(_('File no longer present at commit: %(commit_id)s') % {'commit_id': filediff.diffset.target_ref[:12]})}" |
|
474 | title="${h.tooltip(_('File no longer present at commit: %(commit_id)s') % {'commit_id': filediff.diffset.target_ref[:12]})}" | |
472 | > |
|
475 | > | |
473 | ${_('Show file after')} |
|
476 | ${_('Show file after')} | |
474 | </span> | |
|
477 | </span> | | |
475 | %endif |
|
478 | %endif | |
476 | <a |
|
479 | <a | |
477 | class="tooltip" |
|
480 | class="tooltip" | |
478 | title="${h.tooltip(_('Raw diff'))}" |
|
481 | title="${h.tooltip(_('Raw diff'))}" | |
479 | href="${h.route_path('repo_files_diff',repo_name=filediff.diffset.repo_name,f_path=filediff.target_file_path, _query=dict(diff2=filediff.diffset.target_ref,diff1=filediff.diffset.source_ref,diff='raw'))}" |
|
482 | href="${h.route_path('repo_files_diff',repo_name=filediff.diffset.repo_name,f_path=filediff.target_file_path, _query=dict(diff2=filediff.diffset.target_ref,diff1=filediff.diffset.source_ref,diff='raw'))}" | |
480 | > |
|
483 | > | |
481 | ${_('Raw diff')} |
|
484 | ${_('Raw diff')} | |
482 | </a> | |
|
485 | </a> | | |
483 | <a |
|
486 | <a | |
484 | class="tooltip" |
|
487 | class="tooltip" | |
485 | title="${h.tooltip(_('Download diff'))}" |
|
488 | title="${h.tooltip(_('Download diff'))}" | |
486 | href="${h.route_path('repo_files_diff',repo_name=filediff.diffset.repo_name,f_path=filediff.target_file_path, _query=dict(diff2=filediff.diffset.target_ref,diff1=filediff.diffset.source_ref,diff='download'))}" |
|
489 | href="${h.route_path('repo_files_diff',repo_name=filediff.diffset.repo_name,f_path=filediff.target_file_path, _query=dict(diff2=filediff.diffset.target_ref,diff1=filediff.diffset.source_ref,diff='download'))}" | |
487 | > |
|
490 | > | |
488 | ${_('Download diff')} |
|
491 | ${_('Download diff')} | |
489 | </a> |
|
492 | </a> | |
490 | % if use_comments: |
|
493 | % if use_comments: | |
491 | | |
|
494 | | | |
492 | % endif |
|
495 | % endif | |
493 |
|
496 | |||
494 | ## TODO: dan: refactor ignorews_url and context_url into the diff renderer same as diffmode=unified/sideside. Also use ajax to load more context (by clicking hunks) |
|
497 | ## TODO: dan: refactor ignorews_url and context_url into the diff renderer same as diffmode=unified/sideside. Also use ajax to load more context (by clicking hunks) | |
495 | %if hasattr(c, 'ignorews_url'): |
|
498 | %if hasattr(c, 'ignorews_url'): | |
496 | ${c.ignorews_url(request, h.FID(filediff.raw_id, filediff.patch['filename']))} |
|
499 | ${c.ignorews_url(request, h.FID(filediff.raw_id, filediff.patch['filename']))} | |
497 | %endif |
|
500 | %endif | |
498 | %if hasattr(c, 'context_url'): |
|
501 | %if hasattr(c, 'context_url'): | |
499 | ${c.context_url(request, h.FID(filediff.raw_id, filediff.patch['filename']))} |
|
502 | ${c.context_url(request, h.FID(filediff.raw_id, filediff.patch['filename']))} | |
500 | %endif |
|
503 | %endif | |
501 |
|
504 | |||
502 | %if use_comments: |
|
505 | %if use_comments: | |
503 | <a href="#" onclick="return Rhodecode.comments.toggleComments(this);"> |
|
506 | <a href="#" onclick="return Rhodecode.comments.toggleComments(this);"> | |
504 | <span class="show-comment-button">${_('Show comments')}</span><span class="hide-comment-button">${_('Hide comments')}</span> |
|
507 | <span class="show-comment-button">${_('Show comments')}</span><span class="hide-comment-button">${_('Hide comments')}</span> | |
505 | </a> |
|
508 | </a> | |
506 | %endif |
|
509 | %endif | |
507 | %endif |
|
510 | %endif | |
508 | </div> |
|
511 | </div> | |
509 | </%def> |
|
512 | </%def> | |
510 |
|
513 | |||
511 |
|
514 | |||
512 | <%def name="inline_comments_container(comments, inline_comments)"> |
|
515 | <%def name="inline_comments_container(comments, inline_comments)"> | |
513 | <div class="inline-comments"> |
|
516 | <div class="inline-comments"> | |
514 | %for comment in comments: |
|
517 | %for comment in comments: | |
515 | ${commentblock.comment_block(comment, inline=True)} |
|
518 | ${commentblock.comment_block(comment, inline=True)} | |
516 | %endfor |
|
519 | %endfor | |
517 | % if comments and comments[-1].outdated: |
|
520 | % if comments and comments[-1].outdated: | |
518 | <span class="btn btn-secondary cb-comment-add-button comment-outdated}" |
|
521 | <span class="btn btn-secondary cb-comment-add-button comment-outdated}" | |
519 | style="display: none;}"> |
|
522 | style="display: none;}"> | |
520 | ${_('Add another comment')} |
|
523 | ${_('Add another comment')} | |
521 | </span> |
|
524 | </span> | |
522 | % else: |
|
525 | % else: | |
523 | <span onclick="return Rhodecode.comments.createComment(this)" |
|
526 | <span onclick="return Rhodecode.comments.createComment(this)" | |
524 | class="btn btn-secondary cb-comment-add-button"> |
|
527 | class="btn btn-secondary cb-comment-add-button"> | |
525 | ${_('Add another comment')} |
|
528 | ${_('Add another comment')} | |
526 | </span> |
|
529 | </span> | |
527 | % endif |
|
530 | % endif | |
528 |
|
531 | |||
529 | </div> |
|
532 | </div> | |
530 | </%def> |
|
533 | </%def> | |
531 |
|
534 | |||
532 | <%! |
|
535 | <%! | |
533 | def get_comments_for(diff_type, comments, filename, line_version, line_number): |
|
536 | def get_comments_for(diff_type, comments, filename, line_version, line_number): | |
534 | if hasattr(filename, 'unicode_path'): |
|
537 | if hasattr(filename, 'unicode_path'): | |
535 | filename = filename.unicode_path |
|
538 | filename = filename.unicode_path | |
536 |
|
539 | |||
537 | if not isinstance(filename, basestring): |
|
540 | if not isinstance(filename, basestring): | |
538 | return None |
|
541 | return None | |
539 |
|
542 | |||
540 | line_key = '{}{}'.format(line_version, line_number) ## e.g o37, n12 |
|
543 | line_key = '{}{}'.format(line_version, line_number) ## e.g o37, n12 | |
541 |
|
544 | |||
542 | if comments and filename in comments: |
|
545 | if comments and filename in comments: | |
543 | file_comments = comments[filename] |
|
546 | file_comments = comments[filename] | |
544 | if line_key in file_comments: |
|
547 | if line_key in file_comments: | |
545 | data = file_comments.pop(line_key) |
|
548 | data = file_comments.pop(line_key) | |
546 | return data |
|
549 | return data | |
547 | %> |
|
550 | %> | |
548 |
|
551 | |||
549 | <%def name="render_hunk_lines_sideside(hunk, use_comments=False, inline_comments=None)"> |
|
552 | <%def name="render_hunk_lines_sideside(hunk, use_comments=False, inline_comments=None)"> | |
550 |
|
553 | |||
551 | %for i, line in enumerate(hunk.sideside): |
|
554 | %for i, line in enumerate(hunk.sideside): | |
552 | <% |
|
555 | <% | |
553 | old_line_anchor, new_line_anchor = None, None |
|
556 | old_line_anchor, new_line_anchor = None, None | |
554 | if line.original.lineno: |
|
557 | if line.original.lineno: | |
555 | old_line_anchor = diff_line_anchor(hunk.source_file_path, line.original.lineno, 'o') |
|
558 | old_line_anchor = diff_line_anchor(hunk.source_file_path, line.original.lineno, 'o') | |
556 | if line.modified.lineno: |
|
559 | if line.modified.lineno: | |
557 | new_line_anchor = diff_line_anchor(hunk.target_file_path, line.modified.lineno, 'n') |
|
560 | new_line_anchor = diff_line_anchor(hunk.target_file_path, line.modified.lineno, 'n') | |
558 | %> |
|
561 | %> | |
559 |
|
562 | |||
560 | <tr class="cb-line"> |
|
563 | <tr class="cb-line"> | |
561 | <td class="cb-data ${action_class(line.original.action)}" |
|
564 | <td class="cb-data ${action_class(line.original.action)}" | |
562 | data-line-no="${line.original.lineno}" |
|
565 | data-line-no="${line.original.lineno}" | |
563 | > |
|
566 | > | |
564 | <div> |
|
567 | <div> | |
565 |
|
568 | |||
566 | <% line_old_comments = None %> |
|
569 | <% line_old_comments = None %> | |
567 | %if line.original.get_comment_args: |
|
570 | %if line.original.get_comment_args: | |
568 | <% line_old_comments = get_comments_for('side-by-side', inline_comments, *line.original.get_comment_args) %> |
|
571 | <% line_old_comments = get_comments_for('side-by-side', inline_comments, *line.original.get_comment_args) %> | |
569 | %endif |
|
572 | %endif | |
570 | %if line_old_comments: |
|
573 | %if line_old_comments: | |
571 | <% has_outdated = any([x.outdated for x in line_old_comments]) %> |
|
574 | <% has_outdated = any([x.outdated for x in line_old_comments]) %> | |
572 | % if has_outdated: |
|
575 | % if has_outdated: | |
573 | <i title="${_('comments including outdated')}:${len(line_old_comments)}" class="icon-comment_toggle" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> |
|
576 | <i title="${_('comments including outdated')}:${len(line_old_comments)}" class="icon-comment_toggle" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> | |
574 | % else: |
|
577 | % else: | |
575 | <i title="${_('comments')}: ${len(line_old_comments)}" class="icon-comment" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> |
|
578 | <i title="${_('comments')}: ${len(line_old_comments)}" class="icon-comment" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> | |
576 | % endif |
|
579 | % endif | |
577 | %endif |
|
580 | %endif | |
578 | </div> |
|
581 | </div> | |
579 | </td> |
|
582 | </td> | |
580 | <td class="cb-lineno ${action_class(line.original.action)}" |
|
583 | <td class="cb-lineno ${action_class(line.original.action)}" | |
581 | data-line-no="${line.original.lineno}" |
|
584 | data-line-no="${line.original.lineno}" | |
582 | %if old_line_anchor: |
|
585 | %if old_line_anchor: | |
583 | id="${old_line_anchor}" |
|
586 | id="${old_line_anchor}" | |
584 | %endif |
|
587 | %endif | |
585 | > |
|
588 | > | |
586 | %if line.original.lineno: |
|
589 | %if line.original.lineno: | |
587 | <a name="${old_line_anchor}" href="#${old_line_anchor}">${line.original.lineno}</a> |
|
590 | <a name="${old_line_anchor}" href="#${old_line_anchor}">${line.original.lineno}</a> | |
588 | %endif |
|
591 | %endif | |
589 | </td> |
|
592 | </td> | |
590 | <td class="cb-content ${action_class(line.original.action)}" |
|
593 | <td class="cb-content ${action_class(line.original.action)}" | |
591 | data-line-no="o${line.original.lineno}" |
|
594 | data-line-no="o${line.original.lineno}" | |
592 | > |
|
595 | > | |
593 | %if use_comments and line.original.lineno: |
|
596 | %if use_comments and line.original.lineno: | |
594 | ${render_add_comment_button()} |
|
597 | ${render_add_comment_button()} | |
595 | %endif |
|
598 | %endif | |
596 | <span class="cb-code">${line.original.action} ${line.original.content or '' | n}</span> |
|
599 | <span class="cb-code">${line.original.action} ${line.original.content or '' | n}</span> | |
597 |
|
600 | |||
598 | %if use_comments and line.original.lineno and line_old_comments: |
|
601 | %if use_comments and line.original.lineno and line_old_comments: | |
599 | ${inline_comments_container(line_old_comments, inline_comments)} |
|
602 | ${inline_comments_container(line_old_comments, inline_comments)} | |
600 | %endif |
|
603 | %endif | |
601 |
|
604 | |||
602 | </td> |
|
605 | </td> | |
603 | <td class="cb-data ${action_class(line.modified.action)}" |
|
606 | <td class="cb-data ${action_class(line.modified.action)}" | |
604 | data-line-no="${line.modified.lineno}" |
|
607 | data-line-no="${line.modified.lineno}" | |
605 | > |
|
608 | > | |
606 | <div> |
|
609 | <div> | |
607 |
|
610 | |||
608 | %if line.modified.get_comment_args: |
|
611 | %if line.modified.get_comment_args: | |
609 | <% line_new_comments = get_comments_for('side-by-side', inline_comments, *line.modified.get_comment_args) %> |
|
612 | <% line_new_comments = get_comments_for('side-by-side', inline_comments, *line.modified.get_comment_args) %> | |
610 | %else: |
|
613 | %else: | |
611 | <% line_new_comments = None%> |
|
614 | <% line_new_comments = None%> | |
612 | %endif |
|
615 | %endif | |
613 | %if line_new_comments: |
|
616 | %if line_new_comments: | |
614 | <% has_outdated = any([x.outdated for x in line_new_comments]) %> |
|
617 | <% has_outdated = any([x.outdated for x in line_new_comments]) %> | |
615 | % if has_outdated: |
|
618 | % if has_outdated: | |
616 | <i title="${_('comments including outdated')}:${len(line_new_comments)}" class="icon-comment_toggle" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> |
|
619 | <i title="${_('comments including outdated')}:${len(line_new_comments)}" class="icon-comment_toggle" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> | |
617 | % else: |
|
620 | % else: | |
618 | <i title="${_('comments')}: ${len(line_new_comments)}" class="icon-comment" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> |
|
621 | <i title="${_('comments')}: ${len(line_new_comments)}" class="icon-comment" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> | |
619 | % endif |
|
622 | % endif | |
620 | %endif |
|
623 | %endif | |
621 | </div> |
|
624 | </div> | |
622 | </td> |
|
625 | </td> | |
623 | <td class="cb-lineno ${action_class(line.modified.action)}" |
|
626 | <td class="cb-lineno ${action_class(line.modified.action)}" | |
624 | data-line-no="${line.modified.lineno}" |
|
627 | data-line-no="${line.modified.lineno}" | |
625 | %if new_line_anchor: |
|
628 | %if new_line_anchor: | |
626 | id="${new_line_anchor}" |
|
629 | id="${new_line_anchor}" | |
627 | %endif |
|
630 | %endif | |
628 | > |
|
631 | > | |
629 | %if line.modified.lineno: |
|
632 | %if line.modified.lineno: | |
630 | <a name="${new_line_anchor}" href="#${new_line_anchor}">${line.modified.lineno}</a> |
|
633 | <a name="${new_line_anchor}" href="#${new_line_anchor}">${line.modified.lineno}</a> | |
631 | %endif |
|
634 | %endif | |
632 | </td> |
|
635 | </td> | |
633 | <td class="cb-content ${action_class(line.modified.action)}" |
|
636 | <td class="cb-content ${action_class(line.modified.action)}" | |
634 | data-line-no="n${line.modified.lineno}" |
|
637 | data-line-no="n${line.modified.lineno}" | |
635 | > |
|
638 | > | |
636 | %if use_comments and line.modified.lineno: |
|
639 | %if use_comments and line.modified.lineno: | |
637 | ${render_add_comment_button()} |
|
640 | ${render_add_comment_button()} | |
638 | %endif |
|
641 | %endif | |
639 | <span class="cb-code">${line.modified.action} ${line.modified.content or '' | n}</span> |
|
642 | <span class="cb-code">${line.modified.action} ${line.modified.content or '' | n}</span> | |
640 | %if use_comments and line.modified.lineno and line_new_comments: |
|
643 | %if use_comments and line.modified.lineno and line_new_comments: | |
641 | ${inline_comments_container(line_new_comments, inline_comments)} |
|
644 | ${inline_comments_container(line_new_comments, inline_comments)} | |
642 | %endif |
|
645 | %endif | |
643 | </td> |
|
646 | </td> | |
644 | </tr> |
|
647 | </tr> | |
645 | %endfor |
|
648 | %endfor | |
646 | </%def> |
|
649 | </%def> | |
647 |
|
650 | |||
648 |
|
651 | |||
649 | <%def name="render_hunk_lines_unified(hunk, use_comments=False, inline_comments=None)"> |
|
652 | <%def name="render_hunk_lines_unified(hunk, use_comments=False, inline_comments=None)"> | |
650 | %for old_line_no, new_line_no, action, content, comments_args in hunk.unified: |
|
653 | %for old_line_no, new_line_no, action, content, comments_args in hunk.unified: | |
651 | <% |
|
654 | <% | |
652 | old_line_anchor, new_line_anchor = None, None |
|
655 | old_line_anchor, new_line_anchor = None, None | |
653 | if old_line_no: |
|
656 | if old_line_no: | |
654 | old_line_anchor = diff_line_anchor(hunk.source_file_path, old_line_no, 'o') |
|
657 | old_line_anchor = diff_line_anchor(hunk.source_file_path, old_line_no, 'o') | |
655 | if new_line_no: |
|
658 | if new_line_no: | |
656 | new_line_anchor = diff_line_anchor(hunk.target_file_path, new_line_no, 'n') |
|
659 | new_line_anchor = diff_line_anchor(hunk.target_file_path, new_line_no, 'n') | |
657 | %> |
|
660 | %> | |
658 | <tr class="cb-line"> |
|
661 | <tr class="cb-line"> | |
659 | <td class="cb-data ${action_class(action)}"> |
|
662 | <td class="cb-data ${action_class(action)}"> | |
660 | <div> |
|
663 | <div> | |
661 |
|
664 | |||
662 | %if comments_args: |
|
665 | %if comments_args: | |
663 | <% comments = get_comments_for('unified', inline_comments, *comments_args) %> |
|
666 | <% comments = get_comments_for('unified', inline_comments, *comments_args) %> | |
664 | %else: |
|
667 | %else: | |
665 | <% comments = None %> |
|
668 | <% comments = None %> | |
666 | %endif |
|
669 | %endif | |
667 |
|
670 | |||
668 | % if comments: |
|
671 | % if comments: | |
669 | <% has_outdated = any([x.outdated for x in comments]) %> |
|
672 | <% has_outdated = any([x.outdated for x in comments]) %> | |
670 | % if has_outdated: |
|
673 | % if has_outdated: | |
671 | <i title="${_('comments including outdated')}:${len(comments)}" class="icon-comment_toggle" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> |
|
674 | <i title="${_('comments including outdated')}:${len(comments)}" class="icon-comment_toggle" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> | |
672 | % else: |
|
675 | % else: | |
673 | <i title="${_('comments')}: ${len(comments)}" class="icon-comment" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> |
|
676 | <i title="${_('comments')}: ${len(comments)}" class="icon-comment" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> | |
674 | % endif |
|
677 | % endif | |
675 | % endif |
|
678 | % endif | |
676 | </div> |
|
679 | </div> | |
677 | </td> |
|
680 | </td> | |
678 | <td class="cb-lineno ${action_class(action)}" |
|
681 | <td class="cb-lineno ${action_class(action)}" | |
679 | data-line-no="${old_line_no}" |
|
682 | data-line-no="${old_line_no}" | |
680 | %if old_line_anchor: |
|
683 | %if old_line_anchor: | |
681 | id="${old_line_anchor}" |
|
684 | id="${old_line_anchor}" | |
682 | %endif |
|
685 | %endif | |
683 | > |
|
686 | > | |
684 | %if old_line_anchor: |
|
687 | %if old_line_anchor: | |
685 | <a name="${old_line_anchor}" href="#${old_line_anchor}">${old_line_no}</a> |
|
688 | <a name="${old_line_anchor}" href="#${old_line_anchor}">${old_line_no}</a> | |
686 | %endif |
|
689 | %endif | |
687 | </td> |
|
690 | </td> | |
688 | <td class="cb-lineno ${action_class(action)}" |
|
691 | <td class="cb-lineno ${action_class(action)}" | |
689 | data-line-no="${new_line_no}" |
|
692 | data-line-no="${new_line_no}" | |
690 | %if new_line_anchor: |
|
693 | %if new_line_anchor: | |
691 | id="${new_line_anchor}" |
|
694 | id="${new_line_anchor}" | |
692 | %endif |
|
695 | %endif | |
693 | > |
|
696 | > | |
694 | %if new_line_anchor: |
|
697 | %if new_line_anchor: | |
695 | <a name="${new_line_anchor}" href="#${new_line_anchor}">${new_line_no}</a> |
|
698 | <a name="${new_line_anchor}" href="#${new_line_anchor}">${new_line_no}</a> | |
696 | %endif |
|
699 | %endif | |
697 | </td> |
|
700 | </td> | |
698 | <td class="cb-content ${action_class(action)}" |
|
701 | <td class="cb-content ${action_class(action)}" | |
699 | data-line-no="${(new_line_no and 'n' or 'o')}${(new_line_no or old_line_no)}" |
|
702 | data-line-no="${(new_line_no and 'n' or 'o')}${(new_line_no or old_line_no)}" | |
700 | > |
|
703 | > | |
701 | %if use_comments: |
|
704 | %if use_comments: | |
702 | ${render_add_comment_button()} |
|
705 | ${render_add_comment_button()} | |
703 | %endif |
|
706 | %endif | |
704 | <span class="cb-code">${action} ${content or '' | n}</span> |
|
707 | <span class="cb-code">${action} ${content or '' | n}</span> | |
705 | %if use_comments and comments: |
|
708 | %if use_comments and comments: | |
706 | ${inline_comments_container(comments, inline_comments)} |
|
709 | ${inline_comments_container(comments, inline_comments)} | |
707 | %endif |
|
710 | %endif | |
708 | </td> |
|
711 | </td> | |
709 | </tr> |
|
712 | </tr> | |
710 | %endfor |
|
713 | %endfor | |
711 | </%def> |
|
714 | </%def> | |
712 |
|
715 | |||
713 |
|
716 | |||
714 | <%def name="render_hunk_lines(diff_mode, hunk, use_comments, inline_comments)"> |
|
717 | <%def name="render_hunk_lines(diff_mode, hunk, use_comments, inline_comments)"> | |
715 | % if diff_mode == 'unified': |
|
718 | % if diff_mode == 'unified': | |
716 | ${render_hunk_lines_unified(hunk, use_comments=use_comments, inline_comments=inline_comments)} |
|
719 | ${render_hunk_lines_unified(hunk, use_comments=use_comments, inline_comments=inline_comments)} | |
717 | % elif diff_mode == 'sideside': |
|
720 | % elif diff_mode == 'sideside': | |
718 | ${render_hunk_lines_sideside(hunk, use_comments=use_comments, inline_comments=inline_comments)} |
|
721 | ${render_hunk_lines_sideside(hunk, use_comments=use_comments, inline_comments=inline_comments)} | |
719 | % else: |
|
722 | % else: | |
720 | <tr class="cb-line"> |
|
723 | <tr class="cb-line"> | |
721 | <td>unknown diff mode</td> |
|
724 | <td>unknown diff mode</td> | |
722 | </tr> |
|
725 | </tr> | |
723 | % endif |
|
726 | % endif | |
724 | </%def>file changes |
|
727 | </%def>file changes | |
725 |
|
728 | |||
726 |
|
729 | |||
727 | <%def name="render_add_comment_button()"> |
|
730 | <%def name="render_add_comment_button()"> | |
728 | <button class="btn btn-small btn-primary cb-comment-box-opener" onclick="return Rhodecode.comments.createComment(this)"> |
|
731 | <button class="btn btn-small btn-primary cb-comment-box-opener" onclick="return Rhodecode.comments.createComment(this)"> | |
729 | <span><i class="icon-comment"></i></span> |
|
732 | <span><i class="icon-comment"></i></span> | |
730 | </button> |
|
733 | </button> | |
731 | </%def> |
|
734 | </%def> | |
732 |
|
735 | |||
733 | <%def name="render_diffset_menu(diffset=None, range_diff_on=None)"> |
|
736 | <%def name="render_diffset_menu(diffset=None, range_diff_on=None)"> | |
734 |
|
737 | |||
735 | <div class="diffset-menu clearinner"> |
|
738 | <div id="diff-file-sticky" class="diffset-menu clearinner"> | |
|
739 | ## auto adjustable | |||
|
740 | <div class="sidebar__inner" style="z-index: 30;background-color: #fff; padding: 5px 0px;"> | |||
736 | <div class="pull-right"> |
|
741 | <div class="pull-right"> | |
737 | <div class="btn-group"> |
|
742 | <div class="btn-group"> | |
738 |
|
743 | |||
739 | <a |
|
744 | <a | |
740 | class="btn ${(c.user_session_attrs["diffmode"] == 'sideside' and 'btn-primary')} tooltip" |
|
745 | class="btn ${(c.user_session_attrs["diffmode"] == 'sideside' and 'btn-primary')} tooltip" | |
741 | title="${h.tooltip(_('View side by side'))}" |
|
746 | title="${h.tooltip(_('View side by side'))}" | |
742 | href="${h.current_route_path(request, diffmode='sideside')}"> |
|
747 | href="${h.current_route_path(request, diffmode='sideside')}"> | |
743 | <span>${_('Side by Side')}</span> |
|
748 | <span>${_('Side by Side')}</span> | |
744 | </a> |
|
749 | </a> | |
745 | <a |
|
750 | <a | |
746 | class="btn ${(c.user_session_attrs["diffmode"] == 'unified' and 'btn-primary')} tooltip" |
|
751 | class="btn ${(c.user_session_attrs["diffmode"] == 'unified' and 'btn-primary')} tooltip" | |
747 | title="${h.tooltip(_('View unified'))}" href="${h.current_route_path(request, diffmode='unified')}"> |
|
752 | title="${h.tooltip(_('View unified'))}" href="${h.current_route_path(request, diffmode='unified')}"> | |
748 | <span>${_('Unified')}</span> |
|
753 | <span>${_('Unified')}</span> | |
749 | </a> |
|
754 | </a> | |
750 | % if range_diff_on is True: |
|
755 | % if range_diff_on is True: | |
751 | <a |
|
756 | <a | |
752 | title="${_('Turn off: Show the diff as commit range')}" |
|
757 | title="${_('Turn off: Show the diff as commit range')}" | |
753 | class="btn btn-primary" |
|
758 | class="btn btn-primary" | |
754 | href="${h.current_route_path(request, **{"range-diff":"0"})}"> |
|
759 | href="${h.current_route_path(request, **{"range-diff":"0"})}"> | |
755 | <span>${_('Range Diff')}</span> |
|
760 | <span>${_('Range Diff')}</span> | |
756 | </a> |
|
761 | </a> | |
757 | % elif range_diff_on is False: |
|
762 | % elif range_diff_on is False: | |
758 | <a |
|
763 | <a | |
759 | title="${_('Show the diff as commit range')}" |
|
764 | title="${_('Show the diff as commit range')}" | |
760 | class="btn" |
|
765 | class="btn" | |
761 | href="${h.current_route_path(request, **{"range-diff":"1"})}"> |
|
766 | href="${h.current_route_path(request, **{"range-diff":"1"})}"> | |
762 | <span>${_('Range Diff')}</span> |
|
767 | <span>${_('Range Diff')}</span> | |
763 | </a> |
|
768 | </a> | |
764 | % endif |
|
769 | % endif | |
765 | </div> |
|
770 | </div> | |
766 | </div> |
|
771 | </div> | |
767 |
|
||||
768 | <div class="pull-left"> |
|
772 | <div class="pull-left"> | |
769 | <div class="btn-group"> |
|
773 | <div class="btn-group"> | |
770 | <div class="pull-left"> |
|
774 | <div class="pull-left"> | |
771 | ${h.hidden('file_filter')} |
|
775 | ${h.hidden('file_filter')} | |
772 | </div> |
|
776 | </div> | |
773 | <a |
|
777 | <a | |
774 | class="btn" |
|
778 | class="btn" | |
775 | href="#" |
|
779 | href="#" | |
776 | onclick="$('input[class=filediff-collapse-state]').prop('checked', false); return false">${_('Expand All Files')}</a> |
|
780 | onclick="$('input[class=filediff-collapse-state]').prop('checked', false); Waypoint.refreshAll(); return false">${_('Expand All Files')}</a> | |
|
781 | <a | |||
|
782 | class="btn" | |||
|
783 | href="#" | |||
|
784 | onclick="$('input[class=filediff-collapse-state]').prop('checked', true); Waypoint.refreshAll(); return false">${_('Collapse All Files')}</a> | |||
777 | <a |
|
785 | <a | |
778 | class="btn" |
|
786 | class="btn" | |
779 | href="#" |
|
787 | href="#" | |
780 | onclick="$('input[class=filediff-collapse-state]').prop('checked', true); return false">${_('Collapse All Files')}</a> |
|
788 | onclick="updateSticky();return Rhodecode.comments.toggleWideMode(this)">${_('Wide Mode Diff')}</a> | |
781 | <a |
|
|||
782 | class="btn" |
|
|||
783 | href="#" |
|
|||
784 | onclick="return Rhodecode.comments.toggleWideMode(this)">${_('Wide Mode Diff')}</a> |
|
|||
785 |
|
789 | |||
786 | </div> |
|
790 | </div> | |
787 | </div> |
|
791 | </div> | |
|
792 | <div class="fpath-placeholder"> | |||
|
793 | <i class="icon-file-text"></i> | |||
|
794 | <strong class="fpath-placeholder-text"> | |||
|
795 | ||||
|
796 | </strong> | |||
|
797 | </div> | |||
|
798 | <div class="sidebar_inner_shadow"></div> | |||
|
799 | </div> | |||
788 | </div> |
|
800 | </div> | |
789 |
|
801 | |||
790 | % if diffset: |
|
802 | % if diffset: | |
791 |
|
803 | |||
792 | %if diffset.limited_diff: |
|
804 | %if diffset.limited_diff: | |
793 | <% file_placeholder = _ungettext('%(num)s file changed', '%(num)s files changed', diffset.changed_files) % {'num': diffset.changed_files}%> |
|
805 | <% file_placeholder = _ungettext('%(num)s file changed', '%(num)s files changed', diffset.changed_files) % {'num': diffset.changed_files} %> | |
794 | %else: |
|
806 | %else: | |
795 | <% file_placeholder = _ungettext('%(num)s file changed: %(linesadd)s inserted, ''%(linesdel)s deleted', '%(num)s files changed: %(linesadd)s inserted, %(linesdel)s deleted', diffset.changed_files) % {'num': diffset.changed_files, 'linesadd': diffset.lines_added, 'linesdel': diffset.lines_deleted}%> |
|
807 | <% file_placeholder = _ungettext('%(num)s file changed: %(linesadd)s inserted, ''%(linesdel)s deleted', '%(num)s files changed: %(linesadd)s inserted, %(linesdel)s deleted', diffset.changed_files) % {'num': diffset.changed_files, 'linesadd': diffset.lines_added, 'linesdel': diffset.lines_deleted}%> | |
796 | %endif |
|
808 | %endif | |
|
809 | ## case on range-diff placeholder needs to be updated | |||
|
810 | % if range_diff_on is True: | |||
|
811 | <% file_placeholder = _('Disabled on range diff') %> | |||
|
812 | % endif | |||
797 |
|
813 | |||
798 | <script> |
|
814 | <script> | |
799 |
|
815 | |||
800 | var feedFilesOptions = function (query, initialData) { |
|
816 | var feedFilesOptions = function (query, initialData) { | |
801 | var data = {results: []}; |
|
817 | var data = {results: []}; | |
802 | var isQuery = typeof query.term !== 'undefined'; |
|
818 | var isQuery = typeof query.term !== 'undefined'; | |
803 |
|
819 | |||
804 | var section = _gettext('Changed files'); |
|
820 | var section = _gettext('Changed files'); | |
805 | var filteredData = []; |
|
821 | var filteredData = []; | |
806 |
|
822 | |||
807 | //filter results |
|
823 | //filter results | |
808 | $.each(initialData.results, function (idx, value) { |
|
824 | $.each(initialData.results, function (idx, value) { | |
809 |
|
825 | |||
810 | if (!isQuery || query.term.length === 0 || value.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0) { |
|
826 | if (!isQuery || query.term.length === 0 || value.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0) { | |
811 | filteredData.push({ |
|
827 | filteredData.push({ | |
812 | 'id': this.id, |
|
828 | 'id': this.id, | |
813 | 'text': this.text, |
|
829 | 'text': this.text, | |
814 | "ops": this.ops, |
|
830 | "ops": this.ops, | |
815 | }) |
|
831 | }) | |
816 | } |
|
832 | } | |
817 |
|
833 | |||
818 | }); |
|
834 | }); | |
819 |
|
835 | |||
820 | data.results = filteredData; |
|
836 | data.results = filteredData; | |
821 |
|
837 | |||
822 | query.callback(data); |
|
838 | query.callback(data); | |
823 | }; |
|
839 | }; | |
824 |
|
840 | |||
825 | var formatFileResult = function(result, container, query, escapeMarkup) { |
|
841 | var formatFileResult = function(result, container, query, escapeMarkup) { | |
826 | return function(data, escapeMarkup) { |
|
842 | return function(data, escapeMarkup) { | |
827 | var container = '<div class="filelist" style="padding-right:100px">{0}</div>'; |
|
843 | var container = '<div class="filelist" style="padding-right:100px">{0}</div>'; | |
828 | var tmpl = '<span style="margin-right:-50px"><strong>{0}</strong></span>'.format(escapeMarkup(data['text'])); |
|
844 | var tmpl = '<span style="margin-right:-50px"><strong>{0}</strong></span>'.format(escapeMarkup(data['text'])); | |
829 | var pill = '<span class="pill-group" style="float: right;margin-right: -100px">' + |
|
845 | var pill = '<span class="pill-group" style="float: right;margin-right: -100px">' + | |
830 | '<span class="pill" op="added">{0}</span>' + |
|
846 | '<span class="pill" op="added">{0}</span>' + | |
831 | '<span class="pill" op="deleted">{1}</span>' + |
|
847 | '<span class="pill" op="deleted">{1}</span>' + | |
832 | '</span>' |
|
848 | '</span>' | |
833 | ; |
|
849 | ; | |
834 | var added = data['ops']['added']; |
|
850 | var added = data['ops']['added']; | |
835 | if (added === 0) { |
|
851 | if (added === 0) { | |
836 | // don't show +0 |
|
852 | // don't show +0 | |
837 | added = 0; |
|
853 | added = 0; | |
838 | } else { |
|
854 | } else { | |
839 | added = '+' + added; |
|
855 | added = '+' + added; | |
840 | } |
|
856 | } | |
841 |
|
857 | |||
842 | var deleted = -1*data['ops']['deleted']; |
|
858 | var deleted = -1*data['ops']['deleted']; | |
843 |
|
859 | |||
844 | tmpl += pill.format(added, deleted); |
|
860 | tmpl += pill.format(added, deleted); | |
845 | return container.format(tmpl); |
|
861 | return container.format(tmpl); | |
846 |
|
862 | |||
847 | }(result, escapeMarkup); |
|
863 | }(result, escapeMarkup); | |
848 | }; |
|
864 | }; | |
849 | var preloadData = { |
|
865 | var preloadData = { | |
850 | results: [ |
|
866 | results: [ | |
851 | % for filediff in diffset.files: |
|
867 | % for filediff in diffset.files: | |
852 | {id:"a_${h.FID(filediff.raw_id, filediff.patch['filename'])}", |
|
868 | {id:"a_${h.FID(filediff.raw_id, filediff.patch['filename'])}", | |
853 | text:"${filediff.patch['filename']}", |
|
869 | text:"${filediff.patch['filename']}", | |
854 | ops:${h.json.dumps(filediff.patch['stats'])|n}}${('' if loop.last else ',')} |
|
870 | ops:${h.json.dumps(filediff.patch['stats'])|n}}${('' if loop.last else ',')} | |
855 | % endfor |
|
871 | % endfor | |
856 | ] |
|
872 | ] | |
857 | }; |
|
873 | }; | |
858 |
|
874 | |||
859 | $("#file_filter").select2({ |
|
875 | $(document).ready(function () { | |
|
876 | ||||
|
877 | var fileFilter = $("#file_filter").select2({ | |||
860 | 'dropdownAutoWidth': true, |
|
878 | 'dropdownAutoWidth': true, | |
861 | 'width': 'auto', |
|
879 | 'width': 'auto', | |
862 | 'placeholder': "${file_placeholder}", |
|
880 | 'placeholder': "${file_placeholder}", | |
863 | containerCssClass: "drop-menu", |
|
881 | containerCssClass: "drop-menu", | |
864 | dropdownCssClass: "drop-menu-dropdown", |
|
882 | dropdownCssClass: "drop-menu-dropdown", | |
865 | data: preloadData, |
|
883 | data: preloadData, | |
866 | query: function(query) { |
|
884 | query: function(query) { | |
867 | feedFilesOptions(query, preloadData); |
|
885 | feedFilesOptions(query, preloadData); | |
868 | }, |
|
886 | }, | |
869 | formatResult: formatFileResult |
|
887 | formatResult: formatFileResult | |
870 | }); |
|
888 | }); | |
|
889 | % if range_diff_on is True: | |||
|
890 | fileFilter.select2("enable", false); | |||
|
891 | ||||
|
892 | % endif | |||
871 |
|
893 | |||
872 | $("#file_filter").on('click', function (e) { |
|
894 | $("#file_filter").on('click', function (e) { | |
873 | e.preventDefault(); |
|
895 | e.preventDefault(); | |
874 | var selected = $('#file_filter').select2('data'); |
|
896 | var selected = $('#file_filter').select2('data'); | |
875 | var idSelector = "#"+selected.id; |
|
897 | var idSelector = "#"+selected.id; | |
876 | window.location.hash = idSelector; |
|
898 | window.location.hash = idSelector; | |
877 | // expand the container if we quick-select the field |
|
899 | // expand the container if we quick-select the field | |
878 |
$(idSelector). |
|
900 | $(idSelector).next().prop('checked', false); | |
879 | }) |
|
901 | Waypoint.refreshAll() | |
|
902 | }); | |||
|
903 | ||||
|
904 | var contextPrefix = _gettext('Context file: '); | |||
|
905 | ## sticky sidebar | |||
|
906 | var sidebarElement = document.getElementById('diff-file-sticky'); | |||
|
907 | sidebar = new StickySidebar(sidebarElement, { | |||
|
908 | topSpacing: 0, | |||
|
909 | bottomSpacing: 0, | |||
|
910 | innerWrapperSelector: '.sidebar__inner' | |||
|
911 | }); | |||
|
912 | sidebarElement.addEventListener('affixed.static.stickySidebar', function () { | |||
|
913 | // reset our file so it's not holding new value | |||
|
914 | $('.fpath-placeholder-text').html(contextPrefix) | |||
|
915 | }); | |||
|
916 | ||||
|
917 | updateSticky = function () { | |||
|
918 | sidebar.updateSticky() | |||
|
919 | }; | |||
|
920 | ||||
|
921 | var animateText = $.debounce(100, function(fPath, anchorId) { | |||
|
922 | // animate setting the text | |||
|
923 | var callback = function () { | |||
|
924 | $('.fpath-placeholder-text').animate({'opacity': 1.00}, 200) | |||
|
925 | $('.fpath-placeholder-text').html(contextPrefix + '<a href="#a_' + anchorId + '">' + fPath + '</a>') | |||
|
926 | }; | |||
|
927 | $('.fpath-placeholder-text').animate({'opacity': 0.15}, 200, callback); | |||
|
928 | }); | |||
|
929 | ||||
|
930 | ## dynamic file waypoints | |||
|
931 | var setFPathInfo = function(fPath, anchorId){ | |||
|
932 | animateText(fPath, anchorId) | |||
|
933 | }; | |||
|
934 | ||||
|
935 | var codeBlock = $('.filediff'); | |||
|
936 | // forward waypoint | |||
|
937 | codeBlock.waypoint( | |||
|
938 | function(direction) { | |||
|
939 | if (direction === "down"){ | |||
|
940 | setFPathInfo($(this.element).data('fPath'), $(this.element).data('anchorId')) | |||
|
941 | } | |||
|
942 | }, { | |||
|
943 | offset: 60, | |||
|
944 | context: '.fpath-placeholder' | |||
|
945 | } | |||
|
946 | ); | |||
|
947 | ||||
|
948 | // backward waypoint | |||
|
949 | codeBlock.waypoint( | |||
|
950 | function(direction) { | |||
|
951 | if (direction === "up"){ | |||
|
952 | setFPathInfo($(this.element).data('fPath'), $(this.element).data('anchorId')) | |||
|
953 | } | |||
|
954 | }, { | |||
|
955 | offset: function () { | |||
|
956 | return -this.element.clientHeight + 80 | |||
|
957 | }, | |||
|
958 | context: '.fpath-placeholder' | |||
|
959 | } | |||
|
960 | ); | |||
|
961 | ||||
|
962 | }); | |||
880 |
|
963 | |||
881 | </script> |
|
964 | </script> | |
882 | % endif |
|
965 | % endif | |
883 |
|
966 | |||
884 |
</%def> |
|
967 | </%def> No newline at end of file |
General Comments 0
You need to be logged in to leave comments.
Login now