Show More
@@ -1,196 +1,200 b'' | |||
|
1 | 1 | { |
|
2 | 2 | "dirs": { |
|
3 | 3 | "css": { |
|
4 | 4 | "src":"rhodecode/public/css", |
|
5 | 5 | "dest":"rhodecode/public/css" |
|
6 | 6 | }, |
|
7 | 7 | "js": { |
|
8 | 8 | "src": "rhodecode/public/js/src", |
|
9 | 9 | "src_rc": "rhodecode/public/js/rhodecode", |
|
10 | 10 | "dest": "rhodecode/public/js", |
|
11 | 11 | "bower": "bower_components", |
|
12 | 12 | "node_modules": "node_modules" |
|
13 | 13 | } |
|
14 | 14 | }, |
|
15 | 15 | "copy": { |
|
16 | 16 | "main": { |
|
17 | 17 | "expand": true, |
|
18 | 18 | "cwd": "bower_components", |
|
19 | 19 | "src": "webcomponentsjs/webcomponents-lite.js", |
|
20 | 20 | "dest": "<%= dirs.js.dest %>/vendors" |
|
21 | 21 | } |
|
22 | 22 | }, |
|
23 | 23 | "concat": { |
|
24 | 24 | "polymercss": { |
|
25 | 25 | "src": [ |
|
26 | 26 | "<%= dirs.js.src %>/components/root-styles-prefix.html", |
|
27 | 27 | "<%= dirs.css.src %>/style-polymer.css", |
|
28 | 28 | "<%= dirs.js.src %>/components/root-styles-suffix.html" |
|
29 | 29 | ], |
|
30 | 30 | "dest": "<%= dirs.js.dest %>/src/components/root-styles.gen.html", |
|
31 | 31 | "nonull": true |
|
32 | 32 | }, |
|
33 | 33 | "dist": { |
|
34 | 34 | "src": [ |
|
35 | 35 | "<%= dirs.js.node_modules %>/jquery/dist/jquery.min.js", |
|
36 | 36 | "<%= dirs.js.node_modules %>/mousetrap/mousetrap.min.js", |
|
37 | 37 | "<%= dirs.js.node_modules %>/moment/min/moment.min.js", |
|
38 | 38 | "<%= dirs.js.node_modules %>/clipboard/dist/clipboard.min.js", |
|
39 | 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 | 44 | "<%= dirs.js.node_modules %>/appenlight-client/appenlight-client.min.js", |
|
41 | 45 | "<%= dirs.js.src %>/logging.js", |
|
42 | 46 | "<%= dirs.js.src %>/bootstrap.js", |
|
43 | 47 | "<%= dirs.js.src %>/i18n_utils.js", |
|
44 | 48 | "<%= dirs.js.src %>/deform.js", |
|
45 | 49 | "<%= dirs.js.src %>/ejs.js", |
|
46 | 50 | "<%= dirs.js.src %>/ejs_templates/utils.js", |
|
47 | 51 | "<%= dirs.js.src %>/plugins/jquery.pjax.js", |
|
48 | 52 | "<%= dirs.js.src %>/plugins/jquery.dataTables.js", |
|
49 | 53 | "<%= dirs.js.src %>/plugins/flavoured_checkbox.js", |
|
50 | 54 | "<%= dirs.js.src %>/plugins/jquery.auto-grow-input.js", |
|
51 | 55 | "<%= dirs.js.src %>/plugins/jquery.autocomplete.js", |
|
52 | 56 | "<%= dirs.js.src %>/plugins/jquery.debounce.js", |
|
53 | 57 | "<%= dirs.js.src %>/plugins/jquery.mark.js", |
|
54 | 58 | "<%= dirs.js.src %>/plugins/jquery.timeago.js", |
|
55 | 59 | "<%= dirs.js.src %>/plugins/jquery.timeago-extension.js", |
|
56 | 60 | "<%= dirs.js.src %>/select2/select2.js", |
|
57 | 61 | "<%= dirs.js.src %>/codemirror/codemirror.js", |
|
58 | 62 | "<%= dirs.js.src %>/codemirror/codemirror_loadmode.js", |
|
59 | 63 | "<%= dirs.js.src %>/codemirror/codemirror_hint.js", |
|
60 | 64 | "<%= dirs.js.src %>/codemirror/codemirror_overlay.js", |
|
61 | 65 | "<%= dirs.js.src %>/codemirror/codemirror_placeholder.js", |
|
62 | 66 | "<%= dirs.js.src %>/codemirror/codemirror_simplemode.js", |
|
63 | 67 | "<%= dirs.js.dest %>/mode/meta.js", |
|
64 | 68 | "<%= dirs.js.dest %>/mode/meta_ext.js", |
|
65 | 69 | "<%= dirs.js.src_rc %>/i18n/select2/translations.js", |
|
66 | 70 | "<%= dirs.js.src %>/rhodecode/utils/array.js", |
|
67 | 71 | "<%= dirs.js.src %>/rhodecode/utils/string.js", |
|
68 | 72 | "<%= dirs.js.src %>/rhodecode/utils/pyroutes.js", |
|
69 | 73 | "<%= dirs.js.src %>/rhodecode/utils/ajax.js", |
|
70 | 74 | "<%= dirs.js.src %>/rhodecode/utils/autocomplete.js", |
|
71 | 75 | "<%= dirs.js.src %>/rhodecode/utils/colorgenerator.js", |
|
72 | 76 | "<%= dirs.js.src %>/rhodecode/utils/ie.js", |
|
73 | 77 | "<%= dirs.js.src %>/rhodecode/utils/os.js", |
|
74 | 78 | "<%= dirs.js.src %>/rhodecode/utils/topics.js", |
|
75 | 79 | "<%= dirs.js.src %>/rhodecode/init.js", |
|
76 | 80 | "<%= dirs.js.src %>/rhodecode/changelog.js", |
|
77 | 81 | "<%= dirs.js.src %>/rhodecode/codemirror.js", |
|
78 | 82 | "<%= dirs.js.src %>/rhodecode/comments.js", |
|
79 | 83 | "<%= dirs.js.src %>/rhodecode/constants.js", |
|
80 | 84 | "<%= dirs.js.src %>/rhodecode/files.js", |
|
81 | 85 | "<%= dirs.js.src %>/rhodecode/followers.js", |
|
82 | 86 | "<%= dirs.js.src %>/rhodecode/menus.js", |
|
83 | 87 | "<%= dirs.js.src %>/rhodecode/notifications.js", |
|
84 | 88 | "<%= dirs.js.src %>/rhodecode/permissions.js", |
|
85 | 89 | "<%= dirs.js.src %>/rhodecode/pjax.js", |
|
86 | 90 | "<%= dirs.js.src %>/rhodecode/pullrequests.js", |
|
87 | 91 | "<%= dirs.js.src %>/rhodecode/settings.js", |
|
88 | 92 | "<%= dirs.js.src %>/rhodecode/select2_widgets.js", |
|
89 | 93 | "<%= dirs.js.src %>/rhodecode/tooltips.js", |
|
90 | 94 | "<%= dirs.js.src %>/rhodecode/users.js", |
|
91 | 95 | "<%= dirs.js.src %>/rhodecode/appenlight.js", |
|
92 | 96 | "<%= dirs.js.src %>/rhodecode.js" |
|
93 | 97 | ], |
|
94 | 98 | "dest": "<%= dirs.js.dest %>/scripts.js", |
|
95 | 99 | "nonull": true |
|
96 | 100 | } |
|
97 | 101 | }, |
|
98 | 102 | "crisper": { |
|
99 | 103 | "dist": { |
|
100 | 104 | "options": { |
|
101 | 105 | "cleanup": false, |
|
102 | 106 | "onlySplit": true |
|
103 | 107 | }, |
|
104 | 108 | "src": "<%= dirs.js.dest %>/rhodecode-components.html", |
|
105 | 109 | "dest": "<%= dirs.js.dest %>/rhodecode-components.js" |
|
106 | 110 | } |
|
107 | 111 | }, |
|
108 | 112 | "less": { |
|
109 | 113 | "development": { |
|
110 | 114 | "options": { |
|
111 | 115 | "compress": false, |
|
112 | 116 | "yuicompress": false, |
|
113 | 117 | "optimization": 0 |
|
114 | 118 | }, |
|
115 | 119 | "files": { |
|
116 | 120 | "<%= dirs.css.dest %>/style.css": "<%= dirs.css.src %>/main.less", |
|
117 | 121 | "<%= dirs.css.dest %>/style-polymer.css": "<%= dirs.css.src %>/polymer.less" |
|
118 | 122 | } |
|
119 | 123 | }, |
|
120 | 124 | "production": { |
|
121 | 125 | "options": { |
|
122 | 126 | "compress": true, |
|
123 | 127 | "yuicompress": true, |
|
124 | 128 | "optimization": 2 |
|
125 | 129 | }, |
|
126 | 130 | "files": { |
|
127 | 131 | "<%= dirs.css.dest %>/style.css": "<%= dirs.css.src %>/main.less", |
|
128 | 132 | "<%= dirs.css.dest %>/style-polymer.css": "<%= dirs.css.src %>/polymer.less" |
|
129 | 133 | } |
|
130 | 134 | }, |
|
131 | 135 | "components": { |
|
132 | 136 | "files": [ |
|
133 | 137 | { |
|
134 | 138 | "cwd": "<%= dirs.js.src %>/components/", |
|
135 | 139 | "dest": "<%= dirs.js.src %>/components/", |
|
136 | 140 | "src": [ |
|
137 | 141 | "**/*.less" |
|
138 | 142 | ], |
|
139 | 143 | "expand": true, |
|
140 | 144 | "ext": ".css" |
|
141 | 145 | } |
|
142 | 146 | ] |
|
143 | 147 | } |
|
144 | 148 | }, |
|
145 | 149 | "watch": { |
|
146 | 150 | "less": { |
|
147 | 151 | "files": [ |
|
148 | 152 | "<%= dirs.css.src %>/**/*.less", |
|
149 | 153 | "<%= dirs.js.src %>/components/**/*.less" |
|
150 | 154 | ], |
|
151 | 155 | "tasks": [ |
|
152 | 156 | "less:development", |
|
153 | 157 | "less:components", |
|
154 | 158 | "concat:polymercss", |
|
155 | 159 | "vulcanize", |
|
156 | 160 | "crisper", |
|
157 | 161 | "concat:dist" |
|
158 | 162 | ] |
|
159 | 163 | }, |
|
160 | 164 | "js": { |
|
161 | 165 | "files": [ |
|
162 | 166 | "!<%= dirs.js.src %>/components/root-styles.gen.html", |
|
163 | 167 | "<%= dirs.js.src %>/**/*.js", |
|
164 | 168 | "<%= dirs.js.src %>/components/**/*.html" |
|
165 | 169 | ], |
|
166 | 170 | "tasks": [ |
|
167 | 171 | "less:components", |
|
168 | 172 | "concat:polymercss", |
|
169 | 173 | "vulcanize", |
|
170 | 174 | "crisper", |
|
171 | 175 | "concat:dist" |
|
172 | 176 | ] |
|
173 | 177 | } |
|
174 | 178 | }, |
|
175 | 179 | "jshint": { |
|
176 | 180 | "rhodecode": { |
|
177 | 181 | "src": "<%= dirs.js.src %>/rhodecode/**/*.js", |
|
178 | 182 | "options": { |
|
179 | 183 | "jshintrc": ".jshintrc" |
|
180 | 184 | } |
|
181 | 185 | } |
|
182 | 186 | }, |
|
183 | 187 | "vulcanize": { |
|
184 | 188 | "default": { |
|
185 | 189 | "options": { |
|
186 | 190 | "abspath": "", |
|
187 | 191 | "inlineScripts": true, |
|
188 | 192 | "inlineCss": true, |
|
189 | 193 | "stripComments": true |
|
190 | 194 | }, |
|
191 | 195 | "files": { |
|
192 | 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 | 2 | "name": "rhodecode-enterprise", |
|
3 | 3 | "version": "1.0.0", |
|
4 | 4 | "private": true, |
|
5 | 5 | "description" : "RhodeCode JS packaged", |
|
6 | 6 | "license": "SEE LICENSE IN LICENSE.txt", |
|
7 | 7 | "repository" : { |
|
8 | 8 | "type" : "hg", |
|
9 | 9 | "url" : "https://code.rhodecode.com/rhodecode-enterprise-ce" |
|
10 | 10 | }, |
|
11 | 11 | "devDependencies": { |
|
12 | 12 | "grunt": "^0.4.5", |
|
13 | 13 | "grunt-contrib-copy": "^1.0.0", |
|
14 | 14 | "grunt-contrib-concat": "^0.5.1", |
|
15 | 15 | "grunt-contrib-jshint": "^0.12.0", |
|
16 | 16 | "grunt-contrib-less": "^1.1.0", |
|
17 | 17 | "grunt-contrib-watch": "^0.6.1", |
|
18 | 18 | "crisper": "^2.1.1", |
|
19 | 19 | "vulcanize": "^1.16.0", |
|
20 | 20 | "grunt-crisper": "^1.0.1", |
|
21 | 21 | "grunt-vulcanize": "^1.0.0", |
|
22 | 22 | "node2nix": "^1.0.0", |
|
23 | 23 | "jshint": "^2.9.1-rc3", |
|
24 | 24 | "bower": "^1.8.4", |
|
25 | 25 | "jquery": "1.11.3", |
|
26 | 26 | "favico.js": "^0.3.10", |
|
27 | 27 | "clipboard": "^2.0.1", |
|
28 | 28 | "qrious": "^4.0.2", |
|
29 | 29 | "moment": "^2.18.1", |
|
30 | 30 | "mousetrap": "^1.6.1", |
|
31 | "sticky-sidebar": "3.3.1", | |
|
32 | "waypoints": "4.0.1", | |
|
31 | 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 | 1 | # Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix) |
|
2 | 2 | { fetchbower, buildEnv }: |
|
3 | 3 | buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [ |
|
4 | (fetchbower "webcomponentsjs" "1.2.3" "^1.2.3" "0db2fjk779rhl9d4ifpk1j9a83vngx6j3hk7si1752dqxj857267") | |
|
5 |
(fetchbower "polymer" "Polymer/polymer#2.6. |
|
|
6 |
(fetchbower "paper-button" "PolymerElements/paper-button#2.1. |
|
|
4 | (fetchbower "webcomponentsjs" "1.2.7" "^1.2.3" "0wbybia53zjfcyh4yvjc4ds8vvfizmmsyd35qgja4v0hlyvf4zms") | |
|
5 | (fetchbower "polymer" "Polymer/polymer#2.6.1" "Polymer/polymer#^2.6.0" "0zr44hh50851hfqwgw5r4pa330p1jp60rrffcqrw3wwggfl38s4n") | |
|
6 | (fetchbower "paper-button" "PolymerElements/paper-button#2.1.3" "PolymerElements/paper-button#^2.1.2" "1w016daj1l8hyklaqskcz4c3zxcm77cd5k3lj0324xn45n3vvphc") | |
|
7 | 7 | (fetchbower "paper-spinner" "PolymerElements/paper-spinner#2.1.0" "PolymerElements/paper-spinner#^2.1.0" "07jamgxzvy4r9pgf5ikj1fm8nkrw6sywgcxvmm7ax58hjvmd4i45") |
|
8 | 8 | (fetchbower "paper-tooltip" "PolymerElements/paper-tooltip#2.1.1" "PolymerElements/paper-tooltip#^2.1.1" "0ja9vz4xps7dxfx6kmrwq0gifbjsyc3pk9l3hd5233ss72ghlvgb") |
|
9 | 9 | (fetchbower "paper-toast" "PolymerElements/paper-toast#2.1.2" "PolymerElements/paper-toast#^2.1.2" "0mkj9ayjx2l9hvrz4kw3yjbgrs9w873k05ywv94nh92mzpjkxn04") |
|
10 | 10 | (fetchbower "paper-toggle-button" "PolymerElements/paper-toggle-button#2.1.1" "PolymerElements/paper-toggle-button#^2.1.1" "1rl5ar3ny6r3v9hr8s68v8b3zh5yl52pikhi4b9iv9grv29g5999") |
|
11 | 11 | (fetchbower "iron-ajax" "PolymerElements/iron-ajax#2.1.3" "PolymerElements/iron-ajax#^2.1.3" "187zb6lkv18yapl292qhn611mbl4i2bqs2dimlwmdjaln285nc1l") |
|
12 | 12 | (fetchbower "iron-autogrow-textarea" "PolymerElements/iron-autogrow-textarea#2.2.0" "PolymerElements/iron-autogrow-textarea#^2.2.0" "1cx7g49m20z08x25z24g2pvv6m6dwfbkga3nsw0rpi3jk7xhznqw") |
|
13 | 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 | 15 | (fetchbower "iron-flex-layout" "PolymerElements/iron-flex-layout#2.0.3" "PolymerElements/iron-flex-layout#1 - 2" "1ir9ili3rkcgbfj6is5s70vyb7m6avz0av0lpjjlhhsplrrl90bk") |
|
16 | 16 | (fetchbower "paper-behaviors" "PolymerElements/paper-behaviors#2.1.1" "PolymerElements/paper-behaviors#1 - 2" "0wzyznmy1q64jsm6lck0xma92lg2hz9h9m05r68iy20iyrvbjld7") |
|
17 | 17 | (fetchbower "paper-styles" "PolymerElements/paper-styles#2.1.0" "PolymerElements/paper-styles#1 - 2" "0xzsd7pvjsk7lgcmvx4q0dvps40q3mymkx26zgs8ns91s1ssfqbx") |
|
18 | 18 | (fetchbower "iron-a11y-announcer" "PolymerElements/iron-a11y-announcer#2.1.0" "PolymerElements/iron-a11y-announcer#1 - 2" "1hvmw76im8y3pxmg1yfnlkzap429q9i4v1z42y7m8lz0996jmxrz") |
|
19 | 19 | (fetchbower "iron-overlay-behavior" "PolymerElements/iron-overlay-behavior#2.3.4" "PolymerElements/iron-overlay-behavior#1 - 2" "0hk2fxhfz7kg27349qz1c87vq6nfdcnjr9az3q95ak3rigsb71wg") |
|
20 | 20 | (fetchbower "iron-fit-behavior" "PolymerElements/iron-fit-behavior#2.2.1" "PolymerElements/iron-fit-behavior#1 - 2" "0v89am4r2fncr7m9k0f2xqh5bvgn2dqjjc7p515ix4grk89whbs3") |
|
21 | 21 | (fetchbower "iron-checked-element-behavior" "PolymerElements/iron-checked-element-behavior#2.1.1" "PolymerElements/iron-checked-element-behavior#1 - 2" "00gpvnb7anspadw59av7lca6p03qlx59dgnhw3lqf5v223dsh0l3") |
|
22 | 22 | (fetchbower "iron-behaviors" "PolymerElements/iron-behaviors#2.1.1" "PolymerElements/iron-behaviors#1 - 2" "0c71l1il76jg8gvyh8bwlqraif53gfnz5700vpg35qyr1biwbr1w") |
|
23 | 23 | (fetchbower "iron-validatable-behavior" "PolymerElements/iron-validatable-behavior#2.1.0" "PolymerElements/iron-validatable-behavior#1 - 2" "1j65zv7hcxdcyyanzhp2wap3bnx7cz8ghd44m12fad2206jj6ysi") |
|
24 | 24 | (fetchbower "iron-a11y-keys-behavior" "PolymerElements/iron-a11y-keys-behavior#2.1.1" "PolymerElements/iron-a11y-keys-behavior#1 - 2" "0jsw7wvh4wzcjqdbvxyha99h1ph61lykyyyvdb6hm8m8w40bhs9b") |
|
25 | 25 | (fetchbower "paper-ripple" "PolymerElements/paper-ripple#2.1.1" "PolymerElements/paper-ripple#1 - 2" "0sam6w83nxf9mss79j6hjfsx0288pf4hwr1bw5xclzgpddcjmrm5") |
|
26 | 26 | (fetchbower "font-roboto" "PolymerElements/font-roboto#1.1.0" "PolymerElements/font-roboto#^1.0.1" "0z4msvaa5pnr84j2r957g313fmdbdbrknhdw1axy5g48845yv04s") |
|
27 | 27 | (fetchbower "iron-resizable-behavior" "PolymerElements/iron-resizable-behavior#2.1.1" "PolymerElements/iron-resizable-behavior#1 - 2" "0169rg6kby0ypfiwbkin46ywaszwj7r91yn081yqd96l1115aqnk") |
|
28 | 28 | (fetchbower "iron-form-element-behavior" "PolymerElements/iron-form-element-behavior#2.1.3" "PolymerElements/iron-form-element-behavior#1 - 2" "1c83kkfqvb5pdlvrhad3l7b11i244a8lykc8kzfnb9ya0xrln0cn") |
|
29 | 29 | (fetchbower "iron-meta" "PolymerElements/iron-meta#2.1.1" "PolymerElements/iron-meta#1 - 2" "12w1pcl3w97xpxihqddbf2d9dx8xz5i1jd9bz1xrmfsh25isni40") |
|
30 | 30 | ]; } |
@@ -1,3386 +1,3406 b'' | |||
|
1 | 1 | # This file has been generated by node2nix 1.6.0. Do not edit! |
|
2 | 2 | |
|
3 | 3 | {nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}: |
|
4 | 4 | |
|
5 | 5 | let |
|
6 | 6 | sources = { |
|
7 | 7 | "@types/clone-0.1.30" = { |
|
8 | 8 | name = "_at_types_slash_clone"; |
|
9 | 9 | packageName = "@types/clone"; |
|
10 | 10 | version = "0.1.30"; |
|
11 | 11 | src = fetchurl { |
|
12 | 12 | url = "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz"; |
|
13 | 13 | sha1 = "e7365648c1b42136a59c7d5040637b3b5c83b614"; |
|
14 | 14 | }; |
|
15 | 15 | }; |
|
16 |
"@types/node-4. |
|
|
16 | "@types/node-4.9.0" = { | |
|
17 | 17 | name = "_at_types_slash_node"; |
|
18 | 18 | packageName = "@types/node"; |
|
19 |
version = "4. |
|
|
20 | src = fetchurl { | |
|
21 |
url = "https://registry.npmjs.org/@types/node/-/node-4. |
|
|
22 | sha512 = "U6IchCNLRyswc9p6G6lxWlbE+KwAhZp6mGo6MD2yWpmFomhYmetK+c98OpKyvphNn04CU3aXeJrXdOqbXVTS/w=="; | |
|
23 | }; | |
|
24 | }; | |
|
25 |
"@types/node-6.0.11 |
|
|
19 | version = "4.9.0"; | |
|
20 | src = fetchurl { | |
|
21 | url = "https://registry.npmjs.org/@types/node/-/node-4.9.0.tgz"; | |
|
22 | sha512 = "xUFkZ+er9gUGw0x9qyfmr/Th0LuX6IB0m7HrRMB6sO6vcBVRFZ/3YV1EeiOC2fG50RX09avDfKwGBHOnPVxFeg=="; | |
|
23 | }; | |
|
24 | }; | |
|
25 | "@types/node-6.0.118" = { | |
|
26 | 26 | name = "_at_types_slash_node"; |
|
27 | 27 | packageName = "@types/node"; |
|
28 |
version = "6.0.11 |
|
|
29 | src = fetchurl { | |
|
30 |
url = "https://registry.npmjs.org/@types/node/-/node-6.0.11 |
|
|
31 | sha512 = "5ViC9dwf1VIAtrOFTvOuN04lJgw28eKjuy0Vg2Bd/fSlxKP2feCSkIw04ZgOENL2ywdWrtbkthp1XVLEjJmouw=="; | |
|
28 | version = "6.0.118"; | |
|
29 | src = fetchurl { | |
|
30 | url = "https://registry.npmjs.org/@types/node/-/node-6.0.118.tgz"; | |
|
31 | sha512 = "N33cKXGSqhOYaPiT4xUGsYlPPDwFtQM/6QxJxuMXA/7BcySW+lkn2yigWP7vfs4daiL/7NJNU6DMCqg5N4B+xQ=="; | |
|
32 | 32 | }; |
|
33 | 33 | }; |
|
34 | 34 | "@types/parse5-0.0.31" = { |
|
35 | 35 | name = "_at_types_slash_parse5"; |
|
36 | 36 | packageName = "@types/parse5"; |
|
37 | 37 | version = "0.0.31"; |
|
38 | 38 | src = fetchurl { |
|
39 |
url = "http |
|
|
39 | url = "http://registry.npmjs.org/@types/parse5/-/parse5-0.0.31.tgz"; | |
|
40 | 40 | sha1 = "e827a493a443b156e1b582a2e4c3bdc0040f2ee7"; |
|
41 | 41 | }; |
|
42 | 42 | }; |
|
43 | 43 | "abbrev-1.1.1" = { |
|
44 | 44 | name = "abbrev"; |
|
45 | 45 | packageName = "abbrev"; |
|
46 | 46 | version = "1.1.1"; |
|
47 | 47 | src = fetchurl { |
|
48 | 48 | url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"; |
|
49 | 49 | sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="; |
|
50 | 50 | }; |
|
51 | 51 | }; |
|
52 | 52 | "acorn-3.3.0" = { |
|
53 | 53 | name = "acorn"; |
|
54 | 54 | packageName = "acorn"; |
|
55 | 55 | version = "3.3.0"; |
|
56 | 56 | src = fetchurl { |
|
57 | 57 | url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz"; |
|
58 | 58 | sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a"; |
|
59 | 59 | }; |
|
60 | 60 | }; |
|
61 |
"acorn-5.7. |
|
|
61 | "acorn-5.7.3" = { | |
|
62 | 62 | name = "acorn"; |
|
63 | 63 | packageName = "acorn"; |
|
64 |
version = "5.7. |
|
|
65 | src = fetchurl { | |
|
66 |
url = "https://registry.npmjs.org/acorn/-/acorn-5.7. |
|
|
67 | sha512 = "d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ=="; | |
|
64 | version = "5.7.3"; | |
|
65 | src = fetchurl { | |
|
66 | url = "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz"; | |
|
67 | sha512 = "T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="; | |
|
68 | 68 | }; |
|
69 | 69 | }; |
|
70 | 70 | "acorn-jsx-3.0.1" = { |
|
71 | 71 | name = "acorn-jsx"; |
|
72 | 72 | packageName = "acorn-jsx"; |
|
73 | 73 | version = "3.0.1"; |
|
74 | 74 | src = fetchurl { |
|
75 | 75 | url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz"; |
|
76 | 76 | sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b"; |
|
77 | 77 | }; |
|
78 | 78 | }; |
|
79 | 79 | "ajv-4.11.8" = { |
|
80 | 80 | name = "ajv"; |
|
81 | 81 | packageName = "ajv"; |
|
82 | 82 | version = "4.11.8"; |
|
83 | 83 | src = fetchurl { |
|
84 | 84 | url = "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz"; |
|
85 | 85 | sha1 = "82ffb02b29e662ae53bdc20af15947706739c536"; |
|
86 | 86 | }; |
|
87 | 87 | }; |
|
88 | 88 | "amdefine-1.0.1" = { |
|
89 | 89 | name = "amdefine"; |
|
90 | 90 | packageName = "amdefine"; |
|
91 | 91 | version = "1.0.1"; |
|
92 | 92 | src = fetchurl { |
|
93 | 93 | url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz"; |
|
94 | 94 | sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5"; |
|
95 | 95 | }; |
|
96 | 96 | }; |
|
97 | 97 | "ansi-escape-sequences-3.0.0" = { |
|
98 | 98 | name = "ansi-escape-sequences"; |
|
99 | 99 | packageName = "ansi-escape-sequences"; |
|
100 | 100 | version = "3.0.0"; |
|
101 | 101 | src = fetchurl { |
|
102 | 102 | url = "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz"; |
|
103 | 103 | sha1 = "1c18394b6af9b76ff9a63509fa497669fd2ce53e"; |
|
104 | 104 | }; |
|
105 | 105 | }; |
|
106 | 106 | "ansi-regex-0.2.1" = { |
|
107 | 107 | name = "ansi-regex"; |
|
108 | 108 | packageName = "ansi-regex"; |
|
109 | 109 | version = "0.2.1"; |
|
110 | 110 | src = fetchurl { |
|
111 | 111 | url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"; |
|
112 | 112 | sha1 = "0d8e946967a3d8143f93e24e298525fc1b2235f9"; |
|
113 | 113 | }; |
|
114 | 114 | }; |
|
115 | 115 | "ansi-regex-2.1.1" = { |
|
116 | 116 | name = "ansi-regex"; |
|
117 | 117 | packageName = "ansi-regex"; |
|
118 | 118 | version = "2.1.1"; |
|
119 | 119 | src = fetchurl { |
|
120 | 120 | url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"; |
|
121 | 121 | sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df"; |
|
122 | 122 | }; |
|
123 | 123 | }; |
|
124 | 124 | "ansi-styles-1.1.0" = { |
|
125 | 125 | name = "ansi-styles"; |
|
126 | 126 | packageName = "ansi-styles"; |
|
127 | 127 | version = "1.1.0"; |
|
128 | 128 | src = fetchurl { |
|
129 | 129 | url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"; |
|
130 | 130 | sha1 = "eaecbf66cd706882760b2f4691582b8f55d7a7de"; |
|
131 | 131 | }; |
|
132 | 132 | }; |
|
133 | 133 | "ansi-styles-2.2.1" = { |
|
134 | 134 | name = "ansi-styles"; |
|
135 | 135 | packageName = "ansi-styles"; |
|
136 | 136 | version = "2.2.1"; |
|
137 | 137 | src = fetchurl { |
|
138 | 138 | url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"; |
|
139 | 139 | sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe"; |
|
140 | 140 | }; |
|
141 | 141 | }; |
|
142 | 142 | "appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" = { |
|
143 | 143 | name = "appenlight-client"; |
|
144 | 144 | packageName = "appenlight-client"; |
|
145 | 145 | version = "0.5.1"; |
|
146 | 146 | src = fetchgit { |
|
147 | 147 | url = "https://git@github.com/AppEnlight/appenlight-client-js.git"; |
|
148 | 148 | rev = "14712c64c230fbbe94fcbc8094aef5eb3b90b307"; |
|
149 | 149 | sha256 = "05146f5b932f166c9a4db601bc9c13ae686899653d1dd03121652631f9bc83d6"; |
|
150 | 150 | }; |
|
151 | 151 | }; |
|
152 | 152 | "aproba-1.2.0" = { |
|
153 | 153 | name = "aproba"; |
|
154 | 154 | packageName = "aproba"; |
|
155 | 155 | version = "1.2.0"; |
|
156 | 156 | src = fetchurl { |
|
157 | 157 | url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz"; |
|
158 | 158 | sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="; |
|
159 | 159 | }; |
|
160 | 160 | }; |
|
161 | 161 | "are-we-there-yet-1.1.5" = { |
|
162 | 162 | name = "are-we-there-yet"; |
|
163 | 163 | packageName = "are-we-there-yet"; |
|
164 | 164 | version = "1.1.5"; |
|
165 | 165 | src = fetchurl { |
|
166 | 166 | url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz"; |
|
167 | 167 | sha512 = "5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w=="; |
|
168 | 168 | }; |
|
169 | 169 | }; |
|
170 | 170 | "argparse-0.1.16" = { |
|
171 | 171 | name = "argparse"; |
|
172 | 172 | packageName = "argparse"; |
|
173 | 173 | version = "0.1.16"; |
|
174 | 174 | src = fetchurl { |
|
175 | 175 | url = "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz"; |
|
176 | 176 | sha1 = "cfd01e0fbba3d6caed049fbd758d40f65196f57c"; |
|
177 | 177 | }; |
|
178 | 178 | }; |
|
179 | 179 | "array-back-1.0.4" = { |
|
180 | 180 | name = "array-back"; |
|
181 | 181 | packageName = "array-back"; |
|
182 | 182 | version = "1.0.4"; |
|
183 | 183 | src = fetchurl { |
|
184 | 184 | url = "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz"; |
|
185 | 185 | sha1 = "644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b"; |
|
186 | 186 | }; |
|
187 | 187 | }; |
|
188 | 188 | "asap-2.0.6" = { |
|
189 | 189 | name = "asap"; |
|
190 | 190 | packageName = "asap"; |
|
191 | 191 | version = "2.0.6"; |
|
192 | 192 | src = fetchurl { |
|
193 | 193 | url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz"; |
|
194 | 194 | sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46"; |
|
195 | 195 | }; |
|
196 | 196 | }; |
|
197 |
"asn1-0.2. |
|
|
197 | "asn1-0.2.4" = { | |
|
198 | 198 | name = "asn1"; |
|
199 | 199 | packageName = "asn1"; |
|
200 |
version = "0.2. |
|
|
201 | src = fetchurl { | |
|
202 |
url = "https://registry.npmjs.org/asn1/-/asn1-0.2. |
|
|
203 | sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86"; | |
|
200 | version = "0.2.4"; | |
|
201 | src = fetchurl { | |
|
202 | url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz"; | |
|
203 | sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg=="; | |
|
204 | 204 | }; |
|
205 | 205 | }; |
|
206 | 206 | "assert-plus-0.2.0" = { |
|
207 | 207 | name = "assert-plus"; |
|
208 | 208 | packageName = "assert-plus"; |
|
209 | 209 | version = "0.2.0"; |
|
210 | 210 | src = fetchurl { |
|
211 | 211 | url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz"; |
|
212 | 212 | sha1 = "d74e1b87e7affc0db8aadb7021f3fe48101ab234"; |
|
213 | 213 | }; |
|
214 | 214 | }; |
|
215 | 215 | "assert-plus-1.0.0" = { |
|
216 | 216 | name = "assert-plus"; |
|
217 | 217 | packageName = "assert-plus"; |
|
218 | 218 | version = "1.0.0"; |
|
219 | 219 | src = fetchurl { |
|
220 | 220 | url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"; |
|
221 | 221 | sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"; |
|
222 | 222 | }; |
|
223 | 223 | }; |
|
224 | 224 | "async-0.1.22" = { |
|
225 | 225 | name = "async"; |
|
226 | 226 | packageName = "async"; |
|
227 | 227 | version = "0.1.22"; |
|
228 | 228 | src = fetchurl { |
|
229 | 229 | url = "https://registry.npmjs.org/async/-/async-0.1.22.tgz"; |
|
230 | 230 | sha1 = "0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061"; |
|
231 | 231 | }; |
|
232 | 232 | }; |
|
233 | 233 | "async-0.2.10" = { |
|
234 | 234 | name = "async"; |
|
235 | 235 | packageName = "async"; |
|
236 | 236 | version = "0.2.10"; |
|
237 | 237 | src = fetchurl { |
|
238 | 238 | url = "https://registry.npmjs.org/async/-/async-0.2.10.tgz"; |
|
239 | 239 | sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1"; |
|
240 | 240 | }; |
|
241 | 241 | }; |
|
242 | 242 | "async-1.0.0" = { |
|
243 | 243 | name = "async"; |
|
244 | 244 | packageName = "async"; |
|
245 | 245 | version = "1.0.0"; |
|
246 | 246 | src = fetchurl { |
|
247 | 247 | url = "https://registry.npmjs.org/async/-/async-1.0.0.tgz"; |
|
248 | 248 | sha1 = "f8fc04ca3a13784ade9e1641af98578cfbd647a9"; |
|
249 | 249 | }; |
|
250 | 250 | }; |
|
251 | 251 | "async-2.6.1" = { |
|
252 | 252 | name = "async"; |
|
253 | 253 | packageName = "async"; |
|
254 | 254 | version = "2.6.1"; |
|
255 | 255 | src = fetchurl { |
|
256 | 256 | url = "https://registry.npmjs.org/async/-/async-2.6.1.tgz"; |
|
257 | 257 | sha512 = "fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ=="; |
|
258 | 258 | }; |
|
259 | 259 | }; |
|
260 | 260 | "asynckit-0.4.0" = { |
|
261 | 261 | name = "asynckit"; |
|
262 | 262 | packageName = "asynckit"; |
|
263 | 263 | version = "0.4.0"; |
|
264 | 264 | src = fetchurl { |
|
265 | 265 | url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"; |
|
266 | 266 | sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"; |
|
267 | 267 | }; |
|
268 | 268 | }; |
|
269 | 269 | "aws-sign2-0.6.0" = { |
|
270 | 270 | name = "aws-sign2"; |
|
271 | 271 | packageName = "aws-sign2"; |
|
272 | 272 | version = "0.6.0"; |
|
273 | 273 | src = fetchurl { |
|
274 | 274 | url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz"; |
|
275 | 275 | sha1 = "14342dd38dbcc94d0e5b87d763cd63612c0e794f"; |
|
276 | 276 | }; |
|
277 | 277 | }; |
|
278 |
"aws4-1. |
|
|
278 | "aws4-1.8.0" = { | |
|
279 | 279 | name = "aws4"; |
|
280 | 280 | packageName = "aws4"; |
|
281 |
version = "1. |
|
|
282 | src = fetchurl { | |
|
283 |
url = "https://registry.npmjs.org/aws4/-/aws4-1. |
|
|
284 | sha512 = "32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w=="; | |
|
281 | version = "1.8.0"; | |
|
282 | src = fetchurl { | |
|
283 | url = "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz"; | |
|
284 | sha512 = "ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="; | |
|
285 | 285 | }; |
|
286 | 286 | }; |
|
287 | 287 | "babel-polyfill-6.26.0" = { |
|
288 | 288 | name = "babel-polyfill"; |
|
289 | 289 | packageName = "babel-polyfill"; |
|
290 | 290 | version = "6.26.0"; |
|
291 | 291 | src = fetchurl { |
|
292 | 292 | url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz"; |
|
293 | 293 | sha1 = "379937abc67d7895970adc621f284cd966cf2153"; |
|
294 | 294 | }; |
|
295 | 295 | }; |
|
296 | 296 | "babel-runtime-6.26.0" = { |
|
297 | 297 | name = "babel-runtime"; |
|
298 | 298 | packageName = "babel-runtime"; |
|
299 | 299 | version = "6.26.0"; |
|
300 | 300 | src = fetchurl { |
|
301 | 301 | url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz"; |
|
302 | 302 | sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe"; |
|
303 | 303 | }; |
|
304 | 304 | }; |
|
305 | 305 | "balanced-match-1.0.0" = { |
|
306 | 306 | name = "balanced-match"; |
|
307 | 307 | packageName = "balanced-match"; |
|
308 | 308 | version = "1.0.0"; |
|
309 | 309 | src = fetchurl { |
|
310 | 310 | url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"; |
|
311 | 311 | sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767"; |
|
312 | 312 | }; |
|
313 | 313 | }; |
|
314 | 314 | "base64-js-1.2.3" = { |
|
315 | 315 | name = "base64-js"; |
|
316 | 316 | packageName = "base64-js"; |
|
317 | 317 | version = "1.2.3"; |
|
318 | 318 | src = fetchurl { |
|
319 | 319 | url = "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz"; |
|
320 | 320 | sha512 = "MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w=="; |
|
321 | 321 | }; |
|
322 | 322 | }; |
|
323 | 323 | "bcrypt-pbkdf-1.0.2" = { |
|
324 | 324 | name = "bcrypt-pbkdf"; |
|
325 | 325 | packageName = "bcrypt-pbkdf"; |
|
326 | 326 | version = "1.0.2"; |
|
327 | 327 | src = fetchurl { |
|
328 | 328 | url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz"; |
|
329 | 329 | sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"; |
|
330 | 330 | }; |
|
331 | 331 | }; |
|
332 | 332 | "boom-2.10.1" = { |
|
333 | 333 | name = "boom"; |
|
334 | 334 | packageName = "boom"; |
|
335 | 335 | version = "2.10.1"; |
|
336 | 336 | src = fetchurl { |
|
337 | 337 | url = "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"; |
|
338 | 338 | sha1 = "39c8918ceff5799f83f9492a848f625add0c766f"; |
|
339 | 339 | }; |
|
340 | 340 | }; |
|
341 | 341 | "bower-1.8.4" = { |
|
342 | 342 | name = "bower"; |
|
343 | 343 | packageName = "bower"; |
|
344 | 344 | version = "1.8.4"; |
|
345 | 345 | src = fetchurl { |
|
346 | 346 | url = "https://registry.npmjs.org/bower/-/bower-1.8.4.tgz"; |
|
347 | 347 | sha1 = "e7876a076deb8137f7d06525dc5e8c66db82f28a"; |
|
348 | 348 | }; |
|
349 | 349 | }; |
|
350 | 350 | "brace-expansion-1.1.11" = { |
|
351 | 351 | name = "brace-expansion"; |
|
352 | 352 | packageName = "brace-expansion"; |
|
353 | 353 | version = "1.1.11"; |
|
354 | 354 | src = fetchurl { |
|
355 | 355 | url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"; |
|
356 | 356 | sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="; |
|
357 | 357 | }; |
|
358 | 358 | }; |
|
359 | 359 | "buffer-from-1.1.1" = { |
|
360 | 360 | name = "buffer-from"; |
|
361 | 361 | packageName = "buffer-from"; |
|
362 | 362 | version = "1.1.1"; |
|
363 | 363 | src = fetchurl { |
|
364 | 364 | url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz"; |
|
365 | 365 | sha512 = "MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="; |
|
366 | 366 | }; |
|
367 | 367 | }; |
|
368 | 368 | "builtin-modules-1.1.1" = { |
|
369 | 369 | name = "builtin-modules"; |
|
370 | 370 | packageName = "builtin-modules"; |
|
371 | 371 | version = "1.1.1"; |
|
372 | 372 | src = fetchurl { |
|
373 | 373 | url = "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz"; |
|
374 | 374 | sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f"; |
|
375 | 375 | }; |
|
376 | 376 | }; |
|
377 | 377 | "builtins-1.0.3" = { |
|
378 | 378 | name = "builtins"; |
|
379 | 379 | packageName = "builtins"; |
|
380 | 380 | version = "1.0.3"; |
|
381 | 381 | src = fetchurl { |
|
382 | 382 | url = "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz"; |
|
383 | 383 | sha1 = "cb94faeb61c8696451db36534e1422f94f0aee88"; |
|
384 | 384 | }; |
|
385 | 385 | }; |
|
386 | 386 | "caseless-0.12.0" = { |
|
387 | 387 | name = "caseless"; |
|
388 | 388 | packageName = "caseless"; |
|
389 | 389 | version = "0.12.0"; |
|
390 | 390 | src = fetchurl { |
|
391 | 391 | url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz"; |
|
392 | 392 | sha1 = "1b681c21ff84033c826543090689420d187151dc"; |
|
393 | 393 | }; |
|
394 | 394 | }; |
|
395 | 395 | "chalk-0.5.1" = { |
|
396 | 396 | name = "chalk"; |
|
397 | 397 | packageName = "chalk"; |
|
398 | 398 | version = "0.5.1"; |
|
399 | 399 | src = fetchurl { |
|
400 | 400 | url = "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz"; |
|
401 | 401 | sha1 = "663b3a648b68b55d04690d49167aa837858f2174"; |
|
402 | 402 | }; |
|
403 | 403 | }; |
|
404 | 404 | "chalk-1.1.3" = { |
|
405 | 405 | name = "chalk"; |
|
406 | 406 | packageName = "chalk"; |
|
407 | 407 | version = "1.1.3"; |
|
408 | 408 | src = fetchurl { |
|
409 | 409 | url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"; |
|
410 | 410 | sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98"; |
|
411 | 411 | }; |
|
412 | 412 | }; |
|
413 | 413 | "cli-1.0.1" = { |
|
414 | 414 | name = "cli"; |
|
415 | 415 | packageName = "cli"; |
|
416 | 416 | version = "1.0.1"; |
|
417 | 417 | src = fetchurl { |
|
418 | 418 | url = "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz"; |
|
419 | 419 | sha1 = "22817534f24bfa4950c34d532d48ecbc621b8c14"; |
|
420 | 420 | }; |
|
421 | 421 | }; |
|
422 | 422 | "clipboard-2.0.1" = { |
|
423 | 423 | name = "clipboard"; |
|
424 | 424 | packageName = "clipboard"; |
|
425 | 425 | version = "2.0.1"; |
|
426 | 426 | src = fetchurl { |
|
427 | 427 | url = "https://registry.npmjs.org/clipboard/-/clipboard-2.0.1.tgz"; |
|
428 | 428 | sha512 = "7yhQBmtN+uYZmfRjjVjKa0dZdWuabzpSKGtyQZN+9C8xlC788SSJjOHWh7tzurfwTqTD5UDYAhIv5fRJg3sHjQ=="; |
|
429 | 429 | }; |
|
430 | 430 | }; |
|
431 | 431 | "clone-1.0.4" = { |
|
432 | 432 | name = "clone"; |
|
433 | 433 | packageName = "clone"; |
|
434 | 434 | version = "1.0.4"; |
|
435 | 435 | src = fetchurl { |
|
436 | 436 | url = "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz"; |
|
437 | 437 | sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e"; |
|
438 | 438 | }; |
|
439 | 439 | }; |
|
440 | 440 | "co-4.6.0" = { |
|
441 | 441 | name = "co"; |
|
442 | 442 | packageName = "co"; |
|
443 | 443 | version = "4.6.0"; |
|
444 | 444 | src = fetchurl { |
|
445 | 445 | url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz"; |
|
446 | 446 | sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"; |
|
447 | 447 | }; |
|
448 | 448 | }; |
|
449 | 449 | "code-point-at-1.1.0" = { |
|
450 | 450 | name = "code-point-at"; |
|
451 | 451 | packageName = "code-point-at"; |
|
452 | 452 | version = "1.1.0"; |
|
453 | 453 | src = fetchurl { |
|
454 | 454 | url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"; |
|
455 | 455 | sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"; |
|
456 | 456 | }; |
|
457 | 457 | }; |
|
458 | 458 | "coffee-script-1.3.3" = { |
|
459 | 459 | name = "coffee-script"; |
|
460 | 460 | packageName = "coffee-script"; |
|
461 | 461 | version = "1.3.3"; |
|
462 | 462 | src = fetchurl { |
|
463 | 463 | url = "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz"; |
|
464 | 464 | sha1 = "150d6b4cb522894369efed6a2101c20bc7f4a4f4"; |
|
465 | 465 | }; |
|
466 | 466 | }; |
|
467 | 467 | "colors-0.6.2" = { |
|
468 | 468 | name = "colors"; |
|
469 | 469 | packageName = "colors"; |
|
470 | 470 | version = "0.6.2"; |
|
471 | 471 | src = fetchurl { |
|
472 | 472 | url = "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz"; |
|
473 | 473 | sha1 = "2423fe6678ac0c5dae8852e5d0e5be08c997abcc"; |
|
474 | 474 | }; |
|
475 | 475 | }; |
|
476 | 476 | "colors-1.0.3" = { |
|
477 | 477 | name = "colors"; |
|
478 | 478 | packageName = "colors"; |
|
479 | 479 | version = "1.0.3"; |
|
480 | 480 | src = fetchurl { |
|
481 | 481 | url = "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz"; |
|
482 | 482 | sha1 = "0433f44d809680fdeb60ed260f1b0c262e82a40b"; |
|
483 | 483 | }; |
|
484 | 484 | }; |
|
485 |
"combined-stream-1.0. |
|
|
485 | "combined-stream-1.0.7" = { | |
|
486 | 486 | name = "combined-stream"; |
|
487 | 487 | packageName = "combined-stream"; |
|
488 |
version = "1.0. |
|
|
489 | src = fetchurl { | |
|
490 |
url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0. |
|
|
491 | sha1 = "723e7df6e801ac5613113a7e445a9b69cb632818"; | |
|
488 | version = "1.0.7"; | |
|
489 | src = fetchurl { | |
|
490 | url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz"; | |
|
491 | sha512 = "brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w=="; | |
|
492 | 492 | }; |
|
493 | 493 | }; |
|
494 | 494 | "command-line-args-3.0.5" = { |
|
495 | 495 | name = "command-line-args"; |
|
496 | 496 | packageName = "command-line-args"; |
|
497 | 497 | version = "3.0.5"; |
|
498 | 498 | src = fetchurl { |
|
499 | 499 | url = "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz"; |
|
500 | 500 | sha1 = "5bd4ad45e7983e5c1344918e40280ee2693c5ac0"; |
|
501 | 501 | }; |
|
502 | 502 | }; |
|
503 | 503 | "command-line-usage-3.0.8" = { |
|
504 | 504 | name = "command-line-usage"; |
|
505 | 505 | packageName = "command-line-usage"; |
|
506 | 506 | version = "3.0.8"; |
|
507 | 507 | src = fetchurl { |
|
508 | 508 | url = "https://registry.npmjs.org/command-line-usage/-/command-line-usage-3.0.8.tgz"; |
|
509 | 509 | sha1 = "b6a20978c1b383477f5c11a529428b880bfe0f4d"; |
|
510 | 510 | }; |
|
511 | 511 | }; |
|
512 | 512 | "concat-map-0.0.1" = { |
|
513 | 513 | name = "concat-map"; |
|
514 | 514 | packageName = "concat-map"; |
|
515 | 515 | version = "0.0.1"; |
|
516 | 516 | src = fetchurl { |
|
517 | 517 | url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"; |
|
518 | 518 | sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b"; |
|
519 | 519 | }; |
|
520 | 520 | }; |
|
521 | 521 | "concat-stream-1.6.2" = { |
|
522 | 522 | name = "concat-stream"; |
|
523 | 523 | packageName = "concat-stream"; |
|
524 | 524 | version = "1.6.2"; |
|
525 | 525 | src = fetchurl { |
|
526 | 526 | url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz"; |
|
527 | 527 | sha512 = "27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw=="; |
|
528 | 528 | }; |
|
529 | 529 | }; |
|
530 |
"config-chain-1.1.1 |
|
|
530 | "config-chain-1.1.12" = { | |
|
531 | 531 | name = "config-chain"; |
|
532 | 532 | packageName = "config-chain"; |
|
533 |
version = "1.1.1 |
|
|
534 | src = fetchurl { | |
|
535 |
url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.1 |
|
|
536 | sha1 = "aba09747dfbe4c3e70e766a6e41586e1859fc6f2"; | |
|
533 | version = "1.1.12"; | |
|
534 | src = fetchurl { | |
|
535 | url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz"; | |
|
536 | sha512 = "a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA=="; | |
|
537 | 537 | }; |
|
538 | 538 | }; |
|
539 | 539 | "console-browserify-1.1.0" = { |
|
540 | 540 | name = "console-browserify"; |
|
541 | 541 | packageName = "console-browserify"; |
|
542 | 542 | version = "1.1.0"; |
|
543 | 543 | src = fetchurl { |
|
544 | 544 | url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz"; |
|
545 | 545 | sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10"; |
|
546 | 546 | }; |
|
547 | 547 | }; |
|
548 | 548 | "console-control-strings-1.1.0" = { |
|
549 | 549 | name = "console-control-strings"; |
|
550 | 550 | packageName = "console-control-strings"; |
|
551 | 551 | version = "1.1.0"; |
|
552 | 552 | src = fetchurl { |
|
553 | 553 | url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"; |
|
554 | 554 | sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e"; |
|
555 | 555 | }; |
|
556 | 556 | }; |
|
557 | 557 | "core-js-2.5.7" = { |
|
558 | 558 | name = "core-js"; |
|
559 | 559 | packageName = "core-js"; |
|
560 | 560 | version = "2.5.7"; |
|
561 | 561 | src = fetchurl { |
|
562 | 562 | url = "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz"; |
|
563 | 563 | sha512 = "RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="; |
|
564 | 564 | }; |
|
565 | 565 | }; |
|
566 | 566 | "core-util-is-1.0.2" = { |
|
567 | 567 | name = "core-util-is"; |
|
568 | 568 | packageName = "core-util-is"; |
|
569 | 569 | version = "1.0.2"; |
|
570 | 570 | src = fetchurl { |
|
571 | 571 | url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"; |
|
572 | 572 | sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7"; |
|
573 | 573 | }; |
|
574 | 574 | }; |
|
575 | 575 | "crisper-1.2.0" = { |
|
576 | 576 | name = "crisper"; |
|
577 | 577 | packageName = "crisper"; |
|
578 | 578 | version = "1.2.0"; |
|
579 | 579 | src = fetchurl { |
|
580 | 580 | url = "https://registry.npmjs.org/crisper/-/crisper-1.2.0.tgz"; |
|
581 | 581 | sha1 = "9a91f597d71f6110294e076ad44dbb3408568e46"; |
|
582 | 582 | }; |
|
583 | 583 | }; |
|
584 | 584 | "crisper-2.1.1" = { |
|
585 | 585 | name = "crisper"; |
|
586 | 586 | packageName = "crisper"; |
|
587 | 587 | version = "2.1.1"; |
|
588 | 588 | src = fetchurl { |
|
589 | 589 | url = "https://registry.npmjs.org/crisper/-/crisper-2.1.1.tgz"; |
|
590 | 590 | sha512 = "yxfj9nTbFunDASztAxVF8hCPwaZBvTjayNzG3YL/VVQfQaKBXX2+TM3p1xB1Pxd8RYeDQJkJIQRwM3FQSIa+pw=="; |
|
591 | 591 | }; |
|
592 | 592 | }; |
|
593 | 593 | "cryptiles-2.0.5" = { |
|
594 | 594 | name = "cryptiles"; |
|
595 | 595 | packageName = "cryptiles"; |
|
596 | 596 | version = "2.0.5"; |
|
597 | 597 | src = fetchurl { |
|
598 | 598 | url = "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz"; |
|
599 | 599 | sha1 = "3bdfecdc608147c1c67202fa291e7dca59eaa3b8"; |
|
600 | 600 | }; |
|
601 | 601 | }; |
|
602 | 602 | "cycle-1.0.3" = { |
|
603 | 603 | name = "cycle"; |
|
604 | 604 | packageName = "cycle"; |
|
605 | 605 | version = "1.0.3"; |
|
606 | 606 | src = fetchurl { |
|
607 | 607 | url = "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz"; |
|
608 | 608 | sha1 = "21e80b2be8580f98b468f379430662b046c34ad2"; |
|
609 | 609 | }; |
|
610 | 610 | }; |
|
611 | 611 | "dashdash-1.14.1" = { |
|
612 | 612 | name = "dashdash"; |
|
613 | 613 | packageName = "dashdash"; |
|
614 | 614 | version = "1.14.1"; |
|
615 | 615 | src = fetchurl { |
|
616 | 616 | url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz"; |
|
617 | 617 | sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"; |
|
618 | 618 | }; |
|
619 | 619 | }; |
|
620 | 620 | "date-now-0.1.4" = { |
|
621 | 621 | name = "date-now"; |
|
622 | 622 | packageName = "date-now"; |
|
623 | 623 | version = "0.1.4"; |
|
624 | 624 | src = fetchurl { |
|
625 | 625 | url = "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz"; |
|
626 | 626 | sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b"; |
|
627 | 627 | }; |
|
628 | 628 | }; |
|
629 | 629 | "dateformat-1.0.2-1.2.3" = { |
|
630 | 630 | name = "dateformat"; |
|
631 | 631 | packageName = "dateformat"; |
|
632 | 632 | version = "1.0.2-1.2.3"; |
|
633 | 633 | src = fetchurl { |
|
634 | 634 | url = "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz"; |
|
635 | 635 | sha1 = "b0220c02de98617433b72851cf47de3df2cdbee9"; |
|
636 | 636 | }; |
|
637 | 637 | }; |
|
638 | 638 | "debug-0.7.4" = { |
|
639 | 639 | name = "debug"; |
|
640 | 640 | packageName = "debug"; |
|
641 | 641 | version = "0.7.4"; |
|
642 | 642 | src = fetchurl { |
|
643 | 643 | url = "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz"; |
|
644 | 644 | sha1 = "06e1ea8082c2cb14e39806e22e2f6f757f92af39"; |
|
645 | 645 | }; |
|
646 | 646 | }; |
|
647 | 647 | "debug-2.6.9" = { |
|
648 | 648 | name = "debug"; |
|
649 | 649 | packageName = "debug"; |
|
650 | 650 | version = "2.6.9"; |
|
651 | 651 | src = fetchurl { |
|
652 | 652 | url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"; |
|
653 | 653 | sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="; |
|
654 | 654 | }; |
|
655 | 655 | }; |
|
656 | 656 | "deep-extend-0.4.2" = { |
|
657 | 657 | name = "deep-extend"; |
|
658 | 658 | packageName = "deep-extend"; |
|
659 | 659 | version = "0.4.2"; |
|
660 | 660 | src = fetchurl { |
|
661 | 661 | url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz"; |
|
662 | 662 | sha1 = "48b699c27e334bf89f10892be432f6e4c7d34a7f"; |
|
663 | 663 | }; |
|
664 | 664 | }; |
|
665 | 665 | "deep-is-0.1.3" = { |
|
666 | 666 | name = "deep-is"; |
|
667 | 667 | packageName = "deep-is"; |
|
668 | 668 | version = "0.1.3"; |
|
669 | 669 | src = fetchurl { |
|
670 | 670 | url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz"; |
|
671 | 671 | sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34"; |
|
672 | 672 | }; |
|
673 | 673 | }; |
|
674 | 674 | "delayed-stream-1.0.0" = { |
|
675 | 675 | name = "delayed-stream"; |
|
676 | 676 | packageName = "delayed-stream"; |
|
677 | 677 | version = "1.0.0"; |
|
678 | 678 | src = fetchurl { |
|
679 | 679 | url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"; |
|
680 | 680 | sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619"; |
|
681 | 681 | }; |
|
682 | 682 | }; |
|
683 | 683 | "delegate-3.2.0" = { |
|
684 | 684 | name = "delegate"; |
|
685 | 685 | packageName = "delegate"; |
|
686 | 686 | version = "3.2.0"; |
|
687 | 687 | src = fetchurl { |
|
688 | 688 | url = "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz"; |
|
689 | 689 | sha512 = "IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="; |
|
690 | 690 | }; |
|
691 | 691 | }; |
|
692 | 692 | "delegates-1.0.0" = { |
|
693 | 693 | name = "delegates"; |
|
694 | 694 | packageName = "delegates"; |
|
695 | 695 | version = "1.0.0"; |
|
696 | 696 | src = fetchurl { |
|
697 | 697 | url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"; |
|
698 | 698 | sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a"; |
|
699 | 699 | }; |
|
700 | 700 | }; |
|
701 | 701 | "doctrine-0.7.2" = { |
|
702 | 702 | name = "doctrine"; |
|
703 | 703 | packageName = "doctrine"; |
|
704 | 704 | version = "0.7.2"; |
|
705 | 705 | src = fetchurl { |
|
706 | 706 | url = "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz"; |
|
707 | 707 | sha1 = "7cb860359ba3be90e040b26b729ce4bfa654c523"; |
|
708 | 708 | }; |
|
709 | 709 | }; |
|
710 | 710 | "dom-serializer-0.1.0" = { |
|
711 | 711 | name = "dom-serializer"; |
|
712 | 712 | packageName = "dom-serializer"; |
|
713 | 713 | version = "0.1.0"; |
|
714 | 714 | src = fetchurl { |
|
715 | 715 | url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz"; |
|
716 | 716 | sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82"; |
|
717 | 717 | }; |
|
718 | 718 | }; |
|
719 | 719 | "dom5-1.1.0" = { |
|
720 | 720 | name = "dom5"; |
|
721 | 721 | packageName = "dom5"; |
|
722 | 722 | version = "1.1.0"; |
|
723 | 723 | src = fetchurl { |
|
724 | 724 | url = "https://registry.npmjs.org/dom5/-/dom5-1.1.0.tgz"; |
|
725 | 725 | sha1 = "3a0c7700c083ab4c4d26938a78b0f0c6dcc37794"; |
|
726 | 726 | }; |
|
727 | 727 | }; |
|
728 | 728 | "dom5-1.3.6" = { |
|
729 | 729 | name = "dom5"; |
|
730 | 730 | packageName = "dom5"; |
|
731 | 731 | version = "1.3.6"; |
|
732 | 732 | src = fetchurl { |
|
733 | 733 | url = "https://registry.npmjs.org/dom5/-/dom5-1.3.6.tgz"; |
|
734 | 734 | sha1 = "a7088a9fc5f3b08dc9f6eda4c7abaeb241945e0d"; |
|
735 | 735 | }; |
|
736 | 736 | }; |
|
737 | 737 | "domelementtype-1.1.3" = { |
|
738 | 738 | name = "domelementtype"; |
|
739 | 739 | packageName = "domelementtype"; |
|
740 | 740 | version = "1.1.3"; |
|
741 | 741 | src = fetchurl { |
|
742 | 742 | url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz"; |
|
743 | 743 | sha1 = "bd28773e2642881aec51544924299c5cd822185b"; |
|
744 | 744 | }; |
|
745 | 745 | }; |
|
746 | 746 | "domelementtype-1.3.0" = { |
|
747 | 747 | name = "domelementtype"; |
|
748 | 748 | packageName = "domelementtype"; |
|
749 | 749 | version = "1.3.0"; |
|
750 | 750 | src = fetchurl { |
|
751 | 751 | url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz"; |
|
752 | 752 | sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2"; |
|
753 | 753 | }; |
|
754 | 754 | }; |
|
755 | 755 | "domhandler-2.3.0" = { |
|
756 | 756 | name = "domhandler"; |
|
757 | 757 | packageName = "domhandler"; |
|
758 | 758 | version = "2.3.0"; |
|
759 | 759 | src = fetchurl { |
|
760 | 760 | url = "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz"; |
|
761 | 761 | sha1 = "2de59a0822d5027fabff6f032c2b25a2a8abe738"; |
|
762 | 762 | }; |
|
763 | 763 | }; |
|
764 | 764 | "domutils-1.5.1" = { |
|
765 | 765 | name = "domutils"; |
|
766 | 766 | packageName = "domutils"; |
|
767 | 767 | version = "1.5.1"; |
|
768 | 768 | src = fetchurl { |
|
769 | 769 | url = "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz"; |
|
770 | 770 | sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf"; |
|
771 | 771 | }; |
|
772 | 772 | }; |
|
773 | 773 | "ecc-jsbn-0.1.2" = { |
|
774 | 774 | name = "ecc-jsbn"; |
|
775 | 775 | packageName = "ecc-jsbn"; |
|
776 | 776 | version = "0.1.2"; |
|
777 | 777 | src = fetchurl { |
|
778 | 778 | url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz"; |
|
779 | 779 | sha1 = "3a83a904e54353287874c564b7549386849a98c9"; |
|
780 | 780 | }; |
|
781 | 781 | }; |
|
782 | 782 | "entities-1.0.0" = { |
|
783 | 783 | name = "entities"; |
|
784 | 784 | packageName = "entities"; |
|
785 | 785 | version = "1.0.0"; |
|
786 | 786 | src = fetchurl { |
|
787 | 787 | url = "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz"; |
|
788 | 788 | sha1 = "b2987aa3821347fcde642b24fdfc9e4fb712bf26"; |
|
789 | 789 | }; |
|
790 | 790 | }; |
|
791 | 791 | "entities-1.1.1" = { |
|
792 | 792 | name = "entities"; |
|
793 | 793 | packageName = "entities"; |
|
794 | 794 | version = "1.1.1"; |
|
795 | 795 | src = fetchurl { |
|
796 | 796 | url = "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz"; |
|
797 | 797 | sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"; |
|
798 | 798 | }; |
|
799 | 799 | }; |
|
800 | 800 | "errno-0.1.7" = { |
|
801 | 801 | name = "errno"; |
|
802 | 802 | packageName = "errno"; |
|
803 | 803 | version = "0.1.7"; |
|
804 | 804 | src = fetchurl { |
|
805 | 805 | url = "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz"; |
|
806 | 806 | sha512 = "MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg=="; |
|
807 | 807 | }; |
|
808 | 808 | }; |
|
809 | 809 | "es6-promise-2.3.0" = { |
|
810 | 810 | name = "es6-promise"; |
|
811 | 811 | packageName = "es6-promise"; |
|
812 | 812 | version = "2.3.0"; |
|
813 | 813 | src = fetchurl { |
|
814 | 814 | url = "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz"; |
|
815 | 815 | sha1 = "96edb9f2fdb01995822b263dd8aadab6748181bc"; |
|
816 | 816 | }; |
|
817 | 817 | }; |
|
818 |
"es6-promise-4.2. |
|
|
818 | "es6-promise-4.2.5" = { | |
|
819 | 819 | name = "es6-promise"; |
|
820 | 820 | packageName = "es6-promise"; |
|
821 |
version = "4.2. |
|
|
822 | src = fetchurl { | |
|
823 |
url = "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2. |
|
|
824 | sha512 = "/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ=="; | |
|
821 | version = "4.2.5"; | |
|
822 | src = fetchurl { | |
|
823 | url = "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz"; | |
|
824 | sha512 = "n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg=="; | |
|
825 | 825 | }; |
|
826 | 826 | }; |
|
827 | 827 | "escape-string-regexp-1.0.5" = { |
|
828 | 828 | name = "escape-string-regexp"; |
|
829 | 829 | packageName = "escape-string-regexp"; |
|
830 | 830 | version = "1.0.5"; |
|
831 | 831 | src = fetchurl { |
|
832 | 832 | url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"; |
|
833 | 833 | sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"; |
|
834 | 834 | }; |
|
835 | 835 | }; |
|
836 | 836 | "escodegen-1.11.0" = { |
|
837 | 837 | name = "escodegen"; |
|
838 | 838 | packageName = "escodegen"; |
|
839 | 839 | version = "1.11.0"; |
|
840 | 840 | src = fetchurl { |
|
841 | 841 | url = "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz"; |
|
842 | 842 | sha512 = "IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw=="; |
|
843 | 843 | }; |
|
844 | 844 | }; |
|
845 | 845 | "espree-3.5.4" = { |
|
846 | 846 | name = "espree"; |
|
847 | 847 | packageName = "espree"; |
|
848 | 848 | version = "3.5.4"; |
|
849 | 849 | src = fetchurl { |
|
850 | 850 | url = "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz"; |
|
851 | 851 | sha512 = "yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A=="; |
|
852 | 852 | }; |
|
853 | 853 | }; |
|
854 | 854 | "esprima-1.0.4" = { |
|
855 | 855 | name = "esprima"; |
|
856 | 856 | packageName = "esprima"; |
|
857 | 857 | version = "1.0.4"; |
|
858 | 858 | src = fetchurl { |
|
859 | 859 | url = "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz"; |
|
860 | 860 | sha1 = "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad"; |
|
861 | 861 | }; |
|
862 | 862 | }; |
|
863 | 863 | "esprima-3.1.3" = { |
|
864 | 864 | name = "esprima"; |
|
865 | 865 | packageName = "esprima"; |
|
866 | 866 | version = "3.1.3"; |
|
867 | 867 | src = fetchurl { |
|
868 | 868 | url = "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz"; |
|
869 | 869 | sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633"; |
|
870 | 870 | }; |
|
871 | 871 | }; |
|
872 | 872 | "estraverse-3.1.0" = { |
|
873 | 873 | name = "estraverse"; |
|
874 | 874 | packageName = "estraverse"; |
|
875 | 875 | version = "3.1.0"; |
|
876 | 876 | src = fetchurl { |
|
877 | 877 | url = "https://registry.npmjs.org/estraverse/-/estraverse-3.1.0.tgz"; |
|
878 | 878 | sha1 = "15e28a446b8b82bc700ccc8b96c78af4da0d6cba"; |
|
879 | 879 | }; |
|
880 | 880 | }; |
|
881 | 881 | "estraverse-4.2.0" = { |
|
882 | 882 | name = "estraverse"; |
|
883 | 883 | packageName = "estraverse"; |
|
884 | 884 | version = "4.2.0"; |
|
885 | 885 | src = fetchurl { |
|
886 | 886 | url = "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz"; |
|
887 | 887 | sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13"; |
|
888 | 888 | }; |
|
889 | 889 | }; |
|
890 | 890 | "esutils-1.1.6" = { |
|
891 | 891 | name = "esutils"; |
|
892 | 892 | packageName = "esutils"; |
|
893 | 893 | version = "1.1.6"; |
|
894 | 894 | src = fetchurl { |
|
895 | 895 | url = "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz"; |
|
896 | 896 | sha1 = "c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375"; |
|
897 | 897 | }; |
|
898 | 898 | }; |
|
899 | 899 | "esutils-2.0.2" = { |
|
900 | 900 | name = "esutils"; |
|
901 | 901 | packageName = "esutils"; |
|
902 | 902 | version = "2.0.2"; |
|
903 | 903 | src = fetchurl { |
|
904 | 904 | url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz"; |
|
905 | 905 | sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"; |
|
906 | 906 | }; |
|
907 | 907 | }; |
|
908 | 908 | "eventemitter2-0.4.14" = { |
|
909 | 909 | name = "eventemitter2"; |
|
910 | 910 | packageName = "eventemitter2"; |
|
911 | 911 | version = "0.4.14"; |
|
912 | 912 | src = fetchurl { |
|
913 | 913 | url = "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz"; |
|
914 | 914 | sha1 = "8f61b75cde012b2e9eb284d4545583b5643b61ab"; |
|
915 | 915 | }; |
|
916 | 916 | }; |
|
917 | 917 | "exit-0.1.2" = { |
|
918 | 918 | name = "exit"; |
|
919 | 919 | packageName = "exit"; |
|
920 | 920 | version = "0.1.2"; |
|
921 | 921 | src = fetchurl { |
|
922 | 922 | url = "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"; |
|
923 | 923 | sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c"; |
|
924 | 924 | }; |
|
925 | 925 | }; |
|
926 | 926 | "extend-3.0.2" = { |
|
927 | 927 | name = "extend"; |
|
928 | 928 | packageName = "extend"; |
|
929 | 929 | version = "3.0.2"; |
|
930 | 930 | src = fetchurl { |
|
931 | 931 | url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz"; |
|
932 | 932 | sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="; |
|
933 | 933 | }; |
|
934 | 934 | }; |
|
935 | 935 | "extract-zip-1.6.7" = { |
|
936 | 936 | name = "extract-zip"; |
|
937 | 937 | packageName = "extract-zip"; |
|
938 | 938 | version = "1.6.7"; |
|
939 | 939 | src = fetchurl { |
|
940 | 940 | url = "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz"; |
|
941 | 941 | sha1 = "a840b4b8af6403264c8db57f4f1a74333ef81fe9"; |
|
942 | 942 | }; |
|
943 | 943 | }; |
|
944 | 944 | "extsprintf-1.3.0" = { |
|
945 | 945 | name = "extsprintf"; |
|
946 | 946 | packageName = "extsprintf"; |
|
947 | 947 | version = "1.3.0"; |
|
948 | 948 | src = fetchurl { |
|
949 | 949 | url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz"; |
|
950 | 950 | sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05"; |
|
951 | 951 | }; |
|
952 | 952 | }; |
|
953 | 953 | "eyes-0.1.8" = { |
|
954 | 954 | name = "eyes"; |
|
955 | 955 | packageName = "eyes"; |
|
956 | 956 | version = "0.1.8"; |
|
957 | 957 | src = fetchurl { |
|
958 | 958 | url = "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz"; |
|
959 | 959 | sha1 = "62cf120234c683785d902348a800ef3e0cc20bc0"; |
|
960 | 960 | }; |
|
961 | 961 | }; |
|
962 | 962 | "fast-levenshtein-2.0.6" = { |
|
963 | 963 | name = "fast-levenshtein"; |
|
964 | 964 | packageName = "fast-levenshtein"; |
|
965 | 965 | version = "2.0.6"; |
|
966 | 966 | src = fetchurl { |
|
967 | 967 | url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"; |
|
968 | 968 | sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917"; |
|
969 | 969 | }; |
|
970 | 970 | }; |
|
971 | 971 | "favico.js-0.3.10" = { |
|
972 | 972 | name = "favico.js"; |
|
973 | 973 | packageName = "favico.js"; |
|
974 | 974 | version = "0.3.10"; |
|
975 | 975 | src = fetchurl { |
|
976 | 976 | url = "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz"; |
|
977 | 977 | sha1 = "80586e27a117f24a8d51c18a99bdc714d4339301"; |
|
978 | 978 | }; |
|
979 | 979 | }; |
|
980 | 980 | "faye-websocket-0.4.4" = { |
|
981 | 981 | name = "faye-websocket"; |
|
982 | 982 | packageName = "faye-websocket"; |
|
983 | 983 | version = "0.4.4"; |
|
984 | 984 | src = fetchurl { |
|
985 | 985 | url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz"; |
|
986 | 986 | sha1 = "c14c5b3bf14d7417ffbfd990c0a7495cd9f337bc"; |
|
987 | 987 | }; |
|
988 | 988 | }; |
|
989 | 989 | "fd-slicer-1.0.1" = { |
|
990 | 990 | name = "fd-slicer"; |
|
991 | 991 | packageName = "fd-slicer"; |
|
992 | 992 | version = "1.0.1"; |
|
993 | 993 | src = fetchurl { |
|
994 | 994 | url = "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz"; |
|
995 | 995 | sha1 = "8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"; |
|
996 | 996 | }; |
|
997 | 997 | }; |
|
998 | 998 | "feature-detect-es6-1.5.0" = { |
|
999 | 999 | name = "feature-detect-es6"; |
|
1000 | 1000 | packageName = "feature-detect-es6"; |
|
1001 | 1001 | version = "1.5.0"; |
|
1002 | 1002 | src = fetchurl { |
|
1003 | 1003 | url = "https://registry.npmjs.org/feature-detect-es6/-/feature-detect-es6-1.5.0.tgz"; |
|
1004 | 1004 | sha512 = "DzWPIGzTnfp3/KK1d/YPfmgLqeDju9F2DQYBL35VusgSApcA7XGqVtXfR4ETOOFEzdFJ3J7zh0Gkk011TiA4uQ=="; |
|
1005 | 1005 | }; |
|
1006 | 1006 | }; |
|
1007 | 1007 | "file-sync-cmp-0.1.1" = { |
|
1008 | 1008 | name = "file-sync-cmp"; |
|
1009 | 1009 | packageName = "file-sync-cmp"; |
|
1010 | 1010 | version = "0.1.1"; |
|
1011 | 1011 | src = fetchurl { |
|
1012 | 1012 | url = "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz"; |
|
1013 | 1013 | sha1 = "a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b"; |
|
1014 | 1014 | }; |
|
1015 | 1015 | }; |
|
1016 | 1016 | "find-replace-1.0.3" = { |
|
1017 | 1017 | name = "find-replace"; |
|
1018 | 1018 | packageName = "find-replace"; |
|
1019 | 1019 | version = "1.0.3"; |
|
1020 | 1020 | src = fetchurl { |
|
1021 | 1021 | url = "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz"; |
|
1022 | 1022 | sha1 = "b88e7364d2d9c959559f388c66670d6130441fa0"; |
|
1023 | 1023 | }; |
|
1024 | 1024 | }; |
|
1025 | 1025 | "findit-2.0.0" = { |
|
1026 | 1026 | name = "findit"; |
|
1027 | 1027 | packageName = "findit"; |
|
1028 | 1028 | version = "2.0.0"; |
|
1029 | 1029 | src = fetchurl { |
|
1030 | 1030 | url = "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz"; |
|
1031 | 1031 | sha1 = "6509f0126af4c178551cfa99394e032e13a4d56e"; |
|
1032 | 1032 | }; |
|
1033 | 1033 | }; |
|
1034 | 1034 | "findup-sync-0.1.3" = { |
|
1035 | 1035 | name = "findup-sync"; |
|
1036 | 1036 | packageName = "findup-sync"; |
|
1037 | 1037 | version = "0.1.3"; |
|
1038 | 1038 | src = fetchurl { |
|
1039 | 1039 | url = "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz"; |
|
1040 | 1040 | sha1 = "7f3e7a97b82392c653bf06589bd85190e93c3683"; |
|
1041 | 1041 | }; |
|
1042 | 1042 | }; |
|
1043 | 1043 | "foreachasync-3.0.0" = { |
|
1044 | 1044 | name = "foreachasync"; |
|
1045 | 1045 | packageName = "foreachasync"; |
|
1046 | 1046 | version = "3.0.0"; |
|
1047 | 1047 | src = fetchurl { |
|
1048 | 1048 | url = "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz"; |
|
1049 | 1049 | sha1 = "5502987dc8714be3392097f32e0071c9dee07cf6"; |
|
1050 | 1050 | }; |
|
1051 | 1051 | }; |
|
1052 | 1052 | "forever-agent-0.6.1" = { |
|
1053 | 1053 | name = "forever-agent"; |
|
1054 | 1054 | packageName = "forever-agent"; |
|
1055 | 1055 | version = "0.6.1"; |
|
1056 | 1056 | src = fetchurl { |
|
1057 | 1057 | url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"; |
|
1058 | 1058 | sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"; |
|
1059 | 1059 | }; |
|
1060 | 1060 | }; |
|
1061 | 1061 | "form-data-2.1.4" = { |
|
1062 | 1062 | name = "form-data"; |
|
1063 | 1063 | packageName = "form-data"; |
|
1064 | 1064 | version = "2.1.4"; |
|
1065 | 1065 | src = fetchurl { |
|
1066 | 1066 | url = "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz"; |
|
1067 | 1067 | sha1 = "33c183acf193276ecaa98143a69e94bfee1750d1"; |
|
1068 | 1068 | }; |
|
1069 | 1069 | }; |
|
1070 | 1070 | "fs-extra-0.6.4" = { |
|
1071 | 1071 | name = "fs-extra"; |
|
1072 | 1072 | packageName = "fs-extra"; |
|
1073 | 1073 | version = "0.6.4"; |
|
1074 | 1074 | src = fetchurl { |
|
1075 | 1075 | url = "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz"; |
|
1076 | 1076 | sha1 = "f46f0c75b7841f8d200b3348cd4d691d5a099d15"; |
|
1077 | 1077 | }; |
|
1078 | 1078 | }; |
|
1079 | 1079 | "fs-extra-1.0.0" = { |
|
1080 | 1080 | name = "fs-extra"; |
|
1081 | 1081 | packageName = "fs-extra"; |
|
1082 | 1082 | version = "1.0.0"; |
|
1083 | 1083 | src = fetchurl { |
|
1084 | 1084 | url = "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz"; |
|
1085 | 1085 | sha1 = "cd3ce5f7e7cb6145883fcae3191e9877f8587950"; |
|
1086 | 1086 | }; |
|
1087 | 1087 | }; |
|
1088 | 1088 | "fs.extra-1.3.2" = { |
|
1089 | 1089 | name = "fs.extra"; |
|
1090 | 1090 | packageName = "fs.extra"; |
|
1091 | 1091 | version = "1.3.2"; |
|
1092 | 1092 | src = fetchurl { |
|
1093 | 1093 | url = "https://registry.npmjs.org/fs.extra/-/fs.extra-1.3.2.tgz"; |
|
1094 | 1094 | sha1 = "dd023f93013bee24531f1b33514c37b20fd93349"; |
|
1095 | 1095 | }; |
|
1096 | 1096 | }; |
|
1097 | 1097 | "fs.realpath-1.0.0" = { |
|
1098 | 1098 | name = "fs.realpath"; |
|
1099 | 1099 | packageName = "fs.realpath"; |
|
1100 | 1100 | version = "1.0.0"; |
|
1101 | 1101 | src = fetchurl { |
|
1102 | 1102 | url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"; |
|
1103 | 1103 | sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f"; |
|
1104 | 1104 | }; |
|
1105 | 1105 | }; |
|
1106 | 1106 | "gauge-2.7.4" = { |
|
1107 | 1107 | name = "gauge"; |
|
1108 | 1108 | packageName = "gauge"; |
|
1109 | 1109 | version = "2.7.4"; |
|
1110 | 1110 | src = fetchurl { |
|
1111 | 1111 | url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz"; |
|
1112 | 1112 | sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7"; |
|
1113 | 1113 | }; |
|
1114 | 1114 | }; |
|
1115 | 1115 | "gaze-0.5.2" = { |
|
1116 | 1116 | name = "gaze"; |
|
1117 | 1117 | packageName = "gaze"; |
|
1118 | 1118 | version = "0.5.2"; |
|
1119 | 1119 | src = fetchurl { |
|
1120 | 1120 | url = "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz"; |
|
1121 | 1121 | sha1 = "40b709537d24d1d45767db5a908689dfe69ac44f"; |
|
1122 | 1122 | }; |
|
1123 | 1123 | }; |
|
1124 | 1124 | "getobject-0.1.0" = { |
|
1125 | 1125 | name = "getobject"; |
|
1126 | 1126 | packageName = "getobject"; |
|
1127 | 1127 | version = "0.1.0"; |
|
1128 | 1128 | src = fetchurl { |
|
1129 | 1129 | url = "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz"; |
|
1130 | 1130 | sha1 = "047a449789fa160d018f5486ed91320b6ec7885c"; |
|
1131 | 1131 | }; |
|
1132 | 1132 | }; |
|
1133 | 1133 | "getpass-0.1.7" = { |
|
1134 | 1134 | name = "getpass"; |
|
1135 | 1135 | packageName = "getpass"; |
|
1136 | 1136 | version = "0.1.7"; |
|
1137 | 1137 | src = fetchurl { |
|
1138 | 1138 | url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz"; |
|
1139 | 1139 | sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa"; |
|
1140 | 1140 | }; |
|
1141 | 1141 | }; |
|
1142 | 1142 | "glob-3.1.21" = { |
|
1143 | 1143 | name = "glob"; |
|
1144 | 1144 | packageName = "glob"; |
|
1145 | 1145 | version = "3.1.21"; |
|
1146 | 1146 | src = fetchurl { |
|
1147 | 1147 | url = "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz"; |
|
1148 | 1148 | sha1 = "d29e0a055dea5138f4d07ed40e8982e83c2066cd"; |
|
1149 | 1149 | }; |
|
1150 | 1150 | }; |
|
1151 | 1151 | "glob-3.2.11" = { |
|
1152 | 1152 | name = "glob"; |
|
1153 | 1153 | packageName = "glob"; |
|
1154 | 1154 | version = "3.2.11"; |
|
1155 | 1155 | src = fetchurl { |
|
1156 | 1156 | url = "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz"; |
|
1157 | 1157 | sha1 = "4a973f635b9190f715d10987d5c00fd2815ebe3d"; |
|
1158 | 1158 | }; |
|
1159 | 1159 | }; |
|
1160 |
"glob-7.1. |
|
|
1160 | "glob-7.1.3" = { | |
|
1161 | 1161 | name = "glob"; |
|
1162 | 1162 | packageName = "glob"; |
|
1163 |
version = "7.1. |
|
|
1164 | src = fetchurl { | |
|
1165 |
url = "https://registry.npmjs.org/glob/-/glob-7.1. |
|
|
1166 | sha512 = "MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ=="; | |
|
1163 | version = "7.1.3"; | |
|
1164 | src = fetchurl { | |
|
1165 | url = "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz"; | |
|
1166 | sha512 = "vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ=="; | |
|
1167 | 1167 | }; |
|
1168 | 1168 | }; |
|
1169 | 1169 | "globule-0.1.0" = { |
|
1170 | 1170 | name = "globule"; |
|
1171 | 1171 | packageName = "globule"; |
|
1172 | 1172 | version = "0.1.0"; |
|
1173 | 1173 | src = fetchurl { |
|
1174 | 1174 | url = "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz"; |
|
1175 | 1175 | sha1 = "d9c8edde1da79d125a151b79533b978676346ae5"; |
|
1176 | 1176 | }; |
|
1177 | 1177 | }; |
|
1178 | 1178 | "good-listener-1.2.2" = { |
|
1179 | 1179 | name = "good-listener"; |
|
1180 | 1180 | packageName = "good-listener"; |
|
1181 | 1181 | version = "1.2.2"; |
|
1182 | 1182 | src = fetchurl { |
|
1183 | 1183 | url = "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz"; |
|
1184 | 1184 | sha1 = "d53b30cdf9313dffb7dc9a0d477096aa6d145c50"; |
|
1185 | 1185 | }; |
|
1186 | 1186 | }; |
|
1187 | 1187 | "graceful-fs-1.2.3" = { |
|
1188 | 1188 | name = "graceful-fs"; |
|
1189 | 1189 | packageName = "graceful-fs"; |
|
1190 | 1190 | version = "1.2.3"; |
|
1191 | 1191 | src = fetchurl { |
|
1192 | 1192 | url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz"; |
|
1193 | 1193 | sha1 = "15a4806a57547cb2d2dbf27f42e89a8c3451b364"; |
|
1194 | 1194 | }; |
|
1195 | 1195 | }; |
|
1196 | 1196 | "graceful-fs-4.1.11" = { |
|
1197 | 1197 | name = "graceful-fs"; |
|
1198 | 1198 | packageName = "graceful-fs"; |
|
1199 | 1199 | version = "4.1.11"; |
|
1200 | 1200 | src = fetchurl { |
|
1201 | 1201 | url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"; |
|
1202 | 1202 | sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"; |
|
1203 | 1203 | }; |
|
1204 | 1204 | }; |
|
1205 | 1205 | "grunt-0.4.5" = { |
|
1206 | 1206 | name = "grunt"; |
|
1207 | 1207 | packageName = "grunt"; |
|
1208 | 1208 | version = "0.4.5"; |
|
1209 | 1209 | src = fetchurl { |
|
1210 | 1210 | url = "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz"; |
|
1211 | 1211 | sha1 = "56937cd5194324adff6d207631832a9d6ba4e7f0"; |
|
1212 | 1212 | }; |
|
1213 | 1213 | }; |
|
1214 | 1214 | "grunt-contrib-concat-0.5.1" = { |
|
1215 | 1215 | name = "grunt-contrib-concat"; |
|
1216 | 1216 | packageName = "grunt-contrib-concat"; |
|
1217 | 1217 | version = "0.5.1"; |
|
1218 | 1218 | src = fetchurl { |
|
1219 | 1219 | url = "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.5.1.tgz"; |
|
1220 | 1220 | sha1 = "953c6efdfdfd2c107ab9c85077f2d4b24d31cd49"; |
|
1221 | 1221 | }; |
|
1222 | 1222 | }; |
|
1223 | 1223 | "grunt-contrib-copy-1.0.0" = { |
|
1224 | 1224 | name = "grunt-contrib-copy"; |
|
1225 | 1225 | packageName = "grunt-contrib-copy"; |
|
1226 | 1226 | version = "1.0.0"; |
|
1227 | 1227 | src = fetchurl { |
|
1228 | 1228 | url = "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz"; |
|
1229 | 1229 | sha1 = "7060c6581e904b8ab0d00f076e0a8f6e3e7c3573"; |
|
1230 | 1230 | }; |
|
1231 | 1231 | }; |
|
1232 | 1232 | "grunt-contrib-jshint-0.12.0" = { |
|
1233 | 1233 | name = "grunt-contrib-jshint"; |
|
1234 | 1234 | packageName = "grunt-contrib-jshint"; |
|
1235 | 1235 | version = "0.12.0"; |
|
1236 | 1236 | src = fetchurl { |
|
1237 | 1237 | url = "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.12.0.tgz"; |
|
1238 | 1238 | sha1 = "f6b2f06fc715264837a7ab6c69a1ce1a689c2c29"; |
|
1239 | 1239 | }; |
|
1240 | 1240 | }; |
|
1241 | 1241 | "grunt-contrib-less-1.4.1" = { |
|
1242 | 1242 | name = "grunt-contrib-less"; |
|
1243 | 1243 | packageName = "grunt-contrib-less"; |
|
1244 | 1244 | version = "1.4.1"; |
|
1245 | 1245 | src = fetchurl { |
|
1246 | 1246 | url = "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-1.4.1.tgz"; |
|
1247 | 1247 | sha1 = "3bbdec0b75d12ceaa55d62943625c0b0861cdf6f"; |
|
1248 | 1248 | }; |
|
1249 | 1249 | }; |
|
1250 | 1250 | "grunt-contrib-watch-0.6.1" = { |
|
1251 | 1251 | name = "grunt-contrib-watch"; |
|
1252 | 1252 | packageName = "grunt-contrib-watch"; |
|
1253 | 1253 | version = "0.6.1"; |
|
1254 | 1254 | src = fetchurl { |
|
1255 | 1255 | url = "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz"; |
|
1256 | 1256 | sha1 = "64fdcba25a635f5b4da1b6ce6f90da0aeb6e3f15"; |
|
1257 | 1257 | }; |
|
1258 | 1258 | }; |
|
1259 | 1259 | "grunt-crisper-1.0.1" = { |
|
1260 | 1260 | name = "grunt-crisper"; |
|
1261 | 1261 | packageName = "grunt-crisper"; |
|
1262 | 1262 | version = "1.0.1"; |
|
1263 | 1263 | src = fetchurl { |
|
1264 | 1264 | url = "https://registry.npmjs.org/grunt-crisper/-/grunt-crisper-1.0.1.tgz"; |
|
1265 | 1265 | sha1 = "e7c091dcaff10deb0091e3035ca7e54008991fe7"; |
|
1266 | 1266 | }; |
|
1267 | 1267 | }; |
|
1268 | 1268 | "grunt-legacy-log-0.1.3" = { |
|
1269 | 1269 | name = "grunt-legacy-log"; |
|
1270 | 1270 | packageName = "grunt-legacy-log"; |
|
1271 | 1271 | version = "0.1.3"; |
|
1272 | 1272 | src = fetchurl { |
|
1273 | 1273 | url = "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz"; |
|
1274 | 1274 | sha1 = "ec29426e803021af59029f87d2f9cd7335a05531"; |
|
1275 | 1275 | }; |
|
1276 | 1276 | }; |
|
1277 | 1277 | "grunt-legacy-log-utils-0.1.1" = { |
|
1278 | 1278 | name = "grunt-legacy-log-utils"; |
|
1279 | 1279 | packageName = "grunt-legacy-log-utils"; |
|
1280 | 1280 | version = "0.1.1"; |
|
1281 | 1281 | src = fetchurl { |
|
1282 | 1282 | url = "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz"; |
|
1283 | 1283 | sha1 = "c0706b9dd9064e116f36f23fe4e6b048672c0f7e"; |
|
1284 | 1284 | }; |
|
1285 | 1285 | }; |
|
1286 | 1286 | "grunt-legacy-util-0.2.0" = { |
|
1287 | 1287 | name = "grunt-legacy-util"; |
|
1288 | 1288 | packageName = "grunt-legacy-util"; |
|
1289 | 1289 | version = "0.2.0"; |
|
1290 | 1290 | src = fetchurl { |
|
1291 | 1291 | url = "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz"; |
|
1292 | 1292 | sha1 = "93324884dbf7e37a9ff7c026dff451d94a9e554b"; |
|
1293 | 1293 | }; |
|
1294 | 1294 | }; |
|
1295 | 1295 | "grunt-vulcanize-1.0.0" = { |
|
1296 | 1296 | name = "grunt-vulcanize"; |
|
1297 | 1297 | packageName = "grunt-vulcanize"; |
|
1298 | 1298 | version = "1.0.0"; |
|
1299 | 1299 | src = fetchurl { |
|
1300 | 1300 | url = "https://registry.npmjs.org/grunt-vulcanize/-/grunt-vulcanize-1.0.0.tgz"; |
|
1301 | 1301 | sha1 = "f4d6cfef274f8216c06f6c290e7dbb3b9e9e3b0f"; |
|
1302 | 1302 | }; |
|
1303 | 1303 | }; |
|
1304 | 1304 | "har-schema-1.0.5" = { |
|
1305 | 1305 | name = "har-schema"; |
|
1306 | 1306 | packageName = "har-schema"; |
|
1307 | 1307 | version = "1.0.5"; |
|
1308 | 1308 | src = fetchurl { |
|
1309 | 1309 | url = "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz"; |
|
1310 | 1310 | sha1 = "d263135f43307c02c602afc8fe95970c0151369e"; |
|
1311 | 1311 | }; |
|
1312 | 1312 | }; |
|
1313 | 1313 | "har-validator-4.2.1" = { |
|
1314 | 1314 | name = "har-validator"; |
|
1315 | 1315 | packageName = "har-validator"; |
|
1316 | 1316 | version = "4.2.1"; |
|
1317 | 1317 | src = fetchurl { |
|
1318 | 1318 | url = "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz"; |
|
1319 | 1319 | sha1 = "33481d0f1bbff600dd203d75812a6a5fba002e2a"; |
|
1320 | 1320 | }; |
|
1321 | 1321 | }; |
|
1322 | 1322 | "has-ansi-0.1.0" = { |
|
1323 | 1323 | name = "has-ansi"; |
|
1324 | 1324 | packageName = "has-ansi"; |
|
1325 | 1325 | version = "0.1.0"; |
|
1326 | 1326 | src = fetchurl { |
|
1327 | 1327 | url = "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz"; |
|
1328 | 1328 | sha1 = "84f265aae8c0e6a88a12d7022894b7568894c62e"; |
|
1329 | 1329 | }; |
|
1330 | 1330 | }; |
|
1331 | 1331 | "has-ansi-2.0.0" = { |
|
1332 | 1332 | name = "has-ansi"; |
|
1333 | 1333 | packageName = "has-ansi"; |
|
1334 | 1334 | version = "2.0.0"; |
|
1335 | 1335 | src = fetchurl { |
|
1336 | 1336 | url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"; |
|
1337 | 1337 | sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91"; |
|
1338 | 1338 | }; |
|
1339 | 1339 | }; |
|
1340 | 1340 | "has-unicode-2.0.1" = { |
|
1341 | 1341 | name = "has-unicode"; |
|
1342 | 1342 | packageName = "has-unicode"; |
|
1343 | 1343 | version = "2.0.1"; |
|
1344 | 1344 | src = fetchurl { |
|
1345 | 1345 | url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"; |
|
1346 | 1346 | sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9"; |
|
1347 | 1347 | }; |
|
1348 | 1348 | }; |
|
1349 | 1349 | "hasha-2.2.0" = { |
|
1350 | 1350 | name = "hasha"; |
|
1351 | 1351 | packageName = "hasha"; |
|
1352 | 1352 | version = "2.2.0"; |
|
1353 | 1353 | src = fetchurl { |
|
1354 | 1354 | url = "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz"; |
|
1355 | 1355 | sha1 = "78d7cbfc1e6d66303fe79837365984517b2f6ee1"; |
|
1356 | 1356 | }; |
|
1357 | 1357 | }; |
|
1358 | 1358 | "hawk-3.1.3" = { |
|
1359 | 1359 | name = "hawk"; |
|
1360 | 1360 | packageName = "hawk"; |
|
1361 | 1361 | version = "3.1.3"; |
|
1362 | 1362 | src = fetchurl { |
|
1363 | 1363 | url = "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz"; |
|
1364 | 1364 | sha1 = "078444bd7c1640b0fe540d2c9b73d59678e8e1c4"; |
|
1365 | 1365 | }; |
|
1366 | 1366 | }; |
|
1367 | 1367 | "hoek-2.16.3" = { |
|
1368 | 1368 | name = "hoek"; |
|
1369 | 1369 | packageName = "hoek"; |
|
1370 | 1370 | version = "2.16.3"; |
|
1371 | 1371 | src = fetchurl { |
|
1372 | 1372 | url = "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"; |
|
1373 | 1373 | sha1 = "20bb7403d3cea398e91dc4710a8ff1b8274a25ed"; |
|
1374 | 1374 | }; |
|
1375 | 1375 | }; |
|
1376 | 1376 | "hooker-0.2.3" = { |
|
1377 | 1377 | name = "hooker"; |
|
1378 | 1378 | packageName = "hooker"; |
|
1379 | 1379 | version = "0.2.3"; |
|
1380 | 1380 | src = fetchurl { |
|
1381 | 1381 | url = "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz"; |
|
1382 | 1382 | sha1 = "b834f723cc4a242aa65963459df6d984c5d3d959"; |
|
1383 | 1383 | }; |
|
1384 | 1384 | }; |
|
1385 | 1385 | "hosted-git-info-2.7.1" = { |
|
1386 | 1386 | name = "hosted-git-info"; |
|
1387 | 1387 | packageName = "hosted-git-info"; |
|
1388 | 1388 | version = "2.7.1"; |
|
1389 | 1389 | src = fetchurl { |
|
1390 | 1390 | url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz"; |
|
1391 | 1391 | sha512 = "7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="; |
|
1392 | 1392 | }; |
|
1393 | 1393 | }; |
|
1394 | 1394 | "htmlparser2-3.8.3" = { |
|
1395 | 1395 | name = "htmlparser2"; |
|
1396 | 1396 | packageName = "htmlparser2"; |
|
1397 | 1397 | version = "3.8.3"; |
|
1398 | 1398 | src = fetchurl { |
|
1399 | 1399 | url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz"; |
|
1400 | 1400 | sha1 = "996c28b191516a8be86501a7d79757e5c70c1068"; |
|
1401 | 1401 | }; |
|
1402 | 1402 | }; |
|
1403 | 1403 | "http-signature-1.1.1" = { |
|
1404 | 1404 | name = "http-signature"; |
|
1405 | 1405 | packageName = "http-signature"; |
|
1406 | 1406 | version = "1.1.1"; |
|
1407 | 1407 | src = fetchurl { |
|
1408 | 1408 | url = "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz"; |
|
1409 | 1409 | sha1 = "df72e267066cd0ac67fb76adf8e134a8fbcf91bf"; |
|
1410 | 1410 | }; |
|
1411 | 1411 | }; |
|
1412 | 1412 | "hydrolysis-1.25.0" = { |
|
1413 | 1413 | name = "hydrolysis"; |
|
1414 | 1414 | packageName = "hydrolysis"; |
|
1415 | 1415 | version = "1.25.0"; |
|
1416 | 1416 | src = fetchurl { |
|
1417 | 1417 | url = "https://registry.npmjs.org/hydrolysis/-/hydrolysis-1.25.0.tgz"; |
|
1418 | 1418 | sha1 = "a4fb14a37a1e03b0db52d8aaa57c682272a14d84"; |
|
1419 | 1419 | }; |
|
1420 | 1420 | }; |
|
1421 | 1421 | "iconv-lite-0.2.11" = { |
|
1422 | 1422 | name = "iconv-lite"; |
|
1423 | 1423 | packageName = "iconv-lite"; |
|
1424 | 1424 | version = "0.2.11"; |
|
1425 | 1425 | src = fetchurl { |
|
1426 | 1426 | url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz"; |
|
1427 | 1427 | sha1 = "1ce60a3a57864a292d1321ff4609ca4bb965adc8"; |
|
1428 | 1428 | }; |
|
1429 | 1429 | }; |
|
1430 | 1430 | "image-size-0.5.5" = { |
|
1431 | 1431 | name = "image-size"; |
|
1432 | 1432 | packageName = "image-size"; |
|
1433 | 1433 | version = "0.5.5"; |
|
1434 | 1434 | src = fetchurl { |
|
1435 | 1435 | url = "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz"; |
|
1436 | 1436 | sha1 = "09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"; |
|
1437 | 1437 | }; |
|
1438 | 1438 | }; |
|
1439 | 1439 | "inflight-1.0.6" = { |
|
1440 | 1440 | name = "inflight"; |
|
1441 | 1441 | packageName = "inflight"; |
|
1442 | 1442 | version = "1.0.6"; |
|
1443 | 1443 | src = fetchurl { |
|
1444 | 1444 | url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"; |
|
1445 | 1445 | sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9"; |
|
1446 | 1446 | }; |
|
1447 | 1447 | }; |
|
1448 | 1448 | "inherits-1.0.2" = { |
|
1449 | 1449 | name = "inherits"; |
|
1450 | 1450 | packageName = "inherits"; |
|
1451 | 1451 | version = "1.0.2"; |
|
1452 | 1452 | src = fetchurl { |
|
1453 | 1453 | url = "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz"; |
|
1454 | 1454 | sha1 = "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b"; |
|
1455 | 1455 | }; |
|
1456 | 1456 | }; |
|
1457 | 1457 | "inherits-2.0.3" = { |
|
1458 | 1458 | name = "inherits"; |
|
1459 | 1459 | packageName = "inherits"; |
|
1460 | 1460 | version = "2.0.3"; |
|
1461 | 1461 | src = fetchurl { |
|
1462 | 1462 | url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"; |
|
1463 | 1463 | sha1 = "633c2c83e3da42a502f52466022480f4208261de"; |
|
1464 | 1464 | }; |
|
1465 | 1465 | }; |
|
1466 | 1466 | "ini-1.3.5" = { |
|
1467 | 1467 | name = "ini"; |
|
1468 | 1468 | packageName = "ini"; |
|
1469 | 1469 | version = "1.3.5"; |
|
1470 | 1470 | src = fetchurl { |
|
1471 | 1471 | url = "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz"; |
|
1472 | 1472 | sha512 = "RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="; |
|
1473 | 1473 | }; |
|
1474 | 1474 | }; |
|
1475 | 1475 | "is-builtin-module-1.0.0" = { |
|
1476 | 1476 | name = "is-builtin-module"; |
|
1477 | 1477 | packageName = "is-builtin-module"; |
|
1478 | 1478 | version = "1.0.0"; |
|
1479 | 1479 | src = fetchurl { |
|
1480 | 1480 | url = "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz"; |
|
1481 | 1481 | sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe"; |
|
1482 | 1482 | }; |
|
1483 | 1483 | }; |
|
1484 | 1484 | "is-fullwidth-code-point-1.0.0" = { |
|
1485 | 1485 | name = "is-fullwidth-code-point"; |
|
1486 | 1486 | packageName = "is-fullwidth-code-point"; |
|
1487 | 1487 | version = "1.0.0"; |
|
1488 | 1488 | src = fetchurl { |
|
1489 | 1489 | url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"; |
|
1490 | 1490 | sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb"; |
|
1491 | 1491 | }; |
|
1492 | 1492 | }; |
|
1493 | 1493 | "is-stream-1.1.0" = { |
|
1494 | 1494 | name = "is-stream"; |
|
1495 | 1495 | packageName = "is-stream"; |
|
1496 | 1496 | version = "1.1.0"; |
|
1497 | 1497 | src = fetchurl { |
|
1498 | 1498 | url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"; |
|
1499 | 1499 | sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"; |
|
1500 | 1500 | }; |
|
1501 | 1501 | }; |
|
1502 | 1502 | "is-typedarray-1.0.0" = { |
|
1503 | 1503 | name = "is-typedarray"; |
|
1504 | 1504 | packageName = "is-typedarray"; |
|
1505 | 1505 | version = "1.0.0"; |
|
1506 | 1506 | src = fetchurl { |
|
1507 | 1507 | url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz"; |
|
1508 | 1508 | sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a"; |
|
1509 | 1509 | }; |
|
1510 | 1510 | }; |
|
1511 | 1511 | "isarray-0.0.1" = { |
|
1512 | 1512 | name = "isarray"; |
|
1513 | 1513 | packageName = "isarray"; |
|
1514 | 1514 | version = "0.0.1"; |
|
1515 | 1515 | src = fetchurl { |
|
1516 | 1516 | url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"; |
|
1517 | 1517 | sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf"; |
|
1518 | 1518 | }; |
|
1519 | 1519 | }; |
|
1520 | 1520 | "isarray-1.0.0" = { |
|
1521 | 1521 | name = "isarray"; |
|
1522 | 1522 | packageName = "isarray"; |
|
1523 | 1523 | version = "1.0.0"; |
|
1524 | 1524 | src = fetchurl { |
|
1525 | 1525 | url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"; |
|
1526 | 1526 | sha1 = "bb935d48582cba168c06834957a54a3e07124f11"; |
|
1527 | 1527 | }; |
|
1528 | 1528 | }; |
|
1529 | 1529 | "isexe-2.0.0" = { |
|
1530 | 1530 | name = "isexe"; |
|
1531 | 1531 | packageName = "isexe"; |
|
1532 | 1532 | version = "2.0.0"; |
|
1533 | 1533 | src = fetchurl { |
|
1534 | 1534 | url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"; |
|
1535 | 1535 | sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10"; |
|
1536 | 1536 | }; |
|
1537 | 1537 | }; |
|
1538 | 1538 | "isstream-0.1.2" = { |
|
1539 | 1539 | name = "isstream"; |
|
1540 | 1540 | packageName = "isstream"; |
|
1541 | 1541 | version = "0.1.2"; |
|
1542 | 1542 | src = fetchurl { |
|
1543 | 1543 | url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"; |
|
1544 | 1544 | sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a"; |
|
1545 | 1545 | }; |
|
1546 | 1546 | }; |
|
1547 | 1547 | "jquery-1.11.3" = { |
|
1548 | 1548 | name = "jquery"; |
|
1549 | 1549 | packageName = "jquery"; |
|
1550 | 1550 | version = "1.11.3"; |
|
1551 | 1551 | src = fetchurl { |
|
1552 | 1552 | url = "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz"; |
|
1553 | 1553 | sha1 = "dd8b74278b27102d29df63eae28308a8cfa1b583"; |
|
1554 | 1554 | }; |
|
1555 | 1555 | }; |
|
1556 | 1556 | "js-yaml-2.0.5" = { |
|
1557 | 1557 | name = "js-yaml"; |
|
1558 | 1558 | packageName = "js-yaml"; |
|
1559 | 1559 | version = "2.0.5"; |
|
1560 | 1560 | src = fetchurl { |
|
1561 | 1561 | url = "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz"; |
|
1562 | 1562 | sha1 = "a25ae6509999e97df278c6719da11bd0687743a8"; |
|
1563 | 1563 | }; |
|
1564 | 1564 | }; |
|
1565 | 1565 | "jsbn-0.1.1" = { |
|
1566 | 1566 | name = "jsbn"; |
|
1567 | 1567 | packageName = "jsbn"; |
|
1568 | 1568 | version = "0.1.1"; |
|
1569 | 1569 | src = fetchurl { |
|
1570 | 1570 | url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz"; |
|
1571 | 1571 | sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"; |
|
1572 | 1572 | }; |
|
1573 | 1573 | }; |
|
1574 | 1574 | "jshint-2.9.6" = { |
|
1575 | 1575 | name = "jshint"; |
|
1576 | 1576 | packageName = "jshint"; |
|
1577 | 1577 | version = "2.9.6"; |
|
1578 | 1578 | src = fetchurl { |
|
1579 | 1579 | url = "https://registry.npmjs.org/jshint/-/jshint-2.9.6.tgz"; |
|
1580 | 1580 | sha512 = "KO9SIAKTlJQOM4lE64GQUtGBRpTOuvbrRrSZw3AhUxMNG266nX9hK2cKA4SBhXOj0irJGyNyGSLT62HGOVDEOA=="; |
|
1581 | 1581 | }; |
|
1582 | 1582 | }; |
|
1583 | 1583 | "json-schema-0.2.3" = { |
|
1584 | 1584 | name = "json-schema"; |
|
1585 | 1585 | packageName = "json-schema"; |
|
1586 | 1586 | version = "0.2.3"; |
|
1587 | 1587 | src = fetchurl { |
|
1588 | 1588 | url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz"; |
|
1589 | 1589 | sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13"; |
|
1590 | 1590 | }; |
|
1591 | 1591 | }; |
|
1592 | 1592 | "json-stable-stringify-1.0.1" = { |
|
1593 | 1593 | name = "json-stable-stringify"; |
|
1594 | 1594 | packageName = "json-stable-stringify"; |
|
1595 | 1595 | version = "1.0.1"; |
|
1596 | 1596 | src = fetchurl { |
|
1597 | 1597 | url = "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz"; |
|
1598 | 1598 | sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af"; |
|
1599 | 1599 | }; |
|
1600 | 1600 | }; |
|
1601 | 1601 | "json-stringify-safe-5.0.1" = { |
|
1602 | 1602 | name = "json-stringify-safe"; |
|
1603 | 1603 | packageName = "json-stringify-safe"; |
|
1604 | 1604 | version = "5.0.1"; |
|
1605 | 1605 | src = fetchurl { |
|
1606 | 1606 | url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"; |
|
1607 | 1607 | sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"; |
|
1608 | 1608 | }; |
|
1609 | 1609 | }; |
|
1610 | 1610 | "jsonfile-1.0.1" = { |
|
1611 | 1611 | name = "jsonfile"; |
|
1612 | 1612 | packageName = "jsonfile"; |
|
1613 | 1613 | version = "1.0.1"; |
|
1614 | 1614 | src = fetchurl { |
|
1615 | 1615 | url = "https://registry.npmjs.org/jsonfile/-/jsonfile-1.0.1.tgz"; |
|
1616 | 1616 | sha1 = "ea5efe40b83690b98667614a7392fc60e842c0dd"; |
|
1617 | 1617 | }; |
|
1618 | 1618 | }; |
|
1619 | 1619 | "jsonfile-2.4.0" = { |
|
1620 | 1620 | name = "jsonfile"; |
|
1621 | 1621 | packageName = "jsonfile"; |
|
1622 | 1622 | version = "2.4.0"; |
|
1623 | 1623 | src = fetchurl { |
|
1624 | 1624 | url = "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz"; |
|
1625 | 1625 | sha1 = "3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"; |
|
1626 | 1626 | }; |
|
1627 | 1627 | }; |
|
1628 | 1628 | "jsonify-0.0.0" = { |
|
1629 | 1629 | name = "jsonify"; |
|
1630 | 1630 | packageName = "jsonify"; |
|
1631 | 1631 | version = "0.0.0"; |
|
1632 | 1632 | src = fetchurl { |
|
1633 | 1633 | url = "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz"; |
|
1634 | 1634 | sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73"; |
|
1635 | 1635 | }; |
|
1636 | 1636 | }; |
|
1637 | 1637 | "jsprim-1.4.1" = { |
|
1638 | 1638 | name = "jsprim"; |
|
1639 | 1639 | packageName = "jsprim"; |
|
1640 | 1640 | version = "1.4.1"; |
|
1641 | 1641 | src = fetchurl { |
|
1642 | 1642 | url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz"; |
|
1643 | 1643 | sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"; |
|
1644 | 1644 | }; |
|
1645 | 1645 | }; |
|
1646 | 1646 | "kew-0.7.0" = { |
|
1647 | 1647 | name = "kew"; |
|
1648 | 1648 | packageName = "kew"; |
|
1649 | 1649 | version = "0.7.0"; |
|
1650 | 1650 | src = fetchurl { |
|
1651 | 1651 | url = "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz"; |
|
1652 | 1652 | sha1 = "79d93d2d33363d6fdd2970b335d9141ad591d79b"; |
|
1653 | 1653 | }; |
|
1654 | 1654 | }; |
|
1655 | 1655 | "klaw-1.3.1" = { |
|
1656 | 1656 | name = "klaw"; |
|
1657 | 1657 | packageName = "klaw"; |
|
1658 | 1658 | version = "1.3.1"; |
|
1659 | 1659 | src = fetchurl { |
|
1660 | 1660 | url = "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz"; |
|
1661 | 1661 | sha1 = "4088433b46b3b1ba259d78785d8e96f73ba02439"; |
|
1662 | 1662 | }; |
|
1663 | 1663 | }; |
|
1664 | 1664 | "less-2.7.3" = { |
|
1665 | 1665 | name = "less"; |
|
1666 | 1666 | packageName = "less"; |
|
1667 | 1667 | version = "2.7.3"; |
|
1668 | 1668 | src = fetchurl { |
|
1669 | 1669 | url = "https://registry.npmjs.org/less/-/less-2.7.3.tgz"; |
|
1670 | 1670 | sha512 = "KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ=="; |
|
1671 | 1671 | }; |
|
1672 | 1672 | }; |
|
1673 | 1673 | "levn-0.3.0" = { |
|
1674 | 1674 | name = "levn"; |
|
1675 | 1675 | packageName = "levn"; |
|
1676 | 1676 | version = "0.3.0"; |
|
1677 | 1677 | src = fetchurl { |
|
1678 | 1678 | url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"; |
|
1679 | 1679 | sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee"; |
|
1680 | 1680 | }; |
|
1681 | 1681 | }; |
|
1682 | 1682 | "lodash-0.9.2" = { |
|
1683 | 1683 | name = "lodash"; |
|
1684 | 1684 | packageName = "lodash"; |
|
1685 | 1685 | version = "0.9.2"; |
|
1686 | 1686 | src = fetchurl { |
|
1687 | 1687 | url = "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz"; |
|
1688 | 1688 | sha1 = "8f3499c5245d346d682e5b0d3b40767e09f1a92c"; |
|
1689 | 1689 | }; |
|
1690 | 1690 | }; |
|
1691 | 1691 | "lodash-1.0.2" = { |
|
1692 | 1692 | name = "lodash"; |
|
1693 | 1693 | packageName = "lodash"; |
|
1694 | 1694 | version = "1.0.2"; |
|
1695 | 1695 | src = fetchurl { |
|
1696 | 1696 | url = "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz"; |
|
1697 | 1697 | sha1 = "8f57560c83b59fc270bd3d561b690043430e2551"; |
|
1698 | 1698 | }; |
|
1699 | 1699 | }; |
|
1700 | 1700 | "lodash-2.4.2" = { |
|
1701 | 1701 | name = "lodash"; |
|
1702 | 1702 | packageName = "lodash"; |
|
1703 | 1703 | version = "2.4.2"; |
|
1704 | 1704 | src = fetchurl { |
|
1705 | 1705 | url = "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz"; |
|
1706 | 1706 | sha1 = "fadd834b9683073da179b3eae6d9c0d15053f73e"; |
|
1707 | 1707 | }; |
|
1708 | 1708 | }; |
|
1709 |
"lodash-4.17.1 |
|
|
1709 | "lodash-4.17.11" = { | |
|
1710 | 1710 | name = "lodash"; |
|
1711 | 1711 | packageName = "lodash"; |
|
1712 |
version = "4.17.1 |
|
|
1713 | src = fetchurl { | |
|
1714 |
url = "https://registry.npmjs.org/lodash/-/lodash-4.17.1 |
|
|
1715 | sha512 = "UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="; | |
|
1712 | version = "4.17.11"; | |
|
1713 | src = fetchurl { | |
|
1714 | url = "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz"; | |
|
1715 | sha512 = "cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="; | |
|
1716 | 1716 | }; |
|
1717 | 1717 | }; |
|
1718 | 1718 | "lru-cache-2.7.3" = { |
|
1719 | 1719 | name = "lru-cache"; |
|
1720 | 1720 | packageName = "lru-cache"; |
|
1721 | 1721 | version = "2.7.3"; |
|
1722 | 1722 | src = fetchurl { |
|
1723 | 1723 | url = "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz"; |
|
1724 | 1724 | sha1 = "6d4524e8b955f95d4f5b58851ce21dd72fb4e952"; |
|
1725 | 1725 | }; |
|
1726 | 1726 | }; |
|
1727 | 1727 | "mime-1.6.0" = { |
|
1728 | 1728 | name = "mime"; |
|
1729 | 1729 | packageName = "mime"; |
|
1730 | 1730 | version = "1.6.0"; |
|
1731 | 1731 | src = fetchurl { |
|
1732 | 1732 | url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"; |
|
1733 | 1733 | sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="; |
|
1734 | 1734 | }; |
|
1735 | 1735 | }; |
|
1736 |
"mime-db-1.3 |
|
|
1736 | "mime-db-1.36.0" = { | |
|
1737 | 1737 | name = "mime-db"; |
|
1738 | 1738 | packageName = "mime-db"; |
|
1739 |
version = "1.3 |
|
|
1740 | src = fetchurl { | |
|
1741 |
url = "https://registry.npmjs.org/mime-db/-/mime-db-1.3 |
|
|
1742 | sha512 = "JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg=="; | |
|
1743 | }; | |
|
1744 | }; | |
|
1745 |
"mime-types-2.1. |
|
|
1739 | version = "1.36.0"; | |
|
1740 | src = fetchurl { | |
|
1741 | url = "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz"; | |
|
1742 | sha512 = "L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw=="; | |
|
1743 | }; | |
|
1744 | }; | |
|
1745 | "mime-types-2.1.20" = { | |
|
1746 | 1746 | name = "mime-types"; |
|
1747 | 1747 | packageName = "mime-types"; |
|
1748 |
version = "2.1. |
|
|
1749 | src = fetchurl { | |
|
1750 |
url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1. |
|
|
1751 | sha512 = "P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw=="; | |
|
1748 | version = "2.1.20"; | |
|
1749 | src = fetchurl { | |
|
1750 | url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz"; | |
|
1751 | sha512 = "HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A=="; | |
|
1752 | 1752 | }; |
|
1753 | 1753 | }; |
|
1754 | 1754 | "minimatch-0.2.14" = { |
|
1755 | 1755 | name = "minimatch"; |
|
1756 | 1756 | packageName = "minimatch"; |
|
1757 | 1757 | version = "0.2.14"; |
|
1758 | 1758 | src = fetchurl { |
|
1759 | 1759 | url = "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz"; |
|
1760 | 1760 | sha1 = "c74e780574f63c6f9a090e90efbe6ef53a6a756a"; |
|
1761 | 1761 | }; |
|
1762 | 1762 | }; |
|
1763 | 1763 | "minimatch-0.3.0" = { |
|
1764 | 1764 | name = "minimatch"; |
|
1765 | 1765 | packageName = "minimatch"; |
|
1766 | 1766 | version = "0.3.0"; |
|
1767 | 1767 | src = fetchurl { |
|
1768 | 1768 | url = "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz"; |
|
1769 | 1769 | sha1 = "275d8edaac4f1bb3326472089e7949c8394699dd"; |
|
1770 | 1770 | }; |
|
1771 | 1771 | }; |
|
1772 | 1772 | "minimatch-3.0.4" = { |
|
1773 | 1773 | name = "minimatch"; |
|
1774 | 1774 | packageName = "minimatch"; |
|
1775 | 1775 | version = "3.0.4"; |
|
1776 | 1776 | src = fetchurl { |
|
1777 | 1777 | url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"; |
|
1778 | 1778 | sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="; |
|
1779 | 1779 | }; |
|
1780 | 1780 | }; |
|
1781 | 1781 | "minimist-0.0.8" = { |
|
1782 | 1782 | name = "minimist"; |
|
1783 | 1783 | packageName = "minimist"; |
|
1784 | 1784 | version = "0.0.8"; |
|
1785 | 1785 | src = fetchurl { |
|
1786 | 1786 | url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"; |
|
1787 | 1787 | sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d"; |
|
1788 | 1788 | }; |
|
1789 | 1789 | }; |
|
1790 |
"minipass-2.3. |
|
|
1790 | "minipass-2.3.4" = { | |
|
1791 | 1791 | name = "minipass"; |
|
1792 | 1792 | packageName = "minipass"; |
|
1793 |
version = "2.3. |
|
|
1794 | src = fetchurl { | |
|
1795 |
url = "https://registry.npmjs.org/minipass/-/minipass-2.3. |
|
|
1796 | sha512 = "/jAn9/tEX4gnpyRATxgHEOV6xbcyxgT7iUnxo9Y3+OB0zX00TgKIv/2FZCf5brBbICcwbLqVv2ImjvWWrQMSYw=="; | |
|
1797 | }; | |
|
1798 | }; | |
|
1799 |
"minizlib-1.1. |
|
|
1793 | version = "2.3.4"; | |
|
1794 | src = fetchurl { | |
|
1795 | url = "https://registry.npmjs.org/minipass/-/minipass-2.3.4.tgz"; | |
|
1796 | sha512 = "mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w=="; | |
|
1797 | }; | |
|
1798 | }; | |
|
1799 | "minizlib-1.1.1" = { | |
|
1800 | 1800 | name = "minizlib"; |
|
1801 | 1801 | packageName = "minizlib"; |
|
1802 |
version = "1.1. |
|
|
1803 | src = fetchurl { | |
|
1804 |
url = "https://registry.npmjs.org/minizlib/-/minizlib-1.1. |
|
|
1805 | sha512 = "4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA=="; | |
|
1802 | version = "1.1.1"; | |
|
1803 | src = fetchurl { | |
|
1804 | url = "https://registry.npmjs.org/minizlib/-/minizlib-1.1.1.tgz"; | |
|
1805 | sha512 = "TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg=="; | |
|
1806 | 1806 | }; |
|
1807 | 1807 | }; |
|
1808 | 1808 | "mkdirp-0.3.5" = { |
|
1809 | 1809 | name = "mkdirp"; |
|
1810 | 1810 | packageName = "mkdirp"; |
|
1811 | 1811 | version = "0.3.5"; |
|
1812 | 1812 | src = fetchurl { |
|
1813 | 1813 | url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"; |
|
1814 | 1814 | sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7"; |
|
1815 | 1815 | }; |
|
1816 | 1816 | }; |
|
1817 | 1817 | "mkdirp-0.5.1" = { |
|
1818 | 1818 | name = "mkdirp"; |
|
1819 | 1819 | packageName = "mkdirp"; |
|
1820 | 1820 | version = "0.5.1"; |
|
1821 | 1821 | src = fetchurl { |
|
1822 | 1822 | url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"; |
|
1823 | 1823 | sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903"; |
|
1824 | 1824 | }; |
|
1825 | 1825 | }; |
|
1826 | 1826 | "moment-2.22.2" = { |
|
1827 | 1827 | name = "moment"; |
|
1828 | 1828 | packageName = "moment"; |
|
1829 | 1829 | version = "2.22.2"; |
|
1830 | 1830 | src = fetchurl { |
|
1831 | 1831 | url = "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz"; |
|
1832 | 1832 | sha1 = "3c257f9839fc0e93ff53149632239eb90783ff66"; |
|
1833 | 1833 | }; |
|
1834 | 1834 | }; |
|
1835 | 1835 | "mousetrap-1.6.2" = { |
|
1836 | 1836 | name = "mousetrap"; |
|
1837 | 1837 | packageName = "mousetrap"; |
|
1838 | 1838 | version = "1.6.2"; |
|
1839 | 1839 | src = fetchurl { |
|
1840 | 1840 | url = "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.2.tgz"; |
|
1841 | 1841 | sha512 = "jDjhi7wlHwdO6q6DS7YRmSHcuI+RVxadBkLt3KHrhd3C2b+w5pKefg3oj5beTcHZyVFA9Aksf+yEE1y5jxUjVA=="; |
|
1842 | 1842 | }; |
|
1843 | 1843 | }; |
|
1844 | 1844 | "ms-2.0.0" = { |
|
1845 | 1845 | name = "ms"; |
|
1846 | 1846 | packageName = "ms"; |
|
1847 | 1847 | version = "2.0.0"; |
|
1848 | 1848 | src = fetchurl { |
|
1849 | 1849 | url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"; |
|
1850 | 1850 | sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8"; |
|
1851 | 1851 | }; |
|
1852 | 1852 | }; |
|
1853 | 1853 | "ncp-0.4.2" = { |
|
1854 | 1854 | name = "ncp"; |
|
1855 | 1855 | packageName = "ncp"; |
|
1856 | 1856 | version = "0.4.2"; |
|
1857 | 1857 | src = fetchurl { |
|
1858 | 1858 | url = "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz"; |
|
1859 | 1859 | sha1 = "abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574"; |
|
1860 | 1860 | }; |
|
1861 | 1861 | }; |
|
1862 | 1862 | "nijs-0.0.25" = { |
|
1863 | 1863 | name = "nijs"; |
|
1864 | 1864 | packageName = "nijs"; |
|
1865 | 1865 | version = "0.0.25"; |
|
1866 | 1866 | src = fetchurl { |
|
1867 | 1867 | url = "https://registry.npmjs.org/nijs/-/nijs-0.0.25.tgz"; |
|
1868 | 1868 | sha1 = "04b035cb530d46859d1018839a518c029133f676"; |
|
1869 | 1869 | }; |
|
1870 | 1870 | }; |
|
1871 | 1871 | "node2nix-1.6.0" = { |
|
1872 | 1872 | name = "node2nix"; |
|
1873 | 1873 | packageName = "node2nix"; |
|
1874 | 1874 | version = "1.6.0"; |
|
1875 | 1875 | src = fetchurl { |
|
1876 | 1876 | url = "https://registry.npmjs.org/node2nix/-/node2nix-1.6.0.tgz"; |
|
1877 | 1877 | sha512 = "MJY6SsQH3pN59R9N3nMz/L8BsbQ0DlvSF38mgg1fwfwgnaJ+y600s3Nd0vZ+cnETUH+4OPETc4QohflccjPUYw=="; |
|
1878 | 1878 | }; |
|
1879 | 1879 | }; |
|
1880 | 1880 | "nopt-1.0.10" = { |
|
1881 | 1881 | name = "nopt"; |
|
1882 | 1882 | packageName = "nopt"; |
|
1883 | 1883 | version = "1.0.10"; |
|
1884 | 1884 | src = fetchurl { |
|
1885 | 1885 | url = "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz"; |
|
1886 | 1886 | sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee"; |
|
1887 | 1887 | }; |
|
1888 | 1888 | }; |
|
1889 | 1889 | "nopt-2.0.0" = { |
|
1890 | 1890 | name = "nopt"; |
|
1891 | 1891 | packageName = "nopt"; |
|
1892 | 1892 | version = "2.0.0"; |
|
1893 | 1893 | src = fetchurl { |
|
1894 | 1894 | url = "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz"; |
|
1895 | 1895 | sha1 = "ca7416f20a5e3f9c3b86180f96295fa3d0b52e0d"; |
|
1896 | 1896 | }; |
|
1897 | 1897 | }; |
|
1898 | 1898 | "nopt-3.0.6" = { |
|
1899 | 1899 | name = "nopt"; |
|
1900 | 1900 | packageName = "nopt"; |
|
1901 | 1901 | version = "3.0.6"; |
|
1902 | 1902 | src = fetchurl { |
|
1903 | 1903 | url = "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz"; |
|
1904 | 1904 | sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9"; |
|
1905 | 1905 | }; |
|
1906 | 1906 | }; |
|
1907 | 1907 | "noptify-0.0.3" = { |
|
1908 | 1908 | name = "noptify"; |
|
1909 | 1909 | packageName = "noptify"; |
|
1910 | 1910 | version = "0.0.3"; |
|
1911 | 1911 | src = fetchurl { |
|
1912 | 1912 | url = "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz"; |
|
1913 | 1913 | sha1 = "58f654a73d9753df0c51d9686dc92104a67f4bbb"; |
|
1914 | 1914 | }; |
|
1915 | 1915 | }; |
|
1916 | 1916 | "normalize-package-data-2.4.0" = { |
|
1917 | 1917 | name = "normalize-package-data"; |
|
1918 | 1918 | packageName = "normalize-package-data"; |
|
1919 | 1919 | version = "2.4.0"; |
|
1920 | 1920 | src = fetchurl { |
|
1921 | 1921 | url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz"; |
|
1922 | 1922 | sha512 = "9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw=="; |
|
1923 | 1923 | }; |
|
1924 | 1924 | }; |
|
1925 | 1925 | "npm-package-arg-6.1.0" = { |
|
1926 | 1926 | name = "npm-package-arg"; |
|
1927 | 1927 | packageName = "npm-package-arg"; |
|
1928 | 1928 | version = "6.1.0"; |
|
1929 | 1929 | src = fetchurl { |
|
1930 | 1930 | url = "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz"; |
|
1931 | 1931 | sha512 = "zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA=="; |
|
1932 | 1932 | }; |
|
1933 | 1933 | }; |
|
1934 | 1934 | "npm-registry-client-8.5.1" = { |
|
1935 | 1935 | name = "npm-registry-client"; |
|
1936 | 1936 | packageName = "npm-registry-client"; |
|
1937 | 1937 | version = "8.5.1"; |
|
1938 | 1938 | src = fetchurl { |
|
1939 | 1939 | url = "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.5.1.tgz"; |
|
1940 | 1940 | sha512 = "7rjGF2eA7hKDidGyEWmHTiKfXkbrcQAsGL/Rh4Rt3x3YNRNHhwaTzVJfW3aNvvlhg4G62VCluif0sLCb/i51Hg=="; |
|
1941 | 1941 | }; |
|
1942 | 1942 | }; |
|
1943 | 1943 | "npmconf-2.1.3" = { |
|
1944 | 1944 | name = "npmconf"; |
|
1945 | 1945 | packageName = "npmconf"; |
|
1946 | 1946 | version = "2.1.3"; |
|
1947 | 1947 | src = fetchurl { |
|
1948 | 1948 | url = "https://registry.npmjs.org/npmconf/-/npmconf-2.1.3.tgz"; |
|
1949 | 1949 | sha512 = "iTK+HI68GceCoGOHAQiJ/ik1iDfI7S+cgyG8A+PP18IU3X83kRhQIRhAUNj4Bp2JMx6Zrt5kCiozYa9uGWTjhA=="; |
|
1950 | 1950 | }; |
|
1951 | 1951 | }; |
|
1952 | 1952 | "npmlog-4.1.2" = { |
|
1953 | 1953 | name = "npmlog"; |
|
1954 | 1954 | packageName = "npmlog"; |
|
1955 | 1955 | version = "4.1.2"; |
|
1956 | 1956 | src = fetchurl { |
|
1957 | 1957 | url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz"; |
|
1958 | 1958 | sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg=="; |
|
1959 | 1959 | }; |
|
1960 | 1960 | }; |
|
1961 | 1961 | "number-is-nan-1.0.1" = { |
|
1962 | 1962 | name = "number-is-nan"; |
|
1963 | 1963 | packageName = "number-is-nan"; |
|
1964 | 1964 | version = "1.0.1"; |
|
1965 | 1965 | src = fetchurl { |
|
1966 | 1966 | url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"; |
|
1967 | 1967 | sha1 = "097b602b53422a522c1afb8790318336941a011d"; |
|
1968 | 1968 | }; |
|
1969 | 1969 | }; |
|
1970 | 1970 | "oauth-sign-0.8.2" = { |
|
1971 | 1971 | name = "oauth-sign"; |
|
1972 | 1972 | packageName = "oauth-sign"; |
|
1973 | 1973 | version = "0.8.2"; |
|
1974 | 1974 | src = fetchurl { |
|
1975 | 1975 | url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz"; |
|
1976 | 1976 | sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"; |
|
1977 | 1977 | }; |
|
1978 | 1978 | }; |
|
1979 | 1979 | "object-assign-4.1.1" = { |
|
1980 | 1980 | name = "object-assign"; |
|
1981 | 1981 | packageName = "object-assign"; |
|
1982 | 1982 | version = "4.1.1"; |
|
1983 | 1983 | src = fetchurl { |
|
1984 | 1984 | url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"; |
|
1985 | 1985 | sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863"; |
|
1986 | 1986 | }; |
|
1987 | 1987 | }; |
|
1988 | 1988 | "once-1.3.3" = { |
|
1989 | 1989 | name = "once"; |
|
1990 | 1990 | packageName = "once"; |
|
1991 | 1991 | version = "1.3.3"; |
|
1992 | 1992 | src = fetchurl { |
|
1993 | 1993 | url = "https://registry.npmjs.org/once/-/once-1.3.3.tgz"; |
|
1994 | 1994 | sha1 = "b2e261557ce4c314ec8304f3fa82663e4297ca20"; |
|
1995 | 1995 | }; |
|
1996 | 1996 | }; |
|
1997 | 1997 | "once-1.4.0" = { |
|
1998 | 1998 | name = "once"; |
|
1999 | 1999 | packageName = "once"; |
|
2000 | 2000 | version = "1.4.0"; |
|
2001 | 2001 | src = fetchurl { |
|
2002 | 2002 | url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz"; |
|
2003 | 2003 | sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1"; |
|
2004 | 2004 | }; |
|
2005 | 2005 | }; |
|
2006 | 2006 | "optionator-0.8.2" = { |
|
2007 | 2007 | name = "optionator"; |
|
2008 | 2008 | packageName = "optionator"; |
|
2009 | 2009 | version = "0.8.2"; |
|
2010 | 2010 | src = fetchurl { |
|
2011 | 2011 | url = "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz"; |
|
2012 | 2012 | sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64"; |
|
2013 | 2013 | }; |
|
2014 | 2014 | }; |
|
2015 | 2015 | "optparse-1.0.5" = { |
|
2016 | 2016 | name = "optparse"; |
|
2017 | 2017 | packageName = "optparse"; |
|
2018 | 2018 | version = "1.0.5"; |
|
2019 | 2019 | src = fetchurl { |
|
2020 | 2020 | url = "https://registry.npmjs.org/optparse/-/optparse-1.0.5.tgz"; |
|
2021 | 2021 | sha1 = "75e75a96506611eb1c65ba89018ff08a981e2c16"; |
|
2022 | 2022 | }; |
|
2023 | 2023 | }; |
|
2024 | 2024 | "os-homedir-1.0.2" = { |
|
2025 | 2025 | name = "os-homedir"; |
|
2026 | 2026 | packageName = "os-homedir"; |
|
2027 | 2027 | version = "1.0.2"; |
|
2028 | 2028 | src = fetchurl { |
|
2029 | 2029 | url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"; |
|
2030 | 2030 | sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3"; |
|
2031 | 2031 | }; |
|
2032 | 2032 | }; |
|
2033 | 2033 | "os-tmpdir-1.0.2" = { |
|
2034 | 2034 | name = "os-tmpdir"; |
|
2035 | 2035 | packageName = "os-tmpdir"; |
|
2036 | 2036 | version = "1.0.2"; |
|
2037 | 2037 | src = fetchurl { |
|
2038 | 2038 | url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"; |
|
2039 | 2039 | sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274"; |
|
2040 | 2040 | }; |
|
2041 | 2041 | }; |
|
2042 | 2042 | "osenv-0.1.5" = { |
|
2043 | 2043 | name = "osenv"; |
|
2044 | 2044 | packageName = "osenv"; |
|
2045 | 2045 | version = "0.1.5"; |
|
2046 | 2046 | src = fetchurl { |
|
2047 | 2047 | url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz"; |
|
2048 | 2048 | sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g=="; |
|
2049 | 2049 | }; |
|
2050 | 2050 | }; |
|
2051 | 2051 | "parse5-1.5.1" = { |
|
2052 | 2052 | name = "parse5"; |
|
2053 | 2053 | packageName = "parse5"; |
|
2054 | 2054 | version = "1.5.1"; |
|
2055 | 2055 | src = fetchurl { |
|
2056 | 2056 | url = "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz"; |
|
2057 | 2057 | sha1 = "9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"; |
|
2058 | 2058 | }; |
|
2059 | 2059 | }; |
|
2060 | 2060 | "path-is-absolute-1.0.1" = { |
|
2061 | 2061 | name = "path-is-absolute"; |
|
2062 | 2062 | packageName = "path-is-absolute"; |
|
2063 | 2063 | version = "1.0.1"; |
|
2064 | 2064 | src = fetchurl { |
|
2065 | 2065 | url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"; |
|
2066 | 2066 | sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"; |
|
2067 | 2067 | }; |
|
2068 | 2068 | }; |
|
2069 | 2069 | "path-posix-1.0.0" = { |
|
2070 | 2070 | name = "path-posix"; |
|
2071 | 2071 | packageName = "path-posix"; |
|
2072 | 2072 | version = "1.0.0"; |
|
2073 | 2073 | src = fetchurl { |
|
2074 | 2074 | url = "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz"; |
|
2075 | 2075 | sha1 = "06b26113f56beab042545a23bfa88003ccac260f"; |
|
2076 | 2076 | }; |
|
2077 | 2077 | }; |
|
2078 | 2078 | "pend-1.2.0" = { |
|
2079 | 2079 | name = "pend"; |
|
2080 | 2080 | packageName = "pend"; |
|
2081 | 2081 | version = "1.2.0"; |
|
2082 | 2082 | src = fetchurl { |
|
2083 | 2083 | url = "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz"; |
|
2084 | 2084 | sha1 = "7a57eb550a6783f9115331fcf4663d5c8e007a50"; |
|
2085 | 2085 | }; |
|
2086 | 2086 | }; |
|
2087 | 2087 | "performance-now-0.2.0" = { |
|
2088 | 2088 | name = "performance-now"; |
|
2089 | 2089 | packageName = "performance-now"; |
|
2090 | 2090 | version = "0.2.0"; |
|
2091 | 2091 | src = fetchurl { |
|
2092 | 2092 | url = "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz"; |
|
2093 | 2093 | sha1 = "33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"; |
|
2094 | 2094 | }; |
|
2095 | 2095 | }; |
|
2096 | 2096 | "phantom-4.0.12" = { |
|
2097 | 2097 | name = "phantom"; |
|
2098 | 2098 | packageName = "phantom"; |
|
2099 | 2099 | version = "4.0.12"; |
|
2100 | 2100 | src = fetchurl { |
|
2101 | 2101 | url = "https://registry.npmjs.org/phantom/-/phantom-4.0.12.tgz"; |
|
2102 | 2102 | sha512 = "Tz82XhtPmwCk1FFPmecy7yRGZG2btpzY2KI9fcoPT7zT9det0CcMyfBFPp1S8DqzsnQnm8ZYEfdy528mwVtksA=="; |
|
2103 | 2103 | }; |
|
2104 | 2104 | }; |
|
2105 | 2105 | "phantomjs-prebuilt-2.1.16" = { |
|
2106 | 2106 | name = "phantomjs-prebuilt"; |
|
2107 | 2107 | packageName = "phantomjs-prebuilt"; |
|
2108 | 2108 | version = "2.1.16"; |
|
2109 | 2109 | src = fetchurl { |
|
2110 | 2110 | url = "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz"; |
|
2111 | 2111 | sha1 = "efd212a4a3966d3647684ea8ba788549be2aefef"; |
|
2112 | 2112 | }; |
|
2113 | 2113 | }; |
|
2114 | 2114 | "pinkie-2.0.4" = { |
|
2115 | 2115 | name = "pinkie"; |
|
2116 | 2116 | packageName = "pinkie"; |
|
2117 | 2117 | version = "2.0.4"; |
|
2118 | 2118 | src = fetchurl { |
|
2119 | 2119 | url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"; |
|
2120 | 2120 | sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870"; |
|
2121 | 2121 | }; |
|
2122 | 2122 | }; |
|
2123 | 2123 | "pinkie-promise-2.0.1" = { |
|
2124 | 2124 | name = "pinkie-promise"; |
|
2125 | 2125 | packageName = "pinkie-promise"; |
|
2126 | 2126 | version = "2.0.1"; |
|
2127 | 2127 | src = fetchurl { |
|
2128 | 2128 | url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"; |
|
2129 | 2129 | sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa"; |
|
2130 | 2130 | }; |
|
2131 | 2131 | }; |
|
2132 | 2132 | "prelude-ls-1.1.2" = { |
|
2133 | 2133 | name = "prelude-ls"; |
|
2134 | 2134 | packageName = "prelude-ls"; |
|
2135 | 2135 | version = "1.1.2"; |
|
2136 | 2136 | src = fetchurl { |
|
2137 | 2137 | url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"; |
|
2138 | 2138 | sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54"; |
|
2139 | 2139 | }; |
|
2140 | 2140 | }; |
|
2141 | 2141 | "process-nextick-args-2.0.0" = { |
|
2142 | 2142 | name = "process-nextick-args"; |
|
2143 | 2143 | packageName = "process-nextick-args"; |
|
2144 | 2144 | version = "2.0.0"; |
|
2145 | 2145 | src = fetchurl { |
|
2146 | 2146 | url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz"; |
|
2147 | 2147 | sha512 = "MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="; |
|
2148 | 2148 | }; |
|
2149 | 2149 | }; |
|
2150 | 2150 | "progress-1.1.8" = { |
|
2151 | 2151 | name = "progress"; |
|
2152 | 2152 | packageName = "progress"; |
|
2153 | 2153 | version = "1.1.8"; |
|
2154 | 2154 | src = fetchurl { |
|
2155 | 2155 | url = "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz"; |
|
2156 | 2156 | sha1 = "e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"; |
|
2157 | 2157 | }; |
|
2158 | 2158 | }; |
|
2159 | 2159 | "promise-7.3.1" = { |
|
2160 | 2160 | name = "promise"; |
|
2161 | 2161 | packageName = "promise"; |
|
2162 | 2162 | version = "7.3.1"; |
|
2163 | 2163 | src = fetchurl { |
|
2164 | 2164 | url = "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz"; |
|
2165 | 2165 | sha512 = "nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg=="; |
|
2166 | 2166 | }; |
|
2167 | 2167 | }; |
|
2168 | 2168 | "proto-list-1.2.4" = { |
|
2169 | 2169 | name = "proto-list"; |
|
2170 | 2170 | packageName = "proto-list"; |
|
2171 | 2171 | version = "1.2.4"; |
|
2172 | 2172 | src = fetchurl { |
|
2173 | 2173 | url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz"; |
|
2174 | 2174 | sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849"; |
|
2175 | 2175 | }; |
|
2176 | 2176 | }; |
|
2177 | 2177 | "prr-1.0.1" = { |
|
2178 | 2178 | name = "prr"; |
|
2179 | 2179 | packageName = "prr"; |
|
2180 | 2180 | version = "1.0.1"; |
|
2181 | 2181 | src = fetchurl { |
|
2182 | 2182 | url = "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz"; |
|
2183 | 2183 | sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476"; |
|
2184 | 2184 | }; |
|
2185 | 2185 | }; |
|
2186 | 2186 | "punycode-1.4.1" = { |
|
2187 | 2187 | name = "punycode"; |
|
2188 | 2188 | packageName = "punycode"; |
|
2189 | 2189 | version = "1.4.1"; |
|
2190 | 2190 | src = fetchurl { |
|
2191 | 2191 | url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"; |
|
2192 | 2192 | sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"; |
|
2193 | 2193 | }; |
|
2194 | 2194 | }; |
|
2195 | 2195 | "qrious-4.0.2" = { |
|
2196 | 2196 | name = "qrious"; |
|
2197 | 2197 | packageName = "qrious"; |
|
2198 | 2198 | version = "4.0.2"; |
|
2199 | 2199 | src = fetchurl { |
|
2200 | 2200 | url = "https://registry.npmjs.org/qrious/-/qrious-4.0.2.tgz"; |
|
2201 | 2201 | sha512 = "xWPJIrK1zu5Ypn898fBp8RHkT/9ibquV2Kv24S/JY9VYEhMBMKur1gHVsOiNUh7PHP9uCgejjpZUHUIXXKoU/g=="; |
|
2202 | 2202 | }; |
|
2203 | 2203 | }; |
|
2204 | 2204 | "qs-0.5.6" = { |
|
2205 | 2205 | name = "qs"; |
|
2206 | 2206 | packageName = "qs"; |
|
2207 | 2207 | version = "0.5.6"; |
|
2208 | 2208 | src = fetchurl { |
|
2209 | 2209 | url = "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz"; |
|
2210 | 2210 | sha1 = "31b1ad058567651c526921506b9a8793911a0384"; |
|
2211 | 2211 | }; |
|
2212 | 2212 | }; |
|
2213 | 2213 | "qs-6.4.0" = { |
|
2214 | 2214 | name = "qs"; |
|
2215 | 2215 | packageName = "qs"; |
|
2216 | 2216 | version = "6.4.0"; |
|
2217 | 2217 | src = fetchurl { |
|
2218 | 2218 | url = "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz"; |
|
2219 | 2219 | sha1 = "13e26d28ad6b0ffaa91312cd3bf708ed351e7233"; |
|
2220 | 2220 | }; |
|
2221 | 2221 | }; |
|
2222 | 2222 | "readable-stream-1.1.14" = { |
|
2223 | 2223 | name = "readable-stream"; |
|
2224 | 2224 | packageName = "readable-stream"; |
|
2225 | 2225 | version = "1.1.14"; |
|
2226 | 2226 | src = fetchurl { |
|
2227 | 2227 | url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz"; |
|
2228 | 2228 | sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9"; |
|
2229 | 2229 | }; |
|
2230 | 2230 | }; |
|
2231 | 2231 | "readable-stream-2.3.6" = { |
|
2232 | 2232 | name = "readable-stream"; |
|
2233 | 2233 | packageName = "readable-stream"; |
|
2234 | 2234 | version = "2.3.6"; |
|
2235 | 2235 | src = fetchurl { |
|
2236 | 2236 | url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz"; |
|
2237 | 2237 | sha512 = "tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw=="; |
|
2238 | 2238 | }; |
|
2239 | 2239 | }; |
|
2240 | 2240 | "reduce-flatten-1.0.1" = { |
|
2241 | 2241 | name = "reduce-flatten"; |
|
2242 | 2242 | packageName = "reduce-flatten"; |
|
2243 | 2243 | version = "1.0.1"; |
|
2244 | 2244 | src = fetchurl { |
|
2245 | 2245 | url = "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz"; |
|
2246 | 2246 | sha1 = "258c78efd153ddf93cb561237f61184f3696e327"; |
|
2247 | 2247 | }; |
|
2248 | 2248 | }; |
|
2249 | 2249 | "regenerator-runtime-0.10.5" = { |
|
2250 | 2250 | name = "regenerator-runtime"; |
|
2251 | 2251 | packageName = "regenerator-runtime"; |
|
2252 | 2252 | version = "0.10.5"; |
|
2253 | 2253 | src = fetchurl { |
|
2254 | 2254 | url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz"; |
|
2255 | 2255 | sha1 = "336c3efc1220adcedda2c9fab67b5a7955a33658"; |
|
2256 | 2256 | }; |
|
2257 | 2257 | }; |
|
2258 | 2258 | "regenerator-runtime-0.11.1" = { |
|
2259 | 2259 | name = "regenerator-runtime"; |
|
2260 | 2260 | packageName = "regenerator-runtime"; |
|
2261 | 2261 | version = "0.11.1"; |
|
2262 | 2262 | src = fetchurl { |
|
2263 | 2263 | url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz"; |
|
2264 | 2264 | sha512 = "MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="; |
|
2265 | 2265 | }; |
|
2266 | 2266 | }; |
|
2267 | 2267 | "request-2.81.0" = { |
|
2268 | 2268 | name = "request"; |
|
2269 | 2269 | packageName = "request"; |
|
2270 | 2270 | version = "2.81.0"; |
|
2271 | 2271 | src = fetchurl { |
|
2272 | 2272 | url = "https://registry.npmjs.org/request/-/request-2.81.0.tgz"; |
|
2273 | 2273 | sha1 = "c6928946a0e06c5f8d6f8a9333469ffda46298a0"; |
|
2274 | 2274 | }; |
|
2275 | 2275 | }; |
|
2276 | 2276 | "request-progress-2.0.1" = { |
|
2277 | 2277 | name = "request-progress"; |
|
2278 | 2278 | packageName = "request-progress"; |
|
2279 | 2279 | version = "2.0.1"; |
|
2280 | 2280 | src = fetchurl { |
|
2281 | 2281 | url = "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz"; |
|
2282 | 2282 | sha1 = "5d36bb57961c673aa5b788dbc8141fdf23b44e08"; |
|
2283 | 2283 | }; |
|
2284 | 2284 | }; |
|
2285 | 2285 | "retry-0.10.1" = { |
|
2286 | 2286 | name = "retry"; |
|
2287 | 2287 | packageName = "retry"; |
|
2288 | 2288 | version = "0.10.1"; |
|
2289 | 2289 | src = fetchurl { |
|
2290 | 2290 | url = "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz"; |
|
2291 | 2291 | sha1 = "e76388d217992c252750241d3d3956fed98d8ff4"; |
|
2292 | 2292 | }; |
|
2293 | 2293 | }; |
|
2294 | 2294 | "rimraf-2.2.8" = { |
|
2295 | 2295 | name = "rimraf"; |
|
2296 | 2296 | packageName = "rimraf"; |
|
2297 | 2297 | version = "2.2.8"; |
|
2298 | 2298 | src = fetchurl { |
|
2299 | 2299 | url = "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"; |
|
2300 | 2300 | sha1 = "e439be2aaee327321952730f99a8929e4fc50582"; |
|
2301 | 2301 | }; |
|
2302 | 2302 | }; |
|
2303 | 2303 | "safe-buffer-5.1.2" = { |
|
2304 | 2304 | name = "safe-buffer"; |
|
2305 | 2305 | packageName = "safe-buffer"; |
|
2306 | 2306 | version = "5.1.2"; |
|
2307 | 2307 | src = fetchurl { |
|
2308 | 2308 | url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"; |
|
2309 | 2309 | sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="; |
|
2310 | 2310 | }; |
|
2311 | 2311 | }; |
|
2312 | 2312 | "safer-buffer-2.1.2" = { |
|
2313 | 2313 | name = "safer-buffer"; |
|
2314 | 2314 | packageName = "safer-buffer"; |
|
2315 | 2315 | version = "2.1.2"; |
|
2316 | 2316 | src = fetchurl { |
|
2317 | 2317 | url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"; |
|
2318 | 2318 | sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="; |
|
2319 | 2319 | }; |
|
2320 | 2320 | }; |
|
2321 | 2321 | "select-1.1.2" = { |
|
2322 | 2322 | name = "select"; |
|
2323 | 2323 | packageName = "select"; |
|
2324 | 2324 | version = "1.1.2"; |
|
2325 | 2325 | src = fetchurl { |
|
2326 | 2326 | url = "https://registry.npmjs.org/select/-/select-1.1.2.tgz"; |
|
2327 | 2327 | sha1 = "0e7350acdec80b1108528786ec1d4418d11b396d"; |
|
2328 | 2328 | }; |
|
2329 | 2329 | }; |
|
2330 | 2330 | "semver-4.3.6" = { |
|
2331 | 2331 | name = "semver"; |
|
2332 | 2332 | packageName = "semver"; |
|
2333 | 2333 | version = "4.3.6"; |
|
2334 | 2334 | src = fetchurl { |
|
2335 | 2335 | url = "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz"; |
|
2336 | 2336 | sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da"; |
|
2337 | 2337 | }; |
|
2338 | 2338 | }; |
|
2339 |
"semver-5.5. |
|
|
2339 | "semver-5.5.1" = { | |
|
2340 | 2340 | name = "semver"; |
|
2341 | 2341 | packageName = "semver"; |
|
2342 |
version = "5.5. |
|
|
2343 | src = fetchurl { | |
|
2344 |
url = "https://registry.npmjs.org/semver/-/semver-5.5. |
|
|
2345 | sha512 = "4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="; | |
|
2342 | version = "5.5.1"; | |
|
2343 | src = fetchurl { | |
|
2344 | url = "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz"; | |
|
2345 | sha512 = "PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw=="; | |
|
2346 | 2346 | }; |
|
2347 | 2347 | }; |
|
2348 | 2348 | "set-blocking-2.0.0" = { |
|
2349 | 2349 | name = "set-blocking"; |
|
2350 | 2350 | packageName = "set-blocking"; |
|
2351 | 2351 | version = "2.0.0"; |
|
2352 | 2352 | src = fetchurl { |
|
2353 | 2353 | url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"; |
|
2354 | 2354 | sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7"; |
|
2355 | 2355 | }; |
|
2356 | 2356 | }; |
|
2357 | 2357 | "shelljs-0.3.0" = { |
|
2358 | 2358 | name = "shelljs"; |
|
2359 | 2359 | packageName = "shelljs"; |
|
2360 | 2360 | version = "0.3.0"; |
|
2361 | 2361 | src = fetchurl { |
|
2362 | 2362 | url = "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz"; |
|
2363 | 2363 | sha1 = "3596e6307a781544f591f37da618360f31db57b1"; |
|
2364 | 2364 | }; |
|
2365 | 2365 | }; |
|
2366 | 2366 | "sigmund-1.0.1" = { |
|
2367 | 2367 | name = "sigmund"; |
|
2368 | 2368 | packageName = "sigmund"; |
|
2369 | 2369 | version = "1.0.1"; |
|
2370 | 2370 | src = fetchurl { |
|
2371 | 2371 | url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz"; |
|
2372 | 2372 | sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590"; |
|
2373 | 2373 | }; |
|
2374 | 2374 | }; |
|
2375 | 2375 | "signal-exit-3.0.2" = { |
|
2376 | 2376 | name = "signal-exit"; |
|
2377 | 2377 | packageName = "signal-exit"; |
|
2378 | 2378 | version = "3.0.2"; |
|
2379 | 2379 | src = fetchurl { |
|
2380 | 2380 | url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz"; |
|
2381 | 2381 | sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d"; |
|
2382 | 2382 | }; |
|
2383 | 2383 | }; |
|
2384 | 2384 | "slasp-0.0.4" = { |
|
2385 | 2385 | name = "slasp"; |
|
2386 | 2386 | packageName = "slasp"; |
|
2387 | 2387 | version = "0.0.4"; |
|
2388 | 2388 | src = fetchurl { |
|
2389 | 2389 | url = "https://registry.npmjs.org/slasp/-/slasp-0.0.4.tgz"; |
|
2390 | 2390 | sha1 = "9adc26ee729a0f95095851a5489f87a5258d57a9"; |
|
2391 | 2391 | }; |
|
2392 | 2392 | }; |
|
2393 | 2393 | "slide-1.1.6" = { |
|
2394 | 2394 | name = "slide"; |
|
2395 | 2395 | packageName = "slide"; |
|
2396 | 2396 | version = "1.1.6"; |
|
2397 | 2397 | src = fetchurl { |
|
2398 | 2398 | url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz"; |
|
2399 | 2399 | sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"; |
|
2400 | 2400 | }; |
|
2401 | 2401 | }; |
|
2402 | 2402 | "sntp-1.0.9" = { |
|
2403 | 2403 | name = "sntp"; |
|
2404 | 2404 | packageName = "sntp"; |
|
2405 | 2405 | version = "1.0.9"; |
|
2406 | 2406 | src = fetchurl { |
|
2407 | 2407 | url = "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"; |
|
2408 | 2408 | sha1 = "6541184cc90aeea6c6e7b35e2659082443c66198"; |
|
2409 | 2409 | }; |
|
2410 | 2410 | }; |
|
2411 | 2411 | "source-map-0.3.0" = { |
|
2412 | 2412 | name = "source-map"; |
|
2413 | 2413 | packageName = "source-map"; |
|
2414 | 2414 | version = "0.3.0"; |
|
2415 | 2415 | src = fetchurl { |
|
2416 | 2416 | url = "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz"; |
|
2417 | 2417 | sha1 = "8586fb9a5a005e5b501e21cd18b6f21b457ad1f9"; |
|
2418 | 2418 | }; |
|
2419 | 2419 | }; |
|
2420 | 2420 | "source-map-0.5.7" = { |
|
2421 | 2421 | name = "source-map"; |
|
2422 | 2422 | packageName = "source-map"; |
|
2423 | 2423 | version = "0.5.7"; |
|
2424 | 2424 | src = fetchurl { |
|
2425 | 2425 | url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"; |
|
2426 | 2426 | sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"; |
|
2427 | 2427 | }; |
|
2428 | 2428 | }; |
|
2429 | 2429 | "source-map-0.6.1" = { |
|
2430 | 2430 | name = "source-map"; |
|
2431 | 2431 | packageName = "source-map"; |
|
2432 | 2432 | version = "0.6.1"; |
|
2433 | 2433 | src = fetchurl { |
|
2434 | 2434 | url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"; |
|
2435 | 2435 | sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="; |
|
2436 | 2436 | }; |
|
2437 | 2437 | }; |
|
2438 |
"spdx-correct-3.0. |
|
|
2438 | "spdx-correct-3.0.2" = { | |
|
2439 | 2439 | name = "spdx-correct"; |
|
2440 | 2440 | packageName = "spdx-correct"; |
|
2441 |
version = "3.0. |
|
|
2442 | src = fetchurl { | |
|
2443 |
url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0. |
|
|
2444 | sha512 = "N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g=="; | |
|
2445 | }; | |
|
2446 | }; | |
|
2447 |
"spdx-exceptions-2. |
|
|
2441 | version = "3.0.2"; | |
|
2442 | src = fetchurl { | |
|
2443 | url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz"; | |
|
2444 | sha512 = "q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ=="; | |
|
2445 | }; | |
|
2446 | }; | |
|
2447 | "spdx-exceptions-2.2.0" = { | |
|
2448 | 2448 | name = "spdx-exceptions"; |
|
2449 | 2449 | packageName = "spdx-exceptions"; |
|
2450 |
version = "2. |
|
|
2451 | src = fetchurl { | |
|
2452 |
url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2. |
|
|
2453 | sha512 = "4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg=="; | |
|
2450 | version = "2.2.0"; | |
|
2451 | src = fetchurl { | |
|
2452 | url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz"; | |
|
2453 | sha512 = "2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA=="; | |
|
2454 | 2454 | }; |
|
2455 | 2455 | }; |
|
2456 | 2456 | "spdx-expression-parse-3.0.0" = { |
|
2457 | 2457 | name = "spdx-expression-parse"; |
|
2458 | 2458 | packageName = "spdx-expression-parse"; |
|
2459 | 2459 | version = "3.0.0"; |
|
2460 | 2460 | src = fetchurl { |
|
2461 | 2461 | url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz"; |
|
2462 | 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 | 2466 | name = "spdx-license-ids"; |
|
2467 | 2467 | packageName = "spdx-license-ids"; |
|
2468 |
version = "3.0. |
|
|
2469 | src = fetchurl { | |
|
2470 |
url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0. |
|
|
2471 | sha512 = "2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA=="; | |
|
2468 | version = "3.0.1"; | |
|
2469 | src = fetchurl { | |
|
2470 | url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz"; | |
|
2471 | sha512 = "TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w=="; | |
|
2472 | 2472 | }; |
|
2473 | 2473 | }; |
|
2474 | 2474 | "split-1.0.1" = { |
|
2475 | 2475 | name = "split"; |
|
2476 | 2476 | packageName = "split"; |
|
2477 | 2477 | version = "1.0.1"; |
|
2478 | 2478 | src = fetchurl { |
|
2479 | 2479 | url = "https://registry.npmjs.org/split/-/split-1.0.1.tgz"; |
|
2480 | 2480 | sha512 = "mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg=="; |
|
2481 | 2481 | }; |
|
2482 | 2482 | }; |
|
2483 |
"sshpk-1.1 |
|
|
2483 | "sshpk-1.15.1" = { | |
|
2484 | 2484 | name = "sshpk"; |
|
2485 | 2485 | packageName = "sshpk"; |
|
2486 |
version = "1.1 |
|
|
2487 | src = fetchurl { | |
|
2488 |
url = "https://registry.npmjs.org/sshpk/-/sshpk-1.1 |
|
|
2489 | sha1 = "c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98"; | |
|
2486 | version = "1.15.1"; | |
|
2487 | src = fetchurl { | |
|
2488 | url = "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz"; | |
|
2489 | sha512 = "mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA=="; | |
|
2490 | 2490 | }; |
|
2491 | 2491 | }; |
|
2492 | 2492 | "ssri-5.3.0" = { |
|
2493 | 2493 | name = "ssri"; |
|
2494 | 2494 | packageName = "ssri"; |
|
2495 | 2495 | version = "5.3.0"; |
|
2496 | 2496 | src = fetchurl { |
|
2497 | 2497 | url = "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz"; |
|
2498 | 2498 | sha512 = "XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ=="; |
|
2499 | 2499 | }; |
|
2500 | 2500 | }; |
|
2501 | 2501 | "stack-trace-0.0.10" = { |
|
2502 | 2502 | name = "stack-trace"; |
|
2503 | 2503 | packageName = "stack-trace"; |
|
2504 | 2504 | version = "0.0.10"; |
|
2505 | 2505 | src = fetchurl { |
|
2506 | 2506 | url = "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz"; |
|
2507 | 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 | 2519 | "string-width-1.0.2" = { |
|
2511 | 2520 | name = "string-width"; |
|
2512 | 2521 | packageName = "string-width"; |
|
2513 | 2522 | version = "1.0.2"; |
|
2514 | 2523 | src = fetchurl { |
|
2515 | 2524 | url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"; |
|
2516 | 2525 | sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"; |
|
2517 | 2526 | }; |
|
2518 | 2527 | }; |
|
2519 | 2528 | "string_decoder-0.10.31" = { |
|
2520 | 2529 | name = "string_decoder"; |
|
2521 | 2530 | packageName = "string_decoder"; |
|
2522 | 2531 | version = "0.10.31"; |
|
2523 | 2532 | src = fetchurl { |
|
2524 | 2533 | url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"; |
|
2525 | 2534 | sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94"; |
|
2526 | 2535 | }; |
|
2527 | 2536 | }; |
|
2528 | 2537 | "string_decoder-1.1.1" = { |
|
2529 | 2538 | name = "string_decoder"; |
|
2530 | 2539 | packageName = "string_decoder"; |
|
2531 | 2540 | version = "1.1.1"; |
|
2532 | 2541 | src = fetchurl { |
|
2533 | 2542 | url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"; |
|
2534 | 2543 | sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="; |
|
2535 | 2544 | }; |
|
2536 | 2545 | }; |
|
2537 | 2546 | "stringstream-0.0.6" = { |
|
2538 | 2547 | name = "stringstream"; |
|
2539 | 2548 | packageName = "stringstream"; |
|
2540 | 2549 | version = "0.0.6"; |
|
2541 | 2550 | src = fetchurl { |
|
2542 | 2551 | url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz"; |
|
2543 | 2552 | sha512 = "87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA=="; |
|
2544 | 2553 | }; |
|
2545 | 2554 | }; |
|
2546 | 2555 | "strip-ansi-0.3.0" = { |
|
2547 | 2556 | name = "strip-ansi"; |
|
2548 | 2557 | packageName = "strip-ansi"; |
|
2549 | 2558 | version = "0.3.0"; |
|
2550 | 2559 | src = fetchurl { |
|
2551 | 2560 | url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz"; |
|
2552 | 2561 | sha1 = "25f48ea22ca79187f3174a4db8759347bb126220"; |
|
2553 | 2562 | }; |
|
2554 | 2563 | }; |
|
2555 | 2564 | "strip-ansi-3.0.1" = { |
|
2556 | 2565 | name = "strip-ansi"; |
|
2557 | 2566 | packageName = "strip-ansi"; |
|
2558 | 2567 | version = "3.0.1"; |
|
2559 | 2568 | src = fetchurl { |
|
2560 | 2569 | url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"; |
|
2561 | 2570 | sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"; |
|
2562 | 2571 | }; |
|
2563 | 2572 | }; |
|
2564 | 2573 | "strip-json-comments-1.0.4" = { |
|
2565 | 2574 | name = "strip-json-comments"; |
|
2566 | 2575 | packageName = "strip-json-comments"; |
|
2567 | 2576 | version = "1.0.4"; |
|
2568 | 2577 | src = fetchurl { |
|
2569 | 2578 | url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"; |
|
2570 | 2579 | sha1 = "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"; |
|
2571 | 2580 | }; |
|
2572 | 2581 | }; |
|
2573 | 2582 | "supports-color-0.2.0" = { |
|
2574 | 2583 | name = "supports-color"; |
|
2575 | 2584 | packageName = "supports-color"; |
|
2576 | 2585 | version = "0.2.0"; |
|
2577 | 2586 | src = fetchurl { |
|
2578 | 2587 | url = "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"; |
|
2579 | 2588 | sha1 = "d92de2694eb3f67323973d7ae3d8b55b4c22190a"; |
|
2580 | 2589 | }; |
|
2581 | 2590 | }; |
|
2582 | 2591 | "supports-color-2.0.0" = { |
|
2583 | 2592 | name = "supports-color"; |
|
2584 | 2593 | packageName = "supports-color"; |
|
2585 | 2594 | version = "2.0.0"; |
|
2586 | 2595 | src = fetchurl { |
|
2587 | 2596 | url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"; |
|
2588 | 2597 | sha1 = "535d045ce6b6363fa40117084629995e9df324c7"; |
|
2589 | 2598 | }; |
|
2590 | 2599 | }; |
|
2591 | 2600 | "table-layout-0.3.0" = { |
|
2592 | 2601 | name = "table-layout"; |
|
2593 | 2602 | packageName = "table-layout"; |
|
2594 | 2603 | version = "0.3.0"; |
|
2595 | 2604 | src = fetchurl { |
|
2596 | 2605 | url = "https://registry.npmjs.org/table-layout/-/table-layout-0.3.0.tgz"; |
|
2597 | 2606 | sha1 = "6ee20dc483db371b3e5c87f704ed2f7c799d2c9a"; |
|
2598 | 2607 | }; |
|
2599 | 2608 | }; |
|
2600 | 2609 | "tar-3.1.15" = { |
|
2601 | 2610 | name = "tar"; |
|
2602 | 2611 | packageName = "tar"; |
|
2603 | 2612 | version = "3.1.15"; |
|
2604 | 2613 | src = fetchurl { |
|
2605 | 2614 | url = "https://registry.npmjs.org/tar/-/tar-3.1.15.tgz"; |
|
2606 | 2615 | sha512 = "pQNFsg+Wb6VXsrIPUnuQwrHR4wD5ASBR0jRyiT4/AALFA2Nl+CjhkDX5fTmIwCuULRtyQR3Dae2BBnP2EFHscw=="; |
|
2607 | 2616 | }; |
|
2608 | 2617 | }; |
|
2609 | 2618 | "temp-0.8.3" = { |
|
2610 | 2619 | name = "temp"; |
|
2611 | 2620 | packageName = "temp"; |
|
2612 | 2621 | version = "0.8.3"; |
|
2613 | 2622 | src = fetchurl { |
|
2614 | 2623 | url = "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz"; |
|
2615 | 2624 | sha1 = "e0c6bc4d26b903124410e4fed81103014dfc1f59"; |
|
2616 | 2625 | }; |
|
2617 | 2626 | }; |
|
2618 | 2627 | "test-value-2.1.0" = { |
|
2619 | 2628 | name = "test-value"; |
|
2620 | 2629 | packageName = "test-value"; |
|
2621 | 2630 | version = "2.1.0"; |
|
2622 | 2631 | src = fetchurl { |
|
2623 | 2632 | url = "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz"; |
|
2624 | 2633 | sha1 = "11da6ff670f3471a73b625ca4f3fdcf7bb748291"; |
|
2625 | 2634 | }; |
|
2626 | 2635 | }; |
|
2627 | 2636 | "throttleit-1.0.0" = { |
|
2628 | 2637 | name = "throttleit"; |
|
2629 | 2638 | packageName = "throttleit"; |
|
2630 | 2639 | version = "1.0.0"; |
|
2631 | 2640 | src = fetchurl { |
|
2632 | 2641 | url = "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz"; |
|
2633 | 2642 | sha1 = "9e785836daf46743145a5984b6268d828528ac6c"; |
|
2634 | 2643 | }; |
|
2635 | 2644 | }; |
|
2636 | 2645 | "through-2.3.8" = { |
|
2637 | 2646 | name = "through"; |
|
2638 | 2647 | packageName = "through"; |
|
2639 | 2648 | version = "2.3.8"; |
|
2640 | 2649 | src = fetchurl { |
|
2641 | 2650 | url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz"; |
|
2642 | 2651 | sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"; |
|
2643 | 2652 | }; |
|
2644 | 2653 | }; |
|
2645 | 2654 | "tiny-emitter-2.0.2" = { |
|
2646 | 2655 | name = "tiny-emitter"; |
|
2647 | 2656 | packageName = "tiny-emitter"; |
|
2648 | 2657 | version = "2.0.2"; |
|
2649 | 2658 | src = fetchurl { |
|
2650 | 2659 | url = "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz"; |
|
2651 | 2660 | sha512 = "2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow=="; |
|
2652 | 2661 | }; |
|
2653 | 2662 | }; |
|
2654 | 2663 | "tiny-lr-fork-0.0.5" = { |
|
2655 | 2664 | name = "tiny-lr-fork"; |
|
2656 | 2665 | packageName = "tiny-lr-fork"; |
|
2657 | 2666 | version = "0.0.5"; |
|
2658 | 2667 | src = fetchurl { |
|
2659 | 2668 | url = "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz"; |
|
2660 | 2669 | sha1 = "1e99e1e2a8469b736ab97d97eefa98c71f76ed0a"; |
|
2661 | 2670 | }; |
|
2662 | 2671 | }; |
|
2663 | 2672 | "tough-cookie-2.3.4" = { |
|
2664 | 2673 | name = "tough-cookie"; |
|
2665 | 2674 | packageName = "tough-cookie"; |
|
2666 | 2675 | version = "2.3.4"; |
|
2667 | 2676 | src = fetchurl { |
|
2668 | 2677 | url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz"; |
|
2669 | 2678 | sha512 = "TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA=="; |
|
2670 | 2679 | }; |
|
2671 | 2680 | }; |
|
2672 | 2681 | "tunnel-agent-0.6.0" = { |
|
2673 | 2682 | name = "tunnel-agent"; |
|
2674 | 2683 | packageName = "tunnel-agent"; |
|
2675 | 2684 | version = "0.6.0"; |
|
2676 | 2685 | src = fetchurl { |
|
2677 | 2686 | url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz"; |
|
2678 | 2687 | sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd"; |
|
2679 | 2688 | }; |
|
2680 | 2689 | }; |
|
2681 | 2690 | "tweetnacl-0.14.5" = { |
|
2682 | 2691 | name = "tweetnacl"; |
|
2683 | 2692 | packageName = "tweetnacl"; |
|
2684 | 2693 | version = "0.14.5"; |
|
2685 | 2694 | src = fetchurl { |
|
2686 | 2695 | url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz"; |
|
2687 | 2696 | sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64"; |
|
2688 | 2697 | }; |
|
2689 | 2698 | }; |
|
2690 | 2699 | "type-check-0.3.2" = { |
|
2691 | 2700 | name = "type-check"; |
|
2692 | 2701 | packageName = "type-check"; |
|
2693 | 2702 | version = "0.3.2"; |
|
2694 | 2703 | src = fetchurl { |
|
2695 | 2704 | url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"; |
|
2696 | 2705 | sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72"; |
|
2697 | 2706 | }; |
|
2698 | 2707 | }; |
|
2699 | 2708 | "typedarray-0.0.6" = { |
|
2700 | 2709 | name = "typedarray"; |
|
2701 | 2710 | packageName = "typedarray"; |
|
2702 | 2711 | version = "0.0.6"; |
|
2703 | 2712 | src = fetchurl { |
|
2704 | 2713 | url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"; |
|
2705 | 2714 | sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777"; |
|
2706 | 2715 | }; |
|
2707 | 2716 | }; |
|
2708 | 2717 | "typical-2.6.1" = { |
|
2709 | 2718 | name = "typical"; |
|
2710 | 2719 | packageName = "typical"; |
|
2711 | 2720 | version = "2.6.1"; |
|
2712 | 2721 | src = fetchurl { |
|
2713 | 2722 | url = "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz"; |
|
2714 | 2723 | sha1 = "5c080e5d661cbbe38259d2e70a3c7253e873881d"; |
|
2715 | 2724 | }; |
|
2716 | 2725 | }; |
|
2717 | 2726 | "uid-number-0.0.5" = { |
|
2718 | 2727 | name = "uid-number"; |
|
2719 | 2728 | packageName = "uid-number"; |
|
2720 | 2729 | version = "0.0.5"; |
|
2721 | 2730 | src = fetchurl { |
|
2722 | 2731 | url = "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz"; |
|
2723 | 2732 | sha1 = "5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e"; |
|
2724 | 2733 | }; |
|
2725 | 2734 | }; |
|
2726 | 2735 | "underscore-1.7.0" = { |
|
2727 | 2736 | name = "underscore"; |
|
2728 | 2737 | packageName = "underscore"; |
|
2729 | 2738 | version = "1.7.0"; |
|
2730 | 2739 | src = fetchurl { |
|
2731 | 2740 | url = "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz"; |
|
2732 | 2741 | sha1 = "6bbaf0877500d36be34ecaa584e0db9fef035209"; |
|
2733 | 2742 | }; |
|
2734 | 2743 | }; |
|
2735 | 2744 | "underscore.string-2.2.1" = { |
|
2736 | 2745 | name = "underscore.string"; |
|
2737 | 2746 | packageName = "underscore.string"; |
|
2738 | 2747 | version = "2.2.1"; |
|
2739 | 2748 | src = fetchurl { |
|
2740 | 2749 | url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz"; |
|
2741 | 2750 | sha1 = "d7c0fa2af5d5a1a67f4253daee98132e733f0f19"; |
|
2742 | 2751 | }; |
|
2743 | 2752 | }; |
|
2744 | 2753 | "underscore.string-2.3.3" = { |
|
2745 | 2754 | name = "underscore.string"; |
|
2746 | 2755 | packageName = "underscore.string"; |
|
2747 | 2756 | version = "2.3.3"; |
|
2748 | 2757 | src = fetchurl { |
|
2749 | 2758 | url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz"; |
|
2750 | 2759 | sha1 = "71c08bf6b428b1133f37e78fa3a21c82f7329b0d"; |
|
2751 | 2760 | }; |
|
2752 | 2761 | }; |
|
2753 | 2762 | "underscore.string-2.4.0" = { |
|
2754 | 2763 | name = "underscore.string"; |
|
2755 | 2764 | packageName = "underscore.string"; |
|
2756 | 2765 | version = "2.4.0"; |
|
2757 | 2766 | src = fetchurl { |
|
2758 | 2767 | url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz"; |
|
2759 | 2768 | sha1 = "8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b"; |
|
2760 | 2769 | }; |
|
2761 | 2770 | }; |
|
2762 | 2771 | "unicode-5.2.0-0.7.5" = { |
|
2763 | 2772 | name = "unicode-5.2.0"; |
|
2764 | 2773 | packageName = "unicode-5.2.0"; |
|
2765 | 2774 | version = "0.7.5"; |
|
2766 | 2775 | src = fetchurl { |
|
2767 | 2776 | url = "https://registry.npmjs.org/unicode-5.2.0/-/unicode-5.2.0-0.7.5.tgz"; |
|
2768 | 2777 | sha512 = "KVGLW1Bri30x00yv4HNM8kBxoqFXr0Sbo55735nvrlsx4PYBZol3UtoWgO492fSwmsetzPEZzy73rbU8OGXJcA=="; |
|
2769 | 2778 | }; |
|
2770 | 2779 | }; |
|
2771 | 2780 | "util-deprecate-1.0.2" = { |
|
2772 | 2781 | name = "util-deprecate"; |
|
2773 | 2782 | packageName = "util-deprecate"; |
|
2774 | 2783 | version = "1.0.2"; |
|
2775 | 2784 | src = fetchurl { |
|
2776 | 2785 | url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"; |
|
2777 | 2786 | sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf"; |
|
2778 | 2787 | }; |
|
2779 | 2788 | }; |
|
2780 | 2789 | "uuid-3.3.2" = { |
|
2781 | 2790 | name = "uuid"; |
|
2782 | 2791 | packageName = "uuid"; |
|
2783 | 2792 | version = "3.3.2"; |
|
2784 | 2793 | src = fetchurl { |
|
2785 | 2794 | url = "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz"; |
|
2786 | 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 | 2799 | name = "validate-npm-package-license"; |
|
2791 | 2800 | packageName = "validate-npm-package-license"; |
|
2792 |
version = "3.0. |
|
|
2793 | src = fetchurl { | |
|
2794 |
url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0. |
|
|
2795 | sha512 = "63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g=="; | |
|
2801 | version = "3.0.4"; | |
|
2802 | src = fetchurl { | |
|
2803 | url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"; | |
|
2804 | sha512 = "DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="; | |
|
2796 | 2805 | }; |
|
2797 | 2806 | }; |
|
2798 | 2807 | "validate-npm-package-name-3.0.0" = { |
|
2799 | 2808 | name = "validate-npm-package-name"; |
|
2800 | 2809 | packageName = "validate-npm-package-name"; |
|
2801 | 2810 | version = "3.0.0"; |
|
2802 | 2811 | src = fetchurl { |
|
2803 | 2812 | url = "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz"; |
|
2804 | 2813 | sha1 = "5fa912d81eb7d0c74afc140de7317f0ca7df437e"; |
|
2805 | 2814 | }; |
|
2806 | 2815 | }; |
|
2807 | 2816 | "verror-1.10.0" = { |
|
2808 | 2817 | name = "verror"; |
|
2809 | 2818 | packageName = "verror"; |
|
2810 | 2819 | version = "1.10.0"; |
|
2811 | 2820 | src = fetchurl { |
|
2812 | 2821 | url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz"; |
|
2813 | 2822 | sha1 = "3a105ca17053af55d6e270c1f8288682e18da400"; |
|
2814 | 2823 | }; |
|
2815 | 2824 | }; |
|
2816 | 2825 | "vulcanize-1.16.0" = { |
|
2817 | 2826 | name = "vulcanize"; |
|
2818 | 2827 | packageName = "vulcanize"; |
|
2819 | 2828 | version = "1.16.0"; |
|
2820 | 2829 | src = fetchurl { |
|
2821 | 2830 | url = "https://registry.npmjs.org/vulcanize/-/vulcanize-1.16.0.tgz"; |
|
2822 | 2831 | sha512 = "TYlFljSc896b5+0FmMiw0JAMrHNBiHx0IAFC/dQR3Dxdb9Nx43ohm6wMWTlPXQn4sk/0WkqfgoAA6SLxyvPCLQ=="; |
|
2823 | 2832 | }; |
|
2824 | 2833 | }; |
|
2825 | 2834 | "walk-2.3.14" = { |
|
2826 | 2835 | name = "walk"; |
|
2827 | 2836 | packageName = "walk"; |
|
2828 | 2837 | version = "2.3.14"; |
|
2829 | 2838 | src = fetchurl { |
|
2830 | 2839 | url = "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz"; |
|
2831 | 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 | 2852 | "which-1.0.9" = { |
|
2835 | 2853 | name = "which"; |
|
2836 | 2854 | packageName = "which"; |
|
2837 | 2855 | version = "1.0.9"; |
|
2838 | 2856 | src = fetchurl { |
|
2839 | 2857 | url = "https://registry.npmjs.org/which/-/which-1.0.9.tgz"; |
|
2840 | 2858 | sha1 = "460c1da0f810103d0321a9b633af9e575e64486f"; |
|
2841 | 2859 | }; |
|
2842 | 2860 | }; |
|
2843 | 2861 | "which-1.3.1" = { |
|
2844 | 2862 | name = "which"; |
|
2845 | 2863 | packageName = "which"; |
|
2846 | 2864 | version = "1.3.1"; |
|
2847 | 2865 | src = fetchurl { |
|
2848 | 2866 | url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz"; |
|
2849 | 2867 | sha512 = "HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="; |
|
2850 | 2868 | }; |
|
2851 | 2869 | }; |
|
2852 | 2870 | "wide-align-1.1.3" = { |
|
2853 | 2871 | name = "wide-align"; |
|
2854 | 2872 | packageName = "wide-align"; |
|
2855 | 2873 | version = "1.1.3"; |
|
2856 | 2874 | src = fetchurl { |
|
2857 | 2875 | url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz"; |
|
2858 | 2876 | sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA=="; |
|
2859 | 2877 | }; |
|
2860 | 2878 | }; |
|
2861 |
"winston-2.4. |
|
|
2879 | "winston-2.4.4" = { | |
|
2862 | 2880 | name = "winston"; |
|
2863 | 2881 | packageName = "winston"; |
|
2864 |
version = "2.4. |
|
|
2865 | src = fetchurl { | |
|
2866 |
url = "https://registry.npmjs.org/winston/-/winston-2.4. |
|
|
2867 | sha512 = "GYKuysPz2pxYAVJD2NPsDLP5Z79SDEzPm9/j4tCjkF/n89iBNGBMJcR+dMUqxgPNgoSs6fVygPi+Vl2oxIpBuw=="; | |
|
2882 | version = "2.4.4"; | |
|
2883 | src = fetchurl { | |
|
2884 | url = "https://registry.npmjs.org/winston/-/winston-2.4.4.tgz"; | |
|
2885 | sha512 = "NBo2Pepn4hK4V01UfcWcDlmiVTs7VTB1h7bgnB0rgP146bYhMxX0ypCz3lBOfNxCO4Zuek7yeT+y/zM1OfMw4Q=="; | |
|
2868 | 2886 | }; |
|
2869 | 2887 | }; |
|
2870 | 2888 | "wordwrap-1.0.0" = { |
|
2871 | 2889 | name = "wordwrap"; |
|
2872 | 2890 | packageName = "wordwrap"; |
|
2873 | 2891 | version = "1.0.0"; |
|
2874 | 2892 | src = fetchurl { |
|
2875 | 2893 | url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"; |
|
2876 | 2894 | sha1 = "27584810891456a4171c8d0226441ade90cbcaeb"; |
|
2877 | 2895 | }; |
|
2878 | 2896 | }; |
|
2879 | 2897 | "wordwrapjs-2.0.0" = { |
|
2880 | 2898 | name = "wordwrapjs"; |
|
2881 | 2899 | packageName = "wordwrapjs"; |
|
2882 | 2900 | version = "2.0.0"; |
|
2883 | 2901 | src = fetchurl { |
|
2884 | 2902 | url = "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-2.0.0.tgz"; |
|
2885 | 2903 | sha1 = "ab55f695e6118da93858fdd70c053d1c5e01ac20"; |
|
2886 | 2904 | }; |
|
2887 | 2905 | }; |
|
2888 | 2906 | "wrappy-1.0.2" = { |
|
2889 | 2907 | name = "wrappy"; |
|
2890 | 2908 | packageName = "wrappy"; |
|
2891 | 2909 | version = "1.0.2"; |
|
2892 | 2910 | src = fetchurl { |
|
2893 | 2911 | url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"; |
|
2894 | 2912 | sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"; |
|
2895 | 2913 | }; |
|
2896 | 2914 | }; |
|
2897 | 2915 | "yallist-3.0.2" = { |
|
2898 | 2916 | name = "yallist"; |
|
2899 | 2917 | packageName = "yallist"; |
|
2900 | 2918 | version = "3.0.2"; |
|
2901 | 2919 | src = fetchurl { |
|
2902 | 2920 | url = "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz"; |
|
2903 | 2921 | sha1 = "8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"; |
|
2904 | 2922 | }; |
|
2905 | 2923 | }; |
|
2906 | 2924 | "yauzl-2.4.1" = { |
|
2907 | 2925 | name = "yauzl"; |
|
2908 | 2926 | packageName = "yauzl"; |
|
2909 | 2927 | version = "2.4.1"; |
|
2910 | 2928 | src = fetchurl { |
|
2911 | 2929 | url = "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz"; |
|
2912 | 2930 | sha1 = "9528f442dab1b2284e58b4379bb194e22e0c4005"; |
|
2913 | 2931 | }; |
|
2914 | 2932 | }; |
|
2915 | 2933 | }; |
|
2916 | 2934 | args = { |
|
2917 | 2935 | name = "rhodecode-enterprise"; |
|
2918 | 2936 | packageName = "rhodecode-enterprise"; |
|
2919 | 2937 | version = "1.0.0"; |
|
2920 | 2938 | src = ./..; |
|
2921 | 2939 | dependencies = [ |
|
2922 | 2940 | sources."@types/clone-0.1.30" |
|
2923 |
sources."@types/node-4. |
|
|
2941 | sources."@types/node-4.9.0" | |
|
2924 | 2942 | (sources."@types/parse5-0.0.31" // { |
|
2925 | 2943 | dependencies = [ |
|
2926 |
sources."@types/node-6.0.11 |
|
|
2944 | sources."@types/node-6.0.118" | |
|
2927 | 2945 | ]; |
|
2928 | 2946 | }) |
|
2929 | 2947 | sources."abbrev-1.1.1" |
|
2930 | 2948 | sources."acorn-3.3.0" |
|
2931 | 2949 | sources."acorn-jsx-3.0.1" |
|
2932 | 2950 | sources."ajv-4.11.8" |
|
2933 | 2951 | sources."amdefine-1.0.1" |
|
2934 | 2952 | sources."ansi-escape-sequences-3.0.0" |
|
2935 | 2953 | sources."ansi-regex-2.1.1" |
|
2936 | 2954 | sources."ansi-styles-2.2.1" |
|
2937 | 2955 | sources."appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" |
|
2938 | 2956 | sources."aproba-1.2.0" |
|
2939 | 2957 | sources."are-we-there-yet-1.1.5" |
|
2940 | 2958 | (sources."argparse-0.1.16" // { |
|
2941 | 2959 | dependencies = [ |
|
2942 | 2960 | sources."underscore.string-2.4.0" |
|
2943 | 2961 | ]; |
|
2944 | 2962 | }) |
|
2945 | 2963 | sources."array-back-1.0.4" |
|
2946 | 2964 | sources."asap-2.0.6" |
|
2947 |
sources."asn1-0.2. |
|
|
2965 | sources."asn1-0.2.4" | |
|
2948 | 2966 | sources."assert-plus-0.2.0" |
|
2949 | 2967 | sources."async-0.1.22" |
|
2950 | 2968 | sources."asynckit-0.4.0" |
|
2951 | 2969 | sources."aws-sign2-0.6.0" |
|
2952 |
sources."aws4-1. |
|
|
2970 | sources."aws4-1.8.0" | |
|
2953 | 2971 | sources."babel-polyfill-6.26.0" |
|
2954 | 2972 | (sources."babel-runtime-6.26.0" // { |
|
2955 | 2973 | dependencies = [ |
|
2956 | 2974 | sources."regenerator-runtime-0.11.1" |
|
2957 | 2975 | ]; |
|
2958 | 2976 | }) |
|
2959 | 2977 | sources."balanced-match-1.0.0" |
|
2960 | 2978 | sources."base64-js-1.2.3" |
|
2961 | 2979 | sources."bcrypt-pbkdf-1.0.2" |
|
2962 | 2980 | sources."boom-2.10.1" |
|
2963 | 2981 | sources."bower-1.8.4" |
|
2964 | 2982 | sources."brace-expansion-1.1.11" |
|
2965 | 2983 | sources."buffer-from-1.1.1" |
|
2966 | 2984 | sources."builtin-modules-1.1.1" |
|
2967 | 2985 | sources."builtins-1.0.3" |
|
2968 | 2986 | sources."caseless-0.12.0" |
|
2969 | 2987 | sources."chalk-1.1.3" |
|
2970 | 2988 | (sources."cli-1.0.1" // { |
|
2971 | 2989 | dependencies = [ |
|
2972 |
sources."glob-7.1. |
|
|
2990 | sources."glob-7.1.3" | |
|
2973 | 2991 | sources."minimatch-3.0.4" |
|
2974 | 2992 | ]; |
|
2975 | 2993 | }) |
|
2976 | 2994 | sources."clipboard-2.0.1" |
|
2977 | 2995 | sources."clone-1.0.4" |
|
2978 | 2996 | sources."co-4.6.0" |
|
2979 | 2997 | sources."code-point-at-1.1.0" |
|
2980 | 2998 | sources."coffee-script-1.3.3" |
|
2981 | 2999 | sources."colors-0.6.2" |
|
2982 |
sources."combined-stream-1.0. |
|
|
3000 | sources."combined-stream-1.0.7" | |
|
2983 | 3001 | sources."command-line-args-3.0.5" |
|
2984 | 3002 | sources."command-line-usage-3.0.8" |
|
2985 | 3003 | sources."concat-map-0.0.1" |
|
2986 | 3004 | sources."concat-stream-1.6.2" |
|
2987 |
sources."config-chain-1.1.1 |
|
|
3005 | sources."config-chain-1.1.12" | |
|
2988 | 3006 | sources."console-browserify-1.1.0" |
|
2989 | 3007 | sources."console-control-strings-1.1.0" |
|
2990 | 3008 | sources."core-js-2.5.7" |
|
2991 | 3009 | sources."core-util-is-1.0.2" |
|
2992 | 3010 | sources."crisper-2.1.1" |
|
2993 | 3011 | sources."cryptiles-2.0.5" |
|
2994 | 3012 | sources."cycle-1.0.3" |
|
2995 | 3013 | (sources."dashdash-1.14.1" // { |
|
2996 | 3014 | dependencies = [ |
|
2997 | 3015 | sources."assert-plus-1.0.0" |
|
2998 | 3016 | ]; |
|
2999 | 3017 | }) |
|
3000 | 3018 | sources."date-now-0.1.4" |
|
3001 | 3019 | sources."dateformat-1.0.2-1.2.3" |
|
3002 | 3020 | sources."debug-0.7.4" |
|
3003 | 3021 | sources."deep-extend-0.4.2" |
|
3004 | 3022 | sources."deep-is-0.1.3" |
|
3005 | 3023 | sources."delayed-stream-1.0.0" |
|
3006 | 3024 | sources."delegate-3.2.0" |
|
3007 | 3025 | sources."delegates-1.0.0" |
|
3008 | 3026 | sources."doctrine-0.7.2" |
|
3009 | 3027 | (sources."dom-serializer-0.1.0" // { |
|
3010 | 3028 | dependencies = [ |
|
3011 | 3029 | sources."domelementtype-1.1.3" |
|
3012 | 3030 | sources."entities-1.1.1" |
|
3013 | 3031 | ]; |
|
3014 | 3032 | }) |
|
3015 | 3033 | sources."dom5-1.3.6" |
|
3016 | 3034 | sources."domelementtype-1.3.0" |
|
3017 | 3035 | sources."domhandler-2.3.0" |
|
3018 | 3036 | sources."domutils-1.5.1" |
|
3019 | 3037 | sources."ecc-jsbn-0.1.2" |
|
3020 | 3038 | sources."entities-1.0.0" |
|
3021 | 3039 | sources."errno-0.1.7" |
|
3022 | 3040 | sources."es6-promise-2.3.0" |
|
3023 | 3041 | sources."escape-string-regexp-1.0.5" |
|
3024 | 3042 | (sources."escodegen-1.11.0" // { |
|
3025 | 3043 | dependencies = [ |
|
3026 | 3044 | sources."esprima-3.1.3" |
|
3027 | 3045 | sources."estraverse-4.2.0" |
|
3028 | 3046 | sources."esutils-2.0.2" |
|
3029 | 3047 | sources."source-map-0.6.1" |
|
3030 | 3048 | ]; |
|
3031 | 3049 | }) |
|
3032 | 3050 | (sources."espree-3.5.4" // { |
|
3033 | 3051 | dependencies = [ |
|
3034 |
sources."acorn-5.7. |
|
|
3052 | sources."acorn-5.7.3" | |
|
3035 | 3053 | ]; |
|
3036 | 3054 | }) |
|
3037 | 3055 | sources."esprima-1.0.4" |
|
3038 | 3056 | sources."estraverse-3.1.0" |
|
3039 | 3057 | sources."esutils-1.1.6" |
|
3040 | 3058 | sources."eventemitter2-0.4.14" |
|
3041 | 3059 | sources."exit-0.1.2" |
|
3042 | 3060 | sources."extend-3.0.2" |
|
3043 | 3061 | (sources."extract-zip-1.6.7" // { |
|
3044 | 3062 | dependencies = [ |
|
3045 | 3063 | sources."debug-2.6.9" |
|
3046 | 3064 | ]; |
|
3047 | 3065 | }) |
|
3048 | 3066 | sources."extsprintf-1.3.0" |
|
3049 | 3067 | sources."eyes-0.1.8" |
|
3050 | 3068 | sources."fast-levenshtein-2.0.6" |
|
3051 | 3069 | sources."favico.js-0.3.10" |
|
3052 | 3070 | sources."faye-websocket-0.4.4" |
|
3053 | 3071 | sources."fd-slicer-1.0.1" |
|
3054 | 3072 | sources."feature-detect-es6-1.5.0" |
|
3055 | 3073 | sources."file-sync-cmp-0.1.1" |
|
3056 | 3074 | sources."find-replace-1.0.3" |
|
3057 | 3075 | sources."findit-2.0.0" |
|
3058 | 3076 | (sources."findup-sync-0.1.3" // { |
|
3059 | 3077 | dependencies = [ |
|
3060 | 3078 | sources."glob-3.2.11" |
|
3061 | 3079 | sources."lodash-2.4.2" |
|
3062 | 3080 | sources."minimatch-0.3.0" |
|
3063 | 3081 | ]; |
|
3064 | 3082 | }) |
|
3065 | 3083 | sources."foreachasync-3.0.0" |
|
3066 | 3084 | sources."forever-agent-0.6.1" |
|
3067 | 3085 | sources."form-data-2.1.4" |
|
3068 | 3086 | (sources."fs-extra-0.6.4" // { |
|
3069 | 3087 | dependencies = [ |
|
3070 | 3088 | sources."mkdirp-0.3.5" |
|
3071 | 3089 | ]; |
|
3072 | 3090 | }) |
|
3073 | 3091 | (sources."fs.extra-1.3.2" // { |
|
3074 | 3092 | dependencies = [ |
|
3075 | 3093 | sources."mkdirp-0.3.5" |
|
3076 | 3094 | ]; |
|
3077 | 3095 | }) |
|
3078 | 3096 | sources."fs.realpath-1.0.0" |
|
3079 | 3097 | sources."gauge-2.7.4" |
|
3080 | 3098 | sources."gaze-0.5.2" |
|
3081 | 3099 | sources."getobject-0.1.0" |
|
3082 | 3100 | (sources."getpass-0.1.7" // { |
|
3083 | 3101 | dependencies = [ |
|
3084 | 3102 | sources."assert-plus-1.0.0" |
|
3085 | 3103 | ]; |
|
3086 | 3104 | }) |
|
3087 | 3105 | (sources."glob-3.1.21" // { |
|
3088 | 3106 | dependencies = [ |
|
3089 | 3107 | sources."inherits-1.0.2" |
|
3090 | 3108 | ]; |
|
3091 | 3109 | }) |
|
3092 | 3110 | (sources."globule-0.1.0" // { |
|
3093 | 3111 | dependencies = [ |
|
3094 | 3112 | sources."lodash-1.0.2" |
|
3095 | 3113 | ]; |
|
3096 | 3114 | }) |
|
3097 | 3115 | sources."good-listener-1.2.2" |
|
3098 | 3116 | sources."graceful-fs-1.2.3" |
|
3099 | 3117 | sources."grunt-0.4.5" |
|
3100 | 3118 | (sources."grunt-contrib-concat-0.5.1" // { |
|
3101 | 3119 | dependencies = [ |
|
3102 | 3120 | sources."ansi-regex-0.2.1" |
|
3103 | 3121 | sources."ansi-styles-1.1.0" |
|
3104 | 3122 | sources."chalk-0.5.1" |
|
3105 | 3123 | sources."has-ansi-0.1.0" |
|
3106 | 3124 | sources."strip-ansi-0.3.0" |
|
3107 | 3125 | sources."supports-color-0.2.0" |
|
3108 | 3126 | ]; |
|
3109 | 3127 | }) |
|
3110 | 3128 | sources."grunt-contrib-copy-1.0.0" |
|
3111 | 3129 | sources."grunt-contrib-jshint-0.12.0" |
|
3112 | 3130 | (sources."grunt-contrib-less-1.4.1" // { |
|
3113 | 3131 | dependencies = [ |
|
3114 | 3132 | sources."async-2.6.1" |
|
3115 |
sources."lodash-4.17.1 |
|
|
3133 | sources."lodash-4.17.11" | |
|
3116 | 3134 | ]; |
|
3117 | 3135 | }) |
|
3118 | 3136 | (sources."grunt-contrib-watch-0.6.1" // { |
|
3119 | 3137 | dependencies = [ |
|
3120 | 3138 | sources."async-0.2.10" |
|
3121 | 3139 | sources."lodash-2.4.2" |
|
3122 | 3140 | ]; |
|
3123 | 3141 | }) |
|
3124 | 3142 | sources."grunt-crisper-1.0.1" |
|
3125 | 3143 | (sources."grunt-legacy-log-0.1.3" // { |
|
3126 | 3144 | dependencies = [ |
|
3127 | 3145 | sources."lodash-2.4.2" |
|
3128 | 3146 | sources."underscore.string-2.3.3" |
|
3129 | 3147 | ]; |
|
3130 | 3148 | }) |
|
3131 | 3149 | (sources."grunt-legacy-log-utils-0.1.1" // { |
|
3132 | 3150 | dependencies = [ |
|
3133 | 3151 | sources."lodash-2.4.2" |
|
3134 | 3152 | sources."underscore.string-2.3.3" |
|
3135 | 3153 | ]; |
|
3136 | 3154 | }) |
|
3137 | 3155 | sources."grunt-legacy-util-0.2.0" |
|
3138 | 3156 | (sources."grunt-vulcanize-1.0.0" // { |
|
3139 | 3157 | dependencies = [ |
|
3140 | 3158 | sources."crisper-1.2.0" |
|
3141 | 3159 | sources."nopt-3.0.6" |
|
3142 | 3160 | ]; |
|
3143 | 3161 | }) |
|
3144 | 3162 | sources."har-schema-1.0.5" |
|
3145 | 3163 | sources."har-validator-4.2.1" |
|
3146 | 3164 | sources."has-ansi-2.0.0" |
|
3147 | 3165 | sources."has-unicode-2.0.1" |
|
3148 | 3166 | sources."hasha-2.2.0" |
|
3149 | 3167 | sources."hawk-3.1.3" |
|
3150 | 3168 | sources."hoek-2.16.3" |
|
3151 | 3169 | sources."hooker-0.2.3" |
|
3152 | 3170 | sources."hosted-git-info-2.7.1" |
|
3153 | 3171 | (sources."htmlparser2-3.8.3" // { |
|
3154 | 3172 | dependencies = [ |
|
3155 | 3173 | sources."readable-stream-1.1.14" |
|
3156 | 3174 | sources."string_decoder-0.10.31" |
|
3157 | 3175 | ]; |
|
3158 | 3176 | }) |
|
3159 | 3177 | sources."http-signature-1.1.1" |
|
3160 | 3178 | (sources."hydrolysis-1.25.0" // { |
|
3161 | 3179 | dependencies = [ |
|
3162 | 3180 | sources."dom5-1.1.0" |
|
3163 | 3181 | ]; |
|
3164 | 3182 | }) |
|
3165 | 3183 | sources."iconv-lite-0.2.11" |
|
3166 | 3184 | sources."image-size-0.5.5" |
|
3167 | 3185 | sources."inflight-1.0.6" |
|
3168 | 3186 | sources."inherits-2.0.3" |
|
3169 | 3187 | sources."ini-1.3.5" |
|
3170 | 3188 | sources."is-builtin-module-1.0.0" |
|
3171 | 3189 | sources."is-fullwidth-code-point-1.0.0" |
|
3172 | 3190 | sources."is-stream-1.1.0" |
|
3173 | 3191 | sources."is-typedarray-1.0.0" |
|
3174 | 3192 | sources."isarray-0.0.1" |
|
3175 | 3193 | sources."isexe-2.0.0" |
|
3176 | 3194 | sources."isstream-0.1.2" |
|
3177 | 3195 | sources."jquery-1.11.3" |
|
3178 | 3196 | sources."js-yaml-2.0.5" |
|
3179 | 3197 | sources."jsbn-0.1.1" |
|
3180 | 3198 | (sources."jshint-2.9.6" // { |
|
3181 | 3199 | dependencies = [ |
|
3182 |
sources."lodash-4.17.1 |
|
|
3200 | sources."lodash-4.17.11" | |
|
3183 | 3201 | sources."minimatch-3.0.4" |
|
3184 | 3202 | ]; |
|
3185 | 3203 | }) |
|
3186 | 3204 | sources."json-schema-0.2.3" |
|
3187 | 3205 | sources."json-stable-stringify-1.0.1" |
|
3188 | 3206 | sources."json-stringify-safe-5.0.1" |
|
3189 | 3207 | sources."jsonfile-1.0.1" |
|
3190 | 3208 | sources."jsonify-0.0.0" |
|
3191 | 3209 | (sources."jsprim-1.4.1" // { |
|
3192 | 3210 | dependencies = [ |
|
3193 | 3211 | sources."assert-plus-1.0.0" |
|
3194 | 3212 | ]; |
|
3195 | 3213 | }) |
|
3196 | 3214 | sources."kew-0.7.0" |
|
3197 | 3215 | (sources."klaw-1.3.1" // { |
|
3198 | 3216 | dependencies = [ |
|
3199 | 3217 | sources."graceful-fs-4.1.11" |
|
3200 | 3218 | ]; |
|
3201 | 3219 | }) |
|
3202 | 3220 | (sources."less-2.7.3" // { |
|
3203 | 3221 | dependencies = [ |
|
3204 | 3222 | sources."graceful-fs-4.1.11" |
|
3205 | 3223 | sources."source-map-0.5.7" |
|
3206 | 3224 | ]; |
|
3207 | 3225 | }) |
|
3208 | 3226 | sources."levn-0.3.0" |
|
3209 | 3227 | sources."lodash-0.9.2" |
|
3210 | 3228 | sources."lru-cache-2.7.3" |
|
3211 | 3229 | sources."mime-1.6.0" |
|
3212 |
sources."mime-db-1.3 |
|
|
3213 |
sources."mime-types-2.1. |
|
|
3230 | sources."mime-db-1.36.0" | |
|
3231 | sources."mime-types-2.1.20" | |
|
3214 | 3232 | sources."minimatch-0.2.14" |
|
3215 | 3233 | sources."minimist-0.0.8" |
|
3216 |
sources."minipass-2.3. |
|
|
3217 |
sources."minizlib-1.1. |
|
|
3234 | sources."minipass-2.3.4" | |
|
3235 | sources."minizlib-1.1.1" | |
|
3218 | 3236 | sources."mkdirp-0.5.1" |
|
3219 | 3237 | sources."moment-2.22.2" |
|
3220 | 3238 | sources."mousetrap-1.6.2" |
|
3221 | 3239 | sources."ms-2.0.0" |
|
3222 | 3240 | sources."ncp-0.4.2" |
|
3223 | 3241 | sources."nijs-0.0.25" |
|
3224 | 3242 | sources."node2nix-1.6.0" |
|
3225 | 3243 | sources."nopt-1.0.10" |
|
3226 | 3244 | (sources."noptify-0.0.3" // { |
|
3227 | 3245 | dependencies = [ |
|
3228 | 3246 | sources."nopt-2.0.0" |
|
3229 | 3247 | ]; |
|
3230 | 3248 | }) |
|
3231 | 3249 | sources."normalize-package-data-2.4.0" |
|
3232 | 3250 | sources."npm-package-arg-6.1.0" |
|
3233 | 3251 | (sources."npm-registry-client-8.5.1" // { |
|
3234 | 3252 | dependencies = [ |
|
3235 | 3253 | sources."graceful-fs-4.1.11" |
|
3236 | 3254 | ]; |
|
3237 | 3255 | }) |
|
3238 | 3256 | (sources."npmconf-2.1.3" // { |
|
3239 | 3257 | dependencies = [ |
|
3240 | 3258 | sources."nopt-3.0.6" |
|
3241 | 3259 | sources."once-1.3.3" |
|
3242 | 3260 | sources."semver-4.3.6" |
|
3243 | 3261 | ]; |
|
3244 | 3262 | }) |
|
3245 | 3263 | sources."npmlog-4.1.2" |
|
3246 | 3264 | sources."number-is-nan-1.0.1" |
|
3247 | 3265 | sources."oauth-sign-0.8.2" |
|
3248 | 3266 | sources."object-assign-4.1.1" |
|
3249 | 3267 | sources."once-1.4.0" |
|
3250 | 3268 | sources."optionator-0.8.2" |
|
3251 | 3269 | sources."optparse-1.0.5" |
|
3252 | 3270 | sources."os-homedir-1.0.2" |
|
3253 | 3271 | sources."os-tmpdir-1.0.2" |
|
3254 | 3272 | sources."osenv-0.1.5" |
|
3255 | 3273 | sources."parse5-1.5.1" |
|
3256 | 3274 | sources."path-is-absolute-1.0.1" |
|
3257 | 3275 | sources."path-posix-1.0.0" |
|
3258 | 3276 | sources."pend-1.2.0" |
|
3259 | 3277 | sources."performance-now-0.2.0" |
|
3260 | 3278 | sources."phantom-4.0.12" |
|
3261 | 3279 | (sources."phantomjs-prebuilt-2.1.16" // { |
|
3262 | 3280 | dependencies = [ |
|
3263 |
sources."es6-promise-4.2. |
|
|
3281 | sources."es6-promise-4.2.5" | |
|
3264 | 3282 | sources."fs-extra-1.0.0" |
|
3265 | 3283 | sources."graceful-fs-4.1.11" |
|
3266 | 3284 | sources."jsonfile-2.4.0" |
|
3267 | 3285 | sources."which-1.3.1" |
|
3268 | 3286 | ]; |
|
3269 | 3287 | }) |
|
3270 | 3288 | sources."pinkie-2.0.4" |
|
3271 | 3289 | sources."pinkie-promise-2.0.1" |
|
3272 | 3290 | sources."prelude-ls-1.1.2" |
|
3273 | 3291 | sources."process-nextick-args-2.0.0" |
|
3274 | 3292 | sources."progress-1.1.8" |
|
3275 | 3293 | sources."promise-7.3.1" |
|
3276 | 3294 | sources."proto-list-1.2.4" |
|
3277 | 3295 | sources."prr-1.0.1" |
|
3278 | 3296 | sources."punycode-1.4.1" |
|
3279 | 3297 | sources."qrious-4.0.2" |
|
3280 | 3298 | sources."qs-6.4.0" |
|
3281 | 3299 | (sources."readable-stream-2.3.6" // { |
|
3282 | 3300 | dependencies = [ |
|
3283 | 3301 | sources."isarray-1.0.0" |
|
3284 | 3302 | ]; |
|
3285 | 3303 | }) |
|
3286 | 3304 | sources."reduce-flatten-1.0.1" |
|
3287 | 3305 | sources."regenerator-runtime-0.10.5" |
|
3288 | 3306 | sources."request-2.81.0" |
|
3289 | 3307 | sources."request-progress-2.0.1" |
|
3290 | 3308 | sources."retry-0.10.1" |
|
3291 | 3309 | sources."rimraf-2.2.8" |
|
3292 | 3310 | sources."safe-buffer-5.1.2" |
|
3293 | 3311 | sources."safer-buffer-2.1.2" |
|
3294 | 3312 | sources."select-1.1.2" |
|
3295 |
sources."semver-5.5. |
|
|
3313 | sources."semver-5.5.1" | |
|
3296 | 3314 | sources."set-blocking-2.0.0" |
|
3297 | 3315 | sources."shelljs-0.3.0" |
|
3298 | 3316 | sources."sigmund-1.0.1" |
|
3299 | 3317 | sources."signal-exit-3.0.2" |
|
3300 | 3318 | sources."slasp-0.0.4" |
|
3301 | 3319 | sources."slide-1.1.6" |
|
3302 | 3320 | sources."sntp-1.0.9" |
|
3303 | 3321 | sources."source-map-0.3.0" |
|
3304 |
sources."spdx-correct-3.0. |
|
|
3305 |
sources."spdx-exceptions-2. |
|
|
3322 | sources."spdx-correct-3.0.2" | |
|
3323 | sources."spdx-exceptions-2.2.0" | |
|
3306 | 3324 | sources."spdx-expression-parse-3.0.0" |
|
3307 |
sources."spdx-license-ids-3.0. |
|
|
3325 | sources."spdx-license-ids-3.0.1" | |
|
3308 | 3326 | sources."split-1.0.1" |
|
3309 |
(sources."sshpk-1.1 |
|
|
3327 | (sources."sshpk-1.15.1" // { | |
|
3310 | 3328 | dependencies = [ |
|
3311 | 3329 | sources."assert-plus-1.0.0" |
|
3312 | 3330 | ]; |
|
3313 | 3331 | }) |
|
3314 | 3332 | sources."ssri-5.3.0" |
|
3315 | 3333 | sources."stack-trace-0.0.10" |
|
3334 | sources."sticky-sidebar-3.3.1" | |
|
3316 | 3335 | sources."string-width-1.0.2" |
|
3317 | 3336 | sources."string_decoder-1.1.1" |
|
3318 | 3337 | sources."stringstream-0.0.6" |
|
3319 | 3338 | sources."strip-ansi-3.0.1" |
|
3320 | 3339 | sources."strip-json-comments-1.0.4" |
|
3321 | 3340 | sources."supports-color-2.0.0" |
|
3322 | 3341 | sources."table-layout-0.3.0" |
|
3323 | 3342 | sources."tar-3.1.15" |
|
3324 | 3343 | sources."temp-0.8.3" |
|
3325 | 3344 | sources."test-value-2.1.0" |
|
3326 | 3345 | sources."throttleit-1.0.0" |
|
3327 | 3346 | sources."through-2.3.8" |
|
3328 | 3347 | sources."tiny-emitter-2.0.2" |
|
3329 | 3348 | (sources."tiny-lr-fork-0.0.5" // { |
|
3330 | 3349 | dependencies = [ |
|
3331 | 3350 | sources."qs-0.5.6" |
|
3332 | 3351 | ]; |
|
3333 | 3352 | }) |
|
3334 | 3353 | sources."tough-cookie-2.3.4" |
|
3335 | 3354 | sources."tunnel-agent-0.6.0" |
|
3336 | 3355 | sources."tweetnacl-0.14.5" |
|
3337 | 3356 | sources."type-check-0.3.2" |
|
3338 | 3357 | sources."typedarray-0.0.6" |
|
3339 | 3358 | sources."typical-2.6.1" |
|
3340 | 3359 | sources."uid-number-0.0.5" |
|
3341 | 3360 | sources."underscore-1.7.0" |
|
3342 | 3361 | sources."underscore.string-2.2.1" |
|
3343 | 3362 | sources."unicode-5.2.0-0.7.5" |
|
3344 | 3363 | sources."util-deprecate-1.0.2" |
|
3345 | 3364 | sources."uuid-3.3.2" |
|
3346 |
sources."validate-npm-package-license-3.0. |
|
|
3365 | sources."validate-npm-package-license-3.0.4" | |
|
3347 | 3366 | sources."validate-npm-package-name-3.0.0" |
|
3348 | 3367 | (sources."verror-1.10.0" // { |
|
3349 | 3368 | dependencies = [ |
|
3350 | 3369 | sources."assert-plus-1.0.0" |
|
3351 | 3370 | ]; |
|
3352 | 3371 | }) |
|
3353 | 3372 | (sources."vulcanize-1.16.0" // { |
|
3354 | 3373 | dependencies = [ |
|
3355 | 3374 | sources."nopt-3.0.6" |
|
3356 | 3375 | ]; |
|
3357 | 3376 | }) |
|
3358 | 3377 | sources."walk-2.3.14" |
|
3378 | sources."waypoints-4.0.1" | |
|
3359 | 3379 | sources."which-1.0.9" |
|
3360 | 3380 | sources."wide-align-1.1.3" |
|
3361 |
(sources."winston-2.4. |
|
|
3381 | (sources."winston-2.4.4" // { | |
|
3362 | 3382 | dependencies = [ |
|
3363 | 3383 | sources."async-1.0.0" |
|
3364 | 3384 | sources."colors-1.0.3" |
|
3365 | 3385 | ]; |
|
3366 | 3386 | }) |
|
3367 | 3387 | sources."wordwrap-1.0.0" |
|
3368 | 3388 | sources."wordwrapjs-2.0.0" |
|
3369 | 3389 | sources."wrappy-1.0.2" |
|
3370 | 3390 | sources."yallist-3.0.2" |
|
3371 | 3391 | sources."yauzl-2.4.1" |
|
3372 | 3392 | ]; |
|
3373 | 3393 | buildInputs = globalBuildInputs; |
|
3374 | 3394 | meta = { |
|
3375 | 3395 | description = "RhodeCode JS packaged"; |
|
3376 | 3396 | license = "SEE LICENSE IN LICENSE.txt"; |
|
3377 | 3397 | }; |
|
3378 | 3398 | production = false; |
|
3379 | 3399 | bypassCache = false; |
|
3380 | 3400 | }; |
|
3381 | 3401 | in |
|
3382 | 3402 | { |
|
3383 | 3403 | tarball = nodeEnv.buildNodeSourceDist args; |
|
3384 | 3404 | package = nodeEnv.buildNodePackage args; |
|
3385 | 3405 | shell = nodeEnv.buildNodeShell args; |
|
3386 | 3406 | } No newline at end of file |
@@ -1,320 +1,320 b'' | |||
|
1 | 1 | # -*- coding: utf-8 -*- |
|
2 | 2 | |
|
3 | 3 | # Copyright (C) 2010-2018 RhodeCode GmbH |
|
4 | 4 | # |
|
5 | 5 | # This program is free software: you can redistribute it and/or modify |
|
6 | 6 | # it under the terms of the GNU Affero General Public License, version 3 |
|
7 | 7 | # (only), as published by the Free Software Foundation. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU Affero General Public License |
|
15 | 15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
16 | 16 | # |
|
17 | 17 | # This program is dual-licensed. If you wish to learn more about the |
|
18 | 18 | # RhodeCode Enterprise Edition, including its added features, Support services, |
|
19 | 19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ |
|
20 | 20 | |
|
21 | 21 | import pytest |
|
22 | 22 | |
|
23 | 23 | from rhodecode.tests import TestController |
|
24 | 24 | |
|
25 | 25 | from rhodecode.model.db import ( |
|
26 | 26 | ChangesetComment, Notification, UserNotification) |
|
27 | 27 | from rhodecode.model.meta import Session |
|
28 | 28 | from rhodecode.lib import helpers as h |
|
29 | 29 | |
|
30 | 30 | |
|
31 | 31 | def route_path(name, params=None, **kwargs): |
|
32 | 32 | import urllib |
|
33 | 33 | |
|
34 | 34 | base_url = { |
|
35 | 35 | 'repo_commit': '/{repo_name}/changeset/{commit_id}', |
|
36 | 36 | 'repo_commit_comment_create': '/{repo_name}/changeset/{commit_id}/comment/create', |
|
37 | 37 | 'repo_commit_comment_preview': '/{repo_name}/changeset/{commit_id}/comment/preview', |
|
38 | 38 | 'repo_commit_comment_delete': '/{repo_name}/changeset/{commit_id}/comment/{comment_id}/delete', |
|
39 | 39 | }[name].format(**kwargs) |
|
40 | 40 | |
|
41 | 41 | if params: |
|
42 | 42 | base_url = '{}?{}'.format(base_url, urllib.urlencode(params)) |
|
43 | 43 | return base_url |
|
44 | 44 | |
|
45 | 45 | |
|
46 | 46 | @pytest.mark.backends("git", "hg", "svn") |
|
47 | 47 | class TestRepoCommitCommentsView(TestController): |
|
48 | 48 | |
|
49 | 49 | @pytest.fixture(autouse=True) |
|
50 | 50 | def prepare(self, request, baseapp): |
|
51 | 51 | for x in ChangesetComment.query().all(): |
|
52 | 52 | Session().delete(x) |
|
53 | 53 | Session().commit() |
|
54 | 54 | |
|
55 | 55 | for x in Notification.query().all(): |
|
56 | 56 | Session().delete(x) |
|
57 | 57 | Session().commit() |
|
58 | 58 | |
|
59 | 59 | request.addfinalizer(self.cleanup) |
|
60 | 60 | |
|
61 | 61 | def cleanup(self): |
|
62 | 62 | for x in ChangesetComment.query().all(): |
|
63 | 63 | Session().delete(x) |
|
64 | 64 | Session().commit() |
|
65 | 65 | |
|
66 | 66 | for x in Notification.query().all(): |
|
67 | 67 | Session().delete(x) |
|
68 | 68 | Session().commit() |
|
69 | 69 | |
|
70 | 70 | @pytest.mark.parametrize('comment_type', ChangesetComment.COMMENT_TYPES) |
|
71 | 71 | def test_create(self, comment_type, backend): |
|
72 | 72 | self.log_user() |
|
73 | 73 | commit = backend.repo.get_commit('300') |
|
74 | 74 | commit_id = commit.raw_id |
|
75 | 75 | text = u'CommentOnCommit' |
|
76 | 76 | |
|
77 | 77 | params = {'text': text, 'csrf_token': self.csrf_token, |
|
78 | 78 | 'comment_type': comment_type} |
|
79 | 79 | self.app.post( |
|
80 | 80 | route_path('repo_commit_comment_create', |
|
81 | 81 | repo_name=backend.repo_name, commit_id=commit_id), |
|
82 | 82 | params=params) |
|
83 | 83 | |
|
84 | 84 | response = self.app.get( |
|
85 | 85 | route_path('repo_commit', |
|
86 | 86 | repo_name=backend.repo_name, commit_id=commit_id)) |
|
87 | 87 | |
|
88 | 88 | # test DB |
|
89 | 89 | assert ChangesetComment.query().count() == 1 |
|
90 | 90 | assert_comment_links(response, ChangesetComment.query().count(), 0) |
|
91 | 91 | |
|
92 | 92 | assert Notification.query().count() == 1 |
|
93 | 93 | assert ChangesetComment.query().count() == 1 |
|
94 | 94 | |
|
95 | 95 | notification = Notification.query().all()[0] |
|
96 | 96 | |
|
97 | 97 | comment_id = ChangesetComment.query().first().comment_id |
|
98 | 98 | assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT |
|
99 | 99 | |
|
100 | 100 | author = notification.created_by_user.username_and_name |
|
101 | 101 | sbj = '{0} left a {1} on commit `{2}` in the {3} repository'.format( |
|
102 | 102 | author, comment_type, h.show_id(commit), backend.repo_name) |
|
103 | 103 | assert sbj == notification.subject |
|
104 | 104 | |
|
105 | 105 | lnk = (u'/{0}/changeset/{1}#comment-{2}'.format( |
|
106 | 106 | backend.repo_name, commit_id, comment_id)) |
|
107 | 107 | assert lnk in notification.body |
|
108 | 108 | |
|
109 | 109 | @pytest.mark.parametrize('comment_type', ChangesetComment.COMMENT_TYPES) |
|
110 | 110 | def test_create_inline(self, comment_type, backend): |
|
111 | 111 | self.log_user() |
|
112 | 112 | commit = backend.repo.get_commit('300') |
|
113 | 113 | commit_id = commit.raw_id |
|
114 | 114 | text = u'CommentOnCommit' |
|
115 | 115 | f_path = 'vcs/web/simplevcs/views/repository.py' |
|
116 | 116 | line = 'n1' |
|
117 | 117 | |
|
118 | 118 | params = {'text': text, 'f_path': f_path, 'line': line, |
|
119 | 119 | 'comment_type': comment_type, |
|
120 | 120 | 'csrf_token': self.csrf_token} |
|
121 | 121 | |
|
122 | 122 | self.app.post( |
|
123 | 123 | route_path('repo_commit_comment_create', |
|
124 | 124 | repo_name=backend.repo_name, commit_id=commit_id), |
|
125 | 125 | params=params) |
|
126 | 126 | |
|
127 | 127 | response = self.app.get( |
|
128 | 128 | route_path('repo_commit', |
|
129 | 129 | repo_name=backend.repo_name, commit_id=commit_id)) |
|
130 | 130 | |
|
131 | 131 | # test DB |
|
132 | 132 | assert ChangesetComment.query().count() == 1 |
|
133 | 133 | assert_comment_links(response, 0, ChangesetComment.query().count()) |
|
134 | 134 | |
|
135 | 135 | if backend.alias == 'svn': |
|
136 | 136 | response.mustcontain( |
|
137 | 137 | '''data-f-path="vcs/commands/summary.py" ''' |
|
138 |
'''id=" |
|
|
138 | '''data-anchor-id="c-300-ad05457a43f8"''' | |
|
139 | 139 | ) |
|
140 | 140 | if backend.alias == 'git': |
|
141 | 141 | response.mustcontain( |
|
142 | 142 | '''data-f-path="vcs/backends/hg.py" ''' |
|
143 |
'''id=" |
|
|
143 | '''data-anchor-id="c-883e775e89ea-9c390eb52cd6"''' | |
|
144 | 144 | ) |
|
145 | 145 | |
|
146 | 146 | if backend.alias == 'hg': |
|
147 | 147 | response.mustcontain( |
|
148 | 148 | '''data-f-path="vcs/backends/hg.py" ''' |
|
149 |
'''id=" |
|
|
149 | '''data-anchor-id="c-e58d85a3973b-9c390eb52cd6"''' | |
|
150 | 150 | ) |
|
151 | 151 | |
|
152 | 152 | assert Notification.query().count() == 1 |
|
153 | 153 | assert ChangesetComment.query().count() == 1 |
|
154 | 154 | |
|
155 | 155 | notification = Notification.query().all()[0] |
|
156 | 156 | comment = ChangesetComment.query().first() |
|
157 | 157 | assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT |
|
158 | 158 | |
|
159 | 159 | assert comment.revision == commit_id |
|
160 | 160 | |
|
161 | 161 | author = notification.created_by_user.username_and_name |
|
162 | 162 | sbj = '{0} left a {1} on file `{2}` in commit `{3}` in the {4} repository'.format( |
|
163 | 163 | author, comment_type, f_path, h.show_id(commit), backend.repo_name) |
|
164 | 164 | |
|
165 | 165 | assert sbj == notification.subject |
|
166 | 166 | |
|
167 | 167 | lnk = (u'/{0}/changeset/{1}#comment-{2}'.format( |
|
168 | 168 | backend.repo_name, commit_id, comment.comment_id)) |
|
169 | 169 | assert lnk in notification.body |
|
170 | 170 | assert 'on line n1' in notification.body |
|
171 | 171 | |
|
172 | 172 | def test_create_with_mention(self, backend): |
|
173 | 173 | self.log_user() |
|
174 | 174 | |
|
175 | 175 | commit_id = backend.repo.get_commit('300').raw_id |
|
176 | 176 | text = u'@test_regular check CommentOnCommit' |
|
177 | 177 | |
|
178 | 178 | params = {'text': text, 'csrf_token': self.csrf_token} |
|
179 | 179 | self.app.post( |
|
180 | 180 | route_path('repo_commit_comment_create', |
|
181 | 181 | repo_name=backend.repo_name, commit_id=commit_id), |
|
182 | 182 | params=params) |
|
183 | 183 | |
|
184 | 184 | response = self.app.get( |
|
185 | 185 | route_path('repo_commit', |
|
186 | 186 | repo_name=backend.repo_name, commit_id=commit_id)) |
|
187 | 187 | # test DB |
|
188 | 188 | assert ChangesetComment.query().count() == 1 |
|
189 | 189 | assert_comment_links(response, ChangesetComment.query().count(), 0) |
|
190 | 190 | |
|
191 | 191 | notification = Notification.query().one() |
|
192 | 192 | |
|
193 | 193 | assert len(notification.recipients) == 2 |
|
194 | 194 | users = [x.username for x in notification.recipients] |
|
195 | 195 | |
|
196 | 196 | # test_regular gets notification by @mention |
|
197 | 197 | assert sorted(users) == [u'test_admin', u'test_regular'] |
|
198 | 198 | |
|
199 | 199 | def test_create_with_status_change(self, backend): |
|
200 | 200 | self.log_user() |
|
201 | 201 | commit = backend.repo.get_commit('300') |
|
202 | 202 | commit_id = commit.raw_id |
|
203 | 203 | text = u'CommentOnCommit' |
|
204 | 204 | f_path = 'vcs/web/simplevcs/views/repository.py' |
|
205 | 205 | line = 'n1' |
|
206 | 206 | |
|
207 | 207 | params = {'text': text, 'changeset_status': 'approved', |
|
208 | 208 | 'csrf_token': self.csrf_token} |
|
209 | 209 | |
|
210 | 210 | self.app.post( |
|
211 | 211 | route_path( |
|
212 | 212 | 'repo_commit_comment_create', |
|
213 | 213 | repo_name=backend.repo_name, commit_id=commit_id), |
|
214 | 214 | params=params) |
|
215 | 215 | |
|
216 | 216 | response = self.app.get( |
|
217 | 217 | route_path('repo_commit', |
|
218 | 218 | repo_name=backend.repo_name, commit_id=commit_id)) |
|
219 | 219 | |
|
220 | 220 | # test DB |
|
221 | 221 | assert ChangesetComment.query().count() == 1 |
|
222 | 222 | assert_comment_links(response, ChangesetComment.query().count(), 0) |
|
223 | 223 | |
|
224 | 224 | assert Notification.query().count() == 1 |
|
225 | 225 | assert ChangesetComment.query().count() == 1 |
|
226 | 226 | |
|
227 | 227 | notification = Notification.query().all()[0] |
|
228 | 228 | |
|
229 | 229 | comment_id = ChangesetComment.query().first().comment_id |
|
230 | 230 | assert notification.type_ == Notification.TYPE_CHANGESET_COMMENT |
|
231 | 231 | |
|
232 | 232 | author = notification.created_by_user.username_and_name |
|
233 | 233 | sbj = '[status: Approved] {0} left a note on commit `{1}` in the {2} repository'.format( |
|
234 | 234 | author, h.show_id(commit), backend.repo_name) |
|
235 | 235 | assert sbj == notification.subject |
|
236 | 236 | |
|
237 | 237 | lnk = (u'/{0}/changeset/{1}#comment-{2}'.format( |
|
238 | 238 | backend.repo_name, commit_id, comment_id)) |
|
239 | 239 | assert lnk in notification.body |
|
240 | 240 | |
|
241 | 241 | def test_delete(self, backend): |
|
242 | 242 | self.log_user() |
|
243 | 243 | commit_id = backend.repo.get_commit('300').raw_id |
|
244 | 244 | text = u'CommentOnCommit' |
|
245 | 245 | |
|
246 | 246 | params = {'text': text, 'csrf_token': self.csrf_token} |
|
247 | 247 | self.app.post( |
|
248 | 248 | route_path( |
|
249 | 249 | 'repo_commit_comment_create', |
|
250 | 250 | repo_name=backend.repo_name, commit_id=commit_id), |
|
251 | 251 | params=params) |
|
252 | 252 | |
|
253 | 253 | comments = ChangesetComment.query().all() |
|
254 | 254 | assert len(comments) == 1 |
|
255 | 255 | comment_id = comments[0].comment_id |
|
256 | 256 | |
|
257 | 257 | self.app.post( |
|
258 | 258 | route_path('repo_commit_comment_delete', |
|
259 | 259 | repo_name=backend.repo_name, |
|
260 | 260 | commit_id=commit_id, |
|
261 | 261 | comment_id=comment_id), |
|
262 | 262 | params={'csrf_token': self.csrf_token}) |
|
263 | 263 | |
|
264 | 264 | comments = ChangesetComment.query().all() |
|
265 | 265 | assert len(comments) == 0 |
|
266 | 266 | |
|
267 | 267 | response = self.app.get( |
|
268 | 268 | route_path('repo_commit', |
|
269 | 269 | repo_name=backend.repo_name, commit_id=commit_id)) |
|
270 | 270 | assert_comment_links(response, 0, 0) |
|
271 | 271 | |
|
272 | 272 | @pytest.mark.parametrize('renderer, input, output', [ |
|
273 | 273 | ('rst', 'plain text', '<p>plain text</p>'), |
|
274 | 274 | ('rst', 'header\n======', '<h1 class="title">header</h1>'), |
|
275 | 275 | ('rst', '*italics*', '<em>italics</em>'), |
|
276 | 276 | ('rst', '**bold**', '<strong>bold</strong>'), |
|
277 | 277 | ('markdown', 'plain text', '<p>plain text</p>'), |
|
278 | 278 | ('markdown', '# header', '<h1>header</h1>'), |
|
279 | 279 | ('markdown', '*italics*', '<em>italics</em>'), |
|
280 | 280 | ('markdown', '**bold**', '<strong>bold</strong>'), |
|
281 | 281 | ], ids=['rst-plain', 'rst-header', 'rst-italics', 'rst-bold', 'md-plain', |
|
282 | 282 | 'md-header', 'md-italics', 'md-bold', ]) |
|
283 | 283 | def test_preview(self, renderer, input, output, backend, xhr_header): |
|
284 | 284 | self.log_user() |
|
285 | 285 | params = { |
|
286 | 286 | 'renderer': renderer, |
|
287 | 287 | 'text': input, |
|
288 | 288 | 'csrf_token': self.csrf_token |
|
289 | 289 | } |
|
290 | 290 | commit_id = '0' * 16 # fake this for tests |
|
291 | 291 | response = self.app.post( |
|
292 | 292 | route_path('repo_commit_comment_preview', |
|
293 | 293 | repo_name=backend.repo_name, commit_id=commit_id,), |
|
294 | 294 | params=params, |
|
295 | 295 | extra_environ=xhr_header) |
|
296 | 296 | |
|
297 | 297 | response.mustcontain(output) |
|
298 | 298 | |
|
299 | 299 | |
|
300 | 300 | def assert_comment_links(response, comments, inline_comments): |
|
301 | 301 | if comments == 1: |
|
302 | 302 | comments_text = "%d Commit comment" % comments |
|
303 | 303 | else: |
|
304 | 304 | comments_text = "%d Commit comments" % comments |
|
305 | 305 | |
|
306 | 306 | if inline_comments == 1: |
|
307 | 307 | inline_comments_text = "%d Inline Comment" % inline_comments |
|
308 | 308 | else: |
|
309 | 309 | inline_comments_text = "%d Inline Comments" % inline_comments |
|
310 | 310 | |
|
311 | 311 | if comments: |
|
312 | 312 | response.mustcontain('<a href="#comments">%s</a>,' % comments_text) |
|
313 | 313 | else: |
|
314 | 314 | response.mustcontain(comments_text) |
|
315 | 315 | |
|
316 | 316 | if inline_comments: |
|
317 | 317 | response.mustcontain( |
|
318 | 318 | 'id="inline-comments-counter">%s</' % inline_comments_text) |
|
319 | 319 | else: |
|
320 | 320 | response.mustcontain(inline_comments_text) |
@@ -1,666 +1,666 b'' | |||
|
1 | 1 | # -*- coding: utf-8 -*- |
|
2 | 2 | |
|
3 | 3 | # Copyright (C) 2010-2018 RhodeCode GmbH |
|
4 | 4 | # |
|
5 | 5 | # This program is free software: you can redistribute it and/or modify |
|
6 | 6 | # it under the terms of the GNU Affero General Public License, version 3 |
|
7 | 7 | # (only), as published by the Free Software Foundation. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU Affero General Public License |
|
15 | 15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
16 | 16 | # |
|
17 | 17 | # This program is dual-licensed. If you wish to learn more about the |
|
18 | 18 | # RhodeCode Enterprise Edition, including its added features, Support services, |
|
19 | 19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ |
|
20 | 20 | |
|
21 | 21 | import mock |
|
22 | 22 | import pytest |
|
23 | 23 | import lxml.html |
|
24 | 24 | |
|
25 | 25 | from rhodecode.lib.vcs.exceptions import RepositoryRequirementError |
|
26 | 26 | from rhodecode.tests import assert_session_flash |
|
27 | 27 | from rhodecode.tests.utils import AssertResponse, commit_change |
|
28 | 28 | |
|
29 | 29 | |
|
30 | 30 | def route_path(name, params=None, **kwargs): |
|
31 | 31 | import urllib |
|
32 | 32 | |
|
33 | 33 | base_url = { |
|
34 | 34 | 'repo_compare_select': '/{repo_name}/compare', |
|
35 | 35 | 'repo_compare': '/{repo_name}/compare/{source_ref_type}@{source_ref}...{target_ref_type}@{target_ref}', |
|
36 | 36 | }[name].format(**kwargs) |
|
37 | 37 | |
|
38 | 38 | if params: |
|
39 | 39 | base_url = '{}?{}'.format(base_url, urllib.urlencode(params)) |
|
40 | 40 | return base_url |
|
41 | 41 | |
|
42 | 42 | |
|
43 | 43 | @pytest.mark.usefixtures("autologin_user", "app") |
|
44 | 44 | class TestCompareView(object): |
|
45 | 45 | |
|
46 | 46 | def test_compare_index_is_reached_at_least_once(self, backend): |
|
47 | 47 | repo = backend.repo |
|
48 | 48 | self.app.get( |
|
49 | 49 | route_path('repo_compare_select', repo_name=repo.repo_name)) |
|
50 | 50 | |
|
51 | 51 | @pytest.mark.xfail_backends("svn", reason="Requires pull") |
|
52 | 52 | def test_compare_remote_with_different_commit_indexes(self, backend): |
|
53 | 53 | # Preparing the following repository structure: |
|
54 | 54 | # |
|
55 | 55 | # Origin repository has two commits: |
|
56 | 56 | # |
|
57 | 57 | # 0 1 |
|
58 | 58 | # A -- D |
|
59 | 59 | # |
|
60 | 60 | # The fork of it has a few more commits and "D" has a commit index |
|
61 | 61 | # which does not exist in origin. |
|
62 | 62 | # |
|
63 | 63 | # 0 1 2 3 4 |
|
64 | 64 | # A -- -- -- D -- E |
|
65 | 65 | # \- B -- C |
|
66 | 66 | # |
|
67 | 67 | |
|
68 | 68 | fork = backend.create_repo() |
|
69 | 69 | |
|
70 | 70 | # prepare fork |
|
71 | 71 | commit0 = commit_change( |
|
72 | 72 | fork.repo_name, filename='file1', content='A', |
|
73 | 73 | message='A', vcs_type=backend.alias, parent=None, newfile=True) |
|
74 | 74 | |
|
75 | 75 | commit1 = commit_change( |
|
76 | 76 | fork.repo_name, filename='file1', content='B', |
|
77 | 77 | message='B, child of A', vcs_type=backend.alias, parent=commit0) |
|
78 | 78 | |
|
79 | 79 | commit_change( # commit 2 |
|
80 | 80 | fork.repo_name, filename='file1', content='C', |
|
81 | 81 | message='C, child of B', vcs_type=backend.alias, parent=commit1) |
|
82 | 82 | |
|
83 | 83 | commit3 = commit_change( |
|
84 | 84 | fork.repo_name, filename='file1', content='D', |
|
85 | 85 | message='D, child of A', vcs_type=backend.alias, parent=commit0) |
|
86 | 86 | |
|
87 | 87 | commit4 = commit_change( |
|
88 | 88 | fork.repo_name, filename='file1', content='E', |
|
89 | 89 | message='E, child of D', vcs_type=backend.alias, parent=commit3) |
|
90 | 90 | |
|
91 | 91 | # prepare origin repository, taking just the history up to D |
|
92 | 92 | origin = backend.create_repo() |
|
93 | 93 | |
|
94 | 94 | origin_repo = origin.scm_instance(cache=False) |
|
95 | 95 | origin_repo.config.clear_section('hooks') |
|
96 | 96 | origin_repo.pull(fork.repo_full_path, commit_ids=[commit3.raw_id]) |
|
97 | 97 | |
|
98 | 98 | # Verify test fixture setup |
|
99 | 99 | # This does not work for git |
|
100 | 100 | if backend.alias != 'git': |
|
101 | 101 | assert 5 == len(fork.scm_instance().commit_ids) |
|
102 | 102 | assert 2 == len(origin_repo.commit_ids) |
|
103 | 103 | |
|
104 | 104 | # Comparing the revisions |
|
105 | 105 | response = self.app.get( |
|
106 | 106 | route_path('repo_compare', |
|
107 | 107 | repo_name=origin.repo_name, |
|
108 | 108 | source_ref_type="rev", source_ref=commit3.raw_id, |
|
109 | 109 | target_ref_type="rev", target_ref=commit4.raw_id, |
|
110 | 110 | params=dict(merge='1', target_repo=fork.repo_name) |
|
111 | 111 | )) |
|
112 | 112 | |
|
113 | 113 | compare_page = ComparePage(response) |
|
114 | 114 | compare_page.contains_commits([commit4]) |
|
115 | 115 | |
|
116 | 116 | @pytest.mark.xfail_backends("svn", reason="Depends on branch support") |
|
117 | 117 | def test_compare_forks_on_branch_extra_commits(self, backend): |
|
118 | 118 | repo1 = backend.create_repo() |
|
119 | 119 | |
|
120 | 120 | # commit something ! |
|
121 | 121 | commit0 = commit_change( |
|
122 | 122 | repo1.repo_name, filename='file1', content='line1\n', |
|
123 | 123 | message='commit1', vcs_type=backend.alias, parent=None, |
|
124 | 124 | newfile=True) |
|
125 | 125 | |
|
126 | 126 | # fork this repo |
|
127 | 127 | repo2 = backend.create_fork() |
|
128 | 128 | |
|
129 | 129 | # add two extra commit into fork |
|
130 | 130 | commit1 = commit_change( |
|
131 | 131 | repo2.repo_name, filename='file1', content='line1\nline2\n', |
|
132 | 132 | message='commit2', vcs_type=backend.alias, parent=commit0) |
|
133 | 133 | |
|
134 | 134 | commit2 = commit_change( |
|
135 | 135 | repo2.repo_name, filename='file1', content='line1\nline2\nline3\n', |
|
136 | 136 | message='commit3', vcs_type=backend.alias, parent=commit1) |
|
137 | 137 | |
|
138 | 138 | commit_id1 = repo1.scm_instance().DEFAULT_BRANCH_NAME |
|
139 | 139 | commit_id2 = repo2.scm_instance().DEFAULT_BRANCH_NAME |
|
140 | 140 | |
|
141 | 141 | response = self.app.get( |
|
142 | 142 | route_path('repo_compare', |
|
143 | 143 | repo_name=repo1.repo_name, |
|
144 | 144 | source_ref_type="branch", source_ref=commit_id2, |
|
145 | 145 | target_ref_type="branch", target_ref=commit_id1, |
|
146 | 146 | params=dict(merge='1', target_repo=repo2.repo_name) |
|
147 | 147 | )) |
|
148 | 148 | |
|
149 | 149 | response.mustcontain('%s@%s' % (repo1.repo_name, commit_id2)) |
|
150 | 150 | response.mustcontain('%s@%s' % (repo2.repo_name, commit_id1)) |
|
151 | 151 | |
|
152 | 152 | compare_page = ComparePage(response) |
|
153 | 153 | compare_page.contains_change_summary(1, 2, 0) |
|
154 | 154 | compare_page.contains_commits([commit1, commit2]) |
|
155 | 155 | |
|
156 | 156 | anchor = 'a_c-{}-826e8142e6ba'.format(commit0.short_id) |
|
157 | 157 | compare_page.contains_file_links_and_anchors([('file1', anchor), ]) |
|
158 | 158 | |
|
159 | 159 | # Swap is removed when comparing branches since it's a PR feature and |
|
160 | 160 | # it is then a preview mode |
|
161 | 161 | compare_page.swap_is_hidden() |
|
162 | 162 | compare_page.target_source_are_disabled() |
|
163 | 163 | |
|
164 | 164 | @pytest.mark.xfail_backends("svn", reason="Depends on branch support") |
|
165 | 165 | def test_compare_forks_on_branch_extra_commits_origin_has_incomming( |
|
166 | 166 | self, backend): |
|
167 | 167 | repo1 = backend.create_repo() |
|
168 | 168 | |
|
169 | 169 | # commit something ! |
|
170 | 170 | commit0 = commit_change( |
|
171 | 171 | repo1.repo_name, filename='file1', content='line1\n', |
|
172 | 172 | message='commit1', vcs_type=backend.alias, parent=None, |
|
173 | 173 | newfile=True) |
|
174 | 174 | |
|
175 | 175 | # fork this repo |
|
176 | 176 | repo2 = backend.create_fork() |
|
177 | 177 | |
|
178 | 178 | # now commit something to origin repo |
|
179 | 179 | commit_change( |
|
180 | 180 | repo1.repo_name, filename='file2', content='line1file2\n', |
|
181 | 181 | message='commit2', vcs_type=backend.alias, parent=commit0, |
|
182 | 182 | newfile=True) |
|
183 | 183 | |
|
184 | 184 | # add two extra commit into fork |
|
185 | 185 | commit1 = commit_change( |
|
186 | 186 | repo2.repo_name, filename='file1', content='line1\nline2\n', |
|
187 | 187 | message='commit2', vcs_type=backend.alias, parent=commit0) |
|
188 | 188 | |
|
189 | 189 | commit2 = commit_change( |
|
190 | 190 | repo2.repo_name, filename='file1', content='line1\nline2\nline3\n', |
|
191 | 191 | message='commit3', vcs_type=backend.alias, parent=commit1) |
|
192 | 192 | |
|
193 | 193 | commit_id1 = repo1.scm_instance().DEFAULT_BRANCH_NAME |
|
194 | 194 | commit_id2 = repo2.scm_instance().DEFAULT_BRANCH_NAME |
|
195 | 195 | |
|
196 | 196 | response = self.app.get( |
|
197 | 197 | route_path('repo_compare', |
|
198 | 198 | repo_name=repo1.repo_name, |
|
199 | 199 | source_ref_type="branch", source_ref=commit_id2, |
|
200 | 200 | target_ref_type="branch", target_ref=commit_id1, |
|
201 | 201 | params=dict(merge='1', target_repo=repo2.repo_name), |
|
202 | 202 | )) |
|
203 | 203 | |
|
204 | 204 | response.mustcontain('%s@%s' % (repo1.repo_name, commit_id2)) |
|
205 | 205 | response.mustcontain('%s@%s' % (repo2.repo_name, commit_id1)) |
|
206 | 206 | |
|
207 | 207 | compare_page = ComparePage(response) |
|
208 | 208 | compare_page.contains_change_summary(1, 2, 0) |
|
209 | 209 | compare_page.contains_commits([commit1, commit2]) |
|
210 | 210 | anchor = 'a_c-{}-826e8142e6ba'.format(commit0.short_id) |
|
211 | 211 | compare_page.contains_file_links_and_anchors([('file1', anchor), ]) |
|
212 | 212 | |
|
213 | 213 | # Swap is removed when comparing branches since it's a PR feature and |
|
214 | 214 | # it is then a preview mode |
|
215 | 215 | compare_page.swap_is_hidden() |
|
216 | 216 | compare_page.target_source_are_disabled() |
|
217 | 217 | |
|
218 | 218 | @pytest.mark.xfail_backends("svn") |
|
219 | 219 | # TODO(marcink): no svn support for compare two seperate repos |
|
220 | 220 | def test_compare_of_unrelated_forks(self, backend): |
|
221 | 221 | orig = backend.create_repo(number_of_commits=1) |
|
222 | 222 | fork = backend.create_repo(number_of_commits=1) |
|
223 | 223 | |
|
224 | 224 | response = self.app.get( |
|
225 | 225 | route_path('repo_compare', |
|
226 | 226 | repo_name=orig.repo_name, |
|
227 | 227 | source_ref_type="rev", source_ref="tip", |
|
228 | 228 | target_ref_type="rev", target_ref="tip", |
|
229 | 229 | params=dict(merge='1', target_repo=fork.repo_name), |
|
230 | 230 | ), |
|
231 | 231 | status=302) |
|
232 | 232 | response = response.follow() |
|
233 | 233 | response.mustcontain("Repositories unrelated.") |
|
234 | 234 | |
|
235 | 235 | @pytest.mark.xfail_backends("svn") |
|
236 | 236 | def test_compare_cherry_pick_commits_from_bottom(self, backend): |
|
237 | 237 | |
|
238 | 238 | # repo1: |
|
239 | 239 | # commit0: |
|
240 | 240 | # commit1: |
|
241 | 241 | # repo1-fork- in which we will cherry pick bottom commits |
|
242 | 242 | # commit0: |
|
243 | 243 | # commit1: |
|
244 | 244 | # commit2: x |
|
245 | 245 | # commit3: x |
|
246 | 246 | # commit4: x |
|
247 | 247 | # commit5: |
|
248 | 248 | # make repo1, and commit1+commit2 |
|
249 | 249 | |
|
250 | 250 | repo1 = backend.create_repo() |
|
251 | 251 | |
|
252 | 252 | # commit something ! |
|
253 | 253 | commit0 = commit_change( |
|
254 | 254 | repo1.repo_name, filename='file1', content='line1\n', |
|
255 | 255 | message='commit1', vcs_type=backend.alias, parent=None, |
|
256 | 256 | newfile=True) |
|
257 | 257 | commit1 = commit_change( |
|
258 | 258 | repo1.repo_name, filename='file1', content='line1\nline2\n', |
|
259 | 259 | message='commit2', vcs_type=backend.alias, parent=commit0) |
|
260 | 260 | |
|
261 | 261 | # fork this repo |
|
262 | 262 | repo2 = backend.create_fork() |
|
263 | 263 | |
|
264 | 264 | # now make commit3-6 |
|
265 | 265 | commit2 = commit_change( |
|
266 | 266 | repo1.repo_name, filename='file1', content='line1\nline2\nline3\n', |
|
267 | 267 | message='commit3', vcs_type=backend.alias, parent=commit1) |
|
268 | 268 | commit3 = commit_change( |
|
269 | 269 | repo1.repo_name, filename='file1', |
|
270 | 270 | content='line1\nline2\nline3\nline4\n', message='commit4', |
|
271 | 271 | vcs_type=backend.alias, parent=commit2) |
|
272 | 272 | commit4 = commit_change( |
|
273 | 273 | repo1.repo_name, filename='file1', |
|
274 | 274 | content='line1\nline2\nline3\nline4\nline5\n', message='commit5', |
|
275 | 275 | vcs_type=backend.alias, parent=commit3) |
|
276 | 276 | commit_change( # commit 5 |
|
277 | 277 | repo1.repo_name, filename='file1', |
|
278 | 278 | content='line1\nline2\nline3\nline4\nline5\nline6\n', |
|
279 | 279 | message='commit6', vcs_type=backend.alias, parent=commit4) |
|
280 | 280 | |
|
281 | 281 | response = self.app.get( |
|
282 | 282 | route_path('repo_compare', |
|
283 | 283 | repo_name=repo2.repo_name, |
|
284 | 284 | # parent of commit2, in target repo2 |
|
285 | 285 | source_ref_type="rev", source_ref=commit1.raw_id, |
|
286 | 286 | target_ref_type="rev", target_ref=commit4.raw_id, |
|
287 | 287 | params=dict(merge='1', target_repo=repo1.repo_name), |
|
288 | 288 | )) |
|
289 | 289 | response.mustcontain('%s@%s' % (repo2.repo_name, commit1.short_id)) |
|
290 | 290 | response.mustcontain('%s@%s' % (repo1.repo_name, commit4.short_id)) |
|
291 | 291 | |
|
292 | 292 | # files |
|
293 | 293 | compare_page = ComparePage(response) |
|
294 | 294 | compare_page.contains_change_summary(1, 3, 0) |
|
295 | 295 | compare_page.contains_commits([commit2, commit3, commit4]) |
|
296 | 296 | anchor = 'a_c-{}-826e8142e6ba'.format(commit1.short_id) |
|
297 | 297 | compare_page.contains_file_links_and_anchors([('file1', anchor),]) |
|
298 | 298 | |
|
299 | 299 | @pytest.mark.xfail_backends("svn") |
|
300 | 300 | def test_compare_cherry_pick_commits_from_top(self, backend): |
|
301 | 301 | # repo1: |
|
302 | 302 | # commit0: |
|
303 | 303 | # commit1: |
|
304 | 304 | # repo1-fork- in which we will cherry pick bottom commits |
|
305 | 305 | # commit0: |
|
306 | 306 | # commit1: |
|
307 | 307 | # commit2: |
|
308 | 308 | # commit3: x |
|
309 | 309 | # commit4: x |
|
310 | 310 | # commit5: x |
|
311 | 311 | |
|
312 | 312 | # make repo1, and commit1+commit2 |
|
313 | 313 | repo1 = backend.create_repo() |
|
314 | 314 | |
|
315 | 315 | # commit something ! |
|
316 | 316 | commit0 = commit_change( |
|
317 | 317 | repo1.repo_name, filename='file1', content='line1\n', |
|
318 | 318 | message='commit1', vcs_type=backend.alias, parent=None, |
|
319 | 319 | newfile=True) |
|
320 | 320 | commit1 = commit_change( |
|
321 | 321 | repo1.repo_name, filename='file1', content='line1\nline2\n', |
|
322 | 322 | message='commit2', vcs_type=backend.alias, parent=commit0) |
|
323 | 323 | |
|
324 | 324 | # fork this repo |
|
325 | 325 | backend.create_fork() |
|
326 | 326 | |
|
327 | 327 | # now make commit3-6 |
|
328 | 328 | commit2 = commit_change( |
|
329 | 329 | repo1.repo_name, filename='file1', content='line1\nline2\nline3\n', |
|
330 | 330 | message='commit3', vcs_type=backend.alias, parent=commit1) |
|
331 | 331 | commit3 = commit_change( |
|
332 | 332 | repo1.repo_name, filename='file1', |
|
333 | 333 | content='line1\nline2\nline3\nline4\n', message='commit4', |
|
334 | 334 | vcs_type=backend.alias, parent=commit2) |
|
335 | 335 | commit4 = commit_change( |
|
336 | 336 | repo1.repo_name, filename='file1', |
|
337 | 337 | content='line1\nline2\nline3\nline4\nline5\n', message='commit5', |
|
338 | 338 | vcs_type=backend.alias, parent=commit3) |
|
339 | 339 | commit5 = commit_change( |
|
340 | 340 | repo1.repo_name, filename='file1', |
|
341 | 341 | content='line1\nline2\nline3\nline4\nline5\nline6\n', |
|
342 | 342 | message='commit6', vcs_type=backend.alias, parent=commit4) |
|
343 | 343 | |
|
344 | 344 | response = self.app.get( |
|
345 | 345 | route_path('repo_compare', |
|
346 | 346 | repo_name=repo1.repo_name, |
|
347 | 347 | # parent of commit3, not in source repo2 |
|
348 | 348 | source_ref_type="rev", source_ref=commit2.raw_id, |
|
349 | 349 | target_ref_type="rev", target_ref=commit5.raw_id, |
|
350 | 350 | params=dict(merge='1'),)) |
|
351 | 351 | |
|
352 | 352 | response.mustcontain('%s@%s' % (repo1.repo_name, commit2.short_id)) |
|
353 | 353 | response.mustcontain('%s@%s' % (repo1.repo_name, commit5.short_id)) |
|
354 | 354 | |
|
355 | 355 | compare_page = ComparePage(response) |
|
356 | 356 | compare_page.contains_change_summary(1, 3, 0) |
|
357 | 357 | compare_page.contains_commits([commit3, commit4, commit5]) |
|
358 | 358 | |
|
359 | 359 | # files |
|
360 | 360 | anchor = 'a_c-{}-826e8142e6ba'.format(commit2.short_id) |
|
361 | 361 | compare_page.contains_file_links_and_anchors([('file1', anchor),]) |
|
362 | 362 | |
|
363 | 363 | @pytest.mark.xfail_backends("svn") |
|
364 | 364 | def test_compare_remote_branches(self, backend): |
|
365 | 365 | repo1 = backend.repo |
|
366 | 366 | repo2 = backend.create_fork() |
|
367 | 367 | |
|
368 | 368 | commit_id1 = repo1.get_commit(commit_idx=3).raw_id |
|
369 | 369 | commit_id1_short = repo1.get_commit(commit_idx=3).short_id |
|
370 | 370 | commit_id2 = repo1.get_commit(commit_idx=6).raw_id |
|
371 | 371 | commit_id2_short = repo1.get_commit(commit_idx=6).short_id |
|
372 | 372 | |
|
373 | 373 | response = self.app.get( |
|
374 | 374 | route_path('repo_compare', |
|
375 | 375 | repo_name=repo1.repo_name, |
|
376 | 376 | source_ref_type="rev", source_ref=commit_id1, |
|
377 | 377 | target_ref_type="rev", target_ref=commit_id2, |
|
378 | 378 | params=dict(merge='1', target_repo=repo2.repo_name), |
|
379 | 379 | )) |
|
380 | 380 | |
|
381 | 381 | response.mustcontain('%s@%s' % (repo1.repo_name, commit_id1)) |
|
382 | 382 | response.mustcontain('%s@%s' % (repo2.repo_name, commit_id2)) |
|
383 | 383 | |
|
384 | 384 | compare_page = ComparePage(response) |
|
385 | 385 | |
|
386 | 386 | # outgoing commits between those commits |
|
387 | 387 | compare_page.contains_commits( |
|
388 | 388 | [repo2.get_commit(commit_idx=x) for x in [4, 5, 6]]) |
|
389 | 389 | |
|
390 | 390 | # files |
|
391 | 391 | compare_page.contains_file_links_and_anchors([ |
|
392 | 392 | ('vcs/backends/hg.py', 'a_c-{}-9c390eb52cd6'.format(commit_id2_short)), |
|
393 | 393 | ('vcs/backends/__init__.py', 'a_c-{}-41b41c1f2796'.format(commit_id1_short)), |
|
394 | 394 | ('vcs/backends/base.py', 'a_c-{}-2f574d260608'.format(commit_id1_short)), |
|
395 | 395 | ]) |
|
396 | 396 | |
|
397 | 397 | @pytest.mark.xfail_backends("svn") |
|
398 | 398 | def test_source_repo_new_commits_after_forking_simple_diff(self, backend): |
|
399 | 399 | repo1 = backend.create_repo() |
|
400 | 400 | r1_name = repo1.repo_name |
|
401 | 401 | |
|
402 | 402 | commit0 = commit_change( |
|
403 | 403 | repo=r1_name, filename='file1', |
|
404 | 404 | content='line1', message='commit1', vcs_type=backend.alias, |
|
405 | 405 | newfile=True) |
|
406 | 406 | assert repo1.scm_instance().commit_ids == [commit0.raw_id] |
|
407 | 407 | |
|
408 | 408 | # fork the repo1 |
|
409 | 409 | repo2 = backend.create_fork() |
|
410 | 410 | assert repo2.scm_instance().commit_ids == [commit0.raw_id] |
|
411 | 411 | |
|
412 | 412 | self.r2_id = repo2.repo_id |
|
413 | 413 | r2_name = repo2.repo_name |
|
414 | 414 | |
|
415 | 415 | commit1 = commit_change( |
|
416 | 416 | repo=r2_name, filename='file1-fork', |
|
417 | 417 | content='file1-line1-from-fork', message='commit1-fork', |
|
418 | 418 | vcs_type=backend.alias, parent=repo2.scm_instance()[-1], |
|
419 | 419 | newfile=True) |
|
420 | 420 | |
|
421 | 421 | commit2 = commit_change( |
|
422 | 422 | repo=r2_name, filename='file2-fork', |
|
423 | 423 | content='file2-line1-from-fork', message='commit2-fork', |
|
424 | 424 | vcs_type=backend.alias, parent=commit1, |
|
425 | 425 | newfile=True) |
|
426 | 426 | |
|
427 | 427 | commit_change( # commit 3 |
|
428 | 428 | repo=r2_name, filename='file3-fork', |
|
429 | 429 | content='file3-line1-from-fork', message='commit3-fork', |
|
430 | 430 | vcs_type=backend.alias, parent=commit2, newfile=True) |
|
431 | 431 | |
|
432 | 432 | # compare ! |
|
433 | 433 | commit_id1 = repo1.scm_instance().DEFAULT_BRANCH_NAME |
|
434 | 434 | commit_id2 = repo2.scm_instance().DEFAULT_BRANCH_NAME |
|
435 | 435 | |
|
436 | 436 | response = self.app.get( |
|
437 | 437 | route_path('repo_compare', |
|
438 | 438 | repo_name=r2_name, |
|
439 | 439 | source_ref_type="branch", source_ref=commit_id1, |
|
440 | 440 | target_ref_type="branch", target_ref=commit_id2, |
|
441 | 441 | params=dict(merge='1', target_repo=r1_name), |
|
442 | 442 | )) |
|
443 | 443 | |
|
444 | 444 | response.mustcontain('%s@%s' % (r2_name, commit_id1)) |
|
445 | 445 | response.mustcontain('%s@%s' % (r1_name, commit_id2)) |
|
446 | 446 | response.mustcontain('No files') |
|
447 | 447 | response.mustcontain('No commits in this compare') |
|
448 | 448 | |
|
449 | 449 | commit0 = commit_change( |
|
450 | 450 | repo=r1_name, filename='file2', |
|
451 | 451 | content='line1-added-after-fork', message='commit2-parent', |
|
452 | 452 | vcs_type=backend.alias, parent=None, newfile=True) |
|
453 | 453 | |
|
454 | 454 | # compare ! |
|
455 | 455 | response = self.app.get( |
|
456 | 456 | route_path('repo_compare', |
|
457 | 457 | repo_name=r2_name, |
|
458 | 458 | source_ref_type="branch", source_ref=commit_id1, |
|
459 | 459 | target_ref_type="branch", target_ref=commit_id2, |
|
460 | 460 | params=dict(merge='1', target_repo=r1_name), |
|
461 | 461 | )) |
|
462 | 462 | |
|
463 | 463 | response.mustcontain('%s@%s' % (r2_name, commit_id1)) |
|
464 | 464 | response.mustcontain('%s@%s' % (r1_name, commit_id2)) |
|
465 | 465 | |
|
466 | 466 | response.mustcontain("""commit2-parent""") |
|
467 | 467 | response.mustcontain("""line1-added-after-fork""") |
|
468 | 468 | compare_page = ComparePage(response) |
|
469 | 469 | compare_page.contains_change_summary(1, 1, 0) |
|
470 | 470 | |
|
471 | 471 | @pytest.mark.xfail_backends("svn") |
|
472 | 472 | def test_compare_commits(self, backend, xhr_header): |
|
473 | 473 | commit0 = backend.repo.get_commit(commit_idx=0) |
|
474 | 474 | commit1 = backend.repo.get_commit(commit_idx=1) |
|
475 | 475 | |
|
476 | 476 | response = self.app.get( |
|
477 | 477 | route_path('repo_compare', |
|
478 | 478 | repo_name=backend.repo_name, |
|
479 | 479 | source_ref_type="rev", source_ref=commit0.raw_id, |
|
480 | 480 | target_ref_type="rev", target_ref=commit1.raw_id, |
|
481 | 481 | params=dict(merge='1') |
|
482 | 482 | ), |
|
483 | 483 | extra_environ=xhr_header, ) |
|
484 | 484 | |
|
485 | 485 | # outgoing commits between those commits |
|
486 | 486 | compare_page = ComparePage(response) |
|
487 | 487 | compare_page.contains_commits(commits=[commit1], ancestors=[commit0]) |
|
488 | 488 | |
|
489 | 489 | def test_errors_when_comparing_unknown_source_repo(self, backend): |
|
490 | 490 | repo = backend.repo |
|
491 | 491 | badrepo = 'badrepo' |
|
492 | 492 | |
|
493 | 493 | response = self.app.get( |
|
494 | 494 | route_path('repo_compare', |
|
495 | 495 | repo_name=badrepo, |
|
496 | 496 | source_ref_type="rev", source_ref='tip', |
|
497 | 497 | target_ref_type="rev", target_ref='tip', |
|
498 | 498 | params=dict(merge='1', target_repo=repo.repo_name) |
|
499 | 499 | ), |
|
500 | 500 | status=404) |
|
501 | 501 | |
|
502 | 502 | def test_errors_when_comparing_unknown_target_repo(self, backend): |
|
503 | 503 | repo = backend.repo |
|
504 | 504 | badrepo = 'badrepo' |
|
505 | 505 | |
|
506 | 506 | response = self.app.get( |
|
507 | 507 | route_path('repo_compare', |
|
508 | 508 | repo_name=repo.repo_name, |
|
509 | 509 | source_ref_type="rev", source_ref='tip', |
|
510 | 510 | target_ref_type="rev", target_ref='tip', |
|
511 | 511 | params=dict(merge='1', target_repo=badrepo), |
|
512 | 512 | ), |
|
513 | 513 | status=302) |
|
514 | 514 | redirected = response.follow() |
|
515 | 515 | redirected.mustcontain( |
|
516 | 516 | 'Could not find the target repo: `{}`'.format(badrepo)) |
|
517 | 517 | |
|
518 | 518 | def test_compare_not_in_preview_mode(self, backend_stub): |
|
519 | 519 | commit0 = backend_stub.repo.get_commit(commit_idx=0) |
|
520 | 520 | commit1 = backend_stub.repo.get_commit(commit_idx=1) |
|
521 | 521 | |
|
522 | 522 | response = self.app.get( |
|
523 | 523 | route_path('repo_compare', |
|
524 | 524 | repo_name=backend_stub.repo_name, |
|
525 | 525 | source_ref_type="rev", source_ref=commit0.raw_id, |
|
526 | 526 | target_ref_type="rev", target_ref=commit1.raw_id, |
|
527 | 527 | )) |
|
528 | 528 | |
|
529 | 529 | # outgoing commits between those commits |
|
530 | 530 | compare_page = ComparePage(response) |
|
531 | 531 | compare_page.swap_is_visible() |
|
532 | 532 | compare_page.target_source_are_enabled() |
|
533 | 533 | |
|
534 | 534 | def test_compare_of_fork_with_largefiles(self, backend_hg, settings_util): |
|
535 | 535 | orig = backend_hg.create_repo(number_of_commits=1) |
|
536 | 536 | fork = backend_hg.create_fork() |
|
537 | 537 | |
|
538 | 538 | settings_util.create_repo_rhodecode_ui( |
|
539 | 539 | orig, 'extensions', value='', key='largefiles', active=False) |
|
540 | 540 | settings_util.create_repo_rhodecode_ui( |
|
541 | 541 | fork, 'extensions', value='', key='largefiles', active=True) |
|
542 | 542 | |
|
543 | 543 | compare_module = ('rhodecode.lib.vcs.backends.hg.repository.' |
|
544 | 544 | 'MercurialRepository.compare') |
|
545 | 545 | with mock.patch(compare_module) as compare_mock: |
|
546 | 546 | compare_mock.side_effect = RepositoryRequirementError() |
|
547 | 547 | |
|
548 | 548 | response = self.app.get( |
|
549 | 549 | route_path('repo_compare', |
|
550 | 550 | repo_name=orig.repo_name, |
|
551 | 551 | source_ref_type="rev", source_ref="tip", |
|
552 | 552 | target_ref_type="rev", target_ref="tip", |
|
553 | 553 | params=dict(merge='1', target_repo=fork.repo_name), |
|
554 | 554 | ), |
|
555 | 555 | status=302) |
|
556 | 556 | |
|
557 | 557 | assert_session_flash( |
|
558 | 558 | response, |
|
559 | 559 | 'Could not compare repos with different large file settings') |
|
560 | 560 | |
|
561 | 561 | |
|
562 | 562 | @pytest.mark.usefixtures("autologin_user") |
|
563 | 563 | class TestCompareControllerSvn(object): |
|
564 | 564 | |
|
565 | 565 | def test_supports_references_with_path(self, app, backend_svn): |
|
566 | 566 | repo = backend_svn['svn-simple-layout'] |
|
567 | 567 | commit_id = repo.get_commit(commit_idx=-1).raw_id |
|
568 | 568 | response = app.get( |
|
569 | 569 | route_path('repo_compare', |
|
570 | 570 | repo_name=repo.repo_name, |
|
571 | 571 | source_ref_type="tag", |
|
572 | 572 | source_ref="%s@%s" % ('tags/v0.1', commit_id), |
|
573 | 573 | target_ref_type="tag", |
|
574 | 574 | target_ref="%s@%s" % ('tags/v0.2', commit_id), |
|
575 | 575 | params=dict(merge='1'), |
|
576 | 576 | ), |
|
577 | 577 | status=200) |
|
578 | 578 | |
|
579 | 579 | # Expecting no commits, since both paths are at the same revision |
|
580 | 580 | response.mustcontain('No commits in this compare') |
|
581 | 581 | |
|
582 | 582 | # Should find only one file changed when comparing those two tags |
|
583 | 583 | response.mustcontain('example.py') |
|
584 | 584 | compare_page = ComparePage(response) |
|
585 | 585 | compare_page.contains_change_summary(1, 5, 1) |
|
586 | 586 | |
|
587 | 587 | def test_shows_commits_if_different_ids(self, app, backend_svn): |
|
588 | 588 | repo = backend_svn['svn-simple-layout'] |
|
589 | 589 | source_id = repo.get_commit(commit_idx=-6).raw_id |
|
590 | 590 | target_id = repo.get_commit(commit_idx=-1).raw_id |
|
591 | 591 | response = app.get( |
|
592 | 592 | route_path('repo_compare', |
|
593 | 593 | repo_name=repo.repo_name, |
|
594 | 594 | source_ref_type="tag", |
|
595 | 595 | source_ref="%s@%s" % ('tags/v0.1', source_id), |
|
596 | 596 | target_ref_type="tag", |
|
597 | 597 | target_ref="%s@%s" % ('tags/v0.2', target_id), |
|
598 | 598 | params=dict(merge='1') |
|
599 | 599 | ), |
|
600 | 600 | status=200) |
|
601 | 601 | |
|
602 | 602 | # It should show commits |
|
603 | 603 | assert 'No commits in this compare' not in response.body |
|
604 | 604 | |
|
605 | 605 | # Should find only one file changed when comparing those two tags |
|
606 | 606 | response.mustcontain('example.py') |
|
607 | 607 | compare_page = ComparePage(response) |
|
608 | 608 | compare_page.contains_change_summary(1, 5, 1) |
|
609 | 609 | |
|
610 | 610 | |
|
611 | 611 | class ComparePage(AssertResponse): |
|
612 | 612 | """ |
|
613 | 613 | Abstracts the page template from the tests |
|
614 | 614 | """ |
|
615 | 615 | |
|
616 | 616 | def contains_file_links_and_anchors(self, files): |
|
617 | 617 | doc = lxml.html.fromstring(self.response.body) |
|
618 | 618 | for filename, file_id in files: |
|
619 | 619 | self.contains_one_anchor(file_id) |
|
620 | 620 | diffblock = doc.cssselect('[data-f-path="%s"]' % filename) |
|
621 |
assert len(diffblock) == |
|
|
621 | assert len(diffblock) == 2 | |
|
622 | 622 | assert len(diffblock[0].cssselect('a[href="#%s"]' % file_id)) == 1 |
|
623 | 623 | |
|
624 | 624 | def contains_change_summary(self, files_changed, inserted, deleted): |
|
625 | 625 | template = ( |
|
626 | 626 | "{files_changed} file{plural} changed: " |
|
627 | 627 | "{inserted} inserted, {deleted} deleted") |
|
628 | 628 | self.response.mustcontain(template.format( |
|
629 | 629 | files_changed=files_changed, |
|
630 | 630 | plural="s" if files_changed > 1 else "", |
|
631 | 631 | inserted=inserted, |
|
632 | 632 | deleted=deleted)) |
|
633 | 633 | |
|
634 | 634 | def contains_commits(self, commits, ancestors=None): |
|
635 | 635 | response = self.response |
|
636 | 636 | |
|
637 | 637 | for commit in commits: |
|
638 | 638 | # Expecting to see the commit message in an element which |
|
639 | 639 | # has the ID "c-{commit.raw_id}" |
|
640 | 640 | self.element_contains('#c-' + commit.raw_id, commit.message) |
|
641 | 641 | self.contains_one_link( |
|
642 | 642 | 'r%s:%s' % (commit.idx, commit.short_id), |
|
643 | 643 | self._commit_url(commit)) |
|
644 | 644 | if ancestors: |
|
645 | 645 | response.mustcontain('Ancestor') |
|
646 | 646 | for ancestor in ancestors: |
|
647 | 647 | self.contains_one_link( |
|
648 | 648 | ancestor.short_id, self._commit_url(ancestor)) |
|
649 | 649 | |
|
650 | 650 | def _commit_url(self, commit): |
|
651 | 651 | return '/%s/changeset/%s' % (commit.repository.name, commit.raw_id) |
|
652 | 652 | |
|
653 | 653 | def swap_is_hidden(self): |
|
654 | 654 | assert '<a id="btn-swap"' not in self.response.text |
|
655 | 655 | |
|
656 | 656 | def swap_is_visible(self): |
|
657 | 657 | assert '<a id="btn-swap"' in self.response.text |
|
658 | 658 | |
|
659 | 659 | def target_source_are_disabled(self): |
|
660 | 660 | response = self.response |
|
661 | 661 | response.mustcontain("var enable_fields = false;") |
|
662 | 662 | response.mustcontain('.select2("enable", enable_fields)') |
|
663 | 663 | |
|
664 | 664 | def target_source_are_enabled(self): |
|
665 | 665 | response = self.response |
|
666 | 666 | response.mustcontain("var enable_fields = true;") |
@@ -1,1228 +1,1228 b'' | |||
|
1 | 1 | # -*- coding: utf-8 -*- |
|
2 | 2 | |
|
3 | 3 | # Copyright (C) 2011-2018 RhodeCode GmbH |
|
4 | 4 | # |
|
5 | 5 | # This program is free software: you can redistribute it and/or modify |
|
6 | 6 | # it under the terms of the GNU Affero General Public License, version 3 |
|
7 | 7 | # (only), as published by the Free Software Foundation. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU Affero General Public License |
|
15 | 15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
16 | 16 | # |
|
17 | 17 | # This program is dual-licensed. If you wish to learn more about the |
|
18 | 18 | # RhodeCode Enterprise Edition, including its added features, Support services, |
|
19 | 19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ |
|
20 | 20 | |
|
21 | 21 | |
|
22 | 22 | """ |
|
23 | 23 | Set of diffing helpers, previously part of vcs |
|
24 | 24 | """ |
|
25 | 25 | |
|
26 | 26 | import os |
|
27 | 27 | import re |
|
28 | 28 | import bz2 |
|
29 | 29 | |
|
30 | 30 | import collections |
|
31 | 31 | import difflib |
|
32 | 32 | import logging |
|
33 | 33 | import cPickle as pickle |
|
34 | 34 | from itertools import tee, imap |
|
35 | 35 | |
|
36 | 36 | from rhodecode.lib.vcs.exceptions import VCSError |
|
37 | 37 | from rhodecode.lib.vcs.nodes import FileNode, SubModuleNode |
|
38 | 38 | from rhodecode.lib.utils2 import safe_unicode, safe_str |
|
39 | 39 | |
|
40 | 40 | log = logging.getLogger(__name__) |
|
41 | 41 | |
|
42 | 42 | # define max context, a file with more than this numbers of lines is unusable |
|
43 | 43 | # in browser anyway |
|
44 | 44 | MAX_CONTEXT = 1024 * 1014 |
|
45 | 45 | |
|
46 | 46 | |
|
47 | 47 | class OPS(object): |
|
48 | 48 | ADD = 'A' |
|
49 | 49 | MOD = 'M' |
|
50 | 50 | DEL = 'D' |
|
51 | 51 | |
|
52 | 52 | |
|
53 | 53 | def get_gitdiff(filenode_old, filenode_new, ignore_whitespace=True, context=3): |
|
54 | 54 | """ |
|
55 | 55 | Returns git style diff between given ``filenode_old`` and ``filenode_new``. |
|
56 | 56 | |
|
57 | 57 | :param ignore_whitespace: ignore whitespaces in diff |
|
58 | 58 | """ |
|
59 | 59 | # make sure we pass in default context |
|
60 | 60 | context = context or 3 |
|
61 | 61 | # protect against IntOverflow when passing HUGE context |
|
62 | 62 | if context > MAX_CONTEXT: |
|
63 | 63 | context = MAX_CONTEXT |
|
64 | 64 | |
|
65 | 65 | submodules = filter(lambda o: isinstance(o, SubModuleNode), |
|
66 | 66 | [filenode_new, filenode_old]) |
|
67 | 67 | if submodules: |
|
68 | 68 | return '' |
|
69 | 69 | |
|
70 | 70 | for filenode in (filenode_old, filenode_new): |
|
71 | 71 | if not isinstance(filenode, FileNode): |
|
72 | 72 | raise VCSError( |
|
73 | 73 | "Given object should be FileNode object, not %s" |
|
74 | 74 | % filenode.__class__) |
|
75 | 75 | |
|
76 | 76 | repo = filenode_new.commit.repository |
|
77 | 77 | old_commit = filenode_old.commit or repo.EMPTY_COMMIT |
|
78 | 78 | new_commit = filenode_new.commit |
|
79 | 79 | |
|
80 | 80 | vcs_gitdiff = repo.get_diff( |
|
81 | 81 | old_commit, new_commit, filenode_new.path, |
|
82 | 82 | ignore_whitespace, context, path1=filenode_old.path) |
|
83 | 83 | return vcs_gitdiff |
|
84 | 84 | |
|
85 | 85 | NEW_FILENODE = 1 |
|
86 | 86 | DEL_FILENODE = 2 |
|
87 | 87 | MOD_FILENODE = 3 |
|
88 | 88 | RENAMED_FILENODE = 4 |
|
89 | 89 | COPIED_FILENODE = 5 |
|
90 | 90 | CHMOD_FILENODE = 6 |
|
91 | 91 | BIN_FILENODE = 7 |
|
92 | 92 | |
|
93 | 93 | |
|
94 | 94 | class LimitedDiffContainer(object): |
|
95 | 95 | |
|
96 | 96 | def __init__(self, diff_limit, cur_diff_size, diff): |
|
97 | 97 | self.diff = diff |
|
98 | 98 | self.diff_limit = diff_limit |
|
99 | 99 | self.cur_diff_size = cur_diff_size |
|
100 | 100 | |
|
101 | 101 | def __getitem__(self, key): |
|
102 | 102 | return self.diff.__getitem__(key) |
|
103 | 103 | |
|
104 | 104 | def __iter__(self): |
|
105 | 105 | for l in self.diff: |
|
106 | 106 | yield l |
|
107 | 107 | |
|
108 | 108 | |
|
109 | 109 | class Action(object): |
|
110 | 110 | """ |
|
111 | 111 | Contains constants for the action value of the lines in a parsed diff. |
|
112 | 112 | """ |
|
113 | 113 | |
|
114 | 114 | ADD = 'add' |
|
115 | 115 | DELETE = 'del' |
|
116 | 116 | UNMODIFIED = 'unmod' |
|
117 | 117 | |
|
118 | 118 | CONTEXT = 'context' |
|
119 | 119 | OLD_NO_NL = 'old-no-nl' |
|
120 | 120 | NEW_NO_NL = 'new-no-nl' |
|
121 | 121 | |
|
122 | 122 | |
|
123 | 123 | class DiffProcessor(object): |
|
124 | 124 | """ |
|
125 | 125 | Give it a unified or git diff and it returns a list of the files that were |
|
126 | 126 | mentioned in the diff together with a dict of meta information that |
|
127 | 127 | can be used to render it in a HTML template. |
|
128 | 128 | |
|
129 | 129 | .. note:: Unicode handling |
|
130 | 130 | |
|
131 | 131 | The original diffs are a byte sequence and can contain filenames |
|
132 | 132 | in mixed encodings. This class generally returns `unicode` objects |
|
133 | 133 | since the result is intended for presentation to the user. |
|
134 | 134 | |
|
135 | 135 | """ |
|
136 | 136 | _chunk_re = re.compile(r'^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(.*)') |
|
137 | 137 | _newline_marker = re.compile(r'^\\ No newline at end of file') |
|
138 | 138 | |
|
139 | 139 | # used for inline highlighter word split |
|
140 | 140 | _token_re = re.compile(r'()(>|<|&|\W+?)') |
|
141 | 141 | |
|
142 | 142 | # collapse ranges of commits over given number |
|
143 | 143 | _collapse_commits_over = 5 |
|
144 | 144 | |
|
145 | 145 | def __init__(self, diff, format='gitdiff', diff_limit=None, |
|
146 | 146 | file_limit=None, show_full_diff=True): |
|
147 | 147 | """ |
|
148 | 148 | :param diff: A `Diff` object representing a diff from a vcs backend |
|
149 | 149 | :param format: format of diff passed, `udiff` or `gitdiff` |
|
150 | 150 | :param diff_limit: define the size of diff that is considered "big" |
|
151 | 151 | based on that parameter cut off will be triggered, set to None |
|
152 | 152 | to show full diff |
|
153 | 153 | """ |
|
154 | 154 | self._diff = diff |
|
155 | 155 | self._format = format |
|
156 | 156 | self.adds = 0 |
|
157 | 157 | self.removes = 0 |
|
158 | 158 | # calculate diff size |
|
159 | 159 | self.diff_limit = diff_limit |
|
160 | 160 | self.file_limit = file_limit |
|
161 | 161 | self.show_full_diff = show_full_diff |
|
162 | 162 | self.cur_diff_size = 0 |
|
163 | 163 | self.parsed = False |
|
164 | 164 | self.parsed_diff = [] |
|
165 | 165 | |
|
166 | 166 | log.debug('Initialized DiffProcessor with %s mode', format) |
|
167 | 167 | if format == 'gitdiff': |
|
168 | 168 | self.differ = self._highlight_line_difflib |
|
169 | 169 | self._parser = self._parse_gitdiff |
|
170 | 170 | else: |
|
171 | 171 | self.differ = self._highlight_line_udiff |
|
172 | 172 | self._parser = self._new_parse_gitdiff |
|
173 | 173 | |
|
174 | 174 | def _copy_iterator(self): |
|
175 | 175 | """ |
|
176 | 176 | make a fresh copy of generator, we should not iterate thru |
|
177 | 177 | an original as it's needed for repeating operations on |
|
178 | 178 | this instance of DiffProcessor |
|
179 | 179 | """ |
|
180 | 180 | self.__udiff, iterator_copy = tee(self.__udiff) |
|
181 | 181 | return iterator_copy |
|
182 | 182 | |
|
183 | 183 | def _escaper(self, string): |
|
184 | 184 | """ |
|
185 | 185 | Escaper for diff escapes special chars and checks the diff limit |
|
186 | 186 | |
|
187 | 187 | :param string: |
|
188 | 188 | """ |
|
189 | 189 | self.cur_diff_size += len(string) |
|
190 | 190 | |
|
191 | 191 | if not self.show_full_diff and (self.cur_diff_size > self.diff_limit): |
|
192 | 192 | raise DiffLimitExceeded('Diff Limit Exceeded') |
|
193 | 193 | |
|
194 | 194 | return string \ |
|
195 | 195 | .replace('&', '&')\ |
|
196 | 196 | .replace('<', '<')\ |
|
197 | 197 | .replace('>', '>') |
|
198 | 198 | |
|
199 | 199 | def _line_counter(self, l): |
|
200 | 200 | """ |
|
201 | 201 | Checks each line and bumps total adds/removes for this diff |
|
202 | 202 | |
|
203 | 203 | :param l: |
|
204 | 204 | """ |
|
205 | 205 | if l.startswith('+') and not l.startswith('+++'): |
|
206 | 206 | self.adds += 1 |
|
207 | 207 | elif l.startswith('-') and not l.startswith('---'): |
|
208 | 208 | self.removes += 1 |
|
209 | 209 | return safe_unicode(l) |
|
210 | 210 | |
|
211 | 211 | def _highlight_line_difflib(self, line, next_): |
|
212 | 212 | """ |
|
213 | 213 | Highlight inline changes in both lines. |
|
214 | 214 | """ |
|
215 | 215 | |
|
216 | 216 | if line['action'] == Action.DELETE: |
|
217 | 217 | old, new = line, next_ |
|
218 | 218 | else: |
|
219 | 219 | old, new = next_, line |
|
220 | 220 | |
|
221 | 221 | oldwords = self._token_re.split(old['line']) |
|
222 | 222 | newwords = self._token_re.split(new['line']) |
|
223 | 223 | sequence = difflib.SequenceMatcher(None, oldwords, newwords) |
|
224 | 224 | |
|
225 | 225 | oldfragments, newfragments = [], [] |
|
226 | 226 | for tag, i1, i2, j1, j2 in sequence.get_opcodes(): |
|
227 | 227 | oldfrag = ''.join(oldwords[i1:i2]) |
|
228 | 228 | newfrag = ''.join(newwords[j1:j2]) |
|
229 | 229 | if tag != 'equal': |
|
230 | 230 | if oldfrag: |
|
231 | 231 | oldfrag = '<del>%s</del>' % oldfrag |
|
232 | 232 | if newfrag: |
|
233 | 233 | newfrag = '<ins>%s</ins>' % newfrag |
|
234 | 234 | oldfragments.append(oldfrag) |
|
235 | 235 | newfragments.append(newfrag) |
|
236 | 236 | |
|
237 | 237 | old['line'] = "".join(oldfragments) |
|
238 | 238 | new['line'] = "".join(newfragments) |
|
239 | 239 | |
|
240 | 240 | def _highlight_line_udiff(self, line, next_): |
|
241 | 241 | """ |
|
242 | 242 | Highlight inline changes in both lines. |
|
243 | 243 | """ |
|
244 | 244 | start = 0 |
|
245 | 245 | limit = min(len(line['line']), len(next_['line'])) |
|
246 | 246 | while start < limit and line['line'][start] == next_['line'][start]: |
|
247 | 247 | start += 1 |
|
248 | 248 | end = -1 |
|
249 | 249 | limit -= start |
|
250 | 250 | while -end <= limit and line['line'][end] == next_['line'][end]: |
|
251 | 251 | end -= 1 |
|
252 | 252 | end += 1 |
|
253 | 253 | if start or end: |
|
254 | 254 | def do(l): |
|
255 | 255 | last = end + len(l['line']) |
|
256 | 256 | if l['action'] == Action.ADD: |
|
257 | 257 | tag = 'ins' |
|
258 | 258 | else: |
|
259 | 259 | tag = 'del' |
|
260 | 260 | l['line'] = '%s<%s>%s</%s>%s' % ( |
|
261 | 261 | l['line'][:start], |
|
262 | 262 | tag, |
|
263 | 263 | l['line'][start:last], |
|
264 | 264 | tag, |
|
265 | 265 | l['line'][last:] |
|
266 | 266 | ) |
|
267 | 267 | do(line) |
|
268 | 268 | do(next_) |
|
269 | 269 | |
|
270 | 270 | def _clean_line(self, line, command): |
|
271 | 271 | if command in ['+', '-', ' ']: |
|
272 | 272 | # only modify the line if it's actually a diff thing |
|
273 | 273 | line = line[1:] |
|
274 | 274 | return line |
|
275 | 275 | |
|
276 | 276 | def _parse_gitdiff(self, inline_diff=True): |
|
277 | 277 | _files = [] |
|
278 | 278 | diff_container = lambda arg: arg |
|
279 | 279 | |
|
280 | 280 | for chunk in self._diff.chunks(): |
|
281 | 281 | head = chunk.header |
|
282 | 282 | |
|
283 | 283 | diff = imap(self._escaper, self.diff_splitter(chunk.diff)) |
|
284 | 284 | raw_diff = chunk.raw |
|
285 | 285 | limited_diff = False |
|
286 | 286 | exceeds_limit = False |
|
287 | 287 | |
|
288 | 288 | op = None |
|
289 | 289 | stats = { |
|
290 | 290 | 'added': 0, |
|
291 | 291 | 'deleted': 0, |
|
292 | 292 | 'binary': False, |
|
293 | 293 | 'ops': {}, |
|
294 | 294 | } |
|
295 | 295 | |
|
296 | 296 | if head['deleted_file_mode']: |
|
297 | 297 | op = OPS.DEL |
|
298 | 298 | stats['binary'] = True |
|
299 | 299 | stats['ops'][DEL_FILENODE] = 'deleted file' |
|
300 | 300 | |
|
301 | 301 | elif head['new_file_mode']: |
|
302 | 302 | op = OPS.ADD |
|
303 | 303 | stats['binary'] = True |
|
304 | 304 | stats['ops'][NEW_FILENODE] = 'new file %s' % head['new_file_mode'] |
|
305 | 305 | else: # modify operation, can be copy, rename or chmod |
|
306 | 306 | |
|
307 | 307 | # CHMOD |
|
308 | 308 | if head['new_mode'] and head['old_mode']: |
|
309 | 309 | op = OPS.MOD |
|
310 | 310 | stats['binary'] = True |
|
311 | 311 | stats['ops'][CHMOD_FILENODE] = ( |
|
312 | 312 | 'modified file chmod %s => %s' % ( |
|
313 | 313 | head['old_mode'], head['new_mode'])) |
|
314 | 314 | # RENAME |
|
315 | 315 | if head['rename_from'] != head['rename_to']: |
|
316 | 316 | op = OPS.MOD |
|
317 | 317 | stats['binary'] = True |
|
318 | 318 | stats['ops'][RENAMED_FILENODE] = ( |
|
319 | 319 | 'file renamed from %s to %s' % ( |
|
320 | 320 | head['rename_from'], head['rename_to'])) |
|
321 | 321 | # COPY |
|
322 | 322 | if head.get('copy_from') and head.get('copy_to'): |
|
323 | 323 | op = OPS.MOD |
|
324 | 324 | stats['binary'] = True |
|
325 | 325 | stats['ops'][COPIED_FILENODE] = ( |
|
326 | 326 | 'file copied from %s to %s' % ( |
|
327 | 327 | head['copy_from'], head['copy_to'])) |
|
328 | 328 | |
|
329 | 329 | # If our new parsed headers didn't match anything fallback to |
|
330 | 330 | # old style detection |
|
331 | 331 | if op is None: |
|
332 | 332 | if not head['a_file'] and head['b_file']: |
|
333 | 333 | op = OPS.ADD |
|
334 | 334 | stats['binary'] = True |
|
335 | 335 | stats['ops'][NEW_FILENODE] = 'new file' |
|
336 | 336 | |
|
337 | 337 | elif head['a_file'] and not head['b_file']: |
|
338 | 338 | op = OPS.DEL |
|
339 | 339 | stats['binary'] = True |
|
340 | 340 | stats['ops'][DEL_FILENODE] = 'deleted file' |
|
341 | 341 | |
|
342 | 342 | # it's not ADD not DELETE |
|
343 | 343 | if op is None: |
|
344 | 344 | op = OPS.MOD |
|
345 | 345 | stats['binary'] = True |
|
346 | 346 | stats['ops'][MOD_FILENODE] = 'modified file' |
|
347 | 347 | |
|
348 | 348 | # a real non-binary diff |
|
349 | 349 | if head['a_file'] or head['b_file']: |
|
350 | 350 | try: |
|
351 | 351 | raw_diff, chunks, _stats = self._parse_lines(diff) |
|
352 | 352 | stats['binary'] = False |
|
353 | 353 | stats['added'] = _stats[0] |
|
354 | 354 | stats['deleted'] = _stats[1] |
|
355 | 355 | # explicit mark that it's a modified file |
|
356 | 356 | if op == OPS.MOD: |
|
357 | 357 | stats['ops'][MOD_FILENODE] = 'modified file' |
|
358 | 358 | exceeds_limit = len(raw_diff) > self.file_limit |
|
359 | 359 | |
|
360 | 360 | # changed from _escaper function so we validate size of |
|
361 | 361 | # each file instead of the whole diff |
|
362 | 362 | # diff will hide big files but still show small ones |
|
363 | 363 | # from my tests, big files are fairly safe to be parsed |
|
364 | 364 | # but the browser is the bottleneck |
|
365 | 365 | if not self.show_full_diff and exceeds_limit: |
|
366 | 366 | raise DiffLimitExceeded('File Limit Exceeded') |
|
367 | 367 | |
|
368 | 368 | except DiffLimitExceeded: |
|
369 | 369 | diff_container = lambda _diff: \ |
|
370 | 370 | LimitedDiffContainer( |
|
371 | 371 | self.diff_limit, self.cur_diff_size, _diff) |
|
372 | 372 | |
|
373 | 373 | exceeds_limit = len(raw_diff) > self.file_limit |
|
374 | 374 | limited_diff = True |
|
375 | 375 | chunks = [] |
|
376 | 376 | |
|
377 | 377 | else: # GIT format binary patch, or possibly empty diff |
|
378 | 378 | if head['bin_patch']: |
|
379 | 379 | # we have operation already extracted, but we mark simply |
|
380 | 380 | # it's a diff we wont show for binary files |
|
381 | 381 | stats['ops'][BIN_FILENODE] = 'binary diff hidden' |
|
382 | 382 | chunks = [] |
|
383 | 383 | |
|
384 | 384 | if chunks and not self.show_full_diff and op == OPS.DEL: |
|
385 | 385 | # if not full diff mode show deleted file contents |
|
386 | 386 | # TODO: anderson: if the view is not too big, there is no way |
|
387 | 387 | # to see the content of the file |
|
388 | 388 | chunks = [] |
|
389 | 389 | |
|
390 | 390 | chunks.insert(0, [{ |
|
391 | 391 | 'old_lineno': '', |
|
392 | 392 | 'new_lineno': '', |
|
393 | 393 | 'action': Action.CONTEXT, |
|
394 | 394 | 'line': msg, |
|
395 | 395 | } for _op, msg in stats['ops'].iteritems() |
|
396 | 396 | if _op not in [MOD_FILENODE]]) |
|
397 | 397 | |
|
398 | 398 | _files.append({ |
|
399 | 399 | 'filename': safe_unicode(head['b_path']), |
|
400 | 400 | 'old_revision': head['a_blob_id'], |
|
401 | 401 | 'new_revision': head['b_blob_id'], |
|
402 | 402 | 'chunks': chunks, |
|
403 | 403 | 'raw_diff': safe_unicode(raw_diff), |
|
404 | 404 | 'operation': op, |
|
405 | 405 | 'stats': stats, |
|
406 | 406 | 'exceeds_limit': exceeds_limit, |
|
407 | 407 | 'is_limited_diff': limited_diff, |
|
408 | 408 | }) |
|
409 | 409 | |
|
410 | 410 | sorter = lambda info: {OPS.ADD: 0, OPS.MOD: 1, |
|
411 | 411 | OPS.DEL: 2}.get(info['operation']) |
|
412 | 412 | |
|
413 | 413 | if not inline_diff: |
|
414 | 414 | return diff_container(sorted(_files, key=sorter)) |
|
415 | 415 | |
|
416 | 416 | # highlight inline changes |
|
417 | 417 | for diff_data in _files: |
|
418 | 418 | for chunk in diff_data['chunks']: |
|
419 | 419 | lineiter = iter(chunk) |
|
420 | 420 | try: |
|
421 | 421 | while 1: |
|
422 | 422 | line = lineiter.next() |
|
423 | 423 | if line['action'] not in ( |
|
424 | 424 | Action.UNMODIFIED, Action.CONTEXT): |
|
425 | 425 | nextline = lineiter.next() |
|
426 | 426 | if nextline['action'] in ['unmod', 'context'] or \ |
|
427 | 427 | nextline['action'] == line['action']: |
|
428 | 428 | continue |
|
429 | 429 | self.differ(line, nextline) |
|
430 | 430 | except StopIteration: |
|
431 | 431 | pass |
|
432 | 432 | |
|
433 | 433 | return diff_container(sorted(_files, key=sorter)) |
|
434 | 434 | |
|
435 | 435 | def _check_large_diff(self): |
|
436 | 436 | log.debug('Diff exceeds current diff_limit of %s', self.diff_limit) |
|
437 | 437 | if not self.show_full_diff and (self.cur_diff_size > self.diff_limit): |
|
438 | 438 | raise DiffLimitExceeded('Diff Limit `%s` Exceeded', self.diff_limit) |
|
439 | 439 | |
|
440 | 440 | # FIXME: NEWDIFFS: dan: this replaces _parse_gitdiff |
|
441 | 441 | def _new_parse_gitdiff(self, inline_diff=True): |
|
442 | 442 | _files = [] |
|
443 | 443 | |
|
444 | 444 | # this can be overriden later to a LimitedDiffContainer type |
|
445 | 445 | diff_container = lambda arg: arg |
|
446 | 446 | |
|
447 | 447 | for chunk in self._diff.chunks(): |
|
448 | 448 | head = chunk.header |
|
449 | 449 | log.debug('parsing diff %r', head) |
|
450 | 450 | |
|
451 | 451 | raw_diff = chunk.raw |
|
452 | 452 | limited_diff = False |
|
453 | 453 | exceeds_limit = False |
|
454 | 454 | |
|
455 | 455 | op = None |
|
456 | 456 | stats = { |
|
457 | 457 | 'added': 0, |
|
458 | 458 | 'deleted': 0, |
|
459 | 459 | 'binary': False, |
|
460 | 460 | 'old_mode': None, |
|
461 | 461 | 'new_mode': None, |
|
462 | 462 | 'ops': {}, |
|
463 | 463 | } |
|
464 | 464 | if head['old_mode']: |
|
465 | 465 | stats['old_mode'] = head['old_mode'] |
|
466 | 466 | if head['new_mode']: |
|
467 | 467 | stats['new_mode'] = head['new_mode'] |
|
468 | 468 | if head['b_mode']: |
|
469 | 469 | stats['new_mode'] = head['b_mode'] |
|
470 | 470 | |
|
471 | 471 | # delete file |
|
472 | 472 | if head['deleted_file_mode']: |
|
473 | 473 | op = OPS.DEL |
|
474 | 474 | stats['binary'] = True |
|
475 | 475 | stats['ops'][DEL_FILENODE] = 'deleted file' |
|
476 | 476 | |
|
477 | 477 | # new file |
|
478 | 478 | elif head['new_file_mode']: |
|
479 | 479 | op = OPS.ADD |
|
480 | 480 | stats['binary'] = True |
|
481 | 481 | stats['old_mode'] = None |
|
482 | 482 | stats['new_mode'] = head['new_file_mode'] |
|
483 | 483 | stats['ops'][NEW_FILENODE] = 'new file %s' % head['new_file_mode'] |
|
484 | 484 | |
|
485 | 485 | # modify operation, can be copy, rename or chmod |
|
486 | 486 | else: |
|
487 | 487 | # CHMOD |
|
488 | 488 | if head['new_mode'] and head['old_mode']: |
|
489 | 489 | op = OPS.MOD |
|
490 | 490 | stats['binary'] = True |
|
491 | 491 | stats['ops'][CHMOD_FILENODE] = ( |
|
492 | 492 | 'modified file chmod %s => %s' % ( |
|
493 | 493 | head['old_mode'], head['new_mode'])) |
|
494 | 494 | |
|
495 | 495 | # RENAME |
|
496 | 496 | if head['rename_from'] != head['rename_to']: |
|
497 | 497 | op = OPS.MOD |
|
498 | 498 | stats['binary'] = True |
|
499 | 499 | stats['renamed'] = (head['rename_from'], head['rename_to']) |
|
500 | 500 | stats['ops'][RENAMED_FILENODE] = ( |
|
501 | 501 | 'file renamed from %s to %s' % ( |
|
502 | 502 | head['rename_from'], head['rename_to'])) |
|
503 | 503 | # COPY |
|
504 | 504 | if head.get('copy_from') and head.get('copy_to'): |
|
505 | 505 | op = OPS.MOD |
|
506 | 506 | stats['binary'] = True |
|
507 | 507 | stats['copied'] = (head['copy_from'], head['copy_to']) |
|
508 | 508 | stats['ops'][COPIED_FILENODE] = ( |
|
509 | 509 | 'file copied from %s to %s' % ( |
|
510 | 510 | head['copy_from'], head['copy_to'])) |
|
511 | 511 | |
|
512 | 512 | # If our new parsed headers didn't match anything fallback to |
|
513 | 513 | # old style detection |
|
514 | 514 | if op is None: |
|
515 | 515 | if not head['a_file'] and head['b_file']: |
|
516 | 516 | op = OPS.ADD |
|
517 | 517 | stats['binary'] = True |
|
518 | 518 | stats['new_file'] = True |
|
519 | 519 | stats['ops'][NEW_FILENODE] = 'new file' |
|
520 | 520 | |
|
521 | 521 | elif head['a_file'] and not head['b_file']: |
|
522 | 522 | op = OPS.DEL |
|
523 | 523 | stats['binary'] = True |
|
524 | 524 | stats['ops'][DEL_FILENODE] = 'deleted file' |
|
525 | 525 | |
|
526 | 526 | # it's not ADD not DELETE |
|
527 | 527 | if op is None: |
|
528 | 528 | op = OPS.MOD |
|
529 | 529 | stats['binary'] = True |
|
530 | 530 | stats['ops'][MOD_FILENODE] = 'modified file' |
|
531 | 531 | |
|
532 | 532 | # a real non-binary diff |
|
533 | 533 | if head['a_file'] or head['b_file']: |
|
534 | 534 | # simulate splitlines, so we keep the line end part |
|
535 | 535 | diff = self.diff_splitter(chunk.diff) |
|
536 | 536 | |
|
537 | 537 | # append each file to the diff size |
|
538 | 538 | raw_chunk_size = len(raw_diff) |
|
539 | 539 | |
|
540 | 540 | exceeds_limit = raw_chunk_size > self.file_limit |
|
541 | 541 | self.cur_diff_size += raw_chunk_size |
|
542 | 542 | |
|
543 | 543 | try: |
|
544 | 544 | # Check each file instead of the whole diff. |
|
545 | 545 | # Diff will hide big files but still show small ones. |
|
546 | 546 | # From the tests big files are fairly safe to be parsed |
|
547 | 547 | # but the browser is the bottleneck. |
|
548 | 548 | if not self.show_full_diff and exceeds_limit: |
|
549 | 549 | log.debug('File `%s` exceeds current file_limit of %s', |
|
550 | 550 | safe_unicode(head['b_path']), self.file_limit) |
|
551 | 551 | raise DiffLimitExceeded( |
|
552 | 552 | 'File Limit %s Exceeded', self.file_limit) |
|
553 | 553 | |
|
554 | 554 | self._check_large_diff() |
|
555 | 555 | |
|
556 | 556 | raw_diff, chunks, _stats = self._new_parse_lines(diff) |
|
557 | 557 | stats['binary'] = False |
|
558 | 558 | stats['added'] = _stats[0] |
|
559 | 559 | stats['deleted'] = _stats[1] |
|
560 | 560 | # explicit mark that it's a modified file |
|
561 | 561 | if op == OPS.MOD: |
|
562 | 562 | stats['ops'][MOD_FILENODE] = 'modified file' |
|
563 | 563 | |
|
564 | 564 | except DiffLimitExceeded: |
|
565 | 565 | diff_container = lambda _diff: \ |
|
566 | 566 | LimitedDiffContainer( |
|
567 | 567 | self.diff_limit, self.cur_diff_size, _diff) |
|
568 | 568 | |
|
569 | 569 | limited_diff = True |
|
570 | 570 | chunks = [] |
|
571 | 571 | |
|
572 | 572 | else: # GIT format binary patch, or possibly empty diff |
|
573 | 573 | if head['bin_patch']: |
|
574 | 574 | # we have operation already extracted, but we mark simply |
|
575 | 575 | # it's a diff we wont show for binary files |
|
576 | 576 | stats['ops'][BIN_FILENODE] = 'binary diff hidden' |
|
577 | 577 | chunks = [] |
|
578 | 578 | |
|
579 | 579 | # Hide content of deleted node by setting empty chunks |
|
580 | 580 | if chunks and not self.show_full_diff and op == OPS.DEL: |
|
581 | 581 | # if not full diff mode show deleted file contents |
|
582 | 582 | # TODO: anderson: if the view is not too big, there is no way |
|
583 | 583 | # to see the content of the file |
|
584 | 584 | chunks = [] |
|
585 | 585 | |
|
586 | 586 | chunks.insert( |
|
587 | 587 | 0, [{'old_lineno': '', |
|
588 | 588 | 'new_lineno': '', |
|
589 | 589 | 'action': Action.CONTEXT, |
|
590 | 590 | 'line': msg, |
|
591 | 591 | } for _op, msg in stats['ops'].iteritems() |
|
592 | 592 | if _op not in [MOD_FILENODE]]) |
|
593 | 593 | |
|
594 | 594 | original_filename = safe_unicode(head['a_path']) |
|
595 | 595 | _files.append({ |
|
596 | 596 | 'original_filename': original_filename, |
|
597 | 597 | 'filename': safe_unicode(head['b_path']), |
|
598 | 598 | 'old_revision': head['a_blob_id'], |
|
599 | 599 | 'new_revision': head['b_blob_id'], |
|
600 | 600 | 'chunks': chunks, |
|
601 | 601 | 'raw_diff': safe_unicode(raw_diff), |
|
602 | 602 | 'operation': op, |
|
603 | 603 | 'stats': stats, |
|
604 | 604 | 'exceeds_limit': exceeds_limit, |
|
605 | 605 | 'is_limited_diff': limited_diff, |
|
606 | 606 | }) |
|
607 | 607 | |
|
608 | 608 | sorter = lambda info: {OPS.ADD: 0, OPS.MOD: 1, |
|
609 | 609 | OPS.DEL: 2}.get(info['operation']) |
|
610 | 610 | |
|
611 | 611 | return diff_container(sorted(_files, key=sorter)) |
|
612 | 612 | |
|
613 | 613 | # FIXME: NEWDIFFS: dan: this gets replaced by _new_parse_lines |
|
614 | 614 | def _parse_lines(self, diff_iter): |
|
615 | 615 | """ |
|
616 | 616 | Parse the diff an return data for the template. |
|
617 | 617 | """ |
|
618 | 618 | |
|
619 | 619 | stats = [0, 0] |
|
620 | 620 | chunks = [] |
|
621 | 621 | raw_diff = [] |
|
622 | 622 | |
|
623 | 623 | try: |
|
624 | 624 | line = diff_iter.next() |
|
625 | 625 | |
|
626 | 626 | while line: |
|
627 | 627 | raw_diff.append(line) |
|
628 | 628 | lines = [] |
|
629 | 629 | chunks.append(lines) |
|
630 | 630 | |
|
631 | 631 | match = self._chunk_re.match(line) |
|
632 | 632 | |
|
633 | 633 | if not match: |
|
634 | 634 | break |
|
635 | 635 | |
|
636 | 636 | gr = match.groups() |
|
637 | 637 | (old_line, old_end, |
|
638 | 638 | new_line, new_end) = [int(x or 1) for x in gr[:-1]] |
|
639 | 639 | old_line -= 1 |
|
640 | 640 | new_line -= 1 |
|
641 | 641 | |
|
642 | 642 | context = len(gr) == 5 |
|
643 | 643 | old_end += old_line |
|
644 | 644 | new_end += new_line |
|
645 | 645 | |
|
646 | 646 | if context: |
|
647 | 647 | # skip context only if it's first line |
|
648 | 648 | if int(gr[0]) > 1: |
|
649 | 649 | lines.append({ |
|
650 | 650 | 'old_lineno': '...', |
|
651 | 651 | 'new_lineno': '...', |
|
652 | 652 | 'action': Action.CONTEXT, |
|
653 | 653 | 'line': line, |
|
654 | 654 | }) |
|
655 | 655 | |
|
656 | 656 | line = diff_iter.next() |
|
657 | 657 | |
|
658 | 658 | while old_line < old_end or new_line < new_end: |
|
659 | 659 | command = ' ' |
|
660 | 660 | if line: |
|
661 | 661 | command = line[0] |
|
662 | 662 | |
|
663 | 663 | affects_old = affects_new = False |
|
664 | 664 | |
|
665 | 665 | # ignore those if we don't expect them |
|
666 | 666 | if command in '#@': |
|
667 | 667 | continue |
|
668 | 668 | elif command == '+': |
|
669 | 669 | affects_new = True |
|
670 | 670 | action = Action.ADD |
|
671 | 671 | stats[0] += 1 |
|
672 | 672 | elif command == '-': |
|
673 | 673 | affects_old = True |
|
674 | 674 | action = Action.DELETE |
|
675 | 675 | stats[1] += 1 |
|
676 | 676 | else: |
|
677 | 677 | affects_old = affects_new = True |
|
678 | 678 | action = Action.UNMODIFIED |
|
679 | 679 | |
|
680 | 680 | if not self._newline_marker.match(line): |
|
681 | 681 | old_line += affects_old |
|
682 | 682 | new_line += affects_new |
|
683 | 683 | lines.append({ |
|
684 | 684 | 'old_lineno': affects_old and old_line or '', |
|
685 | 685 | 'new_lineno': affects_new and new_line or '', |
|
686 | 686 | 'action': action, |
|
687 | 687 | 'line': self._clean_line(line, command) |
|
688 | 688 | }) |
|
689 | 689 | raw_diff.append(line) |
|
690 | 690 | |
|
691 | 691 | line = diff_iter.next() |
|
692 | 692 | |
|
693 | 693 | if self._newline_marker.match(line): |
|
694 | 694 | # we need to append to lines, since this is not |
|
695 | 695 | # counted in the line specs of diff |
|
696 | 696 | lines.append({ |
|
697 | 697 | 'old_lineno': '...', |
|
698 | 698 | 'new_lineno': '...', |
|
699 | 699 | 'action': Action.CONTEXT, |
|
700 | 700 | 'line': self._clean_line(line, command) |
|
701 | 701 | }) |
|
702 | 702 | |
|
703 | 703 | except StopIteration: |
|
704 | 704 | pass |
|
705 | 705 | return ''.join(raw_diff), chunks, stats |
|
706 | 706 | |
|
707 | 707 | # FIXME: NEWDIFFS: dan: this replaces _parse_lines |
|
708 | 708 | def _new_parse_lines(self, diff_iter): |
|
709 | 709 | """ |
|
710 | 710 | Parse the diff an return data for the template. |
|
711 | 711 | """ |
|
712 | 712 | |
|
713 | 713 | stats = [0, 0] |
|
714 | 714 | chunks = [] |
|
715 | 715 | raw_diff = [] |
|
716 | 716 | |
|
717 | 717 | try: |
|
718 | 718 | line = diff_iter.next() |
|
719 | 719 | |
|
720 | 720 | while line: |
|
721 | 721 | raw_diff.append(line) |
|
722 | 722 | # match header e.g @@ -0,0 +1 @@\n' |
|
723 | 723 | match = self._chunk_re.match(line) |
|
724 | 724 | |
|
725 | 725 | if not match: |
|
726 | 726 | break |
|
727 | 727 | |
|
728 | 728 | gr = match.groups() |
|
729 | 729 | (old_line, old_end, |
|
730 | 730 | new_line, new_end) = [int(x or 1) for x in gr[:-1]] |
|
731 | 731 | |
|
732 | 732 | lines = [] |
|
733 | 733 | hunk = { |
|
734 | 734 | 'section_header': gr[-1], |
|
735 | 735 | 'source_start': old_line, |
|
736 | 736 | 'source_length': old_end, |
|
737 | 737 | 'target_start': new_line, |
|
738 | 738 | 'target_length': new_end, |
|
739 | 739 | 'lines': lines, |
|
740 | 740 | } |
|
741 | 741 | chunks.append(hunk) |
|
742 | 742 | |
|
743 | 743 | old_line -= 1 |
|
744 | 744 | new_line -= 1 |
|
745 | 745 | |
|
746 | 746 | context = len(gr) == 5 |
|
747 | 747 | old_end += old_line |
|
748 | 748 | new_end += new_line |
|
749 | 749 | |
|
750 | 750 | line = diff_iter.next() |
|
751 | 751 | |
|
752 | 752 | while old_line < old_end or new_line < new_end: |
|
753 | 753 | command = ' ' |
|
754 | 754 | if line: |
|
755 | 755 | command = line[0] |
|
756 | 756 | |
|
757 | 757 | affects_old = affects_new = False |
|
758 | 758 | |
|
759 | 759 | # ignore those if we don't expect them |
|
760 | 760 | if command in '#@': |
|
761 | 761 | continue |
|
762 | 762 | elif command == '+': |
|
763 | 763 | affects_new = True |
|
764 | 764 | action = Action.ADD |
|
765 | 765 | stats[0] += 1 |
|
766 | 766 | elif command == '-': |
|
767 | 767 | affects_old = True |
|
768 | 768 | action = Action.DELETE |
|
769 | 769 | stats[1] += 1 |
|
770 | 770 | else: |
|
771 | 771 | affects_old = affects_new = True |
|
772 | 772 | action = Action.UNMODIFIED |
|
773 | 773 | |
|
774 | 774 | if not self._newline_marker.match(line): |
|
775 | 775 | old_line += affects_old |
|
776 | 776 | new_line += affects_new |
|
777 | 777 | lines.append({ |
|
778 | 778 | 'old_lineno': affects_old and old_line or '', |
|
779 | 779 | 'new_lineno': affects_new and new_line or '', |
|
780 | 780 | 'action': action, |
|
781 | 781 | 'line': self._clean_line(line, command) |
|
782 | 782 | }) |
|
783 | 783 | raw_diff.append(line) |
|
784 | 784 | |
|
785 | 785 | line = diff_iter.next() |
|
786 | 786 | |
|
787 | 787 | if self._newline_marker.match(line): |
|
788 | 788 | # we need to append to lines, since this is not |
|
789 | 789 | # counted in the line specs of diff |
|
790 | 790 | if affects_old: |
|
791 | 791 | action = Action.OLD_NO_NL |
|
792 | 792 | elif affects_new: |
|
793 | 793 | action = Action.NEW_NO_NL |
|
794 | 794 | else: |
|
795 | 795 | raise Exception('invalid context for no newline') |
|
796 | 796 | |
|
797 | 797 | lines.append({ |
|
798 | 798 | 'old_lineno': None, |
|
799 | 799 | 'new_lineno': None, |
|
800 | 800 | 'action': action, |
|
801 | 801 | 'line': self._clean_line(line, command) |
|
802 | 802 | }) |
|
803 | 803 | |
|
804 | 804 | except StopIteration: |
|
805 | 805 | pass |
|
806 | 806 | |
|
807 | 807 | return ''.join(raw_diff), chunks, stats |
|
808 | 808 | |
|
809 | 809 | def _safe_id(self, idstring): |
|
810 | 810 | """Make a string safe for including in an id attribute. |
|
811 | 811 | |
|
812 | 812 | The HTML spec says that id attributes 'must begin with |
|
813 | 813 | a letter ([A-Za-z]) and may be followed by any number |
|
814 | 814 | of letters, digits ([0-9]), hyphens ("-"), underscores |
|
815 | 815 | ("_"), colons (":"), and periods (".")'. These regexps |
|
816 | 816 | are slightly over-zealous, in that they remove colons |
|
817 | 817 | and periods unnecessarily. |
|
818 | 818 | |
|
819 | 819 | Whitespace is transformed into underscores, and then |
|
820 | 820 | anything which is not a hyphen or a character that |
|
821 | 821 | matches \w (alphanumerics and underscore) is removed. |
|
822 | 822 | |
|
823 | 823 | """ |
|
824 | 824 | # Transform all whitespace to underscore |
|
825 | 825 | idstring = re.sub(r'\s', "_", '%s' % idstring) |
|
826 | 826 | # Remove everything that is not a hyphen or a member of \w |
|
827 | 827 | idstring = re.sub(r'(?!-)\W', "", idstring).lower() |
|
828 | 828 | return idstring |
|
829 | 829 | |
|
830 | 830 | @classmethod |
|
831 | 831 | def diff_splitter(cls, string): |
|
832 | 832 | """ |
|
833 | 833 | Diff split that emulates .splitlines() but works only on \n |
|
834 | 834 | """ |
|
835 | 835 | if not string: |
|
836 | 836 | return |
|
837 | 837 | elif string == '\n': |
|
838 | 838 | yield u'\n' |
|
839 | 839 | else: |
|
840 | 840 | |
|
841 | 841 | has_newline = string.endswith('\n') |
|
842 | 842 | elements = string.split('\n') |
|
843 | 843 | if has_newline: |
|
844 | 844 | # skip last element as it's empty string from newlines |
|
845 | 845 | elements = elements[:-1] |
|
846 | 846 | |
|
847 | 847 | len_elements = len(elements) |
|
848 | 848 | |
|
849 | 849 | for cnt, line in enumerate(elements, start=1): |
|
850 | 850 | last_line = cnt == len_elements |
|
851 | 851 | if last_line and not has_newline: |
|
852 | 852 | yield safe_unicode(line) |
|
853 | 853 | else: |
|
854 | 854 | yield safe_unicode(line) + '\n' |
|
855 | 855 | |
|
856 | 856 | def prepare(self, inline_diff=True): |
|
857 | 857 | """ |
|
858 | 858 | Prepare the passed udiff for HTML rendering. |
|
859 | 859 | |
|
860 | 860 | :return: A list of dicts with diff information. |
|
861 | 861 | """ |
|
862 | 862 | parsed = self._parser(inline_diff=inline_diff) |
|
863 | 863 | self.parsed = True |
|
864 | 864 | self.parsed_diff = parsed |
|
865 | 865 | return parsed |
|
866 | 866 | |
|
867 | 867 | def as_raw(self, diff_lines=None): |
|
868 | 868 | """ |
|
869 | 869 | Returns raw diff as a byte string |
|
870 | 870 | """ |
|
871 | 871 | return self._diff.raw |
|
872 | 872 | |
|
873 | 873 | def as_html(self, table_class='code-difftable', line_class='line', |
|
874 | 874 | old_lineno_class='lineno old', new_lineno_class='lineno new', |
|
875 | 875 | code_class='code', enable_comments=False, parsed_lines=None): |
|
876 | 876 | """ |
|
877 | 877 | Return given diff as html table with customized css classes |
|
878 | 878 | """ |
|
879 | 879 | # TODO(marcink): not sure how to pass in translator |
|
880 | 880 | # here in an efficient way, leave the _ for proper gettext extraction |
|
881 | 881 | _ = lambda s: s |
|
882 | 882 | |
|
883 | 883 | def _link_to_if(condition, label, url): |
|
884 | 884 | """ |
|
885 | 885 | Generates a link if condition is meet or just the label if not. |
|
886 | 886 | """ |
|
887 | 887 | |
|
888 | 888 | if condition: |
|
889 | 889 | return '''<a href="%(url)s" class="tooltip" |
|
890 | 890 | title="%(title)s">%(label)s</a>''' % { |
|
891 | 891 | 'title': _('Click to select line'), |
|
892 | 892 | 'url': url, |
|
893 | 893 | 'label': label |
|
894 | 894 | } |
|
895 | 895 | else: |
|
896 | 896 | return label |
|
897 | 897 | if not self.parsed: |
|
898 | 898 | self.prepare() |
|
899 | 899 | |
|
900 | 900 | diff_lines = self.parsed_diff |
|
901 | 901 | if parsed_lines: |
|
902 | 902 | diff_lines = parsed_lines |
|
903 | 903 | |
|
904 | 904 | _html_empty = True |
|
905 | 905 | _html = [] |
|
906 | 906 | _html.append('''<table class="%(table_class)s">\n''' % { |
|
907 | 907 | 'table_class': table_class |
|
908 | 908 | }) |
|
909 | 909 | |
|
910 | 910 | for diff in diff_lines: |
|
911 | 911 | for line in diff['chunks']: |
|
912 | 912 | _html_empty = False |
|
913 | 913 | for change in line: |
|
914 | 914 | _html.append('''<tr class="%(lc)s %(action)s">\n''' % { |
|
915 | 915 | 'lc': line_class, |
|
916 | 916 | 'action': change['action'] |
|
917 | 917 | }) |
|
918 | 918 | anchor_old_id = '' |
|
919 | 919 | anchor_new_id = '' |
|
920 | 920 | anchor_old = "%(filename)s_o%(oldline_no)s" % { |
|
921 | 921 | 'filename': self._safe_id(diff['filename']), |
|
922 | 922 | 'oldline_no': change['old_lineno'] |
|
923 | 923 | } |
|
924 | 924 | anchor_new = "%(filename)s_n%(oldline_no)s" % { |
|
925 | 925 | 'filename': self._safe_id(diff['filename']), |
|
926 | 926 | 'oldline_no': change['new_lineno'] |
|
927 | 927 | } |
|
928 | 928 | cond_old = (change['old_lineno'] != '...' and |
|
929 | 929 | change['old_lineno']) |
|
930 | 930 | cond_new = (change['new_lineno'] != '...' and |
|
931 | 931 | change['new_lineno']) |
|
932 | 932 | if cond_old: |
|
933 | 933 | anchor_old_id = 'id="%s"' % anchor_old |
|
934 | 934 | if cond_new: |
|
935 | 935 | anchor_new_id = 'id="%s"' % anchor_new |
|
936 | 936 | |
|
937 | 937 | if change['action'] != Action.CONTEXT: |
|
938 | 938 | anchor_link = True |
|
939 | 939 | else: |
|
940 | 940 | anchor_link = False |
|
941 | 941 | |
|
942 | 942 | ########################################################### |
|
943 | 943 | # COMMENT ICONS |
|
944 | 944 | ########################################################### |
|
945 | 945 | _html.append('''\t<td class="add-comment-line"><span class="add-comment-content">''') |
|
946 | 946 | |
|
947 | 947 | if enable_comments and change['action'] != Action.CONTEXT: |
|
948 | 948 | _html.append('''<a href="#"><span class="icon-comment-add"></span></a>''') |
|
949 | 949 | |
|
950 | 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 | 953 | # OLD LINE NUMBER |
|
954 | 954 | ########################################################### |
|
955 | 955 | _html.append('''\t<td %(a_id)s class="%(olc)s">''' % { |
|
956 | 956 | 'a_id': anchor_old_id, |
|
957 | 957 | 'olc': old_lineno_class |
|
958 | 958 | }) |
|
959 | 959 | |
|
960 | 960 | _html.append('''%(link)s''' % { |
|
961 | 961 | 'link': _link_to_if(anchor_link, change['old_lineno'], |
|
962 | 962 | '#%s' % anchor_old) |
|
963 | 963 | }) |
|
964 | 964 | _html.append('''</td>\n''') |
|
965 | 965 | ########################################################### |
|
966 | 966 | # NEW LINE NUMBER |
|
967 | 967 | ########################################################### |
|
968 | 968 | |
|
969 | 969 | _html.append('''\t<td %(a_id)s class="%(nlc)s">''' % { |
|
970 | 970 | 'a_id': anchor_new_id, |
|
971 | 971 | 'nlc': new_lineno_class |
|
972 | 972 | }) |
|
973 | 973 | |
|
974 | 974 | _html.append('''%(link)s''' % { |
|
975 | 975 | 'link': _link_to_if(anchor_link, change['new_lineno'], |
|
976 | 976 | '#%s' % anchor_new) |
|
977 | 977 | }) |
|
978 | 978 | _html.append('''</td>\n''') |
|
979 | 979 | ########################################################### |
|
980 | 980 | # CODE |
|
981 | 981 | ########################################################### |
|
982 | 982 | code_classes = [code_class] |
|
983 | 983 | if (not enable_comments or |
|
984 | 984 | change['action'] == Action.CONTEXT): |
|
985 | 985 | code_classes.append('no-comment') |
|
986 | 986 | _html.append('\t<td class="%s">' % ' '.join(code_classes)) |
|
987 | 987 | _html.append('''\n\t\t<pre>%(code)s</pre>\n''' % { |
|
988 | 988 | 'code': change['line'] |
|
989 | 989 | }) |
|
990 | 990 | |
|
991 | 991 | _html.append('''\t</td>''') |
|
992 | 992 | _html.append('''\n</tr>\n''') |
|
993 | 993 | _html.append('''</table>''') |
|
994 | 994 | if _html_empty: |
|
995 | 995 | return None |
|
996 | 996 | return ''.join(_html) |
|
997 | 997 | |
|
998 | 998 | def stat(self): |
|
999 | 999 | """ |
|
1000 | 1000 | Returns tuple of added, and removed lines for this instance |
|
1001 | 1001 | """ |
|
1002 | 1002 | return self.adds, self.removes |
|
1003 | 1003 | |
|
1004 | 1004 | def get_context_of_line( |
|
1005 | 1005 | self, path, diff_line=None, context_before=3, context_after=3): |
|
1006 | 1006 | """ |
|
1007 | 1007 | Returns the context lines for the specified diff line. |
|
1008 | 1008 | |
|
1009 | 1009 | :type diff_line: :class:`DiffLineNumber` |
|
1010 | 1010 | """ |
|
1011 | 1011 | assert self.parsed, "DiffProcessor is not initialized." |
|
1012 | 1012 | |
|
1013 | 1013 | if None not in diff_line: |
|
1014 | 1014 | raise ValueError( |
|
1015 | 1015 | "Cannot specify both line numbers: {}".format(diff_line)) |
|
1016 | 1016 | |
|
1017 | 1017 | file_diff = self._get_file_diff(path) |
|
1018 | 1018 | chunk, idx = self._find_chunk_line_index(file_diff, diff_line) |
|
1019 | 1019 | |
|
1020 | 1020 | first_line_to_include = max(idx - context_before, 0) |
|
1021 | 1021 | first_line_after_context = idx + context_after + 1 |
|
1022 | 1022 | context_lines = chunk[first_line_to_include:first_line_after_context] |
|
1023 | 1023 | |
|
1024 | 1024 | line_contents = [ |
|
1025 | 1025 | _context_line(line) for line in context_lines |
|
1026 | 1026 | if _is_diff_content(line)] |
|
1027 | 1027 | # TODO: johbo: Interim fixup, the diff chunks drop the final newline. |
|
1028 | 1028 | # Once they are fixed, we can drop this line here. |
|
1029 | 1029 | if line_contents: |
|
1030 | 1030 | line_contents[-1] = ( |
|
1031 | 1031 | line_contents[-1][0], line_contents[-1][1].rstrip('\n') + '\n') |
|
1032 | 1032 | return line_contents |
|
1033 | 1033 | |
|
1034 | 1034 | def find_context(self, path, context, offset=0): |
|
1035 | 1035 | """ |
|
1036 | 1036 | Finds the given `context` inside of the diff. |
|
1037 | 1037 | |
|
1038 | 1038 | Use the parameter `offset` to specify which offset the target line has |
|
1039 | 1039 | inside of the given `context`. This way the correct diff line will be |
|
1040 | 1040 | returned. |
|
1041 | 1041 | |
|
1042 | 1042 | :param offset: Shall be used to specify the offset of the main line |
|
1043 | 1043 | within the given `context`. |
|
1044 | 1044 | """ |
|
1045 | 1045 | if offset < 0 or offset >= len(context): |
|
1046 | 1046 | raise ValueError( |
|
1047 | 1047 | "Only positive values up to the length of the context " |
|
1048 | 1048 | "minus one are allowed.") |
|
1049 | 1049 | |
|
1050 | 1050 | matches = [] |
|
1051 | 1051 | file_diff = self._get_file_diff(path) |
|
1052 | 1052 | |
|
1053 | 1053 | for chunk in file_diff['chunks']: |
|
1054 | 1054 | context_iter = iter(context) |
|
1055 | 1055 | for line_idx, line in enumerate(chunk): |
|
1056 | 1056 | try: |
|
1057 | 1057 | if _context_line(line) == context_iter.next(): |
|
1058 | 1058 | continue |
|
1059 | 1059 | except StopIteration: |
|
1060 | 1060 | matches.append((line_idx, chunk)) |
|
1061 | 1061 | context_iter = iter(context) |
|
1062 | 1062 | |
|
1063 | 1063 | # Increment position and triger StopIteration |
|
1064 | 1064 | # if we had a match at the end |
|
1065 | 1065 | line_idx += 1 |
|
1066 | 1066 | try: |
|
1067 | 1067 | context_iter.next() |
|
1068 | 1068 | except StopIteration: |
|
1069 | 1069 | matches.append((line_idx, chunk)) |
|
1070 | 1070 | |
|
1071 | 1071 | effective_offset = len(context) - offset |
|
1072 | 1072 | found_at_diff_lines = [ |
|
1073 | 1073 | _line_to_diff_line_number(chunk[idx - effective_offset]) |
|
1074 | 1074 | for idx, chunk in matches] |
|
1075 | 1075 | |
|
1076 | 1076 | return found_at_diff_lines |
|
1077 | 1077 | |
|
1078 | 1078 | def _get_file_diff(self, path): |
|
1079 | 1079 | for file_diff in self.parsed_diff: |
|
1080 | 1080 | if file_diff['filename'] == path: |
|
1081 | 1081 | break |
|
1082 | 1082 | else: |
|
1083 | 1083 | raise FileNotInDiffException("File {} not in diff".format(path)) |
|
1084 | 1084 | return file_diff |
|
1085 | 1085 | |
|
1086 | 1086 | def _find_chunk_line_index(self, file_diff, diff_line): |
|
1087 | 1087 | for chunk in file_diff['chunks']: |
|
1088 | 1088 | for idx, line in enumerate(chunk): |
|
1089 | 1089 | if line['old_lineno'] == diff_line.old: |
|
1090 | 1090 | return chunk, idx |
|
1091 | 1091 | if line['new_lineno'] == diff_line.new: |
|
1092 | 1092 | return chunk, idx |
|
1093 | 1093 | raise LineNotInDiffException( |
|
1094 | 1094 | "The line {} is not part of the diff.".format(diff_line)) |
|
1095 | 1095 | |
|
1096 | 1096 | |
|
1097 | 1097 | def _is_diff_content(line): |
|
1098 | 1098 | return line['action'] in ( |
|
1099 | 1099 | Action.UNMODIFIED, Action.ADD, Action.DELETE) |
|
1100 | 1100 | |
|
1101 | 1101 | |
|
1102 | 1102 | def _context_line(line): |
|
1103 | 1103 | return (line['action'], line['line']) |
|
1104 | 1104 | |
|
1105 | 1105 | |
|
1106 | 1106 | DiffLineNumber = collections.namedtuple('DiffLineNumber', ['old', 'new']) |
|
1107 | 1107 | |
|
1108 | 1108 | |
|
1109 | 1109 | def _line_to_diff_line_number(line): |
|
1110 | 1110 | new_line_no = line['new_lineno'] or None |
|
1111 | 1111 | old_line_no = line['old_lineno'] or None |
|
1112 | 1112 | return DiffLineNumber(old=old_line_no, new=new_line_no) |
|
1113 | 1113 | |
|
1114 | 1114 | |
|
1115 | 1115 | class FileNotInDiffException(Exception): |
|
1116 | 1116 | """ |
|
1117 | 1117 | Raised when the context for a missing file is requested. |
|
1118 | 1118 | |
|
1119 | 1119 | If you request the context for a line in a file which is not part of the |
|
1120 | 1120 | given diff, then this exception is raised. |
|
1121 | 1121 | """ |
|
1122 | 1122 | |
|
1123 | 1123 | |
|
1124 | 1124 | class LineNotInDiffException(Exception): |
|
1125 | 1125 | """ |
|
1126 | 1126 | Raised when the context for a missing line is requested. |
|
1127 | 1127 | |
|
1128 | 1128 | If you request the context for a line in a file and this line is not |
|
1129 | 1129 | part of the given diff, then this exception is raised. |
|
1130 | 1130 | """ |
|
1131 | 1131 | |
|
1132 | 1132 | |
|
1133 | 1133 | class DiffLimitExceeded(Exception): |
|
1134 | 1134 | pass |
|
1135 | 1135 | |
|
1136 | 1136 | |
|
1137 | 1137 | # NOTE(marcink): if diffs.mako change, probably this |
|
1138 | 1138 | # needs a bump to next version |
|
1139 |
CURRENT_DIFF_VERSION = 'v |
|
|
1139 | CURRENT_DIFF_VERSION = 'v3' | |
|
1140 | 1140 | |
|
1141 | 1141 | |
|
1142 | 1142 | def _cleanup_cache_file(cached_diff_file): |
|
1143 | 1143 | # cleanup file to not store it "damaged" |
|
1144 | 1144 | try: |
|
1145 | 1145 | os.remove(cached_diff_file) |
|
1146 | 1146 | except Exception: |
|
1147 | 1147 | log.exception('Failed to cleanup path %s', cached_diff_file) |
|
1148 | 1148 | |
|
1149 | 1149 | |
|
1150 | 1150 | def cache_diff(cached_diff_file, diff, commits): |
|
1151 | 1151 | |
|
1152 | 1152 | struct = { |
|
1153 | 1153 | 'version': CURRENT_DIFF_VERSION, |
|
1154 | 1154 | 'diff': diff, |
|
1155 | 1155 | 'commits': commits |
|
1156 | 1156 | } |
|
1157 | 1157 | |
|
1158 | 1158 | try: |
|
1159 | 1159 | with bz2.BZ2File(cached_diff_file, 'wb') as f: |
|
1160 | 1160 | pickle.dump(struct, f) |
|
1161 | 1161 | log.debug('Saved diff cache under %s', cached_diff_file) |
|
1162 | 1162 | except Exception: |
|
1163 | 1163 | log.warn('Failed to save cache', exc_info=True) |
|
1164 | 1164 | _cleanup_cache_file(cached_diff_file) |
|
1165 | 1165 | |
|
1166 | 1166 | |
|
1167 | 1167 | def load_cached_diff(cached_diff_file): |
|
1168 | 1168 | |
|
1169 | 1169 | default_struct = { |
|
1170 | 1170 | 'version': CURRENT_DIFF_VERSION, |
|
1171 | 1171 | 'diff': None, |
|
1172 | 1172 | 'commits': None |
|
1173 | 1173 | } |
|
1174 | 1174 | |
|
1175 | 1175 | has_cache = os.path.isfile(cached_diff_file) |
|
1176 | 1176 | if not has_cache: |
|
1177 | 1177 | return default_struct |
|
1178 | 1178 | |
|
1179 | 1179 | data = None |
|
1180 | 1180 | try: |
|
1181 | 1181 | with bz2.BZ2File(cached_diff_file, 'rb') as f: |
|
1182 | 1182 | data = pickle.load(f) |
|
1183 | 1183 | log.debug('Loaded diff cache from %s', cached_diff_file) |
|
1184 | 1184 | except Exception: |
|
1185 | 1185 | log.warn('Failed to read diff cache file', exc_info=True) |
|
1186 | 1186 | |
|
1187 | 1187 | if not data: |
|
1188 | 1188 | data = default_struct |
|
1189 | 1189 | |
|
1190 | 1190 | if not isinstance(data, dict): |
|
1191 | 1191 | # old version of data ? |
|
1192 | 1192 | data = default_struct |
|
1193 | 1193 | |
|
1194 | 1194 | # check version |
|
1195 | 1195 | if data.get('version') != CURRENT_DIFF_VERSION: |
|
1196 | 1196 | # purge cache |
|
1197 | 1197 | _cleanup_cache_file(cached_diff_file) |
|
1198 | 1198 | return default_struct |
|
1199 | 1199 | |
|
1200 | 1200 | return data |
|
1201 | 1201 | |
|
1202 | 1202 | |
|
1203 | 1203 | def generate_diff_cache_key(*args): |
|
1204 | 1204 | """ |
|
1205 | 1205 | Helper to generate a cache key using arguments |
|
1206 | 1206 | """ |
|
1207 | 1207 | def arg_mapper(input_param): |
|
1208 | 1208 | input_param = safe_str(input_param) |
|
1209 | 1209 | # we cannot allow '/' in arguments since it would allow |
|
1210 | 1210 | # subdirectory usage |
|
1211 | 1211 | input_param.replace('/', '_') |
|
1212 | 1212 | return input_param or None # prevent empty string arguments |
|
1213 | 1213 | |
|
1214 | 1214 | return '_'.join([ |
|
1215 | 1215 | '{}' for i in range(len(args))]).format(*map(arg_mapper, args)) |
|
1216 | 1216 | |
|
1217 | 1217 | |
|
1218 | 1218 | def diff_cache_exist(cache_storage, *args): |
|
1219 | 1219 | """ |
|
1220 | 1220 | Based on all generated arguments check and return a cache path |
|
1221 | 1221 | """ |
|
1222 | 1222 | cache_key = generate_diff_cache_key(*args) |
|
1223 | 1223 | cache_file_path = os.path.join(cache_storage, cache_key) |
|
1224 | 1224 | # prevent path traversal attacks using some param that have e.g '../../' |
|
1225 | 1225 | if not os.path.abspath(cache_file_path).startswith(cache_storage): |
|
1226 | 1226 | raise ValueError('Final path must be within {}'.format(cache_storage)) |
|
1227 | 1227 | |
|
1228 | 1228 | return cache_file_path |
@@ -1,1172 +1,1221 b'' | |||
|
1 | 1 | // Default styles |
|
2 | 2 | |
|
3 | 3 | .diff-collapse { |
|
4 | 4 | margin: @padding 0; |
|
5 | 5 | text-align: right; |
|
6 | 6 | } |
|
7 | 7 | |
|
8 | 8 | .diff-container { |
|
9 | 9 | margin-bottom: @space; |
|
10 | 10 | |
|
11 | 11 | .diffblock { |
|
12 | 12 | margin-bottom: @space; |
|
13 | 13 | } |
|
14 | 14 | |
|
15 | 15 | &.hidden { |
|
16 | 16 | display: none; |
|
17 | 17 | overflow: hidden; |
|
18 | 18 | } |
|
19 | 19 | } |
|
20 | 20 | |
|
21 | 21 | |
|
22 | 22 | div.diffblock .sidebyside { |
|
23 | 23 | background: #ffffff; |
|
24 | 24 | } |
|
25 | 25 | |
|
26 | 26 | div.diffblock { |
|
27 | 27 | overflow-x: auto; |
|
28 | 28 | overflow-y: hidden; |
|
29 | 29 | clear: both; |
|
30 | 30 | padding: 0px; |
|
31 | 31 | background: @grey6; |
|
32 | 32 | border: @border-thickness solid @grey5; |
|
33 | 33 | -webkit-border-radius: @border-radius @border-radius 0px 0px; |
|
34 | 34 | border-radius: @border-radius @border-radius 0px 0px; |
|
35 | 35 | |
|
36 | 36 | |
|
37 | 37 | .comments-number { |
|
38 | 38 | float: right; |
|
39 | 39 | } |
|
40 | 40 | |
|
41 | 41 | // BEGIN CODE-HEADER STYLES |
|
42 | 42 | |
|
43 | 43 | .code-header { |
|
44 | 44 | background: @grey6; |
|
45 | 45 | padding: 10px 0 10px 0; |
|
46 | 46 | height: auto; |
|
47 | 47 | width: 100%; |
|
48 | 48 | |
|
49 | 49 | .hash { |
|
50 | 50 | float: left; |
|
51 | 51 | padding: 2px 0 0 2px; |
|
52 | 52 | } |
|
53 | 53 | |
|
54 | 54 | .date { |
|
55 | 55 | float: left; |
|
56 | 56 | text-transform: uppercase; |
|
57 | 57 | padding: 4px 0px 0px 2px; |
|
58 | 58 | } |
|
59 | 59 | |
|
60 | 60 | div { |
|
61 | 61 | margin-left: 4px; |
|
62 | 62 | } |
|
63 | 63 | |
|
64 | 64 | div.compare_header { |
|
65 | 65 | min-height: 40px; |
|
66 | 66 | margin: 0; |
|
67 | 67 | padding: 0 @padding; |
|
68 | 68 | |
|
69 | 69 | .drop-menu { |
|
70 | 70 | float:left; |
|
71 | 71 | display: block; |
|
72 | 72 | margin:0 0 @padding 0; |
|
73 | 73 | } |
|
74 | 74 | |
|
75 | 75 | .compare-label { |
|
76 | 76 | float: left; |
|
77 | 77 | clear: both; |
|
78 | 78 | display: inline-block; |
|
79 | 79 | min-width: 5em; |
|
80 | 80 | margin: 0; |
|
81 | 81 | padding: @button-padding @button-padding @button-padding 0; |
|
82 | 82 | font-family: @text-semibold; |
|
83 | 83 | } |
|
84 | 84 | |
|
85 | 85 | .compare-buttons { |
|
86 | 86 | float: left; |
|
87 | 87 | margin: 0; |
|
88 | 88 | padding: 0 0 @padding; |
|
89 | 89 | |
|
90 | 90 | .btn { |
|
91 | 91 | margin: 0 @padding 0 0; |
|
92 | 92 | } |
|
93 | 93 | } |
|
94 | 94 | } |
|
95 | 95 | |
|
96 | 96 | } |
|
97 | 97 | |
|
98 | 98 | .parents { |
|
99 | 99 | float: left; |
|
100 | 100 | width: 100px; |
|
101 | 101 | font-weight: 400; |
|
102 | 102 | vertical-align: middle; |
|
103 | 103 | padding: 0px 2px 0px 2px; |
|
104 | 104 | background-color: @grey6; |
|
105 | 105 | |
|
106 | 106 | #parent_link { |
|
107 | 107 | margin: 00px 2px; |
|
108 | 108 | |
|
109 | 109 | &.double { |
|
110 | 110 | margin: 0px 2px; |
|
111 | 111 | } |
|
112 | 112 | |
|
113 | 113 | &.disabled{ |
|
114 | 114 | margin-right: @padding; |
|
115 | 115 | } |
|
116 | 116 | } |
|
117 | 117 | } |
|
118 | 118 | |
|
119 | 119 | .children { |
|
120 | 120 | float: right; |
|
121 | 121 | width: 100px; |
|
122 | 122 | font-weight: 400; |
|
123 | 123 | vertical-align: middle; |
|
124 | 124 | text-align: right; |
|
125 | 125 | padding: 0px 2px 0px 2px; |
|
126 | 126 | background-color: @grey6; |
|
127 | 127 | |
|
128 | 128 | #child_link { |
|
129 | 129 | margin: 0px 2px; |
|
130 | 130 | |
|
131 | 131 | &.double { |
|
132 | 132 | margin: 0px 2px; |
|
133 | 133 | } |
|
134 | 134 | |
|
135 | 135 | &.disabled{ |
|
136 | 136 | margin-right: @padding; |
|
137 | 137 | } |
|
138 | 138 | } |
|
139 | 139 | } |
|
140 | 140 | |
|
141 | 141 | .changeset_header { |
|
142 | 142 | height: 16px; |
|
143 | 143 | |
|
144 | 144 | & > div{ |
|
145 | 145 | margin-right: @padding; |
|
146 | 146 | } |
|
147 | 147 | } |
|
148 | 148 | |
|
149 | 149 | .changeset_file { |
|
150 | 150 | text-align: left; |
|
151 | 151 | float: left; |
|
152 | 152 | padding: 0; |
|
153 | 153 | |
|
154 | 154 | a{ |
|
155 | 155 | display: inline-block; |
|
156 | 156 | margin-right: 0.5em; |
|
157 | 157 | } |
|
158 | 158 | |
|
159 | 159 | #selected_mode{ |
|
160 | 160 | margin-left: 0; |
|
161 | 161 | } |
|
162 | 162 | } |
|
163 | 163 | |
|
164 | 164 | .diff-menu-wrapper { |
|
165 | 165 | float: left; |
|
166 | 166 | } |
|
167 | 167 | |
|
168 | 168 | .diff-menu { |
|
169 | 169 | position: absolute; |
|
170 | 170 | background: none repeat scroll 0 0 #FFFFFF; |
|
171 | 171 | border-color: #003367 @grey3 @grey3; |
|
172 | 172 | border-right: 1px solid @grey3; |
|
173 | 173 | border-style: solid solid solid; |
|
174 | 174 | border-width: @border-thickness; |
|
175 | 175 | box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2); |
|
176 | 176 | margin-top: 5px; |
|
177 | 177 | margin-left: 1px; |
|
178 | 178 | } |
|
179 | 179 | |
|
180 | 180 | .diff-actions, .editor-actions { |
|
181 | 181 | float: left; |
|
182 | 182 | |
|
183 | 183 | input{ |
|
184 | 184 | margin: 0 0.5em 0 0; |
|
185 | 185 | } |
|
186 | 186 | } |
|
187 | 187 | |
|
188 | 188 | // END CODE-HEADER STYLES |
|
189 | 189 | |
|
190 | 190 | // BEGIN CODE-BODY STYLES |
|
191 | 191 | |
|
192 | 192 | .code-body { |
|
193 | 193 | padding: 0; |
|
194 | 194 | background-color: #ffffff; |
|
195 | 195 | position: relative; |
|
196 | 196 | max-width: none; |
|
197 | 197 | box-sizing: border-box; |
|
198 | 198 | // TODO: johbo: Parent has overflow: auto, this forces the child here |
|
199 | 199 | // to have the intended size and to scroll. Should be simplified. |
|
200 | 200 | width: 100%; |
|
201 | 201 | overflow-x: auto; |
|
202 | 202 | } |
|
203 | 203 | |
|
204 | 204 | pre.raw { |
|
205 | 205 | background: white; |
|
206 | 206 | color: @grey1; |
|
207 | 207 | } |
|
208 | 208 | // END CODE-BODY STYLES |
|
209 | 209 | |
|
210 | 210 | } |
|
211 | 211 | |
|
212 | 212 | |
|
213 | 213 | table.code-difftable { |
|
214 | 214 | border-collapse: collapse; |
|
215 | 215 | width: 99%; |
|
216 | 216 | border-radius: 0px !important; |
|
217 | 217 | |
|
218 | 218 | td { |
|
219 | 219 | padding: 0 !important; |
|
220 | 220 | background: none !important; |
|
221 | 221 | border: 0 !important; |
|
222 | 222 | } |
|
223 | 223 | |
|
224 | 224 | .context { |
|
225 | 225 | background: none repeat scroll 0 0 #DDE7EF; |
|
226 | 226 | } |
|
227 | 227 | |
|
228 | 228 | .add { |
|
229 | 229 | background: none repeat scroll 0 0 #DDFFDD; |
|
230 | 230 | |
|
231 | 231 | ins { |
|
232 | 232 | background: none repeat scroll 0 0 #AAFFAA; |
|
233 | 233 | text-decoration: none; |
|
234 | 234 | } |
|
235 | 235 | } |
|
236 | 236 | |
|
237 | 237 | .del { |
|
238 | 238 | background: none repeat scroll 0 0 #FFDDDD; |
|
239 | 239 | |
|
240 | 240 | del { |
|
241 | 241 | background: none repeat scroll 0 0 #FFAAAA; |
|
242 | 242 | text-decoration: none; |
|
243 | 243 | } |
|
244 | 244 | } |
|
245 | 245 | |
|
246 | 246 | /** LINE NUMBERS **/ |
|
247 | 247 | .lineno { |
|
248 | 248 | padding-left: 2px !important; |
|
249 | 249 | padding-right: 2px; |
|
250 | 250 | text-align: right; |
|
251 | 251 | width: 32px; |
|
252 | 252 | -moz-user-select: none; |
|
253 | 253 | -webkit-user-select: none; |
|
254 | 254 | border-right: @border-thickness solid @grey5 !important; |
|
255 | 255 | border-left: 0px solid #CCC !important; |
|
256 | 256 | border-top: 0px solid #CCC !important; |
|
257 | 257 | border-bottom: none !important; |
|
258 | 258 | |
|
259 | 259 | a { |
|
260 | 260 | &:extend(pre); |
|
261 | 261 | text-align: right; |
|
262 | 262 | padding-right: 2px; |
|
263 | 263 | cursor: pointer; |
|
264 | 264 | display: block; |
|
265 | 265 | width: 32px; |
|
266 | 266 | } |
|
267 | 267 | } |
|
268 | 268 | |
|
269 | 269 | .context { |
|
270 | 270 | cursor: auto; |
|
271 | 271 | &:extend(pre); |
|
272 | 272 | } |
|
273 | 273 | |
|
274 | 274 | .lineno-inline { |
|
275 | 275 | background: none repeat scroll 0 0 #FFF !important; |
|
276 | 276 | padding-left: 2px; |
|
277 | 277 | padding-right: 2px; |
|
278 | 278 | text-align: right; |
|
279 | 279 | width: 30px; |
|
280 | 280 | -moz-user-select: none; |
|
281 | 281 | -webkit-user-select: none; |
|
282 | 282 | } |
|
283 | 283 | |
|
284 | 284 | /** CODE **/ |
|
285 | 285 | .code { |
|
286 | 286 | display: block; |
|
287 | 287 | width: 100%; |
|
288 | 288 | |
|
289 | 289 | td { |
|
290 | 290 | margin: 0; |
|
291 | 291 | padding: 0; |
|
292 | 292 | } |
|
293 | 293 | |
|
294 | 294 | pre { |
|
295 | 295 | margin: 0; |
|
296 | 296 | padding: 0; |
|
297 | 297 | margin-left: .5em; |
|
298 | 298 | } |
|
299 | 299 | } |
|
300 | 300 | } |
|
301 | 301 | |
|
302 | 302 | |
|
303 | 303 | // Comments |
|
304 | 304 | |
|
305 | 305 | div.comment:target { |
|
306 | 306 | border-left: 6px solid @comment-highlight-color !important; |
|
307 | 307 | padding-left: 3px; |
|
308 | 308 | margin-left: -9px; |
|
309 | 309 | } |
|
310 | 310 | |
|
311 | 311 | //TODO: anderson: can't get an absolute number out of anything, so had to put the |
|
312 | 312 | //current values that might change. But to make it clear I put as a calculation |
|
313 | 313 | @comment-max-width: 1065px; |
|
314 | 314 | @pr-extra-margin: 34px; |
|
315 | 315 | @pr-border-spacing: 4px; |
|
316 | 316 | @pr-comment-width: @comment-max-width - @pr-extra-margin - @pr-border-spacing; |
|
317 | 317 | |
|
318 | 318 | // Pull Request |
|
319 | 319 | .cs_files .code-difftable { |
|
320 | 320 | border: @border-thickness solid @grey5; //borders only on PRs |
|
321 | 321 | |
|
322 | 322 | .comment-inline-form, |
|
323 | 323 | div.comment { |
|
324 | 324 | width: @pr-comment-width; |
|
325 | 325 | } |
|
326 | 326 | } |
|
327 | 327 | |
|
328 | 328 | // Changeset |
|
329 | 329 | .code-difftable { |
|
330 | 330 | .comment-inline-form, |
|
331 | 331 | div.comment { |
|
332 | 332 | width: @comment-max-width; |
|
333 | 333 | } |
|
334 | 334 | } |
|
335 | 335 | |
|
336 | 336 | //Style page |
|
337 | 337 | @style-extra-margin: @sidebar-width + (@sidebarpadding * 3) + @padding; |
|
338 | 338 | #style-page .code-difftable{ |
|
339 | 339 | .comment-inline-form, |
|
340 | 340 | div.comment { |
|
341 | 341 | width: @comment-max-width - @style-extra-margin; |
|
342 | 342 | } |
|
343 | 343 | } |
|
344 | 344 | |
|
345 | 345 | #context-bar > h2 { |
|
346 | 346 | font-size: 20px; |
|
347 | 347 | } |
|
348 | 348 | |
|
349 | 349 | #context-bar > h2> a { |
|
350 | 350 | font-size: 20px; |
|
351 | 351 | } |
|
352 | 352 | // end of defaults |
|
353 | 353 | |
|
354 | 354 | .file_diff_buttons { |
|
355 | 355 | padding: 0 0 @padding; |
|
356 | 356 | |
|
357 | 357 | .drop-menu { |
|
358 | 358 | float: left; |
|
359 | 359 | margin: 0 @padding 0 0; |
|
360 | 360 | } |
|
361 | 361 | .btn { |
|
362 | 362 | margin: 0 @padding 0 0; |
|
363 | 363 | } |
|
364 | 364 | } |
|
365 | 365 | |
|
366 | 366 | .code-body.textarea.editor { |
|
367 | 367 | max-width: none; |
|
368 | 368 | padding: 15px; |
|
369 | 369 | } |
|
370 | 370 | |
|
371 | 371 | td.injected_diff{ |
|
372 | 372 | max-width: 1178px; |
|
373 | 373 | overflow-x: auto; |
|
374 | 374 | overflow-y: hidden; |
|
375 | 375 | |
|
376 | 376 | div.diff-container, |
|
377 | 377 | div.diffblock{ |
|
378 | 378 | max-width: 100%; |
|
379 | 379 | } |
|
380 | 380 | |
|
381 | 381 | div.code-body { |
|
382 | 382 | max-width: 1124px; |
|
383 | 383 | overflow-x: auto; |
|
384 | 384 | overflow-y: hidden; |
|
385 | 385 | padding: 0; |
|
386 | 386 | } |
|
387 | 387 | div.diffblock { |
|
388 | 388 | border: none; |
|
389 | 389 | } |
|
390 | 390 | |
|
391 | 391 | &.inline-form { |
|
392 | 392 | width: 99% |
|
393 | 393 | } |
|
394 | 394 | } |
|
395 | 395 | |
|
396 | 396 | |
|
397 | 397 | table.code-difftable { |
|
398 | 398 | width: 100%; |
|
399 | 399 | } |
|
400 | 400 | |
|
401 | 401 | /** PYGMENTS COLORING **/ |
|
402 | 402 | div.codeblock { |
|
403 | 403 | |
|
404 | 404 | // TODO: johbo: Added interim to get rid of the margin around |
|
405 | 405 | // Select2 widgets. This needs further cleanup. |
|
406 | 406 | margin-top: @padding; |
|
407 | 407 | |
|
408 | 408 | overflow: auto; |
|
409 | 409 | padding: 0px; |
|
410 | 410 | border: @border-thickness solid @grey5; |
|
411 | 411 | background: @grey6; |
|
412 | 412 | .border-radius(@border-radius); |
|
413 | 413 | |
|
414 | 414 | #remove_gist { |
|
415 | 415 | float: right; |
|
416 | 416 | } |
|
417 | 417 | |
|
418 | 418 | .gist_url { |
|
419 | 419 | padding: 0px 0px 10px 0px; |
|
420 | 420 | } |
|
421 | 421 | |
|
422 | 422 | .author { |
|
423 | 423 | clear: both; |
|
424 | 424 | vertical-align: middle; |
|
425 | 425 | font-family: @text-bold; |
|
426 | 426 | } |
|
427 | 427 | |
|
428 | 428 | .btn-mini { |
|
429 | 429 | float: left; |
|
430 | 430 | margin: 0 5px 0 0; |
|
431 | 431 | } |
|
432 | 432 | |
|
433 | 433 | .code-header { |
|
434 | 434 | padding: @padding; |
|
435 | 435 | border-bottom: @border-thickness solid @grey5; |
|
436 | 436 | |
|
437 | 437 | .rc-user { |
|
438 | 438 | min-width: 0; |
|
439 | 439 | margin-right: .5em; |
|
440 | 440 | } |
|
441 | 441 | |
|
442 | 442 | .stats { |
|
443 | 443 | clear: both; |
|
444 | 444 | margin: 0 0 @padding 0; |
|
445 | 445 | padding: 0; |
|
446 | 446 | .left { |
|
447 | 447 | float: left; |
|
448 | 448 | clear: left; |
|
449 | 449 | max-width: 75%; |
|
450 | 450 | margin: 0 0 @padding 0; |
|
451 | 451 | |
|
452 | 452 | &.item { |
|
453 | 453 | margin-right: @padding; |
|
454 | 454 | &.last { border-right: none; } |
|
455 | 455 | } |
|
456 | 456 | } |
|
457 | 457 | .buttons { float: right; } |
|
458 | 458 | .author { |
|
459 | 459 | height: 25px; margin-left: 15px; font-weight: bold; |
|
460 | 460 | } |
|
461 | 461 | } |
|
462 | 462 | |
|
463 | 463 | .commit { |
|
464 | 464 | margin: 5px 0 0 26px; |
|
465 | 465 | font-weight: normal; |
|
466 | 466 | white-space: pre-wrap; |
|
467 | 467 | } |
|
468 | 468 | } |
|
469 | 469 | |
|
470 | 470 | .message { |
|
471 | 471 | position: relative; |
|
472 | 472 | margin: @padding; |
|
473 | 473 | |
|
474 | 474 | .codeblock-label { |
|
475 | 475 | margin: 0 0 1em 0; |
|
476 | 476 | } |
|
477 | 477 | } |
|
478 | 478 | |
|
479 | 479 | .code-body { |
|
480 | 480 | padding: @padding; |
|
481 | 481 | background-color: #ffffff; |
|
482 | 482 | min-width: 100%; |
|
483 | 483 | box-sizing: border-box; |
|
484 | 484 | // TODO: johbo: Parent has overflow: auto, this forces the child here |
|
485 | 485 | // to have the intended size and to scroll. Should be simplified. |
|
486 | 486 | width: 100%; |
|
487 | 487 | overflow-x: auto; |
|
488 | 488 | |
|
489 | 489 | img.rendered-binary { |
|
490 | 490 | height: auto; |
|
491 | 491 | width: 100%; |
|
492 | 492 | } |
|
493 | 493 | } |
|
494 | 494 | } |
|
495 | 495 | |
|
496 | 496 | .code-highlighttable, |
|
497 | 497 | div.codeblock { |
|
498 | 498 | |
|
499 | 499 | &.readme { |
|
500 | 500 | background-color: white; |
|
501 | 501 | } |
|
502 | 502 | |
|
503 | 503 | .markdown-block table { |
|
504 | 504 | border-collapse: collapse; |
|
505 | 505 | |
|
506 | 506 | th, |
|
507 | 507 | td { |
|
508 | 508 | padding: .5em; |
|
509 | 509 | border: @border-thickness solid @border-default-color; |
|
510 | 510 | } |
|
511 | 511 | } |
|
512 | 512 | |
|
513 | 513 | table { |
|
514 | 514 | border: 0px; |
|
515 | 515 | margin: 0; |
|
516 | 516 | letter-spacing: normal; |
|
517 | 517 | |
|
518 | 518 | |
|
519 | 519 | td { |
|
520 | 520 | border: 0px; |
|
521 | 521 | vertical-align: top; |
|
522 | 522 | } |
|
523 | 523 | } |
|
524 | 524 | } |
|
525 | 525 | |
|
526 | 526 | div.codeblock .code-header .search-path { padding: 0 0 0 10px; } |
|
527 | 527 | div.search-code-body { |
|
528 | 528 | background-color: #ffffff; padding: 5px 0 5px 10px; |
|
529 | 529 | pre { |
|
530 | 530 | .match { background-color: #faffa6;} |
|
531 | 531 | .break { display: block; width: 100%; background-color: #DDE7EF; color: #747474; } |
|
532 | 532 | } |
|
533 | 533 | .code-highlighttable { |
|
534 | 534 | border-collapse: collapse; |
|
535 | 535 | |
|
536 | 536 | tr:hover { |
|
537 | 537 | background: #fafafa; |
|
538 | 538 | } |
|
539 | 539 | td.code { |
|
540 | 540 | padding-left: 10px; |
|
541 | 541 | } |
|
542 | 542 | td.line { |
|
543 | 543 | border-right: 1px solid #ccc !important; |
|
544 | 544 | padding-right: 10px; |
|
545 | 545 | text-align: right; |
|
546 | 546 | font-family: "Lucida Console",Monaco,monospace; |
|
547 | 547 | span { |
|
548 | 548 | white-space: pre-wrap; |
|
549 | 549 | color: #666666; |
|
550 | 550 | } |
|
551 | 551 | } |
|
552 | 552 | } |
|
553 | 553 | } |
|
554 | 554 | |
|
555 | 555 | div.annotatediv { margin-left: 2px; margin-right: 4px; } |
|
556 | 556 | .code-highlight { |
|
557 | 557 | margin: 0; padding: 0; border-left: @border-thickness solid @grey5; |
|
558 | 558 | pre, .linenodiv pre { padding: 0 5px; margin: 0; } |
|
559 | 559 | pre div:target {background-color: @comment-highlight-color !important;} |
|
560 | 560 | } |
|
561 | 561 | |
|
562 | 562 | .linenos a { text-decoration: none; } |
|
563 | 563 | |
|
564 | 564 | .CodeMirror-selected { background: @rchighlightblue; } |
|
565 | 565 | .CodeMirror-focused .CodeMirror-selected { background: @rchighlightblue; } |
|
566 | 566 | .CodeMirror ::selection { background: @rchighlightblue; } |
|
567 | 567 | .CodeMirror ::-moz-selection { background: @rchighlightblue; } |
|
568 | 568 | |
|
569 | 569 | .code { display: block; border:0px !important; } |
|
570 | 570 | .code-highlight, /* TODO: dan: merge codehilite into code-highlight */ |
|
571 | 571 | .codehilite { |
|
572 | 572 | .hll { background-color: #ffffcc } |
|
573 | 573 | .c { color: #408080; font-style: italic } /* Comment */ |
|
574 | 574 | .err, .codehilite .err { border: none } /* Error */ |
|
575 | 575 | .k { color: #008000; font-weight: bold } /* Keyword */ |
|
576 | 576 | .o { color: #666666 } /* Operator */ |
|
577 | 577 | .cm { color: #408080; font-style: italic } /* Comment.Multiline */ |
|
578 | 578 | .cp { color: #BC7A00 } /* Comment.Preproc */ |
|
579 | 579 | .c1 { color: #408080; font-style: italic } /* Comment.Single */ |
|
580 | 580 | .cs { color: #408080; font-style: italic } /* Comment.Special */ |
|
581 | 581 | .gd { color: #A00000 } /* Generic.Deleted */ |
|
582 | 582 | .ge { font-style: italic } /* Generic.Emph */ |
|
583 | 583 | .gr { color: #FF0000 } /* Generic.Error */ |
|
584 | 584 | .gh { color: #000080; font-weight: bold } /* Generic.Heading */ |
|
585 | 585 | .gi { color: #00A000 } /* Generic.Inserted */ |
|
586 | 586 | .go { color: #808080 } /* Generic.Output */ |
|
587 | 587 | .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ |
|
588 | 588 | .gs { font-weight: bold } /* Generic.Strong */ |
|
589 | 589 | .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ |
|
590 | 590 | .gt { color: #0040D0 } /* Generic.Traceback */ |
|
591 | 591 | .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ |
|
592 | 592 | .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ |
|
593 | 593 | .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ |
|
594 | 594 | .kp { color: #008000 } /* Keyword.Pseudo */ |
|
595 | 595 | .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ |
|
596 | 596 | .kt { color: #B00040 } /* Keyword.Type */ |
|
597 | 597 | .m { color: #666666 } /* Literal.Number */ |
|
598 | 598 | .s { color: #BA2121 } /* Literal.String */ |
|
599 | 599 | .na { color: #7D9029 } /* Name.Attribute */ |
|
600 | 600 | .nb { color: #008000 } /* Name.Builtin */ |
|
601 | 601 | .nc { color: #0000FF; font-weight: bold } /* Name.Class */ |
|
602 | 602 | .no { color: #880000 } /* Name.Constant */ |
|
603 | 603 | .nd { color: #AA22FF } /* Name.Decorator */ |
|
604 | 604 | .ni { color: #999999; font-weight: bold } /* Name.Entity */ |
|
605 | 605 | .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ |
|
606 | 606 | .nf { color: #0000FF } /* Name.Function */ |
|
607 | 607 | .nl { color: #A0A000 } /* Name.Label */ |
|
608 | 608 | .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ |
|
609 | 609 | .nt { color: #008000; font-weight: bold } /* Name.Tag */ |
|
610 | 610 | .nv { color: #19177C } /* Name.Variable */ |
|
611 | 611 | .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ |
|
612 | 612 | .w { color: #bbbbbb } /* Text.Whitespace */ |
|
613 | 613 | .mf { color: #666666 } /* Literal.Number.Float */ |
|
614 | 614 | .mh { color: #666666 } /* Literal.Number.Hex */ |
|
615 | 615 | .mi { color: #666666 } /* Literal.Number.Integer */ |
|
616 | 616 | .mo { color: #666666 } /* Literal.Number.Oct */ |
|
617 | 617 | .sb { color: #BA2121 } /* Literal.String.Backtick */ |
|
618 | 618 | .sc { color: #BA2121 } /* Literal.String.Char */ |
|
619 | 619 | .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ |
|
620 | 620 | .s2 { color: #BA2121 } /* Literal.String.Double */ |
|
621 | 621 | .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ |
|
622 | 622 | .sh { color: #BA2121 } /* Literal.String.Heredoc */ |
|
623 | 623 | .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ |
|
624 | 624 | .sx { color: #008000 } /* Literal.String.Other */ |
|
625 | 625 | .sr { color: #BB6688 } /* Literal.String.Regex */ |
|
626 | 626 | .s1 { color: #BA2121 } /* Literal.String.Single */ |
|
627 | 627 | .ss { color: #19177C } /* Literal.String.Symbol */ |
|
628 | 628 | .bp { color: #008000 } /* Name.Builtin.Pseudo */ |
|
629 | 629 | .vc { color: #19177C } /* Name.Variable.Class */ |
|
630 | 630 | .vg { color: #19177C } /* Name.Variable.Global */ |
|
631 | 631 | .vi { color: #19177C } /* Name.Variable.Instance */ |
|
632 | 632 | .il { color: #666666 } /* Literal.Number.Integer.Long */ |
|
633 | 633 | } |
|
634 | 634 | |
|
635 | 635 | /* customized pre blocks for markdown/rst */ |
|
636 | 636 | pre.literal-block, .codehilite pre{ |
|
637 | 637 | padding: @padding; |
|
638 | 638 | border: 1px solid @grey6; |
|
639 | 639 | .border-radius(@border-radius); |
|
640 | 640 | background-color: @grey7; |
|
641 | 641 | } |
|
642 | 642 | |
|
643 | 643 | |
|
644 | 644 | /* START NEW CODE BLOCK CSS */ |
|
645 | 645 | |
|
646 | 646 | @cb-line-height: 18px; |
|
647 | 647 | @cb-line-code-padding: 10px; |
|
648 | 648 | @cb-text-padding: 5px; |
|
649 | 649 | |
|
650 | 650 | @pill-padding: 2px 7px; |
|
651 | 651 | @pill-padding-small: 2px 2px 1px 2px; |
|
652 | 652 | |
|
653 | 653 | input.filediff-collapse-state { |
|
654 | 654 | display: none; |
|
655 | 655 | |
|
656 | 656 | &:checked + .filediff { /* file diff is collapsed */ |
|
657 | 657 | .cb { |
|
658 | 658 | display: none |
|
659 | 659 | } |
|
660 | 660 | .filediff-collapse-indicator { |
|
661 | 661 | width: 0; |
|
662 | 662 | height: 0; |
|
663 | 663 | border-style: solid; |
|
664 | 664 | border-width: 4.5px 0 4.5px 9.3px; |
|
665 | 665 | border-color: transparent transparent transparent #aaa; |
|
666 | 666 | margin: 6px 0px; |
|
667 | 667 | } |
|
668 | 668 | .filediff-menu { |
|
669 | 669 | display: none; |
|
670 | 670 | } |
|
671 | margin: 10px 0 0 0; | |
|
671 | ||
|
672 | 672 | } |
|
673 | 673 | |
|
674 | 674 | &+ .filediff { /* file diff is expanded */ |
|
675 | 675 | .filediff-collapse-indicator { |
|
676 | 676 | width: 0; |
|
677 | 677 | height: 0; |
|
678 | 678 | border-style: solid; |
|
679 | 679 | border-width: 9.3px 4.5px 0 4.5px; |
|
680 | 680 | border-color: #aaa transparent transparent transparent; |
|
681 | 681 | margin: 6px 0px; |
|
682 | 682 | |
|
683 | 683 | } |
|
684 | 684 | .filediff-menu { |
|
685 | 685 | display: block; |
|
686 | 686 | } |
|
687 | 687 | margin: 10px 0; |
|
688 | 688 | &:nth-child(2) { |
|
689 | 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 | 708 | .cs_files { |
|
694 | 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 | 746 | .diffset-menu { |
|
698 | 747 | margin-bottom: 20px; |
|
699 | 748 | } |
|
700 | 749 | .diffset { |
|
701 | 750 | margin: 20px auto; |
|
702 | 751 | .diffset-heading { |
|
703 | 752 | border: 1px solid @grey5; |
|
704 | 753 | margin-bottom: -1px; |
|
705 | 754 | // margin-top: 20px; |
|
706 | 755 | h2 { |
|
707 | 756 | margin: 0; |
|
708 | 757 | line-height: 38px; |
|
709 | 758 | padding-left: 10px; |
|
710 | 759 | } |
|
711 | 760 | .btn { |
|
712 | 761 | margin: 0; |
|
713 | 762 | } |
|
714 | 763 | background: @grey6; |
|
715 | 764 | display: block; |
|
716 | 765 | padding: 5px; |
|
717 | 766 | } |
|
718 | 767 | .diffset-heading-warning { |
|
719 | 768 | background: @alert3-inner; |
|
720 | 769 | border: 1px solid @alert3; |
|
721 | 770 | } |
|
722 | 771 | &.diffset-comments-disabled { |
|
723 | 772 | .cb-comment-box-opener, .comment-inline-form, .cb-comment-add-button { |
|
724 | 773 | display: none !important; |
|
725 | 774 | } |
|
726 | 775 | } |
|
727 | 776 | } |
|
728 | 777 | |
|
729 | 778 | .filelist { |
|
730 | 779 | .pill { |
|
731 | 780 | display: block; |
|
732 | 781 | float: left; |
|
733 | 782 | padding: @pill-padding-small; |
|
734 | 783 | } |
|
735 | 784 | } |
|
736 | 785 | |
|
737 | 786 | .pill { |
|
738 | 787 | display: block; |
|
739 | 788 | float: left; |
|
740 | 789 | padding: @pill-padding; |
|
741 | 790 | } |
|
742 | 791 | |
|
743 | 792 | .pill-group { |
|
744 | 793 | .pill { |
|
745 | 794 | opacity: .8; |
|
746 | 795 | margin-right: 3px; |
|
747 | 796 | |
|
748 | 797 | &:first-child { |
|
749 | 798 | border-radius: @border-radius 0 0 @border-radius; |
|
750 | 799 | } |
|
751 | 800 | &:last-child { |
|
752 | 801 | border-radius: 0 @border-radius @border-radius 0; |
|
753 | 802 | } |
|
754 | 803 | &:only-child { |
|
755 | 804 | border-radius: @border-radius; |
|
756 | 805 | margin-right: 0; |
|
757 | 806 | } |
|
758 | 807 | } |
|
759 | 808 | } |
|
760 | 809 | |
|
761 | 810 | /* Main comments*/ |
|
762 | 811 | #comments { |
|
763 | 812 | .comment-selected { |
|
764 | 813 | border-left: 6px solid @comment-highlight-color; |
|
765 | 814 | padding-left: 3px; |
|
766 | 815 | margin-left: -9px; |
|
767 | 816 | } |
|
768 | 817 | } |
|
769 | 818 | |
|
770 | 819 | .filediff { |
|
771 | 820 | border: 1px solid @grey5; |
|
772 | 821 | |
|
773 | 822 | /* START OVERRIDES */ |
|
774 | 823 | .code-highlight { |
|
775 | 824 | border: none; // TODO: remove this border from the global |
|
776 | 825 |
|
|
777 | 826 | } |
|
778 | 827 | label { |
|
779 | 828 | margin: 0; // TODO: remove this margin definition from global label |
|
780 | 829 | // it doesn't belong there - if margin on labels |
|
781 | 830 | // are needed for a form they should be defined |
|
782 | 831 | // in the form's class |
|
783 | 832 | } |
|
784 | 833 | /* END OVERRIDES */ |
|
785 | 834 | |
|
786 | 835 | * { |
|
787 | 836 | box-sizing: border-box; |
|
788 | 837 | } |
|
789 | 838 | .filediff-anchor { |
|
790 | 839 | visibility: hidden; |
|
791 | 840 | } |
|
792 | 841 | &:hover { |
|
793 | 842 | .filediff-anchor { |
|
794 | 843 | visibility: visible; |
|
795 | 844 | } |
|
796 | 845 | } |
|
797 | 846 | |
|
798 | 847 | .filediff-collapse-indicator { |
|
799 | 848 | border-style: solid; |
|
800 | 849 | float: left; |
|
801 | 850 | margin: 4px 0px 0 0; |
|
802 | 851 | cursor: pointer; |
|
803 | 852 | } |
|
804 | 853 | |
|
805 | 854 | .filediff-heading { |
|
806 | 855 | background: @grey7; |
|
807 | 856 | cursor: pointer; |
|
808 | 857 | display: block; |
|
809 | 858 | padding: 5px 10px; |
|
810 | 859 | } |
|
811 | 860 | .filediff-heading:after { |
|
812 | 861 | content: ""; |
|
813 | 862 | display: table; |
|
814 | 863 | clear: both; |
|
815 | 864 | } |
|
816 | 865 | .filediff-heading:hover { |
|
817 | 866 | background: #e1e9f4 !important; |
|
818 | 867 | } |
|
819 | 868 | |
|
820 | 869 | .filediff-menu { |
|
821 | 870 | float: right; |
|
822 | 871 | text-align: right; |
|
823 | 872 | padding: 5px 5px 5px 0px; |
|
824 | 873 | |
|
825 | 874 | &> a, |
|
826 | 875 | &> span { |
|
827 | 876 | padding: 1px; |
|
828 | 877 | } |
|
829 | 878 | } |
|
830 | 879 | |
|
831 | 880 | .filediff-collapse-button, .filediff-expand-button { |
|
832 | 881 | cursor: pointer; |
|
833 | 882 | } |
|
834 | 883 | .filediff-collapse-button { |
|
835 | 884 | display: inline; |
|
836 | 885 | } |
|
837 | 886 | .filediff-expand-button { |
|
838 | 887 | display: none; |
|
839 | 888 | } |
|
840 | 889 | .filediff-collapsed .filediff-collapse-button { |
|
841 | 890 | display: none; |
|
842 | 891 | } |
|
843 | 892 | .filediff-collapsed .filediff-expand-button { |
|
844 | 893 | display: inline; |
|
845 | 894 | } |
|
846 | 895 | |
|
847 | 896 | /**** COMMENTS ****/ |
|
848 | 897 | |
|
849 | 898 | .filediff-menu { |
|
850 | 899 | .show-comment-button { |
|
851 | 900 | display: none; |
|
852 | 901 | } |
|
853 | 902 | } |
|
854 | 903 | &.hide-comments { |
|
855 | 904 | .inline-comments { |
|
856 | 905 | display: none; |
|
857 | 906 | } |
|
858 | 907 | .filediff-menu { |
|
859 | 908 | .show-comment-button { |
|
860 | 909 | display: inline; |
|
861 | 910 | } |
|
862 | 911 | .hide-comment-button { |
|
863 | 912 | display: none; |
|
864 | 913 | } |
|
865 | 914 | } |
|
866 | 915 | } |
|
867 | 916 | |
|
868 | 917 | .hide-line-comments { |
|
869 | 918 | .inline-comments { |
|
870 | 919 | display: none; |
|
871 | 920 | } |
|
872 | 921 | } |
|
873 | 922 | |
|
874 | 923 | /**** END COMMENTS ****/ |
|
875 | 924 | |
|
876 | 925 | } |
|
877 | 926 | |
|
878 | 927 | |
|
879 | 928 | |
|
880 | 929 | .filediff, .filelist { |
|
881 | 930 | .pill { |
|
882 | 931 | &[op="name"] { |
|
883 | 932 | background: none; |
|
884 | 933 | opacity: 1; |
|
885 | 934 | color: white; |
|
886 | 935 | } |
|
887 | 936 | &[op="limited"] { |
|
888 | 937 | background: @grey2; |
|
889 | 938 | color: white; |
|
890 | 939 | } |
|
891 | 940 | &[op="binary"] { |
|
892 | 941 | background: @color7; |
|
893 | 942 | color: white; |
|
894 | 943 | } |
|
895 | 944 | &[op="modified"] { |
|
896 | 945 | background: @alert1; |
|
897 | 946 | color: white; |
|
898 | 947 | } |
|
899 | 948 | &[op="renamed"] { |
|
900 | 949 | background: @color4; |
|
901 | 950 | color: white; |
|
902 | 951 | } |
|
903 | 952 | &[op="copied"] { |
|
904 | 953 | background: @color4; |
|
905 | 954 | color: white; |
|
906 | 955 | } |
|
907 | 956 | &[op="mode"] { |
|
908 | 957 | background: @grey3; |
|
909 | 958 | color: white; |
|
910 | 959 | } |
|
911 | 960 | &[op="symlink"] { |
|
912 | 961 | background: @color8; |
|
913 | 962 | color: white; |
|
914 | 963 | } |
|
915 | 964 | |
|
916 | 965 | &[op="added"] { /* added lines */ |
|
917 | 966 | background: @alert1; |
|
918 | 967 | color: white; |
|
919 | 968 | } |
|
920 | 969 | &[op="deleted"] { /* deleted lines */ |
|
921 | 970 | background: @alert2; |
|
922 | 971 | color: white; |
|
923 | 972 | } |
|
924 | 973 | |
|
925 | 974 | &[op="created"] { /* created file */ |
|
926 | 975 | background: @alert1; |
|
927 | 976 | color: white; |
|
928 | 977 | } |
|
929 | 978 | &[op="removed"] { /* deleted file */ |
|
930 | 979 | background: @color5; |
|
931 | 980 | color: white; |
|
932 | 981 | } |
|
933 | 982 | } |
|
934 | 983 | } |
|
935 | 984 | |
|
936 | 985 | |
|
937 | 986 | .filediff-outdated { |
|
938 | 987 | padding: 8px 0; |
|
939 | 988 | |
|
940 | 989 | .filediff-heading { |
|
941 | 990 | opacity: .5; |
|
942 | 991 | } |
|
943 | 992 | } |
|
944 | 993 | |
|
945 | 994 | table.cb { |
|
946 | 995 | width: 100%; |
|
947 | 996 | border-collapse: collapse; |
|
948 | 997 | |
|
949 | 998 | .cb-text { |
|
950 | 999 | padding: @cb-text-padding; |
|
951 | 1000 | } |
|
952 | 1001 | .cb-hunk { |
|
953 | 1002 | padding: @cb-text-padding; |
|
954 | 1003 | } |
|
955 | 1004 | .cb-expand { |
|
956 | 1005 | display: none; |
|
957 | 1006 | } |
|
958 | 1007 | .cb-collapse { |
|
959 | 1008 | display: inline; |
|
960 | 1009 | } |
|
961 | 1010 | &.cb-collapsed { |
|
962 | 1011 | .cb-line { |
|
963 | 1012 | display: none; |
|
964 | 1013 | } |
|
965 | 1014 | .cb-expand { |
|
966 | 1015 | display: inline; |
|
967 | 1016 | } |
|
968 | 1017 | .cb-collapse { |
|
969 | 1018 | display: none; |
|
970 | 1019 | } |
|
971 | 1020 | } |
|
972 | 1021 | |
|
973 | 1022 | /* intentionally general selector since .cb-line-selected must override it |
|
974 | 1023 | and they both use !important since the td itself may have a random color |
|
975 | 1024 | generated by annotation blocks. TLDR: if you change it, make sure |
|
976 | 1025 | annotated block selection and line selection in file view still work */ |
|
977 | 1026 | .cb-line-fresh .cb-content { |
|
978 | 1027 | background: white !important; |
|
979 | 1028 | } |
|
980 | 1029 | .cb-warning { |
|
981 | 1030 | background: #fff4dd; |
|
982 | 1031 | } |
|
983 | 1032 | |
|
984 | 1033 | &.cb-diff-sideside { |
|
985 | 1034 | td { |
|
986 | 1035 | &.cb-content { |
|
987 | 1036 | width: 50%; |
|
988 | 1037 | } |
|
989 | 1038 | } |
|
990 | 1039 | } |
|
991 | 1040 | |
|
992 | 1041 | tr { |
|
993 | 1042 | &.cb-annotate { |
|
994 | 1043 | border-top: 1px solid #eee; |
|
995 | 1044 | } |
|
996 | 1045 | |
|
997 | 1046 | &.cb-comment-info { |
|
998 | 1047 | border-top: 1px solid #eee; |
|
999 | 1048 | color: rgba(0, 0, 0, 0.3); |
|
1000 | 1049 | background: #edf2f9; |
|
1001 | 1050 | |
|
1002 | 1051 | td { |
|
1003 | 1052 | |
|
1004 | 1053 | } |
|
1005 | 1054 | } |
|
1006 | 1055 | |
|
1007 | 1056 | &.cb-hunk { |
|
1008 | 1057 | font-family: @font-family-monospace; |
|
1009 | 1058 | color: rgba(0, 0, 0, 0.3); |
|
1010 | 1059 | |
|
1011 | 1060 | td { |
|
1012 | 1061 | &:first-child { |
|
1013 | 1062 | background: #edf2f9; |
|
1014 | 1063 | } |
|
1015 | 1064 | &:last-child { |
|
1016 | 1065 | background: #f4f7fb; |
|
1017 | 1066 | } |
|
1018 | 1067 | } |
|
1019 | 1068 | } |
|
1020 | 1069 | } |
|
1021 | 1070 | |
|
1022 | 1071 | |
|
1023 | 1072 | td { |
|
1024 | 1073 | vertical-align: top; |
|
1025 | 1074 | padding: 0; |
|
1026 | 1075 | |
|
1027 | 1076 | &.cb-content { |
|
1028 | 1077 | font-size: 12.35px; |
|
1029 | 1078 | |
|
1030 | 1079 | &.cb-line-selected .cb-code { |
|
1031 | 1080 | background: @comment-highlight-color !important; |
|
1032 | 1081 | } |
|
1033 | 1082 | |
|
1034 | 1083 | span.cb-code { |
|
1035 | 1084 | line-height: @cb-line-height; |
|
1036 | 1085 | padding-left: @cb-line-code-padding; |
|
1037 | 1086 | padding-right: @cb-line-code-padding; |
|
1038 | 1087 | display: block; |
|
1039 | 1088 | white-space: pre-wrap; |
|
1040 | 1089 | font-family: @font-family-monospace; |
|
1041 | 1090 | word-break: break-all; |
|
1042 | 1091 | .nonl { |
|
1043 | 1092 | color: @color5; |
|
1044 | 1093 | } |
|
1045 | 1094 | } |
|
1046 | 1095 | |
|
1047 | 1096 | &> button.cb-comment-box-opener { |
|
1048 | 1097 | |
|
1049 | 1098 | padding: 2px 2px 1px 3px; |
|
1050 | 1099 | margin-left: -6px; |
|
1051 | 1100 | margin-top: -1px; |
|
1052 | 1101 | |
|
1053 | 1102 | border-radius: @border-radius; |
|
1054 | 1103 | position: absolute; |
|
1055 | 1104 | display: none; |
|
1056 | 1105 | } |
|
1057 | 1106 | .cb-comment { |
|
1058 | 1107 | margin-top: 10px; |
|
1059 | 1108 | white-space: normal; |
|
1060 | 1109 | } |
|
1061 | 1110 | } |
|
1062 | 1111 | &:hover { |
|
1063 | 1112 | button.cb-comment-box-opener { |
|
1064 | 1113 | display: block; |
|
1065 | 1114 | } |
|
1066 | 1115 | &+ td button.cb-comment-box-opener { |
|
1067 | 1116 | display: block |
|
1068 | 1117 | } |
|
1069 | 1118 | } |
|
1070 | 1119 | |
|
1071 | 1120 | &.cb-data { |
|
1072 | 1121 | text-align: right; |
|
1073 | 1122 | width: 30px; |
|
1074 | 1123 | font-family: @font-family-monospace; |
|
1075 | 1124 | |
|
1076 | 1125 | .icon-comment { |
|
1077 | 1126 | cursor: pointer; |
|
1078 | 1127 | } |
|
1079 | 1128 | &.cb-line-selected > div { |
|
1080 | 1129 | display: block; |
|
1081 | 1130 | background: @comment-highlight-color !important; |
|
1082 | 1131 | line-height: @cb-line-height; |
|
1083 | 1132 | color: rgba(0, 0, 0, 0.3); |
|
1084 | 1133 | } |
|
1085 | 1134 | } |
|
1086 | 1135 | |
|
1087 | 1136 | &.cb-lineno { |
|
1088 | 1137 | padding: 0; |
|
1089 | 1138 | width: 50px; |
|
1090 | 1139 | color: rgba(0, 0, 0, 0.3); |
|
1091 | 1140 | text-align: right; |
|
1092 | 1141 | border-right: 1px solid #eee; |
|
1093 | 1142 | font-family: @font-family-monospace; |
|
1094 | 1143 | -webkit-user-select: none; |
|
1095 | 1144 | -moz-user-select: none; |
|
1096 | 1145 | user-select: none; |
|
1097 | 1146 | |
|
1098 | 1147 | a::before { |
|
1099 | 1148 | content: attr(data-line-no); |
|
1100 | 1149 | } |
|
1101 | 1150 | &.cb-line-selected a { |
|
1102 | 1151 | background: @comment-highlight-color !important; |
|
1103 | 1152 | } |
|
1104 | 1153 | |
|
1105 | 1154 | a { |
|
1106 | 1155 | display: block; |
|
1107 | 1156 | padding-right: @cb-line-code-padding; |
|
1108 | 1157 | padding-left: @cb-line-code-padding; |
|
1109 | 1158 | line-height: @cb-line-height; |
|
1110 | 1159 | color: rgba(0, 0, 0, 0.3); |
|
1111 | 1160 | } |
|
1112 | 1161 | } |
|
1113 | 1162 | |
|
1114 | 1163 | &.cb-empty { |
|
1115 | 1164 | background: @grey7; |
|
1116 | 1165 | } |
|
1117 | 1166 | |
|
1118 | 1167 | ins { |
|
1119 | 1168 | color: black; |
|
1120 | 1169 | background: #a6f3a6; |
|
1121 | 1170 | text-decoration: none; |
|
1122 | 1171 | } |
|
1123 | 1172 | del { |
|
1124 | 1173 | color: black; |
|
1125 | 1174 | background: #f8cbcb; |
|
1126 | 1175 | text-decoration: none; |
|
1127 | 1176 | } |
|
1128 | 1177 | &.cb-addition { |
|
1129 | 1178 | background: #ecffec; |
|
1130 | 1179 | |
|
1131 | 1180 | &.blob-lineno { |
|
1132 | 1181 | background: #ddffdd; |
|
1133 | 1182 | } |
|
1134 | 1183 | } |
|
1135 | 1184 | &.cb-deletion { |
|
1136 | 1185 | background: #ffecec; |
|
1137 | 1186 | |
|
1138 | 1187 | &.blob-lineno { |
|
1139 | 1188 | background: #ffdddd; |
|
1140 | 1189 | } |
|
1141 | 1190 | } |
|
1142 | 1191 | &.cb-annotate-message-spacer { |
|
1143 | 1192 | width:8px; |
|
1144 | 1193 | padding: 1px 0px 0px 3px; |
|
1145 | 1194 | } |
|
1146 | 1195 | &.cb-annotate-info { |
|
1147 | 1196 | width: 320px; |
|
1148 | 1197 | min-width: 320px; |
|
1149 | 1198 | max-width: 320px; |
|
1150 | 1199 | padding: 5px 2px; |
|
1151 | 1200 | font-size: 13px; |
|
1152 | 1201 | |
|
1153 | 1202 | .cb-annotate-message { |
|
1154 | 1203 | padding: 2px 0px 0px 0px; |
|
1155 | 1204 | white-space: pre-line; |
|
1156 | 1205 | overflow: hidden; |
|
1157 | 1206 | } |
|
1158 | 1207 | .rc-user { |
|
1159 | 1208 | float: none; |
|
1160 | 1209 | padding: 0 6px 0 17px; |
|
1161 | 1210 | min-width: unset; |
|
1162 | 1211 | min-height: unset; |
|
1163 | 1212 | } |
|
1164 | 1213 | } |
|
1165 | 1214 | |
|
1166 | 1215 | &.cb-annotate-revision { |
|
1167 | 1216 | cursor: pointer; |
|
1168 | 1217 | text-align: right; |
|
1169 | 1218 | padding: 1px 3px 0px 3px; |
|
1170 | 1219 | } |
|
1171 | 1220 | } |
|
1172 | 1221 | } |
@@ -1,829 +1,836 b'' | |||
|
1 | 1 | // # Copyright (C) 2010-2018 RhodeCode GmbH |
|
2 | 2 | // # |
|
3 | 3 | // # This program is free software: you can redistribute it and/or modify |
|
4 | 4 | // # it under the terms of the GNU Affero General Public License, version 3 |
|
5 | 5 | // # (only), as published by the Free Software Foundation. |
|
6 | 6 | // # |
|
7 | 7 | // # This program is distributed in the hope that it will be useful, |
|
8 | 8 | // # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
9 | 9 | // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
10 | 10 | // # GNU General Public License for more details. |
|
11 | 11 | // # |
|
12 | 12 | // # You should have received a copy of the GNU Affero General Public License |
|
13 | 13 | // # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
14 | 14 | // # |
|
15 | 15 | // # This program is dual-licensed. If you wish to learn more about the |
|
16 | 16 | // # RhodeCode Enterprise Edition, including its added features, Support services, |
|
17 | 17 | // # and proprietary license terms, please see https://rhodecode.com/licenses/ |
|
18 | 18 | |
|
19 | 19 | var firefoxAnchorFix = function() { |
|
20 | 20 | // hack to make anchor links behave properly on firefox, in our inline |
|
21 | 21 | // comments generation when comments are injected firefox is misbehaving |
|
22 | 22 | // when jumping to anchor links |
|
23 | 23 | if (location.href.indexOf('#') > -1) { |
|
24 | 24 | location.href += ''; |
|
25 | 25 | } |
|
26 | 26 | }; |
|
27 | 27 | |
|
28 | 28 | var linkifyComments = function(comments) { |
|
29 | 29 | var firstCommentId = null; |
|
30 | 30 | if (comments) { |
|
31 | 31 | firstCommentId = $(comments[0]).data('comment-id'); |
|
32 | 32 | } |
|
33 | 33 | |
|
34 | 34 | if (firstCommentId){ |
|
35 | 35 | $('#inline-comments-counter').attr('href', '#comment-' + firstCommentId); |
|
36 | 36 | } |
|
37 | 37 | }; |
|
38 | 38 | |
|
39 | 39 | var bindToggleButtons = function() { |
|
40 | 40 | $('.comment-toggle').on('click', function() { |
|
41 | 41 | $(this).parent().nextUntil('tr.line').toggle('inline-comments'); |
|
42 | 42 | }); |
|
43 | 43 | }; |
|
44 | 44 | |
|
45 | 45 | |
|
46 | 46 | |
|
47 | 47 | var _submitAjaxPOST = function(url, postData, successHandler, failHandler) { |
|
48 | 48 | failHandler = failHandler || function() {}; |
|
49 | 49 | postData = toQueryString(postData); |
|
50 | 50 | var request = $.ajax({ |
|
51 | 51 | url: url, |
|
52 | 52 | type: 'POST', |
|
53 | 53 | data: postData, |
|
54 | 54 | headers: {'X-PARTIAL-XHR': true} |
|
55 | 55 | }) |
|
56 | 56 | .done(function (data) { |
|
57 | 57 | successHandler(data); |
|
58 | 58 | }) |
|
59 | 59 | .fail(function (data, textStatus, errorThrown) { |
|
60 | 60 | failHandler(data, textStatus, errorThrown) |
|
61 | 61 | }); |
|
62 | 62 | return request; |
|
63 | 63 | }; |
|
64 | 64 | |
|
65 | 65 | |
|
66 | 66 | |
|
67 | 67 | |
|
68 | 68 | /* Comment form for main and inline comments */ |
|
69 | 69 | (function(mod) { |
|
70 | 70 | |
|
71 | 71 | if (typeof exports == "object" && typeof module == "object") { |
|
72 | 72 | // CommonJS |
|
73 | 73 | module.exports = mod(); |
|
74 | 74 | } |
|
75 | 75 | else { |
|
76 | 76 | // Plain browser env |
|
77 | 77 | (this || window).CommentForm = mod(); |
|
78 | 78 | } |
|
79 | 79 | |
|
80 | 80 | })(function() { |
|
81 | 81 | "use strict"; |
|
82 | 82 | |
|
83 | 83 | function CommentForm(formElement, commitId, pullRequestId, lineNo, initAutocompleteActions, resolvesCommentId) { |
|
84 | 84 | if (!(this instanceof CommentForm)) { |
|
85 | 85 | return new CommentForm(formElement, commitId, pullRequestId, lineNo, initAutocompleteActions, resolvesCommentId); |
|
86 | 86 | } |
|
87 | 87 | |
|
88 | 88 | // bind the element instance to our Form |
|
89 | 89 | $(formElement).get(0).CommentForm = this; |
|
90 | 90 | |
|
91 | 91 | this.withLineNo = function(selector) { |
|
92 | 92 | var lineNo = this.lineNo; |
|
93 | 93 | if (lineNo === undefined) { |
|
94 | 94 | return selector |
|
95 | 95 | } else { |
|
96 | 96 | return selector + '_' + lineNo; |
|
97 | 97 | } |
|
98 | 98 | }; |
|
99 | 99 | |
|
100 | 100 | this.commitId = commitId; |
|
101 | 101 | this.pullRequestId = pullRequestId; |
|
102 | 102 | this.lineNo = lineNo; |
|
103 | 103 | this.initAutocompleteActions = initAutocompleteActions; |
|
104 | 104 | |
|
105 | 105 | this.previewButton = this.withLineNo('#preview-btn'); |
|
106 | 106 | this.previewContainer = this.withLineNo('#preview-container'); |
|
107 | 107 | |
|
108 | 108 | this.previewBoxSelector = this.withLineNo('#preview-box'); |
|
109 | 109 | |
|
110 | 110 | this.editButton = this.withLineNo('#edit-btn'); |
|
111 | 111 | this.editContainer = this.withLineNo('#edit-container'); |
|
112 | 112 | this.cancelButton = this.withLineNo('#cancel-btn'); |
|
113 | 113 | this.commentType = this.withLineNo('#comment_type'); |
|
114 | 114 | |
|
115 | 115 | this.resolvesId = null; |
|
116 | 116 | this.resolvesActionId = null; |
|
117 | 117 | |
|
118 | 118 | this.closesPr = '#close_pull_request'; |
|
119 | 119 | |
|
120 | 120 | this.cmBox = this.withLineNo('#text'); |
|
121 | 121 | this.cm = initCommentBoxCodeMirror(this, this.cmBox, this.initAutocompleteActions); |
|
122 | 122 | |
|
123 | 123 | this.statusChange = this.withLineNo('#change_status'); |
|
124 | 124 | |
|
125 | 125 | this.submitForm = formElement; |
|
126 | 126 | this.submitButton = $(this.submitForm).find('input[type="submit"]'); |
|
127 | 127 | this.submitButtonText = this.submitButton.val(); |
|
128 | 128 | |
|
129 | 129 | this.previewUrl = pyroutes.url('repo_commit_comment_preview', |
|
130 | 130 | {'repo_name': templateContext.repo_name, |
|
131 | 131 | 'commit_id': templateContext.commit_data.commit_id}); |
|
132 | 132 | |
|
133 | 133 | if (resolvesCommentId){ |
|
134 | 134 | this.resolvesId = '#resolve_comment_{0}'.format(resolvesCommentId); |
|
135 | 135 | this.resolvesActionId = '#resolve_comment_action_{0}'.format(resolvesCommentId); |
|
136 | 136 | $(this.commentType).prop('disabled', true); |
|
137 | 137 | $(this.commentType).addClass('disabled'); |
|
138 | 138 | |
|
139 | 139 | // disable select |
|
140 | 140 | setTimeout(function() { |
|
141 | 141 | $(self.statusChange).select2('readonly', true); |
|
142 | 142 | }, 10); |
|
143 | 143 | |
|
144 | 144 | var resolvedInfo = ( |
|
145 | 145 | '<li class="resolve-action">' + |
|
146 | 146 | '<input type="hidden" id="resolve_comment_{0}" name="resolve_comment_{0}" value="{0}">' + |
|
147 | 147 | '<button id="resolve_comment_action_{0}" class="resolve-text btn btn-sm" onclick="return Rhodecode.comments.submitResolution({0})">{1} #{0}</button>' + |
|
148 | 148 | '</li>' |
|
149 | 149 | ).format(resolvesCommentId, _gettext('resolve comment')); |
|
150 | 150 | $(resolvedInfo).insertAfter($(this.commentType).parent()); |
|
151 | 151 | } |
|
152 | 152 | |
|
153 | 153 | // based on commitId, or pullRequestId decide where do we submit |
|
154 | 154 | // out data |
|
155 | 155 | if (this.commitId){ |
|
156 | 156 | this.submitUrl = pyroutes.url('repo_commit_comment_create', |
|
157 | 157 | {'repo_name': templateContext.repo_name, |
|
158 | 158 | 'commit_id': this.commitId}); |
|
159 | 159 | this.selfUrl = pyroutes.url('repo_commit', |
|
160 | 160 | {'repo_name': templateContext.repo_name, |
|
161 | 161 | 'commit_id': this.commitId}); |
|
162 | 162 | |
|
163 | 163 | } else if (this.pullRequestId) { |
|
164 | 164 | this.submitUrl = pyroutes.url('pullrequest_comment_create', |
|
165 | 165 | {'repo_name': templateContext.repo_name, |
|
166 | 166 | 'pull_request_id': this.pullRequestId}); |
|
167 | 167 | this.selfUrl = pyroutes.url('pullrequest_show', |
|
168 | 168 | {'repo_name': templateContext.repo_name, |
|
169 | 169 | 'pull_request_id': this.pullRequestId}); |
|
170 | 170 | |
|
171 | 171 | } else { |
|
172 | 172 | throw new Error( |
|
173 | 173 | 'CommentForm requires pullRequestId, or commitId to be specified.') |
|
174 | 174 | } |
|
175 | 175 | |
|
176 | 176 | // FUNCTIONS and helpers |
|
177 | 177 | var self = this; |
|
178 | 178 | |
|
179 | 179 | this.isInline = function(){ |
|
180 | 180 | return this.lineNo && this.lineNo != 'general'; |
|
181 | 181 | }; |
|
182 | 182 | |
|
183 | 183 | this.getCmInstance = function(){ |
|
184 | 184 | return this.cm |
|
185 | 185 | }; |
|
186 | 186 | |
|
187 | 187 | this.setPlaceholder = function(placeholder) { |
|
188 | 188 | var cm = this.getCmInstance(); |
|
189 | 189 | if (cm){ |
|
190 | 190 | cm.setOption('placeholder', placeholder); |
|
191 | 191 | } |
|
192 | 192 | }; |
|
193 | 193 | |
|
194 | 194 | this.getCommentStatus = function() { |
|
195 | 195 | return $(this.submitForm).find(this.statusChange).val(); |
|
196 | 196 | }; |
|
197 | 197 | this.getCommentType = function() { |
|
198 | 198 | return $(this.submitForm).find(this.commentType).val(); |
|
199 | 199 | }; |
|
200 | 200 | |
|
201 | 201 | this.getResolvesId = function() { |
|
202 | 202 | return $(this.submitForm).find(this.resolvesId).val() || null; |
|
203 | 203 | }; |
|
204 | 204 | |
|
205 | 205 | this.getClosePr = function() { |
|
206 | 206 | return $(this.submitForm).find(this.closesPr).val() || null; |
|
207 | 207 | }; |
|
208 | 208 | |
|
209 | 209 | this.markCommentResolved = function(resolvedCommentId){ |
|
210 | 210 | $('#comment-label-{0}'.format(resolvedCommentId)).find('.resolved').show(); |
|
211 | 211 | $('#comment-label-{0}'.format(resolvedCommentId)).find('.resolve').hide(); |
|
212 | 212 | }; |
|
213 | 213 | |
|
214 | 214 | this.isAllowedToSubmit = function() { |
|
215 | 215 | return !$(this.submitButton).prop('disabled'); |
|
216 | 216 | }; |
|
217 | 217 | |
|
218 | 218 | this.initStatusChangeSelector = function(){ |
|
219 | 219 | var formatChangeStatus = function(state, escapeMarkup) { |
|
220 | 220 | var originalOption = state.element; |
|
221 | 221 | return '<div class="flag_status ' + $(originalOption).data('status') + ' pull-left"></div>' + |
|
222 | 222 | '<span>' + escapeMarkup(state.text) + '</span>'; |
|
223 | 223 | }; |
|
224 | 224 | var formatResult = function(result, container, query, escapeMarkup) { |
|
225 | 225 | return formatChangeStatus(result, escapeMarkup); |
|
226 | 226 | }; |
|
227 | 227 | |
|
228 | 228 | var formatSelection = function(data, container, escapeMarkup) { |
|
229 | 229 | return formatChangeStatus(data, escapeMarkup); |
|
230 | 230 | }; |
|
231 | 231 | |
|
232 | 232 | $(this.submitForm).find(this.statusChange).select2({ |
|
233 | 233 | placeholder: _gettext('Status Review'), |
|
234 | 234 | formatResult: formatResult, |
|
235 | 235 | formatSelection: formatSelection, |
|
236 | 236 | containerCssClass: "drop-menu status_box_menu", |
|
237 | 237 | dropdownCssClass: "drop-menu-dropdown", |
|
238 | 238 | dropdownAutoWidth: true, |
|
239 | 239 | minimumResultsForSearch: -1 |
|
240 | 240 | }); |
|
241 | 241 | $(this.submitForm).find(this.statusChange).on('change', function() { |
|
242 | 242 | var status = self.getCommentStatus(); |
|
243 | 243 | |
|
244 | 244 | if (status && !self.isInline()) { |
|
245 | 245 | $(self.submitButton).prop('disabled', false); |
|
246 | 246 | } |
|
247 | 247 | |
|
248 | 248 | var placeholderText = _gettext('Comment text will be set automatically based on currently selected status ({0}) ...').format(status); |
|
249 | 249 | self.setPlaceholder(placeholderText) |
|
250 | 250 | }) |
|
251 | 251 | }; |
|
252 | 252 | |
|
253 | 253 | // reset the comment form into it's original state |
|
254 | 254 | this.resetCommentFormState = function(content) { |
|
255 | 255 | content = content || ''; |
|
256 | 256 | |
|
257 | 257 | $(this.editContainer).show(); |
|
258 | 258 | $(this.editButton).parent().addClass('active'); |
|
259 | 259 | |
|
260 | 260 | $(this.previewContainer).hide(); |
|
261 | 261 | $(this.previewButton).parent().removeClass('active'); |
|
262 | 262 | |
|
263 | 263 | this.setActionButtonsDisabled(true); |
|
264 | 264 | self.cm.setValue(content); |
|
265 | 265 | self.cm.setOption("readOnly", false); |
|
266 | 266 | |
|
267 | 267 | if (this.resolvesId) { |
|
268 | 268 | // destroy the resolve action |
|
269 | 269 | $(this.resolvesId).parent().remove(); |
|
270 | 270 | } |
|
271 | 271 | // reset closingPR flag |
|
272 | 272 | $('.close-pr-input').remove(); |
|
273 | 273 | |
|
274 | 274 | $(this.statusChange).select2('readonly', false); |
|
275 | 275 | }; |
|
276 | 276 | |
|
277 | 277 | this.globalSubmitSuccessCallback = function(){ |
|
278 | 278 | // default behaviour is to call GLOBAL hook, if it's registered. |
|
279 | 279 | if (window.commentFormGlobalSubmitSuccessCallback !== undefined){ |
|
280 | 280 | commentFormGlobalSubmitSuccessCallback() |
|
281 | 281 | } |
|
282 | 282 | }; |
|
283 | 283 | |
|
284 | 284 | this.submitAjaxPOST = function(url, postData, successHandler, failHandler) { |
|
285 | 285 | return _submitAjaxPOST(url, postData, successHandler, failHandler); |
|
286 | 286 | }; |
|
287 | 287 | |
|
288 | 288 | // overwrite a submitHandler, we need to do it for inline comments |
|
289 | 289 | this.setHandleFormSubmit = function(callback) { |
|
290 | 290 | this.handleFormSubmit = callback; |
|
291 | 291 | }; |
|
292 | 292 | |
|
293 | 293 | // overwrite a submitSuccessHandler |
|
294 | 294 | this.setGlobalSubmitSuccessCallback = function(callback) { |
|
295 | 295 | this.globalSubmitSuccessCallback = callback; |
|
296 | 296 | }; |
|
297 | 297 | |
|
298 | 298 | // default handler for for submit for main comments |
|
299 | 299 | this.handleFormSubmit = function() { |
|
300 | 300 | var text = self.cm.getValue(); |
|
301 | 301 | var status = self.getCommentStatus(); |
|
302 | 302 | var commentType = self.getCommentType(); |
|
303 | 303 | var resolvesCommentId = self.getResolvesId(); |
|
304 | 304 | var closePullRequest = self.getClosePr(); |
|
305 | 305 | |
|
306 | 306 | if (text === "" && !status) { |
|
307 | 307 | return; |
|
308 | 308 | } |
|
309 | 309 | |
|
310 | 310 | var excludeCancelBtn = false; |
|
311 | 311 | var submitEvent = true; |
|
312 | 312 | self.setActionButtonsDisabled(true, excludeCancelBtn, submitEvent); |
|
313 | 313 | self.cm.setOption("readOnly", true); |
|
314 | 314 | |
|
315 | 315 | var postData = { |
|
316 | 316 | 'text': text, |
|
317 | 317 | 'changeset_status': status, |
|
318 | 318 | 'comment_type': commentType, |
|
319 | 319 | 'csrf_token': CSRF_TOKEN |
|
320 | 320 | }; |
|
321 | 321 | |
|
322 | 322 | if (resolvesCommentId) { |
|
323 | 323 | postData['resolves_comment_id'] = resolvesCommentId; |
|
324 | 324 | } |
|
325 | 325 | |
|
326 | 326 | if (closePullRequest) { |
|
327 | 327 | postData['close_pull_request'] = true; |
|
328 | 328 | } |
|
329 | 329 | |
|
330 | 330 | var submitSuccessCallback = function(o) { |
|
331 | 331 | // reload page if we change status for single commit. |
|
332 | 332 | if (status && self.commitId) { |
|
333 | 333 | location.reload(true); |
|
334 | 334 | } else { |
|
335 | 335 | $('#injected_page_comments').append(o.rendered_text); |
|
336 | 336 | self.resetCommentFormState(); |
|
337 | 337 | timeagoActivate(); |
|
338 | 338 | |
|
339 | 339 | // mark visually which comment was resolved |
|
340 | 340 | if (resolvesCommentId) { |
|
341 | 341 | self.markCommentResolved(resolvesCommentId); |
|
342 | 342 | } |
|
343 | 343 | } |
|
344 | 344 | |
|
345 | 345 | // run global callback on submit |
|
346 | 346 | self.globalSubmitSuccessCallback(); |
|
347 | 347 | |
|
348 | 348 | }; |
|
349 | 349 | var submitFailCallback = function(data) { |
|
350 | 350 | alert( |
|
351 | 351 | "Error while submitting comment.\n" + |
|
352 | 352 | "Error code {0} ({1}).".format(data.status, data.statusText) |
|
353 | 353 | ); |
|
354 | 354 | self.resetCommentFormState(text); |
|
355 | 355 | }; |
|
356 | 356 | self.submitAjaxPOST( |
|
357 | 357 | self.submitUrl, postData, submitSuccessCallback, submitFailCallback); |
|
358 | 358 | }; |
|
359 | 359 | |
|
360 | 360 | this.previewSuccessCallback = function(o) { |
|
361 | 361 | $(self.previewBoxSelector).html(o); |
|
362 | 362 | $(self.previewBoxSelector).removeClass('unloaded'); |
|
363 | 363 | |
|
364 | 364 | // swap buttons, making preview active |
|
365 | 365 | $(self.previewButton).parent().addClass('active'); |
|
366 | 366 | $(self.editButton).parent().removeClass('active'); |
|
367 | 367 | |
|
368 | 368 | // unlock buttons |
|
369 | 369 | self.setActionButtonsDisabled(false); |
|
370 | 370 | }; |
|
371 | 371 | |
|
372 | 372 | this.setActionButtonsDisabled = function(state, excludeCancelBtn, submitEvent) { |
|
373 | 373 | excludeCancelBtn = excludeCancelBtn || false; |
|
374 | 374 | submitEvent = submitEvent || false; |
|
375 | 375 | |
|
376 | 376 | $(this.editButton).prop('disabled', state); |
|
377 | 377 | $(this.previewButton).prop('disabled', state); |
|
378 | 378 | |
|
379 | 379 | if (!excludeCancelBtn) { |
|
380 | 380 | $(this.cancelButton).prop('disabled', state); |
|
381 | 381 | } |
|
382 | 382 | |
|
383 | 383 | var submitState = state; |
|
384 | 384 | if (!submitEvent && this.getCommentStatus() && !self.isInline()) { |
|
385 | 385 | // if the value of commit review status is set, we allow |
|
386 | 386 | // submit button, but only on Main form, isInline means inline |
|
387 | 387 | submitState = false |
|
388 | 388 | } |
|
389 | 389 | |
|
390 | 390 | $(this.submitButton).prop('disabled', submitState); |
|
391 | 391 | if (submitEvent) { |
|
392 | 392 | $(this.submitButton).val(_gettext('Submitting...')); |
|
393 | 393 | } else { |
|
394 | 394 | $(this.submitButton).val(this.submitButtonText); |
|
395 | 395 | } |
|
396 | 396 | |
|
397 | 397 | }; |
|
398 | 398 | |
|
399 | 399 | // lock preview/edit/submit buttons on load, but exclude cancel button |
|
400 | 400 | var excludeCancelBtn = true; |
|
401 | 401 | this.setActionButtonsDisabled(true, excludeCancelBtn); |
|
402 | 402 | |
|
403 | 403 | // anonymous users don't have access to initialized CM instance |
|
404 | 404 | if (this.cm !== undefined){ |
|
405 | 405 | this.cm.on('change', function(cMirror) { |
|
406 | 406 | if (cMirror.getValue() === "") { |
|
407 | 407 | self.setActionButtonsDisabled(true, excludeCancelBtn) |
|
408 | 408 | } else { |
|
409 | 409 | self.setActionButtonsDisabled(false, excludeCancelBtn) |
|
410 | 410 | } |
|
411 | 411 | }); |
|
412 | 412 | } |
|
413 | 413 | |
|
414 | 414 | $(this.editButton).on('click', function(e) { |
|
415 | 415 | e.preventDefault(); |
|
416 | 416 | |
|
417 | 417 | $(self.previewButton).parent().removeClass('active'); |
|
418 | 418 | $(self.previewContainer).hide(); |
|
419 | 419 | |
|
420 | 420 | $(self.editButton).parent().addClass('active'); |
|
421 | 421 | $(self.editContainer).show(); |
|
422 | 422 | |
|
423 | 423 | }); |
|
424 | 424 | |
|
425 | 425 | $(this.previewButton).on('click', function(e) { |
|
426 | 426 | e.preventDefault(); |
|
427 | 427 | var text = self.cm.getValue(); |
|
428 | 428 | |
|
429 | 429 | if (text === "") { |
|
430 | 430 | return; |
|
431 | 431 | } |
|
432 | 432 | |
|
433 | 433 | var postData = { |
|
434 | 434 | 'text': text, |
|
435 | 435 | 'renderer': templateContext.visual.default_renderer, |
|
436 | 436 | 'csrf_token': CSRF_TOKEN |
|
437 | 437 | }; |
|
438 | 438 | |
|
439 | 439 | // lock ALL buttons on preview |
|
440 | 440 | self.setActionButtonsDisabled(true); |
|
441 | 441 | |
|
442 | 442 | $(self.previewBoxSelector).addClass('unloaded'); |
|
443 | 443 | $(self.previewBoxSelector).html(_gettext('Loading ...')); |
|
444 | 444 | |
|
445 | 445 | $(self.editContainer).hide(); |
|
446 | 446 | $(self.previewContainer).show(); |
|
447 | 447 | |
|
448 | 448 | // by default we reset state of comment preserving the text |
|
449 | 449 | var previewFailCallback = function(data){ |
|
450 | 450 | alert( |
|
451 | 451 | "Error while preview of comment.\n" + |
|
452 | 452 | "Error code {0} ({1}).".format(data.status, data.statusText) |
|
453 | 453 | ); |
|
454 | 454 | self.resetCommentFormState(text) |
|
455 | 455 | }; |
|
456 | 456 | self.submitAjaxPOST( |
|
457 | 457 | self.previewUrl, postData, self.previewSuccessCallback, |
|
458 | 458 | previewFailCallback); |
|
459 | 459 | |
|
460 | 460 | $(self.previewButton).parent().addClass('active'); |
|
461 | 461 | $(self.editButton).parent().removeClass('active'); |
|
462 | 462 | }); |
|
463 | 463 | |
|
464 | 464 | $(this.submitForm).submit(function(e) { |
|
465 | 465 | e.preventDefault(); |
|
466 | 466 | var allowedToSubmit = self.isAllowedToSubmit(); |
|
467 | 467 | if (!allowedToSubmit){ |
|
468 | 468 | return false; |
|
469 | 469 | } |
|
470 | 470 | self.handleFormSubmit(); |
|
471 | 471 | }); |
|
472 | 472 | |
|
473 | 473 | } |
|
474 | 474 | |
|
475 | 475 | return CommentForm; |
|
476 | 476 | }); |
|
477 | 477 | |
|
478 | 478 | /* comments controller */ |
|
479 | 479 | var CommentsController = function() { |
|
480 | 480 | var mainComment = '#text'; |
|
481 | 481 | var self = this; |
|
482 | 482 | |
|
483 | 483 | this.cancelComment = function(node) { |
|
484 | 484 | var $node = $(node); |
|
485 | 485 | var $td = $node.closest('td'); |
|
486 | 486 | $node.closest('.comment-inline-form').remove(); |
|
487 | 487 | return false; |
|
488 | 488 | }; |
|
489 | 489 | |
|
490 | 490 | this.getLineNumber = function(node) { |
|
491 | 491 | var $node = $(node); |
|
492 | 492 | var lineNo = $node.closest('td').attr('data-line-no'); |
|
493 | 493 | if (lineNo === undefined && $node.data('commentInline')){ |
|
494 | 494 | lineNo = $node.data('commentLineNo') |
|
495 | 495 | } |
|
496 | 496 | |
|
497 | 497 | return lineNo |
|
498 | 498 | }; |
|
499 | 499 | |
|
500 | 500 | this.scrollToComment = function(node, offset, outdated) { |
|
501 | 501 | if (offset === undefined) { |
|
502 | 502 | offset = 0; |
|
503 | 503 | } |
|
504 | 504 | var outdated = outdated || false; |
|
505 | 505 | var klass = outdated ? 'div.comment-outdated' : 'div.comment-current'; |
|
506 | 506 | |
|
507 | 507 | if (!node) { |
|
508 | 508 | node = $('.comment-selected'); |
|
509 | 509 | if (!node.length) { |
|
510 | 510 | node = $('comment-current') |
|
511 | 511 | } |
|
512 | 512 | } |
|
513 | 513 | $wrapper = $(node).closest('div.comment'); |
|
514 | 514 | $comment = $(node).closest(klass); |
|
515 | 515 | $comments = $(klass); |
|
516 | 516 | |
|
517 | 517 | // show hidden comment when referenced. |
|
518 | 518 | if (!$wrapper.is(':visible')){ |
|
519 | 519 | $wrapper.show(); |
|
520 | 520 | } |
|
521 | 521 | |
|
522 | 522 | $('.comment-selected').removeClass('comment-selected'); |
|
523 | 523 | |
|
524 | 524 | var nextIdx = $(klass).index($comment) + offset; |
|
525 | 525 | if (nextIdx >= $comments.length) { |
|
526 | 526 | nextIdx = 0; |
|
527 | 527 | } |
|
528 | 528 | var $next = $(klass).eq(nextIdx); |
|
529 | 529 | |
|
530 | 530 | var $cb = $next.closest('.cb'); |
|
531 | 531 | $cb.removeClass('cb-collapsed'); |
|
532 | 532 | |
|
533 | 533 | var $filediffCollapseState = $cb.closest('.filediff').prev(); |
|
534 | 534 | $filediffCollapseState.prop('checked', false); |
|
535 | 535 | $next.addClass('comment-selected'); |
|
536 | 536 | scrollToElement($next); |
|
537 | 537 | return false; |
|
538 | 538 | }; |
|
539 | 539 | |
|
540 | 540 | this.nextComment = function(node) { |
|
541 | 541 | return self.scrollToComment(node, 1); |
|
542 | 542 | }; |
|
543 | 543 | |
|
544 | 544 | this.prevComment = function(node) { |
|
545 | 545 | return self.scrollToComment(node, -1); |
|
546 | 546 | }; |
|
547 | 547 | |
|
548 | 548 | this.nextOutdatedComment = function(node) { |
|
549 | 549 | return self.scrollToComment(node, 1, true); |
|
550 | 550 | }; |
|
551 | 551 | |
|
552 | 552 | this.prevOutdatedComment = function(node) { |
|
553 | 553 | return self.scrollToComment(node, -1, true); |
|
554 | 554 | }; |
|
555 | 555 | |
|
556 | 556 | this.deleteComment = function(node) { |
|
557 | 557 | if (!confirm(_gettext('Delete this comment?'))) { |
|
558 | 558 | return false; |
|
559 | 559 | } |
|
560 | 560 | var $node = $(node); |
|
561 | 561 | var $td = $node.closest('td'); |
|
562 | 562 | var $comment = $node.closest('.comment'); |
|
563 | 563 | var comment_id = $comment.attr('data-comment-id'); |
|
564 | 564 | var url = AJAX_COMMENT_DELETE_URL.replace('__COMMENT_ID__', comment_id); |
|
565 | 565 | var postData = { |
|
566 | 566 | 'csrf_token': CSRF_TOKEN |
|
567 | 567 | }; |
|
568 | 568 | |
|
569 | 569 | $comment.addClass('comment-deleting'); |
|
570 | 570 | $comment.hide('fast'); |
|
571 | 571 | |
|
572 | 572 | var success = function(response) { |
|
573 | 573 | $comment.remove(); |
|
574 | 574 | return false; |
|
575 | 575 | }; |
|
576 | 576 | var failure = function(data, textStatus, xhr) { |
|
577 | 577 | alert("error processing request: " + textStatus); |
|
578 | 578 | $comment.show('fast'); |
|
579 | 579 | $comment.removeClass('comment-deleting'); |
|
580 | 580 | return false; |
|
581 | 581 | }; |
|
582 | 582 | ajaxPOST(url, postData, success, failure); |
|
583 | 583 | }; |
|
584 | 584 | |
|
585 | 585 | this.toggleWideMode = function (node) { |
|
586 | 586 | if ($('#content').hasClass('wrapper')) { |
|
587 | 587 | $('#content').removeClass("wrapper"); |
|
588 | 588 | $('#content').addClass("wide-mode-wrapper"); |
|
589 | 589 | $(node).addClass('btn-success'); |
|
590 | 590 | } else { |
|
591 | 591 | $('#content').removeClass("wide-mode-wrapper"); |
|
592 | 592 | $('#content').addClass("wrapper"); |
|
593 | 593 | $(node).removeClass('btn-success'); |
|
594 | 594 | } |
|
595 | 595 | return false; |
|
596 | 596 | }; |
|
597 | 597 | |
|
598 | 598 | this.toggleComments = function(node, show) { |
|
599 | 599 | var $filediff = $(node).closest('.filediff'); |
|
600 | 600 | if (show === true) { |
|
601 | 601 | $filediff.removeClass('hide-comments'); |
|
602 | 602 | } else if (show === false) { |
|
603 | 603 | $filediff.find('.hide-line-comments').removeClass('hide-line-comments'); |
|
604 | 604 | $filediff.addClass('hide-comments'); |
|
605 | 605 | } else { |
|
606 | 606 | $filediff.find('.hide-line-comments').removeClass('hide-line-comments'); |
|
607 | 607 | $filediff.toggleClass('hide-comments'); |
|
608 | 608 | } |
|
609 | 609 | return false; |
|
610 | 610 | }; |
|
611 | 611 | |
|
612 | 612 | this.toggleLineComments = function(node) { |
|
613 | 613 | self.toggleComments(node, true); |
|
614 | 614 | var $node = $(node); |
|
615 | 615 | // mark outdated comments as visible before the toggle; |
|
616 | 616 | $(node.closest('tr')).find('.comment-outdated').show(); |
|
617 | 617 | $node.closest('tr').toggleClass('hide-line-comments'); |
|
618 | 618 | }; |
|
619 | 619 | |
|
620 | 620 | this.createCommentForm = function(formElement, lineno, placeholderText, initAutocompleteActions, resolvesCommentId){ |
|
621 | 621 | var pullRequestId = templateContext.pull_request_data.pull_request_id; |
|
622 | 622 | var commitId = templateContext.commit_data.commit_id; |
|
623 | 623 | |
|
624 | 624 | var commentForm = new CommentForm( |
|
625 | 625 | formElement, commitId, pullRequestId, lineno, initAutocompleteActions, resolvesCommentId); |
|
626 | 626 | var cm = commentForm.getCmInstance(); |
|
627 | 627 | |
|
628 | 628 | if (resolvesCommentId){ |
|
629 | 629 | var placeholderText = _gettext('Leave a comment, or click resolve button to resolve TODO comment #{0}').format(resolvesCommentId); |
|
630 | 630 | } |
|
631 | 631 | |
|
632 | 632 | setTimeout(function() { |
|
633 | 633 | // callbacks |
|
634 | 634 | if (cm !== undefined) { |
|
635 | 635 | commentForm.setPlaceholder(placeholderText); |
|
636 | 636 | if (commentForm.isInline()) { |
|
637 | 637 | cm.focus(); |
|
638 | 638 | cm.refresh(); |
|
639 | 639 | } |
|
640 | 640 | } |
|
641 | 641 | }, 10); |
|
642 | 642 | |
|
643 | 643 | // trigger scrolldown to the resolve comment, since it might be away |
|
644 | 644 | // from the clicked |
|
645 | 645 | if (resolvesCommentId){ |
|
646 | 646 | var actionNode = $(commentForm.resolvesActionId).offset(); |
|
647 | 647 | |
|
648 | 648 | setTimeout(function() { |
|
649 | 649 | if (actionNode) { |
|
650 | 650 | $('body, html').animate({scrollTop: actionNode.top}, 10); |
|
651 | 651 | } |
|
652 | 652 | }, 100); |
|
653 | 653 | } |
|
654 | 654 | |
|
655 | 655 | return commentForm; |
|
656 | 656 | }; |
|
657 | 657 | |
|
658 | 658 | this.createGeneralComment = function (lineNo, placeholderText, resolvesCommentId) { |
|
659 | 659 | |
|
660 | 660 | var tmpl = $('#cb-comment-general-form-template').html(); |
|
661 | 661 | tmpl = tmpl.format(null, 'general'); |
|
662 | 662 | var $form = $(tmpl); |
|
663 | 663 | |
|
664 | 664 | var $formPlaceholder = $('#cb-comment-general-form-placeholder'); |
|
665 | 665 | var curForm = $formPlaceholder.find('form'); |
|
666 | 666 | if (curForm){ |
|
667 | 667 | curForm.remove(); |
|
668 | 668 | } |
|
669 | 669 | $formPlaceholder.append($form); |
|
670 | 670 | |
|
671 | 671 | var _form = $($form[0]); |
|
672 | 672 | var autocompleteActions = ['approve', 'reject', 'as_note', 'as_todo']; |
|
673 | 673 | var commentForm = this.createCommentForm( |
|
674 | 674 | _form, lineNo, placeholderText, autocompleteActions, resolvesCommentId); |
|
675 | 675 | commentForm.initStatusChangeSelector(); |
|
676 | 676 | |
|
677 | 677 | return commentForm; |
|
678 | 678 | }; |
|
679 | 679 | |
|
680 | 680 | this.createComment = function(node, resolutionComment) { |
|
681 | 681 | var resolvesCommentId = resolutionComment || null; |
|
682 | 682 | var $node = $(node); |
|
683 | 683 | var $td = $node.closest('td'); |
|
684 | 684 | var $form = $td.find('.comment-inline-form'); |
|
685 | 685 | |
|
686 | 686 | if (!$form.length) { |
|
687 | 687 | |
|
688 | 688 | var $filediff = $node.closest('.filediff'); |
|
689 | 689 | $filediff.removeClass('hide-comments'); |
|
690 | 690 | var f_path = $filediff.attr('data-f-path'); |
|
691 | 691 | var lineno = self.getLineNumber(node); |
|
692 | 692 | // create a new HTML from template |
|
693 | 693 | var tmpl = $('#cb-comment-inline-form-template').html(); |
|
694 | 694 | tmpl = tmpl.format(escapeHtml(f_path), lineno); |
|
695 | 695 | $form = $(tmpl); |
|
696 | 696 | |
|
697 | 697 | var $comments = $td.find('.inline-comments'); |
|
698 | 698 | if (!$comments.length) { |
|
699 | 699 | $comments = $( |
|
700 | 700 | $('#cb-comments-inline-container-template').html()); |
|
701 | 701 | $td.append($comments); |
|
702 | 702 | } |
|
703 | 703 | |
|
704 | 704 | $td.find('.cb-comment-add-button').before($form); |
|
705 | 705 | |
|
706 | 706 | var placeholderText = _gettext('Leave a comment on line {0}.').format(lineno); |
|
707 | 707 | var _form = $($form[0]).find('form'); |
|
708 | 708 | var autocompleteActions = ['as_note', 'as_todo']; |
|
709 | 709 | var commentForm = this.createCommentForm( |
|
710 | 710 | _form, lineno, placeholderText, autocompleteActions, resolvesCommentId); |
|
711 | 711 | |
|
712 | 712 | $.Topic('/ui/plugins/code/comment_form_built').prepareOrPublish({ |
|
713 | 713 | form: _form, |
|
714 | 714 | parent: $td[0], |
|
715 | 715 | lineno: lineno, |
|
716 | 716 | f_path: f_path} |
|
717 | 717 | ); |
|
718 | 718 | |
|
719 | 719 | // set a CUSTOM submit handler for inline comments. |
|
720 | 720 | commentForm.setHandleFormSubmit(function(o) { |
|
721 | 721 | var text = commentForm.cm.getValue(); |
|
722 | 722 | var commentType = commentForm.getCommentType(); |
|
723 | 723 | var resolvesCommentId = commentForm.getResolvesId(); |
|
724 | 724 | |
|
725 | 725 | if (text === "") { |
|
726 | 726 | return; |
|
727 | 727 | } |
|
728 | 728 | |
|
729 | 729 | if (lineno === undefined) { |
|
730 | 730 | alert('missing line !'); |
|
731 | 731 | return; |
|
732 | 732 | } |
|
733 | 733 | if (f_path === undefined) { |
|
734 | 734 | alert('missing file path !'); |
|
735 | 735 | return; |
|
736 | 736 | } |
|
737 | 737 | |
|
738 | 738 | var excludeCancelBtn = false; |
|
739 | 739 | var submitEvent = true; |
|
740 | 740 | commentForm.setActionButtonsDisabled(true, excludeCancelBtn, submitEvent); |
|
741 | 741 | commentForm.cm.setOption("readOnly", true); |
|
742 | 742 | var postData = { |
|
743 | 743 | 'text': text, |
|
744 | 744 | 'f_path': f_path, |
|
745 | 745 | 'line': lineno, |
|
746 | 746 | 'comment_type': commentType, |
|
747 | 747 | 'csrf_token': CSRF_TOKEN |
|
748 | 748 | }; |
|
749 | 749 | if (resolvesCommentId){ |
|
750 | 750 | postData['resolves_comment_id'] = resolvesCommentId; |
|
751 | 751 | } |
|
752 | 752 | |
|
753 | 753 | var submitSuccessCallback = function(json_data) { |
|
754 | 754 | $form.remove(); |
|
755 | 755 | try { |
|
756 | 756 | var html = json_data.rendered_text; |
|
757 | 757 | var lineno = json_data.line_no; |
|
758 | 758 | var target_id = json_data.target_id; |
|
759 | 759 | |
|
760 | 760 | $comments.find('.cb-comment-add-button').before(html); |
|
761 | 761 | |
|
762 | 762 | //mark visually which comment was resolved |
|
763 | 763 | if (resolvesCommentId) { |
|
764 | 764 | commentForm.markCommentResolved(resolvesCommentId); |
|
765 | 765 | } |
|
766 | 766 | |
|
767 | 767 | // run global callback on submit |
|
768 | 768 | commentForm.globalSubmitSuccessCallback(); |
|
769 | 769 | |
|
770 | 770 | } catch (e) { |
|
771 | 771 | console.error(e); |
|
772 | 772 | } |
|
773 | 773 | |
|
774 | 774 | // re trigger the linkification of next/prev navigation |
|
775 | 775 | linkifyComments($('.inline-comment-injected')); |
|
776 | 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 | 784 | commentForm.setActionButtonsDisabled(false); |
|
778 | 785 | |
|
779 | 786 | }; |
|
780 | 787 | var submitFailCallback = function(data){ |
|
781 | 788 | alert( |
|
782 | 789 | "Error while submitting comment.\n" + |
|
783 | 790 | "Error code {0} ({1}).".format(data.status, data.statusText) |
|
784 | 791 | ); |
|
785 | 792 | commentForm.resetCommentFormState(text) |
|
786 | 793 | }; |
|
787 | 794 | commentForm.submitAjaxPOST( |
|
788 | 795 | commentForm.submitUrl, postData, submitSuccessCallback, submitFailCallback); |
|
789 | 796 | }); |
|
790 | 797 | } |
|
791 | 798 | |
|
792 | 799 | $form.addClass('comment-inline-form-open'); |
|
793 | 800 | }; |
|
794 | 801 | |
|
795 | 802 | this.createResolutionComment = function(commentId){ |
|
796 | 803 | // hide the trigger text |
|
797 | 804 | $('#resolve-comment-{0}'.format(commentId)).hide(); |
|
798 | 805 | |
|
799 | 806 | var comment = $('#comment-'+commentId); |
|
800 | 807 | var commentData = comment.data(); |
|
801 | 808 | if (commentData.commentInline) { |
|
802 | 809 | this.createComment(comment, commentId) |
|
803 | 810 | } else { |
|
804 | 811 | Rhodecode.comments.createGeneralComment('general', "$placeholder", commentId) |
|
805 | 812 | } |
|
806 | 813 | |
|
807 | 814 | return false; |
|
808 | 815 | }; |
|
809 | 816 | |
|
810 | 817 | this.submitResolution = function(commentId){ |
|
811 | 818 | var form = $('#resolve_comment_{0}'.format(commentId)).closest('form'); |
|
812 | 819 | var commentForm = form.get(0).CommentForm; |
|
813 | 820 | |
|
814 | 821 | var cm = commentForm.getCmInstance(); |
|
815 | 822 | var renderer = templateContext.visual.default_renderer; |
|
816 | 823 | if (renderer == 'rst'){ |
|
817 | 824 | var commentUrl = '`#{0} <{1}#comment-{0}>`_'.format(commentId, commentForm.selfUrl); |
|
818 | 825 | } else if (renderer == 'markdown') { |
|
819 | 826 | var commentUrl = '[#{0}]({1}#comment-{0})'.format(commentId, commentForm.selfUrl); |
|
820 | 827 | } else { |
|
821 | 828 | var commentUrl = '{1}#comment-{0}'.format(commentId, commentForm.selfUrl); |
|
822 | 829 | } |
|
823 | 830 | |
|
824 | 831 | cm.setValue(_gettext('TODO from comment {0} was fixed.').format(commentUrl)); |
|
825 | 832 | form.submit(); |
|
826 | 833 | return false; |
|
827 | 834 | }; |
|
828 | 835 | |
|
829 | 836 | }; |
@@ -1,230 +1,235 b'' | |||
|
1 | 1 | /** |
|
2 | 2 | @license @nocompile |
|
3 | 3 | Copyright (c) 2018 The Polymer Project Authors. All rights reserved. |
|
4 | 4 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
|
5 | 5 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
|
6 | 6 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
|
7 | 7 | Code distributed by Google as part of the polymer project is also |
|
8 | 8 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
|
9 | 9 | */ |
|
10 | 10 | (function(){/* |
|
11 | 11 | |
|
12 | 12 | Copyright (c) 2016 The Polymer Project Authors. All rights reserved. |
|
13 | 13 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
|
14 | 14 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
|
15 | 15 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
|
16 | 16 | Code distributed by Google as part of the polymer project is also |
|
17 | 17 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
|
18 | 18 | */ |
|
19 |
'use strict';var |
|
|
20 |
function |
|
|
21 |
function |
|
|
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 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 ka(a){for(var b,c=[];!(b=a.next()).done;)c.push(b.value);return c} | |
|
22 | 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 | 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 | 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 | 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 | 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, |
|
|
29 |
|
|
|
30 |
0===a.content.firstChild.content.childNodes.length||d}}();if(c){var |
|
|
31 |
for(var c;c=b.firstChild;)l.call(b.content,c);if( |
|
|
32 |
0;d<c.length;d++)b="<"+c[d]+">"+b+"</"+c[d]+">"; |
|
|
33 |
|
|
|
34 |
function(){var b= |
|
|
35 |
|
|
|
36 |
|
|
|
37 |
function(b){if(!e&&d&&this instanceof DocumentFragment)if(b)var c= |
|
|
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}} | |
|
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; | |
|
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)})} | |
|
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))} | |
|
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; | |
|
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"))} | |
|
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)}};/* | |
|
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 | 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 | 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 | 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 | ["",""])[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 | 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=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 | 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 | 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=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,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 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 | 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 | 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 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 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)};/* | |
|
45 | 44 | |
|
46 | 45 | Copyright (c) 2017 The Polymer Project Authors. All rights reserved. |
|
47 | 46 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
|
48 | 47 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
|
49 | 48 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
|
50 | 49 | Code distributed by Google as part of the polymer project is also |
|
51 | 50 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
|
52 | 51 | */ |
|
53 |
window.Promise |
|
|
54 |
c=b.length;c? |
|
|
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. |
|
|
56 |
function(a){var b=document.createElement("script"); |
|
|
57 |
{get:function(){return |
|
|
58 |
function(a,c,d,e){a=d.replace(/["']/g,"");b&&(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, |
|
|
60 |
k.prototype.loadImports=function(a){var b=this;a=m(a,"link[rel=import]"); |
|
|
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= |
|
|
62 |
var d=0; |
|
|
63 |
b&&(a.loadImports(document),a.b||(a.c.observe(document.head,{childList:!0,subtree:!0}),a.Ta( |
|
|
64 |
|
|
|
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. |
|
|
66 |
"complete"),a.dispatchEvent(b(a.import?"load":"error",{bubbles:!1,cancelable:!1,detail:void 0})))};k.prototype. |
|
|
67 |
|
|
|
68 |
{cancelable:!0,bubbles:!0,detail:void 0}))});a.useNative= |
|
|
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])"), | |
|
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, | |
|
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"]'), | |
|
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", | |
|
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, | |
|
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= | |
|
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); | |
|
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=== | |
|
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"]'); | |
|
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&& | |
|
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"); | |
|
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&& | |
|
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= | |
|
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", | |
|
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", | |
|
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 | 69 | Copyright (c) 2014 The Polymer Project Authors. All rights reserved. |
|
71 | 70 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
|
72 | 71 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
|
73 | 72 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
|
74 | 73 | Code distributed by Google as part of the polymer project is also |
|
75 | 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 |
|
|
78 |
window.WebComponents.flags= |
|
|
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={}} | |
|
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 | 79 | Copyright (c) 2016 The Polymer Project Authors. All rights reserved. |
|
81 | 80 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
|
82 | 81 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
|
83 | 82 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
|
84 | 83 | Code distributed by Google as part of the polymer project is also |
|
85 | 84 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
|
86 | 85 | */ |
|
87 |
function |
|
|
88 |
var |
|
|
89 |
var |
|
|
90 |
function |
|
|
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))} | |
|
92 |
function |
|
|
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; | |
|
94 |
|
|
|
95 |
function |
|
|
96 |
Error("not implemented");}}c+=g}return c};var |
|
|
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()}; | |
|
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)} | |
|
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, | |
|
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)}; | |
|
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)}; | |
|
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)}}; | |
|
103 |
|
|
|
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}, | |
|
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= | |
|
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= | |
|
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&& | |
|
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= | |
|
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})): | |
|
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}}, | |
|
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}}; | |
|
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)} | |
|
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]}, | |
|
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} | |
|
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; | |
|
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&& | |
|
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); | |
|
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} | |
|
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)&& | |
|
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} | |
|
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)} | |
|
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)} | |
|
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; | |
|
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, | |
|
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}; | |
|
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} | |
|
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= | |
|
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++);} | |
|
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}} | |
|
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} | |
|
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, | |
|
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&& | |
|
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)}}} | |
|
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))}} | |
|
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); | |
|
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}} | |
|
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]= | |
|
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)); | |
|
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} | |
|
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)}))} | |
|
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()} | |
|
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)&& | |
|
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, | |
|
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()}; | |
|
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)} | |
|
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)}})} | |
|
147 | function id(a){gd(a);return!(!a.g||!a.g.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= | |
|
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} | |
|
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= | |
|
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)}}; | |
|
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}}); | |
|
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))? | |
|
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); | |
|
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}); | |
|
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= | |
|
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}}; | |
|
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, | |
|
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))} | |
|
160 | function re(a,b){for(;b&&b!==a&&!b.nextSibling;)b=b.parentNode;return b&&b!==a?b.nextSibling:null} | |
|
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)}} | |
|
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)}} | |
|
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); | |
|
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])} | |
|
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], | |
|
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)}; | |
|
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; | |
|
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."); | |
|
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); | |
|
170 | this.T||(this.T=!0,this.ja(function(){return Be(c)}))};p.ca=function(a){Q(this.l,a)}; | |
|
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}; | |
|
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; | |
|
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, | |
|
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, | |
|
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."); | |
|
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}); | |
|
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); | |
|
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): | |
|
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= | |
|
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!== | |
|
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, | |
|
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, | |
|
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: | |
|
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, | |
|
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, | |
|
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=""} | |
|
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)} | |
|
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, | |
|
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})} | |
|
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} | |
|
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)}}} | |
|
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} | |
|
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)} | |
|
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)} | |
|
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)})} | |
|
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)} | |
|
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}; | |
|
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)} | |
|
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"}}}); | |
|
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} | |
|
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}} | |
|
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()||""} | |
|
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(";")} | |
|
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}} | |
|
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})}} | |
|
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}} | |
|
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="."+ | |
|
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)}} | |
|
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(){} | |
|
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= | |
|
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)}}}} | |
|
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())}} | |
|
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)}; | |
|
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, | |
|
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))}; | |
|
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)} | |
|
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()}}}; | |
|
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= | |
|
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|| | |
|
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} | |
|
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)}; | |
|
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)}; | |
|
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; | |
|
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; | |
|
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); | |
|
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()}, | |
|
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()})}} | |
|
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); | |
|
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} | |
|
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} | |
|
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} | |
|
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[]}; | |
|
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))} | |
|
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, | |
|
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; | |
|
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(" ")); | |
|
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), | |
|
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} | |
|
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()}; | |
|
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)})}; | |
|
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)} | |
|
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, | |
|
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)}, | |
|
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)}, | |
|
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)}}, | |
|
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)} | |
|
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}, | |
|
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= | |
|
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= | |
|
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&& | |
|
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= | |
|
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})): | |
|
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)}, | |
|
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}}; | |
|
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)} | |
|
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]}, | |
|
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)} | |
|
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} | |
|
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)} | |
|
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; | |
|
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)); | |
|
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} | |
|
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} | |
|
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)} | |
|
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)} | |
|
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; | |
|
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)} | |
|
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):""} | |
|
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, | |
|
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}; | |
|
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} | |
|
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)}, | |
|
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} | |
|
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++);} | |
|
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}} | |
|
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} | |
|
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, | |
|
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&& | |
|
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)}}} | |
|
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))}} | |
|
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); | |
|
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}} | |
|
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]= | |
|
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)); | |
|
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} | |
|
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)}))} | |
|
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()} | |
|
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)&& | |
|
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, | |
|
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()}; | |
|
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)} | |
|
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} | |
|
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}} | |
|
151 | function Ic(a){Kc(a);return!(!a.g||!a.g.length)} | |
|
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= | |
|
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} | |
|
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= | |
|
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)}}; | |
|
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}}); | |
|
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))? | |
|
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); | |
|
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}); | |
|
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= | |
|
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}}; | |
|
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); | |
|
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))} | |
|
164 | function Ud(a,b){for(;b&&b!==a&&!b.nextSibling;)b=b.parentNode;return b&&b!==a?b.nextSibling:null} | |
|
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)}} | |
|
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)}} | |
|
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= | |
|
168 | 0;b<f.length;b++)a.b(f[b]);for(b=0;b<f.length;b++)e(f[b])} | |
|
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], | |
|
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)}; | |
|
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; | |
|
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."); | |
|
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); | |
|
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)}}} | |
|
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; | |
|
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, | |
|
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, | |
|
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."); | |
|
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}); | |
|
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); | |
|
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): | |
|
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= | |
|
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&& | |
|
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})} | |
|
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, | |
|
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, | |
|
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, | |
|
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, | |
|
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=""} | |
|
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)} | |
|
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, | |
|
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})} | |
|
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} | |
|
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)}} | |
|
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} | |
|
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)} | |
|
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} | |
|
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)} | |
|
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)})} | |
|
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)} | |
|
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])} | |
|
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}; | |
|
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)} | |
|
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"}}}); | |
|
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} | |
|
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}} | |
|
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()||""} | |
|
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(";")} | |
|
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}} | |
|
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}} | |
|
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; | |
|
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)}} | |
|
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:""} | |
|
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]; | |
|
215 | var g=Sg(f);g&&Qf(f,g)}}}}} | |
|
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", | |
|
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)}; | |
|
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)|| | |
|
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))}; | |
|
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)} | |
|
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()}}}; | |
|
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, | |
|
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, | |
|
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} | |
|
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)}; | |
|
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])}; | |
|
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 | 235 | //# sourceMappingURL=webcomponents-lite.js.map |
@@ -1,884 +1,967 b'' | |||
|
1 | 1 | <%namespace name="commentblock" file="/changeset/changeset_file_comment.mako"/> |
|
2 | 2 | |
|
3 | 3 | <%def name="diff_line_anchor(filename, line, type)"><% |
|
4 | 4 | return '%s_%s_%i' % (h.safeid(filename), type, line) |
|
5 | 5 | %></%def> |
|
6 | 6 | |
|
7 | 7 | <%def name="action_class(action)"> |
|
8 | 8 | <% |
|
9 | 9 | return { |
|
10 | 10 | '-': 'cb-deletion', |
|
11 | 11 | '+': 'cb-addition', |
|
12 | 12 | ' ': 'cb-context', |
|
13 | 13 | }.get(action, 'cb-empty') |
|
14 | 14 | %> |
|
15 | 15 | </%def> |
|
16 | 16 | |
|
17 | 17 | <%def name="op_class(op_id)"> |
|
18 | 18 | <% |
|
19 | 19 | return { |
|
20 | 20 | DEL_FILENODE: 'deletion', # file deleted |
|
21 | 21 | BIN_FILENODE: 'warning' # binary diff hidden |
|
22 | 22 | }.get(op_id, 'addition') |
|
23 | 23 | %> |
|
24 | 24 | </%def> |
|
25 | 25 | |
|
26 | 26 | |
|
27 | 27 | |
|
28 | 28 | <%def name="render_diffset(diffset, commit=None, |
|
29 | 29 | |
|
30 | 30 | # collapse all file diff entries when there are more than this amount of files in the diff |
|
31 | 31 | collapse_when_files_over=20, |
|
32 | 32 | |
|
33 | 33 | # collapse lines in the diff when more than this amount of lines changed in the file diff |
|
34 | 34 | lines_changed_limit=500, |
|
35 | 35 | |
|
36 | 36 | # add a ruler at to the output |
|
37 | 37 | ruler_at_chars=0, |
|
38 | 38 | |
|
39 | 39 | # show inline comments |
|
40 | 40 | use_comments=False, |
|
41 | 41 | |
|
42 | 42 | # disable new comments |
|
43 | 43 | disable_new_comments=False, |
|
44 | 44 | |
|
45 | 45 | # special file-comments that were deleted in previous versions |
|
46 | 46 | # it's used for showing outdated comments for deleted files in a PR |
|
47 | 47 | deleted_files_comments=None, |
|
48 | 48 | |
|
49 | 49 | # for cache purpose |
|
50 | 50 | inline_comments=None, |
|
51 | 51 | |
|
52 | 52 | )"> |
|
53 | 53 | %if use_comments: |
|
54 | 54 | <div id="cb-comments-inline-container-template" class="js-template"> |
|
55 | 55 | ${inline_comments_container([], inline_comments)} |
|
56 | 56 | </div> |
|
57 | 57 | <div class="js-template" id="cb-comment-inline-form-template"> |
|
58 | 58 | <div class="comment-inline-form ac"> |
|
59 | 59 | |
|
60 | 60 | %if c.rhodecode_user.username != h.DEFAULT_USER: |
|
61 | 61 | ## render template for inline comments |
|
62 | 62 | ${commentblock.comment_form(form_type='inline')} |
|
63 | 63 | %else: |
|
64 | 64 | ${h.form('', class_='inline-form comment-form-login', method='get')} |
|
65 | 65 | <div class="pull-left"> |
|
66 | 66 | <div class="comment-help pull-right"> |
|
67 | 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 | 68 | </div> |
|
69 | 69 | </div> |
|
70 | 70 | <div class="comment-button pull-right"> |
|
71 | 71 | <button type="button" class="cb-comment-cancel" onclick="return Rhodecode.comments.cancelComment(this);"> |
|
72 | 72 | ${_('Cancel')} |
|
73 | 73 | </button> |
|
74 | 74 | </div> |
|
75 | 75 | <div class="clearfix"></div> |
|
76 | 76 | ${h.end_form()} |
|
77 | 77 | %endif |
|
78 | 78 | </div> |
|
79 | 79 | </div> |
|
80 | 80 | |
|
81 | 81 | %endif |
|
82 | 82 | <% |
|
83 | 83 | collapse_all = len(diffset.files) > collapse_when_files_over |
|
84 | 84 | %> |
|
85 | 85 | |
|
86 | 86 | %if c.user_session_attrs["diffmode"] == 'sideside': |
|
87 | 87 | <style> |
|
88 | 88 | .wrapper { |
|
89 | 89 | max-width: 1600px !important; |
|
90 | 90 | } |
|
91 | 91 | </style> |
|
92 | 92 | %endif |
|
93 | 93 | |
|
94 | 94 | %if ruler_at_chars: |
|
95 | 95 | <style> |
|
96 | 96 | .diff table.cb .cb-content:after { |
|
97 | 97 | content: ""; |
|
98 | 98 | border-left: 1px solid blue; |
|
99 | 99 | position: absolute; |
|
100 | 100 | top: 0; |
|
101 | 101 | height: 18px; |
|
102 | 102 | opacity: .2; |
|
103 | 103 | z-index: 10; |
|
104 | 104 | //## +5 to account for diff action (+/-) |
|
105 | 105 | left: ${ruler_at_chars + 5}ch; |
|
106 | 106 | </style> |
|
107 | 107 | %endif |
|
108 | 108 | |
|
109 | 109 | <div class="diffset ${disable_new_comments and 'diffset-comments-disabled'}"> |
|
110 | 110 | <div class="diffset-heading ${diffset.limited_diff and 'diffset-heading-warning' or ''}"> |
|
111 | 111 | %if commit: |
|
112 | 112 | <div class="pull-right"> |
|
113 | 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 | 114 | ${_('Browse Files')} |
|
115 | 115 | </a> |
|
116 | 116 | </div> |
|
117 | 117 | %endif |
|
118 | 118 | <h2 class="clearinner"> |
|
119 | 119 | ## invidual commit |
|
120 | 120 | % if commit: |
|
121 | 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 | 122 | ${h.age_component(commit.date)} |
|
123 | 123 | % if diffset.limited_diff: |
|
124 | 124 | - ${_('The requested commit is too big and content was truncated.')} |
|
125 | 125 | ${_ungettext('%(num)s file changed.', '%(num)s files changed.', diffset.changed_files) % {'num': diffset.changed_files}} |
|
126 | 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 | 127 | % elif hasattr(c, 'commit_ranges') and len(c.commit_ranges) > 1: |
|
128 | 128 | ## compare diff, has no file-selector and we want to show stats anyway |
|
129 | 129 | ${_ungettext('{num} file changed: {linesadd} inserted, ''{linesdel} deleted', |
|
130 | 130 | '{num} files changed: {linesadd} inserted, {linesdel} deleted', diffset.changed_files) \ |
|
131 | 131 | .format(num=diffset.changed_files, linesadd=diffset.lines_added, linesdel=diffset.lines_deleted)} |
|
132 | 132 | % endif |
|
133 | 133 | % else: |
|
134 | 134 | ## pull requests/compare |
|
135 | 135 | ${_('File Changes')} |
|
136 | 136 | % endif |
|
137 | 137 | |
|
138 | 138 | </h2> |
|
139 | 139 | </div> |
|
140 | 140 | |
|
141 | 141 | %if diffset.has_hidden_changes: |
|
142 | 142 | <p class="empty_data">${_('Some changes may be hidden')}</p> |
|
143 | 143 | %elif not diffset.files: |
|
144 | 144 | <p class="empty_data">${_('No files')}</p> |
|
145 | 145 | %endif |
|
146 | 146 | |
|
147 | 147 | <div class="filediffs"> |
|
148 | ||
|
148 | 149 | ## initial value could be marked as False later on |
|
149 | 150 | <% over_lines_changed_limit = False %> |
|
150 | 151 | %for i, filediff in enumerate(diffset.files): |
|
151 | 152 | |
|
152 | 153 | <% |
|
153 | 154 | lines_changed = filediff.patch['stats']['added'] + filediff.patch['stats']['deleted'] |
|
154 | 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 | 161 | <div |
|
159 | 162 | class="filediff" |
|
160 | 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 | 166 | <label for="filediff-collapse-${id(filediff)}" class="filediff-heading"> |
|
165 | 167 | <div class="filediff-collapse-indicator"></div> |
|
166 | 168 | ${diff_ops(filediff)} |
|
167 | 169 | </label> |
|
170 | ||
|
168 | 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 | 174 | ## new/deleted/empty content case |
|
172 | 175 | % if not filediff.hunks: |
|
173 | 176 | ## Comment container, on "fakes" hunk that contains all data to render comments |
|
174 | 177 | ${render_hunk_lines(c.user_session_attrs["diffmode"], filediff.hunk_ops, use_comments=use_comments, inline_comments=inline_comments)} |
|
175 | 178 | % endif |
|
176 | 179 | |
|
177 | 180 | %if filediff.limited_diff: |
|
178 | 181 | <tr class="cb-warning cb-collapser"> |
|
179 | 182 | <td class="cb-text" ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=4' or 'colspan=6')}> |
|
180 | 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 | 184 | </td> |
|
182 | 185 | </tr> |
|
183 | 186 | %else: |
|
184 | 187 | %if over_lines_changed_limit: |
|
185 | 188 | <tr class="cb-warning cb-collapser"> |
|
186 | 189 | <td class="cb-text" ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=4' or 'colspan=6')}> |
|
187 | 190 | ${_('This diff has been collapsed as it changes many lines, (%i lines changed)' % lines_changed)} |
|
188 | 191 | <a href="#" class="cb-expand" |
|
189 | 192 | onclick="$(this).closest('table').removeClass('cb-collapsed'); return false;">${_('Show them')} |
|
190 | 193 | </a> |
|
191 | 194 | <a href="#" class="cb-collapse" |
|
192 | 195 | onclick="$(this).closest('table').addClass('cb-collapsed'); return false;">${_('Hide them')} |
|
193 | 196 | </a> |
|
194 | 197 | </td> |
|
195 | 198 | </tr> |
|
196 | 199 | %endif |
|
197 | 200 | %endif |
|
198 | 201 | |
|
199 | 202 | % for hunk in filediff.hunks: |
|
200 | 203 | <tr class="cb-hunk"> |
|
201 | 204 | <td ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=3' or '')}> |
|
202 | 205 | ## TODO: dan: add ajax loading of more context here |
|
203 | 206 | ## <a href="#"> |
|
204 | 207 | <i class="icon-more"></i> |
|
205 | 208 | ## </a> |
|
206 | 209 | </td> |
|
207 | 210 | <td ${(c.user_session_attrs["diffmode"] == 'sideside' and 'colspan=5' or '')}> |
|
208 | 211 | @@ |
|
209 | 212 | -${hunk.source_start},${hunk.source_length} |
|
210 | 213 | +${hunk.target_start},${hunk.target_length} |
|
211 | 214 | ${hunk.section_header} |
|
212 | 215 | </td> |
|
213 | 216 | </tr> |
|
214 | 217 | ${render_hunk_lines(c.user_session_attrs["diffmode"], hunk, use_comments=use_comments, inline_comments=inline_comments)} |
|
215 | 218 | % endfor |
|
216 | 219 | |
|
217 | 220 | <% unmatched_comments = (inline_comments or {}).get(filediff.patch['filename'], {}) %> |
|
218 | 221 | |
|
219 | 222 | ## outdated comments that do not fit into currently displayed lines |
|
220 | 223 | % for lineno, comments in unmatched_comments.items(): |
|
221 | 224 | |
|
222 | 225 | %if c.user_session_attrs["diffmode"] == 'unified': |
|
223 | 226 | % if loop.index == 0: |
|
224 | 227 | <tr class="cb-hunk"> |
|
225 | 228 | <td colspan="3"></td> |
|
226 | 229 | <td> |
|
227 | 230 | <div> |
|
228 | 231 | ${_('Unmatched inline comments below')} |
|
229 | 232 | </div> |
|
230 | 233 | </td> |
|
231 | 234 | </tr> |
|
232 | 235 | % endif |
|
233 | 236 | <tr class="cb-line"> |
|
234 | 237 | <td class="cb-data cb-context"></td> |
|
235 | 238 | <td class="cb-lineno cb-context"></td> |
|
236 | 239 | <td class="cb-lineno cb-context"></td> |
|
237 | 240 | <td class="cb-content cb-context"> |
|
238 | 241 | ${inline_comments_container(comments, inline_comments)} |
|
239 | 242 | </td> |
|
240 | 243 | </tr> |
|
241 | 244 | %elif c.user_session_attrs["diffmode"] == 'sideside': |
|
242 | 245 | % if loop.index == 0: |
|
243 | 246 | <tr class="cb-comment-info"> |
|
244 | 247 | <td colspan="2"></td> |
|
245 | 248 | <td class="cb-line"> |
|
246 | 249 | <div> |
|
247 | 250 | ${_('Unmatched inline comments below')} |
|
248 | 251 | </div> |
|
249 | 252 | </td> |
|
250 | 253 | <td colspan="2"></td> |
|
251 | 254 | <td class="cb-line"> |
|
252 | 255 | <div> |
|
253 | 256 | ${_('Unmatched comments below')} |
|
254 | 257 | </div> |
|
255 | 258 | </td> |
|
256 | 259 | </tr> |
|
257 | 260 | % endif |
|
258 | 261 | <tr class="cb-line"> |
|
259 | 262 | <td class="cb-data cb-context"></td> |
|
260 | 263 | <td class="cb-lineno cb-context"></td> |
|
261 | 264 | <td class="cb-content cb-context"> |
|
262 | 265 | % if lineno.startswith('o'): |
|
263 | 266 | ${inline_comments_container(comments, inline_comments)} |
|
264 | 267 | % endif |
|
265 | 268 | </td> |
|
266 | 269 | |
|
267 | 270 | <td class="cb-data cb-context"></td> |
|
268 | 271 | <td class="cb-lineno cb-context"></td> |
|
269 | 272 | <td class="cb-content cb-context"> |
|
270 | 273 | % if lineno.startswith('n'): |
|
271 | 274 | ${inline_comments_container(comments, inline_comments)} |
|
272 | 275 | % endif |
|
273 | 276 | </td> |
|
274 | 277 | </tr> |
|
275 | 278 | %endif |
|
276 | 279 | |
|
277 | 280 | % endfor |
|
278 | 281 | |
|
279 | 282 | </table> |
|
280 | 283 | </div> |
|
281 | 284 | %endfor |
|
282 | 285 | |
|
283 | 286 | ## outdated comments that are made for a file that has been deleted |
|
284 | 287 | % for filename, comments_dict in (deleted_files_comments or {}).items(): |
|
285 | 288 | <% |
|
286 | 289 | display_state = 'display: none' |
|
287 | 290 | open_comments_in_file = [x for x in comments_dict['comments'] if x.outdated is False] |
|
288 | 291 | if open_comments_in_file: |
|
289 | 292 | display_state = '' |
|
290 | 293 | %> |
|
291 | 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 | 296 | <div class="filediff" data-f-path="${filename}" id="a_${h.FID(filediff.raw_id, filename)}"> |
|
294 | 297 | <label for="filediff-collapse-${id(filename)}" class="filediff-heading"> |
|
295 | 298 | <div class="filediff-collapse-indicator"></div> |
|
296 | 299 | <span class="pill"> |
|
297 | 300 | ## file was deleted |
|
298 | 301 | <strong>${filename}</strong> |
|
299 | 302 | </span> |
|
300 | 303 | <span class="pill-group" style="float: left"> |
|
301 | 304 | ## file op, doesn't need translation |
|
302 | 305 | <span class="pill" op="removed">removed in this version</span> |
|
303 | 306 | </span> |
|
304 | 307 | <a class="pill filediff-anchor" href="#a_${h.FID(filediff.raw_id, filename)}">ΒΆ</a> |
|
305 | 308 | <span class="pill-group" style="float: right"> |
|
306 | 309 | <span class="pill" op="deleted">-${comments_dict['stats']}</span> |
|
307 | 310 | </span> |
|
308 | 311 | </label> |
|
309 | 312 | |
|
310 | 313 | <table class="cb cb-diff-${c.user_session_attrs["diffmode"]} code-highlight ${over_lines_changed_limit and 'cb-collapsed' or ''}"> |
|
311 | 314 | <tr> |
|
312 | 315 | % if c.user_session_attrs["diffmode"] == 'unified': |
|
313 | 316 | <td></td> |
|
314 | 317 | %endif |
|
315 | 318 | |
|
316 | 319 | <td></td> |
|
317 | 320 | <td class="cb-text cb-${op_class(BIN_FILENODE)}" ${(c.user_session_attrs["diffmode"] == 'unified' and 'colspan=4' or 'colspan=5')}> |
|
318 | 321 | ${_('File was deleted in this version. There are still outdated/unresolved comments attached to it.')} |
|
319 | 322 | </td> |
|
320 | 323 | </tr> |
|
321 | 324 | %if c.user_session_attrs["diffmode"] == 'unified': |
|
322 | 325 | <tr class="cb-line"> |
|
323 | 326 | <td class="cb-data cb-context"></td> |
|
324 | 327 | <td class="cb-lineno cb-context"></td> |
|
325 | 328 | <td class="cb-lineno cb-context"></td> |
|
326 | 329 | <td class="cb-content cb-context"> |
|
327 | 330 | ${inline_comments_container(comments_dict['comments'], inline_comments)} |
|
328 | 331 | </td> |
|
329 | 332 | </tr> |
|
330 | 333 | %elif c.user_session_attrs["diffmode"] == 'sideside': |
|
331 | 334 | <tr class="cb-line"> |
|
332 | 335 | <td class="cb-data cb-context"></td> |
|
333 | 336 | <td class="cb-lineno cb-context"></td> |
|
334 | 337 | <td class="cb-content cb-context"></td> |
|
335 | 338 | |
|
336 | 339 | <td class="cb-data cb-context"></td> |
|
337 | 340 | <td class="cb-lineno cb-context"></td> |
|
338 | 341 | <td class="cb-content cb-context"> |
|
339 | 342 | ${inline_comments_container(comments_dict['comments'], inline_comments)} |
|
340 | 343 | </td> |
|
341 | 344 | </tr> |
|
342 | 345 | %endif |
|
343 | 346 | </table> |
|
344 | 347 | </div> |
|
345 | 348 | </div> |
|
346 | 349 | % endfor |
|
347 | 350 | |
|
348 | 351 | </div> |
|
349 | 352 | </div> |
|
350 | 353 | </%def> |
|
351 | 354 | |
|
352 | 355 | <%def name="diff_ops(filediff)"> |
|
353 | 356 | <% |
|
354 | 357 | from rhodecode.lib.diffs import NEW_FILENODE, DEL_FILENODE, \ |
|
355 | 358 | MOD_FILENODE, RENAMED_FILENODE, CHMOD_FILENODE, BIN_FILENODE, COPIED_FILENODE |
|
356 | 359 | %> |
|
357 | 360 | <span class="pill"> |
|
358 | 361 | %if filediff.source_file_path and filediff.target_file_path: |
|
359 | 362 | %if filediff.source_file_path != filediff.target_file_path: |
|
360 | 363 | ## file was renamed, or copied |
|
361 | 364 | %if RENAMED_FILENODE in filediff.patch['stats']['ops']: |
|
362 | 365 | <strong>${filediff.target_file_path}</strong> β¬ <del>${filediff.source_file_path}</del> |
|
363 | 366 | <% final_path = filediff.target_file_path %> |
|
364 | 367 | %elif COPIED_FILENODE in filediff.patch['stats']['ops']: |
|
365 | 368 | <strong>${filediff.target_file_path}</strong> β¬ ${filediff.source_file_path} |
|
366 | 369 | <% final_path = filediff.target_file_path %> |
|
367 | 370 | %endif |
|
368 | 371 | %else: |
|
369 | 372 | ## file was modified |
|
370 | 373 | <strong>${filediff.source_file_path}</strong> |
|
371 | 374 | <% final_path = filediff.source_file_path %> |
|
372 | 375 | %endif |
|
373 | 376 | %else: |
|
374 | 377 | %if filediff.source_file_path: |
|
375 | 378 | ## file was deleted |
|
376 | 379 | <strong>${filediff.source_file_path}</strong> |
|
377 | 380 | <% final_path = filediff.source_file_path %> |
|
378 | 381 | %else: |
|
379 | 382 | ## file was added |
|
380 | 383 | <strong>${filediff.target_file_path}</strong> |
|
381 | 384 | <% final_path = filediff.target_file_path %> |
|
382 | 385 | %endif |
|
383 | 386 | %endif |
|
384 | 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 | 388 | </span> |
|
386 | 389 | ## anchor link |
|
387 | 390 | <a class="pill filediff-anchor" href="#a_${h.FID(filediff.raw_id, filediff.patch['filename'])}">ΒΆ</a> |
|
388 | 391 | |
|
389 | 392 | <span class="pill-group" style="float: right"> |
|
390 | 393 | |
|
391 | 394 | ## ops pills |
|
392 | 395 | %if filediff.limited_diff: |
|
393 | 396 | <span class="pill tooltip" op="limited" title="The stats for this diff are not complete">limited diff</span> |
|
394 | 397 | %endif |
|
395 | 398 | |
|
396 | 399 | %if NEW_FILENODE in filediff.patch['stats']['ops']: |
|
397 | 400 | <span class="pill" op="created">created</span> |
|
398 | 401 | %if filediff['target_mode'].startswith('120'): |
|
399 | 402 | <span class="pill" op="symlink">symlink</span> |
|
400 | 403 | %else: |
|
401 | 404 | <span class="pill" op="mode">${nice_mode(filediff['target_mode'])}</span> |
|
402 | 405 | %endif |
|
403 | 406 | %endif |
|
404 | 407 | |
|
405 | 408 | %if RENAMED_FILENODE in filediff.patch['stats']['ops']: |
|
406 | 409 | <span class="pill" op="renamed">renamed</span> |
|
407 | 410 | %endif |
|
408 | 411 | |
|
409 | 412 | %if COPIED_FILENODE in filediff.patch['stats']['ops']: |
|
410 | 413 | <span class="pill" op="copied">copied</span> |
|
411 | 414 | %endif |
|
412 | 415 | |
|
413 | 416 | %if DEL_FILENODE in filediff.patch['stats']['ops']: |
|
414 | 417 | <span class="pill" op="removed">removed</span> |
|
415 | 418 | %endif |
|
416 | 419 | |
|
417 | 420 | %if CHMOD_FILENODE in filediff.patch['stats']['ops']: |
|
418 | 421 | <span class="pill" op="mode"> |
|
419 | 422 | ${nice_mode(filediff['source_mode'])} β‘ ${nice_mode(filediff['target_mode'])} |
|
420 | 423 | </span> |
|
421 | 424 | %endif |
|
422 | 425 | |
|
423 | 426 | %if BIN_FILENODE in filediff.patch['stats']['ops']: |
|
424 | 427 | <span class="pill" op="binary">binary</span> |
|
425 | 428 | %if MOD_FILENODE in filediff.patch['stats']['ops']: |
|
426 | 429 | <span class="pill" op="modified">modified</span> |
|
427 | 430 | %endif |
|
428 | 431 | %endif |
|
429 | 432 | |
|
430 | 433 | <span class="pill" op="added">${('+' if filediff.patch['stats']['added'] else '')}${filediff.patch['stats']['added']}</span> |
|
431 | 434 | <span class="pill" op="deleted">${((h.safe_int(filediff.patch['stats']['deleted']) or 0) * -1)}</span> |
|
432 | 435 | |
|
433 | 436 | </span> |
|
434 | 437 | |
|
435 | 438 | </%def> |
|
436 | 439 | |
|
437 | 440 | <%def name="nice_mode(filemode)"> |
|
438 | 441 | ${(filemode.startswith('100') and filemode[3:] or filemode)} |
|
439 | 442 | </%def> |
|
440 | 443 | |
|
441 | 444 | <%def name="diff_menu(filediff, use_comments=False)"> |
|
442 | 445 | <div class="filediff-menu"> |
|
443 | 446 | %if filediff.diffset.source_ref: |
|
444 | 447 | %if filediff.operation in ['D', 'M']: |
|
445 | 448 | <a |
|
446 | 449 | class="tooltip" |
|
447 | 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 | 451 | title="${h.tooltip(_('Show file at commit: %(commit_id)s') % {'commit_id': filediff.diffset.source_ref[:12]})}" |
|
449 | 452 | > |
|
450 | 453 | ${_('Show file before')} |
|
451 | 454 | </a> | |
|
452 | 455 | %else: |
|
453 | 456 | <span |
|
454 | 457 | class="tooltip" |
|
455 | 458 | title="${h.tooltip(_('File no longer present at commit: %(commit_id)s') % {'commit_id': filediff.diffset.source_ref[:12]})}" |
|
456 | 459 | > |
|
457 | 460 | ${_('Show file before')} |
|
458 | 461 | </span> | |
|
459 | 462 | %endif |
|
460 | 463 | %if filediff.operation in ['A', 'M']: |
|
461 | 464 | <a |
|
462 | 465 | class="tooltip" |
|
463 | 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 | 467 | title="${h.tooltip(_('Show file at commit: %(commit_id)s') % {'commit_id': filediff.diffset.target_ref[:12]})}" |
|
465 | 468 | > |
|
466 | 469 | ${_('Show file after')} |
|
467 | 470 | </a> | |
|
468 | 471 | %else: |
|
469 | 472 | <span |
|
470 | 473 | class="tooltip" |
|
471 | 474 | title="${h.tooltip(_('File no longer present at commit: %(commit_id)s') % {'commit_id': filediff.diffset.target_ref[:12]})}" |
|
472 | 475 | > |
|
473 | 476 | ${_('Show file after')} |
|
474 | 477 | </span> | |
|
475 | 478 | %endif |
|
476 | 479 | <a |
|
477 | 480 | class="tooltip" |
|
478 | 481 | title="${h.tooltip(_('Raw diff'))}" |
|
479 | 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 | 484 | ${_('Raw diff')} |
|
482 | 485 | </a> | |
|
483 | 486 | <a |
|
484 | 487 | class="tooltip" |
|
485 | 488 | title="${h.tooltip(_('Download diff'))}" |
|
486 | 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 | 491 | ${_('Download diff')} |
|
489 | 492 | </a> |
|
490 | 493 | % if use_comments: |
|
491 | 494 | | |
|
492 | 495 | % endif |
|
493 | 496 | |
|
494 | 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 | 498 | %if hasattr(c, 'ignorews_url'): |
|
496 | 499 | ${c.ignorews_url(request, h.FID(filediff.raw_id, filediff.patch['filename']))} |
|
497 | 500 | %endif |
|
498 | 501 | %if hasattr(c, 'context_url'): |
|
499 | 502 | ${c.context_url(request, h.FID(filediff.raw_id, filediff.patch['filename']))} |
|
500 | 503 | %endif |
|
501 | 504 | |
|
502 | 505 | %if use_comments: |
|
503 | 506 | <a href="#" onclick="return Rhodecode.comments.toggleComments(this);"> |
|
504 | 507 | <span class="show-comment-button">${_('Show comments')}</span><span class="hide-comment-button">${_('Hide comments')}</span> |
|
505 | 508 | </a> |
|
506 | 509 | %endif |
|
507 | 510 | %endif |
|
508 | 511 | </div> |
|
509 | 512 | </%def> |
|
510 | 513 | |
|
511 | 514 | |
|
512 | 515 | <%def name="inline_comments_container(comments, inline_comments)"> |
|
513 | 516 | <div class="inline-comments"> |
|
514 | 517 | %for comment in comments: |
|
515 | 518 | ${commentblock.comment_block(comment, inline=True)} |
|
516 | 519 | %endfor |
|
517 | 520 | % if comments and comments[-1].outdated: |
|
518 | 521 | <span class="btn btn-secondary cb-comment-add-button comment-outdated}" |
|
519 | 522 | style="display: none;}"> |
|
520 | 523 | ${_('Add another comment')} |
|
521 | 524 | </span> |
|
522 | 525 | % else: |
|
523 | 526 | <span onclick="return Rhodecode.comments.createComment(this)" |
|
524 | 527 | class="btn btn-secondary cb-comment-add-button"> |
|
525 | 528 | ${_('Add another comment')} |
|
526 | 529 | </span> |
|
527 | 530 | % endif |
|
528 | 531 | |
|
529 | 532 | </div> |
|
530 | 533 | </%def> |
|
531 | 534 | |
|
532 | 535 | <%! |
|
533 | 536 | def get_comments_for(diff_type, comments, filename, line_version, line_number): |
|
534 | 537 | if hasattr(filename, 'unicode_path'): |
|
535 | 538 | filename = filename.unicode_path |
|
536 | 539 | |
|
537 | 540 | if not isinstance(filename, basestring): |
|
538 | 541 | return None |
|
539 | 542 | |
|
540 | 543 | line_key = '{}{}'.format(line_version, line_number) ## e.g o37, n12 |
|
541 | 544 | |
|
542 | 545 | if comments and filename in comments: |
|
543 | 546 | file_comments = comments[filename] |
|
544 | 547 | if line_key in file_comments: |
|
545 | 548 | data = file_comments.pop(line_key) |
|
546 | 549 | return data |
|
547 | 550 | %> |
|
548 | 551 | |
|
549 | 552 | <%def name="render_hunk_lines_sideside(hunk, use_comments=False, inline_comments=None)"> |
|
550 | 553 | |
|
551 | 554 | %for i, line in enumerate(hunk.sideside): |
|
552 | 555 | <% |
|
553 | 556 | old_line_anchor, new_line_anchor = None, None |
|
554 | 557 | if line.original.lineno: |
|
555 | 558 | old_line_anchor = diff_line_anchor(hunk.source_file_path, line.original.lineno, 'o') |
|
556 | 559 | if line.modified.lineno: |
|
557 | 560 | new_line_anchor = diff_line_anchor(hunk.target_file_path, line.modified.lineno, 'n') |
|
558 | 561 | %> |
|
559 | 562 | |
|
560 | 563 | <tr class="cb-line"> |
|
561 | 564 | <td class="cb-data ${action_class(line.original.action)}" |
|
562 | 565 | data-line-no="${line.original.lineno}" |
|
563 | 566 | > |
|
564 | 567 | <div> |
|
565 | 568 | |
|
566 | 569 | <% line_old_comments = None %> |
|
567 | 570 | %if line.original.get_comment_args: |
|
568 | 571 | <% line_old_comments = get_comments_for('side-by-side', inline_comments, *line.original.get_comment_args) %> |
|
569 | 572 | %endif |
|
570 | 573 | %if line_old_comments: |
|
571 | 574 | <% has_outdated = any([x.outdated for x in line_old_comments]) %> |
|
572 | 575 | % if has_outdated: |
|
573 | 576 | <i title="${_('comments including outdated')}:${len(line_old_comments)}" class="icon-comment_toggle" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> |
|
574 | 577 | % else: |
|
575 | 578 | <i title="${_('comments')}: ${len(line_old_comments)}" class="icon-comment" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> |
|
576 | 579 | % endif |
|
577 | 580 | %endif |
|
578 | 581 | </div> |
|
579 | 582 | </td> |
|
580 | 583 | <td class="cb-lineno ${action_class(line.original.action)}" |
|
581 | 584 | data-line-no="${line.original.lineno}" |
|
582 | 585 | %if old_line_anchor: |
|
583 | 586 | id="${old_line_anchor}" |
|
584 | 587 | %endif |
|
585 | 588 | > |
|
586 | 589 | %if line.original.lineno: |
|
587 | 590 | <a name="${old_line_anchor}" href="#${old_line_anchor}">${line.original.lineno}</a> |
|
588 | 591 | %endif |
|
589 | 592 | </td> |
|
590 | 593 | <td class="cb-content ${action_class(line.original.action)}" |
|
591 | 594 | data-line-no="o${line.original.lineno}" |
|
592 | 595 | > |
|
593 | 596 | %if use_comments and line.original.lineno: |
|
594 | 597 | ${render_add_comment_button()} |
|
595 | 598 | %endif |
|
596 | 599 | <span class="cb-code">${line.original.action} ${line.original.content or '' | n}</span> |
|
597 | 600 | |
|
598 | 601 | %if use_comments and line.original.lineno and line_old_comments: |
|
599 | 602 | ${inline_comments_container(line_old_comments, inline_comments)} |
|
600 | 603 | %endif |
|
601 | 604 | |
|
602 | 605 | </td> |
|
603 | 606 | <td class="cb-data ${action_class(line.modified.action)}" |
|
604 | 607 | data-line-no="${line.modified.lineno}" |
|
605 | 608 | > |
|
606 | 609 | <div> |
|
607 | 610 | |
|
608 | 611 | %if line.modified.get_comment_args: |
|
609 | 612 | <% line_new_comments = get_comments_for('side-by-side', inline_comments, *line.modified.get_comment_args) %> |
|
610 | 613 | %else: |
|
611 | 614 | <% line_new_comments = None%> |
|
612 | 615 | %endif |
|
613 | 616 | %if line_new_comments: |
|
614 | 617 | <% has_outdated = any([x.outdated for x in line_new_comments]) %> |
|
615 | 618 | % if has_outdated: |
|
616 | 619 | <i title="${_('comments including outdated')}:${len(line_new_comments)}" class="icon-comment_toggle" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> |
|
617 | 620 | % else: |
|
618 | 621 | <i title="${_('comments')}: ${len(line_new_comments)}" class="icon-comment" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> |
|
619 | 622 | % endif |
|
620 | 623 | %endif |
|
621 | 624 | </div> |
|
622 | 625 | </td> |
|
623 | 626 | <td class="cb-lineno ${action_class(line.modified.action)}" |
|
624 | 627 | data-line-no="${line.modified.lineno}" |
|
625 | 628 | %if new_line_anchor: |
|
626 | 629 | id="${new_line_anchor}" |
|
627 | 630 | %endif |
|
628 | 631 | > |
|
629 | 632 | %if line.modified.lineno: |
|
630 | 633 | <a name="${new_line_anchor}" href="#${new_line_anchor}">${line.modified.lineno}</a> |
|
631 | 634 | %endif |
|
632 | 635 | </td> |
|
633 | 636 | <td class="cb-content ${action_class(line.modified.action)}" |
|
634 | 637 | data-line-no="n${line.modified.lineno}" |
|
635 | 638 | > |
|
636 | 639 | %if use_comments and line.modified.lineno: |
|
637 | 640 | ${render_add_comment_button()} |
|
638 | 641 | %endif |
|
639 | 642 | <span class="cb-code">${line.modified.action} ${line.modified.content or '' | n}</span> |
|
640 | 643 | %if use_comments and line.modified.lineno and line_new_comments: |
|
641 | 644 | ${inline_comments_container(line_new_comments, inline_comments)} |
|
642 | 645 | %endif |
|
643 | 646 | </td> |
|
644 | 647 | </tr> |
|
645 | 648 | %endfor |
|
646 | 649 | </%def> |
|
647 | 650 | |
|
648 | 651 | |
|
649 | 652 | <%def name="render_hunk_lines_unified(hunk, use_comments=False, inline_comments=None)"> |
|
650 | 653 | %for old_line_no, new_line_no, action, content, comments_args in hunk.unified: |
|
651 | 654 | <% |
|
652 | 655 | old_line_anchor, new_line_anchor = None, None |
|
653 | 656 | if old_line_no: |
|
654 | 657 | old_line_anchor = diff_line_anchor(hunk.source_file_path, old_line_no, 'o') |
|
655 | 658 | if new_line_no: |
|
656 | 659 | new_line_anchor = diff_line_anchor(hunk.target_file_path, new_line_no, 'n') |
|
657 | 660 | %> |
|
658 | 661 | <tr class="cb-line"> |
|
659 | 662 | <td class="cb-data ${action_class(action)}"> |
|
660 | 663 | <div> |
|
661 | 664 | |
|
662 | 665 | %if comments_args: |
|
663 | 666 | <% comments = get_comments_for('unified', inline_comments, *comments_args) %> |
|
664 | 667 | %else: |
|
665 | 668 | <% comments = None %> |
|
666 | 669 | %endif |
|
667 | 670 | |
|
668 | 671 | % if comments: |
|
669 | 672 | <% has_outdated = any([x.outdated for x in comments]) %> |
|
670 | 673 | % if has_outdated: |
|
671 | 674 | <i title="${_('comments including outdated')}:${len(comments)}" class="icon-comment_toggle" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> |
|
672 | 675 | % else: |
|
673 | 676 | <i title="${_('comments')}: ${len(comments)}" class="icon-comment" onclick="return Rhodecode.comments.toggleLineComments(this)"></i> |
|
674 | 677 | % endif |
|
675 | 678 | % endif |
|
676 | 679 | </div> |
|
677 | 680 | </td> |
|
678 | 681 | <td class="cb-lineno ${action_class(action)}" |
|
679 | 682 | data-line-no="${old_line_no}" |
|
680 | 683 | %if old_line_anchor: |
|
681 | 684 | id="${old_line_anchor}" |
|
682 | 685 | %endif |
|
683 | 686 | > |
|
684 | 687 | %if old_line_anchor: |
|
685 | 688 | <a name="${old_line_anchor}" href="#${old_line_anchor}">${old_line_no}</a> |
|
686 | 689 | %endif |
|
687 | 690 | </td> |
|
688 | 691 | <td class="cb-lineno ${action_class(action)}" |
|
689 | 692 | data-line-no="${new_line_no}" |
|
690 | 693 | %if new_line_anchor: |
|
691 | 694 | id="${new_line_anchor}" |
|
692 | 695 | %endif |
|
693 | 696 | > |
|
694 | 697 | %if new_line_anchor: |
|
695 | 698 | <a name="${new_line_anchor}" href="#${new_line_anchor}">${new_line_no}</a> |
|
696 | 699 | %endif |
|
697 | 700 | </td> |
|
698 | 701 | <td class="cb-content ${action_class(action)}" |
|
699 | 702 | data-line-no="${(new_line_no and 'n' or 'o')}${(new_line_no or old_line_no)}" |
|
700 | 703 | > |
|
701 | 704 | %if use_comments: |
|
702 | 705 | ${render_add_comment_button()} |
|
703 | 706 | %endif |
|
704 | 707 | <span class="cb-code">${action} ${content or '' | n}</span> |
|
705 | 708 | %if use_comments and comments: |
|
706 | 709 | ${inline_comments_container(comments, inline_comments)} |
|
707 | 710 | %endif |
|
708 | 711 | </td> |
|
709 | 712 | </tr> |
|
710 | 713 | %endfor |
|
711 | 714 | </%def> |
|
712 | 715 | |
|
713 | 716 | |
|
714 | 717 | <%def name="render_hunk_lines(diff_mode, hunk, use_comments, inline_comments)"> |
|
715 | 718 | % if diff_mode == 'unified': |
|
716 | 719 | ${render_hunk_lines_unified(hunk, use_comments=use_comments, inline_comments=inline_comments)} |
|
717 | 720 | % elif diff_mode == 'sideside': |
|
718 | 721 | ${render_hunk_lines_sideside(hunk, use_comments=use_comments, inline_comments=inline_comments)} |
|
719 | 722 | % else: |
|
720 | 723 | <tr class="cb-line"> |
|
721 | 724 | <td>unknown diff mode</td> |
|
722 | 725 | </tr> |
|
723 | 726 | % endif |
|
724 | 727 | </%def>file changes |
|
725 | 728 | |
|
726 | 729 | |
|
727 | 730 | <%def name="render_add_comment_button()"> |
|
728 | 731 | <button class="btn btn-small btn-primary cb-comment-box-opener" onclick="return Rhodecode.comments.createComment(this)"> |
|
729 | 732 | <span><i class="icon-comment"></i></span> |
|
730 | 733 | </button> |
|
731 | 734 | </%def> |
|
732 | 735 | |
|
733 | 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 | 741 | <div class="pull-right"> |
|
737 | 742 | <div class="btn-group"> |
|
738 | 743 | |
|
739 | 744 | <a |
|
740 | 745 | class="btn ${(c.user_session_attrs["diffmode"] == 'sideside' and 'btn-primary')} tooltip" |
|
741 | 746 | title="${h.tooltip(_('View side by side'))}" |
|
742 | 747 | href="${h.current_route_path(request, diffmode='sideside')}"> |
|
743 | 748 | <span>${_('Side by Side')}</span> |
|
744 | 749 | </a> |
|
745 | 750 | <a |
|
746 | 751 | class="btn ${(c.user_session_attrs["diffmode"] == 'unified' and 'btn-primary')} tooltip" |
|
747 | 752 | title="${h.tooltip(_('View unified'))}" href="${h.current_route_path(request, diffmode='unified')}"> |
|
748 | 753 | <span>${_('Unified')}</span> |
|
749 | 754 | </a> |
|
750 | 755 | % if range_diff_on is True: |
|
751 | 756 | <a |
|
752 | 757 | title="${_('Turn off: Show the diff as commit range')}" |
|
753 | 758 | class="btn btn-primary" |
|
754 | 759 | href="${h.current_route_path(request, **{"range-diff":"0"})}"> |
|
755 | 760 | <span>${_('Range Diff')}</span> |
|
756 | 761 | </a> |
|
757 | 762 | % elif range_diff_on is False: |
|
758 | 763 | <a |
|
759 | 764 | title="${_('Show the diff as commit range')}" |
|
760 | 765 | class="btn" |
|
761 | 766 | href="${h.current_route_path(request, **{"range-diff":"1"})}"> |
|
762 | 767 | <span>${_('Range Diff')}</span> |
|
763 | 768 | </a> |
|
764 | 769 | % endif |
|
765 | 770 | </div> |
|
766 | 771 | </div> |
|
767 | ||
|
768 | 772 | <div class="pull-left"> |
|
769 | 773 | <div class="btn-group"> |
|
770 | 774 | <div class="pull-left"> |
|
771 | 775 | ${h.hidden('file_filter')} |
|
772 | 776 | </div> |
|
773 | 777 | <a |
|
774 | 778 | class="btn" |
|
775 | 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 | 785 | <a |
|
778 | 786 | class="btn" |
|
779 | 787 | href="#" |
|
780 | onclick="$('input[class=filediff-collapse-state]').prop('checked', true); return false">${_('Collapse All Files')}</a> | |
|
781 | <a | |
|
782 | class="btn" | |
|
783 | href="#" | |
|
784 | onclick="return Rhodecode.comments.toggleWideMode(this)">${_('Wide Mode Diff')}</a> | |
|
788 | onclick="updateSticky();return Rhodecode.comments.toggleWideMode(this)">${_('Wide Mode Diff')}</a> | |
|
785 | 789 | |
|
786 | 790 | </div> |
|
787 | 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 | 800 | </div> |
|
789 | 801 | |
|
790 | 802 | % if diffset: |
|
791 | 803 | |
|
792 | 804 | %if diffset.limited_diff: |
|
793 | 805 | <% file_placeholder = _ungettext('%(num)s file changed', '%(num)s files changed', diffset.changed_files) % {'num': diffset.changed_files}%> |
|
794 | 806 | %else: |
|
795 | 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 | 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 | 814 | <script> |
|
799 | 815 | |
|
800 | 816 | var feedFilesOptions = function (query, initialData) { |
|
801 | 817 | var data = {results: []}; |
|
802 | 818 | var isQuery = typeof query.term !== 'undefined'; |
|
803 | 819 | |
|
804 | 820 | var section = _gettext('Changed files'); |
|
805 | 821 | var filteredData = []; |
|
806 | 822 | |
|
807 | 823 | //filter results |
|
808 | 824 | $.each(initialData.results, function (idx, value) { |
|
809 | 825 | |
|
810 | 826 | if (!isQuery || query.term.length === 0 || value.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0) { |
|
811 | 827 | filteredData.push({ |
|
812 | 828 | 'id': this.id, |
|
813 | 829 | 'text': this.text, |
|
814 | 830 | "ops": this.ops, |
|
815 | 831 | }) |
|
816 | 832 | } |
|
817 | 833 | |
|
818 | 834 | }); |
|
819 | 835 | |
|
820 | 836 | data.results = filteredData; |
|
821 | 837 | |
|
822 | 838 | query.callback(data); |
|
823 | 839 | }; |
|
824 | 840 | |
|
825 | 841 | var formatFileResult = function(result, container, query, escapeMarkup) { |
|
826 | 842 | return function(data, escapeMarkup) { |
|
827 | 843 | var container = '<div class="filelist" style="padding-right:100px">{0}</div>'; |
|
828 | 844 | var tmpl = '<span style="margin-right:-50px"><strong>{0}</strong></span>'.format(escapeMarkup(data['text'])); |
|
829 | 845 | var pill = '<span class="pill-group" style="float: right;margin-right: -100px">' + |
|
830 | 846 | '<span class="pill" op="added">{0}</span>' + |
|
831 | 847 | '<span class="pill" op="deleted">{1}</span>' + |
|
832 | 848 | '</span>' |
|
833 | 849 | ; |
|
834 | 850 | var added = data['ops']['added']; |
|
835 | 851 | if (added === 0) { |
|
836 | 852 | // don't show +0 |
|
837 | 853 | added = 0; |
|
838 | 854 | } else { |
|
839 | 855 | added = '+' + added; |
|
840 | 856 | } |
|
841 | 857 | |
|
842 | 858 | var deleted = -1*data['ops']['deleted']; |
|
843 | 859 | |
|
844 | 860 | tmpl += pill.format(added, deleted); |
|
845 | 861 | return container.format(tmpl); |
|
846 | 862 | |
|
847 | 863 | }(result, escapeMarkup); |
|
848 | 864 | }; |
|
849 | 865 | var preloadData = { |
|
850 | 866 | results: [ |
|
851 | 867 | % for filediff in diffset.files: |
|
852 | 868 | {id:"a_${h.FID(filediff.raw_id, filediff.patch['filename'])}", |
|
853 | 869 | text:"${filediff.patch['filename']}", |
|
854 | 870 | ops:${h.json.dumps(filediff.patch['stats'])|n}}${('' if loop.last else ',')} |
|
855 | 871 | % endfor |
|
856 | 872 | ] |
|
857 | 873 | }; |
|
858 | 874 | |
|
859 | $("#file_filter").select2({ | |
|
875 | $(document).ready(function () { | |
|
876 | ||
|
877 | var fileFilter = $("#file_filter").select2({ | |
|
860 | 878 | 'dropdownAutoWidth': true, |
|
861 | 879 | 'width': 'auto', |
|
862 | 880 | 'placeholder': "${file_placeholder}", |
|
863 | 881 | containerCssClass: "drop-menu", |
|
864 | 882 | dropdownCssClass: "drop-menu-dropdown", |
|
865 | 883 | data: preloadData, |
|
866 | 884 | query: function(query) { |
|
867 | 885 | feedFilesOptions(query, preloadData); |
|
868 | 886 | }, |
|
869 | 887 | formatResult: formatFileResult |
|
870 | 888 | }); |
|
889 | % if range_diff_on is True: | |
|
890 | fileFilter.select2("enable", false); | |
|
891 | ||
|
892 | % endif | |
|
871 | 893 | |
|
872 | 894 | $("#file_filter").on('click', function (e) { |
|
873 | 895 | e.preventDefault(); |
|
874 | 896 | var selected = $('#file_filter').select2('data'); |
|
875 | 897 | var idSelector = "#"+selected.id; |
|
876 | 898 | window.location.hash = idSelector; |
|
877 | 899 | // expand the container if we quick-select the field |
|
878 |
$(idSelector). |
|
|
879 | }) | |
|
900 | $(idSelector).next().prop('checked', false); | |
|
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 | 964 | </script> |
|
882 | 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