##// END OF EJS Templates
merge with default
marcink -
r3561:4a7b7c04 merge new-ui
parent child Browse files
Show More
@@ -0,0 +1,47 b''
1 |RCE| 4.16.1 |RNS|
2 ------------------
3
4 Release Date
5 ^^^^^^^^^^^^
6
7 - 2019-03-07
8
9
10 New Features
11 ^^^^^^^^^^^^
12
13
14
15 General
16 ^^^^^^^
17
18 - Docs: added missing reference for the user bookmarks feature.
19
20
21 Security
22 ^^^^^^^^
23
24 - Comments: prevent from allowing to resolve TODO comments across projects. In certain
25 conditions users could resolve TODOs not belonging to the same project.
26
27
28 Performance
29 ^^^^^^^^^^^
30
31
32
33 Fixes
34 ^^^^^
35
36 - Downloads: fixed archive links from file tree view.
37 - Markdown: fixed sanitization of checkbox extensions that removed "checked" attribute.
38 - Upgrade: fixed upgrades from older versions of RhodeCode.
39 - Pull Requests: handle non-ascii branches from short branch selector via URL.
40 - Hooks: fixed again unicode problems with new pull request link generator.
41
42
43
44 Upgrade notes
45 ^^^^^^^^^^^^^
46
47 - Scheduled release addressing problems in 4.16.X releases.
@@ -50,3 +50,4 b' 4b34ce0d2c3c10510626b3b65044939bb7a2cddf'
50 14502561d22e6b70613674cd675ae9a604b7989f v4.15.1
50 14502561d22e6b70613674cd675ae9a604b7989f v4.15.1
51 4aaa40b605b01af78a9f6882eca561c54b525ef0 v4.15.2
51 4aaa40b605b01af78a9f6882eca561c54b525ef0 v4.15.2
52 797744642eca86640ed20bef2cd77445780abaec v4.16.0
52 797744642eca86640ed20bef2cd77445780abaec v4.16.0
53 6c3452c7c25ed35ff269690929e11960ed6ad7d3 v4.16.1
@@ -53,3 +53,12 b' web-build:'
53
53
54 generate-pkgs:
54 generate-pkgs:
55 nix-shell pkgs/shell-generate.nix --command "pip2nix generate --licenses"
55 nix-shell pkgs/shell-generate.nix --command "pip2nix generate --licenses"
56
57 generate-js-pkgs:
58 rm -rf node_modules && \
59 nix-shell pkgs/shell-generate.nix --command "node2nix --input package.json -o pkgs/node-packages.nix -e pkgs/node-env.nix -c pkgs/node-default.nix -d --flatten --nodejs-8" && \
60 sed -i -e 's/http:\/\//https:\/\//g' pkgs/node-packages.nix
61
62 generate-license-meta:
63 nix-build pkgs/license-generate.nix -o result-license && \
64 cat result-license/licenses.json | python -m json.tool > rhodecode/config/licenses.json No newline at end of file
@@ -379,6 +379,10 b' rc_cache.cache_repo_longterm.max_size = '
379 beaker.session.type = file
379 beaker.session.type = file
380 beaker.session.data_dir = %(here)s/data/sessions
380 beaker.session.data_dir = %(here)s/data/sessions
381
381
382 ## redis sessions
383 #beaker.session.type = ext:redis
384 #beaker.session.url = redis://127.0.0.1:6379/2
385
382 ## db based session, fast, and allows easy management over logged in users
386 ## db based session, fast, and allows easy management over logged in users
383 #beaker.session.type = ext:database
387 #beaker.session.type = ext:database
384 #beaker.session.table_name = db_session
388 #beaker.session.table_name = db_session
@@ -354,6 +354,10 b' rc_cache.cache_repo_longterm.max_size = '
354 beaker.session.type = file
354 beaker.session.type = file
355 beaker.session.data_dir = %(here)s/data/sessions
355 beaker.session.data_dir = %(here)s/data/sessions
356
356
357 ## redis sessions
358 #beaker.session.type = ext:redis
359 #beaker.session.url = redis://127.0.0.1:6379/2
360
357 ## db based session, fast, and allows easy management over logged in users
361 ## db based session, fast, and allows easy management over logged in users
358 #beaker.session.type = ext:database
362 #beaker.session.type = ext:database
359 #beaker.session.table_name = db_session
363 #beaker.session.table_name = db_session
@@ -239,3 +239,26 b' following URL: ``{instance-URL}/_admin/p'
239
239
240 .. _Markdown: http://daringfireball.net/projects/markdown/
240 .. _Markdown: http://daringfireball.net/projects/markdown/
241 .. _reStructured Text: http://docutils.sourceforge.net/docs/index.html
241 .. _reStructured Text: http://docutils.sourceforge.net/docs/index.html
242
243
244 Unarchiving a repository
245 ^^^^^^^^^^^^^^^^^^^^^^^^^
246
247 Archive operation for the repository is similar as delete. Archive keeps the data for future references
248 but makes the repository read-only. After archiving the repository it shouldn't be modified in any way.
249 This is why repository settings are disabled for an archived repository.
250
251 If there's a need for unarchiving a repository for some reasons, the interactive
252 ishell interface should be used.
253
254 .. code-block:: bash
255
256 # Open iShell from the terminal
257 $ rccontrol ishell enterprise-1/community-1
258
259 .. code-block:: python
260
261 # Set repository as un-archived
262 In [1]: repo = Repository.get_by_repo_name('SOME_REPO_NAME')
263 In [2]: repo.archived = False
264 In [3]: Session().add(repo);Session().commit()
@@ -66,14 +66,18 b' Below config if for an Apache Reverse Pr'
66 # Directive to properly generate url (clone url) for RhodeCode
66 # Directive to properly generate url (clone url) for RhodeCode
67 ProxyPreserveHost On
67 ProxyPreserveHost On
68
68
69 # It allows request bodies to be sent to the backend using chunked transfer encoding.
70 SetEnv proxy-sendchunked 1
71
72 # Increase headers size for large Mercurial headers sent with many branches
73 LimitRequestLine 16380
74
69 # Url to running RhodeCode instance. This is shown as `- URL:` when
75 # Url to running RhodeCode instance. This is shown as `- URL:` when
70 # running rccontrol status.
76 # running rccontrol status.
77
71 ProxyPass / http://127.0.0.1:10002/ timeout=7200 Keepalive=On
78 ProxyPass / http://127.0.0.1:10002/ timeout=7200 Keepalive=On
72 ProxyPassReverse / http://127.0.0.1:10002/
79 ProxyPassReverse / http://127.0.0.1:10002/
73
80
74 # Increase headers for large Mercurial headers
75 LimitRequestLine 16380
76
77 # strict http prevents from https -> http downgrade
81 # strict http prevents from https -> http downgrade
78 Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
82 Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
79
83
@@ -9,6 +9,7 b' Release Notes'
9 .. toctree::
9 .. toctree::
10 :maxdepth: 1
10 :maxdepth: 1
11
11
12 release-notes-4.16.1.rst
12 release-notes-4.16.0.rst
13 release-notes-4.16.0.rst
13 release-notes-4.15.2.rst
14 release-notes-4.15.2.rst
14 release-notes-4.15.1.rst
15 release-notes-4.15.1.rst
This diff has been collapsed as it changes many lines, (595 lines changed) Show them Hide them
@@ -166,13 +166,13 b' let'
166 sha512 = "dgOe12GyCF1VZBLUQqnzGWlf3xb255FajNCVB1VFj/AtskYtoamnafa7m3a+1vs+C8qbg4Benn5KwgxVDSW4cg==";
166 sha512 = "dgOe12GyCF1VZBLUQqnzGWlf3xb255FajNCVB1VFj/AtskYtoamnafa7m3a+1vs+C8qbg4Benn5KwgxVDSW4cg==";
167 };
167 };
168 };
168 };
169 "@polymer/paper-spinner-3.0.1" = {
169 "@polymer/paper-spinner-3.0.2" = {
170 name = "_at_polymer_slash_paper-spinner";
170 name = "_at_polymer_slash_paper-spinner";
171 packageName = "@polymer/paper-spinner";
171 packageName = "@polymer/paper-spinner";
172 version = "3.0.1";
172 version = "3.0.2";
173 src = fetchurl {
173 src = fetchurl {
174 url = "https://registry.npmjs.org/@polymer/paper-spinner/-/paper-spinner-3.0.1.tgz";
174 url = "https://registry.npmjs.org/@polymer/paper-spinner/-/paper-spinner-3.0.2.tgz";
175 sha512 = "MYIU6qWZnhZ5yNFOBzROPgBteGfxKEnDZ6bCgjrvUtJkBuQEz0MQZzSE/zmZc0oaJ9u5QK5xAFuYdudsGv7+sQ==";
175 sha512 = "XUzu8/4NH+pnNZUTI2MxtOKFAr0EOsW7eGhTg3VBhTh7DDW/q3ewzwYRWnqNJokX9BEnxKMiXXaIeTEBq4k2dw==";
176 };
176 };
177 };
177 };
178 "@polymer/paper-styles-3.0.1" = {
178 "@polymer/paper-styles-3.0.1" = {
@@ -229,13 +229,13 b' let'
229 sha1 = "e7365648c1b42136a59c7d5040637b3b5c83b614";
229 sha1 = "e7365648c1b42136a59c7d5040637b3b5c83b614";
230 };
230 };
231 };
231 };
232 "@types/node-6.14.2" = {
232 "@types/node-6.14.3" = {
233 name = "_at_types_slash_node";
233 name = "_at_types_slash_node";
234 packageName = "@types/node";
234 packageName = "@types/node";
235 version = "6.14.2";
235 version = "6.14.3";
236 src = fetchurl {
236 src = fetchurl {
237 url = "https://registry.npmjs.org/@types/node/-/node-6.14.2.tgz";
237 url = "https://registry.npmjs.org/@types/node/-/node-6.14.3.tgz";
238 sha512 = "JWB3xaVfsfnFY8Ofc9rTB/op0fqqTSqy4vBcVk1LuRJvta7KTX+D//fCkiTMeLGhdr2EbFZzQjC97gvmPilk9Q==";
238 sha512 = "V2VrQBCKo4U0rni6tW4AASRDqIO5ZTLDN/Xzrm4mNBr9SGQYZ+7zZJn+hMs89Q8ZCIHzp4aWQPyCpK+rux1YGA==";
239 };
239 };
240 };
240 };
241 "@types/parse5-2.2.34" = {
241 "@types/parse5-2.2.34" = {
@@ -409,22 +409,22 b' let'
409 sha512 = "mJ3QKWtCchL1vhU/kZlJnLPuQZnlDOdZsyP0bbLWPGdYsQDnSBvyTLhzwBA3QAMlzEL9V4JHygEmK6/OTEyytA==";
409 sha512 = "mJ3QKWtCchL1vhU/kZlJnLPuQZnlDOdZsyP0bbLWPGdYsQDnSBvyTLhzwBA3QAMlzEL9V4JHygEmK6/OTEyytA==";
410 };
410 };
411 };
411 };
412 "@webcomponents/shadycss-1.7.1" = {
412 "@webcomponents/shadycss-1.9.0" = {
413 name = "_at_webcomponents_slash_shadycss";
413 name = "_at_webcomponents_slash_shadycss";
414 packageName = "@webcomponents/shadycss";
414 packageName = "@webcomponents/shadycss";
415 version = "1.7.1";
415 version = "1.9.0";
416 src = fetchurl {
416 src = fetchurl {
417 url = "https://registry.npmjs.org/@webcomponents/shadycss/-/shadycss-1.7.1.tgz";
417 url = "https://registry.npmjs.org/@webcomponents/shadycss/-/shadycss-1.9.0.tgz";
418 sha512 = "6SZqLajRPWL0rrKDZOGF8PCBq5B9JqgFmE5rX5psk6i8WrqiMkSCuO8+rnirzViTsU5CqnjQPFC3OvG4YJdMrQ==";
418 sha512 = "g8Xa+6RSEME4g/wLJW4YII0eq15rvXp76RxPAuv7hx+Bdoi7GzZJ/EoZOUfyIbqAsQbII1TcWD4/+Xhs5NcM1w==";
419 };
419 };
420 };
420 };
421 "@webcomponents/webcomponentsjs-2.2.1" = {
421 "@webcomponents/webcomponentsjs-2.2.7" = {
422 name = "_at_webcomponents_slash_webcomponentsjs";
422 name = "_at_webcomponents_slash_webcomponentsjs";
423 packageName = "@webcomponents/webcomponentsjs";
423 packageName = "@webcomponents/webcomponentsjs";
424 version = "2.2.1";
424 version = "2.2.7";
425 src = fetchurl {
425 src = fetchurl {
426 url = "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.2.1.tgz";
426 url = "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.2.7.tgz";
427 sha512 = "lZZ+Lkke6JhsJcQQqSVk1Pny6/8y4qhJ98LO7a/MwBSRO8WqHqK1X2vscfeL8vOnYGFnmBUyVG95lwYv/AXyLQ==";
427 sha512 = "kPPjzV+5kpoWpTniyvBSPcXS33f3j/C6HvNOJ3YecF3pvz3XwVeU4ammbxtVy/osF3z7hr1DYNptIf4oPEvXZA==";
428 };
428 };
429 };
429 };
430 "@xtuc/ieee754-1.2.0" = {
430 "@xtuc/ieee754-1.2.0" = {
@@ -499,22 +499,22 b' let'
499 sha1 = "82ffb02b29e662ae53bdc20af15947706739c536";
499 sha1 = "82ffb02b29e662ae53bdc20af15947706739c536";
500 };
500 };
501 };
501 };
502 "ajv-6.6.2" = {
502 "ajv-6.9.2" = {
503 name = "ajv";
503 name = "ajv";
504 packageName = "ajv";
504 packageName = "ajv";
505 version = "6.6.2";
505 version = "6.9.2";
506 src = fetchurl {
506 src = fetchurl {
507 url = "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz";
507 url = "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz";
508 sha512 = "FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==";
508 sha512 = "4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==";
509 };
509 };
510 };
510 };
511 "ajv-keywords-3.2.0" = {
511 "ajv-keywords-3.4.0" = {
512 name = "ajv-keywords";
512 name = "ajv-keywords";
513 packageName = "ajv-keywords";
513 packageName = "ajv-keywords";
514 version = "3.2.0";
514 version = "3.4.0";
515 src = fetchurl {
515 src = fetchurl {
516 url = "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz";
516 url = "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz";
517 sha1 = "e86b819c602cf8821ad637413698f1dec021847a";
517 sha512 = "aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==";
518 };
518 };
519 };
519 };
520 "align-text-0.1.4" = {
520 "align-text-0.1.4" = {
@@ -716,15 +716,6 b' let'
716 sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
716 sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
717 };
717 };
718 };
718 };
719 "arrify-1.0.1" = {
720 name = "arrify";
721 packageName = "arrify";
722 version = "1.0.1";
723 src = fetchurl {
724 url = "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz";
725 sha1 = "898508da2226f380df904728456849c1501a4b0d";
726 };
727 };
728 "asap-2.0.6" = {
719 "asap-2.0.6" = {
729 name = "asap";
720 name = "asap";
730 packageName = "asap";
721 packageName = "asap";
@@ -815,13 +806,13 b' let'
815 sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
806 sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
816 };
807 };
817 };
808 };
818 "async-2.6.1" = {
809 "async-2.6.2" = {
819 name = "async";
810 name = "async";
820 packageName = "async";
811 packageName = "async";
821 version = "2.6.1";
812 version = "2.6.2";
822 src = fetchurl {
813 src = fetchurl {
823 url = "https://registry.npmjs.org/async/-/async-2.6.1.tgz";
814 url = "https://registry.npmjs.org/async/-/async-2.6.2.tgz";
824 sha512 = "fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==";
815 sha512 = "H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==";
825 };
816 };
826 };
817 };
827 "async-each-1.0.1" = {
818 "async-each-1.0.1" = {
@@ -1445,13 +1436,13 b' let'
1445 sha512 = "vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==";
1436 sha512 = "vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==";
1446 };
1437 };
1447 };
1438 };
1448 "binary-extensions-1.12.0" = {
1439 "binary-extensions-1.13.0" = {
1449 name = "binary-extensions";
1440 name = "binary-extensions";
1450 packageName = "binary-extensions";
1441 packageName = "binary-extensions";
1451 version = "1.12.0";
1442 version = "1.13.0";
1452 src = fetchurl {
1443 src = fetchurl {
1453 url = "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz";
1444 url = "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz";
1454 sha512 = "DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==";
1445 sha512 = "EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==";
1455 };
1446 };
1456 };
1447 };
1457 "bluebird-3.5.3" = {
1448 "bluebird-3.5.3" = {
@@ -1679,22 +1670,22 b' let'
1679 sha1 = "b534e7c734c4f81ec5fbe8aca2ad24354b962c6c";
1670 sha1 = "b534e7c734c4f81ec5fbe8aca2ad24354b962c6c";
1680 };
1671 };
1681 };
1672 };
1682 "caniuse-db-1.0.30000927" = {
1673 "caniuse-db-1.0.30000939" = {
1683 name = "caniuse-db";
1674 name = "caniuse-db";
1684 packageName = "caniuse-db";
1675 packageName = "caniuse-db";
1685 version = "1.0.30000927";
1676 version = "1.0.30000939";
1686 src = fetchurl {
1677 src = fetchurl {
1687 url = "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000927.tgz";
1678 url = "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000939.tgz";
1688 sha512 = "CX/QvLA8oh7kQ9cHCCzFm0UZW4KwSyQSRJ5A1XtH42HaMJQ0yh+9fEVWagMqv9I1vSCtaqA5Mb8k0uKfv7jhDw==";
1679 sha512 = "nB5tLf3hOs+biXl1lhKjHRgNC0J1I7H52h/t1FP7qxARKKwpB0z+P/JewJLYAlxCBP/q7rxJzQzHHrQMl0viKg==";
1689 };
1680 };
1690 };
1681 };
1691 "caniuse-lite-1.0.30000927" = {
1682 "caniuse-lite-1.0.30000939" = {
1692 name = "caniuse-lite";
1683 name = "caniuse-lite";
1693 packageName = "caniuse-lite";
1684 packageName = "caniuse-lite";
1694 version = "1.0.30000927";
1685 version = "1.0.30000939";
1695 src = fetchurl {
1686 src = fetchurl {
1696 url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000927.tgz";
1687 url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000939.tgz";
1697 sha512 = "ogq4NbUWf1uG/j66k0AmiO3GjqJAlQyF8n4w8a954cbCyFKmYGvRtgz6qkq2fWuduTXHibX7GyYL5Pg58Aks2g==";
1688 sha512 = "oXB23ImDJOgQpGjRv1tCtzAvJr4/OvrHi5SO2vUgB0g0xpdZZoA/BxfImiWfdwoYdUTtQrPsXsvYU/dmCSM8gg==";
1698 };
1689 };
1699 };
1690 };
1700 "caseless-0.12.0" = {
1691 "caseless-0.12.0" = {
@@ -1742,13 +1733,13 b' let'
1742 sha512 = "Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==";
1733 sha512 = "Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==";
1743 };
1734 };
1744 };
1735 };
1745 "chokidar-2.0.4" = {
1736 "chokidar-2.1.2" = {
1746 name = "chokidar";
1737 name = "chokidar";
1747 packageName = "chokidar";
1738 packageName = "chokidar";
1748 version = "2.0.4";
1739 version = "2.1.2";
1749 src = fetchurl {
1740 src = fetchurl {
1750 url = "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz";
1741 url = "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz";
1751 sha512 = "z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==";
1742 sha512 = "IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==";
1752 };
1743 };
1753 };
1744 };
1754 "chownr-1.1.1" = {
1745 "chownr-1.1.1" = {
@@ -2093,13 +2084,13 b' let'
2093 sha512 = "Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==";
2084 sha512 = "Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==";
2094 };
2085 };
2095 };
2086 };
2096 "core-js-2.6.1" = {
2087 "core-js-2.6.5" = {
2097 name = "core-js";
2088 name = "core-js";
2098 packageName = "core-js";
2089 packageName = "core-js";
2099 version = "2.6.1";
2090 version = "2.6.5";
2100 src = fetchurl {
2091 src = fetchurl {
2101 url = "https://registry.npmjs.org/core-js/-/core-js-2.6.1.tgz";
2092 url = "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz";
2102 sha512 = "L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg==";
2093 sha512 = "klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==";
2103 };
2094 };
2104 };
2095 };
2105 "core-util-is-1.0.2" = {
2096 "core-util-is-1.0.2" = {
@@ -2201,13 +2192,13 b' let'
2201 sha512 = "xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==";
2192 sha512 = "xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==";
2202 };
2193 };
2203 };
2194 };
2204 "css-what-2.1.2" = {
2195 "css-what-2.1.3" = {
2205 name = "css-what";
2196 name = "css-what";
2206 packageName = "css-what";
2197 packageName = "css-what";
2207 version = "2.1.2";
2198 version = "2.1.3";
2208 src = fetchurl {
2199 src = fetchurl {
2209 url = "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz";
2200 url = "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz";
2210 sha512 = "wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==";
2201 sha512 = "a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==";
2211 };
2202 };
2212 };
2203 };
2213 "cssesc-0.1.0" = {
2204 "cssesc-0.1.0" = {
@@ -2417,13 +2408,13 b' let'
2417 sha512 = "kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==";
2408 sha512 = "kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==";
2418 };
2409 };
2419 };
2410 };
2420 "dir-glob-2.0.0" = {
2411 "dir-glob-2.2.2" = {
2421 name = "dir-glob";
2412 name = "dir-glob";
2422 packageName = "dir-glob";
2413 packageName = "dir-glob";
2423 version = "2.0.0";
2414 version = "2.2.2";
2424 src = fetchurl {
2415 src = fetchurl {
2425 url = "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz";
2416 url = "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz";
2426 sha512 = "37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==";
2417 sha512 = "f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==";
2427 };
2418 };
2428 };
2419 };
2429 "dom-converter-0.2.0" = {
2420 "dom-converter-0.2.0" = {
@@ -2435,13 +2426,13 b' let'
2435 sha512 = "gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==";
2426 sha512 = "gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==";
2436 };
2427 };
2437 };
2428 };
2438 "dom-serializer-0.1.0" = {
2429 "dom-serializer-0.1.1" = {
2439 name = "dom-serializer";
2430 name = "dom-serializer";
2440 packageName = "dom-serializer";
2431 packageName = "dom-serializer";
2441 version = "0.1.0";
2432 version = "0.1.1";
2442 src = fetchurl {
2433 src = fetchurl {
2443 url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz";
2434 url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz";
2444 sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82";
2435 sha512 = "l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==";
2445 };
2436 };
2446 };
2437 };
2447 "dom5-2.3.0" = {
2438 "dom5-2.3.0" = {
@@ -2462,15 +2453,6 b' let'
2462 sha512 = "jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==";
2453 sha512 = "jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==";
2463 };
2454 };
2464 };
2455 };
2465 "domelementtype-1.1.3" = {
2466 name = "domelementtype";
2467 packageName = "domelementtype";
2468 version = "1.1.3";
2469 src = fetchurl {
2470 url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz";
2471 sha1 = "bd28773e2642881aec51544924299c5cd822185b";
2472 };
2473 };
2474 "domelementtype-1.3.1" = {
2456 "domelementtype-1.3.1" = {
2475 name = "domelementtype";
2457 name = "domelementtype";
2476 packageName = "domelementtype";
2458 packageName = "domelementtype";
@@ -2480,15 +2462,6 b' let'
2480 sha512 = "BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==";
2462 sha512 = "BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==";
2481 };
2463 };
2482 };
2464 };
2483 "domhandler-2.1.0" = {
2484 name = "domhandler";
2485 packageName = "domhandler";
2486 version = "2.1.0";
2487 src = fetchurl {
2488 url = "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz";
2489 sha1 = "d2646f5e57f6c3bab11cf6cb05d3c0acf7412594";
2490 };
2491 };
2492 "domhandler-2.3.0" = {
2465 "domhandler-2.3.0" = {
2493 name = "domhandler";
2466 name = "domhandler";
2494 packageName = "domhandler";
2467 packageName = "domhandler";
@@ -2498,15 +2471,6 b' let'
2498 sha1 = "2de59a0822d5027fabff6f032c2b25a2a8abe738";
2471 sha1 = "2de59a0822d5027fabff6f032c2b25a2a8abe738";
2499 };
2472 };
2500 };
2473 };
2501 "domutils-1.1.6" = {
2502 name = "domutils";
2503 packageName = "domutils";
2504 version = "1.1.6";
2505 src = fetchurl {
2506 url = "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz";
2507 sha1 = "bddc3de099b9a2efacc51c623f28f416ecc57485";
2508 };
2509 };
2510 "domutils-1.5.1" = {
2474 "domutils-1.5.1" = {
2511 name = "domutils";
2475 name = "domutils";
2512 packageName = "domutils";
2476 packageName = "domutils";
@@ -2516,13 +2480,13 b' let'
2516 sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
2480 sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
2517 };
2481 };
2518 };
2482 };
2519 "duplexify-3.6.1" = {
2483 "duplexify-3.7.1" = {
2520 name = "duplexify";
2484 name = "duplexify";
2521 packageName = "duplexify";
2485 packageName = "duplexify";
2522 version = "3.6.1";
2486 version = "3.7.1";
2523 src = fetchurl {
2487 src = fetchurl {
2524 url = "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz";
2488 url = "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz";
2525 sha512 = "vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==";
2489 sha512 = "07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==";
2526 };
2490 };
2527 };
2491 };
2528 "ecc-jsbn-0.1.2" = {
2492 "ecc-jsbn-0.1.2" = {
@@ -2534,13 +2498,13 b' let'
2534 sha1 = "3a83a904e54353287874c564b7549386849a98c9";
2498 sha1 = "3a83a904e54353287874c564b7549386849a98c9";
2535 };
2499 };
2536 };
2500 };
2537 "electron-to-chromium-1.3.98" = {
2501 "electron-to-chromium-1.3.113" = {
2538 name = "electron-to-chromium";
2502 name = "electron-to-chromium";
2539 packageName = "electron-to-chromium";
2503 packageName = "electron-to-chromium";
2540 version = "1.3.98";
2504 version = "1.3.113";
2541 src = fetchurl {
2505 src = fetchurl {
2542 url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.98.tgz";
2506 url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz";
2543 sha512 = "WIZdNuvE3dFr6kkPgv4d/cfswNZD6XbeLBM8baOIQTsnbf4xWrVEaLvp7oNnbnMWWXDqq7Tbv+H5JfciLTJm4Q==";
2507 sha512 = "De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g==";
2544 };
2508 };
2545 };
2509 };
2546 "elliptic-6.4.1" = {
2510 "elliptic-6.4.1" = {
@@ -2732,13 +2696,13 b' let'
2732 sha1 = "8f61b75cde012b2e9eb284d4545583b5643b61ab";
2696 sha1 = "8f61b75cde012b2e9eb284d4545583b5643b61ab";
2733 };
2697 };
2734 };
2698 };
2735 "events-1.1.1" = {
2699 "events-3.0.0" = {
2736 name = "events";
2700 name = "events";
2737 packageName = "events";
2701 packageName = "events";
2738 version = "1.1.1";
2702 version = "3.0.0";
2739 src = fetchurl {
2703 src = fetchurl {
2740 url = "https://registry.npmjs.org/events/-/events-1.1.1.tgz";
2704 url = "https://registry.npmjs.org/events/-/events-3.0.0.tgz";
2741 sha1 = "9ebdb7635ad099c70dcc4c2a1f5004288e8bd924";
2705 sha512 = "Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==";
2742 };
2706 };
2743 };
2707 };
2744 "evp_bytestokey-1.0.3" = {
2708 "evp_bytestokey-1.0.3" = {
@@ -2975,13 +2939,13 b' let'
2975 sha1 = "dae46a9d78fbe25292258cc1e780a41d95c03782";
2939 sha1 = "dae46a9d78fbe25292258cc1e780a41d95c03782";
2976 };
2940 };
2977 };
2941 };
2978 "flush-write-stream-1.0.3" = {
2942 "flush-write-stream-1.1.1" = {
2979 name = "flush-write-stream";
2943 name = "flush-write-stream";
2980 packageName = "flush-write-stream";
2944 packageName = "flush-write-stream";
2981 version = "1.0.3";
2945 version = "1.1.1";
2982 src = fetchurl {
2946 src = fetchurl {
2983 url = "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz";
2947 url = "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz";
2984 sha512 = "calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==";
2948 sha512 = "3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==";
2985 };
2949 };
2986 };
2950 };
2987 "for-in-1.0.2" = {
2951 "for-in-1.0.2" = {
@@ -3056,13 +3020,13 b' let'
3056 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
3020 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
3057 };
3021 };
3058 };
3022 };
3059 "fsevents-1.2.4" = {
3023 "fsevents-1.2.7" = {
3060 name = "fsevents";
3024 name = "fsevents";
3061 packageName = "fsevents";
3025 packageName = "fsevents";
3062 version = "1.2.4";
3026 version = "1.2.7";
3063 src = fetchurl {
3027 src = fetchurl {
3064 url = "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz";
3028 url = "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz";
3065 sha512 = "z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==";
3029 sha512 = "Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==";
3066 };
3030 };
3067 };
3031 };
3068 "function-bind-1.1.1" = {
3032 "function-bind-1.1.1" = {
@@ -3524,13 +3488,13 b' let'
3524 sha1 = "e36c3f2d2cae7d746a857e38d18d5f32a7882db8";
3488 sha1 = "e36c3f2d2cae7d746a857e38d18d5f32a7882db8";
3525 };
3489 };
3526 };
3490 };
3527 "homedir-polyfill-1.0.1" = {
3491 "homedir-polyfill-1.0.3" = {
3528 name = "homedir-polyfill";
3492 name = "homedir-polyfill";
3529 packageName = "homedir-polyfill";
3493 packageName = "homedir-polyfill";
3530 version = "1.0.1";
3494 version = "1.0.3";
3531 src = fetchurl {
3495 src = fetchurl {
3532 url = "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz";
3496 url = "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz";
3533 sha1 = "4c2bbc8a758998feebf5ed68580f76d46768b4bc";
3497 sha512 = "eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==";
3534 };
3498 };
3535 };
3499 };
3536 "hooker-0.2.3" = {
3500 "hooker-0.2.3" = {
@@ -3587,15 +3551,6 b' let'
3587 sha1 = "b01abbd723acaaa7b37b6af4492ebda03d9dd37b";
3551 sha1 = "b01abbd723acaaa7b37b6af4492ebda03d9dd37b";
3588 };
3552 };
3589 };
3553 };
3590 "htmlparser2-3.3.0" = {
3591 name = "htmlparser2";
3592 packageName = "htmlparser2";
3593 version = "3.3.0";
3594 src = fetchurl {
3595 url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz";
3596 sha1 = "cc70d05a59f6542e43f0e685c982e14c924a9efe";
3597 };
3598 };
3599 "htmlparser2-3.8.3" = {
3554 "htmlparser2-3.8.3" = {
3600 name = "htmlparser2";
3555 name = "htmlparser2";
3601 packageName = "htmlparser2";
3556 packageName = "htmlparser2";
@@ -4145,13 +4100,13 b' let'
4145 sha1 = "dd8b74278b27102d29df63eae28308a8cfa1b583";
4100 sha1 = "dd8b74278b27102d29df63eae28308a8cfa1b583";
4146 };
4101 };
4147 };
4102 };
4148 "js-base64-2.5.0" = {
4103 "js-base64-2.5.1" = {
4149 name = "js-base64";
4104 name = "js-base64";
4150 packageName = "js-base64";
4105 packageName = "js-base64";
4151 version = "2.5.0";
4106 version = "2.5.1";
4152 src = fetchurl {
4107 src = fetchurl {
4153 url = "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz";
4108 url = "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz";
4154 sha512 = "wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==";
4109 sha512 = "M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==";
4155 };
4110 };
4156 };
4111 };
4157 "js-tokens-3.0.2" = {
4112 "js-tokens-3.0.2" = {
@@ -4208,6 +4163,15 b' let'
4208 sha1 = "46c3fec8c1892b12b0833db9bc7622176dbab34b";
4163 sha1 = "46c3fec8c1892b12b0833db9bc7622176dbab34b";
4209 };
4164 };
4210 };
4165 };
4166 "jshint-2.10.1" = {
4167 name = "jshint";
4168 packageName = "jshint";
4169 version = "2.10.1";
4170 src = fetchurl {
4171 url = "https://registry.npmjs.org/jshint/-/jshint-2.10.1.tgz";
4172 sha512 = "9GpPfKeffYBl7oBDX2lHPG16j0AM7D2bn3aLy9DaWTr6CWa0i/7UGhX8WLZ7V14QQnnr4hXbjauTLYg06F+HYw==";
4173 };
4174 };
4211 "jshint-2.9.7" = {
4175 "jshint-2.9.7" = {
4212 name = "jshint";
4176 name = "jshint";
4213 packageName = "jshint";
4177 packageName = "jshint";
@@ -4370,13 +4334,13 b' let'
4370 sha1 = "2009291bb31cea861bbf10a7c15a28caf75c31ec";
4334 sha1 = "2009291bb31cea861bbf10a7c15a28caf75c31ec";
4371 };
4335 };
4372 };
4336 };
4373 "loader-runner-2.3.1" = {
4337 "loader-runner-2.4.0" = {
4374 name = "loader-runner";
4338 name = "loader-runner";
4375 packageName = "loader-runner";
4339 packageName = "loader-runner";
4376 version = "2.3.1";
4340 version = "2.4.0";
4377 src = fetchurl {
4341 src = fetchurl {
4378 url = "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz";
4342 url = "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz";
4379 sha512 = "By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==";
4343 sha512 = "Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==";
4380 };
4344 };
4381 };
4345 };
4382 "loader-utils-0.2.17" = {
4346 "loader-utils-0.2.17" = {
@@ -4460,15 +4424,6 b' let'
4460 sha1 = "b28aa6288a2b9fc651035c7711f65ab6190331a6";
4424 sha1 = "b28aa6288a2b9fc651035c7711f65ab6190331a6";
4461 };
4425 };
4462 };
4426 };
4463 "lodash.debounce-4.0.8" = {
4464 name = "lodash.debounce";
4465 packageName = "lodash.debounce";
4466 version = "4.0.8";
4467 src = fetchurl {
4468 url = "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz";
4469 sha1 = "82d79bff30a67c4005ffd5e2515300ad9ca4d7af";
4470 };
4471 };
4472 "lodash.isplainobject-4.0.6" = {
4427 "lodash.isplainobject-4.0.6" = {
4473 name = "lodash.isplainobject";
4428 name = "lodash.isplainobject";
4474 packageName = "lodash.isplainobject";
4429 packageName = "lodash.isplainobject";
@@ -4613,13 +4568,13 b' let'
4613 sha512 = "xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==";
4568 sha512 = "xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==";
4614 };
4569 };
4615 };
4570 };
4616 "mem-4.0.0" = {
4571 "mem-4.1.0" = {
4617 name = "mem";
4572 name = "mem";
4618 packageName = "mem";
4573 packageName = "mem";
4619 version = "4.0.0";
4574 version = "4.1.0";
4620 src = fetchurl {
4575 src = fetchurl {
4621 url = "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz";
4576 url = "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz";
4622 sha512 = "WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==";
4577 sha512 = "I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==";
4623 };
4578 };
4624 };
4579 };
4625 "memory-fs-0.4.1" = {
4580 "memory-fs-0.4.1" = {
@@ -4658,22 +4613,22 b' let'
4658 sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
4613 sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
4659 };
4614 };
4660 };
4615 };
4661 "mime-db-1.37.0" = {
4616 "mime-db-1.38.0" = {
4662 name = "mime-db";
4617 name = "mime-db";
4663 packageName = "mime-db";
4618 packageName = "mime-db";
4664 version = "1.37.0";
4619 version = "1.38.0";
4665 src = fetchurl {
4620 src = fetchurl {
4666 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz";
4621 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz";
4667 sha512 = "R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==";
4622 sha512 = "bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==";
4668 };
4623 };
4669 };
4624 };
4670 "mime-types-2.1.21" = {
4625 "mime-types-2.1.22" = {
4671 name = "mime-types";
4626 name = "mime-types";
4672 packageName = "mime-types";
4627 packageName = "mime-types";
4673 version = "2.1.21";
4628 version = "2.1.22";
4674 src = fetchurl {
4629 src = fetchurl {
4675 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz";
4630 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz";
4676 sha512 = "3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==";
4631 sha512 = "aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==";
4677 };
4632 };
4678 };
4633 };
4679 "mimic-fn-1.2.0" = {
4634 "mimic-fn-1.2.0" = {
@@ -4775,13 +4730,13 b' let'
4775 sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
4730 sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
4776 };
4731 };
4777 };
4732 };
4778 "moment-2.23.0" = {
4733 "moment-2.24.0" = {
4779 name = "moment";
4734 name = "moment";
4780 packageName = "moment";
4735 packageName = "moment";
4781 version = "2.23.0";
4736 version = "2.24.0";
4782 src = fetchurl {
4737 src = fetchurl {
4783 url = "https://registry.npmjs.org/moment/-/moment-2.23.0.tgz";
4738 url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz";
4784 sha512 = "3IE39bHVqFbWWaPOMHZF98Q9c3LDKGTmypMiTM2QygGXXElkFWIH7GxfmlwmY2vwa+wmNsoYZmG2iusf1ZjJoA==";
4739 sha512 = "bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==";
4785 };
4740 };
4786 };
4741 };
4787 "mousetrap-1.6.2" = {
4742 "mousetrap-1.6.2" = {
@@ -4856,13 +4811,13 b' let'
4856 sha512 = "rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==";
4811 sha512 = "rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==";
4857 };
4812 };
4858 };
4813 };
4859 "node-libs-browser-2.1.0" = {
4814 "node-libs-browser-2.2.0" = {
4860 name = "node-libs-browser";
4815 name = "node-libs-browser";
4861 packageName = "node-libs-browser";
4816 packageName = "node-libs-browser";
4862 version = "2.1.0";
4817 version = "2.2.0";
4863 src = fetchurl {
4818 src = fetchurl {
4864 url = "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz";
4819 url = "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz";
4865 sha512 = "5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==";
4820 sha512 = "5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==";
4866 };
4821 };
4867 };
4822 };
4868 "nopt-1.0.10" = {
4823 "nopt-1.0.10" = {
@@ -4910,6 +4865,15 b' let'
4910 sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
4865 sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
4911 };
4866 };
4912 };
4867 };
4868 "normalize-path-3.0.0" = {
4869 name = "normalize-path";
4870 packageName = "normalize-path";
4871 version = "3.0.0";
4872 src = fetchurl {
4873 url = "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz";
4874 sha512 = "6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==";
4875 };
4876 };
4913 "normalize-range-0.1.2" = {
4877 "normalize-range-0.1.2" = {
4914 name = "normalize-range";
4878 name = "normalize-range";
4915 packageName = "normalize-range";
4879 packageName = "normalize-range";
@@ -4991,13 +4955,13 b' let'
4991 sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
4955 sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
4992 };
4956 };
4993 };
4957 };
4994 "object-keys-1.0.12" = {
4958 "object-keys-1.1.0" = {
4995 name = "object-keys";
4959 name = "object-keys";
4996 packageName = "object-keys";
4960 packageName = "object-keys";
4997 version = "1.0.12";
4961 version = "1.1.0";
4998 src = fetchurl {
4962 src = fetchurl {
4999 url = "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz";
4963 url = "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz";
5000 sha512 = "FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==";
4964 sha512 = "6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==";
5001 };
4965 };
5002 };
4966 };
5003 "object-visit-1.0.1" = {
4967 "object-visit-1.0.1" = {
@@ -5117,13 +5081,13 b' let'
5117 sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae";
5081 sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae";
5118 };
5082 };
5119 };
5083 };
5120 "p-is-promise-1.1.0" = {
5084 "p-is-promise-2.0.0" = {
5121 name = "p-is-promise";
5085 name = "p-is-promise";
5122 packageName = "p-is-promise";
5086 packageName = "p-is-promise";
5123 version = "1.1.0";
5087 version = "2.0.0";
5124 src = fetchurl {
5088 src = fetchurl {
5125 url = "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz";
5089 url = "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz";
5126 sha1 = "9c9456989e9f6588017b0434d56097675c3da05e";
5090 sha512 = "pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==";
5127 };
5091 };
5128 };
5092 };
5129 "p-limit-1.3.0" = {
5093 "p-limit-1.3.0" = {
@@ -5180,13 +5144,13 b' let'
5180 sha512 = "hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==";
5144 sha512 = "hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==";
5181 };
5145 };
5182 };
5146 };
5183 "pako-1.0.7" = {
5147 "pako-1.0.8" = {
5184 name = "pako";
5148 name = "pako";
5185 packageName = "pako";
5149 packageName = "pako";
5186 version = "1.0.7";
5150 version = "1.0.8";
5187 src = fetchurl {
5151 src = fetchurl {
5188 url = "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz";
5152 url = "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz";
5189 sha512 = "3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ==";
5153 sha512 = "6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==";
5190 };
5154 };
5191 };
5155 };
5192 "parallel-transform-1.1.0" = {
5156 "parallel-transform-1.1.0" = {
@@ -5207,13 +5171,13 b' let'
5207 sha1 = "df94fd8cf6531ecf75e6bef9a0858fbc72be2247";
5171 sha1 = "df94fd8cf6531ecf75e6bef9a0858fbc72be2247";
5208 };
5172 };
5209 };
5173 };
5210 "parse-asn1-5.1.1" = {
5174 "parse-asn1-5.1.4" = {
5211 name = "parse-asn1";
5175 name = "parse-asn1";
5212 packageName = "parse-asn1";
5176 packageName = "parse-asn1";
5213 version = "5.1.1";
5177 version = "5.1.4";
5214 src = fetchurl {
5178 src = fetchurl {
5215 url = "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz";
5179 url = "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz";
5216 sha512 = "KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==";
5180 sha512 = "Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==";
5217 };
5181 };
5218 };
5182 };
5219 "parse-filepath-1.0.2" = {
5183 "parse-filepath-1.0.2" = {
@@ -5927,13 +5891,13 b' let'
5927 sha1 = "9ec61f79049875707d69414596fd907a4d711e73";
5891 sha1 = "9ec61f79049875707d69414596fd907a4d711e73";
5928 };
5892 };
5929 };
5893 };
5930 "randombytes-2.0.6" = {
5894 "randombytes-2.1.0" = {
5931 name = "randombytes";
5895 name = "randombytes";
5932 packageName = "randombytes";
5896 packageName = "randombytes";
5933 version = "2.0.6";
5897 version = "2.1.0";
5934 src = fetchurl {
5898 src = fetchurl {
5935 url = "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz";
5899 url = "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz";
5936 sha512 = "CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==";
5900 sha512 = "vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==";
5937 };
5901 };
5938 };
5902 };
5939 "randomfill-1.0.4" = {
5903 "randomfill-1.0.4" = {
@@ -5954,15 +5918,6 b' let'
5954 sha512 = "guh4ZNAf96f+CDwfnPbFeFiO5YcfPllUmZrgcoOmx6iqZPq+DcKbnyjPuBxEAtQ3tqqd++qChsQfQB+VBzFT0Q==";
5918 sha512 = "guh4ZNAf96f+CDwfnPbFeFiO5YcfPllUmZrgcoOmx6iqZPq+DcKbnyjPuBxEAtQ3tqqd++qChsQfQB+VBzFT0Q==";
5955 };
5919 };
5956 };
5920 };
5957 "readable-stream-1.0.34" = {
5958 name = "readable-stream";
5959 packageName = "readable-stream";
5960 version = "1.0.34";
5961 src = fetchurl {
5962 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz";
5963 sha1 = "125820e34bc842d2f2aaafafe4c2916ee32c157c";
5964 };
5965 };
5966 "readable-stream-1.1.14" = {
5921 "readable-stream-1.1.14" = {
5967 name = "readable-stream";
5922 name = "readable-stream";
5968 packageName = "readable-stream";
5923 packageName = "readable-stream";
@@ -6116,13 +6071,13 b' let'
6116 sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
6071 sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
6117 };
6072 };
6118 };
6073 };
6119 "renderkid-2.0.2" = {
6074 "renderkid-2.0.3" = {
6120 name = "renderkid";
6075 name = "renderkid";
6121 packageName = "renderkid";
6076 packageName = "renderkid";
6122 version = "2.0.2";
6077 version = "2.0.3";
6123 src = fetchurl {
6078 src = fetchurl {
6124 url = "https://registry.npmjs.org/renderkid/-/renderkid-2.0.2.tgz";
6079 url = "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz";
6125 sha512 = "FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==";
6080 sha512 = "z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==";
6126 };
6081 };
6127 };
6082 };
6128 "repeat-element-1.1.3" = {
6083 "repeat-element-1.1.3" = {
@@ -6179,13 +6134,13 b' let'
6179 sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
6134 sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
6180 };
6135 };
6181 };
6136 };
6182 "resolve-1.9.0" = {
6137 "resolve-1.10.0" = {
6183 name = "resolve";
6138 name = "resolve";
6184 packageName = "resolve";
6139 packageName = "resolve";
6185 version = "1.9.0";
6140 version = "1.10.0";
6186 src = fetchurl {
6141 src = fetchurl {
6187 url = "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz";
6142 url = "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz";
6188 sha512 = "TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==";
6143 sha512 = "3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==";
6189 };
6144 };
6190 };
6145 };
6191 "resolve-cwd-2.0.0" = {
6146 "resolve-cwd-2.0.0" = {
@@ -6593,13 +6548,13 b' let'
6593 sha1 = "04e6926f662895354f3dd015203633b857297e2c";
6548 sha1 = "04e6926f662895354f3dd015203633b857297e2c";
6594 };
6549 };
6595 };
6550 };
6596 "sshpk-1.16.0" = {
6551 "sshpk-1.16.1" = {
6597 name = "sshpk";
6552 name = "sshpk";
6598 packageName = "sshpk";
6553 packageName = "sshpk";
6599 version = "1.16.0";
6554 version = "1.16.1";
6600 src = fetchurl {
6555 src = fetchurl {
6601 url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz";
6556 url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
6602 sha512 = "Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==";
6557 sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
6603 };
6558 };
6604 };
6559 };
6605 "ssri-5.3.0" = {
6560 "ssri-5.3.0" = {
@@ -6629,13 +6584,13 b' let'
6629 sha1 = "142bf6b64c2b416e4b707ebf8f09b8b5a5043877";
6584 sha1 = "142bf6b64c2b416e4b707ebf8f09b8b5a5043877";
6630 };
6585 };
6631 };
6586 };
6632 "stream-browserify-2.0.1" = {
6587 "stream-browserify-2.0.2" = {
6633 name = "stream-browserify";
6588 name = "stream-browserify";
6634 packageName = "stream-browserify";
6589 packageName = "stream-browserify";
6635 version = "2.0.1";
6590 version = "2.0.2";
6636 src = fetchurl {
6591 src = fetchurl {
6637 url = "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz";
6592 url = "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz";
6638 sha1 = "66266ee5f9bdb9940a4e4514cafb43bb71e5c9db";
6593 sha512 = "nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==";
6639 };
6594 };
6640 };
6595 };
6641 "stream-each-1.2.3" = {
6596 "stream-each-1.2.3" = {
@@ -6872,13 +6827,13 b' let'
6872 sha512 = "YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==";
6827 sha512 = "YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==";
6873 };
6828 };
6874 };
6829 };
6875 "tiny-emitter-2.0.2" = {
6830 "tiny-emitter-2.1.0" = {
6876 name = "tiny-emitter";
6831 name = "tiny-emitter";
6877 packageName = "tiny-emitter";
6832 packageName = "tiny-emitter";
6878 version = "2.0.2";
6833 version = "2.1.0";
6879 src = fetchurl {
6834 src = fetchurl {
6880 url = "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz";
6835 url = "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz";
6881 sha512 = "2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==";
6836 sha512 = "NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==";
6882 };
6837 };
6883 };
6838 };
6884 "tiny-lr-fork-0.0.5" = {
6839 "tiny-lr-fork-0.0.5" = {
@@ -7223,13 +7178,13 b' let'
7223 sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
7178 sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
7224 };
7179 };
7225 };
7180 };
7226 "util-0.10.4" = {
7181 "util-0.11.1" = {
7227 name = "util";
7182 name = "util";
7228 packageName = "util";
7183 packageName = "util";
7229 version = "0.10.4";
7184 version = "0.11.1";
7230 src = fetchurl {
7185 src = fetchurl {
7231 url = "https://registry.npmjs.org/util/-/util-0.10.4.tgz";
7186 url = "https://registry.npmjs.org/util/-/util-0.11.1.tgz";
7232 sha512 = "0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==";
7187 sha512 = "HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==";
7233 };
7188 };
7234 };
7189 };
7235 "util-deprecate-1.0.2" = {
7190 "util-deprecate-1.0.2" = {
@@ -7536,14 +7491,14 b' let'
7536 sources."@polymer/paper-behaviors-3.0.1"
7491 sources."@polymer/paper-behaviors-3.0.1"
7537 sources."@polymer/paper-button-3.0.1"
7492 sources."@polymer/paper-button-3.0.1"
7538 sources."@polymer/paper-ripple-3.0.1"
7493 sources."@polymer/paper-ripple-3.0.1"
7539 sources."@polymer/paper-spinner-3.0.1"
7494 sources."@polymer/paper-spinner-3.0.2"
7540 sources."@polymer/paper-styles-3.0.1"
7495 sources."@polymer/paper-styles-3.0.1"
7541 sources."@polymer/paper-toast-3.0.1"
7496 sources."@polymer/paper-toast-3.0.1"
7542 sources."@polymer/paper-toggle-button-3.0.1"
7497 sources."@polymer/paper-toggle-button-3.0.1"
7543 sources."@polymer/paper-tooltip-3.0.1"
7498 sources."@polymer/paper-tooltip-3.0.1"
7544 sources."@polymer/polymer-3.1.0"
7499 sources."@polymer/polymer-3.1.0"
7545 sources."@types/clone-0.1.30"
7500 sources."@types/clone-0.1.30"
7546 sources."@types/node-6.14.2"
7501 sources."@types/node-6.14.3"
7547 sources."@types/parse5-2.2.34"
7502 sources."@types/parse5-2.2.34"
7548 sources."@webassemblyjs/ast-1.7.10"
7503 sources."@webassemblyjs/ast-1.7.10"
7549 sources."@webassemblyjs/floating-point-hex-parser-1.7.10"
7504 sources."@webassemblyjs/floating-point-hex-parser-1.7.10"
@@ -7563,8 +7518,8 b' let'
7563 sources."@webassemblyjs/wasm-parser-1.7.10"
7518 sources."@webassemblyjs/wasm-parser-1.7.10"
7564 sources."@webassemblyjs/wast-parser-1.7.10"
7519 sources."@webassemblyjs/wast-parser-1.7.10"
7565 sources."@webassemblyjs/wast-printer-1.7.10"
7520 sources."@webassemblyjs/wast-printer-1.7.10"
7566 sources."@webcomponents/shadycss-1.7.1"
7521 sources."@webcomponents/shadycss-1.9.0"
7567 sources."@webcomponents/webcomponentsjs-2.2.1"
7522 sources."@webcomponents/webcomponentsjs-2.2.7"
7568 sources."@xtuc/ieee754-1.2.0"
7523 sources."@xtuc/ieee754-1.2.0"
7569 sources."@xtuc/long-4.2.1"
7524 sources."@xtuc/long-4.2.1"
7570 sources."abbrev-1.1.1"
7525 sources."abbrev-1.1.1"
@@ -7576,7 +7531,7 b' let'
7576 ];
7531 ];
7577 })
7532 })
7578 sources."ajv-4.11.8"
7533 sources."ajv-4.11.8"
7579 sources."ajv-keywords-3.2.0"
7534 sources."ajv-keywords-3.4.0"
7580 (sources."align-text-0.1.4" // {
7535 (sources."align-text-0.1.4" // {
7581 dependencies = [
7536 dependencies = [
7582 sources."kind-of-3.2.2"
7537 sources."kind-of-3.2.2"
@@ -7586,7 +7541,11 b' let'
7586 sources."amdefine-1.0.1"
7541 sources."amdefine-1.0.1"
7587 sources."ansi-regex-0.2.1"
7542 sources."ansi-regex-0.2.1"
7588 sources."ansi-styles-1.1.0"
7543 sources."ansi-styles-1.1.0"
7589 sources."anymatch-2.0.0"
7544 (sources."anymatch-2.0.0" // {
7545 dependencies = [
7546 sources."normalize-path-2.1.1"
7547 ];
7548 })
7590 sources."appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1"
7549 sources."appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1"
7591 sources."aproba-1.2.0"
7550 sources."aproba-1.2.0"
7592 (sources."argparse-0.1.16" // {
7551 (sources."argparse-0.1.16" // {
@@ -7602,7 +7561,6 b' let'
7602 sources."array-union-1.0.2"
7561 sources."array-union-1.0.2"
7603 sources."array-uniq-1.0.3"
7562 sources."array-uniq-1.0.3"
7604 sources."array-unique-0.3.2"
7563 sources."array-unique-0.3.2"
7605 sources."arrify-1.0.1"
7606 sources."asap-2.0.6"
7564 sources."asap-2.0.6"
7607 sources."asn1-0.2.4"
7565 sources."asn1-0.2.4"
7608 sources."asn1.js-4.10.1"
7566 sources."asn1.js-4.10.1"
@@ -7738,7 +7696,7 b' let'
7738 sources."base64-js-1.3.0"
7696 sources."base64-js-1.3.0"
7739 sources."bcrypt-pbkdf-1.0.2"
7697 sources."bcrypt-pbkdf-1.0.2"
7740 sources."big.js-5.2.2"
7698 sources."big.js-5.2.2"
7741 sources."binary-extensions-1.12.0"
7699 sources."binary-extensions-1.13.0"
7742 sources."bluebird-3.5.3"
7700 sources."bluebird-3.5.3"
7743 sources."bn.js-4.11.8"
7701 sources."bn.js-4.11.8"
7744 sources."boolbase-1.0.0"
7702 sources."boolbase-1.0.0"
@@ -7778,12 +7736,12 b' let'
7778 sources."browserslist-1.7.7"
7736 sources."browserslist-1.7.7"
7779 ];
7737 ];
7780 })
7738 })
7781 sources."caniuse-db-1.0.30000927"
7739 sources."caniuse-db-1.0.30000939"
7782 sources."caniuse-lite-1.0.30000927"
7740 sources."caniuse-lite-1.0.30000939"
7783 sources."caseless-0.12.0"
7741 sources."caseless-0.12.0"
7784 sources."center-align-0.1.3"
7742 sources."center-align-0.1.3"
7785 sources."chalk-0.5.1"
7743 sources."chalk-0.5.1"
7786 (sources."chokidar-2.0.4" // {
7744 (sources."chokidar-2.1.2" // {
7787 dependencies = [
7745 dependencies = [
7788 sources."is-glob-4.0.0"
7746 sources."is-glob-4.0.0"
7789 ];
7747 ];
@@ -7876,7 +7834,7 b' let'
7876 sources."minimatch-3.0.4"
7834 sources."minimatch-3.0.4"
7877 ];
7835 ];
7878 })
7836 })
7879 sources."core-js-2.6.1"
7837 sources."core-js-2.6.5"
7880 sources."core-util-is-1.0.2"
7838 sources."core-util-is-1.0.2"
7881 sources."create-ecdh-4.0.3"
7839 sources."create-ecdh-4.0.3"
7882 sources."create-hash-1.2.0"
7840 sources."create-hash-1.2.0"
@@ -7896,7 +7854,7 b' let'
7896 sources."regexpu-core-1.0.0"
7854 sources."regexpu-core-1.0.0"
7897 ];
7855 ];
7898 })
7856 })
7899 sources."css-what-2.1.2"
7857 sources."css-what-2.1.3"
7900 sources."cssesc-0.1.0"
7858 sources."cssesc-0.1.0"
7901 sources."cssnano-3.10.0"
7859 sources."cssnano-3.10.0"
7902 sources."csso-2.3.2"
7860 sources."csso-2.3.2"
@@ -7921,11 +7879,10 b' let'
7921 sources."detect-file-1.0.0"
7879 sources."detect-file-1.0.0"
7922 sources."detect-indent-4.0.0"
7880 sources."detect-indent-4.0.0"
7923 sources."diffie-hellman-5.0.3"
7881 sources."diffie-hellman-5.0.3"
7924 sources."dir-glob-2.0.0"
7882 sources."dir-glob-2.2.2"
7925 sources."dom-converter-0.2.0"
7883 sources."dom-converter-0.2.0"
7926 (sources."dom-serializer-0.1.0" // {
7884 (sources."dom-serializer-0.1.1" // {
7927 dependencies = [
7885 dependencies = [
7928 sources."domelementtype-1.1.3"
7929 sources."entities-1.1.2"
7886 sources."entities-1.1.2"
7930 ];
7887 ];
7931 })
7888 })
@@ -7939,14 +7896,14 b' let'
7939 sources."domelementtype-1.3.1"
7896 sources."domelementtype-1.3.1"
7940 sources."domhandler-2.3.0"
7897 sources."domhandler-2.3.0"
7941 sources."domutils-1.5.1"
7898 sources."domutils-1.5.1"
7942 (sources."duplexify-3.6.1" // {
7899 (sources."duplexify-3.7.1" // {
7943 dependencies = [
7900 dependencies = [
7944 sources."readable-stream-2.3.6"
7901 sources."readable-stream-2.3.6"
7945 sources."string_decoder-1.1.1"
7902 sources."string_decoder-1.1.1"
7946 ];
7903 ];
7947 })
7904 })
7948 sources."ecc-jsbn-0.1.2"
7905 sources."ecc-jsbn-0.1.2"
7949 sources."electron-to-chromium-1.3.98"
7906 sources."electron-to-chromium-1.3.113"
7950 sources."elliptic-6.4.1"
7907 sources."elliptic-6.4.1"
7951 sources."emojis-list-2.1.0"
7908 sources."emojis-list-2.1.0"
7952 sources."end-of-stream-1.4.1"
7909 sources."end-of-stream-1.4.1"
@@ -7968,7 +7925,7 b' let'
7968 sources."estraverse-4.2.0"
7925 sources."estraverse-4.2.0"
7969 sources."esutils-2.0.2"
7926 sources."esutils-2.0.2"
7970 sources."eventemitter2-0.4.14"
7927 sources."eventemitter2-0.4.14"
7971 sources."events-1.1.1"
7928 sources."events-3.0.0"
7972 sources."evp_bytestokey-1.0.3"
7929 sources."evp_bytestokey-1.0.3"
7973 sources."execa-1.0.0"
7930 sources."execa-1.0.0"
7974 sources."exit-0.1.2"
7931 sources."exit-0.1.2"
@@ -8028,7 +7985,7 b' let'
8028 sources."fined-1.1.1"
7985 sources."fined-1.1.1"
8029 sources."flagged-respawn-1.0.1"
7986 sources."flagged-respawn-1.0.1"
8030 sources."flatten-1.0.2"
7987 sources."flatten-1.0.2"
8031 (sources."flush-write-stream-1.0.3" // {
7988 (sources."flush-write-stream-1.1.1" // {
8032 dependencies = [
7989 dependencies = [
8033 sources."readable-stream-2.3.6"
7990 sources."readable-stream-2.3.6"
8034 sources."string_decoder-1.1.1"
7991 sources."string_decoder-1.1.1"
@@ -8051,7 +8008,7 b' let'
8051 ];
8008 ];
8052 })
8009 })
8053 sources."fs.realpath-1.0.0"
8010 sources."fs.realpath-1.0.0"
8054 sources."fsevents-1.2.4"
8011 sources."fsevents-1.2.7"
8055 sources."function-bind-1.1.1"
8012 sources."function-bind-1.1.1"
8056 sources."gaze-0.5.2"
8013 sources."gaze-0.5.2"
8057 sources."get-caller-file-1.0.3"
8014 sources."get-caller-file-1.0.3"
@@ -8115,12 +8072,18 b' let'
8115 sources."supports-color-2.0.0"
8072 sources."supports-color-2.0.0"
8116 ];
8073 ];
8117 })
8074 })
8118 sources."grunt-contrib-jshint-0.12.0"
8075 (sources."grunt-contrib-jshint-0.12.0" // {
8076 dependencies = [
8077 sources."jshint-2.9.7"
8078 sources."lodash-4.17.11"
8079 sources."minimatch-3.0.4"
8080 ];
8081 })
8119 (sources."grunt-contrib-less-1.4.1" // {
8082 (sources."grunt-contrib-less-1.4.1" // {
8120 dependencies = [
8083 dependencies = [
8121 sources."ansi-regex-2.1.1"
8084 sources."ansi-regex-2.1.1"
8122 sources."ansi-styles-2.2.1"
8085 sources."ansi-styles-2.2.1"
8123 sources."async-2.6.1"
8086 sources."async-2.6.2"
8124 sources."chalk-1.1.3"
8087 sources."chalk-1.1.3"
8125 sources."has-ansi-2.0.0"
8088 sources."has-ansi-2.0.0"
8126 sources."lodash-4.17.11"
8089 sources."lodash-4.17.11"
@@ -8172,7 +8135,7 b' let'
8172 sources."hmac-drbg-1.0.1"
8135 sources."hmac-drbg-1.0.1"
8173 sources."hoek-2.16.3"
8136 sources."hoek-2.16.3"
8174 sources."home-or-tmp-2.0.0"
8137 sources."home-or-tmp-2.0.0"
8175 sources."homedir-polyfill-1.0.1"
8138 sources."homedir-polyfill-1.0.3"
8176 sources."hooker-0.2.3"
8139 sources."hooker-0.2.3"
8177 sources."html-comment-regex-1.1.2"
8140 sources."html-comment-regex-1.1.2"
8178 sources."html-loader-0.4.5"
8141 sources."html-loader-0.4.5"
@@ -8261,12 +8224,12 b' let'
8261 sources."isobject-3.0.1"
8224 sources."isobject-3.0.1"
8262 sources."isstream-0.1.2"
8225 sources."isstream-0.1.2"
8263 sources."jquery-1.11.3"
8226 sources."jquery-1.11.3"
8264 sources."js-base64-2.5.0"
8227 sources."js-base64-2.5.1"
8265 sources."js-tokens-3.0.2"
8228 sources."js-tokens-3.0.2"
8266 sources."js-yaml-2.0.5"
8229 sources."js-yaml-2.0.5"
8267 sources."jsbn-0.1.1"
8230 sources."jsbn-0.1.1"
8268 sources."jsesc-1.3.0"
8231 sources."jsesc-1.3.0"
8269 (sources."jshint-2.9.7" // {
8232 (sources."jshint-2.10.1" // {
8270 dependencies = [
8233 dependencies = [
8271 sources."lodash-4.17.11"
8234 sources."lodash-4.17.11"
8272 sources."minimatch-3.0.4"
8235 sources."minimatch-3.0.4"
@@ -8297,12 +8260,11 b' let'
8297 sources."findup-sync-2.0.0"
8260 sources."findup-sync-2.0.0"
8298 ];
8261 ];
8299 })
8262 })
8300 sources."loader-runner-2.3.1"
8263 sources."loader-runner-2.4.0"
8301 sources."loader-utils-1.2.3"
8264 sources."loader-utils-1.2.3"
8302 sources."locate-path-2.0.0"
8265 sources."locate-path-2.0.0"
8303 sources."lodash-0.9.2"
8266 sources."lodash-0.9.2"
8304 sources."lodash.camelcase-4.3.0"
8267 sources."lodash.camelcase-4.3.0"
8305 sources."lodash.debounce-4.0.8"
8306 sources."lodash.isplainobject-4.0.6"
8268 sources."lodash.isplainobject-4.0.6"
8307 sources."lodash.memoize-4.1.2"
8269 sources."lodash.memoize-4.1.2"
8308 sources."lodash.uniq-4.5.0"
8270 sources."lodash.uniq-4.5.0"
@@ -8318,7 +8280,7 b' let'
8318 sources."mark.js-8.11.1"
8280 sources."mark.js-8.11.1"
8319 sources."math-expression-evaluator-1.2.17"
8281 sources."math-expression-evaluator-1.2.17"
8320 sources."md5.js-1.3.5"
8282 sources."md5.js-1.3.5"
8321 sources."mem-4.0.0"
8283 sources."mem-4.1.0"
8322 (sources."memory-fs-0.4.1" // {
8284 (sources."memory-fs-0.4.1" // {
8323 dependencies = [
8285 dependencies = [
8324 sources."readable-stream-2.3.6"
8286 sources."readable-stream-2.3.6"
@@ -8328,8 +8290,8 b' let'
8328 sources."micromatch-3.1.10"
8290 sources."micromatch-3.1.10"
8329 sources."miller-rabin-4.0.1"
8291 sources."miller-rabin-4.0.1"
8330 sources."mime-1.6.0"
8292 sources."mime-1.6.0"
8331 sources."mime-db-1.37.0"
8293 sources."mime-db-1.38.0"
8332 sources."mime-types-2.1.21"
8294 sources."mime-types-2.1.22"
8333 sources."mimic-fn-1.2.0"
8295 sources."mimic-fn-1.2.0"
8334 sources."minimalistic-assert-1.0.1"
8296 sources."minimalistic-assert-1.0.1"
8335 sources."minimalistic-crypto-utils-1.0.1"
8297 sources."minimalistic-crypto-utils-1.0.1"
@@ -8346,7 +8308,7 b' let'
8346 sources."minimist-0.0.8"
8308 sources."minimist-0.0.8"
8347 ];
8309 ];
8348 })
8310 })
8349 sources."moment-2.23.0"
8311 sources."moment-2.24.0"
8350 sources."mousetrap-1.6.2"
8312 sources."mousetrap-1.6.2"
8351 (sources."move-concurrently-1.0.1" // {
8313 (sources."move-concurrently-1.0.1" // {
8352 dependencies = [
8314 dependencies = [
@@ -8361,7 +8323,7 b' let'
8361 sources."neo-async-2.6.0"
8323 sources."neo-async-2.6.0"
8362 sources."nice-try-1.0.5"
8324 sources."nice-try-1.0.5"
8363 sources."no-case-2.3.2"
8325 sources."no-case-2.3.2"
8364 (sources."node-libs-browser-2.1.0" // {
8326 (sources."node-libs-browser-2.2.0" // {
8365 dependencies = [
8327 dependencies = [
8366 (sources."readable-stream-2.3.6" // {
8328 (sources."readable-stream-2.3.6" // {
8367 dependencies = [
8329 dependencies = [
@@ -8377,7 +8339,7 b' let'
8377 sources."nopt-2.0.0"
8339 sources."nopt-2.0.0"
8378 ];
8340 ];
8379 })
8341 })
8380 sources."normalize-path-2.1.1"
8342 sources."normalize-path-3.0.0"
8381 sources."normalize-range-0.1.2"
8343 sources."normalize-range-0.1.2"
8382 sources."normalize-url-1.9.1"
8344 sources."normalize-url-1.9.1"
8383 sources."npm-run-path-2.0.2"
8345 sources."npm-run-path-2.0.2"
@@ -8399,7 +8361,7 b' let'
8399 sources."kind-of-3.2.2"
8361 sources."kind-of-3.2.2"
8400 ];
8362 ];
8401 })
8363 })
8402 sources."object-keys-1.0.12"
8364 sources."object-keys-1.1.0"
8403 sources."object-visit-1.0.1"
8365 sources."object-visit-1.0.1"
8404 sources."object.defaults-1.1.0"
8366 sources."object.defaults-1.1.0"
8405 sources."object.getownpropertydescriptors-2.0.3"
8367 sources."object.getownpropertydescriptors-2.0.3"
@@ -8413,11 +8375,11 b' let'
8413 sources."osenv-0.1.5"
8375 sources."osenv-0.1.5"
8414 sources."p-defer-1.0.0"
8376 sources."p-defer-1.0.0"
8415 sources."p-finally-1.0.0"
8377 sources."p-finally-1.0.0"
8416 sources."p-is-promise-1.1.0"
8378 sources."p-is-promise-2.0.0"
8417 sources."p-limit-1.3.0"
8379 sources."p-limit-1.3.0"
8418 sources."p-locate-2.0.0"
8380 sources."p-locate-2.0.0"
8419 sources."p-try-1.0.0"
8381 sources."p-try-1.0.0"
8420 sources."pako-1.0.7"
8382 sources."pako-1.0.8"
8421 (sources."parallel-transform-1.1.0" // {
8383 (sources."parallel-transform-1.1.0" // {
8422 dependencies = [
8384 dependencies = [
8423 sources."readable-stream-2.3.6"
8385 sources."readable-stream-2.3.6"
@@ -8425,7 +8387,7 b' let'
8425 ];
8387 ];
8426 })
8388 })
8427 sources."param-case-2.1.1"
8389 sources."param-case-2.1.1"
8428 sources."parse-asn1-5.1.1"
8390 sources."parse-asn1-5.1.4"
8429 sources."parse-filepath-1.0.2"
8391 sources."parse-filepath-1.0.2"
8430 sources."parse-passwd-1.0.0"
8392 sources."parse-passwd-1.0.0"
8431 sources."parse5-3.0.3"
8393 sources."parse5-3.0.3"
@@ -8564,7 +8526,7 b' let'
8564 sources."query-string-4.3.4"
8526 sources."query-string-4.3.4"
8565 sources."querystring-0.2.0"
8527 sources."querystring-0.2.0"
8566 sources."querystring-es3-0.2.1"
8528 sources."querystring-es3-0.2.1"
8567 sources."randombytes-2.0.6"
8529 sources."randombytes-2.1.0"
8568 sources."randomfill-1.0.4"
8530 sources."randomfill-1.0.4"
8569 sources."raw-loader-1.0.0-beta.0"
8531 sources."raw-loader-1.0.0-beta.0"
8570 (sources."readable-stream-1.1.14" // {
8532 (sources."readable-stream-1.1.14" // {
@@ -8608,14 +8570,9 b' let'
8608 })
8570 })
8609 sources."relateurl-0.2.7"
8571 sources."relateurl-0.2.7"
8610 sources."remove-trailing-separator-1.1.0"
8572 sources."remove-trailing-separator-1.1.0"
8611 (sources."renderkid-2.0.2" // {
8573 (sources."renderkid-2.0.3" // {
8612 dependencies = [
8574 dependencies = [
8613 sources."ansi-regex-2.1.1"
8575 sources."ansi-regex-2.1.1"
8614 sources."domhandler-2.1.0"
8615 sources."domutils-1.1.6"
8616 sources."htmlparser2-3.3.0"
8617 sources."isarray-0.0.1"
8618 sources."readable-stream-1.0.34"
8619 sources."strip-ansi-3.0.1"
8576 sources."strip-ansi-3.0.1"
8620 ];
8577 ];
8621 })
8578 })
@@ -8625,7 +8582,7 b' let'
8625 sources."request-2.81.0"
8582 sources."request-2.81.0"
8626 sources."require-directory-2.1.1"
8583 sources."require-directory-2.1.1"
8627 sources."require-main-filename-1.0.1"
8584 sources."require-main-filename-1.0.1"
8628 sources."resolve-1.9.0"
8585 sources."resolve-1.10.0"
8629 sources."resolve-cwd-2.0.0"
8586 sources."resolve-cwd-2.0.0"
8630 sources."resolve-dir-1.0.1"
8587 sources."resolve-dir-1.0.1"
8631 sources."resolve-from-3.0.0"
8588 sources."resolve-from-3.0.0"
@@ -8641,7 +8598,7 b' let'
8641 sources."sax-1.2.4"
8598 sources."sax-1.2.4"
8642 (sources."schema-utils-0.4.7" // {
8599 (sources."schema-utils-0.4.7" // {
8643 dependencies = [
8600 dependencies = [
8644 sources."ajv-6.6.2"
8601 sources."ajv-6.9.2"
8645 ];
8602 ];
8646 })
8603 })
8647 sources."select-1.1.2"
8604 sources."select-1.1.2"
@@ -8698,7 +8655,7 b' let'
8698 sources."source-map-url-0.4.0"
8655 sources."source-map-url-0.4.0"
8699 sources."split-string-3.1.0"
8656 sources."split-string-3.1.0"
8700 sources."sprintf-js-1.0.3"
8657 sources."sprintf-js-1.0.3"
8701 (sources."sshpk-1.16.0" // {
8658 (sources."sshpk-1.16.1" // {
8702 dependencies = [
8659 dependencies = [
8703 sources."assert-plus-1.0.0"
8660 sources."assert-plus-1.0.0"
8704 ];
8661 ];
@@ -8722,7 +8679,7 b' let'
8722 ];
8679 ];
8723 })
8680 })
8724 sources."sticky-sidebar-3.3.1"
8681 sources."sticky-sidebar-3.3.1"
8725 (sources."stream-browserify-2.0.1" // {
8682 (sources."stream-browserify-2.0.2" // {
8726 dependencies = [
8683 dependencies = [
8727 sources."readable-stream-2.3.6"
8684 sources."readable-stream-2.3.6"
8728 sources."string_decoder-1.1.1"
8685 sources."string_decoder-1.1.1"
@@ -8768,7 +8725,7 b' let'
8768 ];
8725 ];
8769 })
8726 })
8770 sources."timers-browserify-2.0.10"
8727 sources."timers-browserify-2.0.10"
8771 sources."tiny-emitter-2.0.2"
8728 sources."tiny-emitter-2.1.0"
8772 (sources."tiny-lr-fork-0.0.5" // {
8729 (sources."tiny-lr-fork-0.0.5" // {
8773 dependencies = [
8730 dependencies = [
8774 sources."debug-0.7.4"
8731 sources."debug-0.7.4"
@@ -8857,7 +8814,7 b' let'
8857 ];
8814 ];
8858 })
8815 })
8859 sources."use-3.1.1"
8816 sources."use-3.1.1"
8860 sources."util-0.10.4"
8817 sources."util-0.11.1"
8861 sources."util-deprecate-1.0.2"
8818 sources."util-deprecate-1.0.2"
8862 sources."util.promisify-1.0.0"
8819 sources."util.promisify-1.0.0"
8863 sources."utila-0.4.0"
8820 sources."utila-0.4.0"
@@ -8879,7 +8836,7 b' let'
8879 sources."waypoints-4.0.1"
8836 sources."waypoints-4.0.1"
8880 (sources."webpack-4.23.1" // {
8837 (sources."webpack-4.23.1" // {
8881 dependencies = [
8838 dependencies = [
8882 sources."ajv-6.6.2"
8839 sources."ajv-6.9.2"
8883 ];
8840 ];
8884 })
8841 })
8885 (sources."webpack-cli-3.1.2" // {
8842 (sources."webpack-cli-3.1.2" // {
@@ -199,14 +199,14 b' self: super: {'
199 };
199 };
200 };
200 };
201 "cffi" = super.buildPythonPackage {
201 "cffi" = super.buildPythonPackage {
202 name = "cffi-1.12.1";
202 name = "cffi-1.12.2";
203 doCheck = false;
203 doCheck = false;
204 propagatedBuildInputs = [
204 propagatedBuildInputs = [
205 self."pycparser"
205 self."pycparser"
206 ];
206 ];
207 src = fetchurl {
207 src = fetchurl {
208 url = "https://files.pythonhosted.org/packages/bc/81/47bd0404f2cb5363edb371e3b15da6387b5e9b80122e5b81be8b8f411e9b/cffi-1.12.1.tar.gz";
208 url = "https://files.pythonhosted.org/packages/64/7c/27367b38e6cc3e1f49f193deb761fe75cda9f95da37b67b422e62281fcac/cffi-1.12.2.tar.gz";
209 sha256 = "0cw0dzynw34zi75h674y3bgas6axfjyw1h6hj6ic2llcwyj7nvwv";
209 sha256 = "19qfks2djya8vix95bmg3xzipjb8w9b8mbj4j5k2hqkc8j58f4z1";
210 };
210 };
211 meta = {
211 meta = {
212 license = [ pkgs.lib.licenses.mit ];
212 license = [ pkgs.lib.licenses.mit ];
@@ -321,7 +321,7 b' self: super: {'
321 };
321 };
322 };
322 };
323 "cryptography" = super.buildPythonPackage {
323 "cryptography" = super.buildPythonPackage {
324 name = "cryptography-2.5";
324 name = "cryptography-2.6.1";
325 doCheck = false;
325 doCheck = false;
326 propagatedBuildInputs = [
326 propagatedBuildInputs = [
327 self."asn1crypto"
327 self."asn1crypto"
@@ -331,8 +331,8 b' self: super: {'
331 self."ipaddress"
331 self."ipaddress"
332 ];
332 ];
333 src = fetchurl {
333 src = fetchurl {
334 url = "https://files.pythonhosted.org/packages/69/ed/5e97b7f54237a9e4e6291b6e52173372b7fa45ca730d36ea90b790c0059a/cryptography-2.5.tar.gz";
334 url = "https://files.pythonhosted.org/packages/07/ca/bc827c5e55918ad223d59d299fff92f3563476c3b00d0a9157d9c0217449/cryptography-2.6.1.tar.gz";
335 sha256 = "00c4d7gvsymlaw0r13zrm32dcnarmpayjyrh65yymlmr6mrbcij9";
335 sha256 = "19iwz5avym5zl6jrrrkym1rdaa9h61j20ph4cswsqgv8xg5j3j16";
336 };
336 };
337 meta = {
337 meta = {
338 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "BSD or Apache License, Version 2.0"; } pkgs.lib.licenses.asl20 ];
338 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "BSD or Apache License, Version 2.0"; } pkgs.lib.licenses.asl20 ];
@@ -666,11 +666,11 b' self: super: {'
666 };
666 };
667 };
667 };
668 "hupper" = super.buildPythonPackage {
668 "hupper" = super.buildPythonPackage {
669 name = "hupper-1.5";
669 name = "hupper-1.6";
670 doCheck = false;
670 doCheck = false;
671 src = fetchurl {
671 src = fetchurl {
672 url = "https://files.pythonhosted.org/packages/89/f1/aace4ea69c1d79e243e48a81dcf1608c87e8c5a190e6ef80fae245d494ac/hupper-1.5.tar.gz";
672 url = "https://files.pythonhosted.org/packages/a4/f7/595756fdfdf896d2c46ae6dc25b1bc97645d0fbf2d6ca547b5b55728eaf3/hupper-1.6.tar.gz";
673 sha256 = "02n6y2rvpacm2w3x089whj64j1x0qlkimkzw35r1g0mymmxicfk9";
673 sha256 = "0p30l0pk63js0c0hl57c0dvffmawkwhh4yjmfaqyzgwdpdb0g3fc";
674 };
674 };
675 meta = {
675 meta = {
676 license = [ pkgs.lib.licenses.mit ];
676 license = [ pkgs.lib.licenses.mit ];
@@ -1759,8 +1759,8 b' self: super: {'
1759 self."beaker"
1759 self."beaker"
1760 self."bleach"
1760 self."bleach"
1761 self."celery"
1761 self."celery"
1762 self."chameleon"
1763 self."channelstream"
1762 self."channelstream"
1763 self."cryptography"
1764 self."click"
1764 self."click"
1765 self."colander"
1765 self."colander"
1766 self."configobj"
1766 self."configobj"
@@ -1770,7 +1770,6 b' self: super: {'
1770 self."docutils"
1770 self."docutils"
1771 self."dogpile.cache"
1771 self."dogpile.cache"
1772 self."dogpile.core"
1772 self."dogpile.core"
1773 self."ecdsa"
1774 self."formencode"
1773 self."formencode"
1775 self."future"
1774 self."future"
1776 self."futures"
1775 self."futures"
@@ -1797,7 +1796,6 b' self: super: {'
1797 self."pyparsing"
1796 self."pyparsing"
1798 self."pyramid-beaker"
1797 self."pyramid-beaker"
1799 self."pyramid-debugtoolbar"
1798 self."pyramid-debugtoolbar"
1800 self."pyramid-jinja2"
1801 self."pyramid-mako"
1799 self."pyramid-mako"
1802 self."pyramid"
1800 self."pyramid"
1803 self."pyramid-mailer"
1801 self."pyramid-mailer"
@@ -1820,7 +1818,6 b' self: super: {'
1820 self."sshpubkeys"
1818 self."sshpubkeys"
1821 self."subprocess32"
1819 self."subprocess32"
1822 self."supervisor"
1820 self."supervisor"
1823 self."tempita"
1824 self."translationstring"
1821 self."translationstring"
1825 self."urllib3"
1822 self."urllib3"
1826 self."urlobject"
1823 self."urlobject"
@@ -1913,11 +1910,11 b' self: super: {'
1913 };
1910 };
1914 };
1911 };
1915 "scandir" = super.buildPythonPackage {
1912 "scandir" = super.buildPythonPackage {
1916 name = "scandir-1.9.0";
1913 name = "scandir-1.10.0";
1917 doCheck = false;
1914 doCheck = false;
1918 src = fetchurl {
1915 src = fetchurl {
1919 url = "https://files.pythonhosted.org/packages/16/2a/557af1181e6b4e30254d5a6163b18f5053791ca66e251e77ab08887e8fe3/scandir-1.9.0.tar.gz";
1916 url = "https://files.pythonhosted.org/packages/df/f5/9c052db7bd54d0cbf1bc0bb6554362bba1012d03e5888950a4f5c5dadc4e/scandir-1.10.0.tar.gz";
1920 sha256 = "0r3hvf1a9jm1rkqgx40gxkmccknkaiqjavs8lccgq9s8khh5x5s4";
1917 sha256 = "1bkqwmf056pkchf05ywbnf659wqlp6lljcdb0y88wr9f0vv32ijd";
1921 };
1918 };
1922 meta = {
1919 meta = {
1923 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "New BSD License"; } ];
1920 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "New BSD License"; } ];
@@ -9,19 +9,18 b' babel==1.3'
9 beaker==1.9.1
9 beaker==1.9.1
10 bleach==3.1.0
10 bleach==3.1.0
11 celery==4.1.1
11 celery==4.1.1
12 chameleon==2.24
13 channelstream==0.5.2
12 channelstream==0.5.2
14 click==7.0
13 click==7.0
15 colander==1.7.0
14 colander==1.7.0
16 # our custom configobj
15 # our custom configobj
17 https://code.rhodecode.com/upstream/configobj/archive/a11ff0a0bd4fbda9e3a91267e720f88329efb4a6.tar.gz?md5=9916c524ea11a6c418217af6b28d4b3c#egg=configobj==5.0.6
16 https://code.rhodecode.com/upstream/configobj/archive/a11ff0a0bd4fbda9e3a91267e720f88329efb4a6.tar.gz?md5=9916c524ea11a6c418217af6b28d4b3c#egg=configobj==5.0.6
18 cssselect==1.0.3
17 cssselect==1.0.3
18 cryptography==2.6.1
19 decorator==4.1.2
19 decorator==4.1.2
20 deform==2.0.7
20 deform==2.0.7
21 docutils==0.14.0
21 docutils==0.14.0
22 dogpile.cache==0.7.1
22 dogpile.cache==0.7.1
23 dogpile.core==0.4.1
23 dogpile.core==0.4.1
24 ecdsa==0.13
25 formencode==1.2.4
24 formencode==1.2.4
26 future==0.14.3
25 future==0.14.3
27 futures==3.0.2
26 futures==3.0.2
@@ -48,7 +47,6 b' pygments==2.3.1'
48 pyparsing==2.3.0
47 pyparsing==2.3.0
49 pyramid-beaker==0.8
48 pyramid-beaker==0.8
50 pyramid-debugtoolbar==4.5.0
49 pyramid-debugtoolbar==4.5.0
51 pyramid-jinja2==2.7
52 pyramid-mako==1.0.2
50 pyramid-mako==1.0.2
53 pyramid==1.10.1
51 pyramid==1.10.1
54 pyramid_mailer==0.15.1
52 pyramid_mailer==0.15.1
@@ -71,7 +69,6 b' sqlalchemy==1.1.18'
71 sshpubkeys==3.1.0
69 sshpubkeys==3.1.0
72 subprocess32==3.5.3
70 subprocess32==3.5.3
73 supervisor==3.3.5
71 supervisor==3.3.5
74 tempita==0.5.2
75 translationstring==1.3
72 translationstring==1.3
76 urllib3==1.24.1
73 urllib3==1.24.1
77 urlobject==2.4.3
74 urlobject==2.4.3
@@ -3,9 +3,15 b''
3 atomicwrites==1.2.1
3 atomicwrites==1.2.1
4 attrs==18.2.0
4 attrs==18.2.0
5 billiard==3.5.0.3
5 billiard==3.5.0.3
6 chameleon==2.24
7 cffi==1.12.2
8 ecdsa==0.13
9 hupper==1.6
6 gnureadline==6.3.8
10 gnureadline==6.3.8
7 jinja2==2.9.6
11 jinja2==2.9.6
8 jsonschema==2.6.0
12 jsonschema==2.6.0
9 pathlib2==2.3.3
13 pathlib2==2.3.3
14 pyramid-jinja2==2.7
10 setproctitle==1.1.10
15 setproctitle==1.1.10
11
16 scandir==1.10.0
17 tempita==0.5.2
@@ -214,8 +214,7 b' class TestAdminSettingsGlobal(object):'
214 })
214 })
215
215
216 response = response.follow()
216 response = response.follow()
217 response.mustcontain(
217 response.mustcontain(new_title)
218 """<div class="branding">- %s</div>""" % new_title)
219
218
220 def post_and_verify_settings(self, settings):
219 def post_and_verify_settings(self, settings):
221 old_title = 'RhodeCode'
220 old_title = 'RhodeCode'
@@ -25,7 +25,7 b' import formencode'
25 import formencode.htmlfill
25 import formencode.htmlfill
26 import peppercorn
26 import peppercorn
27
27
28 from pyramid.httpexceptions import HTTPNotFound, HTTPFound
28 from pyramid.httpexceptions import HTTPNotFound, HTTPFound, HTTPBadRequest
29 from pyramid.view import view_config
29 from pyramid.view import view_config
30 from pyramid.renderers import render
30 from pyramid.renderers import render
31 from pyramid.response import Response
31 from pyramid.response import Response
@@ -67,7 +67,6 b' class GistView(BaseAppView):'
67 (Gist.ACL_LEVEL_PUBLIC, _("Can be accessed by anonymous users"))
67 (Gist.ACL_LEVEL_PUBLIC, _("Can be accessed by anonymous users"))
68 ]
68 ]
69
69
70
71 return c
70 return c
72
71
73 @LoginRequired()
72 @LoginRequired()
@@ -296,6 +295,8 b' class GistView(BaseAppView):'
296 response = Response(content)
295 response = Response(content)
297 response.content_type = 'text/plain'
296 response.content_type = 'text/plain'
298 return response
297 return response
298 elif return_format:
299 raise HTTPBadRequest()
299
300
300 return self._get_template_context(c)
301 return self._get_template_context(c)
301
302
@@ -33,7 +33,7 b' from rhodecode.lib.index import searcher'
33 from rhodecode.lib.utils2 import safe_unicode, str2bool, safe_int
33 from rhodecode.lib.utils2 import safe_unicode, str2bool, safe_int
34 from rhodecode.lib.ext_json import json
34 from rhodecode.lib.ext_json import json
35 from rhodecode.model.db import (
35 from rhodecode.model.db import (
36 func, true, or_, in_filter_generator, Repository, RepoGroup, User, UserGroup)
36 func, true, or_, case, in_filter_generator, Repository, RepoGroup, User, UserGroup)
37 from rhodecode.model.repo import RepoModel
37 from rhodecode.model.repo import RepoModel
38 from rhodecode.model.repo_group import RepoGroupModel
38 from rhodecode.model.repo_group import RepoGroupModel
39 from rhodecode.model.scm import RepoGroupList, RepoList
39 from rhodecode.model.scm import RepoGroupList, RepoList
@@ -105,21 +105,27 b' class HomeView(BaseAppView):'
105
105
106 return {'suggestions': _user_groups}
106 return {'suggestions': _user_groups}
107
107
108 def _get_repo_list(self, name_contains=None, repo_type=None, limit=20):
108 def _get_repo_list(self, name_contains=None, repo_type=None, repo_group_name='', limit=20):
109 org_query = name_contains
109 org_query = name_contains
110 allowed_ids = self._rhodecode_user.repo_acl_ids(
110 allowed_ids = self._rhodecode_user.repo_acl_ids(
111 ['repository.read', 'repository.write', 'repository.admin'],
111 ['repository.read', 'repository.write', 'repository.admin'],
112 cache=False, name_filter=name_contains) or [-1]
112 cache=False, name_filter=name_contains) or [-1]
113
113
114 query = Repository.query()\
114 query = Repository.query()\
115 .order_by(func.length(Repository.repo_name))\
116 .order_by(Repository.repo_name)\
117 .filter(Repository.archived.isnot(true()))\
115 .filter(Repository.archived.isnot(true()))\
118 .filter(or_(
116 .filter(or_(
119 # generate multiple IN to fix limitation problems
117 # generate multiple IN to fix limitation problems
120 *in_filter_generator(Repository.repo_id, allowed_ids)
118 *in_filter_generator(Repository.repo_id, allowed_ids)
121 ))
119 ))
122
120
121 query = query.order_by(case(
122 [
123 (Repository.repo_name.startswith(repo_group_name), repo_group_name+'/'),
124 ],
125 ))
126 query = query.order_by(func.length(Repository.repo_name))
127 query = query.order_by(Repository.repo_name)
128
123 if repo_type:
129 if repo_type:
124 query = query.filter(Repository.repo_type == repo_type)
130 query = query.filter(Repository.repo_type == repo_type)
125
131
@@ -145,20 +151,26 b' class HomeView(BaseAppView):'
145 }
151 }
146 for obj in acl_iter]
152 for obj in acl_iter]
147
153
148 def _get_repo_group_list(self, name_contains=None, limit=20):
154 def _get_repo_group_list(self, name_contains=None, repo_group_name='', limit=20):
149 org_query = name_contains
155 org_query = name_contains
150 allowed_ids = self._rhodecode_user.repo_group_acl_ids(
156 allowed_ids = self._rhodecode_user.repo_group_acl_ids(
151 ['group.read', 'group.write', 'group.admin'],
157 ['group.read', 'group.write', 'group.admin'],
152 cache=False, name_filter=name_contains) or [-1]
158 cache=False, name_filter=name_contains) or [-1]
153
159
154 query = RepoGroup.query()\
160 query = RepoGroup.query()\
155 .order_by(func.length(RepoGroup.group_name))\
156 .order_by(RepoGroup.group_name) \
157 .filter(or_(
161 .filter(or_(
158 # generate multiple IN to fix limitation problems
162 # generate multiple IN to fix limitation problems
159 *in_filter_generator(RepoGroup.group_id, allowed_ids)
163 *in_filter_generator(RepoGroup.group_id, allowed_ids)
160 ))
164 ))
161
165
166 query = query.order_by(case(
167 [
168 (RepoGroup.group_name.startswith(repo_group_name), repo_group_name+'/'),
169 ],
170 ))
171 query = query.order_by(func.length(RepoGroup.group_name))
172 query = query.order_by(RepoGroup.group_name)
173
162 if name_contains:
174 if name_contains:
163 ilike_expression = u'%{}%'.format(safe_unicode(name_contains))
175 ilike_expression = u'%{}%'.format(safe_unicode(name_contains))
164 query = query.filter(
176 query = query.filter(
@@ -183,11 +195,17 b' class HomeView(BaseAppView):'
183 def _get_user_list(self, name_contains=None, limit=20):
195 def _get_user_list(self, name_contains=None, limit=20):
184 org_query = name_contains
196 org_query = name_contains
185 if not name_contains:
197 if not name_contains:
186 return []
198 return [], False
187
199
188 name_contains = re.compile('(?:user:)(.+)').findall(name_contains)
200 # TODO(marcink): should all logged in users be allowed to search others?
201 allowed_user_search = self._rhodecode_user.username != User.DEFAULT_USER
202 if not allowed_user_search:
203 return [], False
204
205 name_contains = re.compile('(?:user:[ ]?)(.+)').findall(name_contains)
189 if len(name_contains) != 1:
206 if len(name_contains) != 1:
190 return []
207 return [], False
208
191 name_contains = name_contains[0]
209 name_contains = name_contains[0]
192
210
193 query = User.query()\
211 query = User.query()\
@@ -207,22 +225,28 b' class HomeView(BaseAppView):'
207 {
225 {
208 'id': obj.user_id,
226 'id': obj.user_id,
209 'value': org_query,
227 'value': org_query,
210 'value_display': obj.username,
228 'value_display': 'user: `{}`'.format(obj.username),
211 'type': 'user',
229 'type': 'user',
212 'icon_link': h.gravatar_url(obj.email, 30),
230 'icon_link': h.gravatar_url(obj.email, 30),
213 'url': h.route_path(
231 'url': h.route_path(
214 'user_profile', username=obj.username)
232 'user_profile', username=obj.username)
215 }
233 }
216 for obj in acl_iter]
234 for obj in acl_iter], True
217
235
218 def _get_user_groups_list(self, name_contains=None, limit=20):
236 def _get_user_groups_list(self, name_contains=None, limit=20):
219 org_query = name_contains
237 org_query = name_contains
220 if not name_contains:
238 if not name_contains:
221 return []
239 return [], False
222
240
223 name_contains = re.compile('(?:user_group:)(.+)').findall(name_contains)
241 # TODO(marcink): should all logged in users be allowed to search others?
242 allowed_user_search = self._rhodecode_user.username != User.DEFAULT_USER
243 if not allowed_user_search:
244 return [], False
245
246 name_contains = re.compile('(?:user_group:[ ]?)(.+)').findall(name_contains)
224 if len(name_contains) != 1:
247 if len(name_contains) != 1:
225 return []
248 return [], False
249
226 name_contains = name_contains[0]
250 name_contains = name_contains[0]
227
251
228 query = UserGroup.query()\
252 query = UserGroup.query()\
@@ -241,27 +265,34 b' class HomeView(BaseAppView):'
241 {
265 {
242 'id': obj.users_group_id,
266 'id': obj.users_group_id,
243 'value': org_query,
267 'value': org_query,
244 'value_display': obj.users_group_name,
268 'value_display': 'user_group: `{}`'.format(obj.users_group_name),
245 'type': 'user_group',
269 'type': 'user_group',
246 'url': h.route_path(
270 'url': h.route_path(
247 'user_group_profile', user_group_name=obj.users_group_name)
271 'user_group_profile', user_group_name=obj.users_group_name)
248 }
272 }
249 for obj in acl_iter]
273 for obj in acl_iter], True
250
274
251 def _get_hash_commit_list(self, auth_user, searcher, query):
275 def _get_hash_commit_list(self, auth_user, searcher, query, repo=None, repo_group=None):
276 repo_name = repo_group_name = None
277 if repo:
278 repo_name = repo.repo_name
279 if repo_group:
280 repo_group_name = repo_group.group_name
281
252 org_query = query
282 org_query = query
253 if not query or len(query) < 3 or not searcher:
283 if not query or len(query) < 3 or not searcher:
254 return []
284 return [], False
255
285
256 commit_hashes = re.compile('(?:commit:)([0-9a-f]{2,40})').findall(query)
286 commit_hashes = re.compile('(?:commit:[ ]?)([0-9a-f]{2,40})').findall(query)
257
287
258 if len(commit_hashes) != 1:
288 if len(commit_hashes) != 1:
259 return []
289 return [], False
290
260 commit_hash = commit_hashes[0]
291 commit_hash = commit_hashes[0]
261
292
262 result = searcher.search(
293 result = searcher.search(
263 'commit_id:{}*'.format(commit_hash), 'commit', auth_user,
294 'commit_id:{}*'.format(commit_hash), 'commit', auth_user,
264 raise_on_exc=False)
295 repo_name, repo_group_name, raise_on_exc=False)
265
296
266 commits = []
297 commits = []
267 for entry in result['results']:
298 for entry in result['results']:
@@ -286,7 +317,55 b' class HomeView(BaseAppView):'
286 }
317 }
287
318
288 commits.append(commit_entry)
319 commits.append(commit_entry)
289 return commits
320 return commits, True
321
322 def _get_path_list(self, auth_user, searcher, query, repo=None, repo_group=None):
323 repo_name = repo_group_name = None
324 if repo:
325 repo_name = repo.repo_name
326 if repo_group:
327 repo_group_name = repo_group.group_name
328
329 org_query = query
330 if not query or len(query) < 3 or not searcher:
331 return [], False
332
333 paths_re = re.compile('(?:file:[ ]?)(.+)').findall(query)
334 if len(paths_re) != 1:
335 return [], False
336
337 file_path = paths_re[0]
338
339 search_path = searcher.escape_specials(file_path)
340 result = searcher.search(
341 'file.raw:*{}*'.format(search_path), 'path', auth_user,
342 repo_name, repo_group_name, raise_on_exc=False)
343
344 files = []
345 for entry in result['results']:
346 repo_data = {
347 'repository_id': entry.get('repository_id'),
348 'repository_type': entry.get('repo_type'),
349 'repository_name': entry.get('repository'),
350 }
351
352 file_entry = {
353 'id': entry['commit_id'],
354 'value': org_query,
355 'value_display': '`{}` file: {}'.format(
356 entry['repository'], entry['file']),
357 'type': 'file',
358 'repo': entry['repository'],
359 'repo_data': repo_data,
360
361 'url': h.route_path(
362 'repo_files',
363 repo_name=entry['repository'], commit_id=entry['commit_id'],
364 f_path=entry['file'])
365 }
366
367 files.append(file_entry)
368 return files, True
290
369
291 @LoginRequired()
370 @LoginRequired()
292 @view_config(
371 @view_config(
@@ -364,17 +443,15 b' class HomeView(BaseAppView):'
364 qry = query
443 qry = query
365 return {'q': qry, 'type': 'content'}
444 return {'q': qry, 'type': 'content'}
366 label = u'File search for `{}` in this repository.'.format(query)
445 label = u'File search for `{}` in this repository.'.format(query)
367 queries.append(
446 file_qry = {
368 {
447 'id': -10,
369 'id': -10,
448 'value': query,
370 'value': query,
449 'value_display': label,
371 'value_display': label,
450 'type': 'search',
372 'type': 'search',
451 'url': h.route_path('search_repo',
373 'url': h.route_path('search_repo',
452 repo_name=repo_name,
374 repo_name=repo_name,
453 _query=query_modifier())
375 _query=query_modifier())
376 }
454 }
377 )
378
455
379 # commits
456 # commits
380 def query_modifier():
457 def query_modifier():
@@ -382,17 +459,22 b' class HomeView(BaseAppView):'
382 return {'q': qry, 'type': 'commit'}
459 return {'q': qry, 'type': 'commit'}
383
460
384 label = u'Commit search for `{}` in this repository.'.format(query)
461 label = u'Commit search for `{}` in this repository.'.format(query)
385 queries.append(
462 commit_qry = {
386 {
463 'id': -20,
387 'id': -20,
464 'value': query,
388 'value': query,
465 'value_display': label,
389 'value_display': label,
466 'type': 'search',
390 'type': 'search',
467 'url': h.route_path('search_repo',
391 'url': h.route_path('search_repo',
468 repo_name=repo_name,
392 repo_name=repo_name,
469 _query=query_modifier())
393 _query=query_modifier())
394 }
470 }
395 )
471
472 if repo_context in ['commit', 'changelog']:
473 queries.extend([commit_qry, file_qry])
474 elif repo_context in ['files', 'summary']:
475 queries.extend([file_qry, commit_qry])
476 else:
477 queries.extend([commit_qry, file_qry])
396
478
397 elif is_es_6 and repo_group_name:
479 elif is_es_6 and repo_group_name:
398 # files
480 # files
@@ -401,17 +483,15 b' class HomeView(BaseAppView):'
401 return {'q': qry, 'type': 'content'}
483 return {'q': qry, 'type': 'content'}
402
484
403 label = u'File search for `{}` in this repository group'.format(query)
485 label = u'File search for `{}` in this repository group'.format(query)
404 queries.append(
486 file_qry = {
405 {
487 'id': -30,
406 'id': -30,
488 'value': query,
407 'value': query,
489 'value_display': label,
408 'value_display': label,
490 'type': 'search',
409 'type': 'search',
491 'url': h.route_path('search_repo_group',
410 'url': h.route_path('search_repo_group',
492 repo_group_name=repo_group_name,
411 repo_group_name=repo_group_name,
493 _query=query_modifier())
412 _query=query_modifier())
413 }
494 }
414 )
415
495
416 # commits
496 # commits
417 def query_modifier():
497 def query_modifier():
@@ -419,18 +499,24 b' class HomeView(BaseAppView):'
419 return {'q': qry, 'type': 'commit'}
499 return {'q': qry, 'type': 'commit'}
420
500
421 label = u'Commit search for `{}` in this repository group'.format(query)
501 label = u'Commit search for `{}` in this repository group'.format(query)
422 queries.append(
502 commit_qry = {
423 {
503 'id': -40,
424 'id': -40,
504 'value': query,
425 'value': query,
505 'value_display': label,
426 'value_display': label,
506 'type': 'search',
427 'type': 'search',
507 'url': h.route_path('search_repo_group',
428 'url': h.route_path('search_repo_group',
508 repo_group_name=repo_group_name,
429 repo_group_name=repo_group_name,
509 _query=query_modifier())
430 _query=query_modifier())
431 }
510 }
432 )
433
511
512 if repo_context in ['commit', 'changelog']:
513 queries.extend([commit_qry, file_qry])
514 elif repo_context in ['files', 'summary']:
515 queries.extend([file_qry, commit_qry])
516 else:
517 queries.extend([commit_qry, file_qry])
518
519 # Global, not scoped
434 if not queries:
520 if not queries:
435 queries.append(
521 queries.append(
436 {
522 {
@@ -469,54 +555,107 b' class HomeView(BaseAppView):'
469 if not query:
555 if not query:
470 return {'suggestions': res}
556 return {'suggestions': res}
471
557
558 def no_match(name):
559 return {
560 'id': -1,
561 'value': "",
562 'value_display': name,
563 'type': 'text',
564 'url': ""
565 }
472 searcher = searcher_from_config(self.request.registry.settings)
566 searcher = searcher_from_config(self.request.registry.settings)
473 for _q in self._get_default_search_queries(self.request.GET, searcher, query):
567 has_specialized_search = False
474 res.append(_q)
475
568
569 # set repo context
570 repo = None
571 repo_id = safe_int(self.request.GET.get('search_context[repo_id]'))
572 if repo_id:
573 repo = Repository.get(repo_id)
574
575 # set group context
576 repo_group = None
476 repo_group_id = safe_int(self.request.GET.get('search_context[repo_group_id]'))
577 repo_group_id = safe_int(self.request.GET.get('search_context[repo_group_id]'))
477 if repo_group_id:
578 if repo_group_id:
478 repo_group = RepoGroup.get(repo_group_id)
579 repo_group = RepoGroup.get(repo_group_id)
479 composed_hint = '{}/{}'.format(repo_group.group_name, query)
580 prefix_match = False
480 show_hint = not query.startswith(repo_group.group_name)
581
481 if repo_group and show_hint:
582 # user: type search
482 hint = u'Repository search inside: `{}`'.format(composed_hint)
583 if not prefix_match:
483 res.append({
584 users, prefix_match = self._get_user_list(query)
484 'id': -1,
585 if users:
485 'value': composed_hint,
586 has_specialized_search = True
486 'value_display': hint,
587 for serialized_user in users:
487 'type': 'hint',
588 res.append(serialized_user)
488 'url': ""
589 elif prefix_match:
489 })
590 has_specialized_search = True
591 res.append(no_match('No matching users found'))
490
592
491 repo_groups = self._get_repo_group_list(query)
593 # user_group: type search
492 for serialized_repo_group in repo_groups:
594 if not prefix_match:
493 res.append(serialized_repo_group)
595 user_groups, prefix_match = self._get_user_groups_list(query)
596 if user_groups:
597 has_specialized_search = True
598 for serialized_user_group in user_groups:
599 res.append(serialized_user_group)
600 elif prefix_match:
601 has_specialized_search = True
602 res.append(no_match('No matching user groups found'))
494
603
495 repos = self._get_repo_list(query)
604 # FTS commit: type search
496 for serialized_repo in repos:
605 if not prefix_match:
497 res.append(serialized_repo)
606 commits, prefix_match = self._get_hash_commit_list(
607 c.auth_user, searcher, query, repo, repo_group)
608 if commits:
609 has_specialized_search = True
610 unique_repos = collections.OrderedDict()
611 for commit in commits:
612 repo_name = commit['repo']
613 unique_repos.setdefault(repo_name, []).append(commit)
498
614
499 # TODO(marcink): should all logged in users be allowed to search others?
615 for _repo, commits in unique_repos.items():
500 allowed_user_search = self._rhodecode_user.username != User.DEFAULT_USER
616 for commit in commits:
501 if allowed_user_search:
617 res.append(commit)
502 users = self._get_user_list(query)
618 elif prefix_match:
503 for serialized_user in users:
619 has_specialized_search = True
504 res.append(serialized_user)
620 res.append(no_match('No matching commits found'))
505
621
506 user_groups = self._get_user_groups_list(query)
622 # FTS file: type search
507 for serialized_user_group in user_groups:
623 if not prefix_match:
508 res.append(serialized_user_group)
624 paths, prefix_match = self._get_path_list(
625 c.auth_user, searcher, query, repo, repo_group)
626 if paths:
627 has_specialized_search = True
628 unique_repos = collections.OrderedDict()
629 for path in paths:
630 repo_name = path['repo']
631 unique_repos.setdefault(repo_name, []).append(path)
509
632
510 commits = self._get_hash_commit_list(c.auth_user, searcher, query)
633 for repo, paths in unique_repos.items():
511 if commits:
634 for path in paths:
512 unique_repos = collections.OrderedDict()
635 res.append(path)
513 for commit in commits:
636 elif prefix_match:
514 repo_name = commit['repo']
637 has_specialized_search = True
515 unique_repos.setdefault(repo_name, []).append(commit)
638 res.append(no_match('No matching files found'))
639
640 # main suggestions
641 if not has_specialized_search:
642 repo_group_name = ''
643 if repo_group:
644 repo_group_name = repo_group.group_name
516
645
517 for repo, commits in unique_repos.items():
646 for _q in self._get_default_search_queries(self.request.GET, searcher, query):
518 for commit in commits:
647 res.append(_q)
519 res.append(commit)
648
649 repo_groups = self._get_repo_group_list(query, repo_group_name=repo_group_name)
650 for serialized_repo_group in repo_groups:
651 res.append(serialized_repo_group)
652
653 repos = self._get_repo_list(query, repo_group_name=repo_group_name)
654 for serialized_repo in repos:
655 res.append(serialized_repo)
656
657 if not repos and not repo_groups:
658 res.append(no_match('No matches found'))
520
659
521 return {'suggestions': res}
660 return {'suggestions': res}
522
661
@@ -152,6 +152,26 b' class RepoSummaryView(RepoAppView):'
152 c.comments = self.db_repo.get_comments(page_ids)
152 c.comments = self.db_repo.get_comments(page_ids)
153 c.statuses = self.db_repo.statuses(page_ids)
153 c.statuses = self.db_repo.statuses(page_ids)
154
154
155 def _prepare_and_set_clone_url(self, c):
156 username = ''
157 if self._rhodecode_user.username != User.DEFAULT_USER:
158 username = safe_str(self._rhodecode_user.username)
159
160 _def_clone_uri = _def_clone_uri_id = c.clone_uri_tmpl
161 _def_clone_uri_ssh = c.clone_uri_ssh_tmpl
162
163 if '{repo}' in _def_clone_uri:
164 _def_clone_uri_id = _def_clone_uri.replace('{repo}', '_{repoid}')
165 elif '{repoid}' in _def_clone_uri:
166 _def_clone_uri_id = _def_clone_uri.replace('_{repoid}', '{repo}')
167
168 c.clone_repo_url = self.db_repo.clone_url(
169 user=username, uri_tmpl=_def_clone_uri)
170 c.clone_repo_url_id = self.db_repo.clone_url(
171 user=username, uri_tmpl=_def_clone_uri_id)
172 c.clone_repo_url_ssh = self.db_repo.clone_url(
173 uri_tmpl=_def_clone_uri_ssh, ssh=True)
174
155 @LoginRequired()
175 @LoginRequired()
156 @HasRepoPermissionAnyDecorator(
176 @HasRepoPermissionAnyDecorator(
157 'repository.read', 'repository.write', 'repository.admin')
177 'repository.read', 'repository.write', 'repository.admin')
@@ -160,6 +180,7 b' class RepoSummaryView(RepoAppView):'
160 renderer='rhodecode:templates/summary/summary_commits.mako')
180 renderer='rhodecode:templates/summary/summary_commits.mako')
161 def summary_commits(self):
181 def summary_commits(self):
162 c = self.load_default_context()
182 c = self.load_default_context()
183 self._prepare_and_set_clone_url(c)
163 self._load_commits_context(c)
184 self._load_commits_context(c)
164 return self._get_template_context(c)
185 return self._get_template_context(c)
165
186
@@ -179,26 +200,7 b' class RepoSummaryView(RepoAppView):'
179 c = self.load_default_context()
200 c = self.load_default_context()
180
201
181 # Prepare the clone URL
202 # Prepare the clone URL
182 username = ''
203 self._prepare_and_set_clone_url(c)
183 if self._rhodecode_user.username != User.DEFAULT_USER:
184 username = safe_str(self._rhodecode_user.username)
185
186 _def_clone_uri = _def_clone_uri_id = c.clone_uri_tmpl
187 _def_clone_uri_ssh = c.clone_uri_ssh_tmpl
188
189 if '{repo}' in _def_clone_uri:
190 _def_clone_uri_id = _def_clone_uri.replace(
191 '{repo}', '_{repoid}')
192 elif '{repoid}' in _def_clone_uri:
193 _def_clone_uri_id = _def_clone_uri.replace(
194 '_{repoid}', '{repo}')
195
196 c.clone_repo_url = self.db_repo.clone_url(
197 user=username, uri_tmpl=_def_clone_uri)
198 c.clone_repo_url_id = self.db_repo.clone_url(
199 user=username, uri_tmpl=_def_clone_uri_id)
200 c.clone_repo_url_ssh = self.db_repo.clone_url(
201 uri_tmpl=_def_clone_uri_ssh, ssh=True)
202
204
203 # If enabled, get statistics data
205 # If enabled, get statistics data
204
206
This diff has been collapsed as it changes many lines, (877 lines changed) Show them Hide them
@@ -28,23 +28,16 b''
28 {
28 {
29 "license": [
29 "license": [
30 {
30 {
31 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
32 "shortName": "bsdOriginal",
33 "spdxId": "BSD-4-Clause",
34 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
35 }
36 ],
37 "name": "python2.7-coverage-3.7.1"
38 },
39 {
40 "license": [
41 {
42 "fullName": "MIT License",
31 "fullName": "MIT License",
43 "shortName": "mit",
32 "shortName": "mit",
44 "spdxId": "MIT",
33 "spdxId": "MIT",
45 "url": "http://spdx.org/licenses/MIT.html"
34 "url": "http://spdx.org/licenses/MIT.html"
46 }
35 }
47 ],
36 ],
37 "name": "python2.7-beautifulsoup4-4.6.3"
38 },
39 {
40 "license": "UNKNOWN",
48 "name": "python2.7-bootstrapped-pip-9.0.1"
41 "name": "python2.7-bootstrapped-pip-9.0.1"
49 },
42 },
50 {
43 {
@@ -56,29 +49,7 b''
56 "url": "http://spdx.org/licenses/MIT.html"
49 "url": "http://spdx.org/licenses/MIT.html"
57 }
50 }
58 ],
51 ],
59 "name": "python2.7-cov-core-1.15.0"
52 "name": "python2.7-webtest-2.0.32"
60 },
61 {
62 "license": [
63 {
64 "fullName": "MIT License",
65 "shortName": "mit",
66 "spdxId": "MIT",
67 "url": "http://spdx.org/licenses/MIT.html"
68 }
69 ],
70 "name": "python2.7-webtest-2.0.29"
71 },
72 {
73 "license": [
74 {
75 "fullName": "MIT License",
76 "shortName": "mit",
77 "spdxId": "MIT",
78 "url": "http://spdx.org/licenses/MIT.html"
79 }
80 ],
81 "name": "python2.7-beautifulsoup4-4.6.3"
82 },
53 },
83 {
54 {
84 "license": [
55 "license": [
@@ -100,7 +71,7 b''
100 "url": "http://spdx.org/licenses/MIT.html"
71 "url": "http://spdx.org/licenses/MIT.html"
101 }
72 }
102 ],
73 ],
103 "name": "python2.7-webob-1.7.4"
74 "name": "python2.7-webob-1.8.4"
104 },
75 },
105 {
76 {
106 "license": [
77 "license": [
@@ -116,6 +87,28 b''
116 {
87 {
117 "license": [
88 "license": [
118 {
89 {
90 "fullName": "Apache License 2.0",
91 "shortName": "asl20",
92 "spdxId": "Apache-2.0",
93 "url": "http://spdx.org/licenses/Apache-2.0.html"
94 }
95 ],
96 "name": "python2.7-coverage-4.5.1"
97 },
98 {
99 "license": [
100 {
101 "fullName": "MIT License",
102 "shortName": "mit",
103 "spdxId": "MIT",
104 "url": "http://spdx.org/licenses/MIT.html"
105 }
106 ],
107 "name": "python2.7-cov-core-1.15.0"
108 },
109 {
110 "license": [
111 {
119 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
112 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
120 "shortName": "bsdOriginal",
113 "shortName": "bsdOriginal",
121 "spdxId": "BSD-4-Clause",
114 "spdxId": "BSD-4-Clause",
@@ -127,6 +120,17 b''
127 {
120 {
128 "license": [
121 "license": [
129 {
122 {
123 "fullName": "GNU Lesser General Public License v3 or later (LGPLv3+)"
124 },
125 {
126 "fullName": "LGPL"
127 }
128 ],
129 "name": "python2.7-gprof2dot-2017.9.19"
130 },
131 {
132 "license": [
133 {
130 "fullName": "MIT License",
134 "fullName": "MIT License",
131 "shortName": "mit",
135 "shortName": "mit",
132 "spdxId": "MIT",
136 "spdxId": "MIT",
@@ -136,7 +140,7 b''
136 "fullName": "DFSG approved"
140 "fullName": "DFSG approved"
137 }
141 }
138 ],
142 ],
139 "name": "python2.7-pytest-timeout-1.2.1"
143 "name": "python2.7-pytest-timeout-1.3.2"
140 },
144 },
141 {
145 {
142 "license": [
146 "license": [
@@ -147,7 +151,32 b''
147 "url": "http://spdx.org/licenses/MIT.html"
151 "url": "http://spdx.org/licenses/MIT.html"
148 }
152 }
149 ],
153 ],
150 "name": "python2.7-pytest-3.6.0"
154 "name": "python2.7-pytest-3.8.2"
155 },
156 {
157 "license": [
158 {
159 "fullName": "MIT License",
160 "shortName": "mit",
161 "spdxId": "MIT",
162 "url": "http://spdx.org/licenses/MIT.html"
163 }
164 ],
165 "name": "python2.7-pathlib2-2.3.3"
166 },
167 {
168 "license": [
169 {
170 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
171 "shortName": "bsdOriginal",
172 "spdxId": "BSD-4-Clause",
173 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
174 },
175 {
176 "fullName": "New BSD License"
177 }
178 ],
179 "name": "python2.7-scandir-1.9.0"
151 },
180 },
152 {
181 {
153 "license": [
182 "license": [
@@ -172,7 +201,7 b''
172 "url": "http://spdx.org/licenses/MIT.html"
201 "url": "http://spdx.org/licenses/MIT.html"
173 }
202 }
174 ],
203 ],
175 "name": "python2.7-pluggy-0.6.0"
204 "name": "python2.7-pluggy-0.9.0"
176 },
205 },
177 {
206 {
178 "license": [
207 "license": [
@@ -183,7 +212,7 b''
183 "url": "http://spdx.org/licenses/MIT.html"
212 "url": "http://spdx.org/licenses/MIT.html"
184 }
213 }
185 ],
214 ],
186 "name": "python2.7-atomicwrites-1.1.5"
215 "name": "python2.7-atomicwrites-1.2.1"
187 },
216 },
188 {
217 {
189 "license": [
218 "license": [
@@ -194,7 +223,7 b''
194 "url": "http://spdx.org/licenses/MIT.html"
223 "url": "http://spdx.org/licenses/MIT.html"
195 }
224 }
196 ],
225 ],
197 "name": "python2.7-more-itertools-4.3.0"
226 "name": "python2.7-more-itertools-5.0.0"
198 },
227 },
199 {
228 {
200 "license": [
229 "license": [
@@ -205,7 +234,7 b''
205 "url": "http://spdx.org/licenses/MIT.html"
234 "url": "http://spdx.org/licenses/MIT.html"
206 }
235 }
207 ],
236 ],
208 "name": "python2.7-attrs-18.1.0"
237 "name": "python2.7-attrs-18.2.0"
209 },
238 },
210 {
239 {
211 "license": [
240 "license": [
@@ -216,18 +245,7 b''
216 "url": "http://spdx.org/licenses/MIT.html"
245 "url": "http://spdx.org/licenses/MIT.html"
217 }
246 }
218 ],
247 ],
219 "name": "python2.7-py-1.5.3"
248 "name": "python2.7-py-1.6.0"
220 },
221 {
222 "license": [
223 {
224 "fullName": "GNU Lesser General Public License v3 or later (LGPLv3+)"
225 },
226 {
227 "fullName": "LGPL"
228 }
229 ],
230 "name": "python2.7-gprof2dot-2017.9.19"
231 },
249 },
232 {
250 {
233 "license": [
251 "license": [
@@ -299,7 +317,7 b''
299 "url": "http://spdx.org/licenses/MIT.html"
317 "url": "http://spdx.org/licenses/MIT.html"
300 }
318 }
301 ],
319 ],
302 "name": "python2.7-pytest-cov-2.5.1"
320 "name": "python2.7-pytest-cov-2.6.0"
303 },
321 },
304 {
322 {
305 "license": [
323 "license": [
@@ -310,7 +328,7 b''
310 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
328 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
311 }
329 }
312 ],
330 ],
313 "name": "python2.7-appenlight-client-0.6.25"
331 "name": "python2.7-appenlight-client-0.6.26"
314 },
332 },
315 {
333 {
316 "license": [
334 "license": [
@@ -326,10 +344,107 b''
326 {
344 {
327 "license": [
345 "license": [
328 {
346 {
329 "fullName": "AGPLv3 and Proprietary"
347 "fullName": "Apache 2.0 and Proprietary"
348 }
349 ],
350 "name": "python2.7-rhodecode-tools-1.2.1"
351 },
352 {
353 "license": [
354 {
355 "fullName": "Apache License 2.0",
356 "shortName": "asl20",
357 "spdxId": "Apache-2.0",
358 "url": "http://spdx.org/licenses/Apache-2.0.html"
359 }
360 ],
361 "name": "python2.7-elasticsearch1-dsl-0.0.12"
362 },
363 {
364 "license": [
365 {
366 "fullName": "Apache License 2.0",
367 "shortName": "asl20",
368 "spdxId": "Apache-2.0",
369 "url": "http://spdx.org/licenses/Apache-2.0.html"
370 }
371 ],
372 "name": "python2.7-elasticsearch1-1.10.0"
373 },
374 {
375 "license": [
376 {
377 "fullName": "MIT License",
378 "shortName": "mit",
379 "spdxId": "MIT",
380 "url": "http://spdx.org/licenses/MIT.html"
330 }
381 }
331 ],
382 ],
332 "name": "python2.7-rhodecode-tools-0.16.0"
383 "name": "python2.7-urllib3-1.24.1"
384 },
385 {
386 "license": [
387 {
388 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
389 "shortName": "bsdOriginal",
390 "spdxId": "BSD-4-Clause",
391 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
392 },
393 {
394 "fullName": "Apache License 2.0",
395 "shortName": "asl20",
396 "spdxId": "Apache-2.0",
397 "url": "http://spdx.org/licenses/Apache-2.0.html"
398 },
399 {
400 "fullName": "Dual License"
401 }
402 ],
403 "name": "python2.7-python-dateutil-2.8.0"
404 },
405 {
406 "license": [
407 {
408 "fullName": "Apache License 2.0",
409 "shortName": "asl20",
410 "spdxId": "Apache-2.0",
411 "url": "http://spdx.org/licenses/Apache-2.0.html"
412 }
413 ],
414 "name": "python2.7-elasticsearch2-2.5.0"
415 },
416 {
417 "license": [
418 {
419 "fullName": "Apache License 2.0",
420 "shortName": "asl20",
421 "spdxId": "Apache-2.0",
422 "url": "http://spdx.org/licenses/Apache-2.0.html"
423 }
424 ],
425 "name": "python2.7-elasticsearch-dsl-6.3.1"
426 },
427 {
428 "license": [
429 {
430 "fullName": "Python Software Foundation License version 2",
431 "shortName": "psfl",
432 "spdxId": "Python-2.0",
433 "url": "http://spdx.org/licenses/Python-2.0.html"
434 }
435 ],
436 "name": "python2.7-ipaddress-1.0.22"
437 },
438 {
439 "license": [
440 {
441 "fullName": "Apache License 2.0",
442 "shortName": "asl20",
443 "spdxId": "Apache-2.0",
444 "url": "http://spdx.org/licenses/Apache-2.0.html"
445 }
446 ],
447 "name": "python2.7-elasticsearch-6.3.1"
333 },
448 },
334 {
449 {
335 "license": [
450 "license": [
@@ -351,66 +466,13 b''
351 {
466 {
352 "license": [
467 "license": [
353 {
468 {
354 "fullName": "MIT License",
355 "shortName": "mit",
356 "spdxId": "MIT",
357 "url": "http://spdx.org/licenses/MIT.html"
358 }
359 ],
360 "name": "python2.7-urllib3-1.21"
361 },
362 {
363 "license": [
364 {
365 "fullName": "Apache License 2.0",
366 "shortName": "asl20",
367 "spdxId": "Apache-2.0",
368 "url": "http://spdx.org/licenses/Apache-2.0.html"
369 }
370 ],
371 "name": "python2.7-elasticsearch-dsl-2.2.0"
372 },
373 {
374 "license": [
375 {
376 "fullName": "Apache License 2.0",
377 "shortName": "asl20",
378 "spdxId": "Apache-2.0",
379 "url": "http://spdx.org/licenses/Apache-2.0.html"
380 }
381 ],
382 "name": "python2.7-elasticsearch-2.3.0"
383 },
384 {
385 "license": [
386 {
387 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
388 "shortName": "bsdOriginal",
389 "spdxId": "BSD-4-Clause",
390 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
391 },
392 {
393 "fullName": "Apache License 2.0",
394 "shortName": "asl20",
395 "spdxId": "Apache-2.0",
396 "url": "http://spdx.org/licenses/Apache-2.0.html"
397 },
398 {
399 "fullName": "Dual License"
400 }
401 ],
402 "name": "python2.7-python-dateutil-2.7.3"
403 },
404 {
405 "license": [
406 {
407 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
469 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
408 "shortName": "bsdOriginal",
470 "shortName": "bsdOriginal",
409 "spdxId": "BSD-4-Clause",
471 "spdxId": "BSD-4-Clause",
410 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
472 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
411 }
473 }
412 ],
474 ],
413 "name": "python2.7-markupsafe-1.0"
475 "name": "python2.7-markupsafe-1.1.0"
414 },
476 },
415 {
477 {
416 "license": [
478 "license": [
@@ -443,29 +505,7 b''
443 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
505 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
444 }
506 }
445 ],
507 ],
446 "name": "python2.7-click-6.6"
508 "name": "python2.7-click-7.0"
447 },
448 {
449 "license": [
450 {
451 "fullName": "MIT License",
452 "shortName": "mit",
453 "spdxId": "MIT",
454 "url": "http://spdx.org/licenses/MIT.html"
455 }
456 ],
457 "name": "python2.7-bottle-0.12.13"
458 },
459 {
460 "license": [
461 {
462 "fullName": "MIT License",
463 "shortName": "mit",
464 "spdxId": "MIT",
465 "url": "http://spdx.org/licenses/MIT.html"
466 }
467 ],
468 "name": "python2.7-cprofilev-1.0.7"
469 },
509 },
470 {
510 {
471 "license": [
511 "license": [
@@ -519,31 +559,6 b''
519 "url": "http://spdx.org/licenses/MIT.html"
559 "url": "http://spdx.org/licenses/MIT.html"
520 }
560 }
521 ],
561 ],
522 "name": "python2.7-pathlib2-2.3.0"
523 },
524 {
525 "license": [
526 {
527 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
528 "shortName": "bsdOriginal",
529 "spdxId": "BSD-4-Clause",
530 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
531 },
532 {
533 "fullName": "New BSD License"
534 }
535 ],
536 "name": "python2.7-scandir-1.9.0"
537 },
538 {
539 "license": [
540 {
541 "fullName": "MIT License",
542 "shortName": "mit",
543 "spdxId": "MIT",
544 "url": "http://spdx.org/licenses/MIT.html"
545 }
546 ],
547 "name": "python2.7-backports.shutil-get-terminal-size-1.0.0"
562 "name": "python2.7-backports.shutil-get-terminal-size-1.0.0"
548 },
563 },
549 {
564 {
@@ -555,7 +570,7 b''
555 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
570 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
556 }
571 }
557 ],
572 ],
558 "name": "python2.7-pygments-2.2.0"
573 "name": "python2.7-pygments-2.3.1"
559 },
574 },
560 {
575 {
561 "license": [
576 "license": [
@@ -646,7 +661,7 b''
646 "url": "http://spdx.org/licenses/MIT.html"
661 "url": "http://spdx.org/licenses/MIT.html"
647 }
662 }
648 ],
663 ],
649 "name": "python2.7-pickleshare-0.7.4"
664 "name": "python2.7-pickleshare-0.7.5"
650 },
665 },
651 {
666 {
652 "license": [
667 "license": [
@@ -690,7 +705,7 b''
690 "url": "http://spdx.org/licenses/MIT.html"
705 "url": "http://spdx.org/licenses/MIT.html"
691 }
706 }
692 ],
707 ],
693 "name": "python2.7-greenlet-0.4.13"
708 "name": "python2.7-greenlet-0.4.15"
694 },
709 },
695 {
710 {
696 "license": [
711 "license": [
@@ -701,7 +716,7 b''
701 "url": "http://spdx.org/licenses/MIT.html"
716 "url": "http://spdx.org/licenses/MIT.html"
702 }
717 }
703 ],
718 ],
704 "name": "python2.7-gevent-1.3.5"
719 "name": "python2.7-gevent-1.4.0"
705 },
720 },
706 {
721 {
707 "license": [
722 "license": [
@@ -712,7 +727,7 b''
712 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
727 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
713 }
728 }
714 ],
729 ],
715 "name": "python2.7-psutil-5.4.6"
730 "name": "python2.7-psutil-5.5.1"
716 },
731 },
717 {
732 {
718 "license": [
733 "license": [
@@ -745,7 +760,7 b''
745 "url": "http://spdx.org/licenses/MIT.html"
760 "url": "http://spdx.org/licenses/MIT.html"
746 }
761 }
747 ],
762 ],
748 "name": "python2.7-alembic-0.9.9"
763 "name": "python2.7-alembic-1.0.5"
749 },
764 },
750 {
765 {
751 "license": {
766 "license": {
@@ -754,7 +769,7 b''
754 "spdxId": "Apache-2.0",
769 "spdxId": "Apache-2.0",
755 "url": "http://spdx.org/licenses/Apache-2.0.html"
770 "url": "http://spdx.org/licenses/Apache-2.0.html"
756 },
771 },
757 "name": "python2.7-python-editor-1.0.3"
772 "name": "python2.7-python-editor-1.0.4"
758 },
773 },
759 {
774 {
760 "license": [
775 "license": [
@@ -842,39 +857,6 b''
842 {
857 {
843 "license": [
858 "license": [
844 {
859 {
845 "fullName": "Apache License 2.0",
846 "shortName": "asl20",
847 "spdxId": "Apache-2.0",
848 "url": "http://spdx.org/licenses/Apache-2.0.html"
849 }
850 ],
851 "name": "python2.7-bleach-2.1.4"
852 },
853 {
854 "license": [
855 {
856 "fullName": "MIT License",
857 "shortName": "mit",
858 "spdxId": "MIT",
859 "url": "http://spdx.org/licenses/MIT.html"
860 }
861 ],
862 "name": "python2.7-html5lib-1.0.1"
863 },
864 {
865 "license": [
866 {
867 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
868 "shortName": "bsdOriginal",
869 "spdxId": "BSD-4-Clause",
870 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
871 }
872 ],
873 "name": "python2.7-webencodings-0.5.1"
874 },
875 {
876 "license": [
877 {
878 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
860 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
879 "shortName": "bsdOriginal",
861 "shortName": "bsdOriginal",
880 "spdxId": "BSD-4-Clause",
862 "spdxId": "BSD-4-Clause",
@@ -892,7 +874,7 b''
892 "url": "http://spdx.org/licenses/MIT.html"
874 "url": "http://spdx.org/licenses/MIT.html"
893 }
875 }
894 ],
876 ],
895 "name": "python2.7-testpath-0.3.1"
877 "name": "python2.7-testpath-0.4.2"
896 },
878 },
897 {
879 {
898 "license": [
880 "license": [
@@ -908,6 +890,28 b''
908 {
890 {
909 "license": [
891 "license": [
910 {
892 {
893 "fullName": "Apache License 2.0",
894 "shortName": "asl20",
895 "spdxId": "Apache-2.0",
896 "url": "http://spdx.org/licenses/Apache-2.0.html"
897 }
898 ],
899 "name": "python2.7-bleach-3.1.0"
900 },
901 {
902 "license": [
903 {
904 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
905 "shortName": "bsdOriginal",
906 "spdxId": "BSD-4-Clause",
907 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
908 }
909 ],
910 "name": "python2.7-webencodings-0.5.1"
911 },
912 {
913 "license": [
914 {
911 "fullName": "MIT License",
915 "fullName": "MIT License",
912 "shortName": "mit",
916 "shortName": "mit",
913 "spdxId": "MIT",
917 "spdxId": "MIT",
@@ -925,7 +929,7 b''
925 "url": "http://spdx.org/licenses/MIT.html"
929 "url": "http://spdx.org/licenses/MIT.html"
926 }
930 }
927 ],
931 ],
928 "name": "python2.7-configparser-3.5.0"
932 "name": "python2.7-configparser-3.7.3"
929 },
933 },
930 {
934 {
931 "license": [
935 "license": [
@@ -947,7 +951,73 b''
947 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
951 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
948 }
952 }
949 ],
953 ],
950 "name": "python2.7-mistune-0.8.3"
954 "name": "python2.7-mistune-0.8.4"
955 },
956 {
957 "license": {
958 "fullName": "GNU Lesser General Public License v3.0 or later",
959 "shortName": "lgpl3Plus",
960 "spdxId": "LGPL-3.0+",
961 "url": "http://spdx.org/licenses/LGPL-3.0+.html"
962 },
963 "name": "python2.7-psycopg2-2.7.7"
964 },
965 {
966 "license": {
967 "fullName": "PostgreSQL License",
968 "shortName": "postgresql",
969 "spdxId": "PostgreSQL",
970 "url": "http://spdx.org/licenses/PostgreSQL.html"
971 },
972 "name": "postgresql-9.6.10"
973 },
974 {
975 "license": [
976 {
977 "fullName": "zlib License",
978 "shortName": "zlib",
979 "spdxId": "Zlib",
980 "url": "http://spdx.org/licenses/Zlib.html"
981 },
982 {
983 "fullName": "libpng License",
984 "shortName": "libpng",
985 "spdxId": "Libpng",
986 "url": "http://spdx.org/licenses/Libpng.html"
987 }
988 ],
989 "name": "python2.7-pysqlite-2.8.3"
990 },
991 {
992 "license": [
993 {
994 "fullName": "MIT License",
995 "shortName": "mit",
996 "spdxId": "MIT",
997 "url": "http://spdx.org/licenses/MIT.html"
998 }
999 ],
1000 "name": "python2.7-pymysql-0.8.1"
1001 },
1002 {
1003 "license": [
1004 {
1005 "fullName": "GNU General Public License v1.0 only",
1006 "shortName": "gpl1",
1007 "spdxId": "GPL-1.0",
1008 "url": "http://spdx.org/licenses/GPL-1.0.html"
1009 }
1010 ],
1011 "name": "python2.7-mysql-python-1.2.5"
1012 },
1013 {
1014 "license": {
1015 "fullName": "GNU Library General Public License v2.1 only",
1016 "shortName": "lgpl21",
1017 "spdxId": "LGPL-2.1",
1018 "url": "http://spdx.org/licenses/LGPL-2.1.html"
1019 },
1020 "name": "mariadb-connector-c-2.3.4"
951 },
1021 },
952 {
1022 {
953 "license": [
1023 "license": [
@@ -958,7 +1028,7 b''
958 "url": "http://spdx.org/licenses/ZPL-2.1.html"
1028 "url": "http://spdx.org/licenses/ZPL-2.1.html"
959 }
1029 }
960 ],
1030 ],
961 "name": "python2.7-zope.interface-4.5.0"
1031 "name": "python2.7-zope.interface-4.6.0"
962 },
1032 },
963 {
1033 {
964 "license": [
1034 "license": [
@@ -969,7 +1039,7 b''
969 "url": "http://spdx.org/licenses/ZPL-2.1.html"
1039 "url": "http://spdx.org/licenses/ZPL-2.1.html"
970 }
1040 }
971 ],
1041 ],
972 "name": "python2.7-zope.event-4.3.0"
1042 "name": "python2.7-zope.event-4.4"
973 },
1043 },
974 {
1044 {
975 "license": [
1045 "license": [
@@ -980,7 +1050,7 b''
980 "url": "http://spdx.org/licenses/ZPL-2.1.html"
1050 "url": "http://spdx.org/licenses/ZPL-2.1.html"
981 }
1051 }
982 ],
1052 ],
983 "name": "python2.7-zope.deprecation-4.3.0"
1053 "name": "python2.7-zope.deprecation-4.4.0"
984 },
1054 },
985 {
1055 {
986 "license": [
1056 "license": [
@@ -1043,7 +1113,7 b''
1043 "url": "http://spdx.org/licenses/MIT.html"
1113 "url": "http://spdx.org/licenses/MIT.html"
1044 }
1114 }
1045 ],
1115 ],
1046 "name": "python2.7-paste-2.0.3"
1116 "name": "python2.7-paste-3.0.5"
1047 },
1117 },
1048 {
1118 {
1049 "license": [
1119 "license": [
@@ -1061,7 +1131,7 b''
1061 "fullName": "Repoze License",
1131 "fullName": "Repoze License",
1062 "url": "http://www.repoze.org/LICENSE.txt"
1132 "url": "http://www.repoze.org/LICENSE.txt"
1063 },
1133 },
1064 "name": "python2.7-venusian-1.1.0"
1134 "name": "python2.7-venusian-1.2.0"
1065 },
1135 },
1066 {
1136 {
1067 "license": {
1137 "license": {
@@ -1072,17 +1142,6 b''
1072 "name": "python2.7-urlobject-2.4.3"
1142 "name": "python2.7-urlobject-2.4.3"
1073 },
1143 },
1074 {
1144 {
1075 "license": [
1076 {
1077 "fullName": "Apache License 2.0",
1078 "shortName": "asl20",
1079 "spdxId": "Apache-2.0",
1080 "url": "http://spdx.org/licenses/Apache-2.0.html"
1081 }
1082 ],
1083 "name": "python2.7-trollius-1.0.4"
1084 },
1085 {
1086 "license": {
1145 "license": {
1087 "fullName": "Repoze License",
1146 "fullName": "Repoze License",
1088 "url": "http://www.repoze.org/LICENSE.txt"
1147 "url": "http://www.repoze.org/LICENSE.txt"
@@ -1095,7 +1154,7 b''
1095 "fullName": "BSD-derived (http://www.repoze.org/LICENSE.txt)"
1154 "fullName": "BSD-derived (http://www.repoze.org/LICENSE.txt)"
1096 }
1155 }
1097 ],
1156 ],
1098 "name": "python2.7-supervisor-3.3.4"
1157 "name": "python2.7-supervisor-3.3.5"
1099 },
1158 },
1100 {
1159 {
1101 "license": [
1160 "license": [
@@ -1114,7 +1173,7 b''
1114 "url": "http://spdx.org/licenses/Python-2.0.html"
1173 "url": "http://spdx.org/licenses/Python-2.0.html"
1115 }
1174 }
1116 ],
1175 ],
1117 "name": "python2.7-subprocess32-3.5.1"
1176 "name": "python2.7-subprocess32-3.5.3"
1118 },
1177 },
1119 {
1178 {
1120 "license": [
1179 "license": [
@@ -1125,7 +1184,7 b''
1125 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1184 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1126 }
1185 }
1127 ],
1186 ],
1128 "name": "python2.7-sshpubkeys-2.2.0"
1187 "name": "python2.7-sshpubkeys-3.1.0"
1129 },
1188 },
1130 {
1189 {
1131 "license": [
1190 "license": [
@@ -1141,16 +1200,33 b''
1141 {
1200 {
1142 "license": [
1201 "license": [
1143 {
1202 {
1144 "fullName": "Academic Free License (AFL)"
1203 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1204 "shortName": "bsdOriginal",
1205 "spdxId": "BSD-4-Clause",
1206 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1207 },
1208 {
1209 "fullName": "BSD or Apache License, Version 2.0"
1145 },
1210 },
1146 {
1211 {
1212 "fullName": "Apache License 2.0",
1213 "shortName": "asl20",
1214 "spdxId": "Apache-2.0",
1215 "url": "http://spdx.org/licenses/Apache-2.0.html"
1216 }
1217 ],
1218 "name": "python2.7-cryptography-2.5"
1219 },
1220 {
1221 "license": [
1222 {
1147 "fullName": "MIT License",
1223 "fullName": "MIT License",
1148 "shortName": "mit",
1224 "shortName": "mit",
1149 "spdxId": "MIT",
1225 "spdxId": "MIT",
1150 "url": "http://spdx.org/licenses/MIT.html"
1226 "url": "http://spdx.org/licenses/MIT.html"
1151 }
1227 }
1152 ],
1228 ],
1153 "name": "python2.7-simplejson-3.11.1"
1229 "name": "python2.7-cffi-1.12.1"
1154 },
1230 },
1155 {
1231 {
1156 "license": [
1232 "license": [
@@ -1161,7 +1237,32 b''
1161 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1237 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1162 }
1238 }
1163 ],
1239 ],
1164 "name": "python2.7-setproctitle-1.1.10"
1240 "name": "python2.7-pycparser-2.19"
1241 },
1242 {
1243 "license": [
1244 {
1245 "fullName": "MIT License",
1246 "shortName": "mit",
1247 "spdxId": "MIT",
1248 "url": "http://spdx.org/licenses/MIT.html"
1249 }
1250 ],
1251 "name": "python2.7-asn1crypto-0.24.0"
1252 },
1253 {
1254 "license": [
1255 {
1256 "fullName": "Academic Free License (AFL)"
1257 },
1258 {
1259 "fullName": "MIT License",
1260 "shortName": "mit",
1261 "spdxId": "MIT",
1262 "url": "http://spdx.org/licenses/MIT.html"
1263 }
1264 ],
1265 "name": "python2.7-simplejson-3.16.0"
1165 },
1266 },
1166 {
1267 {
1167 "license": [
1268 "license": [
@@ -1201,7 +1302,7 b''
1201 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1302 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1202 }
1303 }
1203 ],
1304 ],
1204 "name": "python2.7-py-gfm-0.1.3"
1305 "name": "python2.7-py-gfm-0.1.4"
1205 },
1306 },
1206 {
1307 {
1207 "license": [
1308 "license": [
@@ -1239,6 +1340,72 b''
1239 {
1340 {
1240 "license": [
1341 "license": [
1241 {
1342 {
1343 "fullName": "MIT License",
1344 "shortName": "mit",
1345 "spdxId": "MIT",
1346 "url": "http://spdx.org/licenses/MIT.html"
1347 }
1348 ],
1349 "name": "python2.7-python-saml-2.4.2"
1350 },
1351 {
1352 "license": [
1353 {
1354 "fullName": "Python Software Foundation License version 2",
1355 "shortName": "psfl",
1356 "spdxId": "Python-2.0",
1357 "url": "http://spdx.org/licenses/Python-2.0.html"
1358 }
1359 ],
1360 "name": "python2.7-defusedxml-0.5.0"
1361 },
1362 {
1363 "license": [
1364 {
1365 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1366 "shortName": "bsdOriginal",
1367 "spdxId": "BSD-4-Clause",
1368 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1369 }
1370 ],
1371 "name": "python2.7-isodate-0.6.0"
1372 },
1373 {
1374 "license": [
1375 {
1376 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1377 "shortName": "bsdOriginal",
1378 "spdxId": "BSD-4-Clause",
1379 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1380 }
1381 ],
1382 "name": "python2.7-dm.xmlsec.binding-1.3.7"
1383 },
1384 {
1385 "license": [
1386 {
1387 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1388 "shortName": "bsdOriginal",
1389 "spdxId": "BSD-4-Clause",
1390 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1391 }
1392 ],
1393 "name": "python2.7-lxml-4.2.5"
1394 },
1395 {
1396 "license": [
1397 {
1398 "fullName": "MIT License",
1399 "shortName": "mit",
1400 "spdxId": "MIT",
1401 "url": "http://spdx.org/licenses/MIT.html"
1402 }
1403 ],
1404 "name": "python2.7-wheel-0.30.0"
1405 },
1406 {
1407 "license": [
1408 {
1242 "fullName": "License :: OSI Approved :: MIT License"
1409 "fullName": "License :: OSI Approved :: MIT License"
1243 },
1410 },
1244 {
1411 {
@@ -1251,14 +1418,7 b''
1251 "name": "python2.7-python-pam-1.8.4"
1418 "name": "python2.7-python-pam-1.8.4"
1252 },
1419 },
1253 {
1420 {
1254 "license": [
1421 "license": "UNKNOWN",
1255 {
1256 "fullName": "GNU General Public License v1.0 only",
1257 "shortName": "gpl1",
1258 "spdxId": "GPL-1.0",
1259 "url": "http://spdx.org/licenses/GPL-1.0.html"
1260 }
1261 ],
1262 "name": "linux-pam-1.3.0"
1422 "name": "linux-pam-1.3.0"
1263 },
1423 },
1264 {
1424 {
@@ -1293,9 +1453,7 b''
1293 "name": "libkrb5-1.15.2"
1453 "name": "libkrb5-1.15.2"
1294 },
1454 },
1295 {
1455 {
1296 "license":{
1456 "license": "UNKNOWN",
1297 "fullName": "BSD-derived (https://www.openldap.org/software/release/license.html)"
1298 },
1299 "name": "openldap-2.4.45"
1457 "name": "openldap-2.4.45"
1300 },
1458 },
1301 {
1459 {
@@ -1307,7 +1465,18 b''
1307 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1465 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1308 }
1466 }
1309 ],
1467 ],
1310 "name": "python2.7-pyasn1-modules-0.2.2"
1468 "name": "python2.7-pyasn1-modules-0.2.4"
1469 },
1470 {
1471 "license": [
1472 {
1473 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1474 "shortName": "bsdOriginal",
1475 "spdxId": "BSD-4-Clause",
1476 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1477 }
1478 ],
1479 "name": "python2.7-pyasn1-0.4.5"
1311 },
1480 },
1312 {
1481 {
1313 "license": [
1482 "license": [
@@ -1318,42 +1487,36 b''
1318 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1487 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1319 }
1488 }
1320 ],
1489 ],
1321 "name": "python2.7-pyasn1-0.4.4"
1490 "name": "python2.7-pyramid-mailer-0.15.1"
1322 },
1491 },
1323 {
1492 {
1324 "license": [
1493 "license": [
1325 {
1494 {
1326 "fullName": "zlib License",
1495 "fullName": "Zope Public License 2.1",
1327 "shortName": "zlib",
1496 "shortName": "zpl21",
1328 "spdxId": "Zlib",
1497 "spdxId": "ZPL-2.1",
1329 "url": "http://spdx.org/licenses/Zlib.html"
1498 "url": "http://spdx.org/licenses/ZPL-2.1.html"
1330 },
1331 {
1332 "fullName": "libpng License",
1333 "shortName": "libpng",
1334 "spdxId": "Libpng",
1335 "url": "http://spdx.org/licenses/Libpng.html"
1336 }
1499 }
1337 ],
1500 ],
1338 "name": "python2.7-pysqlite-2.8.3"
1501 "name": "python2.7-transaction-2.4.0"
1502 },
1503 {
1504 "license": [
1505 {
1506 "fullName": "Zope Public License 2.1",
1507 "shortName": "zpl21",
1508 "spdxId": "ZPL-2.1",
1509 "url": "http://spdx.org/licenses/ZPL-2.1.html"
1510 }
1511 ],
1512 "name": "python2.7-repoze.sendmail-4.4.1"
1339 },
1513 },
1340 {
1514 {
1341 "license": {
1515 "license": {
1342 "fullName": "Repoze License",
1516 "fullName": "Repoze License",
1343 "url": "http://www.repoze.org/LICENSE.txt"
1517 "url": "http://www.repoze.org/LICENSE.txt"
1344 },
1518 },
1345 "name": "python2.7-pyramid-1.9.2"
1519 "name": "python2.7-pyramid-1.10.1"
1346 },
1347 {
1348 "license": [
1349 {
1350 "fullName": "MIT License",
1351 "shortName": "mit",
1352 "spdxId": "MIT",
1353 "url": "http://spdx.org/licenses/MIT.html"
1354 }
1355 ],
1356 "name": "python2.7-hupper-1.3"
1357 },
1520 },
1358 {
1521 {
1359 "license": [
1522 "license": [
@@ -1386,7 +1549,18 b''
1386 "url": "http://spdx.org/licenses/MIT.html"
1549 "url": "http://spdx.org/licenses/MIT.html"
1387 }
1550 }
1388 ],
1551 ],
1389 "name": "python2.7-pastedeploy-1.5.2"
1552 "name": "python2.7-pastedeploy-2.0.1"
1553 },
1554 {
1555 "license": [
1556 {
1557 "fullName": "MIT License",
1558 "shortName": "mit",
1559 "spdxId": "MIT",
1560 "url": "http://spdx.org/licenses/MIT.html"
1561 }
1562 ],
1563 "name": "python2.7-hupper-1.5"
1390 },
1564 },
1391 {
1565 {
1392 "license": {
1566 "license": {
@@ -1419,18 +1593,7 b''
1419 "url": "http://www.repoze.org/LICENSE.txt"
1593 "url": "http://www.repoze.org/LICENSE.txt"
1420 }
1594 }
1421 ],
1595 ],
1422 "name": "python2.7-pyramid-debugtoolbar-4.4"
1596 "name": "python2.7-pyramid-debugtoolbar-4.5"
1423 },
1424 {
1425 "license": [
1426 {
1427 "fullName": "Python Software Foundation License version 2",
1428 "shortName": "psfl",
1429 "spdxId": "Python-2.0",
1430 "url": "http://spdx.org/licenses/Python-2.0.html"
1431 }
1432 ],
1433 "name": "python2.7-ipaddress-1.0.22"
1434 },
1597 },
1435 {
1598 {
1436 "license": {
1599 "license": {
@@ -1459,18 +1622,16 b''
1459 "url": "http://spdx.org/licenses/MIT.html"
1622 "url": "http://spdx.org/licenses/MIT.html"
1460 }
1623 }
1461 ],
1624 ],
1462 "name": "python2.7-pyparsing-1.5.7"
1625 "name": "python2.7-pyparsing-2.3.0"
1463 },
1626 },
1464 {
1627 {
1465 "license": [
1628 "license": [
1466 {
1629 {
1467 "fullName": "Apache License 2.0",
1630 "fullName": "Public Domain",
1468 "shortName": "asl20",
1631 "shortName": "publicDomain"
1469 "spdxId": "Apache-2.0",
1470 "url": "http://spdx.org/licenses/Apache-2.0.html"
1471 }
1632 }
1472 ],
1633 ],
1473 "name": "python2.7-pygments-markdown-lexer-0.1.0.dev39"
1634 "name": "python2.7-pycrypto-2.6.1"
1474 },
1635 },
1475 {
1636 {
1476 "license": {
1637 "license": {
@@ -1493,30 +1654,12 b''
1493 "name": "python2.7-py-bcrypt-0.4"
1654 "name": "python2.7-py-bcrypt-0.4"
1494 },
1655 },
1495 {
1656 {
1496 "license": {
1497 "fullName": "GNU Lesser General Public License v3.0 or later",
1498 "shortName": "lgpl3Plus",
1499 "spdxId": "LGPL-3.0+",
1500 "url": "http://spdx.org/licenses/LGPL-3.0+.html"
1501 },
1502 "name": "python2.7-psycopg2-2.7.4"
1503 },
1504 {
1505 "license": {
1506 "fullName": "PostgreSQL License",
1507 "shortName": "postgresql",
1508 "spdxId": "PostgreSQL",
1509 "url": "http://spdx.org/licenses/PostgreSQL.html"
1510 },
1511 "name": "postgresql-9.6.10"
1512 },
1513 {
1514 "license": [
1657 "license": [
1515 {
1658 {
1516 "fullName": "BSD-derived (http://www.repoze.org/LICENSE.txt)"
1659 "fullName": "BSD-derived (http://www.repoze.org/LICENSE.txt)"
1517 }
1660 }
1518 ],
1661 ],
1519 "name": "python2.7-peppercorn-0.5"
1662 "name": "python2.7-peppercorn-0.6"
1520 },
1663 },
1521 {
1664 {
1522 "license": [
1665 "license": [
@@ -1527,7 +1670,7 b''
1527 "url": "http://spdx.org/licenses/MIT.html"
1670 "url": "http://spdx.org/licenses/MIT.html"
1528 }
1671 }
1529 ],
1672 ],
1530 "name": "python2.7-pastescript-2.0.2"
1673 "name": "python2.7-pastescript-3.0.0"
1531 },
1674 },
1532 {
1675 {
1533 "license": [
1676 "license": [
@@ -1549,60 +1692,7 b''
1549 "url": "http://spdx.org/licenses/MIT.html"
1692 "url": "http://spdx.org/licenses/MIT.html"
1550 }
1693 }
1551 ],
1694 ],
1552 "name": "python2.7-objgraph-3.1.1"
1695 "name": "python2.7-pyotp-2.2.7"
1553 },
1554 {
1555 "license": [
1556 {
1557 "fullName": "MIT License",
1558 "shortName": "mit",
1559 "spdxId": "MIT",
1560 "url": "http://spdx.org/licenses/MIT.html"
1561 }
1562 ],
1563 "name": "python2.7-graphviz-0.9"
1564 },
1565 {
1566 "license": [
1567 {
1568 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1569 "shortName": "bsdOriginal",
1570 "spdxId": "BSD-4-Clause",
1571 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1572 }
1573 ],
1574 "name": "python2.7-pyotp-2.2.6"
1575 },
1576 {
1577 "license": [
1578 {
1579 "fullName": "MIT License",
1580 "shortName": "mit",
1581 "spdxId": "MIT",
1582 "url": "http://spdx.org/licenses/MIT.html"
1583 }
1584 ],
1585 "name": "python2.7-pymysql-0.8.1"
1586 },
1587 {
1588 "license": [
1589 {
1590 "fullName": "GNU General Public License v1.0 only",
1591 "shortName": "gpl1",
1592 "spdxId": "GPL-1.0",
1593 "url": "http://spdx.org/licenses/GPL-1.0.html"
1594 }
1595 ],
1596 "name": "python2.7-mysql-python-1.2.5"
1597 },
1598 {
1599 "license": {
1600 "fullName": "GNU Library General Public License v2.1 only",
1601 "shortName": "lgpl21",
1602 "spdxId": "LGPL-2.1",
1603 "url": "http://spdx.org/licenses/LGPL-2.1.html"
1604 },
1605 "name": "mariadb-connector-c-2.3.4"
1606 },
1696 },
1607 {
1697 {
1608 "license": [
1698 "license": [
@@ -1624,29 +1714,7 b''
1624 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1714 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1625 }
1715 }
1626 ],
1716 ],
1627 "name": "python2.7-lxml-3.7.3"
1717 "name": "python2.7-kombu-4.2.1"
1628 },
1629 {
1630 "license": [
1631 {
1632 "fullName": "MIT License",
1633 "shortName": "mit",
1634 "spdxId": "MIT",
1635 "url": "http://spdx.org/licenses/MIT.html"
1636 }
1637 ],
1638 "name": "python2.7-wheel-0.30.0"
1639 },
1640 {
1641 "license": [
1642 {
1643 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1644 "shortName": "bsdOriginal",
1645 "spdxId": "BSD-4-Clause",
1646 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1647 }
1648 ],
1649 "name": "python2.7-kombu-4.2.0"
1650 },
1718 },
1651 {
1719 {
1652 "license": [
1720 "license": [
@@ -1668,18 +1736,7 b''
1668 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1736 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1669 }
1737 }
1670 ],
1738 ],
1671 "name": "python2.7-vine-1.1.4"
1739 "name": "python2.7-vine-1.2.0"
1672 },
1673 {
1674 "license": [
1675 {
1676 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1677 "shortName": "bsdOriginal",
1678 "spdxId": "BSD-4-Clause",
1679 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1680 }
1681 ],
1682 "name": "python2.7-billiard-3.5.0.3"
1683 },
1740 },
1684 {
1741 {
1685 "license": [
1742 "license": [
@@ -1701,7 +1758,7 b''
1701 "url": "http://spdx.org/licenses/MIT.html"
1758 "url": "http://spdx.org/licenses/MIT.html"
1702 }
1759 }
1703 ],
1760 ],
1704 "name": "python2.7-iso8601-0.1.11"
1761 "name": "python2.7-iso8601-0.1.12"
1705 },
1762 },
1706 {
1763 {
1707 "license": [
1764 "license": [
@@ -1745,7 +1802,7 b''
1745 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1802 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1746 }
1803 }
1747 ],
1804 ],
1748 "name": "python2.7-dogpile.cache-0.6.6"
1805 "name": "python2.7-dogpile.cache-0.7.1"
1749 },
1806 },
1750 {
1807 {
1751 "license": {
1808 "license": {
@@ -1759,17 +1816,20 b''
1759 {
1816 {
1760 "license": [
1817 "license": [
1761 {
1818 {
1819 "fullName": "Repoze Public License"
1820 },
1821 {
1762 "fullName": "BSD-derived (http://www.repoze.org/LICENSE.txt)"
1822 "fullName": "BSD-derived (http://www.repoze.org/LICENSE.txt)"
1763 }
1823 }
1764 ],
1824 ],
1765 "name": "python2.7-deform-2.0.5"
1825 "name": "python2.7-deform-2.0.7"
1766 },
1826 },
1767 {
1827 {
1768 "license": {
1828 "license": {
1769 "fullName": "Repoze License",
1829 "fullName": "Repoze License",
1770 "url": "http://www.repoze.org/LICENSE.txt"
1830 "url": "http://www.repoze.org/LICENSE.txt"
1771 },
1831 },
1772 "name": "python2.7-colander-1.4"
1832 "name": "python2.7-colander-1.7.0"
1773 },
1833 },
1774 {
1834 {
1775 "license": [
1835 "license": [
@@ -1843,6 +1903,17 b''
1843 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1903 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1844 }
1904 }
1845 ],
1905 ],
1906 "name": "python2.7-billiard-3.5.0.3"
1907 },
1908 {
1909 "license": [
1910 {
1911 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
1912 "shortName": "bsdOriginal",
1913 "spdxId": "BSD-4-Clause",
1914 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
1915 }
1916 ],
1846 "name": "python2.7-babel-1.3"
1917 "name": "python2.7-babel-1.3"
1847 },
1918 },
1848 {
1919 {
@@ -1857,25 +1928,7 b''
1857 "name": "python2.7-authomatic-0.1.0.post1"
1928 "name": "python2.7-authomatic-0.1.0.post1"
1858 },
1929 },
1859 {
1930 {
1860 "license": [
1931 "license": "UNKNOWN",
1861 {
1862 "fullName": "MIT License",
1863 "shortName": "mit",
1864 "spdxId": "MIT",
1865 "url": "http://spdx.org/licenses/MIT.html"
1866 }
1867 ],
1868 "name": "node-grunt-cli-1.2.0"
1869 },
1870 {
1871 "license": [
1872 {
1873 "fullName": "MIT License",
1874 "shortName": "mit",
1875 "spdxId": "MIT",
1876 "url": "http://spdx.org/licenses/MIT.html"
1877 }
1878 ],
1879 "name": "python2.7-rhodecode-testdata-0.10.0"
1932 "name": "python2.7-rhodecode-testdata-0.10.0"
1880 }
1933 }
1881 ]
1934 ]
@@ -70,7 +70,7 b' markdown_attrs = {'
70 "abbr": ["title"],
70 "abbr": ["title"],
71 "acronym": ["title"],
71 "acronym": ["title"],
72 "pre": ["lang"],
72 "pre": ["lang"],
73 "input": ["type", "disabled"]
73 "input": ["type", "disabled", "checked"]
74 }
74 }
75
75
76 standard_styles = [
76 standard_styles = [
@@ -2037,6 +2037,6 b' def get_repo_view_type(request):'
2037 'repo_files': 'files',
2037 'repo_files': 'files',
2038 'repo_summary': 'summary',
2038 'repo_summary': 'summary',
2039 'repo_commit': 'commit'
2039 'repo_commit': 'commit'
2040 }
2040
2041
2041 }
2042 return route_to_view_type.get(route_name)
2042 return route_to_view_type.get(route_name)
@@ -270,7 +270,7 b' def post_push(extras):'
270 # make lock is a tri state False, True, None. We only release lock on False
270 # make lock is a tri state False, True, None. We only release lock on False
271 if extras.make_lock is False and not is_shadow_repo(extras):
271 if extras.make_lock is False and not is_shadow_repo(extras):
272 Repository.unlock(Repository.get_by_repo_name(extras.repository))
272 Repository.unlock(Repository.get_by_repo_name(extras.repository))
273 msg = 'Released lock on repo `%s`\n' % extras.repository
273 msg = 'Released lock on repo `{}`\n'.format(safe_str(extras.repository))
274 output += msg
274 output += msg
275
275
276 if extras.locked_by[0]:
276 if extras.locked_by[0]:
@@ -284,8 +284,8 b' def post_push(extras):'
284 output += _http_ret.title
284 output += _http_ret.title
285
285
286 if extras.new_refs:
286 if extras.new_refs:
287 tmpl = extras.server_url + '/' + extras.repository + \
287 tmpl = '{}/{}/pull-request/new?{{ref_type}}={{ref_name}}'.format(
288 "/pull-request/new?{ref_type}={ref_name}"
288 safe_str(extras.server_url), safe_str(extras.repository))
289
289
290 for branch_name in extras.new_refs['branches']:
290 for branch_name in extras.new_refs['branches']:
291 output += 'RhodeCode: open pull request link: {}\n'.format(
291 output += 'RhodeCode: open pull request link: {}\n'.format(
@@ -80,6 +80,13 b' class BaseSearcher(object):'
80 def extract_search_tags(query):
80 def extract_search_tags(query):
81 return []
81 return []
82
82
83 @staticmethod
84 def escape_specials(val):
85 """
86 Handle and escape reserved chars for search
87 """
88 return val
89
83
90
84 def search_config(config, prefix='search.'):
91 def search_config(config, prefix='search.'):
85 _config = {}
92 _config = {}
@@ -18,26 +18,11 b''
18 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20
21 import re
22
23 import markdown
21 import markdown
24
22
25 from mdx_gfm import GithubFlavoredMarkdownExtension # pragma: no cover
23 from mdx_gfm import GithubFlavoredMarkdownExtension # pragma: no cover
26
24
27
25
28 class FlavoredCheckboxPostprocessor(markdown.postprocessors.Postprocessor):
29 """
30 Adds `flavored_checkbox_list` class to list of checkboxes
31 """
32
33 pattern = re.compile(r'^([*-]) \[([ x])\]')
34
35 def run(self, html):
36 before = '<ul>\n<li><input type="checkbox"'
37 after = '<ul class="flavored_checkbox_list">\n<li><input type="checkbox"'
38 return html.replace(before, after)
39
40
41 # Global Vars
26 # Global Vars
42 URLIZE_RE = '(%s)' % '|'.join([
27 URLIZE_RE = '(%s)' % '|'.join([
43 r'<(?:f|ht)tps?://[^>]*>',
28 r'<(?:f|ht)tps?://[^>]*>',
@@ -26,7 +26,8 b' log = logging.getLogger(__name__)'
26
26
27
27
28 class UpgradeDb(BasePasterCommand):
28 class UpgradeDb(BasePasterCommand):
29 """Command used for paster to upgrade our database to newer version
29 """
30 Command used for paster to upgrade our database to newer version
30 """
31 """
31
32
32 max_args = 1
33 max_args = 1
@@ -41,7 +42,7 b' class UpgradeDb(BasePasterCommand):'
41 def command(self):
42 def command(self):
42 from rhodecode.lib.rc_commands import upgrade_db
43 from rhodecode.lib.rc_commands import upgrade_db
43 upgrade_db.command(
44 upgrade_db.command(
44 self.path_to_ini_file, self.options.__dict__.get('force_ask'))
45 self.path_to_ini_file, self.options.__dict__.get('force_ask'), None)
45
46
46 def update_parser(self):
47 def update_parser(self):
47 self.parser.add_option('--sql',
48 self.parser.add_option('--sql',
@@ -23,6 +23,7 b' import re'
23 import time
23 import time
24 import datetime
24 import datetime
25 import dateutil
25 import dateutil
26 import pickle
26
27
27 from rhodecode.model.db import DbSession, Session
28 from rhodecode.model.db import DbSession, Session
28
29
@@ -142,7 +143,6 b' class FileAuthSessions(BaseAuthSessions)'
142 return stats['callbacks']
143 return stats['callbacks']
143
144
144
145
145
146 class MemcachedAuthSessions(BaseAuthSessions):
146 class MemcachedAuthSessions(BaseAuthSessions):
147 SESSION_TYPE = 'ext:memcached'
147 SESSION_TYPE = 'ext:memcached'
148 _key_regex = re.compile(r'ITEM (.*_session) \[(.*); (.*)\]')
148 _key_regex = re.compile(r'ITEM (.*_session) \[(.*); (.*)\]')
@@ -195,6 +195,43 b' class MemcachedAuthSessions(BaseAuthSess'
195 raise CleanupCommand('Cleanup for this session type not yet available')
195 raise CleanupCommand('Cleanup for this session type not yet available')
196
196
197
197
198 class RedisAuthSessions(BaseAuthSessions):
199 SESSION_TYPE = 'ext:redis'
200
201 def _get_client(self):
202 import redis
203 args = {
204 'socket_timeout': 60,
205 'url': self.config.get('beaker.session.url')
206 }
207
208 client = redis.StrictRedis.from_url(**args)
209 return client
210
211 def get_count(self):
212 client = self._get_client()
213 return len(client.keys('beaker_cache:*'))
214
215 def get_expired_count(self, older_than_seconds=None):
216 expiry_date = self._seconds_to_date(older_than_seconds)
217 return self.NOT_AVAILABLE
218
219 def clean_sessions(self, older_than_seconds=None):
220 client = self._get_client()
221 expiry_time = time.time() - older_than_seconds
222 deleted_keys = 0
223 for key in client.keys('beaker_cache:*'):
224 data = client.get(key)
225 if data:
226 json_data = pickle.loads(data)
227 accessed_time = json_data['_accessed_time']
228 if accessed_time < expiry_time:
229 client.delete(key)
230 deleted_keys += 1
231
232 return deleted_keys
233
234
198 class MemoryAuthSessions(BaseAuthSessions):
235 class MemoryAuthSessions(BaseAuthSessions):
199 SESSION_TYPE = 'memory'
236 SESSION_TYPE = 'memory'
200
237
@@ -212,6 +249,7 b' def get_session_handler(session_type):'
212 types = {
249 types = {
213 'file': FileAuthSessions,
250 'file': FileAuthSessions,
214 'ext:memcached': MemcachedAuthSessions,
251 'ext:memcached': MemcachedAuthSessions,
252 'ext:redis': RedisAuthSessions,
215 'ext:database': DbAuthSessions,
253 'ext:database': DbAuthSessions,
216 'memory': MemoryAuthSessions
254 'memory': MemoryAuthSessions
217 }
255 }
@@ -193,13 +193,6 b' class MercurialCommit(base.BaseCommit):'
193 children = self._remote.ctx_children(self.idx)
193 children = self._remote.ctx_children(self.idx)
194 return self._make_commits(children)
194 return self._make_commits(children)
195
195
196 def diff(self, ignore_whitespace=True, context=3):
197 result = self._remote.ctx_diff(
198 self.idx,
199 git=True, ignore_whitespace=ignore_whitespace, context=context)
200 diff = ''.join(result)
201 return MercurialDiff(diff)
202
203 def _fix_path(self, path):
196 def _fix_path(self, path):
204 """
197 """
205 Mercurial keeps filenodes as str so we need to encode from unicode
198 Mercurial keeps filenodes as str so we need to encode from unicode
@@ -259,8 +259,18 b' class CommentsModel(BaseModel):'
259 # check if the comment actually belongs to this PR
259 # check if the comment actually belongs to this PR
260 if resolved_comment and resolved_comment.pull_request and \
260 if resolved_comment and resolved_comment.pull_request and \
261 resolved_comment.pull_request != pull_request:
261 resolved_comment.pull_request != pull_request:
262 log.warning('Comment tried to resolved unrelated todo comment: %s',
263 resolved_comment)
262 # comment not bound to this pull request, forbid
264 # comment not bound to this pull request, forbid
263 resolved_comment = None
265 resolved_comment = None
266
267 elif resolved_comment and resolved_comment.repo and \
268 resolved_comment.repo != repo:
269 log.warning('Comment tried to resolved unrelated todo comment: %s',
270 resolved_comment)
271 # comment not bound to this repo, forbid
272 resolved_comment = None
273
264 comment.resolved_comment = resolved_comment
274 comment.resolved_comment = resolved_comment
265
275
266 pull_request_id = pull_request
276 pull_request_id = pull_request
@@ -39,7 +39,7 b' from sqlalchemy import ('
39 Index, Sequence, UniqueConstraint, ForeignKey, CheckConstraint, Column,
39 Index, Sequence, UniqueConstraint, ForeignKey, CheckConstraint, Column,
40 Boolean, String, Unicode, UnicodeText, DateTime, Integer, LargeBinary,
40 Boolean, String, Unicode, UnicodeText, DateTime, Integer, LargeBinary,
41 Text, Float, PickleType)
41 Text, Float, PickleType)
42 from sqlalchemy.sql.expression import true, false
42 from sqlalchemy.sql.expression import true, false, case
43 from sqlalchemy.sql.functions import coalesce, count # pragma: no cover
43 from sqlalchemy.sql.functions import coalesce, count # pragma: no cover
44 from sqlalchemy.orm import (
44 from sqlalchemy.orm import (
45 relationship, joinedload, class_mapper, validates, aliased)
45 relationship, joinedload, class_mapper, validates, aliased)
@@ -4260,9 +4260,16 b' class Gist(Base, BaseModel):'
4260 # SCM functions
4260 # SCM functions
4261
4261
4262 def scm_instance(self, **kwargs):
4262 def scm_instance(self, **kwargs):
4263 """
4264 Get explicit Mercurial repository used
4265 :param kwargs:
4266 :return:
4267 """
4268 from rhodecode.model.gist import GistModel
4263 full_repo_path = os.path.join(self.base_path(), self.gist_access_id)
4269 full_repo_path = os.path.join(self.base_path(), self.gist_access_id)
4264 return get_vcs_instance(
4270 return get_vcs_instance(
4265 repo_path=safe_str(full_repo_path), create=False)
4271 repo_path=safe_str(full_repo_path), create=False,
4272 _vcs_alias=GistModel.vcs_backend)
4266
4273
4267
4274
4268 class ExternalIdentity(Base, BaseModel):
4275 class ExternalIdentity(Base, BaseModel):
@@ -47,6 +47,7 b" GIST_METADATA_FILE = '.rc_gist_metadata'"
47
47
48 class GistModel(BaseModel):
48 class GistModel(BaseModel):
49 cls = Gist
49 cls = Gist
50 vcs_backend = 'hg'
50
51
51 def _get_gist(self, gist):
52 def _get_gist(self, gist):
52 """
53 """
@@ -145,7 +146,7 b' class GistModel(BaseModel):'
145 gist_repo_path = os.path.join(GIST_STORE_LOC, gist_id)
146 gist_repo_path = os.path.join(GIST_STORE_LOC, gist_id)
146 log.debug('Creating new %s GIST repo in %s', gist_type, gist_repo_path)
147 log.debug('Creating new %s GIST repo in %s', gist_type, gist_repo_path)
147 repo = RepoModel()._create_filesystem_repo(
148 repo = RepoModel()._create_filesystem_repo(
148 repo_name=gist_id, repo_type='hg', repo_group=GIST_STORE_LOC,
149 repo_name=gist_id, repo_type=self.vcs_backend, repo_group=GIST_STORE_LOC,
149 use_global_config=True)
150 use_global_config=True)
150
151
151 # now create single multifile commit
152 # now create single multifile commit
@@ -1303,10 +1303,13 b' class PullRequestModel(BaseModel):'
1303 merge_state = self._refresh_merge_state(
1303 merge_state = self._refresh_merge_state(
1304 pull_request, target_vcs, target_ref)
1304 pull_request, target_vcs, target_ref)
1305 else:
1305 else:
1306 possible = pull_request.\
1306 possible = pull_request.last_merge_status == MergeFailureReason.NONE
1307 last_merge_status == MergeFailureReason.NONE
1307 metadata = {
1308 'target_ref': pull_request.target_ref_parts,
1309 'source_ref': pull_request.source_ref_parts
1310 }
1308 merge_state = MergeResponse(
1311 merge_state = MergeResponse(
1309 possible, False, None, pull_request.last_merge_status)
1312 possible, False, None, pull_request.last_merge_status, metadata=metadata)
1310
1313
1311 return merge_state
1314 return merge_state
1312
1315
@@ -1420,8 +1423,8 b' class PullRequestModel(BaseModel):'
1420 _ = translator or get_current_request().translate
1423 _ = translator or get_current_request().translate
1421
1424
1422 commit_id = safe_str(commit_id) if commit_id else None
1425 commit_id = safe_str(commit_id) if commit_id else None
1423 branch = safe_str(branch) if branch else None
1426 branch = safe_unicode(branch) if branch else None
1424 bookmark = safe_str(bookmark) if bookmark else None
1427 bookmark = safe_unicode(bookmark) if bookmark else None
1425
1428
1426 selected = None
1429 selected = None
1427
1430
@@ -1439,10 +1442,11 b' class PullRequestModel(BaseModel):'
1439 )
1442 )
1440
1443
1441 groups = []
1444 groups = []
1445
1442 for group_key, ref_list, group_name, match in sources:
1446 for group_key, ref_list, group_name, match in sources:
1443 group_refs = []
1447 group_refs = []
1444 for ref_name, ref_id in ref_list:
1448 for ref_name, ref_id in ref_list:
1445 ref_key = '%s:%s:%s' % (group_key, ref_name, ref_id)
1449 ref_key = u'{}:{}:{}'.format(group_key, ref_name, ref_id)
1446 group_refs.append((ref_key, ref_name))
1450 group_refs.append((ref_key, ref_name))
1447
1451
1448 if not selected:
1452 if not selected:
@@ -1456,11 +1460,11 b' class PullRequestModel(BaseModel):'
1456 ref = commit_id or branch or bookmark
1460 ref = commit_id or branch or bookmark
1457 if ref:
1461 if ref:
1458 raise CommitDoesNotExistError(
1462 raise CommitDoesNotExistError(
1459 'No commit refs could be found matching: %s' % ref)
1463 u'No commit refs could be found matching: {}'.format(ref))
1460 elif repo.DEFAULT_BRANCH_NAME in repo.branches:
1464 elif repo.DEFAULT_BRANCH_NAME in repo.branches:
1461 selected = 'branch:%s:%s' % (
1465 selected = u'branch:{}:{}'.format(
1462 repo.DEFAULT_BRANCH_NAME,
1466 safe_unicode(repo.DEFAULT_BRANCH_NAME),
1463 repo.branches[repo.DEFAULT_BRANCH_NAME]
1467 safe_unicode(repo.branches[repo.DEFAULT_BRANCH_NAME])
1464 )
1468 )
1465 elif repo.commit_ids:
1469 elif repo.commit_ids:
1466 # make the user select in this case
1470 # make the user select in this case
@@ -728,6 +728,10 b' class RepoGroupModel(BaseModel):'
728 "name_raw": group.group_name,
728 "name_raw": group.group_name,
729 "last_change": last_change(group.last_db_change),
729 "last_change": last_change(group.last_db_change),
730 "last_change_raw": datetime_to_time(group.last_db_change),
730 "last_change_raw": datetime_to_time(group.last_db_change),
731
732 "last_changeset": "",
733 "last_changeset_raw": "",
734
731 "desc": desc(group.description_safe, group.personal),
735 "desc": desc(group.description_safe, group.personal),
732 "top_level_repos": 0,
736 "top_level_repos": 0,
733 "owner": user_profile(group.user.username)
737 "owner": user_profile(group.user.username)
@@ -1024,11 +1024,15 b' label {'
1024 float:left;
1024 float:left;
1025 }
1025 }
1026
1026
1027 .branding{
1027 .branding {
1028 float: left;
1028 float: left;
1029 padding: 9px 2px;
1029 padding: 9px 2px;
1030 line-height: 1em;
1030 line-height: 1em;
1031 font-size: @navigation-fontsize;
1031 font-size: @navigation-fontsize;
1032
1033 a {
1034 color: @grey5
1035 }
1032 }
1036 }
1033
1037
1034 img {
1038 img {
@@ -92,6 +92,10 b''
92 }
92 }
93 }
93 }
94
94
95 &.active {
96 border-bottom: 5px solid @rcblue;
97 }
98
95 &.open {
99 &.open {
96
100
97 a {
101 a {
@@ -133,6 +137,7 b''
133 padding: 0 0 0.4em 0;
137 padding: 0 0 0.4em 0;
134 line-height: 1em;
138 line-height: 1em;
135 // for this specifically we do not use a variable
139 // for this specifically we do not use a variable
140 border-right: 1px solid @grey4;
136 }
141 }
137
142
138 .pr_notifications {
143 .pr_notifications {
@@ -651,6 +656,40 b' ul#context-pages {'
651
656
652 .main_filter_input_box {
657 .main_filter_input_box {
653 display: inline-block;
658 display: inline-block;
659
660 .searchItems {
661 display:flex;
662 background: #666666;
663 padding: 0px;
664
665 a {
666 border: none !important;
667 }
668 }
669
670 .searchTag {
671 line-height: 28px;
672 padding: 0px 4px;
673
674 .tag {
675 color: @nav-grey;
676 border-color: @nav-grey;
677 }
678 }
679
680 .searchTagFilter {
681 background-color: @grey3 !important;
682 }
683
684 .searchTagHelp {
685 background-color: @grey2 !important;
686 }
687 .searchTagHelp:hover {
688 background-color: @grey2 !important;
689 }
690 .searchTagInput {
691 background-color: @grey3 !important;
692 }
654 }
693 }
655
694
656 .main_filter_box {
695 .main_filter_box {
@@ -141,6 +141,11 b' table.dataTable {'
141 }
141 }
142 }
142 }
143
143
144 &.td-grid-name {
145 white-space: nowrap;
146 min-width: 300px;
147 }
148
144 &.td-componentname {
149 &.td-componentname {
145 white-space: nowrap;
150 white-space: nowrap;
146 }
151 }
1 NO CONTENT: file renamed from rhodecode/public/images/rhodecode-logo-white-216x60.png to rhodecode/public/images/rhodecode-logo-white-60x60.png, binary diff hidden
NO CONTENT: file renamed from rhodecode/public/images/rhodecode-logo-white-216x60.png to rhodecode/public/images/rhodecode-logo-white-60x60.png, binary diff hidden
@@ -528,7 +528,19 b''
528 if ($.isFunction(serviceUrl)) {
528 if ($.isFunction(serviceUrl)) {
529 serviceUrl = serviceUrl.call(that.element, query);
529 serviceUrl = serviceUrl.call(that.element, query);
530 }
530 }
531 cacheKey = serviceUrl + '?' + $.param(params || {});
531
532 var callParams = {};
533 //make an evaluated copy of params
534 $.each(params, function(index, value) {
535 if($.isFunction(value)){
536 callParams[index] = value();
537 }
538 else {
539 callParams[index] = value;
540 }
541 });
542
543 cacheKey = serviceUrl + '?' + $.param(callParams);
532 response = that.cachedResponse[cacheKey];
544 response = that.cachedResponse[cacheKey];
533 }
545 }
534
546
@@ -536,7 +548,7 b''
536 that.suggestions = response.suggestions;
548 that.suggestions = response.suggestions;
537 that.suggest();
549 that.suggest();
538 } else if (!that.isBadQuery(query)) {
550 } else if (!that.isBadQuery(query)) {
539 if (options.onSearchStart.call(that.element, options.params) === false) {
551 if (options.onSearchStart.call(that.element, params) === false) {
540 return;
552 return;
541 }
553 }
542 if (that.currentRequest) {
554 if (that.currentRequest) {
@@ -9,11 +9,13 b''
9 <div id="header-inner" class="wrapper">
9 <div id="header-inner" class="wrapper">
10 <div id="logo">
10 <div id="logo">
11 <div class="logo-wrapper">
11 <div class="logo-wrapper">
12 <a href="${h.route_path('home')}"><img src="${h.asset('images/rhodecode-logo-white-216x60.png')}" alt="RhodeCode"/></a>
12 <a href="${h.route_path('home')}"><img src="${h.asset('images/rhodecode-logo-white-60x60.png')}" alt="RhodeCode"/></a>
13 </div>
13 </div>
14 %if c.rhodecode_name:
14 % if c.rhodecode_name:
15 <div class="branding">- ${h.branding(c.rhodecode_name)}</div>
15 <div class="branding">
16 %endif
16 <a href="${h.route_path('home')}">${h.branding(c.rhodecode_name)}</a>
17 </div>
18 % endif
17 </div>
19 </div>
18 <!-- MENU BAR NAV -->
20 <!-- MENU BAR NAV -->
19 ${self.menu_bar_nav()}
21 ${self.menu_bar_nav()}
@@ -236,7 +238,6 b''
236 <li class="${is_active('changelog')}"><a class="menulink" href="${h.route_path('repo_changelog', repo_name=c.repo_name)}"><div class="menulabel">${_('Changelog')}</div></a></li>
238 <li class="${is_active('changelog')}"><a class="menulink" href="${h.route_path('repo_changelog', repo_name=c.repo_name)}"><div class="menulabel">${_('Changelog')}</div></a></li>
237 <li class="${is_active('files')}"><a class="menulink" href="${h.route_path('repo_files', repo_name=c.repo_name, commit_id=c.rhodecode_db_repo.landing_rev[1], f_path='')}"><div class="menulabel">${_('Files')}</div></a></li>
239 <li class="${is_active('files')}"><a class="menulink" href="${h.route_path('repo_files', repo_name=c.repo_name, commit_id=c.rhodecode_db_repo.landing_rev[1], f_path='')}"><div class="menulabel">${_('Files')}</div></a></li>
238 <li class="${is_active('compare')}"><a class="menulink" href="${h.route_path('repo_compare_select',repo_name=c.repo_name)}"><div class="menulabel">${_('Compare')}</div></a></li>
240 <li class="${is_active('compare')}"><a class="menulink" href="${h.route_path('repo_compare_select',repo_name=c.repo_name)}"><div class="menulabel">${_('Compare')}</div></a></li>
239 <li class="${is_active('search')}"><a class="menulink" href="${h.route_path('search_repo',repo_name=c.repo_name)}"><div class="menulabel">${_('Search')}</div></a></li>
240
241
241 ## TODO: anderson: ideally it would have a function on the scm_instance "enable_pullrequest() and enable_fork()"
242 ## TODO: anderson: ideally it would have a function on the scm_instance "enable_pullrequest() and enable_fork()"
242 %if c.rhodecode_db_repo.repo_type in ['git','hg']:
243 %if c.rhodecode_db_repo.repo_type in ['git','hg']:
@@ -341,7 +342,6 b''
341 <div class="wrapper">
342 <div class="wrapper">
342 <ul id="context-pages" class="navigation horizontal-list">
343 <ul id="context-pages" class="navigation horizontal-list">
343 <li class="${is_active('home')}"><a class="menulink" href="${h.route_path('repo_group_home', repo_group_name=c.repo_group.group_name)}"><div class="menulabel">${_('Group Home')}</div></a></li>
344 <li class="${is_active('home')}"><a class="menulink" href="${h.route_path('repo_group_home', repo_group_name=c.repo_group.group_name)}"><div class="menulabel">${_('Group Home')}</div></a></li>
344 <li class="${is_active('search')}"><a class="menulink" href="${h.route_path('search_repo_group', repo_group_name=c.repo_group.group_name)}"><div class="menulabel">${_('Search')}</div></a></li>
345
345
346 <li class="${is_active('options')}">
346 <li class="${is_active('options')}">
347 <a class="menulink dropdown">
347 <a class="menulink dropdown">
@@ -489,10 +489,35 b''
489 <li>
489 <li>
490 <div class="menulabel main_filter_box">
490 <div class="menulabel main_filter_box">
491 <div class="main_filter_input_box">
491 <div class="main_filter_input_box">
492 <input class="main_filter_input" id="main_filter" size="15" type="text" name="main_filter" placeholder="${_('search / go to...')}" value=""/>
492 <ul class="searchItems">
493 </div>
493
494 <div class="main_filter_help_box">
494 % if c.template_context['search_context']['repo_id']:
495 <a href="#showFilterHelp" onclick="showMainFilterBox(); return false">?</a>
495 <li class="searchTag searchTagFilter searchTagHidable" >
496 ##<a href="${h.route_path('search_repo',repo_name=c.template_context['search_context']['repo_name'])}">
497 <span class="tag">
498 This repo
499 <a href="#removeGoToFilter" onclick="removeGoToFilter(); return false"><i class="icon-delete"></i></a>
500 </span>
501 ##</a>
502 </li>
503 % elif c.template_context['search_context']['repo_group_id']:
504 <li class="searchTag searchTagFilter searchTagHidable">
505 ##<a href="${h.route_path('search_repo_group',repo_group_name=c.template_context['search_context']['repo_group_name'])}">
506 <span class="tag">
507 This group
508 <a href="#removeGoToFilter" onclick="removeGoToFilter(); return false"><i class="icon-delete"></i></a>
509 </span>
510 ##</a>
511 </li>
512 % endif
513
514 <li class="searchTagInput">
515 <input class="main_filter_input" id="main_filter" size="15" type="text" name="main_filter" placeholder="${_('search / go to...')}" value="" />
516 </li>
517 <li class="searchTag searchTagHelp">
518 <a href="#showFilterHelp" onclick="showMainFilterBox(); return false">?</a>
519 </li>
520 </ul>
496 </div>
521 </div>
497 </div>
522 </div>
498
523
@@ -503,15 +528,31 b''
503
528
504 - Prefix query to allow special search:
529 - Prefix query to allow special search:
505
530
506 user:admin, to search for usernames
531 user:admin, to search for usernames, always global
532
533 user_group:devops, to search for user groups, always global
534
535 commit:efced4, to search for commits, scoped to repositories or groups
536
537 file:models.py, to search for file paths, scoped to repositories or groups
507
538
508 user_group:devops, to search for user groups
539 % if c.template_context['search_context']['repo_id']:
509
540 For advanced full text search visit: <a href="${h.route_path('search_repo',repo_name=c.template_context['search_context']['repo_name'])}">repository search</a>
510 commit:efced4, to search for commits
541 % elif c.template_context['search_context']['repo_group_id']:
542 For advanced full text search visit: <a href="${h.route_path('search_repo_group',repo_group_name=c.template_context['search_context']['repo_group_name'])}">repository group search</a>
543 % else:
544 For advanced full text search visit: <a href="${h.route_path('search')}">global search</a>
545 % endif
511 </div>
546 </div>
512 </li>
547 </li>
513
548
514 ## ROOT MENU
549 ## ROOT MENU
550 <li class="${is_active('home')}">
551 <a class="menulink" title="${_('Home')}" href="${h.route_path('home')}">
552 <div class="menulabel">${_('Home')}</div>
553 </a>
554 </li>
555
515 %if c.rhodecode_user.username != h.DEFAULT_USER:
556 %if c.rhodecode_user.username != h.DEFAULT_USER:
516 <li class="${is_active('journal')}">
557 <li class="${is_active('journal')}">
517 <a class="menulink" title="${_('Show activity journal')}" href="${h.route_path('journal')}">
558 <a class="menulink" title="${_('Show activity journal')}" href="${h.route_path('journal')}">
@@ -525,16 +566,13 b''
525 </a>
566 </a>
526 </li>
567 </li>
527 %endif
568 %endif
569
528 <li class="${is_active('gists')}">
570 <li class="${is_active('gists')}">
529 <a class="menulink childs" title="${_('Show Gists')}" href="${h.route_path('gists_show')}">
571 <a class="menulink childs" title="${_('Show Gists')}" href="${h.route_path('gists_show')}">
530 <div class="menulabel">${_('Gists')}</div>
572 <div class="menulabel">${_('Gists')}</div>
531 </a>
573 </a>
532 </li>
574 </li>
533 <li class="${is_active('search')}">
575
534 <a class="menulink" title="${_('Search in repositories you have access to')}" href="${h.route_path('search')}">
535 <div class="menulabel">${_('Search')}</div>
536 </a>
537 </li>
538 % if h.HasPermissionAll('hg.admin')('access admin main page'):
576 % if h.HasPermissionAll('hg.admin')('access admin main page'):
539 <li class="${is_active('admin')}">
577 <li class="${is_active('admin')}">
540 <a class="menulink childs" title="${_('Admin settings')}" href="#" onclick="return false;">
578 <a class="menulink childs" title="${_('Admin settings')}" href="#" onclick="return false;">
@@ -620,6 +658,22 b''
620 }(result, escapeMarkup);
658 }(result, escapeMarkup);
621 };
659 };
622
660
661 var escapeRegExChars = function (value) {
662 return value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
663 };
664
665 var getRepoIcon = function(repo_type) {
666 if (repo_type === 'hg') {
667 return '<i class="icon-hg"></i> ';
668 }
669 else if (repo_type === 'git') {
670 return '<i class="icon-git"></i> ';
671 }
672 else if (repo_type === 'svn') {
673 return '<i class="icon-svn"></i> ';
674 }
675 return ''
676 };
623
677
624 var autocompleteMainFilterFormatResult = function (data, value, org_formatter) {
678 var autocompleteMainFilterFormatResult = function (data, value, org_formatter) {
625
679
@@ -630,27 +684,14 b''
630 var searchType = data['type'];
684 var searchType = data['type'];
631 var valueDisplay = data['value_display'];
685 var valueDisplay = data['value_display'];
632
686
633 var escapeRegExChars = function (value) {
634 return value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
635 };
636 var pattern = '(' + escapeRegExChars(value) + ')';
687 var pattern = '(' + escapeRegExChars(value) + ')';
637
688
638 var getRepoIcon = function(repo_type) {
689 valueDisplay = Select2.util.escapeMarkup(valueDisplay);
639 if (repo_type === 'hg') {
640 return '<i class="icon-hg"></i> ';
641 }
642 else if (repo_type === 'git') {
643 return '<i class="icon-git"></i> ';
644 }
645 else if (repo_type === 'svn') {
646 return '<i class="icon-svn"></i> ';
647 }
648 return ''
649 };
650
690
651 // highlight match
691 // highlight match
652 valueDisplay = Select2.util.escapeMarkup(valueDisplay);
692 if (searchType != 'text') {
653 valueDisplay = valueDisplay.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
693 valueDisplay = valueDisplay.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
694 }
654
695
655 var icon = '';
696 var icon = '';
656
697
@@ -682,6 +723,7 b''
682 else if (searchType === 'user_group') {
723 else if (searchType === 'user_group') {
683 icon += '<i class="icon-group"></i> ';
724 icon += '<i class="icon-group"></i> ';
684 }
725 }
726 // user
685 else if (searchType === 'user') {
727 else if (searchType === 'user') {
686 icon += '<img class="gravatar" src="{0}"/>'.format(data['icon_link']);
728 icon += '<img class="gravatar" src="{0}"/>'.format(data['icon_link']);
687 }
729 }
@@ -695,6 +737,20 b''
695 icon += '<i class="icon-tag"></i>';
737 icon += '<i class="icon-tag"></i>';
696 }
738 }
697 }
739 }
740 // file
741 else if (searchType === 'file') {
742 var repo_data = data['repo_data'];
743 var repoIcon = getRepoIcon(repo_data['repository_type']);
744 if (repoIcon) {
745 icon += repoIcon;
746 } else {
747 icon += '<i class="icon-tag"></i>';
748 }
749 }
750 // generic text
751 else if (searchType === 'text') {
752 icon = '';
753 }
698
754
699 var tmpl = '<div class="ac-container-wrap">{0}{1}</div>';
755 var tmpl = '<div class="ac-container-wrap">{0}{1}</div>';
700 return tmpl.format(icon, valueDisplay);
756 return tmpl.format(icon, valueDisplay);
@@ -704,25 +760,52 b''
704 if (suggestion.type === "hint") {
760 if (suggestion.type === "hint") {
705 // we skip action
761 // we skip action
706 $('#main_filter').focus();
762 $('#main_filter').focus();
763 }
764 else if (suggestion.type === "text") {
765 // we skip action
766 $('#main_filter').focus();
767
707 } else {
768 } else {
708 window.location = suggestion['url'];
769 window.location = suggestion['url'];
709 }
770 }
710 };
771 };
772
711 var autocompleteMainFilterResult = function (suggestion, originalQuery, queryLowerCase) {
773 var autocompleteMainFilterResult = function (suggestion, originalQuery, queryLowerCase) {
712 if (queryLowerCase.split(':').length === 2) {
774 if (queryLowerCase.split(':').length === 2) {
713 queryLowerCase = queryLowerCase.split(':')[1]
775 queryLowerCase = queryLowerCase.split(':')[1]
714 }
776 }
777 if (suggestion.type === "text") {
778 // special case we don't want to "skip" display for
779 return true
780 }
715 return suggestion.value_display.toLowerCase().indexOf(queryLowerCase) !== -1;
781 return suggestion.value_display.toLowerCase().indexOf(queryLowerCase) !== -1;
716 };
782 };
717
783
784 var cleanContext = {
785 repo_view_type: null,
786
787 repo_id: null,
788 repo_name: "",
789
790 repo_group_id: null,
791 repo_group_name: null
792 };
793 var removeGoToFilter = function () {
794 $('.searchTagHidable').hide();
795 $('#main_filter').autocomplete(
796 'setOptions', {params:{search_context: cleanContext}});
797 };
798
718 $('#main_filter').autocomplete({
799 $('#main_filter').autocomplete({
719 serviceUrl: pyroutes.url('goto_switcher_data'),
800 serviceUrl: pyroutes.url('goto_switcher_data'),
720 params: {"search_context": templateContext.search_context},
801 params: {
802 "search_context": templateContext.search_context
803 },
721 minChars:2,
804 minChars:2,
722 maxHeight:400,
805 maxHeight:400,
723 deferRequestBy: 300, //miliseconds
806 deferRequestBy: 300, //miliseconds
724 tabDisabled: true,
807 tabDisabled: true,
725 autoSelectFirst: true,
808 autoSelectFirst: false,
726 formatResult: autocompleteMainFilterFormatResult,
809 formatResult: autocompleteMainFilterFormatResult,
727 lookupFilter: autocompleteMainFilterResult,
810 lookupFilter: autocompleteMainFilterResult,
728 onSelect: function (element, suggestion) {
811 onSelect: function (element, suggestion) {
@@ -741,6 +824,18 b''
741 $('#main_filter_help').toggle();
824 $('#main_filter_help').toggle();
742 };
825 };
743
826
827 $('#main_filter').on('keydown.autocomplete', function (e) {
828
829 var BACKSPACE = 8;
830 var el = $(e.currentTarget);
831 if(e.which === BACKSPACE){
832 var inputVal = el.val();
833 if (inputVal === ""){
834 removeGoToFilter()
835 }
836 }
837 });
838
744 </script>
839 </script>
745 <script src="${h.asset('js/rhodecode/base/keyboard-bindings.js', ver=c.rhodecode_version_hash)}"></script>
840 <script src="${h.asset('js/rhodecode/base/keyboard-bindings.js', ver=c.rhodecode_version_hash)}"></script>
746 </%def>
841 </%def>
@@ -7,7 +7,7 b" go_import_header = ''"
7 if hasattr(c, 'rhodecode_db_repo'):
7 if hasattr(c, 'rhodecode_db_repo'):
8 c.template_context['repo_type'] = c.rhodecode_db_repo.repo_type
8 c.template_context['repo_type'] = c.rhodecode_db_repo.repo_type
9 c.template_context['repo_landing_commit'] = c.rhodecode_db_repo.landing_rev[1]
9 c.template_context['repo_landing_commit'] = c.rhodecode_db_repo.landing_rev[1]
10 ## check repo context
10 c.template_context['repo_id'] = c.rhodecode_db_repo.repo_id
11 c.template_context['repo_view_type'] = h.get_repo_view_type(request)
11 c.template_context['repo_view_type'] = h.get_repo_view_type(request)
12
12
13 if getattr(c, 'repo_group', None):
13 if getattr(c, 'repo_group', None):
@@ -29,6 +29,7 b" c.template_context['default_user'] = {"
29 c.template_context['search_context'] = {
29 c.template_context['search_context'] = {
30 'repo_group_id': c.template_context.get('repo_group_id'),
30 'repo_group_id': c.template_context.get('repo_group_id'),
31 'repo_group_name': c.template_context.get('repo_group_name'),
31 'repo_group_name': c.template_context.get('repo_group_name'),
32 'repo_id': c.template_context.get('repo_id'),
32 'repo_name': c.template_context.get('repo_name'),
33 'repo_name': c.template_context.get('repo_name'),
33 'repo_view_type': c.template_context.get('repo_view_type'),
34 'repo_view_type': c.template_context.get('repo_view_type'),
34 }
35 }
@@ -30,7 +30,7 b''
30 % if c.enable_downloads:
30 % if c.enable_downloads:
31 <% at_path = '{}.zip'.format(request.GET.get('at') or c.commit.raw_id[:6]) %>
31 <% at_path = '{}.zip'.format(request.GET.get('at') or c.commit.raw_id[:6]) %>
32 <div title="${_('Download tree at {}').format(at_path)}" class="btn btn-default new-file">
32 <div title="${_('Download tree at {}').format(at_path)}" class="btn btn-default new-file">
33 <a href="${h.route_path('repo_archivefile',repo_name=c.repo_name, fname=c.commit.raw_id)}">
33 <a href="${h.route_path('repo_archivefile',repo_name=c.repo_name, fname='{}.zip'.format(c.commit.raw_id))}">
34 ${_('Download tree at {}').format(at_path)}
34 ${_('Download tree at {}').format(at_path)}
35 </a>
35 </a>
36 </div>
36 </div>
@@ -79,13 +79,16 b''
79 order: [[ 0, "asc" ]],
79 order: [[ 0, "asc" ]],
80 columns: [
80 columns: [
81 { data: {"_": "name",
81 { data: {"_": "name",
82 "sort": "name_raw"}, title: "${_('Name')}", className: "td-componentname" },
82 "sort": "name_raw"}, title: "${_('Name')}", className: "truncate-wrap td-grid-name" },
83 { data: 'menu', "bSortable": false, className: "quick_repo_menu" },
83 { data: 'menu', "bSortable": false, className: "quick_repo_menu" },
84 { data: {"_": "desc",
84 { data: {"_": "desc",
85 "sort": "desc"}, title: "${_('Description')}", className: "td-description" },
85 "sort": "desc"}, title: "${_('Description')}", className: "td-description" },
86 { data: {"_": "last_change",
86 { data: {"_": "last_change",
87 "sort": "last_change_raw",
87 "sort": "last_change_raw",
88 "type": Number}, title: "${_('Last Change')}", className: "td-time" },
88 "type": Number}, title: "${_('Last Change')}", className: "td-time" },
89 { data: {"_": "last_changeset",
90 "sort": "last_changeset_raw",
91 "type": Number}, title: "", className: "td-hash" },
89 { data: {"_": "owner",
92 { data: {"_": "owner",
90 "sort": "owner"}, title: "${_('Owner')}", className: "td-user" }
93 "sort": "owner"}, title: "${_('Owner')}", className: "td-user" }
91 ],
94 ],
@@ -109,7 +112,7 b''
109 pageLength: ${c.visual.dashboard_items},
112 pageLength: ${c.visual.dashboard_items},
110 columns: [
113 columns: [
111 { data: {"_": "name",
114 { data: {"_": "name",
112 "sort": "name_raw"}, title: "${_('Name')}", className: "truncate-wrap td-componentname" },
115 "sort": "name_raw"}, title: "${_('Name')}", className: "truncate-wrap td-grid-name" },
113 { data: 'menu', "bSortable": false, className: "quick_repo_menu" },
116 { data: 'menu', "bSortable": false, className: "quick_repo_menu" },
114 { data: {"_": "desc",
117 { data: {"_": "desc",
115 "sort": "desc"}, title: "${_('Description')}", className: "td-description" },
118 "sort": "desc"}, title: "${_('Description')}", className: "td-description" },
@@ -14,11 +14,13 b''
14 <div id="header-inner" class="title">
14 <div id="header-inner" class="title">
15 <div id="logo">
15 <div id="logo">
16 <div class="logo-wrapper">
16 <div class="logo-wrapper">
17 <a href="${h.route_path('home')}"><img src="${h.asset('images/rhodecode-logo-white-216x60.png')}" alt="RhodeCode"/></a>
17 <a href="${h.route_path('home')}"><img src="${h.asset('images/rhodecode-logo-white-60x60.png')}" alt="RhodeCode"/></a>
18 </div>
18 </div>
19 %if c.rhodecode_name:
19 % if c.rhodecode_name:
20 <div class="branding">- ${h.branding(c.rhodecode_name)}</div>
20 <div class="branding">
21 %endif
21 <a href="${h.route_path('home')}">${h.branding(c.rhodecode_name)}</a>
22 </div>
23 % endif
22 </div>
24 </div>
23 </div>
25 </div>
24 </div>
26 </div>
@@ -14,11 +14,13 b''
14 <div id="header-inner" class="title">
14 <div id="header-inner" class="title">
15 <div id="logo">
15 <div id="logo">
16 <div class="logo-wrapper">
16 <div class="logo-wrapper">
17 <a href="${h.route_path('home')}"><img src="${h.asset('images/rhodecode-logo-white-216x60.png')}" alt="RhodeCode"/></a>
17 <a href="${h.route_path('home')}"><img src="${h.asset('images/rhodecode-logo-white-60x60.png')}" alt="RhodeCode"/></a>
18 </div>
18 </div>
19 %if c.rhodecode_name:
19 % if c.rhodecode_name:
20 <div class="branding">- ${h.branding(c.rhodecode_name)}</div>
20 <div class="branding">
21 %endif
21 <a href="${h.route_path('home')}">${h.branding(c.rhodecode_name)}</a>
22 </div>
23 % endif
22 </div>
24 </div>
23 </div>
25 </div>
24 </div>
26 </div>
@@ -28,6 +28,9 b''
28 </span>
28 </span>
29 </li>
29 </li>
30 % endfor
30 % endfor
31 <li>
32 Try <a href="${h.current_route_path(request, force_refresh=1)}">forced recheck</a> of the merge workspace in case current status seems wrong.
33 </li>
31 </ul>
34 </ul>
32 % endif
35 % endif
33
36
@@ -14,11 +14,13 b''
14 <div id="header-inner" class="title">
14 <div id="header-inner" class="title">
15 <div id="logo">
15 <div id="logo">
16 <div class="logo-wrapper">
16 <div class="logo-wrapper">
17 <a href="${h.route_path('home')}"><img src="${h.asset('images/rhodecode-logo-white-216x60.png')}" alt="RhodeCode"/></a>
17 <a href="${h.route_path('home')}"><img src="${h.asset('images/rhodecode-logo-white-60x60.png')}" alt="RhodeCode"/></a>
18 </div>
18 </div>
19 %if c.rhodecode_name:
19 % if c.rhodecode_name:
20 <div class="branding">- ${h.branding(c.rhodecode_name)}</div>
20 <div class="branding">
21 %endif
21 <a href="${h.route_path('home')}">${h.branding(c.rhodecode_name)}</a>
22 </div>
23 % endif
22 </div>
24 </div>
23 </div>
25 </div>
24 </div>
26 </div>
@@ -37,9 +37,9 b''
37
37
38 <%def name="menu_bar_subnav()">
38 <%def name="menu_bar_subnav()">
39 %if c.repo_name:
39 %if c.repo_name:
40 ${self.repo_menu(active='search')}
40 ${self.repo_menu(active='summary')}
41 %elif c.repo_group_name:
41 %elif c.repo_group_name:
42 ${self.repo_group_menu(active='search')}
42 ${self.repo_group_menu(active='home')}
43 %endif
43 %endif
44 </%def>
44 </%def>
45
45
@@ -64,8 +64,8 b' class TestVCSOperations(object):'
64 clone_url = rc_web_server.repo_clone_url(HG_REPO)
64 clone_url = rc_web_server.repo_clone_url(HG_REPO)
65 stdout, stderr = Command('/tmp').execute(
65 stdout, stderr = Command('/tmp').execute(
66 'hg clone --pull --stream', clone_url, tmpdir.strpath)
66 'hg clone --pull --stream', clone_url, tmpdir.strpath)
67 assert '225 files to transfer, 1.04 MB of data' in stdout
67 assert 'files to transfer,' in stdout
68 assert 'transferred 1.04 MB' in stdout
68 assert 'transferred 1.' in stdout
69 assert '114 files updated,' in stdout
69 assert '114 files updated,' in stdout
70
70
71 def test_clone_git_repo_by_admin(self, rc_web_server, tmpdir):
71 def test_clone_git_repo_by_admin(self, rc_web_server, tmpdir):
@@ -92,6 +92,7 b' def junk_form_data_detector(request):'
92
92
93 def sanity_check_factory(handler, registry):
93 def sanity_check_factory(handler, registry):
94 def sanity_check(request):
94 def sanity_check(request):
95 log.debug('Checking URL sanity')
95 try:
96 try:
96 junk_encoding_detector(request)
97 junk_encoding_detector(request)
97 bad_url_data_detector(request)
98 bad_url_data_detector(request)
@@ -113,5 +114,5 b' def includeme(config):'
113 'pyramid.events.NewRequest')
114 'pyramid.events.NewRequest')
114 config.add_subscriber('rhodecode.subscribers.add_request_user_context',
115 config.add_subscriber('rhodecode.subscribers.add_request_user_context',
115 'pyramid.events.ContextFound')
116 'pyramid.events.ContextFound')
117 config.add_tween('rhodecode.tweens.vcs_detection_tween_factory')
116 config.add_tween('rhodecode.tweens.sanity_check_factory')
118 config.add_tween('rhodecode.tweens.sanity_check_factory')
117 config.add_tween('rhodecode.tweens.vcs_detection_tween_factory')
1 NO CONTENT: file was removed, binary diff hidden
NO CONTENT: file was removed, binary diff hidden
General Comments 0
You need to be logged in to leave comments. Login now