##// END OF EJS Templates
release: Merge default into stable for release preparation
marcink -
r3002:f5da0c46 merge stable
parent child Browse files
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -0,0 +1,3 b''
1 [pip2nix]
2 requirements = -r ./requirements_docs.txt
3 output = ./python-packages-generated.nix
@@ -0,0 +1,221 b''
1 # Generated by pip2nix 0.8.0.dev1
2 # See https://github.com/johbo/pip2nix
3
4 { pkgs, fetchurl, fetchgit, fetchhg }:
5
6 self: super: {
7 "alabaster" = super.buildPythonPackage {
8 name = "alabaster-0.7.11";
9 doCheck = false;
10 src = fetchurl {
11 url = "https://files.pythonhosted.org/packages/3f/46/9346ea429931d80244ab7f11c4fce83671df0b7ae5a60247a2b588592c46/alabaster-0.7.11.tar.gz";
12 sha256 = "1mvm69xsn5xf1jc45kdq1mn0yq0pfn54mv2jcww4s1vwqx6iyfxn";
13 };
14 };
15 "babel" = super.buildPythonPackage {
16 name = "babel-2.6.0";
17 doCheck = false;
18 propagatedBuildInputs = [
19 self."pytz"
20 ];
21 src = fetchurl {
22 url = "https://files.pythonhosted.org/packages/be/cc/9c981b249a455fa0c76338966325fc70b7265521bad641bf2932f77712f4/Babel-2.6.0.tar.gz";
23 sha256 = "08rxmbx2s4irp0w0gmn498vns5xy0fagm0fg33xa772jiks51flc";
24 };
25 };
26 "certifi" = super.buildPythonPackage {
27 name = "certifi-2018.8.24";
28 doCheck = false;
29 src = fetchurl {
30 url = "https://files.pythonhosted.org/packages/e1/0f/f8d5e939184547b3bdc6128551b831a62832713aa98c2ccdf8c47ecc7f17/certifi-2018.8.24.tar.gz";
31 sha256 = "0f0nhrj9mlrf79iway4578wrsgmjh0fmacl9zv8zjckdy7b90rip";
32 };
33 };
34 "chardet" = super.buildPythonPackage {
35 name = "chardet-3.0.4";
36 doCheck = false;
37 src = fetchurl {
38 url = "https://files.pythonhosted.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/chardet-3.0.4.tar.gz";
39 sha256 = "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4";
40 };
41 };
42 "docutils" = super.buildPythonPackage {
43 name = "docutils-0.14";
44 doCheck = false;
45 src = fetchurl {
46 url = "https://files.pythonhosted.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz";
47 sha256 = "0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji";
48 };
49 };
50 "idna" = super.buildPythonPackage {
51 name = "idna-2.7";
52 doCheck = false;
53 src = fetchurl {
54 url = "https://files.pythonhosted.org/packages/65/c4/80f97e9c9628f3cac9b98bfca0402ede54e0563b56482e3e6e45c43c4935/idna-2.7.tar.gz";
55 sha256 = "05jam7d31767dr12x0rbvvs8lxnpb1mhdb2zdlfxgh83z6k3hjk8";
56 };
57 };
58 "imagesize" = super.buildPythonPackage {
59 name = "imagesize-1.1.0";
60 doCheck = false;
61 src = fetchurl {
62 url = "https://files.pythonhosted.org/packages/41/f5/3cf63735d54aa9974e544aa25858d8f9670ac5b4da51020bbfc6aaade741/imagesize-1.1.0.tar.gz";
63 sha256 = "1dg3wn7qpwmhgqc0r9na2ding1wif9q5spz3j9zn2riwphc2k0zk";
64 };
65 };
66 "jinja2" = super.buildPythonPackage {
67 name = "jinja2-2.9.6";
68 doCheck = false;
69 propagatedBuildInputs = [
70 self."markupsafe"
71 ];
72 src = fetchurl {
73 url = "https://files.pythonhosted.org/packages/90/61/f820ff0076a2599dd39406dcb858ecb239438c02ce706c8e91131ab9c7f1/Jinja2-2.9.6.tar.gz";
74 sha256 = "1zzrkywhziqffrzks14kzixz7nd4yh2vc0fb04a68vfd2ai03anx";
75 };
76 };
77 "markupsafe" = super.buildPythonPackage {
78 name = "markupsafe-1.0";
79 doCheck = false;
80 src = fetchurl {
81 url = "https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz";
82 sha256 = "0rdn1s8x9ni7ss8rfiacj7x1085lx8mh2zdwqslnw8xc3l4nkgm6";
83 };
84 };
85 "packaging" = super.buildPythonPackage {
86 name = "packaging-17.1";
87 doCheck = false;
88 propagatedBuildInputs = [
89 self."pyparsing"
90 self."six"
91 ];
92 src = fetchurl {
93 url = "https://files.pythonhosted.org/packages/77/32/439f47be99809c12ef2da8b60a2c47987786d2c6c9205549dd6ef95df8bd/packaging-17.1.tar.gz";
94 sha256 = "0nrpayk8kij1zm9sjnk38ldz3a6705ggvw8ljylqbrb4vmqbf6gh";
95 };
96 };
97 "pygments" = super.buildPythonPackage {
98 name = "pygments-2.2.0";
99 doCheck = false;
100 src = fetchurl {
101 url = "https://files.pythonhosted.org/packages/71/2a/2e4e77803a8bd6408a2903340ac498cb0a2181811af7c9ec92cb70b0308a/Pygments-2.2.0.tar.gz";
102 sha256 = "1k78qdvir1yb1c634nkv6rbga8wv4289xarghmsbbvzhvr311bnv";
103 };
104 };
105 "pyparsing" = super.buildPythonPackage {
106 name = "pyparsing-2.2.0";
107 doCheck = false;
108 src = fetchurl {
109 url = "https://files.pythonhosted.org/packages/3c/ec/a94f8cf7274ea60b5413df054f82a8980523efd712ec55a59e7c3357cf7c/pyparsing-2.2.0.tar.gz";
110 sha256 = "016b9gh606aa44sq92jslm89bg874ia0yyiyb643fa6dgbsbqch8";
111 };
112 };
113 "pytz" = super.buildPythonPackage {
114 name = "pytz-2018.4";
115 doCheck = false;
116 src = fetchurl {
117 url = "https://files.pythonhosted.org/packages/10/76/52efda4ef98e7544321fd8d5d512e11739c1df18b0649551aeccfb1c8376/pytz-2018.4.tar.gz";
118 sha256 = "0jgpqx3kk2rhv81j1izjxvmx8d0x7hzs1857pgqnixic5wq2ar60";
119 };
120 };
121 "requests" = super.buildPythonPackage {
122 name = "requests-2.19.1";
123 doCheck = false;
124 propagatedBuildInputs = [
125 self."chardet"
126 self."idna"
127 self."urllib3"
128 self."certifi"
129 ];
130 src = fetchurl {
131 url = "https://files.pythonhosted.org/packages/54/1f/782a5734931ddf2e1494e4cd615a51ff98e1879cbe9eecbdfeaf09aa75e9/requests-2.19.1.tar.gz";
132 sha256 = "0snf8xxdzsgh1x2zv3vilvbrv9jbpmnfagzzb1rjmmvflckdh8pc";
133 };
134 };
135 "setuptools" = super.buildPythonPackage {
136 name = "setuptools-40.2.0";
137 doCheck = false;
138 src = fetchurl {
139 url = "https://files.pythonhosted.org/packages/ef/1d/201c13e353956a1c840f5d0fbf0461bd45bbd678ea4843ebf25924e8984c/setuptools-40.2.0.zip";
140 sha256 = "19ng5m7kigllg3x96c91y3a2k28g6kwnbb1v4warrnp4xma1v227";
141 };
142 };
143 "six" = super.buildPythonPackage {
144 name = "six-1.11.0";
145 doCheck = false;
146 src = fetchurl {
147 url = "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
148 sha256 = "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h";
149 };
150 };
151 "snowballstemmer" = super.buildPythonPackage {
152 name = "snowballstemmer-1.2.1";
153 doCheck = false;
154 src = fetchurl {
155 url = "https://files.pythonhosted.org/packages/20/6b/d2a7cb176d4d664d94a6debf52cd8dbae1f7203c8e42426daa077051d59c/snowballstemmer-1.2.1.tar.gz";
156 sha256 = "0a0idq4y5frv7qsg2x62jd7rd272749xk4x99misf5rcifk2d7wi";
157 };
158 };
159 "sphinx" = super.buildPythonPackage {
160 name = "sphinx-1.7.8";
161 doCheck = false;
162 propagatedBuildInputs = [
163 self."six"
164 self."jinja2"
165 self."pygments"
166 self."docutils"
167 self."snowballstemmer"
168 self."babel"
169 self."alabaster"
170 self."imagesize"
171 self."requests"
172 self."setuptools"
173 self."packaging"
174 self."sphinxcontrib-websupport"
175 self."typing"
176 ];
177 src = fetchurl {
178 url = "https://files.pythonhosted.org/packages/ac/54/4ef326d0c654da1ed91341a7a1f43efc18a8c770ddd2b8e45df97cb79d82/Sphinx-1.7.8.tar.gz";
179 sha256 = "1ryz0w4c31930f1br2sjwrxwx9cmsy7cqdb0d81g98n9bj250w50";
180 };
181 };
182 "sphinx-rtd-theme" = super.buildPythonPackage {
183 name = "sphinx-rtd-theme-0.4.1";
184 doCheck = false;
185 propagatedBuildInputs = [
186 self."sphinx"
187 ];
188 src = fetchurl {
189 url = "https://files.pythonhosted.org/packages/f2/b0/a1933d792b806118ddbca6699f2e2c844d9b1b16e84a89d7effd5cd2a800/sphinx_rtd_theme-0.4.1.tar.gz";
190 sha256 = "1xkyqam8dzbjaymdyvkiif85m4y3jf8crdiwlgcfp8gqcj57aj9v";
191 };
192 };
193 "sphinxcontrib-websupport" = super.buildPythonPackage {
194 name = "sphinxcontrib-websupport-1.1.0";
195 doCheck = false;
196 src = fetchurl {
197 url = "https://files.pythonhosted.org/packages/07/7a/e74b06dce85555ffee33e1d6b7381314169ebf7e31b62c18fcb2815626b7/sphinxcontrib-websupport-1.1.0.tar.gz";
198 sha256 = "1ff3ix76xi1y6m99qxhaq5161ix9swwzydilvdya07mgbcvpzr4x";
199 };
200 };
201 "typing" = super.buildPythonPackage {
202 name = "typing-3.6.6";
203 doCheck = false;
204 src = fetchurl {
205 url = "https://files.pythonhosted.org/packages/bf/9b/2bf84e841575b633d8d91ad923e198a415e3901f228715524689495b4317/typing-3.6.6.tar.gz";
206 sha256 = "0ba9acs4awx15bf9v3nrs781msbd2nx826906nj6fqks2bvca9s0";
207 };
208 };
209 "urllib3" = super.buildPythonPackage {
210 name = "urllib3-1.23";
211 doCheck = false;
212 src = fetchurl {
213 url = "https://files.pythonhosted.org/packages/3c/d2/dc5471622bd200db1cd9319e02e71bc655e9ea27b8e0ce65fc69de0dac15/urllib3-1.23.tar.gz";
214 sha256 = "1bvbd35q3zdcd7gsv38fwpizy7p06dr0154g5gfybrvnbvhwb2m6";
215 };
216 };
217
218 ### Test requirements
219
220
221 }
@@ -0,0 +1,133 b''
1 |RCE| 4.13.0 |RNS|
2 ------------------
3
4 Release Date
5 ^^^^^^^^^^^^
6
7 - 2018-09-05
8
9
10 New Features
11 ^^^^^^^^^^^^
12
13 - Branch permissions: new set of permissions were added to control branch modification.
14 There are 4 basic permissions that can be set for branch names/branch patterns:
15 * no-access (any modification for given branch is forbidden)
16 * web-merge (modify branch by web based PR merge)
17 * push (only non-forced modification on branch are allowed)
18 * forced push (all modification to branch are allowed)
19 Available in EE edition only.
20 - Unified search and repo-switcher: a new persistent search box is now present allowing
21 to search for repositories, repository groups, commits (using full text search),
22 users, user-groups. Replaces redundant quick-filters/repo switcher.
23 - Default Reviewers: added possibility to match against regex based pattern as
24 alternative syntax to glob which didn't handle all the cases.
25 - Built-in Error tracker: added new exception tracking capability. All errors are now
26 tracked and stored. This allows instance admins to see potential problems without
27 access to the machine and logs.
28 - User Groups: each user group which users have access to expose public profile link.
29 It's possible to view the members of a group before attaching it to any resource.
30 - New caching framework: existing Beaker cache was completely replaced by dogpile.cache
31 library. This new cache framework in addition to solving multiple
32 performance/reliability problems of Beaker is used to cache permissions tree.
33 This gives huge performance boosts for very large and complex permission trees.
34 - Pull Requests: description field is now allowed to use a RST/Markdown syntax.
35 - SVN: added support for SVN 1.10 release line.
36
37
38 General
39 ^^^^^^^
40
41 - Google: updated google auth plugin with latest API changes.
42 - Frontend: Switched to Polymer 2.0.
43 - Events: added a default timeout for operation calling the endpoint url, so
44 they won't block forever.
45 - SQLAlchemy: allow DB connection ping/refresh using dedicated flag from .ini file.
46 `sqlalchemy.db1.ping_connection = true`
47 - Pull Requests: added option to force-refresh merge workspace in case of problems.
48 Adding GET param `?force_refresh=1` into PR page triggers the refresh.
49 - Pull Requests: show more info about version of comment vs latest version.
50 - Diffs: skip line numbers during copy from a diff view.
51 - License: use simple cache to read license info.
52 Due to the complex and expensive encryption, this reduces requests time by ~10ms.
53 - Debug: add new custom logging to track unique requests across systems.
54 Allows tracking single requests in very busy system by unique ID added into logging system.
55 - Configuration: .ini files now can replace a special placeholders e.g "{ENV_NAME}"
56 into a value from the ENVIRONMENT. Allows easier setup in Docker and similar.
57 - Backend: don't support vcsserver.scm_app anymore, now it uses http even if scm_app
58 is specified.
59 - Repositories: re-order creation/fork forms for better UX and consistency.
60 - UI: Add the number of inactive users in _admin/users and _admin/user_groups
61 - UX: updated registration form to better indicate what is the process of binding a
62 RhodeCode account with external one like Google.
63 - API: pull-requests allow automatic title generation via API
64 - VCSServer: errors: use a better interface to track exceptions and tracebacks.
65 - VCSServer: caches: replaced beaker with dogpile cache.
66 - GIT: use GIT_DISCOVERY_ACROSS_FILESYSTEM for better compatibility on NFS servers.
67 - Dependencies: bumped mercurial to 4.6.2
68 - Dependencies: bumped evolve to 8.0.1
69 - Dependencies: bumped hgsubversion to 1.9.2
70 - Dependencies: bumped git version to 2.16.4
71 - Dependencies: bumped SVN to 1.10.2
72 - Dependencies: added alternative pymysql drivers for mysql
73 - NIX: updated to 18.03 nix packages, now shipped with python 2.7.15
74 release and multiple other new libraries.
75
76
77 Security
78 ^^^^^^^^
79
80 - Mercurial: general protocol security updates.
81 * Fixes Mercurial's CVE for lack of permissions checking on mercurial batch commands.
82 * Introduced more strict checks for permissions, now they default to push instead of pull.
83 * Decypher batch commands and pick top-most permission to be required.
84 * This follows changes in Mercurial CORE after 4.6.1 release.
85 - Fixed bug in bleach sanitizer allowing certain custom payload to bypass it. Now
86 we always fails if sanitizing fails. This could lead to stored XSS
87 - Fixed stored XSS in binary file rendering.
88 - Fixed stored XSS in repo forks datagrid.
89
90
91 Performance
92 ^^^^^^^^^^^
93
94 - Permissions: Permission trees for users and now cached, after calculation.
95 This reduces response time for some pages dramatically.
96 In case of any permission changes caches are invalidated.
97 - Core: new dogpile.cache based cache framework was introduced, which is faster than
98 previously used Beaker.
99
100
101 Fixes
102 ^^^^^
103
104 - Audit Logs: store properly IP for certain events.
105 - External Auth: pass along came_from into the url so we get properly
106 redirected back after logging using external auth provider.
107 - Pull Requests: lock submit on pull request to prevent double submission on a fast click.
108 - Pull Requests: fixed a case of unresolved comments attached to removed file in pull request.
109 That prevented from closing it.
110 - Pull Requests: use numeric repo id for creation of shadow repos. Fixes a problem
111 when repository is renamed during PR lifetime.
112 - API: fixed creation of a pull request with default reviewer rules.
113 - Default Reviewers: fixed voting rule calculation on user group.
114 - Pull Requests: in GIT use force fetch and update for target ref.
115 This solves a case when in PR a target repository is force updated (by push force)
116 and is out of sync.
117 - VCSServer: detect early potential locale problem, and fallback to LC_ALL=C,
118 instead of crashing vcsserver.
119 - Pull Requests: use a safer way of destroying shadow repositories.
120 Fixes some problems in NFS storage and big repositories
121
122
123 Upgrade notes
124 ^^^^^^^^^^^^^
125
126 - The direct backend `vcsserver.scm_app` is not supported anymore. This backed was
127 already deprecated some time ago. Now it will use `http` mode even if scm_app is
128 specified. Please contact us in case you still use it, and not sure how to upgrade.
129 - New dogpile cache settings are not ported to converted .ini. If users want to do
130 adjustments please copy the settings over dogpile cache section from a newly
131 generated rhodecode.template.ini file. This file is stored next to rhodecode.ini
132 - SVN 1.10.2 was introduced in this release. Please make sure to update your
133 mod_dav to the same version for best compatibility.
@@ -0,0 +1,52 b''
1
2 ==============================
3 Generate the Nix expressions
4 ==============================
5
6 Details can be found in the repository of `RhodeCode Enterprise CE`_ inside of
7 the file `docs/contributing/dependencies.rst`.
8
9 Start the environment as follows:
10
11 .. code:: shell
12
13 nix-shell pkgs/shell-generate.nix
14
15
16
17 Python dependencies
18 ===================
19
20 .. code:: shell
21
22 pip2nix generate --licenses
23 # or
24 nix-shell pkgs/shell-generate.nix --command "pip2nix generate --licenses"
25
26
27 NodeJS dependencies
28 ===================
29
30 .. code:: shell
31
32 rm -rf node_modules
33 nix-shell pkgs/shell-generate.nix --command "
34 node2nix --input package.json \
35 -o pkgs/node-packages.nix \
36 -e pkgs/node-env.nix \
37 -c pkgs/node-default.nix \
38 -d --flatten --nodejs-6 "
39
40
41
42 Bower dependencies
43 ==================
44
45 .. code:: shell
46
47 nix-shell pkgs/shell-generate.nix --command "bower2nix bower.json pkgs/bower-packages.nix"
48
49
50 .. Links
51
52 .. _RhodeCode Enterprise CE: https://code.rhodecode.com/rhodecode-enterprise-ce
@@ -0,0 +1,17 b''
1 { pkgs
2 , pythonPackages
3 }:
4
5 rec {
6 pip2nix-src = pkgs.fetchzip {
7 url = https://github.com/johbo/pip2nix/archive/51e6fdae34d0e8ded9efeef7a8601730249687a6.tar.gz;
8 sha256 = "02a4jjgi7lsvf8mhrxsd56s9a3yg20081rl9bgc2m84w60v2gbz2";
9 };
10
11 pip2nix = import pip2nix-src {
12 inherit
13 pkgs
14 pythonPackages;
15 };
16
17 }
@@ -0,0 +1,13 b''
1 diff -rup Beaker-1.9.1-orig/beaker/ext/database.py Beaker-1.9.1/beaker/ext/database.py
2 --- Beaker-1.9.1-orig/beaker/ext/database.py 2018-05-22 18:22:34.802619619 +0200
3 +++ Beaker-1.9.1/beaker/ext/database.py 2018-05-22 17:07:14.048335196 +0200
4 @@ -91,7 +91,8 @@ class DatabaseNamespaceManager(OpenResou
5 sa.Column('created', types.DateTime, nullable=False),
6 sa.Column('data', types.PickleType, nullable=False),
7 sa.UniqueConstraint('namespace'),
8 - schema=schema_name if schema_name else meta.schema
9 + schema=schema_name if schema_name else meta.schema,
10 + extend_existing=True
11 )
12 cache.create(checkfirst=True)
13 return cache
1 NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
@@ -1,6 +1,6 b''
1 1 [bumpversion]
2 current_version = 4.12.4
2 current_version = 4.13.0
3 3 message = release: Bump version {current_version} to {new_version}
4 4
5 5 [bumpversion:file:rhodecode/VERSION]
6 6
@@ -1,33 +1,28 b''
1 1 [DEFAULT]
2 2 done = false
3 3
4 4 [task:bump_version]
5 5 done = true
6 6
7 7 [task:rc_tools_pinned]
8 done = true
9 8
10 9 [task:fixes_on_stable]
11 done = true
12 10
13 11 [task:pip2nix_generated]
14 done = true
15 12
16 13 [task:changelog_updated]
17 done = true
18 14
19 15 [task:generate_api_docs]
20 done = true
16
17 [task:updated_translation]
21 18
22 19 [release]
23 state = prepared
24 version = 4.12.4
25
26 [task:updated_translation]
20 state = in_progress
21 version = 4.13.0
27 22
28 23 [task:generate_js_routes]
29 24
30 25 [task:updated_trial_license]
31 26
32 27 [task:generate_oss_licenses]
33 28
@@ -1,51 +1,53 b''
1 1 # top level files
2 2
3 3 include MANIFEST.in
4 4 include README.rst
5 5 include CHANGES.rst
6 6 include LICENSE.txt
7 7
8 8 include rhodecode/VERSION
9 9
10 10 # docs
11 11 recursive-include docs *
12 12
13 13 # all config files
14 14 recursive-include configs *
15 15
16 16 # translations
17 17 recursive-include rhodecode/i18n *
18 18
19 19 # non-python core stuff
20 20 recursive-include rhodecode *.cfg
21 21 recursive-include rhodecode *.json
22 22 recursive-include rhodecode *.ini_tmpl
23 23 recursive-include rhodecode *.sh
24 24 recursive-include rhodecode *.mako
25 25
26 26 # 502 page
27 27 include rhodecode/public/502.html
28 28
29 # robots
30 include rhodecode/public/robots.txt
29 31
30 32 # images, css
31 33 include rhodecode/public/css/*.css
32 34 include rhodecode/public/images/*.*
33 35 include rhodecode/public/images/ee_features/*.*
34 36
35 37 # sound files
36 38 include rhodecode/public/sounds/*.mp3
37 39 include rhodecode/public/sounds/*.wav
38 40
39 41 # fonts
40 42 recursive-include rhodecode/public/fonts/ProximaNova *
41 43 recursive-include rhodecode/public/fonts/RCIcons *
42 44
43 45 # js
44 46 recursive-include rhodecode/public/js *
45 47
46 48 # templates
47 49 recursive-include rhodecode/templates *
48 50
49 51 # skip any tests files
50 52 recursive-exclude rhodecode/tests *
51 53
@@ -1,114 +1,114 b''
1 1 =========
2 2 RhodeCode
3 3 =========
4 4
5 5 About
6 6 -----
7 7
8 8 ``RhodeCode`` is a fast and powerful management tool for Mercurial_ and GIT_
9 9 and Subversion_ with a built in push/pull server, full text search,
10 pull requests and powerfull code-review system. It works on http/https and
10 pull requests and powerful code-review system. It works on http/https and
11 11 has a few unique features like:
12
12 13 - plugable architecture
13 14 - advanced permission system with IP restrictions
14 15 - rich set of authentication plugins including LDAP,
15 16 ActiveDirectory, Atlassian Crowd, Http-Headers, Pam, Token-Auth.
16 17 - live code-review chat
17 18 - full web based file editing
18 19 - unified multi vcs support
19 20 - snippets (gist) system
20 21 - integration with all 3rd party issue trackers
21 22
22 23 RhodeCode also provides rich API, and multiple event hooks so it's easy
23 24 integrable with existing external systems.
24 25
25 26 RhodeCode is similar in some respects to gitlab_, github_ or bitbucket_,
26 27 however RhodeCode can be run as standalone hosted application on your own server.
27 28 RhodeCode can be installed on \*nix or Windows systems.
28 29
29 30 RhodeCode uses `PEP386 versioning <http://www.python.org/dev/peps/pep-0386/>`_
30 31
31 32 Installation
32 33 ------------
33 34 Please visit https://docs.rhodecode.com/RhodeCode-Control/tasks/install-cli.html
34 35 for more details
35 36
36 37
37 38 Source code
38 39 -----------
39 40
40 41 The latest sources can be obtained from official RhodeCode instance
41 42 https://code.rhodecode.com
42 43
43 44
44 45 Contributions
45 46 -------------
46 47
47 48 RhodeCode is open-source; contributions are welcome!
48 49
49 50 Please see the contribution documentation inside of the docs folder, which is
50 51 also available at
51 52 https://docs.rhodecode.com/RhodeCode-Enterprise/contributing/contributing.html
52 53
53 54 For additional information about collaboration tools, our issue tracker,
54 55 licensing, and contribution credit, visit https://rhodecode.com/open-source
55 56
56 57
57 58 RhodeCode Features
58 59 ------------------
59 60
60 61 Check out all features of RhodeCode at https://rhodecode.com/features
61 62
62 63 License
63 64 -------
64 65
65 66 ``RhodeCode`` is dual-licensed with AGPLv3 and commercial license.
66 67 Please see LICENSE.txt file for details.
67 68
68 69
69 70 Getting help
70 71 ------------
71 72
72 73 Listed bellow are various support resources that should help.
73 74
74 75 .. note::
75 76
76 77 Please try to read the documentation before posting any issues, especially
77 78 the **troubleshooting section**
78 79
79 80 - Official issue tracker `RhodeCode Issue tracker <https://issues.rhodecode.com>`_
80 81
81 - Search our community portal `Community portal <https://community.rhodecode.com>`_
82 - Official Slack Community Channel `RhodeCode Slack <https://rhodecode.com/join>`_
82 83
83 - Join #rhodecode on FreeNode (irc.freenode.net)
84 or use http://webchat.freenode.net/?channels=rhodecode for web access to irc.
84 - Search our community portal `Community portal <https://community.rhodecode.com>`_
85 85
86 86 - You can also follow RhodeCode on twitter **@RhodeCode** where we often post
87 87 news and other interesting stuff about RhodeCode.
88 88
89 89
90 90 Online documentation
91 91 --------------------
92 92
93 93 Online documentation for the current version of RhodeCode is available at
94 94 - http://rhodecode.com/docs
95 95
96 96 You may also build the documentation for yourself - go into ``docs/`` and run::
97 97
98 98 nix-build default.nix -o result && make clean html
99 99
100 100 (You need to have sphinx_ installed to build the documentation. If you don't
101 101 have sphinx_ installed you can install it via the command:
102 102 ``pip install sphinx``)
103 103
104 104 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
105 105 .. _python: http://www.python.org/
106 106 .. _sphinx: http://sphinx.pocoo.org/
107 107 .. _mercurial: http://mercurial.selenic.com/
108 108 .. _bitbucket: http://bitbucket.org/
109 109 .. _github: http://github.com/
110 110 .. _gitlab: http://gitlab.com/
111 111 .. _subversion: http://subversion.tigris.org/
112 112 .. _git: http://git-scm.com/
113 113 .. _celery: http://celeryproject.org/
114 114 .. _vcs: http://pypi.python.org/pypi/vcs
@@ -1,17 +1,17 b''
1 1 {
2 2 "name": "rhodecode-elements",
3 3 "description": "User interface for elements for rhodecode",
4 4 "main": "index.html",
5 5 "dependencies": {
6 "webcomponentsjs": "^0.7.22",
7 "polymer": "Polymer/polymer#^1.6.1",
8 "paper-button": "PolymerElements/paper-button#^1.0.13",
9 "paper-spinner": "PolymerElements/paper-spinner#^1.2.0",
10 "paper-tooltip": "PolymerElements/paper-tooltip#^1.1.2",
11 "paper-toast": "PolymerElements/paper-toast#^1.3.0",
12 "paper-toggle-button": "PolymerElements/paper-toggle-button#^1.2.0",
13 "iron-ajax": "PolymerElements/iron-ajax#^1.4.3",
14 "iron-autogrow-textarea": "PolymerElements/iron-autogrow-textarea#^1.0.13",
15 "iron-a11y-keys": "PolymerElements/iron-a11y-keys#^1.0.6"
6 "webcomponentsjs": "^1.2.3",
7 "polymer": "Polymer/polymer#^2.6.0",
8 "paper-button": "PolymerElements/paper-button#^2.1.2",
9 "paper-spinner": "PolymerElements/paper-spinner#^2.1.0",
10 "paper-tooltip": "PolymerElements/paper-tooltip#^2.1.1",
11 "paper-toast": "PolymerElements/paper-toast#^2.1.2",
12 "paper-toggle-button": "PolymerElements/paper-toggle-button#^2.1.1",
13 "iron-ajax": "PolymerElements/iron-ajax#^2.1.3",
14 "iron-autogrow-textarea": "PolymerElements/iron-autogrow-textarea#^2.2.0",
15 "iron-a11y-keys": "PolymerElements/iron-a11y-keys#^2.1.2"
16 16 }
17 17 }
@@ -1,719 +1,732 b''
1 1
2 2
3 3 ################################################################################
4 4 ## RHODECODE COMMUNITY EDITION CONFIGURATION ##
5 # The %(here)s variable will be replaced with the parent directory of this file#
6 5 ################################################################################
7 6
8 7 [DEFAULT]
9 8 debug = true
10 9
11 10 ################################################################################
12 11 ## EMAIL CONFIGURATION ##
13 12 ## Uncomment and replace with the email address which should receive ##
14 13 ## any error reports after an application crash ##
15 14 ## Additionally these settings will be used by the RhodeCode mailing system ##
16 15 ################################################################################
17 16
18 17 ## prefix all emails subjects with given prefix, helps filtering out emails
19 18 #email_prefix = [RhodeCode]
20 19
21 20 ## email FROM address all mails will be sent
22 21 #app_email_from = rhodecode-noreply@localhost
23 22
24 23 ## Uncomment and replace with the address which should receive any error report
25 24 ## note: using appenlight for error handling doesn't need this to be uncommented
26 25 #email_to = admin@localhost
27 26
28 27 ## in case of Application errors, sent an error email form
29 28 #error_email_from = rhodecode_error@localhost
30 29
31 30 ## additional error message to be send in case of server crash
32 31 #error_message =
33 32
34 33
35 34 #smtp_server = mail.server.com
36 35 #smtp_username =
37 36 #smtp_password =
38 37 #smtp_port =
39 38 #smtp_use_tls = false
40 39 #smtp_use_ssl = true
41 40 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
42 41 #smtp_auth =
43 42
44 43 [server:main]
45 44 ## COMMON ##
46 45 host = 127.0.0.1
47 46 port = 5000
48 47
49 ##################################
50 ## WAITRESS WSGI SERVER ##
51 ## Recommended for Development ##
52 ##################################
48 ###########################################################
49 ## WAITRESS WSGI SERVER - Recommended for Development ####
50 ###########################################################
53 51
54 52 use = egg:waitress#main
55 53 ## number of worker threads
56 54 threads = 5
57 55 ## MAX BODY SIZE 100GB
58 56 max_request_body_size = 107374182400
59 57 ## Use poll instead of select, fixes file descriptors limits problems.
60 58 ## May not work on old windows systems.
61 59 asyncore_use_poll = true
62 60
63 61
64 62 ##########################
65 63 ## GUNICORN WSGI SERVER ##
66 64 ##########################
67 65 ## run with gunicorn --log-config rhodecode.ini --paste rhodecode.ini
68 66
69 67 #use = egg:gunicorn#main
70 ## Sets the number of process workers. You must set `instance_id = *`
71 ## when this option is set to more than one worker, recommended
72 ## value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers
73 ## The `instance_id = *` must be set in the [app:main] section below
68 ## Sets the number of process workers. More workers means more concurent connections
69 ## RhodeCode can handle at the same time. Each additional worker also it increases
70 ## memory usage as each has it's own set of caches.
71 ## Recommended value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers, but no more
72 ## than 8-10 unless for really big deployments .e.g 700-1000 users.
73 ## `instance_id = *` must be set in the [app:main] section below (which is the default)
74 ## when using more than 1 worker.
74 75 #workers = 2
75 ## number of threads for each of the worker, must be set to 1 for gevent
76 ## generally recommended to be at 1
77 #threads = 1
78 ## process name
76 ## process name visible in process list
79 77 #proc_name = rhodecode
80 78 ## type of worker class, one of sync, gevent
81 79 ## recommended for bigger setup is using of of other than sync one
82 80 #worker_class = gevent
83 81 ## The maximum number of simultaneous clients. Valid only for Gevent
84 82 #worker_connections = 10
85 83 ## max number of requests that worker will handle before being gracefully
86 84 ## restarted, could prevent memory leaks
87 85 #max_requests = 1000
88 86 #max_requests_jitter = 30
89 87 ## amount of time a worker can spend with handling a request before it
90 88 ## gets killed and restarted. Set to 6hrs
91 89 #timeout = 21600
92 90
93 91
94 92 ## prefix middleware for RhodeCode.
95 93 ## recommended when using proxy setup.
96 94 ## allows to set RhodeCode under a prefix in server.
97 95 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
98 96 ## And set your prefix like: `prefix = /custom_prefix`
99 97 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
100 98 ## to make your cookies only work on prefix url
101 99 [filter:proxy-prefix]
102 100 use = egg:PasteDeploy#prefix
103 101 prefix = /
104 102
105 103 [app:main]
104 ## The %(here)s variable will be replaced with the absolute path of parent directory
105 ## of this file
106 ## In addition ENVIRONMENT variables usage is possible, e.g
107 ## sqlalchemy.db1.url = {ENV_RC_DB_URL}
108
106 109 use = egg:rhodecode-enterprise-ce
107 110
108 111 ## enable proxy prefix middleware, defined above
109 112 #filter-with = proxy-prefix
110 113
111 114 # During development the we want to have the debug toolbar enabled
112 115 pyramid.includes =
113 116 pyramid_debugtoolbar
114 117 rhodecode.lib.middleware.request_wrapper
115 118
116 119 pyramid.reload_templates = true
117 120
118 121 debugtoolbar.hosts = 0.0.0.0/0
119 122 debugtoolbar.exclude_prefixes =
120 123 /css
121 124 /fonts
122 125 /images
123 126 /js
124 127
125 128 ## RHODECODE PLUGINS ##
126 129 rhodecode.includes =
127 130 rhodecode.api
128 131
129 132
130 133 # api prefix url
131 134 rhodecode.api.url = /_admin/api
132 135
133 136
134 137 ## END RHODECODE PLUGINS ##
135 138
136 139 ## encryption key used to encrypt social plugin tokens,
137 140 ## remote_urls with credentials etc, if not set it defaults to
138 141 ## `beaker.session.secret`
139 142 #rhodecode.encrypted_values.secret =
140 143
141 144 ## decryption strict mode (enabled by default). It controls if decryption raises
142 145 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
143 146 #rhodecode.encrypted_values.strict = false
144 147
145 148 ## return gzipped responses from Rhodecode (static files/application)
146 149 gzip_responses = false
147 150
148 151 ## autogenerate javascript routes file on startup
149 152 generate_js_files = false
150 153
151 ## Optional Languages
152 ## en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
154 ## System global default language.
155 ## All available languages: en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
153 156 lang = en
154 157
155 ## perform a full repository scan on each server start, this should be
156 ## set to false after first startup, to allow faster server restarts.
158 ## Perform a full repository scan and import on each server start.
159 ## Settings this to true could lead to very long startup time.
157 160 startup.import_repos = false
158 161
159 162 ## Uncomment and set this path to use archive download cache.
160 163 ## Once enabled, generated archives will be cached at this location
161 164 ## and served from the cache during subsequent requests for the same archive of
162 165 ## the repository.
163 166 #archive_cache_dir = /tmp/tarballcache
164 167
165 168 ## URL at which the application is running. This is used for bootstraping
166 169 ## requests in context when no web request is available. Used in ishell, or
167 170 ## SSH calls. Set this for events to receive proper url for SSH calls.
168 171 app.base_url = http://rhodecode.local
169 172
170 ## change this to unique ID for security
173 ## Unique application ID. Should be a random unique string for security.
171 174 app_instance_uuid = rc-production
172 175
173 ## cut off limit for large diffs (size in bytes). If overall diff size on
176 ## Cut off limit for large diffs (size in bytes). If overall diff size on
174 177 ## commit, or pull request exceeds this limit this diff will be displayed
175 178 ## partially. E.g 512000 == 512Kb
176 179 cut_off_limit_diff = 512000
177 180
178 ## cut off limit for large files inside diffs (size in bytes). Each individual
181 ## Cut off limit for large files inside diffs (size in bytes). Each individual
179 182 ## file inside diff which exceeds this limit will be displayed partially.
180 183 ## E.g 128000 == 128Kb
181 184 cut_off_limit_file = 128000
182 185
183 ## use cache version of scm repo everywhere
186 ## use cached version of vcs repositories everywhere. Recommended to be `true`
184 187 vcs_full_cache = true
185 188
186 ## force https in RhodeCode, fixes https redirects, assumes it's always https
189 ## Force https in RhodeCode, fixes https redirects, assumes it's always https.
187 190 ## Normally this is controlled by proper http flags sent from http server
188 191 force_https = false
189 192
190 193 ## use Strict-Transport-Security headers
191 194 use_htsts = false
192 195
193 196 ## git rev filter option, --all is the default filter, if you need to
194 197 ## hide all refs in changelog switch this to --branches --tags
195 198 git_rev_filter = --branches --tags
196 199
197 200 # Set to true if your repos are exposed using the dumb protocol
198 201 git_update_server_info = false
199 202
200 203 ## RSS/ATOM feed options
201 204 rss_cut_off_limit = 256000
202 205 rss_items_per_page = 10
203 206 rss_include_diff = false
204 207
205 208 ## gist URL alias, used to create nicer urls for gist. This should be an
206 209 ## url that does rewrites to _admin/gists/{gistid}.
207 210 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
208 211 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
209 212 gist_alias_url =
210 213
211 214 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
212 215 ## used for access.
213 216 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
214 217 ## came from the the logged in user who own this authentication token.
215 218 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
216 219 ## authentication token. Such view would be only accessible when used together
217 220 ## with this authentication token
218 221 ##
219 222 ## list of all views can be found under `/_admin/permissions/auth_token_access`
220 223 ## The list should be "," separated and on a single line.
221 224 ##
222 225 ## Most common views to enable:
223 226 # RepoCommitsView:repo_commit_download
224 227 # RepoCommitsView:repo_commit_patch
225 228 # RepoCommitsView:repo_commit_raw
226 229 # RepoCommitsView:repo_commit_raw@TOKEN
227 230 # RepoFilesView:repo_files_diff
228 231 # RepoFilesView:repo_archivefile
229 232 # RepoFilesView:repo_file_raw
230 233 # GistView:*
231 234 api_access_controllers_whitelist =
232 235
233 ## default encoding used to convert from and to unicode
236 ## Default encoding used to convert from and to unicode
234 237 ## can be also a comma separated list of encoding in case of mixed encodings
235 238 default_encoding = UTF-8
236 239
237 240 ## instance-id prefix
238 241 ## a prefix key for this instance used for cache invalidation when running
239 242 ## multiple instances of rhodecode, make sure it's globally unique for
240 243 ## all running rhodecode instances. Leave empty if you don't use it
241 244 instance_id =
242 245
243 246 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
244 247 ## of an authentication plugin also if it is disabled by it's settings.
245 248 ## This could be useful if you are unable to log in to the system due to broken
246 249 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
247 250 ## module to log in again and fix the settings.
248 251 ##
249 252 ## Available builtin plugin IDs (hash is part of the ID):
250 253 ## egg:rhodecode-enterprise-ce#rhodecode
251 254 ## egg:rhodecode-enterprise-ce#pam
252 255 ## egg:rhodecode-enterprise-ce#ldap
253 256 ## egg:rhodecode-enterprise-ce#jasig_cas
254 257 ## egg:rhodecode-enterprise-ce#headers
255 258 ## egg:rhodecode-enterprise-ce#crowd
256 259 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
257 260
258 261 ## alternative return HTTP header for failed authentication. Default HTTP
259 262 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
260 263 ## handling that causing a series of failed authentication calls.
261 264 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
262 265 ## This will be served instead of default 401 on bad authnetication
263 266 auth_ret_code =
264 267
265 268 ## use special detection method when serving auth_ret_code, instead of serving
266 269 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
267 270 ## and then serve auth_ret_code to clients
268 271 auth_ret_code_detection = false
269 272
270 273 ## locking return code. When repository is locked return this HTTP code. 2XX
271 274 ## codes don't break the transactions while 4XX codes do
272 275 lock_ret_code = 423
273 276
274 277 ## allows to change the repository location in settings page
275 278 allow_repo_location_change = true
276 279
277 280 ## allows to setup custom hooks in settings page
278 281 allow_custom_hooks_settings = true
279 282
280 ## generated license token, goto license page in RhodeCode settings to obtain
281 ## new token
283 ## Generated license token required for EE edition license.
284 ## New generated token value can be found in Admin > settings > license page.
282 285 license_token =
283 286
284 287 ## supervisor connection uri, for managing supervisor and logs.
285 288 supervisor.uri =
286 289 ## supervisord group name/id we only want this RC instance to handle
287 290 supervisor.group_id = dev
288 291
289 292 ## Display extended labs settings
290 293 labs_settings_active = true
291 294
292 295 ####################################
293 296 ### CELERY CONFIG ####
294 297 ####################################
295 298 ## run: /path/to/celery worker \
296 299 ## -E --beat --app rhodecode.lib.celerylib.loader \
297 300 ## --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler \
298 301 ## --loglevel DEBUG --ini /path/to/rhodecode.ini
299 302
300 303 use_celery = false
301 304
302 305 ## connection url to the message broker (default rabbitmq)
303 306 celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
304 307
305 308 ## maximum tasks to execute before worker restart
306 309 celery.max_tasks_per_child = 100
307 310
308 311 ## tasks will never be sent to the queue, but executed locally instead.
309 312 celery.task_always_eager = false
310 313
311 ####################################
312 ### BEAKER CACHE ####
313 ####################################
314 # default cache dir for templates. Putting this into a ramdisk
315 ## can boost performance, eg. %(here)s/data_ramdisk
314 #####################################
315 ### DOGPILE CACHE ####
316 #####################################
317 ## Default cache dir for caches. Putting this into a ramdisk
318 ## can boost performance, eg. /tmpfs/data_ramdisk, however this directory might require
319 ## large amount of space
316 320 cache_dir = %(here)s/data
317 321
318 ## locking and default file storage for Beaker. Putting this into a ramdisk
319 ## can boost performance, eg. %(here)s/data_ramdisk/cache/beaker_data
320 beaker.cache.data_dir = %(here)s/data/cache/beaker_data
321 beaker.cache.lock_dir = %(here)s/data/cache/beaker_lock
322
323 beaker.cache.regions = super_short_term, short_term, long_term, sql_cache_short, auth_plugins, repo_cache_long
322 ## `cache_perms` cache settings for permission tree, auth TTL.
323 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
324 rc_cache.cache_perms.expiration_time = 300
324 325
325 beaker.cache.super_short_term.type = memory
326 beaker.cache.super_short_term.expire = 10
327 beaker.cache.super_short_term.key_length = 256
326 ## alternative `cache_perms` redis backend with distributed lock
327 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
328 #rc_cache.cache_perms.expiration_time = 300
329 ## redis_expiration_time needs to be greater then expiration_time
330 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
331 #rc_cache.cache_perms.arguments.socket_timeout = 30
332 #rc_cache.cache_perms.arguments.host = localhost
333 #rc_cache.cache_perms.arguments.port = 6379
334 #rc_cache.cache_perms.arguments.db = 0
335 #rc_cache.cache_perms.arguments.distributed_lock = true
328 336
329 beaker.cache.short_term.type = memory
330 beaker.cache.short_term.expire = 60
331 beaker.cache.short_term.key_length = 256
332
333 beaker.cache.long_term.type = memory
334 beaker.cache.long_term.expire = 36000
335 beaker.cache.long_term.key_length = 256
337 ## `cache_repo` cache settings for FileTree, Readme, RSS FEEDS
338 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
339 rc_cache.cache_repo.expiration_time = 2592000
336 340
337 beaker.cache.sql_cache_short.type = memory
338 beaker.cache.sql_cache_short.expire = 10
339 beaker.cache.sql_cache_short.key_length = 256
341 ## alternative `cache_repo` redis backend with distributed lock
342 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
343 #rc_cache.cache_repo.expiration_time = 2592000
344 ## redis_expiration_time needs to be greater then expiration_time
345 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
346 #rc_cache.cache_repo.arguments.socket_timeout = 30
347 #rc_cache.cache_repo.arguments.host = localhost
348 #rc_cache.cache_repo.arguments.port = 6379
349 #rc_cache.cache_repo.arguments.db = 1
350 #rc_cache.cache_repo.arguments.distributed_lock = true
340 351
341 ## default is memory cache, configure only if required
342 ## using multi-node or multi-worker setup
343 #beaker.cache.auth_plugins.type = ext:database
344 #beaker.cache.auth_plugins.lock_dir = %(here)s/data/cache/auth_plugin_lock
345 #beaker.cache.auth_plugins.url = postgresql://postgres:secret@localhost/rhodecode
346 #beaker.cache.auth_plugins.url = mysql://root:secret@127.0.0.1/rhodecode
347 #beaker.cache.auth_plugins.sa.pool_recycle = 3600
348 #beaker.cache.auth_plugins.sa.pool_size = 10
349 #beaker.cache.auth_plugins.sa.max_overflow = 0
352 ## cache settings for SQL queries, this needs to use memory type backend
353 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
354 rc_cache.sql_cache_short.expiration_time = 30
350 355
351 beaker.cache.repo_cache_long.type = memorylru_base
352 beaker.cache.repo_cache_long.max_items = 4096
353 beaker.cache.repo_cache_long.expire = 2592000
356 ## `cache_repo_longterm` cache for repo object instances, this needs to use memory
357 ## type backend as the objects kept are not pickle serializable
358 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
359 ## by default we use 96H, this is using invalidation on push anyway
360 rc_cache.cache_repo_longterm.expiration_time = 345600
361 ## max items in LRU cache, reduce this number to save memory, and expire last used
362 ## cached objects
363 rc_cache.cache_repo_longterm.max_size = 10000
354 364
355 ## default is memorylru_base cache, configure only if required
356 ## using multi-node or multi-worker setup
357 #beaker.cache.repo_cache_long.type = ext:memcached
358 #beaker.cache.repo_cache_long.url = localhost:11211
359 #beaker.cache.repo_cache_long.expire = 1209600
360 #beaker.cache.repo_cache_long.key_length = 256
361 365
362 366 ####################################
363 367 ### BEAKER SESSION ####
364 368 ####################################
365 369
366 370 ## .session.type is type of storage options for the session, current allowed
367 ## types are file, ext:memcached, ext:database, and memory (default).
371 ## types are file, ext:memcached, ext:redis, ext:database, and memory (default).
368 372 beaker.session.type = file
369 beaker.session.data_dir = %(here)s/data/sessions/data
373 beaker.session.data_dir = %(here)s/data/sessions
370 374
371 375 ## db based session, fast, and allows easy management over logged in users
372 376 #beaker.session.type = ext:database
373 377 #beaker.session.table_name = db_session
374 378 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
375 379 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
376 380 #beaker.session.sa.pool_recycle = 3600
377 381 #beaker.session.sa.echo = false
378 382
379 383 beaker.session.key = rhodecode
380 384 beaker.session.secret = develop-rc-uytcxaz
381 385 beaker.session.lock_dir = %(here)s/data/sessions/lock
382 386
383 387 ## Secure encrypted cookie. Requires AES and AES python libraries
384 388 ## you must disable beaker.session.secret to use this
385 389 #beaker.session.encrypt_key = key_for_encryption
386 390 #beaker.session.validate_key = validation_key
387 391
388 392 ## sets session as invalid(also logging out user) if it haven not been
389 393 ## accessed for given amount of time in seconds
390 394 beaker.session.timeout = 2592000
391 395 beaker.session.httponly = true
392 396 ## Path to use for the cookie. Set to prefix if you use prefix middleware
393 397 #beaker.session.cookie_path = /custom_prefix
394 398
395 399 ## uncomment for https secure cookie
396 400 beaker.session.secure = false
397 401
398 402 ## auto save the session to not to use .save()
399 403 beaker.session.auto = false
400 404
401 405 ## default cookie expiration time in seconds, set to `true` to set expire
402 406 ## at browser close
403 407 #beaker.session.cookie_expires = 3600
404 408
405 409 ###################################
406 410 ## SEARCH INDEXING CONFIGURATION ##
407 411 ###################################
408 412 ## Full text search indexer is available in rhodecode-tools under
409 413 ## `rhodecode-tools index` command
410 414
411 415 ## WHOOSH Backend, doesn't require additional services to run
412 416 ## it works good with few dozen repos
413 417 search.module = rhodecode.lib.index.whoosh
414 418 search.location = %(here)s/data/index
415 419
416 420 ########################################
417 421 ### CHANNELSTREAM CONFIG ####
418 422 ########################################
419 423 ## channelstream enables persistent connections and live notification
420 424 ## in the system. It's also used by the chat system
421 425 channelstream.enabled = false
422 426
423 427 ## server address for channelstream server on the backend
424 428 channelstream.server = 127.0.0.1:9800
425 429
426 430 ## location of the channelstream server from outside world
427 431 ## use ws:// for http or wss:// for https. This address needs to be handled
428 432 ## by external HTTP server such as Nginx or Apache
429 433 ## see nginx/apache configuration examples in our docs
430 434 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
431 435 channelstream.secret = secret
432 436 channelstream.history.location = %(here)s/channelstream_history
433 437
434 438 ## Internal application path that Javascript uses to connect into.
435 439 ## If you use proxy-prefix the prefix should be added before /_channelstream
436 440 channelstream.proxy_path = /_channelstream
437 441
438 442
439 443 ###################################
440 444 ## APPENLIGHT CONFIG ##
441 445 ###################################
442 446
443 447 ## Appenlight is tailored to work with RhodeCode, see
444 448 ## http://appenlight.com for details how to obtain an account
445 449
446 450 ## appenlight integration enabled
447 451 appenlight = false
448 452
449 453 appenlight.server_url = https://api.appenlight.com
450 454 appenlight.api_key = YOUR_API_KEY
451 455 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
452 456
453 457 # used for JS client
454 458 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
455 459
456 460 ## TWEAK AMOUNT OF INFO SENT HERE
457 461
458 462 ## enables 404 error logging (default False)
459 463 appenlight.report_404 = false
460 464
461 465 ## time in seconds after request is considered being slow (default 1)
462 466 appenlight.slow_request_time = 1
463 467
464 468 ## record slow requests in application
465 469 ## (needs to be enabled for slow datastore recording and time tracking)
466 470 appenlight.slow_requests = true
467 471
468 472 ## enable hooking to application loggers
469 473 appenlight.logging = true
470 474
471 475 ## minimum log level for log capture
472 476 appenlight.logging.level = WARNING
473 477
474 478 ## send logs only from erroneous/slow requests
475 479 ## (saves API quota for intensive logging)
476 480 appenlight.logging_on_error = false
477 481
478 482 ## list of additonal keywords that should be grabbed from environ object
479 483 ## can be string with comma separated list of words in lowercase
480 484 ## (by default client will always send following info:
481 485 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
482 486 ## start with HTTP* this list be extended with additional keywords here
483 487 appenlight.environ_keys_whitelist =
484 488
485 489 ## list of keywords that should be blanked from request object
486 490 ## can be string with comma separated list of words in lowercase
487 491 ## (by default client will always blank keys that contain following words
488 492 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
489 493 ## this list be extended with additional keywords set here
490 494 appenlight.request_keys_blacklist =
491 495
492 496 ## list of namespaces that should be ignores when gathering log entries
493 497 ## can be string with comma separated list of namespaces
494 498 ## (by default the client ignores own entries: appenlight_client.client)
495 499 appenlight.log_namespace_blacklist =
496 500
497 501
498 502 ################################################################################
499 503 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
500 504 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
501 505 ## execute malicious code after an exception is raised. ##
502 506 ################################################################################
503 507 #set debug = false
504 508
505
506 ##############
507 ## STYLING ##
508 ##############
509 # enable debug style page
509 510 debug_style = true
510 511
511 512 ###########################################
512 513 ### MAIN RHODECODE DATABASE CONFIG ###
513 514 ###########################################
514 515 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
515 516 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
516 517 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
518 # pymysql is an alternative driver for MySQL, use in case of problems with default one
519 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
520
517 521 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
518 522
519 523 # see sqlalchemy docs for other advanced settings
520 524
521 525 ## print the sql statements to output
522 526 sqlalchemy.db1.echo = false
523 527 ## recycle the connections after this amount of seconds
524 528 sqlalchemy.db1.pool_recycle = 3600
525 529 sqlalchemy.db1.convert_unicode = true
526 530
527 531 ## the number of connections to keep open inside the connection pool.
528 532 ## 0 indicates no limit
529 533 #sqlalchemy.db1.pool_size = 5
530 534
531 535 ## the number of connections to allow in connection pool "overflow", that is
532 536 ## connections that can be opened above and beyond the pool_size setting,
533 537 ## which defaults to five.
534 538 #sqlalchemy.db1.max_overflow = 10
535 539
540 ## Connection check ping, used to detect broken database connections
541 ## could be enabled to better handle cases if MySQL has gone away errors
542 #sqlalchemy.db1.ping_connection = true
536 543
537 544 ##################
538 545 ### VCS CONFIG ###
539 546 ##################
540 547 vcs.server.enable = true
541 548 vcs.server = localhost:9900
542 549
543 550 ## Web server connectivity protocol, responsible for web based VCS operatations
544 551 ## Available protocols are:
545 552 ## `http` - use http-rpc backend (default)
546 553 vcs.server.protocol = http
547 554
548 555 ## Push/Pull operations protocol, available options are:
549 556 ## `http` - use http-rpc backend (default)
550 ##
551 557 vcs.scm_app_implementation = http
552 558
553 559 ## Push/Pull operations hooks protocol, available options are:
554 560 ## `http` - use http-rpc backend (default)
555 561 vcs.hooks.protocol = http
556 562
563 ## Host on which this instance is listening for hooks. If vcsserver is in other location
564 ## this should be adjusted.
565 vcs.hooks.host = 127.0.0.1
566
557 567 vcs.server.log_level = debug
558 ## Start VCSServer with this instance as a subprocess, usefull for development
568 ## Start VCSServer with this instance as a subprocess, useful for development
559 569 vcs.start_server = false
560 570
561 571 ## List of enabled VCS backends, available options are:
562 572 ## `hg` - mercurial
563 573 ## `git` - git
564 574 ## `svn` - subversion
565 575 vcs.backends = hg, git, svn
566 576
567 577 vcs.connection_timeout = 3600
568 578 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
569 579 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
570 580 #vcs.svn.compatible_version = pre-1.8-compatible
571 581
572 582
573 583 ############################################################
574 584 ### Subversion proxy support (mod_dav_svn) ###
575 585 ### Maps RhodeCode repo groups into SVN paths for Apache ###
576 586 ############################################################
577 587 ## Enable or disable the config file generation.
578 588 svn.proxy.generate_config = false
579 589 ## Generate config file with `SVNListParentPath` set to `On`.
580 590 svn.proxy.list_parent_path = true
581 591 ## Set location and file name of generated config file.
582 592 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
583 593 ## alternative mod_dav config template. This needs to be a mako template
584 594 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
585 595 ## Used as a prefix to the `Location` block in the generated config file.
586 596 ## In most cases it should be set to `/`.
587 597 svn.proxy.location_root = /
588 598 ## Command to reload the mod dav svn configuration on change.
589 599 ## Example: `/etc/init.d/apache2 reload`
590 600 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
591 601 ## If the timeout expires before the reload command finishes, the command will
592 602 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
593 603 #svn.proxy.reload_timeout = 10
594 604
595 605 ############################################################
596 606 ### SSH Support Settings ###
597 607 ############################################################
598 608
599 609 ## Defines if a custom authorized_keys file should be created and written on
600 610 ## any change user ssh keys. Setting this to false also disables posibility
601 611 ## of adding SSH keys by users from web interface. Super admins can still
602 612 ## manage SSH Keys.
603 613 ssh.generate_authorized_keyfile = false
604 614
605 615 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
606 616 # ssh.authorized_keys_ssh_opts =
607 617
608 618 ## Path to the authrozied_keys file where the generate entries are placed.
609 619 ## It is possible to have multiple key files specified in `sshd_config` e.g.
610 620 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
611 621 ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
612 622
613 623 ## Command to execute the SSH wrapper. The binary is available in the
614 624 ## rhodecode installation directory.
615 625 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
616 626 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
617 627
618 628 ## Allow shell when executing the ssh-wrapper command
619 629 ssh.wrapper_cmd_allow_shell = false
620 630
621 631 ## Enables logging, and detailed output send back to the client during SSH
622 632 ## operations. Usefull for debugging, shouldn't be used in production.
623 633 ssh.enable_debug_logging = true
624 634
625 635 ## Paths to binary executable, by default they are the names, but we can
626 636 ## override them if we want to use a custom one
627 637 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
628 638 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
629 639 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
630 640
631 641
632 642 ## Dummy marker to add new entries after.
633 643 ## Add any custom entries below. Please don't remove.
634 644 custom.conf = 1
635 645
636 646
637 647 ################################
638 648 ### LOGGING CONFIGURATION ####
639 649 ################################
640 650 [loggers]
641 keys = root, sqlalchemy, beaker, rhodecode, ssh_wrapper, celery
651 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
642 652
643 653 [handlers]
644 654 keys = console, console_sql
645 655
646 656 [formatters]
647 657 keys = generic, color_formatter, color_formatter_sql
648 658
649 659 #############
650 660 ## LOGGERS ##
651 661 #############
652 662 [logger_root]
653 663 level = NOTSET
654 664 handlers = console
655 665
656 666 [logger_sqlalchemy]
657 667 level = INFO
658 668 handlers = console_sql
659 669 qualname = sqlalchemy.engine
660 670 propagate = 0
661 671
662 672 [logger_beaker]
663 673 level = DEBUG
664 674 handlers =
665 675 qualname = beaker.container
666 676 propagate = 1
667 677
668 678 [logger_rhodecode]
669 679 level = DEBUG
670 680 handlers =
671 681 qualname = rhodecode
672 682 propagate = 1
673 683
674 684 [logger_ssh_wrapper]
675 685 level = DEBUG
676 686 handlers =
677 687 qualname = ssh_wrapper
678 688 propagate = 1
679 689
680 690 [logger_celery]
681 691 level = DEBUG
682 692 handlers =
683 693 qualname = celery
684 694
685 695
686 696 ##############
687 697 ## HANDLERS ##
688 698 ##############
689 699
690 700 [handler_console]
691 701 class = StreamHandler
692 702 args = (sys.stderr, )
693 703 level = DEBUG
694 704 formatter = color_formatter
695 705
696 706 [handler_console_sql]
707 # "level = DEBUG" logs SQL queries and results.
708 # "level = INFO" logs SQL queries.
709 # "level = WARN" logs neither. (Recommended for production systems.)
697 710 class = StreamHandler
698 711 args = (sys.stderr, )
699 level = DEBUG
712 level = WARN
700 713 formatter = color_formatter_sql
701 714
702 715 ################
703 716 ## FORMATTERS ##
704 717 ################
705 718
706 719 [formatter_generic]
707 720 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
708 721 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
709 722 datefmt = %Y-%m-%d %H:%M:%S
710 723
711 724 [formatter_color_formatter]
712 725 class = rhodecode.lib.logging_formatter.ColorFormatter
713 726 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
714 727 datefmt = %Y-%m-%d %H:%M:%S
715 728
716 729 [formatter_color_formatter_sql]
717 730 class = rhodecode.lib.logging_formatter.ColorFormatterSql
718 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
731 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
719 732 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,689 +1,704 b''
1 1
2 2
3 3 ################################################################################
4 4 ## RHODECODE COMMUNITY EDITION CONFIGURATION ##
5 # The %(here)s variable will be replaced with the parent directory of this file#
6 5 ################################################################################
7 6
8 7 [DEFAULT]
9 8 debug = true
10 9
11 10 ################################################################################
12 11 ## EMAIL CONFIGURATION ##
13 12 ## Uncomment and replace with the email address which should receive ##
14 13 ## any error reports after an application crash ##
15 14 ## Additionally these settings will be used by the RhodeCode mailing system ##
16 15 ################################################################################
17 16
18 17 ## prefix all emails subjects with given prefix, helps filtering out emails
19 18 #email_prefix = [RhodeCode]
20 19
21 20 ## email FROM address all mails will be sent
22 21 #app_email_from = rhodecode-noreply@localhost
23 22
24 23 ## Uncomment and replace with the address which should receive any error report
25 24 ## note: using appenlight for error handling doesn't need this to be uncommented
26 25 #email_to = admin@localhost
27 26
28 27 ## in case of Application errors, sent an error email form
29 28 #error_email_from = rhodecode_error@localhost
30 29
31 30 ## additional error message to be send in case of server crash
32 31 #error_message =
33 32
34 33
35 34 #smtp_server = mail.server.com
36 35 #smtp_username =
37 36 #smtp_password =
38 37 #smtp_port =
39 38 #smtp_use_tls = false
40 39 #smtp_use_ssl = true
41 40 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
42 41 #smtp_auth =
43 42
44 43 [server:main]
45 44 ## COMMON ##
46 45 host = 127.0.0.1
47 46 port = 5000
48 47
49 ##################################
50 ## WAITRESS WSGI SERVER ##
51 ## Recommended for Development ##
52 ##################################
48 ###########################################################
49 ## WAITRESS WSGI SERVER - Recommended for Development ####
50 ###########################################################
53 51
54 52 #use = egg:waitress#main
55 53 ## number of worker threads
56 54 #threads = 5
57 55 ## MAX BODY SIZE 100GB
58 56 #max_request_body_size = 107374182400
59 57 ## Use poll instead of select, fixes file descriptors limits problems.
60 58 ## May not work on old windows systems.
61 59 #asyncore_use_poll = true
62 60
63 61
64 62 ##########################
65 63 ## GUNICORN WSGI SERVER ##
66 64 ##########################
67 65 ## run with gunicorn --log-config rhodecode.ini --paste rhodecode.ini
68 66
69 67 use = egg:gunicorn#main
70 ## Sets the number of process workers. You must set `instance_id = *`
71 ## when this option is set to more than one worker, recommended
72 ## value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers
73 ## The `instance_id = *` must be set in the [app:main] section below
68 ## Sets the number of process workers. More workers means more concurent connections
69 ## RhodeCode can handle at the same time. Each additional worker also it increases
70 ## memory usage as each has it's own set of caches.
71 ## Recommended value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers, but no more
72 ## than 8-10 unless for really big deployments .e.g 700-1000 users.
73 ## `instance_id = *` must be set in the [app:main] section below (which is the default)
74 ## when using more than 1 worker.
74 75 workers = 2
75 ## number of threads for each of the worker, must be set to 1 for gevent
76 ## generally recommended to be at 1
77 #threads = 1
78 ## process name
76 ## process name visible in process list
79 77 proc_name = rhodecode
80 78 ## type of worker class, one of sync, gevent
81 79 ## recommended for bigger setup is using of of other than sync one
82 80 worker_class = gevent
83 81 ## The maximum number of simultaneous clients. Valid only for Gevent
84 #worker_connections = 10
82 worker_connections = 10
85 83 ## max number of requests that worker will handle before being gracefully
86 84 ## restarted, could prevent memory leaks
87 85 max_requests = 1000
88 86 max_requests_jitter = 30
89 87 ## amount of time a worker can spend with handling a request before it
90 88 ## gets killed and restarted. Set to 6hrs
91 89 timeout = 21600
92 90
93 91
94 92 ## prefix middleware for RhodeCode.
95 93 ## recommended when using proxy setup.
96 94 ## allows to set RhodeCode under a prefix in server.
97 95 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
98 96 ## And set your prefix like: `prefix = /custom_prefix`
99 97 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
100 98 ## to make your cookies only work on prefix url
101 99 [filter:proxy-prefix]
102 100 use = egg:PasteDeploy#prefix
103 101 prefix = /
104 102
105 103 [app:main]
104 ## The %(here)s variable will be replaced with the absolute path of parent directory
105 ## of this file
106 ## In addition ENVIRONMENT variables usage is possible, e.g
107 ## sqlalchemy.db1.url = {ENV_RC_DB_URL}
108
106 109 use = egg:rhodecode-enterprise-ce
107 110
108 111 ## enable proxy prefix middleware, defined above
109 112 #filter-with = proxy-prefix
110 113
111 114 ## encryption key used to encrypt social plugin tokens,
112 115 ## remote_urls with credentials etc, if not set it defaults to
113 116 ## `beaker.session.secret`
114 117 #rhodecode.encrypted_values.secret =
115 118
116 119 ## decryption strict mode (enabled by default). It controls if decryption raises
117 120 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
118 121 #rhodecode.encrypted_values.strict = false
119 122
120 123 ## return gzipped responses from Rhodecode (static files/application)
121 124 gzip_responses = false
122 125
123 126 ## autogenerate javascript routes file on startup
124 127 generate_js_files = false
125 128
126 ## Optional Languages
127 ## en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
129 ## System global default language.
130 ## All available languages: en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
128 131 lang = en
129 132
130 ## perform a full repository scan on each server start, this should be
131 ## set to false after first startup, to allow faster server restarts.
133 ## Perform a full repository scan and import on each server start.
134 ## Settings this to true could lead to very long startup time.
132 135 startup.import_repos = false
133 136
134 137 ## Uncomment and set this path to use archive download cache.
135 138 ## Once enabled, generated archives will be cached at this location
136 139 ## and served from the cache during subsequent requests for the same archive of
137 140 ## the repository.
138 141 #archive_cache_dir = /tmp/tarballcache
139 142
140 143 ## URL at which the application is running. This is used for bootstraping
141 144 ## requests in context when no web request is available. Used in ishell, or
142 145 ## SSH calls. Set this for events to receive proper url for SSH calls.
143 146 app.base_url = http://rhodecode.local
144 147
145 ## change this to unique ID for security
148 ## Unique application ID. Should be a random unique string for security.
146 149 app_instance_uuid = rc-production
147 150
148 ## cut off limit for large diffs (size in bytes). If overall diff size on
151 ## Cut off limit for large diffs (size in bytes). If overall diff size on
149 152 ## commit, or pull request exceeds this limit this diff will be displayed
150 153 ## partially. E.g 512000 == 512Kb
151 154 cut_off_limit_diff = 512000
152 155
153 ## cut off limit for large files inside diffs (size in bytes). Each individual
156 ## Cut off limit for large files inside diffs (size in bytes). Each individual
154 157 ## file inside diff which exceeds this limit will be displayed partially.
155 158 ## E.g 128000 == 128Kb
156 159 cut_off_limit_file = 128000
157 160
158 ## use cache version of scm repo everywhere
161 ## use cached version of vcs repositories everywhere. Recommended to be `true`
159 162 vcs_full_cache = true
160 163
161 ## force https in RhodeCode, fixes https redirects, assumes it's always https
164 ## Force https in RhodeCode, fixes https redirects, assumes it's always https.
162 165 ## Normally this is controlled by proper http flags sent from http server
163 166 force_https = false
164 167
165 168 ## use Strict-Transport-Security headers
166 169 use_htsts = false
167 170
168 171 ## git rev filter option, --all is the default filter, if you need to
169 172 ## hide all refs in changelog switch this to --branches --tags
170 173 git_rev_filter = --branches --tags
171 174
172 175 # Set to true if your repos are exposed using the dumb protocol
173 176 git_update_server_info = false
174 177
175 178 ## RSS/ATOM feed options
176 179 rss_cut_off_limit = 256000
177 180 rss_items_per_page = 10
178 181 rss_include_diff = false
179 182
180 183 ## gist URL alias, used to create nicer urls for gist. This should be an
181 184 ## url that does rewrites to _admin/gists/{gistid}.
182 185 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
183 186 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
184 187 gist_alias_url =
185 188
186 189 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
187 190 ## used for access.
188 191 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
189 192 ## came from the the logged in user who own this authentication token.
190 193 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
191 194 ## authentication token. Such view would be only accessible when used together
192 195 ## with this authentication token
193 196 ##
194 197 ## list of all views can be found under `/_admin/permissions/auth_token_access`
195 198 ## The list should be "," separated and on a single line.
196 199 ##
197 200 ## Most common views to enable:
198 201 # RepoCommitsView:repo_commit_download
199 202 # RepoCommitsView:repo_commit_patch
200 203 # RepoCommitsView:repo_commit_raw
201 204 # RepoCommitsView:repo_commit_raw@TOKEN
202 205 # RepoFilesView:repo_files_diff
203 206 # RepoFilesView:repo_archivefile
204 207 # RepoFilesView:repo_file_raw
205 208 # GistView:*
206 209 api_access_controllers_whitelist =
207 210
208 ## default encoding used to convert from and to unicode
211 ## Default encoding used to convert from and to unicode
209 212 ## can be also a comma separated list of encoding in case of mixed encodings
210 213 default_encoding = UTF-8
211 214
212 215 ## instance-id prefix
213 216 ## a prefix key for this instance used for cache invalidation when running
214 217 ## multiple instances of rhodecode, make sure it's globally unique for
215 218 ## all running rhodecode instances. Leave empty if you don't use it
216 219 instance_id =
217 220
218 221 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
219 222 ## of an authentication plugin also if it is disabled by it's settings.
220 223 ## This could be useful if you are unable to log in to the system due to broken
221 224 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
222 225 ## module to log in again and fix the settings.
223 226 ##
224 227 ## Available builtin plugin IDs (hash is part of the ID):
225 228 ## egg:rhodecode-enterprise-ce#rhodecode
226 229 ## egg:rhodecode-enterprise-ce#pam
227 230 ## egg:rhodecode-enterprise-ce#ldap
228 231 ## egg:rhodecode-enterprise-ce#jasig_cas
229 232 ## egg:rhodecode-enterprise-ce#headers
230 233 ## egg:rhodecode-enterprise-ce#crowd
231 234 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
232 235
233 236 ## alternative return HTTP header for failed authentication. Default HTTP
234 237 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
235 238 ## handling that causing a series of failed authentication calls.
236 239 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
237 240 ## This will be served instead of default 401 on bad authnetication
238 241 auth_ret_code =
239 242
240 243 ## use special detection method when serving auth_ret_code, instead of serving
241 244 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
242 245 ## and then serve auth_ret_code to clients
243 246 auth_ret_code_detection = false
244 247
245 248 ## locking return code. When repository is locked return this HTTP code. 2XX
246 249 ## codes don't break the transactions while 4XX codes do
247 250 lock_ret_code = 423
248 251
249 252 ## allows to change the repository location in settings page
250 253 allow_repo_location_change = true
251 254
252 255 ## allows to setup custom hooks in settings page
253 256 allow_custom_hooks_settings = true
254 257
255 ## generated license token, goto license page in RhodeCode settings to obtain
256 ## new token
258 ## Generated license token required for EE edition license.
259 ## New generated token value can be found in Admin > settings > license page.
257 260 license_token =
258 261
259 262 ## supervisor connection uri, for managing supervisor and logs.
260 263 supervisor.uri =
261 264 ## supervisord group name/id we only want this RC instance to handle
262 265 supervisor.group_id = prod
263 266
264 267 ## Display extended labs settings
265 268 labs_settings_active = true
266 269
267 270 ####################################
268 271 ### CELERY CONFIG ####
269 272 ####################################
270 273 ## run: /path/to/celery worker \
271 274 ## -E --beat --app rhodecode.lib.celerylib.loader \
272 275 ## --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler \
273 276 ## --loglevel DEBUG --ini /path/to/rhodecode.ini
274 277
275 278 use_celery = false
276 279
277 280 ## connection url to the message broker (default rabbitmq)
278 281 celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
279 282
280 283 ## maximum tasks to execute before worker restart
281 284 celery.max_tasks_per_child = 100
282 285
283 286 ## tasks will never be sent to the queue, but executed locally instead.
284 287 celery.task_always_eager = false
285 288
286 ####################################
287 ### BEAKER CACHE ####
288 ####################################
289 # default cache dir for templates. Putting this into a ramdisk
290 ## can boost performance, eg. %(here)s/data_ramdisk
289 #####################################
290 ### DOGPILE CACHE ####
291 #####################################
292 ## Default cache dir for caches. Putting this into a ramdisk
293 ## can boost performance, eg. /tmpfs/data_ramdisk, however this directory might require
294 ## large amount of space
291 295 cache_dir = %(here)s/data
292 296
293 ## locking and default file storage for Beaker. Putting this into a ramdisk
294 ## can boost performance, eg. %(here)s/data_ramdisk/cache/beaker_data
295 beaker.cache.data_dir = %(here)s/data/cache/beaker_data
296 beaker.cache.lock_dir = %(here)s/data/cache/beaker_lock
297
298 beaker.cache.regions = super_short_term, short_term, long_term, sql_cache_short, auth_plugins, repo_cache_long
297 ## `cache_perms` cache settings for permission tree, auth TTL.
298 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
299 rc_cache.cache_perms.expiration_time = 300
299 300
300 beaker.cache.super_short_term.type = memory
301 beaker.cache.super_short_term.expire = 10
302 beaker.cache.super_short_term.key_length = 256
301 ## alternative `cache_perms` redis backend with distributed lock
302 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
303 #rc_cache.cache_perms.expiration_time = 300
304 ## redis_expiration_time needs to be greater then expiration_time
305 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
306 #rc_cache.cache_perms.arguments.socket_timeout = 30
307 #rc_cache.cache_perms.arguments.host = localhost
308 #rc_cache.cache_perms.arguments.port = 6379
309 #rc_cache.cache_perms.arguments.db = 0
310 #rc_cache.cache_perms.arguments.distributed_lock = true
303 311
304 beaker.cache.short_term.type = memory
305 beaker.cache.short_term.expire = 60
306 beaker.cache.short_term.key_length = 256
307
308 beaker.cache.long_term.type = memory
309 beaker.cache.long_term.expire = 36000
310 beaker.cache.long_term.key_length = 256
312 ## `cache_repo` cache settings for FileTree, Readme, RSS FEEDS
313 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
314 rc_cache.cache_repo.expiration_time = 2592000
311 315
312 beaker.cache.sql_cache_short.type = memory
313 beaker.cache.sql_cache_short.expire = 10
314 beaker.cache.sql_cache_short.key_length = 256
316 ## alternative `cache_repo` redis backend with distributed lock
317 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
318 #rc_cache.cache_repo.expiration_time = 2592000
319 ## redis_expiration_time needs to be greater then expiration_time
320 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
321 #rc_cache.cache_repo.arguments.socket_timeout = 30
322 #rc_cache.cache_repo.arguments.host = localhost
323 #rc_cache.cache_repo.arguments.port = 6379
324 #rc_cache.cache_repo.arguments.db = 1
325 #rc_cache.cache_repo.arguments.distributed_lock = true
315 326
316 ## default is memory cache, configure only if required
317 ## using multi-node or multi-worker setup
318 #beaker.cache.auth_plugins.type = ext:database
319 #beaker.cache.auth_plugins.lock_dir = %(here)s/data/cache/auth_plugin_lock
320 #beaker.cache.auth_plugins.url = postgresql://postgres:secret@localhost/rhodecode
321 #beaker.cache.auth_plugins.url = mysql://root:secret@127.0.0.1/rhodecode
322 #beaker.cache.auth_plugins.sa.pool_recycle = 3600
323 #beaker.cache.auth_plugins.sa.pool_size = 10
324 #beaker.cache.auth_plugins.sa.max_overflow = 0
327 ## cache settings for SQL queries, this needs to use memory type backend
328 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
329 rc_cache.sql_cache_short.expiration_time = 30
325 330
326 beaker.cache.repo_cache_long.type = memorylru_base
327 beaker.cache.repo_cache_long.max_items = 4096
328 beaker.cache.repo_cache_long.expire = 2592000
331 ## `cache_repo_longterm` cache for repo object instances, this needs to use memory
332 ## type backend as the objects kept are not pickle serializable
333 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
334 ## by default we use 96H, this is using invalidation on push anyway
335 rc_cache.cache_repo_longterm.expiration_time = 345600
336 ## max items in LRU cache, reduce this number to save memory, and expire last used
337 ## cached objects
338 rc_cache.cache_repo_longterm.max_size = 10000
329 339
330 ## default is memorylru_base cache, configure only if required
331 ## using multi-node or multi-worker setup
332 #beaker.cache.repo_cache_long.type = ext:memcached
333 #beaker.cache.repo_cache_long.url = localhost:11211
334 #beaker.cache.repo_cache_long.expire = 1209600
335 #beaker.cache.repo_cache_long.key_length = 256
336 340
337 341 ####################################
338 342 ### BEAKER SESSION ####
339 343 ####################################
340 344
341 345 ## .session.type is type of storage options for the session, current allowed
342 ## types are file, ext:memcached, ext:database, and memory (default).
346 ## types are file, ext:memcached, ext:redis, ext:database, and memory (default).
343 347 beaker.session.type = file
344 beaker.session.data_dir = %(here)s/data/sessions/data
348 beaker.session.data_dir = %(here)s/data/sessions
345 349
346 350 ## db based session, fast, and allows easy management over logged in users
347 351 #beaker.session.type = ext:database
348 352 #beaker.session.table_name = db_session
349 353 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
350 354 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
351 355 #beaker.session.sa.pool_recycle = 3600
352 356 #beaker.session.sa.echo = false
353 357
354 358 beaker.session.key = rhodecode
355 359 beaker.session.secret = production-rc-uytcxaz
356 360 beaker.session.lock_dir = %(here)s/data/sessions/lock
357 361
358 362 ## Secure encrypted cookie. Requires AES and AES python libraries
359 363 ## you must disable beaker.session.secret to use this
360 364 #beaker.session.encrypt_key = key_for_encryption
361 365 #beaker.session.validate_key = validation_key
362 366
363 367 ## sets session as invalid(also logging out user) if it haven not been
364 368 ## accessed for given amount of time in seconds
365 369 beaker.session.timeout = 2592000
366 370 beaker.session.httponly = true
367 371 ## Path to use for the cookie. Set to prefix if you use prefix middleware
368 372 #beaker.session.cookie_path = /custom_prefix
369 373
370 374 ## uncomment for https secure cookie
371 375 beaker.session.secure = false
372 376
373 377 ## auto save the session to not to use .save()
374 378 beaker.session.auto = false
375 379
376 380 ## default cookie expiration time in seconds, set to `true` to set expire
377 381 ## at browser close
378 382 #beaker.session.cookie_expires = 3600
379 383
380 384 ###################################
381 385 ## SEARCH INDEXING CONFIGURATION ##
382 386 ###################################
383 387 ## Full text search indexer is available in rhodecode-tools under
384 388 ## `rhodecode-tools index` command
385 389
386 390 ## WHOOSH Backend, doesn't require additional services to run
387 391 ## it works good with few dozen repos
388 392 search.module = rhodecode.lib.index.whoosh
389 393 search.location = %(here)s/data/index
390 394
391 395 ########################################
392 396 ### CHANNELSTREAM CONFIG ####
393 397 ########################################
394 398 ## channelstream enables persistent connections and live notification
395 399 ## in the system. It's also used by the chat system
396 400 channelstream.enabled = false
397 401
398 402 ## server address for channelstream server on the backend
399 403 channelstream.server = 127.0.0.1:9800
400 404
401 405 ## location of the channelstream server from outside world
402 406 ## use ws:// for http or wss:// for https. This address needs to be handled
403 407 ## by external HTTP server such as Nginx or Apache
404 408 ## see nginx/apache configuration examples in our docs
405 409 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
406 410 channelstream.secret = secret
407 411 channelstream.history.location = %(here)s/channelstream_history
408 412
409 413 ## Internal application path that Javascript uses to connect into.
410 414 ## If you use proxy-prefix the prefix should be added before /_channelstream
411 415 channelstream.proxy_path = /_channelstream
412 416
413 417
414 418 ###################################
415 419 ## APPENLIGHT CONFIG ##
416 420 ###################################
417 421
418 422 ## Appenlight is tailored to work with RhodeCode, see
419 423 ## http://appenlight.com for details how to obtain an account
420 424
421 425 ## appenlight integration enabled
422 426 appenlight = false
423 427
424 428 appenlight.server_url = https://api.appenlight.com
425 429 appenlight.api_key = YOUR_API_KEY
426 430 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
427 431
428 432 # used for JS client
429 433 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
430 434
431 435 ## TWEAK AMOUNT OF INFO SENT HERE
432 436
433 437 ## enables 404 error logging (default False)
434 438 appenlight.report_404 = false
435 439
436 440 ## time in seconds after request is considered being slow (default 1)
437 441 appenlight.slow_request_time = 1
438 442
439 443 ## record slow requests in application
440 444 ## (needs to be enabled for slow datastore recording and time tracking)
441 445 appenlight.slow_requests = true
442 446
443 447 ## enable hooking to application loggers
444 448 appenlight.logging = true
445 449
446 450 ## minimum log level for log capture
447 451 appenlight.logging.level = WARNING
448 452
449 453 ## send logs only from erroneous/slow requests
450 454 ## (saves API quota for intensive logging)
451 455 appenlight.logging_on_error = false
452 456
453 457 ## list of additonal keywords that should be grabbed from environ object
454 458 ## can be string with comma separated list of words in lowercase
455 459 ## (by default client will always send following info:
456 460 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
457 461 ## start with HTTP* this list be extended with additional keywords here
458 462 appenlight.environ_keys_whitelist =
459 463
460 464 ## list of keywords that should be blanked from request object
461 465 ## can be string with comma separated list of words in lowercase
462 466 ## (by default client will always blank keys that contain following words
463 467 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
464 468 ## this list be extended with additional keywords set here
465 469 appenlight.request_keys_blacklist =
466 470
467 471 ## list of namespaces that should be ignores when gathering log entries
468 472 ## can be string with comma separated list of namespaces
469 473 ## (by default the client ignores own entries: appenlight_client.client)
470 474 appenlight.log_namespace_blacklist =
471 475
472 476
473 477 ################################################################################
474 478 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
475 479 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
476 480 ## execute malicious code after an exception is raised. ##
477 481 ################################################################################
478 482 set debug = false
479 483
480 484
481 485 ###########################################
482 486 ### MAIN RHODECODE DATABASE CONFIG ###
483 487 ###########################################
484 488 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
485 489 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
486 490 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
491 # pymysql is an alternative driver for MySQL, use in case of problems with default one
492 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
493
487 494 sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
488 495
489 496 # see sqlalchemy docs for other advanced settings
490 497
491 498 ## print the sql statements to output
492 499 sqlalchemy.db1.echo = false
493 500 ## recycle the connections after this amount of seconds
494 501 sqlalchemy.db1.pool_recycle = 3600
495 502 sqlalchemy.db1.convert_unicode = true
496 503
497 504 ## the number of connections to keep open inside the connection pool.
498 505 ## 0 indicates no limit
499 506 #sqlalchemy.db1.pool_size = 5
500 507
501 508 ## the number of connections to allow in connection pool "overflow", that is
502 509 ## connections that can be opened above and beyond the pool_size setting,
503 510 ## which defaults to five.
504 511 #sqlalchemy.db1.max_overflow = 10
505 512
513 ## Connection check ping, used to detect broken database connections
514 ## could be enabled to better handle cases if MySQL has gone away errors
515 #sqlalchemy.db1.ping_connection = true
506 516
507 517 ##################
508 518 ### VCS CONFIG ###
509 519 ##################
510 520 vcs.server.enable = true
511 521 vcs.server = localhost:9900
512 522
513 523 ## Web server connectivity protocol, responsible for web based VCS operatations
514 524 ## Available protocols are:
515 525 ## `http` - use http-rpc backend (default)
516 526 vcs.server.protocol = http
517 527
518 528 ## Push/Pull operations protocol, available options are:
519 529 ## `http` - use http-rpc backend (default)
520 ##
521 530 vcs.scm_app_implementation = http
522 531
523 532 ## Push/Pull operations hooks protocol, available options are:
524 533 ## `http` - use http-rpc backend (default)
525 534 vcs.hooks.protocol = http
535 ## Host on which this instance is listening for hooks. If vcsserver is in other location
536 ## this should be adjusted.
537 vcs.hooks.host = 127.0.0.1
526 538
527 539 vcs.server.log_level = info
528 ## Start VCSServer with this instance as a subprocess, usefull for development
540 ## Start VCSServer with this instance as a subprocess, useful for development
529 541 vcs.start_server = false
530 542
531 543 ## List of enabled VCS backends, available options are:
532 544 ## `hg` - mercurial
533 545 ## `git` - git
534 546 ## `svn` - subversion
535 547 vcs.backends = hg, git, svn
536 548
537 549 vcs.connection_timeout = 3600
538 550 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
539 551 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
540 552 #vcs.svn.compatible_version = pre-1.8-compatible
541 553
542 554
543 555 ############################################################
544 556 ### Subversion proxy support (mod_dav_svn) ###
545 557 ### Maps RhodeCode repo groups into SVN paths for Apache ###
546 558 ############################################################
547 559 ## Enable or disable the config file generation.
548 560 svn.proxy.generate_config = false
549 561 ## Generate config file with `SVNListParentPath` set to `On`.
550 562 svn.proxy.list_parent_path = true
551 563 ## Set location and file name of generated config file.
552 564 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
553 565 ## alternative mod_dav config template. This needs to be a mako template
554 566 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
555 567 ## Used as a prefix to the `Location` block in the generated config file.
556 568 ## In most cases it should be set to `/`.
557 569 svn.proxy.location_root = /
558 570 ## Command to reload the mod dav svn configuration on change.
559 571 ## Example: `/etc/init.d/apache2 reload`
560 572 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
561 573 ## If the timeout expires before the reload command finishes, the command will
562 574 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
563 575 #svn.proxy.reload_timeout = 10
564 576
565 577 ############################################################
566 578 ### SSH Support Settings ###
567 579 ############################################################
568 580
569 581 ## Defines if a custom authorized_keys file should be created and written on
570 582 ## any change user ssh keys. Setting this to false also disables posibility
571 583 ## of adding SSH keys by users from web interface. Super admins can still
572 584 ## manage SSH Keys.
573 585 ssh.generate_authorized_keyfile = false
574 586
575 587 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
576 588 # ssh.authorized_keys_ssh_opts =
577 589
578 590 ## Path to the authrozied_keys file where the generate entries are placed.
579 591 ## It is possible to have multiple key files specified in `sshd_config` e.g.
580 592 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
581 593 ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
582 594
583 595 ## Command to execute the SSH wrapper. The binary is available in the
584 596 ## rhodecode installation directory.
585 597 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
586 598 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
587 599
588 600 ## Allow shell when executing the ssh-wrapper command
589 601 ssh.wrapper_cmd_allow_shell = false
590 602
591 603 ## Enables logging, and detailed output send back to the client during SSH
592 604 ## operations. Usefull for debugging, shouldn't be used in production.
593 605 ssh.enable_debug_logging = false
594 606
595 607 ## Paths to binary executable, by default they are the names, but we can
596 608 ## override them if we want to use a custom one
597 609 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
598 610 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
599 611 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
600 612
601 613
602 614 ## Dummy marker to add new entries after.
603 615 ## Add any custom entries below. Please don't remove.
604 616 custom.conf = 1
605 617
606 618
607 619 ################################
608 620 ### LOGGING CONFIGURATION ####
609 621 ################################
610 622 [loggers]
611 keys = root, sqlalchemy, beaker, rhodecode, ssh_wrapper, celery
623 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
612 624
613 625 [handlers]
614 626 keys = console, console_sql
615 627
616 628 [formatters]
617 629 keys = generic, color_formatter, color_formatter_sql
618 630
619 631 #############
620 632 ## LOGGERS ##
621 633 #############
622 634 [logger_root]
623 635 level = NOTSET
624 636 handlers = console
625 637
626 638 [logger_sqlalchemy]
627 639 level = INFO
628 640 handlers = console_sql
629 641 qualname = sqlalchemy.engine
630 642 propagate = 0
631 643
632 644 [logger_beaker]
633 645 level = DEBUG
634 646 handlers =
635 647 qualname = beaker.container
636 648 propagate = 1
637 649
638 650 [logger_rhodecode]
639 651 level = DEBUG
640 652 handlers =
641 653 qualname = rhodecode
642 654 propagate = 1
643 655
644 656 [logger_ssh_wrapper]
645 657 level = DEBUG
646 658 handlers =
647 659 qualname = ssh_wrapper
648 660 propagate = 1
649 661
650 662 [logger_celery]
651 663 level = DEBUG
652 664 handlers =
653 665 qualname = celery
654 666
655 667
656 668 ##############
657 669 ## HANDLERS ##
658 670 ##############
659 671
660 672 [handler_console]
661 673 class = StreamHandler
662 674 args = (sys.stderr, )
663 675 level = INFO
664 676 formatter = generic
665 677
666 678 [handler_console_sql]
679 # "level = DEBUG" logs SQL queries and results.
680 # "level = INFO" logs SQL queries.
681 # "level = WARN" logs neither. (Recommended for production systems.)
667 682 class = StreamHandler
668 683 args = (sys.stderr, )
669 684 level = WARN
670 685 formatter = generic
671 686
672 687 ################
673 688 ## FORMATTERS ##
674 689 ################
675 690
676 691 [formatter_generic]
677 692 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
678 693 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
679 694 datefmt = %Y-%m-%d %H:%M:%S
680 695
681 696 [formatter_color_formatter]
682 697 class = rhodecode.lib.logging_formatter.ColorFormatter
683 698 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
684 699 datefmt = %Y-%m-%d %H:%M:%S
685 700
686 701 [formatter_color_formatter_sql]
687 702 class = rhodecode.lib.logging_formatter.ColorFormatterSql
688 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
703 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
689 704 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,243 +1,258 b''
1 1 # Nix environment for the community edition
2 2 #
3 # This shall be as lean as possible, just producing the Enterprise
3 # This shall be as lean as possible, just producing the enterprise-ce
4 4 # derivation. For advanced tweaks to pimp up the development environment we use
5 5 # "shell.nix" so that it does not have to clutter this file.
6 #
7 # Configuration, set values in "~/.nixpkgs/config.nix".
8 # example
9 # {
10 # # Thoughts on how to configure the dev environment
11 # rc = {
12 # codeInternalUrl = "https://usr:token@internal-code.rhodecode.com";
13 # sources = {
14 # rhodecode-vcsserver = "/home/user/work/rhodecode-vcsserver";
15 # rhodecode-enterprise-ce = "/home/user/work/rhodecode-enterprise-ce";
16 # rhodecode-enterprise-ee = "/home/user/work/rhodecode-enterprise-ee";
17 # };
18 # };
19 # }
6 20
7 21 args@
8 22 { pythonPackages ? "python27Packages"
9 23 , pythonExternalOverrides ? self: super: {}
10 , doCheck ? true
24 , doCheck ? false
11 25 , ...
12 26 }:
13 27
14 28 let
15
16 29 # Use nixpkgs from args or import them. We use this indirect approach
17 30 # through args to be able to use the name `pkgs` for our customized packages.
18 31 # Otherwise we will end up with an infinite recursion.
19 nixpkgs = args.pkgs or (import <nixpkgs> { });
32 pkgs = args.pkgs or (import <nixpkgs> { });
20 33
21 # johbo: Interim bridge which allows us to build with the upcoming
22 # nixos.16.09 branch (unstable at the moment of writing this note) and the
23 # current stable nixos-16.03.
24 backwardsCompatibleFetchgit = { ... }@args:
25 let
26 origSources = nixpkgs.fetchgit args;
27 in
28 nixpkgs.lib.overrideDerivation origSources (oldAttrs: {
29 NIX_PREFETCH_GIT_CHECKOUT_HOOK = ''
30 find $out -name '.git*' -print0 | xargs -0 rm -rf
31 '';
32 });
33
34 # Create a customized version of nixpkgs which should be used throughout the
35 # rest of this file.
36 pkgs = nixpkgs.overridePackages (self: super: {
37 fetchgit = backwardsCompatibleFetchgit;
38 });
34 # Works with the new python-packages, still can fallback to the old
35 # variant.
36 basePythonPackagesUnfix = basePythonPackages.__unfix__ or (
37 self: basePythonPackages.override (a: { inherit self; }));
39 38
40 39 # Evaluates to the last segment of a file system path.
41 40 basename = path: with pkgs.lib; last (splitString "/" path);
42 41
43 42 # source code filter used as arugment to builtins.filterSource.
44 43 src-filter = path: type: with pkgs.lib;
45 44 let
46 45 ext = last (splitString "." path);
47 46 in
48 47 !builtins.elem (basename path) [
49 ".git" ".hg" "__pycache__" ".eggs"
48 ".git" ".hg" "__pycache__" ".eggs" ".idea" ".dev"
50 49 "bower_components" "node_modules"
51 50 "build" "data" "result" "tmp"] &&
52 51 !builtins.elem ext ["egg-info" "pyc"] &&
53 52 # TODO: johbo: This check is wrong, since "path" contains an absolute path,
54 53 # it would still be good to restore it since we want to ignore "result-*".
55 54 !hasPrefix "result" path;
56 55
57 basePythonPackages = with builtins; if isAttrs pythonPackages
58 then pythonPackages
59 else getAttr pythonPackages pkgs;
56 sources =
57 let
58 inherit (pkgs.lib) all isString attrValues;
59 sourcesConfig = pkgs.config.rc.sources or {};
60 in
61 # Ensure that sources are configured as strings. Using a path
62 # would result in a copy into the nix store.
63 assert all isString (attrValues sourcesConfig);
64 sourcesConfig;
60 65
61 buildBowerComponents =
62 pkgs.buildBowerComponents or
63 (import ./pkgs/backport-16.03-build-bower-components.nix { inherit pkgs; });
64
65 sources = pkgs.config.rc.sources or {};
66 version = builtins.readFile ./rhodecode/VERSION;
66 version = builtins.readFile "${rhodecode-enterprise-ce-src}/rhodecode/VERSION";
67 67 rhodecode-enterprise-ce-src = builtins.filterSource src-filter ./.;
68 68
69 buildBowerComponents = pkgs.buildBowerComponents;
69 70 nodeEnv = import ./pkgs/node-default.nix {
70 71 inherit pkgs;
71 72 };
72 73 nodeDependencies = nodeEnv.shell.nodeDependencies;
73 74
74 75 bowerComponents = buildBowerComponents {
75 76 name = "enterprise-ce-${version}";
76 77 generated = ./pkgs/bower-packages.nix;
77 78 src = rhodecode-enterprise-ce-src;
78 79 };
79 80
80 pythonGeneratedPackages = self: basePythonPackages.override (a: {
81 inherit self;
82 })
83 // (scopedImport {
84 self = self;
85 super = basePythonPackages;
86 inherit pkgs;
87 inherit (pkgs) fetchurl fetchgit;
88 } ./pkgs/python-packages.nix);
81 rhodecode-testdata-src = sources.rhodecode-testdata or (
82 pkgs.fetchhg {
83 url = "https://code.rhodecode.com/upstream/rc_testdata";
84 rev = "v0.10.0";
85 sha256 = "0zn9swwvx4vgw4qn8q3ri26vvzgrxn15x6xnjrysi1bwmz01qjl0";
86 });
89 87
90 pythonOverrides = import ./pkgs/python-packages-overrides.nix {
91 inherit
92 basePythonPackages
93 pkgs;
88 rhodecode-testdata = import "${rhodecode-testdata-src}/default.nix" {
89 inherit
90 doCheck
91 pkgs
92 pythonPackages;
94 93 };
95 94
96 95 pythonLocalOverrides = self: super: {
97 96 rhodecode-enterprise-ce =
98 97 let
99 98 linkNodeAndBowerPackages = ''
100 echo "Export RhodeCode CE path"
101 99 export RHODECODE_CE_PATH=${rhodecode-enterprise-ce-src}
102 echo "Link node packages"
100
101 echo "[BEGIN]: Link node packages"
103 102 rm -fr node_modules
104 103 mkdir node_modules
105 104 # johbo: Linking individual packages allows us to run "npm install"
106 105 # inside of a shell to try things out. Re-entering the shell will
107 106 # restore a clean environment.
108 107 ln -s ${nodeDependencies}/lib/node_modules/* node_modules/
108 echo "[DONE]: Link node packages"
109 109
110 echo "DONE: Link node packages"
111
112 echo "Link bower packages"
110 echo "[BEGIN]: Link bower packages"
113 111 rm -fr bower_components
114 112 mkdir bower_components
113 ln -s ${bowerComponents}/bower_components/* bower_components/
114 echo "[DONE]: Link bower packages"
115 '';
115 116
116 ln -s ${bowerComponents}/bower_components/* bower_components/
117 echo "DONE: Link bower packages"
118 '';
117 releaseName = "RhodeCodeEnterpriseCE-${version}";
119 118 in super.rhodecode-enterprise-ce.override (attrs: {
120
121 119 inherit
122 120 doCheck
123 121 version;
122
124 123 name = "rhodecode-enterprise-ce-${version}";
125 releaseName = "RhodeCodeEnterpriseCE-${version}";
124 releaseName = releaseName;
126 125 src = rhodecode-enterprise-ce-src;
127 126 dontStrip = true; # prevent strip, we don't need it.
128 127
129 buildInputs =
130 attrs.buildInputs ++
131 (with self; [
132 pkgs.nodePackages.bower
133 pkgs.nodePackages.grunt-cli
134 pkgs.subversion
135 pytest-catchlog
136 rhodecode-testdata
137 ]);
138
139 #TODO: either move this into overrides, OR use the new machanics from
140 # pip2nix and requiremtn.txt file
141 propagatedBuildInputs = attrs.propagatedBuildInputs ++ (with self; [
142 rhodecode-tools
143 ]);
144
145 # TODO: johbo: Make a nicer way to expose the parts. Maybe
146 # pkgs/default.nix?
128 # expose following attributed outside
147 129 passthru = {
148 130 inherit
131 rhodecode-testdata
149 132 bowerComponents
150 133 linkNodeAndBowerPackages
151 134 myPythonPackagesUnfix
152 pythonLocalOverrides;
135 pythonLocalOverrides
136 pythonCommunityOverrides;
137
153 138 pythonPackages = self;
154 139 };
155 140
141 buildInputs =
142 attrs.buildInputs or [] ++ [
143 rhodecode-testdata
144 pkgs.nodePackages.bower
145 pkgs.nodePackages.grunt-cli
146 ];
147
148 #NOTE: option to inject additional propagatedBuildInputs
149 propagatedBuildInputs =
150 attrs.propagatedBuildInputs or [] ++ [
151
152 ];
153
156 154 LC_ALL = "en_US.UTF-8";
157 155 LOCALE_ARCHIVE =
158 if pkgs.stdenv ? glibc
156 if pkgs.stdenv.isLinux
159 157 then "${pkgs.glibcLocales}/lib/locale/locale-archive"
160 158 else "";
161 159
160 # Add bin directory to path so that tests can find 'rhodecode'.
162 161 preCheck = ''
163 162 export PATH="$out/bin:$PATH"
164 163 '';
165 164
165 # custom check phase for testing
166 checkPhase = ''
167 runHook preCheck
168 PYTHONHASHSEED=random py.test -vv -p no:sugar -r xw --cov-config=.coveragerc --cov=rhodecode --cov-report=term-missing rhodecode
169 runHook postCheck
170 '';
171
166 172 postCheck = ''
167 rm -rf $out/lib/${self.python.libPrefix}/site-packages/pytest_pylons
173 echo "Cleanup of rhodecode/tests"
168 174 rm -rf $out/lib/${self.python.libPrefix}/site-packages/rhodecode/tests
169 175 '';
170 176
171 preBuild = linkNodeAndBowerPackages + ''
177 preBuild = ''
178
179 echo "Building frontend assets"
180 ${linkNodeAndBowerPackages}
172 181 grunt
173 182 rm -fr node_modules
174 183 '';
175 184
176 185 postInstall = ''
177 echo "Writing meta information for rccontrol to nix-support/rccontrol"
186 echo "Writing enterprise-ce meta information for rccontrol to nix-support/rccontrol"
178 187 mkdir -p $out/nix-support/rccontrol
179 188 cp -v rhodecode/VERSION $out/nix-support/rccontrol/version
180 echo "DONE: Meta information for rccontrol written"
189 echo "[DONE]: enterprise-ce meta information for rccontrol written"
190
191 mkdir -p $out/etc
192 cp configs/production.ini $out/etc
193 echo "[DONE]: saved enterprise-ce production.ini into $out/etc"
181 194
182 195 # python based programs need to be wrapped
196 mkdir -p $out/bin
197 # rhodecode-tools
198 ln -s ${self.rhodecode-tools}/bin/rhodecode-* $out/bin/
199
200 # required binaries from dependencies
201 #ln -s ${self.python}/bin/python $out/bin
183 202 ln -s ${self.pyramid}/bin/* $out/bin/
184 203 ln -s ${self.gunicorn}/bin/gunicorn $out/bin/
185 204 ln -s ${self.supervisor}/bin/supervisor* $out/bin/
186 ln -s ${self.PasteScript}/bin/paster $out/bin/
205 ln -s ${self.pastescript}/bin/paster $out/bin/
187 206 ln -s ${self.channelstream}/bin/channelstream $out/bin/
188 207 ln -s ${self.celery}/bin/celery $out/bin/
208 echo "[DONE]: created symlinks into $out/bin"
189 209
190 # rhodecode-tools
191 ln -s ${self.rhodecode-tools}/bin/rhodecode-* $out/bin/
192
193 # note that condition should be restricted when adding further tools
194 210 for file in $out/bin/*;
195 211 do
196 212 wrapProgram $file \
197 --prefix PATH : $PATH \
198 --prefix PYTHONPATH : $PYTHONPATH \
199 --set PYTHONHASHSEED random
213 --prefix PATH : $PATH \
214 --prefix PYTHONPATH : $PYTHONPATH \
215 --set PYTHONHASHSEED random
200 216 done
201 217
202 mkdir $out/etc
203 cp configs/production.ini $out/etc
218 echo "[DONE]: enterprise-ce binary wrapping"
204 219
205
206 # TODO: johbo: Make part of ac-tests
207 220 if [ ! -f rhodecode/public/js/scripts.js ]; then
208 221 echo "Missing scripts.js"
209 222 exit 1
210 223 fi
211 224 if [ ! -f rhodecode/public/css/style.css ]; then
212 225 echo "Missing style.css"
213 226 exit 1
214 227 fi
215 228 '';
216
217 229 });
218 230
219 rhodecode-testdata = import "${rhodecode-testdata-src}/default.nix" {
220 inherit
221 doCheck
222 pkgs
223 pythonPackages;
224 };
225
226 231 };
227 232
228 rhodecode-testdata-src = sources.rhodecode-testdata or (
229 pkgs.fetchhg {
230 url = "https://code.rhodecode.com/upstream/rc_testdata";
231 rev = "v0.10.0";
232 sha256 = "0zn9swwvx4vgw4qn8q3ri26vvzgrxn15x6xnjrysi1bwmz01qjl0";
233 });
233 basePythonPackages = with builtins;
234 if isAttrs pythonPackages then
235 pythonPackages
236 else
237 getAttr pythonPackages pkgs;
238
239 pythonGeneratedPackages = import ./pkgs/python-packages.nix {
240 inherit pkgs;
241 inherit (pkgs) fetchurl fetchgit fetchhg;
242 };
243
244 pythonCommunityOverrides = import ./pkgs/python-packages-overrides.nix {
245 inherit pkgs basePythonPackages;
246 };
234 247
235 248 # Apply all overrides and fix the final package set
236 249 myPythonPackagesUnfix = with pkgs.lib;
237 250 (extends pythonExternalOverrides
238 251 (extends pythonLocalOverrides
239 (extends pythonOverrides
240 pythonGeneratedPackages)));
252 (extends pythonCommunityOverrides
253 (extends pythonGeneratedPackages
254 basePythonPackagesUnfix))));
255
241 256 myPythonPackages = (pkgs.lib.fix myPythonPackagesUnfix);
242 257
243 258 in myPythonPackages.rhodecode-enterprise-ce
@@ -1,4 +1,9 b''
1 # generating packages
2 nix-shell pkgs/shell-generate.nix
3 cd docs
4 pip2nix generate
5
1 6 # building the docs
2 7 cd docs
3 8 nix-build default.nix -o result
4 make clean html No newline at end of file
9 make clean html
@@ -1,272 +1,276 b''
1 1 .. _indexing-ref:
2 2
3 3 Full-text Search
4 4 ----------------
5 5
6 6 By default |RC| is configured to use `Whoosh`_ to index |repos| and
7 7 provide full-text search.
8 8
9 9 |RCE| also provides support for `Elasticsearch`_ as a backend for scalable
10 10 search. See :ref:`enable-elasticsearch` for details.
11 11
12 12 Indexing
13 13 ^^^^^^^^
14 14
15 15 To run the indexer you need to use an |authtoken| with admin rights to all
16 16 |repos|.
17 17
18 18 To index new content added, you have the option to set the indexer up in a
19 19 number of ways, for example:
20 20
21 21 * Call the indexer via a cron job. We recommend running this nightly,
22 22 unless you need everything indexed immediately.
23 23 * Set the indexer to infinitely loop and reindex as soon as it has run its
24 24 cycle.
25 25 * Hook the indexer up with your CI server to reindex after each push.
26 26
27 27 The indexer works by indexing new commits added since the last run. If you
28 28 wish to build a brand new index from scratch each time,
29 29 use the ``force`` option in the configuration file.
30 30
31 31 .. important::
32 32
33 33 You need to have |RCT| installed, see :ref:`install-tools`. Since |RCE|
34 34 3.5.0 they are installed by default.
35 35
36 36 To set up indexing, use the following steps:
37 37
38 38 1. :ref:`config-rhoderc`, if running tools remotely.
39 39 2. :ref:`run-index`
40 40 3. :ref:`set-index`
41 41 4. :ref:`advanced-indexing`
42 42
43 43 .. _config-rhoderc:
44 44
45 45 Configure the ``.rhoderc`` File
46 46 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
47 47
48 48 |RCT| uses the :file:`/home/{user}/.rhoderc` file for connection details
49 49 to |RCM| instances. If this file is not automatically created,
50 50 you can configure it using the following example. You need to configure the
51 51 details for each instance you want to index.
52 52
53 53 .. code-block:: bash
54 54
55 55 # Check the instance details
56 56 # of the instance you want to index
57 57 $ rccontrol status
58 58
59 59 - NAME: enterprise-1
60 60 - STATUS: RUNNING
61 61 - TYPE: Momentum
62 62 - VERSION: 1.5.0
63 63 - URL: http://127.0.0.1:10000
64 64
65 65 To get your API Token, on the |RCM| interface go to
66 66 :menuselection:`username --> My Account --> Auth tokens`
67 67
68 68 .. code-block:: ini
69 69
70 70 # Configure .rhoderc with matching details
71 71 # This allows the indexer to connect to the instance
72 72 [instance:enterprise-1]
73 73 api_host = http://127.0.0.1:10000
74 74 api_key = <auth token goes here>
75 75 repo_dir = /home/<username>/repos
76 76
77 77 .. _run-index:
78 78
79 79 Run the Indexer
80 80 ^^^^^^^^^^^^^^^
81 81
82 82 Run the indexer using the following command, and specify the instance you
83 83 want to index:
84 84
85 85 .. code-block:: bash
86 86
87 87 # From inside a virtualevv
88 88 (venv)$ rhodecode-index --instance-name=enterprise-1
89 89
90 90 # Using default installation
91 $ /home/user/.rccontrol/enterprise-4/profile/bin/rhodecode-index \
92 --instance-name=enterprise-4
91 $ /home/user/.rccontrol/enterprise-1/profile/bin/rhodecode-index \
92 --instance-name=enterprise-1
93 93
94 94 # Using a custom mapping file
95 $ /home/user/.rccontrol/enterprise-4/profile/bin/rhodecode-index \
96 --instance-name=enterprise-4 \
97 --mapping=/home/user/.rccontrol/enterprise-4/mapping.ini
95 $ /home/user/.rccontrol/enterprise-1/profile/bin/rhodecode-index \
96 --instance-name=enterprise-1 \
97 --mapping=/home/user/.rccontrol/enterprise-1/mapping.ini
98 98
99 99 .. note::
100 100
101 |RCT| require |PY| 2.7 to run.
101 In case of often indexing the index may become fragmented. Most often a result of that
102 is error about `too many open files`. To fix this indexer needs to be executed with
103 --optimize flag. E.g `rhodecode-index --instance-name=enterprise-1 --optimize`
104 This should be executed regularly, once a week is recommended.
105
102 106
103 107 .. _set-index:
104 108
105 109 Schedule the Indexer
106 110 ^^^^^^^^^^^^^^^^^^^^
107 111
108 112 To schedule the indexer, configure the crontab file to run the indexer inside
109 113 your |RCT| virtualenv using the following steps.
110 114
111 115 1. Open the crontab file, using ``crontab -e``.
112 116 2. Add the indexer to the crontab, and schedule it to run as regularly as you
113 117 wish.
114 118 3. Save the file.
115 119
116 120 .. code-block:: bash
117 121
118 122 $ crontab -e
119 123
120 124 # The virtualenv can be called using its full path, so for example you can
121 125 # put this example into the crontab
122 126
123 127 # Run the indexer daily at 4am using the default mapping settings
124 128 * 4 * * * /home/ubuntu/.virtualenv/rhodecode-venv/bin/rhodecode-index \
125 129 --instance-name=enterprise-1
126 130
127 131 # Run the indexer every Sunday at 3am using default mapping
128 132 * 3 * * 0 /home/ubuntu/.virtualenv/rhodecode-venv/bin/rhodecode-index \
129 133 --instance-name=enterprise-1
130 134
131 135 # Run the indexer every 15 minutes
132 136 # using a specially configured mapping file
133 137 */15 * * * * ~/.rccontrol/enterprise-4/profile/bin/rhodecode-index \
134 138 --instance-name=enterprise-4 \
135 139 --mapping=/home/user/.rccontrol/enterprise-4/mapping.ini
136 140
137 141 .. _advanced-indexing:
138 142
139 143 Advanced Indexing
140 144 ^^^^^^^^^^^^^^^^^
141 145
142 146 |RCT| indexes based on the :file:`mapping.ini` file. To configure your index,
143 147 you can specify different options in this file. The default location is:
144 148
145 149 * :file:`/home/{user}/.rccontrol/{instance-id}/mapping.ini`, using default
146 150 |RCT|.
147 151 * :file:`~/venv/lib/python2.7/site-packages/rhodecode_tools/templates/mapping.ini`,
148 152 when using ``virtualenv``.
149 153
150 154 .. note::
151 155
152 156 If you need to create the :file:`mapping.ini` file, use the |RCT|
153 157 ``rhodecode-index --create-mapping path/to/file`` API call. For details,
154 158 see the :ref:`tools-cli` section.
155 159
156 160 The indexer runs in a random order to prevent a failing |repo| from stopping
157 161 a build. To configure different indexing scenarios, set the following options
158 162 inside the :file:`mapping.ini` and specify the altered file using the
159 163 ``--mapping`` option.
160 164
161 165 * ``index_files`` : Index the specified file types.
162 166 * ``skip_files`` : Do not index the specified file types.
163 167 * ``index_files_content`` : Index the content of the specified file types.
164 168 * ``skip_files_content`` : Do not index the content of the specified files.
165 169 * ``force`` : Create a fresh index on each run.
166 170 * ``max_filesize`` : Files larger than the set size will not be indexed.
167 171 * ``commit_parse_limit`` : Set the batch size when indexing commit messages.
168 172 Set to a lower number to lessen memory load.
169 173 * ``repo_limit`` : Set the maximum number or |repos| indexed per run.
170 174 * ``[INCLUDE]`` : Set |repos| you want indexed. This takes precedent over
171 175 ``[EXCLUDE]``.
172 176 * ``[EXCLUDE]`` : Set |repos| you do not want indexed. Exclude can be used to
173 177 not index branches, forks, or log |repos|.
174 178
175 179 At the end of the file you can specify conditions for specific |repos| that
176 180 will override the default values. To configure your indexer,
177 181 use the following example :file:`mapping.ini` file.
178 182
179 183 .. code-block:: ini
180 184
181 185 [__DEFAULT__]
182 186 # default patterns for indexing files and content of files.
183 187 # Binary files are skipped by default.
184 188
185 189 # Index python and markdown files
186 190 index_files = *.py, *.md
187 191
188 192 # Do not index these file types
189 193 skip_files = *.svg, *.log, *.dump, *.txt
190 194
191 195 # Index both file types and their content
192 196 index_files_content = *.cpp, *.ini, *.py
193 197
194 198 # Index file names, but not file content
195 199 skip_files_content = *.svg,
196 200
197 201 # Force rebuilding an index from scratch. Each repository will be rebuild
198 202 # from scratch with a global flag. Use local flag to rebuild single repos
199 203 force = false
200 204
201 205 # Do not index files larger than 385KB
202 206 max_filesize = 385KB
203 207
204 208 # Limit commit indexing to 500 per batch
205 209 commit_parse_limit = 500
206 210
207 211 # Limit each index run to 25 repos
208 212 repo_limit = 25
209 213
210 214 # __INCLUDE__ is more important that __EXCLUDE__.
211 215
212 216 [__INCLUDE__]
213 217 # Include all repos with these names
214 218
215 219 docs/* = 1
216 220 lib/* = 1
217 221
218 222 [__EXCLUDE__]
219 223 # Do not include the following repo in index
220 224
221 225 dev-docs/* = 1
222 226 legacy-repos/* = 1
223 227 *-dev/* = 1
224 228
225 229 # Each repo that needs special indexing is a separate section below.
226 230 # In each section set the options to override the global configuration
227 231 # parameters above.
228 232 # If special settings are not configured, the global configuration values
229 233 # above are inherited. If no special repositories are
230 234 # defined here RhodeCode will use the API to ask for all repositories
231 235
232 236 # For this repo use different settings
233 237 [special-repo]
234 238 commit_parse_limit = 20,
235 239 skip_files = *.idea, *.xml,
236 240
237 241 # For another repo use different settings
238 242 [another-special-repo]
239 243 index_files = *,
240 244 max_filesize = 800MB
241 245 commit_parse_limit = 20000
242 246
243 247 .. _enable-elasticsearch:
244 248
245 249 Enabling Elasticsearch
246 250 ^^^^^^^^^^^^^^^^^^^^^^
247 251
248 252 1. Open the :file:`rhodecode.ini` file for the instance you wish to edit. The
249 253 default location is
250 254 :file:`home/{user}/.rccontrol/{instance-id}/rhodecode.ini`
251 255 2. Find the search configuration section:
252 256
253 257 .. code-block:: ini
254 258
255 259 ###################################
256 260 ## SEARCH INDEXING CONFIGURATION ##
257 261 ###################################
258 262
259 263 search.module = rhodecode.lib.index.whoosh
260 264 search.location = %(here)s/data/index
261 265
262 266 and change it to:
263 267
264 268 .. code-block:: ini
265 269
266 270 search.module = rc_elasticsearch
267 271 search.location = http://localhost:9200/
268 272
269 273 where ``search.location`` points to the elasticsearch server.
270 274
271 275 .. _Whoosh: https://pypi.python.org/pypi/Whoosh/
272 276 .. _Elasticsearch: https://www.elastic.co/ No newline at end of file
@@ -1,60 +1,66 b''
1 1 .. _user-session-ref:
2 2
3 3 Increase User Session Performance
4 4 ---------------------------------
5 5
6 6 The default file-based sessions are only suitable for smaller setups, or
7 7 instances that doesn't have a lot of users or traffic.
8 8 They are set as default option because it's setup-free solution.
9 9
10 10 The most common issue of file based sessions are file limit errors which occur
11 11 if there are lots of session files.
12 12
13 13 Therefore, in a large scale deployment, to give better performance,
14 14 scalability, and maintainability we recommend switching from file-based
15 sessions to database-based user sessions or memcached sessions.
15 sessions to database-based user sessions or Redis based sessions.
16 16
17 17 To switch to database-based user sessions uncomment the following section in
18 18 your :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file.
19 19
20 20
21 21 .. code-block:: ini
22 22
23 23 ## db based session, fast, and allows easy management over logged in users
24 24 beaker.session.type = ext:database
25 25 beaker.session.table_name = db_session
26 26
27 27 # use just one of the following accoring to the type of database
28 28 beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
29 29 beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
30 30
31 31 beaker.session.sa.pool_recycle = 3600
32 32 beaker.session.sa.echo = false
33 33
34 34
35 35 and make sure you comment out the file based sessions.
36 36
37 37 .. code-block:: ini
38 38
39 39 ## types are file, ext:memcached, ext:database, and memory (default).
40 40 #beaker.session.type = file
41 41 #beaker.session.data_dir = %(here)s/data/sessions/data
42 42
43 43
44 To switch to memcached-based user sessions uncomment the following section in
44 The `table_name` will be automatically created on specified database if it isn't yet existing.
45 Database specified in the `beaker.session.sa.url` can be the same that RhodeCode
46 uses, or if required it can be a different one. We recommend to use the same database.
47
48
49
50 To switch to reds-based user sessions uncomment the following section in
45 51 your :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file.
46 52
47 53 .. code-block:: ini
48 54
49 ## memcached sessions
50 beaker.session.type = ext:memcached
51 beaker.session.url = localhost:11211
55 ## redis sessions
56 beaker.session.type = ext:redis
57 beaker.session.url = localhost:6379
52 58
53 59
54 60 and make sure you comment out the file based sessions.
55 61
56 62 .. code-block:: ini
57 63
58 64 ## types are file, ext:memcached, ext:database, and memory (default).
59 65 #beaker.session.type = file
60 66 #beaker.session.data_dir = %(here)s/data/sessions/data No newline at end of file
@@ -1,421 +1,428 b''
1 1 .. _pull-request-methods-ref:
2 2
3 3 pull_request methods
4 4 ====================
5 5
6 6 close_pull_request
7 7 ------------------
8 8
9 9 .. py:function:: close_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, userid=<Optional:<OptionalAttr:apiuser>>, message=<Optional:''>)
10 10
11 11 Close the pull request specified by `pullrequestid`.
12 12
13 13 :param apiuser: This is filled automatically from the |authtoken|.
14 14 :type apiuser: AuthUser
15 15 :param repoid: Repository name or repository ID to which the pull
16 16 request belongs.
17 17 :type repoid: str or int
18 18 :param pullrequestid: ID of the pull request to be closed.
19 19 :type pullrequestid: int
20 20 :param userid: Close the pull request as this user.
21 21 :type userid: Optional(str or int)
22 22 :param message: Optional message to close the Pull Request with. If not
23 23 specified it will be generated automatically.
24 24 :type message: Optional(str)
25 25
26 26 Example output:
27 27
28 28 .. code-block:: bash
29 29
30 30 "id": <id_given_in_input>,
31 31 "result": {
32 32 "pull_request_id": "<int>",
33 33 "close_status": "<str:status_lbl>,
34 34 "closed": "<bool>"
35 35 },
36 36 "error": null
37 37
38 38
39 39 comment_pull_request
40 40 --------------------
41 41
42 42 .. py:function:: comment_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, message=<Optional:None>, commit_id=<Optional:None>, status=<Optional:None>, comment_type=<Optional:u'note'>, resolves_comment_id=<Optional:None>, userid=<Optional:<OptionalAttr:apiuser>>)
43 43
44 44 Comment on the pull request specified with the `pullrequestid`,
45 45 in the |repo| specified by the `repoid`, and optionally change the
46 46 review status.
47 47
48 48 :param apiuser: This is filled automatically from the |authtoken|.
49 49 :type apiuser: AuthUser
50 50 :param repoid: Optional repository name or repository ID.
51 51 :type repoid: str or int
52 52 :param pullrequestid: The pull request ID.
53 53 :type pullrequestid: int
54 54 :param commit_id: Specify the commit_id for which to set a comment. If
55 55 given commit_id is different than latest in the PR status
56 56 change won't be performed.
57 57 :type commit_id: str
58 58 :param message: The text content of the comment.
59 59 :type message: str
60 60 :param status: (**Optional**) Set the approval status of the pull
61 61 request. One of: 'not_reviewed', 'approved', 'rejected',
62 62 'under_review'
63 63 :type status: str
64 64 :param comment_type: Comment type, one of: 'note', 'todo'
65 65 :type comment_type: Optional(str), default: 'note'
66 66 :param userid: Comment on the pull request as this user
67 67 :type userid: Optional(str or int)
68 68
69 69 Example output:
70 70
71 71 .. code-block:: bash
72 72
73 73 id : <id_given_in_input>
74 74 result : {
75 75 "pull_request_id": "<Integer>",
76 76 "comment_id": "<Integer>",
77 77 "status": {"given": <given_status>,
78 78 "was_changed": <bool status_was_actually_changed> },
79 79 },
80 80 error : null
81 81
82 82
83 83 create_pull_request
84 84 -------------------
85 85
86 .. py:function:: create_pull_request(apiuser, source_repo, target_repo, source_ref, target_ref, title, description=<Optional:''>, reviewers=<Optional:None>)
86 .. py:function:: create_pull_request(apiuser, source_repo, target_repo, source_ref, target_ref, title=<Optional:''>, description=<Optional:''>, description_renderer=<Optional:''>, reviewers=<Optional:None>)
87 87
88 88 Creates a new pull request.
89 89
90 90 Accepts refs in the following formats:
91 91
92 92 * branch:<branch_name>:<sha>
93 93 * branch:<branch_name>
94 94 * bookmark:<bookmark_name>:<sha> (Mercurial only)
95 95 * bookmark:<bookmark_name> (Mercurial only)
96 96
97 97 :param apiuser: This is filled automatically from the |authtoken|.
98 98 :type apiuser: AuthUser
99 99 :param source_repo: Set the source repository name.
100 100 :type source_repo: str
101 101 :param target_repo: Set the target repository name.
102 102 :type target_repo: str
103 103 :param source_ref: Set the source ref name.
104 104 :type source_ref: str
105 105 :param target_ref: Set the target ref name.
106 106 :type target_ref: str
107 :param title: Set the pull request title.
107 :param title: Optionally Set the pull request title, it's generated otherwise
108 108 :type title: str
109 109 :param description: Set the pull request description.
110 110 :type description: Optional(str)
111 :type description_renderer: Optional(str)
112 :param description_renderer: Set pull request renderer for the description.
113 It should be 'rst', 'markdown' or 'plain'. If not give default
114 system renderer will be used
111 115 :param reviewers: Set the new pull request reviewers list.
112 116 Reviewer defined by review rules will be added automatically to the
113 117 defined list.
114 118 :type reviewers: Optional(list)
115 119 Accepts username strings or objects of the format:
116 120
117 121 [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}]
118 122
119 123
120 124 get_pull_request
121 125 ----------------
122 126
123 127 .. py:function:: get_pull_request(apiuser, pullrequestid, repoid=<Optional:None>)
124 128
125 129 Get a pull request based on the given ID.
126 130
127 131 :param apiuser: This is filled automatically from the |authtoken|.
128 132 :type apiuser: AuthUser
129 133 :param repoid: Optional, repository name or repository ID from where
130 134 the pull request was opened.
131 135 :type repoid: str or int
132 136 :param pullrequestid: ID of the requested pull request.
133 137 :type pullrequestid: int
134 138
135 139 Example output:
136 140
137 141 .. code-block:: bash
138 142
139 143 "id": <id_given_in_input>,
140 144 "result":
141 145 {
142 146 "pull_request_id": "<pull_request_id>",
143 147 "url": "<url>",
144 148 "title": "<title>",
145 149 "description": "<description>",
146 150 "status" : "<status>",
147 151 "created_on": "<date_time_created>",
148 152 "updated_on": "<date_time_updated>",
149 153 "commit_ids": [
150 154 ...
151 155 "<commit_id>",
152 156 "<commit_id>",
153 157 ...
154 158 ],
155 159 "review_status": "<review_status>",
156 160 "mergeable": {
157 161 "status": "<bool>",
158 162 "message": "<message>",
159 163 },
160 164 "source": {
161 165 "clone_url": "<clone_url>",
162 166 "repository": "<repository_name>",
163 167 "reference":
164 168 {
165 169 "name": "<name>",
166 170 "type": "<type>",
167 171 "commit_id": "<commit_id>",
168 172 }
169 173 },
170 174 "target": {
171 175 "clone_url": "<clone_url>",
172 176 "repository": "<repository_name>",
173 177 "reference":
174 178 {
175 179 "name": "<name>",
176 180 "type": "<type>",
177 181 "commit_id": "<commit_id>",
178 182 }
179 183 },
180 184 "merge": {
181 185 "clone_url": "<clone_url>",
182 186 "reference":
183 187 {
184 188 "name": "<name>",
185 189 "type": "<type>",
186 190 "commit_id": "<commit_id>",
187 191 }
188 192 },
189 193 "author": <user_obj>,
190 194 "reviewers": [
191 195 ...
192 196 {
193 197 "user": "<user_obj>",
194 198 "review_status": "<review_status>",
195 199 }
196 200 ...
197 201 ]
198 202 },
199 203 "error": null
200 204
201 205
202 206 get_pull_request_comments
203 207 -------------------------
204 208
205 209 .. py:function:: get_pull_request_comments(apiuser, pullrequestid, repoid=<Optional:None>)
206 210
207 211 Get all comments of pull request specified with the `pullrequestid`
208 212
209 213 :param apiuser: This is filled automatically from the |authtoken|.
210 214 :type apiuser: AuthUser
211 215 :param repoid: Optional repository name or repository ID.
212 216 :type repoid: str or int
213 217 :param pullrequestid: The pull request ID.
214 218 :type pullrequestid: int
215 219
216 220 Example output:
217 221
218 222 .. code-block:: bash
219 223
220 224 id : <id_given_in_input>
221 225 result : [
222 226 {
223 227 "comment_author": {
224 228 "active": true,
225 229 "full_name_or_username": "Tom Gore",
226 230 "username": "admin"
227 231 },
228 232 "comment_created_on": "2017-01-02T18:43:45.533",
229 233 "comment_f_path": null,
230 234 "comment_id": 25,
231 235 "comment_lineno": null,
232 236 "comment_status": {
233 237 "status": "under_review",
234 238 "status_lbl": "Under Review"
235 239 },
236 240 "comment_text": "Example text",
237 241 "comment_type": null,
238 242 "pull_request_version": null
239 243 }
240 244 ],
241 245 error : null
242 246
243 247
244 248 get_pull_requests
245 249 -----------------
246 250
247 251 .. py:function:: get_pull_requests(apiuser, repoid, status=<Optional:'new'>)
248 252
249 253 Get all pull requests from the repository specified in `repoid`.
250 254
251 255 :param apiuser: This is filled automatically from the |authtoken|.
252 256 :type apiuser: AuthUser
253 257 :param repoid: Optional repository name or repository ID.
254 258 :type repoid: str or int
255 259 :param status: Only return pull requests with the specified status.
256 260 Valid options are.
257 261 * ``new`` (default)
258 262 * ``open``
259 263 * ``closed``
260 264 :type status: str
261 265
262 266 Example output:
263 267
264 268 .. code-block:: bash
265 269
266 270 "id": <id_given_in_input>,
267 271 "result":
268 272 [
269 273 ...
270 274 {
271 275 "pull_request_id": "<pull_request_id>",
272 276 "url": "<url>",
273 277 "title" : "<title>",
274 278 "description": "<description>",
275 279 "status": "<status>",
276 280 "created_on": "<date_time_created>",
277 281 "updated_on": "<date_time_updated>",
278 282 "commit_ids": [
279 283 ...
280 284 "<commit_id>",
281 285 "<commit_id>",
282 286 ...
283 287 ],
284 288 "review_status": "<review_status>",
285 289 "mergeable": {
286 290 "status": "<bool>",
287 291 "message: "<message>",
288 292 },
289 293 "source": {
290 294 "clone_url": "<clone_url>",
291 295 "reference":
292 296 {
293 297 "name": "<name>",
294 298 "type": "<type>",
295 299 "commit_id": "<commit_id>",
296 300 }
297 301 },
298 302 "target": {
299 303 "clone_url": "<clone_url>",
300 304 "reference":
301 305 {
302 306 "name": "<name>",
303 307 "type": "<type>",
304 308 "commit_id": "<commit_id>",
305 309 }
306 310 },
307 311 "merge": {
308 312 "clone_url": "<clone_url>",
309 313 "reference":
310 314 {
311 315 "name": "<name>",
312 316 "type": "<type>",
313 317 "commit_id": "<commit_id>",
314 318 }
315 319 },
316 320 "author": <user_obj>,
317 321 "reviewers": [
318 322 ...
319 323 {
320 324 "user": "<user_obj>",
321 325 "review_status": "<review_status>",
322 326 }
323 327 ...
324 328 ]
325 329 }
326 330 ...
327 331 ],
328 332 "error": null
329 333
330 334
331 335 merge_pull_request
332 336 ------------------
333 337
334 338 .. py:function:: merge_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, userid=<Optional:<OptionalAttr:apiuser>>)
335 339
336 340 Merge the pull request specified by `pullrequestid` into its target
337 341 repository.
338 342
339 343 :param apiuser: This is filled automatically from the |authtoken|.
340 344 :type apiuser: AuthUser
341 345 :param repoid: Optional, repository name or repository ID of the
342 346 target repository to which the |pr| is to be merged.
343 347 :type repoid: str or int
344 348 :param pullrequestid: ID of the pull request which shall be merged.
345 349 :type pullrequestid: int
346 350 :param userid: Merge the pull request as this user.
347 351 :type userid: Optional(str or int)
348 352
349 353 Example output:
350 354
351 355 .. code-block:: bash
352 356
353 357 "id": <id_given_in_input>,
354 358 "result": {
355 359 "executed": "<bool>",
356 360 "failure_reason": "<int>",
357 361 "merge_commit_id": "<merge_commit_id>",
358 362 "possible": "<bool>",
359 363 "merge_ref": {
360 364 "commit_id": "<commit_id>",
361 365 "type": "<type>",
362 366 "name": "<name>"
363 367 }
364 368 },
365 369 "error": null
366 370
367 371
368 372 update_pull_request
369 373 -------------------
370 374
371 .. py:function:: update_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, title=<Optional:''>, description=<Optional:''>, reviewers=<Optional:None>, update_commits=<Optional:None>)
375 .. py:function:: update_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, title=<Optional:''>, description=<Optional:''>, description_renderer=<Optional:''>, reviewers=<Optional:None>, update_commits=<Optional:None>)
372 376
373 377 Updates a pull request.
374 378
375 379 :param apiuser: This is filled automatically from the |authtoken|.
376 380 :type apiuser: AuthUser
377 381 :param repoid: Optional repository name or repository ID.
378 382 :type repoid: str or int
379 383 :param pullrequestid: The pull request ID.
380 384 :type pullrequestid: int
381 385 :param title: Set the pull request title.
382 386 :type title: str
383 387 :param description: Update pull request description.
384 388 :type description: Optional(str)
389 :type description_renderer: Optional(str)
390 :param description_renderer: Update pull request renderer for the description.
391 It should be 'rst', 'markdown' or 'plain'
385 392 :param reviewers: Update pull request reviewers list with new value.
386 393 :type reviewers: Optional(list)
387 394 Accepts username strings or objects of the format:
388 395
389 396 [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}]
390 397
391 398 :param update_commits: Trigger update of commits for this pull request
392 399 :type: update_commits: Optional(bool)
393 400
394 401 Example output:
395 402
396 403 .. code-block:: bash
397 404
398 405 id : <id_given_in_input>
399 406 result : {
400 407 "msg": "Updated pull request `63`",
401 408 "pull_request": <pull_request_object>,
402 409 "updated_reviewers": {
403 410 "added": [
404 411 "username"
405 412 ],
406 413 "removed": []
407 414 },
408 415 "updated_commits": {
409 416 "added": [
410 417 "<sha1_hash>"
411 418 ],
412 419 "common": [
413 420 "<sha1_hash>",
414 421 "<sha1_hash>",
415 422 ],
416 423 "removed": []
417 424 }
418 425 }
419 426 error : null
420 427
421 428
@@ -1,316 +1,311 b''
1 1 # -*- coding: utf-8 -*-
2 2 #
3 3 # RhodeCode Enterprise documentation build configuration file, created by
4 4 # sphinx-quickstart on Tue Nov 4 11:48:37 2014.
5 5 #
6 6 # This file is execfile()d with the current directory set to its
7 7 # containing dir.
8 8 #
9 9 # Note that not all possible configuration values are present in this
10 10 # autogenerated file.
11 11 #
12 12 # All configuration values have a default; values that are commented out
13 13 # serve to show the default.
14 14
15 15 import sys
16 16 import os
17 17 import datetime
18 18 import sphinx_rtd_theme
19 19
20 20 # If extensions (or modules to document with autodoc) are in another directory,
21 21 # add these directories to sys.path here. If the directory is relative to the
22 22 # documentation root, use os.path.abspath to make it absolute, like shown here.
23 23 sys.path.insert(0, os.path.abspath('.'))
24 24 import common
25 25
26 26 # -- General configuration ------------------------------------------------
27 27
28 28 # If your documentation needs a minimal Sphinx version, state it here.
29 29 #needs_sphinx = '1.0'
30 30
31 31 # Add any Sphinx extension module names here, as strings. They can be
32 32 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
33 33 # ones.
34 34 extensions = [
35 'sphinx.ext.autodoc',
35 36 'sphinx.ext.intersphinx',
36 37 'sphinx.ext.todo',
37 38 'sphinx.ext.imgmath'
38 39 ]
39 40
40 41 intersphinx_mapping = {
41 42 'enterprise': ('https://docs.rhodecode.com/RhodeCode-Enterprise/', None),
42 43 'control': ('https://docs.rhodecode.com/RhodeCode-Control/', None),
43 44 }
44 45
45 if tags.has('dev'):
46 intersphinx_mapping.update({
47 'enterprise': ('https://ci.rhodecode.com/documentation/Momentum/', None),
48 'control': ('https://ci.rhodecode.com/documentation/Control/', None),
49 })
50
51
52 46 # Add any paths that contain templates here, relative to this directory.
53 47 templates_path = ['_templates']
54 48
55 49 # The suffix of source filenames.
56 50 source_suffix = '.rst'
57 51
58 52 # The encoding of source files.
59 53 #source_encoding = 'utf-8-sig'
60 54
61 55 # The master toctree document.
62 56 master_doc = 'index'
63 57
64 58 # The version info for the project you're documenting, acts as replacement for
65 59 # |version| and |release|, also used in various other places throughout the
66 60 # built documents.
67 61
68 # TODO: johbo: Move into common package for documentation utilities
62
69 63 def _get_version():
70 64 with open('../rhodecode/VERSION') as f:
71 65 return f.read().strip()
72 66
67
73 68 # The full version, including alpha/beta/rc tags.
74 69 release = _get_version()
75 70 # The short X.Y version.
76 71 version = '.'.join(release.split('.', 2)[:2]) # First two parts of release
77 72
78 73 # General information about the project.
79 74 project = u'RhodeCode Enterprise %s ' % _get_version()
80 75 copyright = u'2010-{now.year}, RhodeCode GmbH'.format(
81 76 now=datetime.datetime.today())
82 77
83 78
84 79 # The language for content autogenerated by Sphinx. Refer to documentation
85 80 # for a list of supported languages.
86 81 #language = None
87 82
88 83 rst_epilog = common.rst_epilog + """
89 84 .. |async| replace:: asynchronous
90 85 """
91 86
92 87 # There are two options for replacing |today|: either, you set today to some
93 88 # non-false value, then it is used:
94 89 #today = ''
95 90 # Else, today_fmt is used as the format for a strftime call.
96 91 #today_fmt = '%B %d, %Y'
97 92
98 93 # List of patterns, relative to source directory, that match files and
99 94 # directories to ignore when looking for source files.
100 95 exclude_patterns = [
101 96 # Special directories
102 97 '_build',
103 98 'result',
104 99
105 100 # Other RST files
106 101 'admin/rhodecode-backup.rst',
107 102 'issue-trackers/redmine.rst',
108 103 'known-issues/error-msg-guide.rst',
109 104 'tutorials/docs-build.rst',
110 105 'integrations/example-ext.py',
111 106 'collaboration/supported-workflows.rst',
112 107 ]
113 108
114 109
115 110 # The reST default role (used for this markup: `text`) to use for all
116 111 # documents.
117 112 #default_role = None
118 113
119 114 # If true, '()' will be appended to :func: etc. cross-reference text.
120 115 #add_function_parentheses = True
121 116
122 117 # If true, the current module name will be prepended to all description
123 118 # unit titles (such as .. function::).
124 119 #add_module_names = True
125 120
126 121 # If true, sectionauthor and moduleauthor directives will be shown in the
127 122 # output. They are ignored by default.
128 123 #show_authors = False
129 124
130 125 # The name of the Pygments (syntax highlighting) style to use.
131 126 pygments_style = 'sphinx'
132 127
133 128 # A list of ignored prefixes for module index sorting.
134 129 #modindex_common_prefix = []
135 130
136 131 # If true, keep warnings as "system message" paragraphs in the built documents.
137 132 keep_warnings = tags.has("dev")
138 133
139 134
140 135 # -- Options for HTML output ----------------------------------------------
141 136
142 137 # The theme to use for HTML and HTML Help pages. See the documentation for
143 138 # a list of builtin themes.
144 139 #html_theme = 'rctheme'
145 140 html_theme = 'sphinx_rtd_theme'
146 141
147 142 # Theme options are theme-specific and customize the look and feel of a theme
148 143 # further. For a list of options available for each theme, see the
149 144 # documentation.
150 145 #html_theme_options = {}
151 146 html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
152 147
153 148 # Add any paths that contain custom themes here, relative to this directory.
154 149 #html_theme_path = []
155 150
156 151 # The name for this set of Sphinx documents. If None, it defaults to
157 152 # "<project> v<release> documentation".
158 153 #html_title = None
159 154
160 155 # A shorter title for the navigation bar. Default is the same as html_title.
161 156 #html_short_title = None
162 157
163 158 # The name of an image file (relative to this directory) to place at the top
164 159 # of the sidebar.
165 160 #html_logo = None
166 161 html_sidebars = {
167 162 '**': ['globaltoc.html'],
168 163 }
169 164
170 165 # The name of an image file (within the static path) to use as favicon of the
171 166 # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
172 167 # pixels large.
173 168 html_favicon = 'images/favicon.ico'
174 169
175 170 # Add any paths that contain custom static files (such as style sheets) here,
176 171 # relative to this directory. They are copied after the builtin static files,
177 172 # so a file named "default.css" will overwrite the builtin "default.css".
178 173 html_static_path = ['static/css/add.css']
179 174
180 175 # Add any extra paths that contain custom files (such as robots.txt or
181 176 # .htaccess) here, relative to this directory. These files are copied
182 177 # directly to the root of the documentation.
183 178 #html_extra_path = []
184 179
185 180 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
186 181 # using the given strftime format.
187 182 #html_last_updated_fmt = '%b %d, %Y'
188 183
189 184 # If true, SmartyPants will be used to convert quotes and dashes to
190 185 # typographically correct entities.
191 186 #html_use_smartypants = True
192 187
193 188 # Custom sidebar templates, maps document names to template names.
194 189 #html_sidebars = {}
195 190
196 191 # Additional templates that should be rendered to pages, maps page names to
197 192 # template names.
198 193 #html_additional_pages = {}
199 194
200 195 # If false, no module index is generated.
201 196 #html_domain_indices = True
202 197
203 198 # If false, no index is generated.
204 199 #html_use_index = True
205 200
206 201 # If true, the index is split into individual pages for each letter.
207 202 #html_split_index = False
208 203
209 204 # If true, links to the reST sources are added to the pages.
210 205 #html_show_sourcelink = True
211 206
212 207 # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
213 208 #html_show_sphinx = True
214 209
215 210 # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
216 211 #html_show_copyright = True
217 212
218 213 # If true, an OpenSearch description file will be output, and all pages will
219 214 # contain a <link> tag referring to it. The value of this option must be the
220 215 # base URL from which the finished HTML is served.
221 216 #html_use_opensearch = ''
222 217
223 218 # This is the file name suffix for HTML files (e.g. ".xhtml").
224 219 #html_file_suffix = None
225 220
226 221 # Output file base name for HTML help builder.
227 222 htmlhelp_basename = 'rhodecode-enterprise'
228 223
229 224
230 225 # -- Options for LaTeX output ---------------------------------------------
231 226
232 227 latex_elements = {
233 228 'classoptions': ',oneside',
234 229 'babel': '\\usepackage[english]{babel}',
235 230
236 231 # The paper size ('letterpaper' or 'a4paper').
237 232 #'papersize': 'letterpaper',
238 233
239 234 # The font size ('10pt', '11pt' or '12pt').
240 235 #'pointsize': '10pt',
241 236
242 237 # Additional stuff for the LaTeX preamble.
243 238 #'preamble': '',
244 239 }
245 240
246 241 # Grouping the document tree into LaTeX files. List of tuples
247 242 # (source start file, target name, title,
248 243 # author, documentclass [howto, manual, or own class]).
249 244 latex_documents = [
250 245 ('index', 'RhodeCodeEnterprise.tex', u'RhodeCode Enterprise',
251 246 u'RhodeCode GmbH', 'manual'),
252 247 ]
253 248
254 249 # The name of an image file (relative to this directory) to place at the top of
255 250 # the title page.
256 251 #latex_logo = None
257 252
258 253 # For "manual" documents, if this is true, then toplevel headings are parts,
259 254 # not chapters.
260 255 #latex_use_parts = False
261 256
262 257 # If true, show page references after internal links.
263 258 latex_show_pagerefs = True
264 259
265 260 # If true, show URL addresses after external links.
266 261 latex_show_urls = 'footnote'
267 262
268 263 # Documents to append as an appendix to all manuals.
269 264 #latex_appendices = []
270 265
271 266 # If false, no module index is generated.
272 267 #latex_domain_indices = True
273 268
274 269 # Mode for literal blocks wider than the frame. Can be
275 270 # overflow, shrink or truncate
276 271 pdf_fit_mode = "truncate"
277 272
278 273
279 274 # -- Options for manual page output ---------------------------------------
280 275
281 276 # One entry per manual page. List of tuples
282 277 # (source start file, name, description, authors, manual section).
283 278 man_pages = [
284 279 ('index', 'rhodecodeenterprise', u'RhodeCode Enterprise',
285 280 [u'RhodeCode GmbH'], 1)
286 281 ]
287 282
288 283 # If true, show URL addresses after external links.
289 284 #man_show_urls = False
290 285
291 286
292 287 # -- Options for Texinfo output -------------------------------------------
293 288
294 289 # Grouping the document tree into Texinfo files. List of tuples
295 290 # (source start file, target name, title, author,
296 291 # dir menu entry, description, category)
297 292 texinfo_documents = [
298 293 ('index', 'RhodeCodeEnterprise', u'RhodeCode Enterprise',
299 294 u'RhodeCode Docs Team', 'RhodeCodeEnterprise', 'RhodeCode Docs Project',
300 295 'Miscellaneous'),
301 296 ]
302 297
303 298 # Documents to append as an appendix to all manuals.
304 299 #texinfo_appendices = []
305 300
306 301 # If false, no module index is generated.
307 302 #texinfo_domain_indices = True
308 303
309 304 # How to display URL addresses: 'footnote', 'no', or 'inline'.
310 305 #texinfo_show_urls = 'footnote'
311 306
312 307 # If true, do not generate a @detailmenu in the "Top" node's menu.
313 308 #texinfo_no_detailmenu = False
314 309
315 310 # We want to see todo notes in case of a pre-release build of the documentation
316 311 todo_include_todos = tags.has("dev")
@@ -1,226 +1,226 b''
1 1 .. _dev-setup:
2 2
3 3 ===================
4 4 Development setup
5 5 ===================
6 6
7 7
8 8 RhodeCode Enterprise runs inside a Nix managed environment. This ensures build
9 9 environment dependencies are correctly declared and installed during setup.
10 10 It also enables atomic upgrades, rollbacks, and multiple instances of RhodeCode
11 11 Enterprise running with isolation.
12 12
13 13 To set up RhodeCode Enterprise inside the Nix environment, use the following steps:
14 14
15 15
16 16
17 17 Setup Nix Package Manager
18 18 -------------------------
19 19
20 20 To install the Nix Package Manager, please run::
21 21
22 22 $ curl https://nixos.org/nix/install | sh
23 23
24 24 or go to https://nixos.org/nix/ and follow the installation instructions.
25 25 Once this is correctly set up on your system, you should be able to use the
26 26 following commands:
27 27
28 28 * `nix-env`
29 29
30 30 * `nix-shell`
31 31
32 32
33 33 .. tip::
34 34
35 35 Update your channels frequently by running ``nix-channel --update``.
36 36
37 37 .. note::
38 38
39 39 To uninstall nix run the following:
40 40
41 41 remove the . "$HOME/.nix-profile/etc/profile.d/nix.sh" line in your ~/.profile or ~/.bash_profile
42 42 rm -rf $HOME/{.nix-channels,.nix-defexpr,.nix-profile,.config/nixpkgs}
43 43 sudo rm -rf /nix
44 44
45 45 Switch nix to the latest STABLE channel
46 46 ---------------------------------------
47 47
48 48 run::
49 49
50 nix-channel --add https://nixos.org/channels/nixos-16.03 nixpkgs
50 nix-channel --add https://nixos.org/channels/nixos-18.03 nixpkgs
51 51
52 52 Followed by::
53 53
54 54 nix-channel --update
55 55
56 56
57 57 Install required binaries
58 58 -------------------------
59 59
60 60 We need some handy tools first.
61 61
62 62 run::
63 63
64 64 nix-env -i nix-prefetch-hg
65 65 nix-env -i nix-prefetch-git
66 66
67 67
68 68 Clone the required repositories
69 69 -------------------------------
70 70
71 71 After Nix is set up, clone the RhodeCode Enterprise Community Edition and
72 72 RhodeCode VCSServer repositories into the same directory.
73 73 RhodeCode currently is using Mercurial Version Control System, please make sure
74 74 you have it installed before continuing.
75 75
76 76 To obtain the required sources, use the following commands::
77 77
78 78 mkdir rhodecode-develop && cd rhodecode-develop
79 79 hg clone https://code.rhodecode.com/rhodecode-enterprise-ce
80 80 hg clone https://code.rhodecode.com/rhodecode-vcsserver
81 81
82 82 .. note::
83 83
84 84 If you cannot clone the repository, please contact us via support@rhodecode.com
85 85
86 86
87 87 Install some required libraries
88 88 -------------------------------
89 89
90 90 There are some required drivers and dev libraries that we need to install to
91 91 test RhodeCode under different types of databases. For example in Ubuntu we
92 92 need to install the following.
93 93
94 94 required libraries::
95 95
96 96 sudo apt-get install libapr1-dev libaprutil1-dev
97 97 sudo apt-get install libsvn-dev
98 98 sudo apt-get install mysql-server libmysqlclient-dev
99 99 sudo apt-get install postgresql postgresql-contrib libpq-dev
100 100 sudo apt-get install libcurl4-openssl-dev
101 101
102 102
103 103 Enter the Development Shell
104 104 ---------------------------
105 105
106 106 The final step is to start the development shells. To do this, run the
107 107 following command from inside the cloned repository::
108 108
109 109 #first, the vcsserver
110 110 cd ~/rhodecode-vcsserver
111 111 nix-shell
112 112
113 113 # then enterprise sources
114 114 cd ~/rhodecode-enterprise-ce
115 115 nix-shell
116 116
117 117 .. note::
118 118
119 119 On the first run, this will take a while to download and optionally compile
120 120 a few things. The following runs will be faster. The development shell works
121 121 fine on both MacOS and Linux platforms.
122 122
123 123
124 124 Create config.nix for development
125 125 ---------------------------------
126 126
127 127 In order to run proper tests and setup linking across projects, a config.nix
128 128 file needs to be setup::
129 129
130 130 # create config
131 131 mkdir -p ~/.nixpkgs
132 132 touch ~/.nixpkgs/config.nix
133 133
134 134 # put the below content into the ~/.nixpkgs/config.nix file
135 135 # adjusts, the path to where you cloned your repositories.
136 136
137 137 {
138 138 rc = {
139 139 sources = {
140 140 rhodecode-vcsserver = "/home/dev/rhodecode-vcsserver";
141 141 rhodecode-enterprise-ce = "/home/dev/rhodecode-enterprise-ce";
142 142 rhodecode-enterprise-ee = "/home/dev/rhodecode-enterprise-ee";
143 143 };
144 144 };
145 145 }
146 146
147 147
148 148
149 149 Creating a Development Configuration
150 150 ------------------------------------
151 151
152 152 To create a development environment for RhodeCode Enterprise,
153 153 use the following steps:
154 154
155 155 1. Create a copy of vcsserver config:
156 156 `cp ~/rhodecode-vcsserver/configs/development.ini ~/rhodecode-vcsserver/configs/dev.ini`
157 157 2. Create a copy of rhodocode config:
158 158 `cp ~/rhodecode-enterprise-ce/configs/development.ini ~/rhodecode-enterprise-ce/configs/dev.ini`
159 159 3. Adjust the configuration settings to your needs if needed.
160 160
161 161 .. note::
162 162
163 163 It is recommended to use the name `dev.ini` since it's included in .hgignore file.
164 164
165 165
166 166 Setup the Development Database
167 167 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
168 168
169 169 To create a development database, use the following example. This is a one
170 170 time operation executed from the nix-shell of rhodecode-enterprise-ce sources ::
171 171
172 172 rc-setup-app dev.ini \
173 173 --user=admin --password=secret \
174 174 --email=admin@example.com \
175 175 --repos=~/my_dev_repos
176 176
177 177
178 178 Compile CSS and JavaScript
179 179 ^^^^^^^^^^^^^^^^^^^^^^^^^^
180 180
181 181 To use the application's frontend and prepare it for production deployment,
182 182 you will need to compile the CSS and JavaScript with Grunt.
183 183 This is easily done from within the nix-shell using the following command::
184 184
185 185 grunt
186 186
187 187 When developing new features you will need to recompile following any
188 188 changes made to the CSS or JavaScript files when developing the code::
189 189
190 190 grunt watch
191 191
192 192 This prepares the development (with comments/whitespace) versions of files.
193 193
194 194 Start the Development Servers
195 195 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
196 196
197 197 From the rhodecode-vcsserver directory, start the development server in another
198 198 nix-shell, using the following command::
199 199
200 200 pserve configs/dev.ini
201 201
202 202 In the adjacent nix-shell which you created for your development server, you may
203 203 now start CE with the following command::
204 204
205 205
206 206 pserve --reload configs/dev.ini
207 207
208 208 .. note::
209 209
210 210 `--reload` flag will automatically reload the server when source file changes.
211 211
212 212
213 213 Run the Environment Tests
214 214 ^^^^^^^^^^^^^^^^^^^^^^^^^
215 215
216 216 Please make sure that the tests are passing to verify that your environment is
217 217 set up correctly. RhodeCode uses py.test to run tests.
218 218 While your instance is running, start a new nix-shell and simply run
219 219 ``make test`` to run the basic test suite.
220 220
221 221
222 222 Need Help?
223 223 ^^^^^^^^^^
224 224
225 225 Join us on Slack via https://rhodecode.com/join or post questions in our
226 226 Community Portal at https://community.rhodecode.com
@@ -1,261 +1,227 b''
1 1 { system ? builtins.currentSystem
2 2 }:
3 3
4 4 let
5 5
6 6 pkgs = import <nixpkgs> { inherit system; };
7 7
8 inherit (pkgs) fetchurl fetchgit;
8 inherit (pkgs) fetchurl;
9 9
10 10 buildPythonPackage = pkgs.python27Packages.buildPythonPackage;
11 11 python = pkgs.python27Packages.python;
12 12
13 Jinja2 = buildPythonPackage rec {
14 name = "Jinja2-2.9.6";
15 buildInputs = [];
13
14 alabaster = buildPythonPackage {
15 name = "alabaster-0.7.11";
16 doCheck = false;
17 src = fetchurl {
18 url = "https://files.pythonhosted.org/packages/3f/46/9346ea429931d80244ab7f11c4fce83671df0b7ae5a60247a2b588592c46/alabaster-0.7.11.tar.gz";
19 sha256 = "1mvm69xsn5xf1jc45kdq1mn0yq0pfn54mv2jcww4s1vwqx6iyfxn";
20 };
21 };
22 babel = buildPythonPackage {
23 name = "babel-2.6.0";
16 24 doCheck = false;
17 propagatedBuildInputs = [MarkupSafe];
25 propagatedBuildInputs = [
26 pytz
27 ];
28 src = fetchurl {
29 url = "https://files.pythonhosted.org/packages/be/cc/9c981b249a455fa0c76338966325fc70b7265521bad641bf2932f77712f4/Babel-2.6.0.tar.gz";
30 sha256 = "08rxmbx2s4irp0w0gmn498vns5xy0fagm0fg33xa772jiks51flc";
31 };
32 };
33 certifi = buildPythonPackage {
34 name = "certifi-2018.8.24";
35 doCheck = false;
18 36 src = fetchurl {
19 url = "https://pypi.python.org/packages/90/61/f820ff0076a2599dd39406dcb858ecb239438c02ce706c8e91131ab9c7f1/Jinja2-2.9.6.tar.gz";
20 md5 = "6411537324b4dba0956aaa8109f3c77b";
37 url = "https://files.pythonhosted.org/packages/e1/0f/f8d5e939184547b3bdc6128551b831a62832713aa98c2ccdf8c47ecc7f17/certifi-2018.8.24.tar.gz";
38 sha256 = "0f0nhrj9mlrf79iway4578wrsgmjh0fmacl9zv8zjckdy7b90rip";
39 };
40 };
41 chardet = buildPythonPackage {
42 name = "chardet-3.0.4";
43 doCheck = false;
44 src = fetchurl {
45 url = "https://files.pythonhosted.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/chardet-3.0.4.tar.gz";
46 sha256 = "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4";
47 };
48 };
49 docutils = buildPythonPackage {
50 name = "docutils-0.14";
51 doCheck = false;
52 src = fetchurl {
53 url = "https://files.pythonhosted.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz";
54 sha256 = "0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji";
21 55 };
22 56 };
23
24 MarkupSafe = buildPythonPackage rec {
25 name = "MarkupSafe-1.0";
26 buildInputs = [];
57 idna = buildPythonPackage {
58 name = "idna-2.7";
59 doCheck = false;
60 src = fetchurl {
61 url = "https://files.pythonhosted.org/packages/65/c4/80f97e9c9628f3cac9b98bfca0402ede54e0563b56482e3e6e45c43c4935/idna-2.7.tar.gz";
62 sha256 = "05jam7d31767dr12x0rbvvs8lxnpb1mhdb2zdlfxgh83z6k3hjk8";
63 };
64 };
65 imagesize = buildPythonPackage {
66 name = "imagesize-1.1.0";
27 67 doCheck = false;
28 propagatedBuildInputs = [];
29 68 src = fetchurl {
30 url = "https://pypi.python.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz";
31 md5 = "2fcedc9284d50e577b5192e8e3578355";
69 url = "https://files.pythonhosted.org/packages/41/f5/3cf63735d54aa9974e544aa25858d8f9670ac5b4da51020bbfc6aaade741/imagesize-1.1.0.tar.gz";
70 sha256 = "1dg3wn7qpwmhgqc0r9na2ding1wif9q5spz3j9zn2riwphc2k0zk";
71 };
72 };
73 jinja2 = buildPythonPackage {
74 name = "jinja2-2.9.6";
75 doCheck = false;
76 propagatedBuildInputs = [
77 markupsafe
78 ];
79 src = fetchurl {
80 url = "https://files.pythonhosted.org/packages/90/61/f820ff0076a2599dd39406dcb858ecb239438c02ce706c8e91131ab9c7f1/Jinja2-2.9.6.tar.gz";
81 sha256 = "1zzrkywhziqffrzks14kzixz7nd4yh2vc0fb04a68vfd2ai03anx";
32 82 };
33 83 };
34
35 Pygments = buildPythonPackage {
36 name = "Pygments-2.2.0";
37 buildInputs = [];
84 markupsafe = buildPythonPackage {
85 name = "markupsafe-1.0";
86 doCheck = false;
87 src = fetchurl {
88 url = "https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz";
89 sha256 = "0rdn1s8x9ni7ss8rfiacj7x1085lx8mh2zdwqslnw8xc3l4nkgm6";
90 };
91 };
92 packaging = buildPythonPackage {
93 name = "packaging-17.1";
38 94 doCheck = false;
39 propagatedBuildInputs = [];
95 propagatedBuildInputs = [
96 pyparsing
97 six
98 ];
40 99 src = fetchurl {
41 url = "https://pypi.python.org/packages/71/2a/2e4e77803a8bd6408a2903340ac498cb0a2181811af7c9ec92cb70b0308a/Pygments-2.2.0.tar.gz";
42 md5 = "13037baca42f16917cbd5ad2fab50844";
100 url = "https://files.pythonhosted.org/packages/77/32/439f47be99809c12ef2da8b60a2c47987786d2c6c9205549dd6ef95df8bd/packaging-17.1.tar.gz";
101 sha256 = "0nrpayk8kij1zm9sjnk38ldz3a6705ggvw8ljylqbrb4vmqbf6gh";
102 };
103 };
104 pygments = buildPythonPackage {
105 name = "pygments-2.2.0";
106 doCheck = false;
107 src = fetchurl {
108 url = "https://files.pythonhosted.org/packages/71/2a/2e4e77803a8bd6408a2903340ac498cb0a2181811af7c9ec92cb70b0308a/Pygments-2.2.0.tar.gz";
109 sha256 = "1k78qdvir1yb1c634nkv6rbga8wv4289xarghmsbbvzhvr311bnv";
43 110 };
44 111 };
45
46 Sphinx = buildPythonPackage (rec {
47 name = "Sphinx-1.6.5";
112 pyparsing = buildPythonPackage {
113 name = "pyparsing-2.2.0";
114 doCheck = false;
48 115 src = fetchurl {
49 url = "https://pypi.python.org/packages/8b/7e/b188d9a3b9c938e736e02a74c1363c2888e095d770df2c72b4c312f9fdcb/Sphinx-1.6.5.tar.gz";
50 md5 = "cd73118c21ec610432e63e6421ec54f1";
116 url = "https://files.pythonhosted.org/packages/3c/ec/a94f8cf7274ea60b5413df054f82a8980523efd712ec55a59e7c3357cf7c/pyparsing-2.2.0.tar.gz";
117 sha256 = "016b9gh606aa44sq92jslm89bg874ia0yyiyb643fa6dgbsbqch8";
51 118 };
119 };
120 pytz = buildPythonPackage {
121 name = "pytz-2018.4";
122 doCheck = false;
123 src = fetchurl {
124 url = "https://files.pythonhosted.org/packages/10/76/52efda4ef98e7544321fd8d5d512e11739c1df18b0649551aeccfb1c8376/pytz-2018.4.tar.gz";
125 sha256 = "0jgpqx3kk2rhv81j1izjxvmx8d0x7hzs1857pgqnixic5wq2ar60";
126 };
127 };
128 requests = buildPythonPackage {
129 name = "requests-2.19.1";
130 doCheck = false;
52 131 propagatedBuildInputs = [
53 six
54 Jinja2
55 Pygments
56 docutils
57 snowballstemmer
58 babel
59 alabaster
60 imagesize
61 requests
62 setuptools
63 sphinxcontrib-websupport
64 typing
65
66 # special cases
67 pytz
68 sphinx_rtd_theme
69
132 chardet
133 idna
134 urllib3
135 certifi
70 136 ];
71 });
72
73 alabaster = buildPythonPackage rec {
74 name = "alabaster-0.7.10";
75 buildInputs = [];
137 src = fetchurl {
138 url = "https://files.pythonhosted.org/packages/54/1f/782a5734931ddf2e1494e4cd615a51ff98e1879cbe9eecbdfeaf09aa75e9/requests-2.19.1.tar.gz";
139 sha256 = "0snf8xxdzsgh1x2zv3vilvbrv9jbpmnfagzzb1rjmmvflckdh8pc";
140 };
141 };
142 six = buildPythonPackage {
143 name = "six-1.11.0";
76 144 doCheck = false;
77 propagatedBuildInputs = [];
78 145 src = fetchurl {
79 url = "https://pypi.python.org/packages/d0/a5/e3a9ad3ee86aceeff71908ae562580643b955ea1b1d4f08ed6f7e8396bd7/alabaster-0.7.10.tar.gz";
80 md5 = "7934dccf38801faa105f6e7b4784f493";
146 url = "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
147 sha256 = "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h";
148 };
149 };
150 snowballstemmer = buildPythonPackage {
151 name = "snowballstemmer-1.2.1";
152 doCheck = false;
153 src = fetchurl {
154 url = "https://files.pythonhosted.org/packages/20/6b/d2a7cb176d4d664d94a6debf52cd8dbae1f7203c8e42426daa077051d59c/snowballstemmer-1.2.1.tar.gz";
155 sha256 = "0a0idq4y5frv7qsg2x62jd7rd272749xk4x99misf5rcifk2d7wi";
81 156 };
82 157 };
83
84 babel = buildPythonPackage {
85 name = "babel-2.5.1";
86 buildInputs = [];
158 sphinx = buildPythonPackage {
159 name = "sphinx-1.7.8";
87 160 doCheck = false;
88 propagatedBuildInputs = [pytz];
161 propagatedBuildInputs = [
162 six
163 jinja2
164 pygments
165 docutils
166 snowballstemmer
167 babel
168 alabaster
169 imagesize
170 requests
171 setuptools
172 packaging
173 sphinxcontrib-websupport
174 typing
175 ];
89 176 src = fetchurl {
90 url = "https://pypi.python.org/packages/5a/22/63f1dbb8514bb7e0d0c8a85cc9b14506599a075e231985f98afd70430e1f/Babel-2.5.1.tar.gz";
91 md5 = "60228b3ce93a203357158b909afe8ae1";
177 url = "https://files.pythonhosted.org/packages/ac/54/4ef326d0c654da1ed91341a7a1f43efc18a8c770ddd2b8e45df97cb79d82/Sphinx-1.7.8.tar.gz";
178 sha256 = "1ryz0w4c31930f1br2sjwrxwx9cmsy7cqdb0d81g98n9bj250w50";
92 179 };
93 180 };
94
95 certifi = buildPythonPackage {
96 name = "certifi-2017.11.5";
97 buildInputs = [];
181 sphinx-rtd-theme = buildPythonPackage {
182 name = "sphinx-rtd-theme-0.4.1";
98 183 doCheck = false;
99 propagatedBuildInputs = [];
184 propagatedBuildInputs = [
185 sphinx
186 ];
100 187 src = fetchurl {
101 url = "https://pypi.python.org/packages/23/3f/8be01c50ed24a4bd6b8da799839066ce0288f66f5e11f0367323467f0cbc/certifi-2017.11.5.tar.gz";
102 md5 = "c15ac46ed1fe4b607ff3405928f9a992";
188 url = "https://files.pythonhosted.org/packages/f2/b0/a1933d792b806118ddbca6699f2e2c844d9b1b16e84a89d7effd5cd2a800/sphinx_rtd_theme-0.4.1.tar.gz";
189 sha256 = "1xkyqam8dzbjaymdyvkiif85m4y3jf8crdiwlgcfp8gqcj57aj9v";
103 190 };
104 191 };
105
106 chardet = buildPythonPackage {
107 name = "chardet-3.0.4";
108 buildInputs = [];
192 sphinxcontrib-websupport = buildPythonPackage {
193 name = "sphinxcontrib-websupport-1.1.0";
109 194 doCheck = false;
110 propagatedBuildInputs = [];
111 195 src = fetchurl {
112 url = "https://pypi.python.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/chardet-3.0.4.tar.gz";
113 md5 = "7dd1ba7f9c77e32351b0a0cfacf4055c";
196 url = "https://files.pythonhosted.org/packages/07/7a/e74b06dce85555ffee33e1d6b7381314169ebf7e31b62c18fcb2815626b7/sphinxcontrib-websupport-1.1.0.tar.gz";
197 sha256 = "1ff3ix76xi1y6m99qxhaq5161ix9swwzydilvdya07mgbcvpzr4x";
114 198 };
115 199 };
116
117 docutils = buildPythonPackage {
118 name = "docutils-0.14";
119 buildInputs = [];
200 typing = buildPythonPackage {
201 name = "typing-3.6.6";
120 202 doCheck = false;
121 propagatedBuildInputs = [];
122 203 src = fetchurl {
123 url = "https://pypi.python.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz";
124 md5 = "c53768d63db3873b7d452833553469de";
204 url = "https://files.pythonhosted.org/packages/bf/9b/2bf84e841575b633d8d91ad923e198a415e3901f228715524689495b4317/typing-3.6.6.tar.gz";
205 sha256 = "0ba9acs4awx15bf9v3nrs781msbd2nx826906nj6fqks2bvca9s0";
206 };
207 };
208 urllib3 = buildPythonPackage {
209 name = "urllib3-1.23";
210 doCheck = false;
211 src = fetchurl {
212 url = "https://files.pythonhosted.org/packages/3c/d2/dc5471622bd200db1cd9319e02e71bc655e9ea27b8e0ce65fc69de0dac15/urllib3-1.23.tar.gz";
213 sha256 = "1bvbd35q3zdcd7gsv38fwpizy7p06dr0154g5gfybrvnbvhwb2m6";
125 214 };
126 215 };
127 216
128 idna = buildPythonPackage {
129 name = "idna-2.6";
130 buildInputs = [];
131 doCheck = false;
132 propagatedBuildInputs = [];
133 src = fetchurl {
134 url = "https://pypi.python.org/packages/f4/bd/0467d62790828c23c47fc1dfa1b1f052b24efdf5290f071c7a91d0d82fd3/idna-2.6.tar.gz";
135 md5 = "c706e2790b016bd0ed4edd2d4ba4d147";
136 };
137 };
138
139 imagesize = buildPythonPackage {
140 name = "imagesize-0.7.1";
141 buildInputs = [];
142 doCheck = false;
143 propagatedBuildInputs = [];
144 src = fetchurl {
145 url = "https://pypi.python.org/packages/53/72/6c6f1e787d9cab2cc733cf042f125abec07209a58308831c9f292504e826/imagesize-0.7.1.tar.gz";
146 md5 = "976148283286a6ba5f69b0f81aef8052";
147 };
148 };
149
150 pytz = buildPythonPackage {
151 name = "pytz-2017.3";
152 buildInputs = [];
153 doCheck = false;
154 propagatedBuildInputs = [];
155 src = fetchurl {
156 url = "https://pypi.python.org/packages/60/88/d3152c234da4b2a1f7a989f89609ea488225eaea015bc16fbde2b3fdfefa/pytz-2017.3.zip";
157 md5 = "7006b56c0d68a162d9fe57d4249c3171";
158 };
159 };
160
161 requests = buildPythonPackage {
162 name = "requests-2.18.4";
163 buildInputs = [];
164 doCheck = false;
165 propagatedBuildInputs = [chardet idna urllib3 certifi];
166 src = fetchurl {
167 url = "https://pypi.python.org/packages/b0/e1/eab4fc3752e3d240468a8c0b284607899d2fbfb236a56b7377a329aa8d09/requests-2.18.4.tar.gz";
168 md5 = "081412b2ef79bdc48229891af13f4d82";
169 };
170 };
171
172 six = buildPythonPackage {
173 name = "six-1.11.0";
174 buildInputs = [];
175 doCheck = false;
176 propagatedBuildInputs = [];
177 src = fetchurl {
178 url = "https://pypi.python.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
179 md5 = "d12789f9baf7e9fb2524c0c64f1773f8";
180 };
181 };
182
183 snowballstemmer = buildPythonPackage {
184 name = "snowballstemmer-1.2.1";
185 buildInputs = [];
186 doCheck = false;
187 propagatedBuildInputs = [];
188 src = fetchurl {
189 url = "https://pypi.python.org/packages/20/6b/d2a7cb176d4d664d94a6debf52cd8dbae1f7203c8e42426daa077051d59c/snowballstemmer-1.2.1.tar.gz";
190 md5 = "643b019667a708a922172e33a99bf2fa";
191 };
192 };
193
194 sphinx-rtd-theme = buildPythonPackage {
195 name = "sphinx-rtd-theme-0.2.5b1";
196 buildInputs = [];
197 doCheck = false;
198 propagatedBuildInputs = [];
199 src = fetchurl {
200 url = "https://pypi.python.org/packages/59/e4/9e3a74a3271e6734911d3f549e8439db53b8ac29adf10c8f698e6c86246b/sphinx_rtd_theme-0.2.5b1.tar.gz";
201 md5 = "0923473a43bd2527f32151f195f2a521";
202 };
203 };
204
205 sphinxcontrib-websupport = buildPythonPackage {
206 name = "sphinxcontrib-websupport-1.0.1";
207 buildInputs = [];
208 doCheck = false;
209 propagatedBuildInputs = [];
210 src = fetchurl {
211 url = "https://pypi.python.org/packages/c5/6b/f0630436b931ad4f8331a9399ca18a7d447f0fcc0c7178fb56b1aee68d01/sphinxcontrib-websupport-1.0.1.tar.gz";
212 md5 = "84df26463b1ba65b07f926dbe2055665";
213 };
214 };
215
216 typing = buildPythonPackage {
217 name = "typing-3.6.2";
218 buildInputs = [];
219 doCheck = false;
220 propagatedBuildInputs = [];
221 src = fetchurl {
222 url = "https://pypi.python.org/packages/ca/38/16ba8d542e609997fdcd0214628421c971f8c395084085354b11ff4ac9c3/typing-3.6.2.tar.gz";
223 md5 = "143af0bf3afd1887622771f2f1ffe8e1";
224 };
225 };
226
227 urllib3 = buildPythonPackage {
228 name = "urllib3-1.22";
229 buildInputs = [];
230 doCheck = false;
231 propagatedBuildInputs = [];
232 src = fetchurl {
233 url = "https://pypi.python.org/packages/ee/11/7c59620aceedcc1ef65e156cc5ce5a24ef87be4107c2b74458464e437a5d/urllib3-1.22.tar.gz";
234 md5 = "0da7bed3fe94bf7dc59ae37885cc72f7";
235 };
236 };
237
238
239 sphinx_rtd_theme = buildPythonPackage rec {
240 name = "sphinx-rtd-theme-0.2.5b1";
241 buildInputs = [];
242 doCheck = false;
243 propagatedBuildInputs = [];
244 src = fetchurl {
245 url = "https://pypi.python.org/packages/59/e4/9e3a74a3271e6734911d3f549e8439db53b8ac29adf10c8f698e6c86246b/sphinx_rtd_theme-0.2.5b1.tar.gz";
246 md5 = "0923473a43bd2527f32151f195f2a521";
247 };
248
249
250 };
251 217 # Avoid that setuptools is replaced, this leads to trouble
252 218 # with buildPythonPackage.
253 219 setuptools = pkgs.python27Packages.setuptools;
254 220
255 221 in python.buildEnv.override {
256 222 inherit python;
257 223 extraLibs = [
258 Sphinx
259 sphinx_rtd_theme
224 sphinx
225 sphinx-rtd-theme
260 226 ];
261 }
227 } No newline at end of file
@@ -1,88 +1,98 b''
1 1 .. _known-issues:
2 2
3 3 Known Issues
4 4 ============
5 5
6 6 Subversion Issues
7 7 -----------------
8 8
9 9 Limited |svn| support has been achieved for this release,
10 10 |release|. The following known issues are in development for improvement.
11 11
12 12 * |svn| |repo| creation:
13 13 Terminating the VCS Server during remote importation of |svn| |repos| leaves
14 14 the the process still running in the background.
15 15
16 16 * |svn| |repo| checkin/checkout:
17 17 |svn| cloning support is not enabled by default. Please contact support if
18 18 you want it enabled.
19 19
20 20 Windows Upload
21 21 --------------
22 22
23 23 There can be an issue with uploading files from web interface on Windows,
24 24 and afterwards users cannot properly clone or synchronize with the repository.
25 25
26 26 Early testing shows that often uploading files via HTML forms on Windows
27 27 includes the full path of the file being uploaded and not the name of the file.
28 28
29 29 Old Format of Git Repositories
30 30 ------------------------------
31 31
32 32 There is an issue when trying to import old |git| format |repos| into recent
33 33 versions of |RCE|. This issue can occur when importing from external |git|
34 34 repositories or from older versions of |RCE| (<=2.2.7).
35 35
36 36 To convert the old version into a current version, clone the old
37 37 |repo| into a local machine using a recent |git| client, then push it to a new
38 38 |repo| inside |RCE|.
39 39
40
40 41 VCS Server Memory Consumption
41 42 -----------------------------
42 43
43 44 The VCS Server cache grows without limits if not configured correctly. This
44 45 applies to |RCE| versions prior to the 3.3.2 releases, as 3.3.2
45 46 shipped with the optimal configuration as default. See the
46 47 :ref:`vcs-server-maintain` section for details.
47 48
48 49 To fix this issue, upgrade to |RCE| 3.3.2 or greater, and if you discover
49 50 memory consumption issues check the VCS Server settings.
50 51
51 Fedora 23
52 ---------
52 Fedora 23 / Ubuntu 18.04
53 ------------------------
54
55 |RCC| has a know problem with locales, due to changes in glibc 2.27+ which affects
56 the local-archive format, which is now incompatible with our used glibc 2.26.
57
53 58
54 |RCC| does not run perfectly on Fedora 23 due to a locale issue. This is a
55 known issue under investigation due to the Nix packaging of the product, see the
56 `Github issue here`_. |RCC| runs fine on Fedora 21.
59 To work around this problem, you need set path to ``$LOCAL_ARCHIVE`` to the
60 locale package in older pre glibc 2.27 format, or set `LC_ALL=C` in your enviroment.
61
62 To use the pre 2.27 locale-archive fix follow these steps:
57 63
58 To work around this problem, you need to point ``$LOCAL_ARCHIVE`` to the
59 workaround locale package.
64 1. Download the pre 2.27 locale-archive package
60 65
61 1. Download this package:
62 http://lipa.ms.mff.cuni.cz/~cunav5am/nix/locale-archive
66 .. code-block:: bash
67
68 wget https://dls.rhodecode.com/assets/locale-archive
69
63 70
64 71 2. Point ``$LOCAL_ARCHIVE`` to the locale package.
65 72
66 73 .. code-block:: bash
67 74
68 $ export LOCALE_ARCHIVE=/home/VERSION/locale-archive # change to your path
75 $ export LOCALE_ARCHIVE=/home/USER/locale-archive # change to your path
76
77 This can either added in `~/.rccontrol/supervisor/supervisord.ini`
78 or in user .bashrc/.zshrc etc, or via a startup script that
79 runs `rccontrol self-init`
69 80
70 81 If you happen to be running |RCC| from systemd, use the following
71 82 example to pass the correct locale information on boot.
72 83
73 84 .. code-block:: ini
74 85
75 86 [Unit]
76 87 Description=Rhodecode
77 88 After=network.target
78 89
79 90 [Service]
80 91 Type=forking
81 92 User=scm
82 93 Environment="LOCALE_ARCHIVE=/YOUR-PATH/locale-archive"
83 94 ExecStart=/YOUR-PATH/.rccontrol-profile/bin/rccontrol-self-init
84 95
85 96 [Install]
86 97 WantedBy=multi-user.target
87 98
88 .. _Github issue here: https://github.com/NixOS/nix/issues/599
@@ -1,119 +1,120 b''
1 1 .. _rhodecode-release-notes-ref:
2 2
3 3 Release Notes
4 4 =============
5 5
6 6 |RCE| 4.x Versions
7 7 ------------------
8 8
9 9 .. toctree::
10 10 :maxdepth: 1
11 11
12 release-notes-4.13.0.rst
12 13 release-notes-4.12.4.rst
13 14 release-notes-4.12.3.rst
14 15 release-notes-4.12.2.rst
15 16 release-notes-4.12.1.rst
16 17 release-notes-4.12.0.rst
17 18 release-notes-4.11.6.rst
18 19 release-notes-4.11.5.rst
19 20 release-notes-4.11.4.rst
20 21 release-notes-4.11.3.rst
21 22 release-notes-4.11.2.rst
22 23 release-notes-4.11.1.rst
23 24 release-notes-4.11.0.rst
24 25 release-notes-4.10.6.rst
25 26 release-notes-4.10.5.rst
26 27 release-notes-4.10.4.rst
27 28 release-notes-4.10.3.rst
28 29 release-notes-4.10.2.rst
29 30 release-notes-4.10.1.rst
30 31 release-notes-4.10.0.rst
31 32 release-notes-4.9.1.rst
32 33 release-notes-4.9.0.rst
33 34 release-notes-4.8.0.rst
34 35 release-notes-4.7.2.rst
35 36 release-notes-4.7.1.rst
36 37 release-notes-4.7.0.rst
37 38 release-notes-4.6.1.rst
38 39 release-notes-4.6.0.rst
39 40 release-notes-4.5.2.rst
40 41 release-notes-4.5.1.rst
41 42 release-notes-4.5.0.rst
42 43 release-notes-4.4.2.rst
43 44 release-notes-4.4.1.rst
44 45 release-notes-4.4.0.rst
45 46 release-notes-4.3.1.rst
46 47 release-notes-4.3.0.rst
47 48 release-notes-4.2.1.rst
48 49 release-notes-4.2.0.rst
49 50 release-notes-4.1.2.rst
50 51 release-notes-4.1.1.rst
51 52 release-notes-4.1.0.rst
52 53 release-notes-4.0.1.rst
53 54 release-notes-4.0.0.rst
54 55
55 56 |RCE| 3.x Versions
56 57 ------------------
57 58
58 59 .. toctree::
59 60 :maxdepth: 1
60 61
61 62 release-notes-3.8.4.rst
62 63 release-notes-3.8.3.rst
63 64 release-notes-3.8.2.rst
64 65 release-notes-3.8.1.rst
65 66 release-notes-3.8.0.rst
66 67 release-notes-3.7.1.rst
67 68 release-notes-3.7.0.rst
68 69 release-notes-3.6.1.rst
69 70 release-notes-3.6.0.rst
70 71 release-notes-3.5.2.rst
71 72 release-notes-3.5.1.rst
72 73 release-notes-3.5.0.rst
73 74 release-notes-3.4.1.rst
74 75 release-notes-3.4.0.rst
75 76 release-notes-3.3.4.rst
76 77 release-notes-3.3.3.rst
77 78 release-notes-3.3.2.rst
78 79 release-notes-3.3.1.rst
79 80 release-notes-3.3.0.rst
80 81 release-notes-3.2.3.rst
81 82 release-notes-3.2.2.rst
82 83 release-notes-3.2.1.rst
83 84 release-notes-3.2.0.rst
84 85 release-notes-3.1.1.rst
85 86 release-notes-3.1.0.rst
86 87 release-notes-3.0.2.rst
87 88 release-notes-3.0.1.rst
88 89 release-notes-3.0.0.rst
89 90
90 91 |RCE| 2.x Versions
91 92 ------------------
92 93
93 94 .. toctree::
94 95 :maxdepth: 1
95 96
96 97 release-notes-2.2.8.rst
97 98 release-notes-2.2.7.rst
98 99 release-notes-2.2.6.rst
99 100 release-notes-2.2.5.rst
100 101 release-notes-2.2.4.rst
101 102 release-notes-2.2.3.rst
102 103 release-notes-2.2.2.rst
103 104 release-notes-2.2.1.rst
104 105 release-notes-2.2.0.rst
105 106 release-notes-2.1.0.rst
106 107 release-notes-2.0.2.rst
107 108 release-notes-2.0.1.rst
108 109 release-notes-2.0.0.rst
109 110
110 111 |RCE| 1.x Versions
111 112 ------------------
112 113
113 114 .. toctree::
114 115 :maxdepth: 1
115 116
116 117 release-notes-1.7.2.rst
117 118 release-notes-1.7.1.rst
118 119 release-notes-1.7.0.rst
119 120 release-notes-1.6.0.rst
@@ -1,8 +1,8 b''
1 Sphinx==1.6.5
1 sphinx==1.7.8
2 2 six==1.11.0
3 sphinx_rtd_theme==0.2.5b1
3 sphinx_rtd_theme==0.4.1
4 4 docutils==0.14.0
5 Pygments==2.2.0
6 MarkupSafe==1.0.0
7 Jinja2==2.9.6
8 pytz No newline at end of file
5 pygments==2.2.0
6 markupsafe==1.0.0
7 jinja2==2.9.6
8 pytz==2018.4
@@ -1,25 +1,33 b''
1 1 {
2 2 "name": "rhodecode-enterprise",
3 "version": "0.0.1",
3 "version": "1.0.0",
4 "private": true,
5 "description" : "RhodeCode JS packaged",
6 "license": "SEE LICENSE IN LICENSE.txt",
7 "repository" : {
8 "type" : "hg",
9 "url" : "https://code.rhodecode.com/rhodecode-enterprise-ce"
10 },
4 11 "devDependencies": {
5 12 "grunt": "^0.4.5",
6 13 "grunt-contrib-copy": "^1.0.0",
7 14 "grunt-contrib-concat": "^0.5.1",
8 15 "grunt-contrib-jshint": "^0.12.0",
9 16 "grunt-contrib-less": "^1.1.0",
10 17 "grunt-contrib-watch": "^0.6.1",
11 "crisper": "^2.0.2",
12 "vulcanize": "^1.14.8",
18 "crisper": "^2.1.1",
19 "vulcanize": "^1.16.0",
13 20 "grunt-crisper": "^1.0.1",
14 21 "grunt-vulcanize": "^1.0.0",
15 22 "node2nix": "^1.0.0",
16 23 "jshint": "^2.9.1-rc3",
17 "bower": "^1.7.9",
24 "bower": "^1.8.4",
18 25 "jquery": "1.11.3",
19 26 "favico.js": "^0.3.10",
20 "clipboard": "^1.7.1",
27 "clipboard": "^2.0.1",
28 "qrious": "^4.0.2",
21 29 "moment": "^2.18.1",
22 30 "mousetrap": "^1.6.1",
23 31 "appenlight-client": "git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1"
24 32 }
25 33 }
@@ -1,33 +1,30 b''
1 # Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix)
1 2 { fetchbower, buildEnv }:
2 3 buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [
3 (fetchbower "webcomponentsjs" "0.7.22" "^0.7.22" "178h9j8jq9wi5845f5pxhhhqw6x022nzmpzm4di8fgsdl1f6nr5d")
4 (fetchbower "polymer" "Polymer/polymer#1.6.1" "Polymer/polymer#^1.6.1" "09mm0jgk457gvwqlc155swch7gjr6fs3g7spnvhi6vh5b6518540")
5 (fetchbower "paper-button" "PolymerElements/paper-button#1.0.13" "PolymerElements/paper-button#^1.0.13" "0i3y153nqk06pn0gk282vyybnl3g1w3w41d5i9z659cgn27g3fvm")
6 (fetchbower "paper-spinner" "PolymerElements/paper-spinner#1.2.0" "PolymerElements/paper-spinner#^1.2.0" "1av1m6y81jw3hjhz1yqy3rwcgxarjzl58ldfn4q6sn51pgzngfqb")
7 (fetchbower "paper-tooltip" "PolymerElements/paper-tooltip#1.1.3" "PolymerElements/paper-tooltip#^1.1.2" "0vmrm1n8k9sk9nvqy03q177axy22pia6i3j1gxbk72j3pqiqvg6k")
8 (fetchbower "paper-toast" "PolymerElements/paper-toast#1.3.0" "PolymerElements/paper-toast#^1.3.0" "0x9rqxsks5455s8pk4aikpp99ijdn6kxr9gvhwh99nbcqdzcxq1m")
9 (fetchbower "paper-toggle-button" "PolymerElements/paper-toggle-button#1.2.0" "PolymerElements/paper-toggle-button#^1.2.0" "0mphcng3ngspbpg4jjn0mb91nvr4xc1phq3qswib15h6sfww1b2w")
10 (fetchbower "iron-ajax" "PolymerElements/iron-ajax#1.4.4" "PolymerElements/iron-ajax#^1.4.4" "0jpi7ik3zljw8yh2ccc85r26lcpzmkc2nl1kn6fqdx57zkzk9v5b")
11 (fetchbower "iron-autogrow-textarea" "PolymerElements/iron-autogrow-textarea#1.0.13" "PolymerElements/iron-autogrow-textarea#^1.0.13" "0zwhpl97vii1s8k0lgain8i9dnw29b0mxc5ixdscx9las13n2lqq")
12 (fetchbower "iron-a11y-keys" "PolymerElements/iron-a11y-keys#1.0.6" "PolymerElements/iron-a11y-keys#^1.0.6" "1xz3mgghfcxixq28sdb654iaxj4nyi1bzcwf77ydkms6fviqs9mv")
13 (fetchbower "iron-flex-layout" "PolymerElements/iron-flex-layout#1.3.1" "PolymerElements/iron-flex-layout#^1.0.0" "0nswv3ih3bhflgcd2wjfmddqswzgqxb2xbq65jk9w3rkj26hplbl")
14 (fetchbower "paper-behaviors" "PolymerElements/paper-behaviors#1.0.12" "PolymerElements/paper-behaviors#^1.0.0" "012bqk97awgz55cn7rm9g7cckrdhkqhls3zvp8l6nd4rdwcrdzq8")
15 (fetchbower "paper-material" "PolymerElements/paper-material#1.0.6" "PolymerElements/paper-material#^1.0.0" "0rljmknfdbm5aabvx9pk77754zckj3l127c3mvnmwkpkkr353xnh")
16 (fetchbower "paper-styles" "PolymerElements/paper-styles#1.1.4" "PolymerElements/paper-styles#^1.0.0" "0j8vg74xrcxlni8i93dsab3y80f34kk30lv4yblqpkp9c3nrilf7")
17 (fetchbower "neon-animation" "PolymerElements/neon-animation#1.2.4" "PolymerElements/neon-animation#^1.0.0" "16mz9i2n5w0k5j8d6gha23cnbdgm5syz3fawyh89gdbq97bi2q5j")
18 (fetchbower "iron-a11y-announcer" "PolymerElements/iron-a11y-announcer#1.0.5" "PolymerElements/iron-a11y-announcer#^1.0.0" "0n7c7j1pwk3835s7s2jd9125wdcsqf216yi5gj07wn5s8h8p7m9d")
19 (fetchbower "iron-overlay-behavior" "PolymerElements/iron-overlay-behavior#1.8.6" "PolymerElements/iron-overlay-behavior#^1.0.9" "14brn9gz6qqskarg3fxk91xs7vg02vgcsz9a9743kidxr0l0413m")
20 (fetchbower "iron-fit-behavior" "PolymerElements/iron-fit-behavior#1.2.5" "PolymerElements/iron-fit-behavior#^1.1.0" "1msnlh8lp1xg6v4h6dkjwj9kzac5q5q208ayla3x9hi483ki6rlf")
21 (fetchbower "iron-checked-element-behavior" "PolymerElements/iron-checked-element-behavior#1.0.5" "PolymerElements/iron-checked-element-behavior#^1.0.0" "0l0yy4ah454s8bzfv076s8by7h67zy9ni6xb932qwyhx8br6c1m7")
22 (fetchbower "promise-polyfill" "polymerlabs/promise-polyfill#1.0.1" "polymerlabs/promise-polyfill#^1.0.0" "045bj2caav3famr5hhxgs1dx7n08r4s46mlzwb313vdy17is38xb")
23 (fetchbower "iron-behaviors" "PolymerElements/iron-behaviors#1.0.17" "PolymerElements/iron-behaviors#^1.0.0" "021qvkmbk32jrrmmphpmwgby4bzi5jyf47rh1bxmq2ip07ly4bpr")
24 (fetchbower "iron-validatable-behavior" "PolymerElements/iron-validatable-behavior#1.1.1" "PolymerElements/iron-validatable-behavior#^1.0.0" "1yhxlvywhw2klbbgm3f3cmanxfxggagph4ii635zv0c13707wslv")
25 (fetchbower "iron-form-element-behavior" "PolymerElements/iron-form-element-behavior#1.0.6" "PolymerElements/iron-form-element-behavior#^1.0.0" "0rdhxivgkdhhz2yadgdbjfc70l555p3y83vjh8rfj5hr0asyn6q1")
26 (fetchbower "iron-a11y-keys-behavior" "polymerelements/iron-a11y-keys-behavior#1.1.9" "polymerelements/iron-a11y-keys-behavior#^1.0.0" "1imm4gc84qizihhbyhfa8lwjh3myhj837f79i5m04xjgwrjmkaf6")
27 (fetchbower "paper-ripple" "PolymerElements/paper-ripple#1.0.8" "PolymerElements/paper-ripple#^1.0.0" "0r9sq8ik7wwrw0qb82c3rw0c030ljwd3s466c9y4qbcrsbvfjnns")
28 (fetchbower "font-roboto" "PolymerElements/font-roboto#1.0.1" "PolymerElements/font-roboto#^1.0.1" "02jz43r0wkyr3yp7rq2rc08l5cwnsgca9fr54sr4rhsnl7cjpxrj")
29 (fetchbower "iron-meta" "PolymerElements/iron-meta#1.1.2" "PolymerElements/iron-meta#^1.0.0" "1wl4dx8fnsknw9z9xi8bpc4cy9x70c11x4zxwxnj73hf3smifppl")
30 (fetchbower "iron-resizable-behavior" "PolymerElements/iron-resizable-behavior#1.0.5" "PolymerElements/iron-resizable-behavior#^1.0.0" "1fd5zmbr2hax42vmcasncvk7lzi38fmb1kyii26nn8pnnjak7zkn")
31 (fetchbower "iron-selector" "PolymerElements/iron-selector#1.5.2" "PolymerElements/iron-selector#^1.0.0" "1ajv46llqzvahm5g6g75w7nfyjcslp53ji0wm96l2k94j87spv3r")
32 (fetchbower "web-animations-js" "web-animations/web-animations-js#2.2.2" "web-animations/web-animations-js#^2.2.0" "1izfvm3l67vwys0bqbhidi9rqziw2f8wv289386sc6jsxzgkzhga")
4 (fetchbower "webcomponentsjs" "1.2.3" "^1.2.3" "0db2fjk779rhl9d4ifpk1j9a83vngx6j3hk7si1752dqxj857267")
5 (fetchbower "polymer" "Polymer/polymer#2.6.0" "Polymer/polymer#^2.6.0" "1jw5syjn0naa7dlxzxvsgwb20zbkbpx0pcg0wzjq4wr49c20nw0k")
6 (fetchbower "paper-button" "PolymerElements/paper-button#2.1.2" "PolymerElements/paper-button#^2.1.2" "1lwmjwhvimh02gss39yjp5h7yg9mxl1ig59yrk085v86y5f5ilz1")
7 (fetchbower "paper-spinner" "PolymerElements/paper-spinner#2.1.0" "PolymerElements/paper-spinner#^2.1.0" "07jamgxzvy4r9pgf5ikj1fm8nkrw6sywgcxvmm7ax58hjvmd4i45")
8 (fetchbower "paper-tooltip" "PolymerElements/paper-tooltip#2.1.1" "PolymerElements/paper-tooltip#^2.1.1" "0ja9vz4xps7dxfx6kmrwq0gifbjsyc3pk9l3hd5233ss72ghlvgb")
9 (fetchbower "paper-toast" "PolymerElements/paper-toast#2.1.2" "PolymerElements/paper-toast#^2.1.2" "0mkj9ayjx2l9hvrz4kw3yjbgrs9w873k05ywv94nh92mzpjkxn04")
10 (fetchbower "paper-toggle-button" "PolymerElements/paper-toggle-button#2.1.1" "PolymerElements/paper-toggle-button#^2.1.1" "1rl5ar3ny6r3v9hr8s68v8b3zh5yl52pikhi4b9iv9grv29g5999")
11 (fetchbower "iron-ajax" "PolymerElements/iron-ajax#2.1.3" "PolymerElements/iron-ajax#^2.1.3" "187zb6lkv18yapl292qhn611mbl4i2bqs2dimlwmdjaln285nc1l")
12 (fetchbower "iron-autogrow-textarea" "PolymerElements/iron-autogrow-textarea#2.2.0" "PolymerElements/iron-autogrow-textarea#^2.2.0" "1cx7g49m20z08x25z24g2pvv6m6dwfbkga3nsw0rpi3jk7xhznqw")
13 (fetchbower "iron-a11y-keys" "PolymerElements/iron-a11y-keys#2.1.2" "PolymerElements/iron-a11y-keys#^2.1.2" "0zdn3bzfrk88iwahmmzvcjn3m90zga1l8dx42b365n8if0n0zapj")
14 (fetchbower "shadycss" "webcomponents/shadycss#1.3.5" "webcomponents/shadycss#^v1.1.0" "1xp07d6jlmc3ywg4cdp2nijwi0vrbzw468242xz0s6zx5z2n2wzf")
15 (fetchbower "iron-flex-layout" "PolymerElements/iron-flex-layout#2.0.3" "PolymerElements/iron-flex-layout#1 - 2" "1ir9ili3rkcgbfj6is5s70vyb7m6avz0av0lpjjlhhsplrrl90bk")
16 (fetchbower "paper-behaviors" "PolymerElements/paper-behaviors#2.1.1" "PolymerElements/paper-behaviors#1 - 2" "0wzyznmy1q64jsm6lck0xma92lg2hz9h9m05r68iy20iyrvbjld7")
17 (fetchbower "paper-styles" "PolymerElements/paper-styles#2.1.0" "PolymerElements/paper-styles#1 - 2" "0xzsd7pvjsk7lgcmvx4q0dvps40q3mymkx26zgs8ns91s1ssfqbx")
18 (fetchbower "iron-a11y-announcer" "PolymerElements/iron-a11y-announcer#2.1.0" "PolymerElements/iron-a11y-announcer#1 - 2" "1hvmw76im8y3pxmg1yfnlkzap429q9i4v1z42y7m8lz0996jmxrz")
19 (fetchbower "iron-overlay-behavior" "PolymerElements/iron-overlay-behavior#2.3.4" "PolymerElements/iron-overlay-behavior#1 - 2" "0hk2fxhfz7kg27349qz1c87vq6nfdcnjr9az3q95ak3rigsb71wg")
20 (fetchbower "iron-fit-behavior" "PolymerElements/iron-fit-behavior#2.2.1" "PolymerElements/iron-fit-behavior#1 - 2" "0v89am4r2fncr7m9k0f2xqh5bvgn2dqjjc7p515ix4grk89whbs3")
21 (fetchbower "iron-checked-element-behavior" "PolymerElements/iron-checked-element-behavior#2.1.1" "PolymerElements/iron-checked-element-behavior#1 - 2" "00gpvnb7anspadw59av7lca6p03qlx59dgnhw3lqf5v223dsh0l3")
22 (fetchbower "iron-behaviors" "PolymerElements/iron-behaviors#2.1.1" "PolymerElements/iron-behaviors#1 - 2" "0c71l1il76jg8gvyh8bwlqraif53gfnz5700vpg35qyr1biwbr1w")
23 (fetchbower "iron-validatable-behavior" "PolymerElements/iron-validatable-behavior#2.1.0" "PolymerElements/iron-validatable-behavior#1 - 2" "1j65zv7hcxdcyyanzhp2wap3bnx7cz8ghd44m12fad2206jj6ysi")
24 (fetchbower "iron-a11y-keys-behavior" "PolymerElements/iron-a11y-keys-behavior#2.1.1" "PolymerElements/iron-a11y-keys-behavior#1 - 2" "0jsw7wvh4wzcjqdbvxyha99h1ph61lykyyyvdb6hm8m8w40bhs9b")
25 (fetchbower "paper-ripple" "PolymerElements/paper-ripple#2.1.1" "PolymerElements/paper-ripple#1 - 2" "0sam6w83nxf9mss79j6hjfsx0288pf4hwr1bw5xclzgpddcjmrm5")
26 (fetchbower "font-roboto" "PolymerElements/font-roboto#1.1.0" "PolymerElements/font-roboto#^1.0.1" "0z4msvaa5pnr84j2r957g313fmdbdbrknhdw1axy5g48845yv04s")
27 (fetchbower "iron-resizable-behavior" "PolymerElements/iron-resizable-behavior#2.1.1" "PolymerElements/iron-resizable-behavior#1 - 2" "0169rg6kby0ypfiwbkin46ywaszwj7r91yn081yqd96l1115aqnk")
28 (fetchbower "iron-form-element-behavior" "PolymerElements/iron-form-element-behavior#2.1.3" "PolymerElements/iron-form-element-behavior#1 - 2" "1c83kkfqvb5pdlvrhad3l7b11i244a8lykc8kzfnb9ya0xrln0cn")
29 (fetchbower "iron-meta" "PolymerElements/iron-meta#2.1.1" "PolymerElements/iron-meta#1 - 2" "12w1pcl3w97xpxihqddbf2d9dx8xz5i1jd9bz1xrmfsh25isni40")
33 30 ]; }
@@ -1,15 +1,17 b''
1 # This file has been generated by node2nix 1.0.0. Do not edit!
1 # This file has been generated by node2nix 1.6.0. Do not edit!
2 2
3 3 {pkgs ? import <nixpkgs> {
4 4 inherit system;
5 }, system ? builtins.currentSystem}:
5 }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-6_x"}:
6 6
7 7 let
8 8 nodeEnv = import ./node-env.nix {
9 inherit (pkgs) stdenv python utillinux runCommand writeTextFile nodejs;
9 inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
10 inherit nodejs;
11 libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
10 12 };
11 13 in
12 14 import ./node-packages.nix {
13 15 inherit (pkgs) fetchurl fetchgit;
14 16 inherit nodeEnv;
15 17 } No newline at end of file
This diff has been collapsed as it changes many lines, (518 lines changed) Show them Hide them
@@ -1,292 +1,542 b''
1 1 # This file originates from node2nix
2 2
3 {stdenv, python, nodejs, utillinux, runCommand, writeTextFile}:
3 {stdenv, nodejs, python2, utillinux, libtool, runCommand, writeTextFile}:
4 4
5 5 let
6 python = if nodejs ? python then nodejs.python else python2;
7
6 8 # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
7 9 tarWrapper = runCommand "tarWrapper" {} ''
8 10 mkdir -p $out/bin
9
11
10 12 cat > $out/bin/tar <<EOF
11 13 #! ${stdenv.shell} -e
12 14 $(type -p tar) "\$@" --warning=no-unknown-keyword
13 15 EOF
14
16
15 17 chmod +x $out/bin/tar
16 18 '';
17
19
18 20 # Function that generates a TGZ file from a NPM project
19 21 buildNodeSourceDist =
20 22 { name, version, src, ... }:
21
23
22 24 stdenv.mkDerivation {
23 25 name = "node-tarball-${name}-${version}";
24 26 inherit src;
25 27 buildInputs = [ nodejs ];
26 28 buildPhase = ''
27 29 export HOME=$TMPDIR
28 tgzFile=$(npm pack)
30 tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
29 31 '';
30 32 installPhase = ''
31 33 mkdir -p $out/tarballs
32 34 mv $tgzFile $out/tarballs
33 35 mkdir -p $out/nix-support
34 36 echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
35 37 '';
36 38 };
37 39
38 40 includeDependencies = {dependencies}:
39 41 stdenv.lib.optionalString (dependencies != [])
40 42 (stdenv.lib.concatMapStrings (dependency:
41 43 ''
42 44 # Bundle the dependencies of the package
43 45 mkdir -p node_modules
44 46 cd node_modules
45
47
46 48 # Only include dependencies if they don't exist. They may also be bundled in the package.
47 49 if [ ! -e "${dependency.name}" ]
48 50 then
49 51 ${composePackage dependency}
50 52 fi
51
53
52 54 cd ..
53 55 ''
54 56 ) dependencies);
55 57
56 58 # Recursively composes the dependencies of a package
57 59 composePackage = { name, packageName, src, dependencies ? [], ... }@args:
58 let
59 fixImpureDependencies = writeTextFile {
60 name = "fixDependencies.js";
61 text = ''
62 var fs = require('fs');
63 var url = require('url');
64
65 /*
66 * Replaces an impure version specification by *
67 */
68 function replaceImpureVersionSpec(versionSpec) {
69 var parsedUrl = url.parse(versionSpec);
70
71 if(versionSpec == "latest" || versionSpec == "unstable" ||
72 versionSpec.substr(0, 2) == ".." || dependency.substr(0, 2) == "./" || dependency.substr(0, 2) == "~/" || dependency.substr(0, 1) == '/')
73 return '*';
74 else if(parsedUrl.protocol == "git:" || parsedUrl.protocol == "git+ssh:" || parsedUrl.protocol == "git+http:" || parsedUrl.protocol == "git+https:" ||
75 parsedUrl.protocol == "http:" || parsedUrl.protocol == "https:")
76 return '*';
77 else
78 return versionSpec;
79 }
80
81 var packageObj = JSON.parse(fs.readFileSync('./package.json'));
82
83 /* Replace dependencies */
84 if(packageObj.dependencies !== undefined) {
85 for(var dependency in packageObj.dependencies) {
86 var versionSpec = packageObj.dependencies[dependency];
87 packageObj.dependencies[dependency] = replaceImpureVersionSpec(versionSpec);
88 }
89 }
90
91 /* Replace development dependencies */
92 if(packageObj.devDependencies !== undefined) {
93 for(var dependency in packageObj.devDependencies) {
94 var versionSpec = packageObj.devDependencies[dependency];
95 packageObj.devDependencies[dependency] = replaceImpureVersionSpec(versionSpec);
96 }
97 }
98
99 /* Replace optional dependencies */
100 if(packageObj.optionalDependencies !== undefined) {
101 for(var dependency in packageObj.optionalDependencies) {
102 var versionSpec = packageObj.optionalDependencies[dependency];
103 packageObj.optionalDependencies[dependency] = replaceImpureVersionSpec(versionSpec);
104 }
105 }
106
107 /* Write the fixed JSON file */
108 fs.writeFileSync("package.json", JSON.stringify(packageObj));
109 '';
110 };
111 in
112 60 ''
113 61 DIR=$(pwd)
114 62 cd $TMPDIR
115
63
116 64 unpackFile ${src}
117
65
118 66 # Make the base dir in which the target dependency resides first
119 67 mkdir -p "$(dirname "$DIR/${packageName}")"
120 68
121 69 if [ -f "${src}" ]
122 70 then
123 71 # Figure out what directory has been unpacked
124 packageDir=$(find . -type d -maxdepth 1 | tail -1)
125
72 packageDir="$(find . -maxdepth 1 -type d | tail -1)"
73
126 74 # Restore write permissions to make building work
75 find "$packageDir" -type d -print0 | xargs -0 chmod u+x
127 76 chmod -R u+w "$packageDir"
128
77
129 78 # Move the extracted tarball into the output folder
130 79 mv "$packageDir" "$DIR/${packageName}"
131 80 elif [ -d "${src}" ]
132 81 then
82 # Get a stripped name (without hash) of the source directory.
83 # On old nixpkgs it's already set internally.
84 if [ -z "$strippedName" ]
85 then
86 strippedName="$(stripHash ${src})"
87 fi
88
133 89 # Restore write permissions to make building work
134 chmod -R u+w $strippedName
135
136 # Move the extracted directory into the output folder
137 mv $strippedName "$DIR/${packageName}"
90 chmod -R u+w "$strippedName"
91
92 # Move the extracted directory into the output folder
93 mv "$strippedName" "$DIR/${packageName}"
138 94 fi
139
95
140 96 # Unset the stripped name to not confuse the next unpack step
141 97 unset strippedName
142
143 # Some version specifiers (latest, unstable, URLs, file paths) force NPM to make remote connections or consult paths outside the Nix store.
144 # The following JavaScript replaces these by * to prevent that
98
99 # Include the dependencies of the package
145 100 cd "$DIR/${packageName}"
146 node ${fixImpureDependencies}
147
148 # Include the dependencies of the package
149 101 ${includeDependencies { inherit dependencies; }}
150 102 cd ..
151 103 ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
152 104 '';
153 105
106 pinpointDependencies = {dependencies, production}:
107 let
108 pinpointDependenciesFromPackageJSON = writeTextFile {
109 name = "pinpointDependencies.js";
110 text = ''
111 var fs = require('fs');
112 var path = require('path');
113
114 function resolveDependencyVersion(location, name) {
115 if(location == process.env['NIX_STORE']) {
116 return null;
117 } else {
118 var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
119
120 if(fs.existsSync(dependencyPackageJSON)) {
121 var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
122
123 if(dependencyPackageObj.name == name) {
124 return dependencyPackageObj.version;
125 }
126 } else {
127 return resolveDependencyVersion(path.resolve(location, ".."), name);
128 }
129 }
130 }
131
132 function replaceDependencies(dependencies) {
133 if(typeof dependencies == "object" && dependencies !== null) {
134 for(var dependency in dependencies) {
135 var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
136
137 if(resolvedVersion === null) {
138 process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
139 } else {
140 dependencies[dependency] = resolvedVersion;
141 }
142 }
143 }
144 }
145
146 /* Read the package.json configuration */
147 var packageObj = JSON.parse(fs.readFileSync('./package.json'));
148
149 /* Pinpoint all dependencies */
150 replaceDependencies(packageObj.dependencies);
151 if(process.argv[2] == "development") {
152 replaceDependencies(packageObj.devDependencies);
153 }
154 replaceDependencies(packageObj.optionalDependencies);
155
156 /* Write the fixed package.json file */
157 fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
158 '';
159 };
160 in
161 ''
162 node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
163
164 ${stdenv.lib.optionalString (dependencies != [])
165 ''
166 if [ -d node_modules ]
167 then
168 cd node_modules
169 ${stdenv.lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
170 cd ..
171 fi
172 ''}
173 '';
174
175 # Recursively traverses all dependencies of a package and pinpoints all
176 # dependencies in the package.json file to the versions that are actually
177 # being used.
178
179 pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
180 ''
181 if [ -d "${packageName}" ]
182 then
183 cd "${packageName}"
184 ${pinpointDependencies { inherit dependencies production; }}
185 cd ..
186 ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
187 fi
188 '';
189
154 190 # Extract the Node.js source code which is used to compile packages with
155 191 # native bindings
156 192 nodeSources = runCommand "node-sources" {} ''
157 193 tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
158 194 mv node-* $out
159 195 '';
160
196
197 # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
198 addIntegrityFieldsScript = writeTextFile {
199 name = "addintegrityfields.js";
200 text = ''
201 var fs = require('fs');
202 var path = require('path');
203
204 function augmentDependencies(baseDir, dependencies) {
205 for(var dependencyName in dependencies) {
206 var dependency = dependencies[dependencyName];
207
208 // Open package.json and augment metadata fields
209 var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
210 var packageJSONPath = path.join(packageJSONDir, "package.json");
211
212 if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
213 console.log("Adding metadata fields to: "+packageJSONPath);
214 var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
215
216 if(dependency.integrity) {
217 packageObj["_integrity"] = dependency.integrity;
218 } else {
219 packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
220 }
221
222 packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
223 fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
224 }
225
226 // Augment transitive dependencies
227 if(dependency.dependencies !== undefined) {
228 augmentDependencies(packageJSONDir, dependency.dependencies);
229 }
230 }
231 }
232
233 if(fs.existsSync("./package-lock.json")) {
234 var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
235
236 if(packageLock.lockfileVersion !== 1) {
237 process.stderr.write("Sorry, I only understand lock file version 1!\n");
238 process.exit(1);
239 }
240
241 if(packageLock.dependencies !== undefined) {
242 augmentDependencies(".", packageLock.dependencies);
243 }
244 }
245 '';
246 };
247
248 # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
249 reconstructPackageLock = writeTextFile {
250 name = "addintegrityfields.js";
251 text = ''
252 var fs = require('fs');
253 var path = require('path');
254
255 var packageObj = JSON.parse(fs.readFileSync("package.json"));
256
257 var lockObj = {
258 name: packageObj.name,
259 version: packageObj.version,
260 lockfileVersion: 1,
261 requires: true,
262 dependencies: {}
263 };
264
265 function augmentPackageJSON(filePath, dependencies) {
266 var packageJSON = path.join(filePath, "package.json");
267 if(fs.existsSync(packageJSON)) {
268 var packageObj = JSON.parse(fs.readFileSync(packageJSON));
269 dependencies[packageObj.name] = {
270 version: packageObj.version,
271 integrity: "sha1-000000000000000000000000000=",
272 dependencies: {}
273 };
274 processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
275 }
276 }
277
278 function processDependencies(dir, dependencies) {
279 if(fs.existsSync(dir)) {
280 var files = fs.readdirSync(dir);
281
282 files.forEach(function(entry) {
283 var filePath = path.join(dir, entry);
284 var stats = fs.statSync(filePath);
285
286 if(stats.isDirectory()) {
287 if(entry.substr(0, 1) == "@") {
288 // When we encounter a namespace folder, augment all packages belonging to the scope
289 var pkgFiles = fs.readdirSync(filePath);
290
291 pkgFiles.forEach(function(entry) {
292 if(stats.isDirectory()) {
293 var pkgFilePath = path.join(filePath, entry);
294 augmentPackageJSON(pkgFilePath, dependencies);
295 }
296 });
297 } else {
298 augmentPackageJSON(filePath, dependencies);
299 }
300 }
301 });
302 }
303 }
304
305 processDependencies("node_modules", lockObj.dependencies);
306
307 fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
308 '';
309 };
310
161 311 # Builds and composes an NPM package including all its dependencies
162 buildNodePackage = { name, packageName, version, dependencies ? [], production ? true, npmFlags ? "", dontNpmInstall ? false, preRebuild ? "", ... }@args:
163
164 stdenv.lib.makeOverridable stdenv.mkDerivation (builtins.removeAttrs args [ "dependencies" ] // {
312 buildNodePackage =
313 { name
314 , packageName
315 , version
316 , dependencies ? []
317 , buildInputs ? []
318 , production ? true
319 , npmFlags ? ""
320 , dontNpmInstall ? false
321 , bypassCache ? false
322 , preRebuild ? ""
323 , dontStrip ? true
324 , unpackPhase ? "true"
325 , buildPhase ? "true"
326 , ... }@args:
327
328 let
329 forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
330 extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
331 in
332 stdenv.mkDerivation ({
165 333 name = "node-${name}-${version}";
166 buildInputs = [ tarWrapper python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ args.buildInputs or [];
167 dontStrip = args.dontStrip or true; # Striping may fail a build for some package deployments
168
169 inherit dontNpmInstall preRebuild;
170
171 unpackPhase = args.unpackPhase or "true";
172
173 buildPhase = args.buildPhase or "true";
174
334 buildInputs = [ tarWrapper python nodejs ]
335 ++ stdenv.lib.optional (stdenv.isLinux) utillinux
336 ++ stdenv.lib.optional (stdenv.isDarwin) libtool
337 ++ buildInputs;
338
339 inherit dontStrip; # Stripping may fail a build for some package deployments
340 inherit dontNpmInstall preRebuild unpackPhase buildPhase;
341
175 342 compositionScript = composePackage args;
176 passAsFile = [ "compositionScript" ];
177
178 installPhase = args.installPhase or ''
343 pinpointDependenciesScript = pinpointDependenciesOfPackage args;
344
345 passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
346
347 installPhase = ''
179 348 # Create and enter a root node_modules/ folder
180 349 mkdir -p $out/lib/node_modules
181 350 cd $out/lib/node_modules
182
351
183 352 # Compose the package and all its dependencies
184 353 source $compositionScriptPath
185
354
355 # Pinpoint the versions of all dependencies to the ones that are actually being used
356 echo "pinpointing versions of dependencies..."
357 source $pinpointDependenciesScriptPath
358
186 359 # Patch the shebangs of the bundled modules to prevent them from
187 360 # calling executables outside the Nix store as much as possible
188 361 patchShebangs .
189
362
190 363 # Deploy the Node.js package by running npm install. Since the
191 364 # dependencies have been provided already by ourselves, it should not
192 365 # attempt to install them again, which is good, because we want to make
193 366 # it Nix's responsibility. If it needs to install any dependencies
194 367 # anyway (e.g. because the dependency parameters are
195 368 # incomplete/incorrect), it fails.
196 369 #
197 370 # The other responsibilities of NPM are kept -- version checks, build
198 371 # steps, postprocessing etc.
199
372
200 373 export HOME=$TMPDIR
201 374 cd "${packageName}"
202 375 runHook preRebuild
203 npm --registry http://www.example.com --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
204
376
377 ${stdenv.lib.optionalString bypassCache ''
378 if [ ! -f package-lock.json ]
379 then
380 echo "No package-lock.json file found, reconstructing..."
381 node ${reconstructPackageLock}
382 fi
383
384 node ${addIntegrityFieldsScript}
385 ''}
386
387 npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
388
205 389 if [ "$dontNpmInstall" != "1" ]
206 390 then
207 npm --registry http://www.example.com --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
391 # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
392 rm -f npm-shrinkwrap.json
393
394 npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
208 395 fi
209
396
210 397 # Create symlink to the deployed executable folder, if applicable
211 398 if [ -d "$out/lib/node_modules/.bin" ]
212 399 then
213 400 ln -s $out/lib/node_modules/.bin $out/bin
214 401 fi
215
402
216 403 # Create symlinks to the deployed manual page folders, if applicable
217 404 if [ -d "$out/lib/node_modules/${packageName}/man" ]
218 405 then
219 406 mkdir -p $out/share
220 407 for dir in "$out/lib/node_modules/${packageName}/man/"*
221 408 do
222 409 mkdir -p $out/share/man/$(basename "$dir")
223 410 for page in "$dir"/*
224 411 do
225 412 ln -s $page $out/share/man/$(basename "$dir")
226 413 done
227 414 done
228 415 fi
416
417 # Run post install hook, if provided
418 runHook postInstall
229 419 '';
230 });
420 } // extraArgs);
231 421
232 422 # Builds a development shell
233 buildNodeShell = { name, packageName, version, src, dependencies ? [], production ? true, npmFlags ? "", dontNpmInstall ? false, ... }@args:
423 buildNodeShell =
424 { name
425 , packageName
426 , version
427 , src
428 , dependencies ? []
429 , buildInputs ? []
430 , production ? true
431 , npmFlags ? ""
432 , dontNpmInstall ? false
433 , bypassCache ? false
434 , dontStrip ? true
435 , unpackPhase ? "true"
436 , buildPhase ? "true"
437 , ... }@args:
438
234 439 let
235 nodeDependencies = stdenv.mkDerivation {
440 forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
441
442 extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
443
444 nodeDependencies = stdenv.mkDerivation ({
236 445 name = "node-dependencies-${name}-${version}";
237
238 buildInputs = [ tarWrapper python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ args.buildInputs or [];
239
446
447 buildInputs = [ tarWrapper python nodejs ]
448 ++ stdenv.lib.optional (stdenv.isLinux) utillinux
449 ++ stdenv.lib.optional (stdenv.isDarwin) libtool
450 ++ buildInputs;
451
452 inherit dontStrip; # Stripping may fail a build for some package deployments
453 inherit dontNpmInstall unpackPhase buildPhase;
454
240 455 includeScript = includeDependencies { inherit dependencies; };
241 passAsFile = [ "includeScript" ];
242
243 buildCommand = ''
244 mkdir -p $out/lib
245 cd $out/lib
456 pinpointDependenciesScript = pinpointDependenciesOfPackage args;
457
458 passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
459
460 installPhase = ''
461 mkdir -p $out/${packageName}
462 cd $out/${packageName}
463
246 464 source $includeScriptPath
247
465
248 466 # Create fake package.json to make the npm commands work properly
249 cat > package.json <<EOF
250 {
251 "name": "${packageName}",
252 "version": "${version}"
253 }
254 EOF
255
467 cp ${src}/package.json .
468 chmod 644 package.json
469 ${stdenv.lib.optionalString bypassCache ''
470 if [ -f ${src}/package-lock.json ]
471 then
472 cp ${src}/package-lock.json .
473 fi
474 ''}
475
476 # Pinpoint the versions of all dependencies to the ones that are actually being used
477 echo "pinpointing versions of dependencies..."
478 cd ..
479 ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
480
481 source $pinpointDependenciesScriptPath
482 cd ${packageName}
483
256 484 # Patch the shebangs of the bundled modules to prevent them from
257 485 # calling executables outside the Nix store as much as possible
258 486 patchShebangs .
259
260 export HOME=$TMPDIR
261 npm --registry http://www.example.com --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
262
263 ${stdenv.lib.optionalString (!dontNpmInstall) ''
264 npm --registry http://www.example.com --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
487
488 export HOME=$PWD
489
490 ${stdenv.lib.optionalString bypassCache ''
491 if [ ! -f package-lock.json ]
492 then
493 echo "No package-lock.json file found, reconstructing..."
494 node ${reconstructPackageLock}
495 fi
496
497 node ${addIntegrityFieldsScript}
265 498 ''}
266 499
500 npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
501
502 ${stdenv.lib.optionalString (!dontNpmInstall) ''
503 # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
504 rm -f npm-shrinkwrap.json
505
506 npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
507 ''}
508
509 cd ..
510 ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
511
512 mv ${packageName} lib
267 513 ln -s $out/lib/node_modules/.bin $out/bin
268 514 '';
269 };
515 } // extraArgs);
270 516 in
271 stdenv.lib.makeOverridable stdenv.mkDerivation {
517 stdenv.mkDerivation {
272 518 name = "node-shell-${name}-${version}";
273
274 buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ args.buildInputs or [];
519
520 buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
275 521 buildCommand = ''
276 522 mkdir -p $out/bin
277 523 cat > $out/bin/shell <<EOF
278 524 #! ${stdenv.shell} -e
279 525 $shellHook
280 526 exec ${stdenv.shell}
281 527 EOF
282 528 chmod +x $out/bin/shell
283 529 '';
284
530
285 531 # Provide the dependencies in a development shell through the NODE_PATH environment variable
286 532 inherit nodeDependencies;
287 533 shellHook = stdenv.lib.optionalString (dependencies != []) ''
288 534 export NODE_PATH=$nodeDependencies/lib/node_modules
289 535 '';
290 536 };
291 537 in
292 { inherit buildNodeSourceDist buildNodePackage buildNodeShell; }
538 {
539 buildNodeSourceDist = stdenv.lib.makeOverridable buildNodeSourceDist;
540 buildNodePackage = stdenv.lib.makeOverridable buildNodePackage;
541 buildNodeShell = stdenv.lib.makeOverridable buildNodeShell;
542 }
This diff has been collapsed as it changes many lines, (5680 lines changed) Show them Hide them
@@ -1,3022 +1,3386 b''
1 # This file has been generated by node2nix 1.0.0. Do not edit!
1 # This file has been generated by node2nix 1.6.0. Do not edit!
2 2
3 {nodeEnv, fetchurl, fetchgit}:
3 {nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4 4
5 5 let
6 6 sources = {
7 "@types/clone-0.1.30" = {
8 name = "_at_types_slash_clone";
9 packageName = "@types/clone";
10 version = "0.1.30";
11 src = fetchurl {
12 url = "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz";
13 sha1 = "e7365648c1b42136a59c7d5040637b3b5c83b614";
14 };
15 };
16 "@types/node-4.2.23" = {
17 name = "_at_types_slash_node";
18 packageName = "@types/node";
19 version = "4.2.23";
20 src = fetchurl {
21 url = "https://registry.npmjs.org/@types/node/-/node-4.2.23.tgz";
22 sha512 = "U6IchCNLRyswc9p6G6lxWlbE+KwAhZp6mGo6MD2yWpmFomhYmetK+c98OpKyvphNn04CU3aXeJrXdOqbXVTS/w==";
23 };
24 };
25 "@types/node-6.0.114" = {
26 name = "_at_types_slash_node";
27 packageName = "@types/node";
28 version = "6.0.114";
29 src = fetchurl {
30 url = "https://registry.npmjs.org/@types/node/-/node-6.0.114.tgz";
31 sha512 = "5ViC9dwf1VIAtrOFTvOuN04lJgw28eKjuy0Vg2Bd/fSlxKP2feCSkIw04ZgOENL2ywdWrtbkthp1XVLEjJmouw==";
32 };
33 };
34 "@types/parse5-0.0.31" = {
35 name = "_at_types_slash_parse5";
36 packageName = "@types/parse5";
37 version = "0.0.31";
38 src = fetchurl {
39 url = "https://registry.npmjs.org/@types/parse5/-/parse5-0.0.31.tgz";
40 sha1 = "e827a493a443b156e1b582a2e4c3bdc0040f2ee7";
41 };
42 };
43 "abbrev-1.1.1" = {
44 name = "abbrev";
45 packageName = "abbrev";
46 version = "1.1.1";
47 src = fetchurl {
48 url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
49 sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
50 };
51 };
52 "acorn-3.3.0" = {
53 name = "acorn";
54 packageName = "acorn";
55 version = "3.3.0";
56 src = fetchurl {
57 url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz";
58 sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
59 };
60 };
61 "acorn-5.7.1" = {
62 name = "acorn";
63 packageName = "acorn";
64 version = "5.7.1";
65 src = fetchurl {
66 url = "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz";
67 sha512 = "d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==";
68 };
69 };
70 "acorn-jsx-3.0.1" = {
71 name = "acorn-jsx";
72 packageName = "acorn-jsx";
73 version = "3.0.1";
74 src = fetchurl {
75 url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz";
76 sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b";
77 };
78 };
79 "ajv-4.11.8" = {
80 name = "ajv";
81 packageName = "ajv";
82 version = "4.11.8";
83 src = fetchurl {
84 url = "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz";
85 sha1 = "82ffb02b29e662ae53bdc20af15947706739c536";
86 };
87 };
88 "amdefine-1.0.1" = {
89 name = "amdefine";
90 packageName = "amdefine";
91 version = "1.0.1";
92 src = fetchurl {
93 url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz";
94 sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
95 };
96 };
97 "ansi-escape-sequences-3.0.0" = {
98 name = "ansi-escape-sequences";
99 packageName = "ansi-escape-sequences";
100 version = "3.0.0";
101 src = fetchurl {
102 url = "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz";
103 sha1 = "1c18394b6af9b76ff9a63509fa497669fd2ce53e";
104 };
105 };
106 "ansi-regex-0.2.1" = {
107 name = "ansi-regex";
108 packageName = "ansi-regex";
109 version = "0.2.1";
110 src = fetchurl {
111 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz";
112 sha1 = "0d8e946967a3d8143f93e24e298525fc1b2235f9";
113 };
114 };
115 "ansi-regex-2.1.1" = {
116 name = "ansi-regex";
117 packageName = "ansi-regex";
118 version = "2.1.1";
119 src = fetchurl {
120 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
121 sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
122 };
123 };
124 "ansi-styles-1.1.0" = {
125 name = "ansi-styles";
126 packageName = "ansi-styles";
127 version = "1.1.0";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz";
130 sha1 = "eaecbf66cd706882760b2f4691582b8f55d7a7de";
131 };
132 };
133 "ansi-styles-2.2.1" = {
134 name = "ansi-styles";
135 packageName = "ansi-styles";
136 version = "2.2.1";
137 src = fetchurl {
138 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
139 sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
140 };
141 };
142 "appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" = {
143 name = "appenlight-client";
144 packageName = "appenlight-client";
145 version = "0.5.1";
146 src = fetchgit {
147 url = "https://git@github.com/AppEnlight/appenlight-client-js.git";
148 rev = "14712c64c230fbbe94fcbc8094aef5eb3b90b307";
149 sha256 = "05146f5b932f166c9a4db601bc9c13ae686899653d1dd03121652631f9bc83d6";
150 };
151 };
152 "aproba-1.2.0" = {
153 name = "aproba";
154 packageName = "aproba";
155 version = "1.2.0";
156 src = fetchurl {
157 url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
158 sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==";
159 };
160 };
161 "are-we-there-yet-1.1.5" = {
162 name = "are-we-there-yet";
163 packageName = "are-we-there-yet";
164 version = "1.1.5";
165 src = fetchurl {
166 url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
167 sha512 = "5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==";
168 };
169 };
170 "argparse-0.1.16" = {
171 name = "argparse";
172 packageName = "argparse";
173 version = "0.1.16";
174 src = fetchurl {
175 url = "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz";
176 sha1 = "cfd01e0fbba3d6caed049fbd758d40f65196f57c";
177 };
178 };
179 "array-back-1.0.4" = {
180 name = "array-back";
181 packageName = "array-back";
182 version = "1.0.4";
183 src = fetchurl {
184 url = "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz";
185 sha1 = "644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b";
186 };
187 };
188 "asap-2.0.6" = {
189 name = "asap";
190 packageName = "asap";
191 version = "2.0.6";
192 src = fetchurl {
193 url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz";
194 sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
195 };
196 };
197 "asn1-0.2.3" = {
198 name = "asn1";
199 packageName = "asn1";
200 version = "0.2.3";
201 src = fetchurl {
202 url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
203 sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
204 };
205 };
206 "assert-plus-0.2.0" = {
207 name = "assert-plus";
208 packageName = "assert-plus";
209 version = "0.2.0";
210 src = fetchurl {
211 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz";
212 sha1 = "d74e1b87e7affc0db8aadb7021f3fe48101ab234";
213 };
214 };
215 "assert-plus-1.0.0" = {
216 name = "assert-plus";
217 packageName = "assert-plus";
218 version = "1.0.0";
219 src = fetchurl {
220 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
221 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
222 };
223 };
224 "async-0.1.22" = {
225 name = "async";
226 packageName = "async";
227 version = "0.1.22";
228 src = fetchurl {
229 url = "https://registry.npmjs.org/async/-/async-0.1.22.tgz";
230 sha1 = "0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061";
231 };
232 };
233 "async-0.2.10" = {
234 name = "async";
235 packageName = "async";
236 version = "0.2.10";
237 src = fetchurl {
238 url = "https://registry.npmjs.org/async/-/async-0.2.10.tgz";
239 sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
240 };
241 };
242 "async-1.0.0" = {
243 name = "async";
244 packageName = "async";
245 version = "1.0.0";
246 src = fetchurl {
247 url = "https://registry.npmjs.org/async/-/async-1.0.0.tgz";
248 sha1 = "f8fc04ca3a13784ade9e1641af98578cfbd647a9";
249 };
250 };
251 "async-2.6.1" = {
252 name = "async";
253 packageName = "async";
254 version = "2.6.1";
255 src = fetchurl {
256 url = "https://registry.npmjs.org/async/-/async-2.6.1.tgz";
257 sha512 = "fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==";
258 };
259 };
260 "asynckit-0.4.0" = {
261 name = "asynckit";
262 packageName = "asynckit";
263 version = "0.4.0";
264 src = fetchurl {
265 url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
266 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
267 };
268 };
269 "aws-sign2-0.6.0" = {
270 name = "aws-sign2";
271 packageName = "aws-sign2";
272 version = "0.6.0";
273 src = fetchurl {
274 url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz";
275 sha1 = "14342dd38dbcc94d0e5b87d763cd63612c0e794f";
276 };
277 };
278 "aws4-1.7.0" = {
279 name = "aws4";
280 packageName = "aws4";
281 version = "1.7.0";
282 src = fetchurl {
283 url = "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz";
284 sha512 = "32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==";
285 };
286 };
287 "babel-polyfill-6.26.0" = {
288 name = "babel-polyfill";
289 packageName = "babel-polyfill";
290 version = "6.26.0";
291 src = fetchurl {
292 url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz";
293 sha1 = "379937abc67d7895970adc621f284cd966cf2153";
294 };
295 };
296 "babel-runtime-6.26.0" = {
297 name = "babel-runtime";
298 packageName = "babel-runtime";
299 version = "6.26.0";
300 src = fetchurl {
301 url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz";
302 sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
303 };
304 };
305 "balanced-match-1.0.0" = {
306 name = "balanced-match";
307 packageName = "balanced-match";
308 version = "1.0.0";
309 src = fetchurl {
310 url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
311 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
312 };
313 };
314 "base64-js-1.2.3" = {
315 name = "base64-js";
316 packageName = "base64-js";
317 version = "1.2.3";
318 src = fetchurl {
319 url = "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz";
320 sha512 = "MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==";
321 };
322 };
323 "bcrypt-pbkdf-1.0.2" = {
324 name = "bcrypt-pbkdf";
325 packageName = "bcrypt-pbkdf";
326 version = "1.0.2";
327 src = fetchurl {
328 url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
329 sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
330 };
331 };
332 "boom-2.10.1" = {
333 name = "boom";
334 packageName = "boom";
335 version = "2.10.1";
336 src = fetchurl {
337 url = "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz";
338 sha1 = "39c8918ceff5799f83f9492a848f625add0c766f";
339 };
340 };
341 "bower-1.8.4" = {
342 name = "bower";
343 packageName = "bower";
344 version = "1.8.4";
345 src = fetchurl {
346 url = "https://registry.npmjs.org/bower/-/bower-1.8.4.tgz";
347 sha1 = "e7876a076deb8137f7d06525dc5e8c66db82f28a";
348 };
349 };
350 "brace-expansion-1.1.11" = {
351 name = "brace-expansion";
352 packageName = "brace-expansion";
353 version = "1.1.11";
354 src = fetchurl {
355 url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
356 sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
357 };
358 };
359 "buffer-from-1.1.1" = {
360 name = "buffer-from";
361 packageName = "buffer-from";
362 version = "1.1.1";
363 src = fetchurl {
364 url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz";
365 sha512 = "MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==";
366 };
367 };
368 "builtin-modules-1.1.1" = {
369 name = "builtin-modules";
370 packageName = "builtin-modules";
371 version = "1.1.1";
372 src = fetchurl {
373 url = "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz";
374 sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
375 };
376 };
377 "builtins-1.0.3" = {
378 name = "builtins";
379 packageName = "builtins";
380 version = "1.0.3";
381 src = fetchurl {
382 url = "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz";
383 sha1 = "cb94faeb61c8696451db36534e1422f94f0aee88";
384 };
385 };
386 "caseless-0.12.0" = {
387 name = "caseless";
388 packageName = "caseless";
389 version = "0.12.0";
390 src = fetchurl {
391 url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
392 sha1 = "1b681c21ff84033c826543090689420d187151dc";
393 };
394 };
395 "chalk-0.5.1" = {
396 name = "chalk";
397 packageName = "chalk";
398 version = "0.5.1";
399 src = fetchurl {
400 url = "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz";
401 sha1 = "663b3a648b68b55d04690d49167aa837858f2174";
402 };
403 };
404 "chalk-1.1.3" = {
405 name = "chalk";
406 packageName = "chalk";
407 version = "1.1.3";
408 src = fetchurl {
409 url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
410 sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
411 };
412 };
413 "cli-1.0.1" = {
414 name = "cli";
415 packageName = "cli";
416 version = "1.0.1";
417 src = fetchurl {
418 url = "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz";
419 sha1 = "22817534f24bfa4950c34d532d48ecbc621b8c14";
420 };
421 };
422 "clipboard-2.0.1" = {
423 name = "clipboard";
424 packageName = "clipboard";
425 version = "2.0.1";
426 src = fetchurl {
427 url = "https://registry.npmjs.org/clipboard/-/clipboard-2.0.1.tgz";
428 sha512 = "7yhQBmtN+uYZmfRjjVjKa0dZdWuabzpSKGtyQZN+9C8xlC788SSJjOHWh7tzurfwTqTD5UDYAhIv5fRJg3sHjQ==";
429 };
430 };
431 "clone-1.0.4" = {
432 name = "clone";
433 packageName = "clone";
434 version = "1.0.4";
435 src = fetchurl {
436 url = "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz";
437 sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e";
438 };
439 };
440 "co-4.6.0" = {
441 name = "co";
442 packageName = "co";
443 version = "4.6.0";
444 src = fetchurl {
445 url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz";
446 sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
447 };
448 };
449 "code-point-at-1.1.0" = {
450 name = "code-point-at";
451 packageName = "code-point-at";
452 version = "1.1.0";
453 src = fetchurl {
454 url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
455 sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
456 };
457 };
458 "coffee-script-1.3.3" = {
459 name = "coffee-script";
460 packageName = "coffee-script";
461 version = "1.3.3";
462 src = fetchurl {
463 url = "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz";
464 sha1 = "150d6b4cb522894369efed6a2101c20bc7f4a4f4";
465 };
466 };
467 "colors-0.6.2" = {
468 name = "colors";
469 packageName = "colors";
470 version = "0.6.2";
471 src = fetchurl {
472 url = "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz";
473 sha1 = "2423fe6678ac0c5dae8852e5d0e5be08c997abcc";
474 };
475 };
476 "colors-1.0.3" = {
477 name = "colors";
478 packageName = "colors";
479 version = "1.0.3";
480 src = fetchurl {
481 url = "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz";
482 sha1 = "0433f44d809680fdeb60ed260f1b0c262e82a40b";
483 };
484 };
485 "combined-stream-1.0.6" = {
486 name = "combined-stream";
487 packageName = "combined-stream";
488 version = "1.0.6";
489 src = fetchurl {
490 url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz";
491 sha1 = "723e7df6e801ac5613113a7e445a9b69cb632818";
492 };
493 };
494 "command-line-args-3.0.5" = {
495 name = "command-line-args";
496 packageName = "command-line-args";
497 version = "3.0.5";
498 src = fetchurl {
499 url = "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz";
500 sha1 = "5bd4ad45e7983e5c1344918e40280ee2693c5ac0";
501 };
502 };
503 "command-line-usage-3.0.8" = {
504 name = "command-line-usage";
505 packageName = "command-line-usage";
506 version = "3.0.8";
507 src = fetchurl {
508 url = "https://registry.npmjs.org/command-line-usage/-/command-line-usage-3.0.8.tgz";
509 sha1 = "b6a20978c1b383477f5c11a529428b880bfe0f4d";
510 };
511 };
512 "concat-map-0.0.1" = {
513 name = "concat-map";
514 packageName = "concat-map";
515 version = "0.0.1";
516 src = fetchurl {
517 url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
518 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
519 };
520 };
521 "concat-stream-1.6.2" = {
522 name = "concat-stream";
523 packageName = "concat-stream";
524 version = "1.6.2";
525 src = fetchurl {
526 url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz";
527 sha512 = "27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==";
528 };
529 };
530 "config-chain-1.1.11" = {
531 name = "config-chain";
532 packageName = "config-chain";
533 version = "1.1.11";
534 src = fetchurl {
535 url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz";
536 sha1 = "aba09747dfbe4c3e70e766a6e41586e1859fc6f2";
537 };
538 };
539 "console-browserify-1.1.0" = {
540 name = "console-browserify";
541 packageName = "console-browserify";
542 version = "1.1.0";
543 src = fetchurl {
544 url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz";
545 sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10";
546 };
547 };
548 "console-control-strings-1.1.0" = {
549 name = "console-control-strings";
550 packageName = "console-control-strings";
551 version = "1.1.0";
552 src = fetchurl {
553 url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz";
554 sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
555 };
556 };
557 "core-js-2.5.7" = {
558 name = "core-js";
559 packageName = "core-js";
560 version = "2.5.7";
561 src = fetchurl {
562 url = "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz";
563 sha512 = "RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==";
564 };
565 };
566 "core-util-is-1.0.2" = {
567 name = "core-util-is";
568 packageName = "core-util-is";
569 version = "1.0.2";
570 src = fetchurl {
571 url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
572 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
573 };
574 };
575 "crisper-1.2.0" = {
576 name = "crisper";
577 packageName = "crisper";
578 version = "1.2.0";
579 src = fetchurl {
580 url = "https://registry.npmjs.org/crisper/-/crisper-1.2.0.tgz";
581 sha1 = "9a91f597d71f6110294e076ad44dbb3408568e46";
582 };
583 };
584 "crisper-2.1.1" = {
585 name = "crisper";
586 packageName = "crisper";
587 version = "2.1.1";
588 src = fetchurl {
589 url = "https://registry.npmjs.org/crisper/-/crisper-2.1.1.tgz";
590 sha512 = "yxfj9nTbFunDASztAxVF8hCPwaZBvTjayNzG3YL/VVQfQaKBXX2+TM3p1xB1Pxd8RYeDQJkJIQRwM3FQSIa+pw==";
591 };
592 };
593 "cryptiles-2.0.5" = {
594 name = "cryptiles";
595 packageName = "cryptiles";
596 version = "2.0.5";
597 src = fetchurl {
598 url = "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz";
599 sha1 = "3bdfecdc608147c1c67202fa291e7dca59eaa3b8";
600 };
601 };
602 "cycle-1.0.3" = {
603 name = "cycle";
604 packageName = "cycle";
605 version = "1.0.3";
606 src = fetchurl {
607 url = "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz";
608 sha1 = "21e80b2be8580f98b468f379430662b046c34ad2";
609 };
610 };
611 "dashdash-1.14.1" = {
612 name = "dashdash";
613 packageName = "dashdash";
614 version = "1.14.1";
615 src = fetchurl {
616 url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
617 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
618 };
619 };
620 "date-now-0.1.4" = {
621 name = "date-now";
622 packageName = "date-now";
623 version = "0.1.4";
624 src = fetchurl {
625 url = "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz";
626 sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b";
627 };
628 };
629 "dateformat-1.0.2-1.2.3" = {
630 name = "dateformat";
631 packageName = "dateformat";
632 version = "1.0.2-1.2.3";
633 src = fetchurl {
634 url = "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz";
635 sha1 = "b0220c02de98617433b72851cf47de3df2cdbee9";
636 };
637 };
638 "debug-0.7.4" = {
639 name = "debug";
640 packageName = "debug";
641 version = "0.7.4";
642 src = fetchurl {
643 url = "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz";
644 sha1 = "06e1ea8082c2cb14e39806e22e2f6f757f92af39";
645 };
646 };
647 "debug-2.6.9" = {
648 name = "debug";
649 packageName = "debug";
650 version = "2.6.9";
651 src = fetchurl {
652 url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
653 sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
654 };
655 };
656 "deep-extend-0.4.2" = {
657 name = "deep-extend";
658 packageName = "deep-extend";
659 version = "0.4.2";
660 src = fetchurl {
661 url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz";
662 sha1 = "48b699c27e334bf89f10892be432f6e4c7d34a7f";
663 };
664 };
665 "deep-is-0.1.3" = {
666 name = "deep-is";
667 packageName = "deep-is";
668 version = "0.1.3";
669 src = fetchurl {
670 url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
671 sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
672 };
673 };
674 "delayed-stream-1.0.0" = {
675 name = "delayed-stream";
676 packageName = "delayed-stream";
677 version = "1.0.0";
678 src = fetchurl {
679 url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
680 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
681 };
682 };
683 "delegate-3.2.0" = {
684 name = "delegate";
685 packageName = "delegate";
686 version = "3.2.0";
687 src = fetchurl {
688 url = "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz";
689 sha512 = "IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==";
690 };
691 };
692 "delegates-1.0.0" = {
693 name = "delegates";
694 packageName = "delegates";
695 version = "1.0.0";
696 src = fetchurl {
697 url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
698 sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
699 };
700 };
701 "doctrine-0.7.2" = {
702 name = "doctrine";
703 packageName = "doctrine";
704 version = "0.7.2";
705 src = fetchurl {
706 url = "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz";
707 sha1 = "7cb860359ba3be90e040b26b729ce4bfa654c523";
708 };
709 };
710 "dom-serializer-0.1.0" = {
711 name = "dom-serializer";
712 packageName = "dom-serializer";
713 version = "0.1.0";
714 src = fetchurl {
715 url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz";
716 sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82";
717 };
718 };
719 "dom5-1.1.0" = {
720 name = "dom5";
721 packageName = "dom5";
722 version = "1.1.0";
723 src = fetchurl {
724 url = "https://registry.npmjs.org/dom5/-/dom5-1.1.0.tgz";
725 sha1 = "3a0c7700c083ab4c4d26938a78b0f0c6dcc37794";
726 };
727 };
728 "dom5-1.3.6" = {
729 name = "dom5";
730 packageName = "dom5";
731 version = "1.3.6";
732 src = fetchurl {
733 url = "https://registry.npmjs.org/dom5/-/dom5-1.3.6.tgz";
734 sha1 = "a7088a9fc5f3b08dc9f6eda4c7abaeb241945e0d";
735 };
736 };
737 "domelementtype-1.1.3" = {
738 name = "domelementtype";
739 packageName = "domelementtype";
740 version = "1.1.3";
741 src = fetchurl {
742 url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz";
743 sha1 = "bd28773e2642881aec51544924299c5cd822185b";
744 };
745 };
746 "domelementtype-1.3.0" = {
747 name = "domelementtype";
748 packageName = "domelementtype";
749 version = "1.3.0";
750 src = fetchurl {
751 url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz";
752 sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2";
753 };
754 };
755 "domhandler-2.3.0" = {
756 name = "domhandler";
757 packageName = "domhandler";
758 version = "2.3.0";
759 src = fetchurl {
760 url = "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz";
761 sha1 = "2de59a0822d5027fabff6f032c2b25a2a8abe738";
762 };
763 };
764 "domutils-1.5.1" = {
765 name = "domutils";
766 packageName = "domutils";
767 version = "1.5.1";
768 src = fetchurl {
769 url = "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz";
770 sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
771 };
772 };
773 "ecc-jsbn-0.1.2" = {
774 name = "ecc-jsbn";
775 packageName = "ecc-jsbn";
776 version = "0.1.2";
777 src = fetchurl {
778 url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
779 sha1 = "3a83a904e54353287874c564b7549386849a98c9";
780 };
781 };
782 "entities-1.0.0" = {
783 name = "entities";
784 packageName = "entities";
785 version = "1.0.0";
786 src = fetchurl {
787 url = "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz";
788 sha1 = "b2987aa3821347fcde642b24fdfc9e4fb712bf26";
789 };
790 };
791 "entities-1.1.1" = {
792 name = "entities";
793 packageName = "entities";
794 version = "1.1.1";
795 src = fetchurl {
796 url = "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz";
797 sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0";
798 };
799 };
800 "errno-0.1.7" = {
801 name = "errno";
802 packageName = "errno";
803 version = "0.1.7";
804 src = fetchurl {
805 url = "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz";
806 sha512 = "MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==";
807 };
808 };
809 "es6-promise-2.3.0" = {
810 name = "es6-promise";
811 packageName = "es6-promise";
812 version = "2.3.0";
813 src = fetchurl {
814 url = "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz";
815 sha1 = "96edb9f2fdb01995822b263dd8aadab6748181bc";
816 };
817 };
818 "es6-promise-4.2.4" = {
819 name = "es6-promise";
820 packageName = "es6-promise";
821 version = "4.2.4";
822 src = fetchurl {
823 url = "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz";
824 sha512 = "/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==";
825 };
826 };
827 "escape-string-regexp-1.0.5" = {
828 name = "escape-string-regexp";
829 packageName = "escape-string-regexp";
830 version = "1.0.5";
831 src = fetchurl {
832 url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
833 sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
834 };
835 };
836 "escodegen-1.11.0" = {
837 name = "escodegen";
838 packageName = "escodegen";
839 version = "1.11.0";
840 src = fetchurl {
841 url = "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz";
842 sha512 = "IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==";
843 };
844 };
845 "espree-3.5.4" = {
846 name = "espree";
847 packageName = "espree";
848 version = "3.5.4";
849 src = fetchurl {
850 url = "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz";
851 sha512 = "yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==";
852 };
853 };
854 "esprima-1.0.4" = {
855 name = "esprima";
856 packageName = "esprima";
857 version = "1.0.4";
858 src = fetchurl {
859 url = "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz";
860 sha1 = "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad";
861 };
862 };
863 "esprima-3.1.3" = {
864 name = "esprima";
865 packageName = "esprima";
866 version = "3.1.3";
867 src = fetchurl {
868 url = "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz";
869 sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633";
870 };
871 };
872 "estraverse-3.1.0" = {
873 name = "estraverse";
874 packageName = "estraverse";
875 version = "3.1.0";
876 src = fetchurl {
877 url = "https://registry.npmjs.org/estraverse/-/estraverse-3.1.0.tgz";
878 sha1 = "15e28a446b8b82bc700ccc8b96c78af4da0d6cba";
879 };
880 };
881 "estraverse-4.2.0" = {
882 name = "estraverse";
883 packageName = "estraverse";
884 version = "4.2.0";
885 src = fetchurl {
886 url = "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz";
887 sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
888 };
889 };
890 "esutils-1.1.6" = {
891 name = "esutils";
892 packageName = "esutils";
893 version = "1.1.6";
894 src = fetchurl {
895 url = "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz";
896 sha1 = "c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375";
897 };
898 };
899 "esutils-2.0.2" = {
900 name = "esutils";
901 packageName = "esutils";
902 version = "2.0.2";
903 src = fetchurl {
904 url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz";
905 sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
906 };
907 };
908 "eventemitter2-0.4.14" = {
909 name = "eventemitter2";
910 packageName = "eventemitter2";
911 version = "0.4.14";
912 src = fetchurl {
913 url = "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz";
914 sha1 = "8f61b75cde012b2e9eb284d4545583b5643b61ab";
915 };
916 };
917 "exit-0.1.2" = {
918 name = "exit";
919 packageName = "exit";
920 version = "0.1.2";
921 src = fetchurl {
922 url = "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz";
923 sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c";
924 };
925 };
926 "extend-3.0.2" = {
927 name = "extend";
928 packageName = "extend";
929 version = "3.0.2";
930 src = fetchurl {
931 url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
932 sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
933 };
934 };
935 "extract-zip-1.6.7" = {
936 name = "extract-zip";
937 packageName = "extract-zip";
938 version = "1.6.7";
939 src = fetchurl {
940 url = "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz";
941 sha1 = "a840b4b8af6403264c8db57f4f1a74333ef81fe9";
942 };
943 };
944 "extsprintf-1.3.0" = {
945 name = "extsprintf";
946 packageName = "extsprintf";
947 version = "1.3.0";
948 src = fetchurl {
949 url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
950 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
951 };
952 };
953 "eyes-0.1.8" = {
954 name = "eyes";
955 packageName = "eyes";
956 version = "0.1.8";
957 src = fetchurl {
958 url = "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz";
959 sha1 = "62cf120234c683785d902348a800ef3e0cc20bc0";
960 };
961 };
962 "fast-levenshtein-2.0.6" = {
963 name = "fast-levenshtein";
964 packageName = "fast-levenshtein";
965 version = "2.0.6";
966 src = fetchurl {
967 url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
968 sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
969 };
970 };
971 "favico.js-0.3.10" = {
972 name = "favico.js";
973 packageName = "favico.js";
974 version = "0.3.10";
975 src = fetchurl {
976 url = "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz";
977 sha1 = "80586e27a117f24a8d51c18a99bdc714d4339301";
978 };
979 };
980 "faye-websocket-0.4.4" = {
981 name = "faye-websocket";
982 packageName = "faye-websocket";
983 version = "0.4.4";
984 src = fetchurl {
985 url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz";
986 sha1 = "c14c5b3bf14d7417ffbfd990c0a7495cd9f337bc";
987 };
988 };
989 "fd-slicer-1.0.1" = {
990 name = "fd-slicer";
991 packageName = "fd-slicer";
992 version = "1.0.1";
993 src = fetchurl {
994 url = "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz";
995 sha1 = "8b5bcbd9ec327c5041bf9ab023fd6750f1177e65";
996 };
997 };
998 "feature-detect-es6-1.5.0" = {
999 name = "feature-detect-es6";
1000 packageName = "feature-detect-es6";
1001 version = "1.5.0";
1002 src = fetchurl {
1003 url = "https://registry.npmjs.org/feature-detect-es6/-/feature-detect-es6-1.5.0.tgz";
1004 sha512 = "DzWPIGzTnfp3/KK1d/YPfmgLqeDju9F2DQYBL35VusgSApcA7XGqVtXfR4ETOOFEzdFJ3J7zh0Gkk011TiA4uQ==";
1005 };
1006 };
1007 "file-sync-cmp-0.1.1" = {
1008 name = "file-sync-cmp";
1009 packageName = "file-sync-cmp";
1010 version = "0.1.1";
1011 src = fetchurl {
1012 url = "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz";
1013 sha1 = "a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b";
1014 };
1015 };
1016 "find-replace-1.0.3" = {
1017 name = "find-replace";
1018 packageName = "find-replace";
1019 version = "1.0.3";
1020 src = fetchurl {
1021 url = "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz";
1022 sha1 = "b88e7364d2d9c959559f388c66670d6130441fa0";
1023 };
1024 };
1025 "findit-2.0.0" = {
1026 name = "findit";
1027 packageName = "findit";
1028 version = "2.0.0";
1029 src = fetchurl {
1030 url = "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz";
1031 sha1 = "6509f0126af4c178551cfa99394e032e13a4d56e";
1032 };
1033 };
1034 "findup-sync-0.1.3" = {
1035 name = "findup-sync";
1036 packageName = "findup-sync";
1037 version = "0.1.3";
1038 src = fetchurl {
1039 url = "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz";
1040 sha1 = "7f3e7a97b82392c653bf06589bd85190e93c3683";
1041 };
1042 };
1043 "foreachasync-3.0.0" = {
1044 name = "foreachasync";
1045 packageName = "foreachasync";
1046 version = "3.0.0";
1047 src = fetchurl {
1048 url = "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz";
1049 sha1 = "5502987dc8714be3392097f32e0071c9dee07cf6";
1050 };
1051 };
1052 "forever-agent-0.6.1" = {
1053 name = "forever-agent";
1054 packageName = "forever-agent";
1055 version = "0.6.1";
1056 src = fetchurl {
1057 url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
1058 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
1059 };
1060 };
1061 "form-data-2.1.4" = {
1062 name = "form-data";
1063 packageName = "form-data";
1064 version = "2.1.4";
1065 src = fetchurl {
1066 url = "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz";
1067 sha1 = "33c183acf193276ecaa98143a69e94bfee1750d1";
1068 };
1069 };
1070 "fs-extra-0.6.4" = {
1071 name = "fs-extra";
1072 packageName = "fs-extra";
1073 version = "0.6.4";
1074 src = fetchurl {
1075 url = "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz";
1076 sha1 = "f46f0c75b7841f8d200b3348cd4d691d5a099d15";
1077 };
1078 };
1079 "fs-extra-1.0.0" = {
1080 name = "fs-extra";
1081 packageName = "fs-extra";
1082 version = "1.0.0";
1083 src = fetchurl {
1084 url = "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz";
1085 sha1 = "cd3ce5f7e7cb6145883fcae3191e9877f8587950";
1086 };
1087 };
1088 "fs.extra-1.3.2" = {
1089 name = "fs.extra";
1090 packageName = "fs.extra";
1091 version = "1.3.2";
1092 src = fetchurl {
1093 url = "https://registry.npmjs.org/fs.extra/-/fs.extra-1.3.2.tgz";
1094 sha1 = "dd023f93013bee24531f1b33514c37b20fd93349";
1095 };
1096 };
1097 "fs.realpath-1.0.0" = {
1098 name = "fs.realpath";
1099 packageName = "fs.realpath";
1100 version = "1.0.0";
1101 src = fetchurl {
1102 url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
1103 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
1104 };
1105 };
1106 "gauge-2.7.4" = {
1107 name = "gauge";
1108 packageName = "gauge";
1109 version = "2.7.4";
1110 src = fetchurl {
1111 url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz";
1112 sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
1113 };
1114 };
1115 "gaze-0.5.2" = {
1116 name = "gaze";
1117 packageName = "gaze";
1118 version = "0.5.2";
1119 src = fetchurl {
1120 url = "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz";
1121 sha1 = "40b709537d24d1d45767db5a908689dfe69ac44f";
1122 };
1123 };
1124 "getobject-0.1.0" = {
1125 name = "getobject";
1126 packageName = "getobject";
1127 version = "0.1.0";
1128 src = fetchurl {
1129 url = "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz";
1130 sha1 = "047a449789fa160d018f5486ed91320b6ec7885c";
1131 };
1132 };
1133 "getpass-0.1.7" = {
1134 name = "getpass";
1135 packageName = "getpass";
1136 version = "0.1.7";
1137 src = fetchurl {
1138 url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
1139 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
1140 };
1141 };
1142 "glob-3.1.21" = {
1143 name = "glob";
1144 packageName = "glob";
1145 version = "3.1.21";
1146 src = fetchurl {
1147 url = "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz";
1148 sha1 = "d29e0a055dea5138f4d07ed40e8982e83c2066cd";
1149 };
1150 };
1151 "glob-3.2.11" = {
1152 name = "glob";
1153 packageName = "glob";
1154 version = "3.2.11";
1155 src = fetchurl {
1156 url = "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz";
1157 sha1 = "4a973f635b9190f715d10987d5c00fd2815ebe3d";
1158 };
1159 };
1160 "glob-7.1.2" = {
1161 name = "glob";
1162 packageName = "glob";
1163 version = "7.1.2";
1164 src = fetchurl {
1165 url = "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz";
1166 sha512 = "MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==";
1167 };
1168 };
1169 "globule-0.1.0" = {
1170 name = "globule";
1171 packageName = "globule";
1172 version = "0.1.0";
1173 src = fetchurl {
1174 url = "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz";
1175 sha1 = "d9c8edde1da79d125a151b79533b978676346ae5";
1176 };
1177 };
1178 "good-listener-1.2.2" = {
1179 name = "good-listener";
1180 packageName = "good-listener";
1181 version = "1.2.2";
1182 src = fetchurl {
1183 url = "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz";
1184 sha1 = "d53b30cdf9313dffb7dc9a0d477096aa6d145c50";
1185 };
1186 };
1187 "graceful-fs-1.2.3" = {
1188 name = "graceful-fs";
1189 packageName = "graceful-fs";
1190 version = "1.2.3";
1191 src = fetchurl {
1192 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz";
1193 sha1 = "15a4806a57547cb2d2dbf27f42e89a8c3451b364";
1194 };
1195 };
1196 "graceful-fs-4.1.11" = {
1197 name = "graceful-fs";
1198 packageName = "graceful-fs";
1199 version = "4.1.11";
1200 src = fetchurl {
1201 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz";
1202 sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658";
1203 };
1204 };
7 1205 "grunt-0.4.5" = {
8 1206 name = "grunt";
9 1207 packageName = "grunt";
10 1208 version = "0.4.5";
11 1209 src = fetchurl {
12 1210 url = "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz";
13 1211 sha1 = "56937cd5194324adff6d207631832a9d6ba4e7f0";
14 1212 };
15 1213 };
1214 "grunt-contrib-concat-0.5.1" = {
1215 name = "grunt-contrib-concat";
1216 packageName = "grunt-contrib-concat";
1217 version = "0.5.1";
1218 src = fetchurl {
1219 url = "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.5.1.tgz";
1220 sha1 = "953c6efdfdfd2c107ab9c85077f2d4b24d31cd49";
1221 };
1222 };
16 1223 "grunt-contrib-copy-1.0.0" = {
17 1224 name = "grunt-contrib-copy";
18 1225 packageName = "grunt-contrib-copy";
19 1226 version = "1.0.0";
20 1227 src = fetchurl {
21 1228 url = "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz";
22 1229 sha1 = "7060c6581e904b8ab0d00f076e0a8f6e3e7c3573";
23 1230 };
24 1231 };
25 "grunt-contrib-concat-0.5.1" = {
26 name = "grunt-contrib-concat";
27 packageName = "grunt-contrib-concat";
28 version = "0.5.1";
29 src = fetchurl {
30 url = "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.5.1.tgz";
31 sha1 = "953c6efdfdfd2c107ab9c85077f2d4b24d31cd49";
32 };
33 };
34 1232 "grunt-contrib-jshint-0.12.0" = {
35 1233 name = "grunt-contrib-jshint";
36 1234 packageName = "grunt-contrib-jshint";
37 1235 version = "0.12.0";
38 1236 src = fetchurl {
39 1237 url = "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.12.0.tgz";
40 1238 sha1 = "f6b2f06fc715264837a7ab6c69a1ce1a689c2c29";
41 1239 };
42 1240 };
43 1241 "grunt-contrib-less-1.4.1" = {
44 1242 name = "grunt-contrib-less";
45 1243 packageName = "grunt-contrib-less";
46 1244 version = "1.4.1";
47 1245 src = fetchurl {
48 1246 url = "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-1.4.1.tgz";
49 1247 sha1 = "3bbdec0b75d12ceaa55d62943625c0b0861cdf6f";
50 1248 };
51 1249 };
52 1250 "grunt-contrib-watch-0.6.1" = {
53 1251 name = "grunt-contrib-watch";
54 1252 packageName = "grunt-contrib-watch";
55 1253 version = "0.6.1";
56 1254 src = fetchurl {
57 1255 url = "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz";
58 1256 sha1 = "64fdcba25a635f5b4da1b6ce6f90da0aeb6e3f15";
59 1257 };
60 1258 };
61 "crisper-2.1.1" = {
62 name = "crisper";
63 packageName = "crisper";
64 version = "2.1.1";
65 src = fetchurl {
66 url = "https://registry.npmjs.org/crisper/-/crisper-2.1.1.tgz";
67 sha1 = "4cc7321c3e90f3c5cbdc3503217f118fd7d5c51c";
68 };
69 };
70 "vulcanize-1.16.0" = {
71 name = "vulcanize";
72 packageName = "vulcanize";
73 version = "1.16.0";
74 src = fetchurl {
75 url = "https://registry.npmjs.org/vulcanize/-/vulcanize-1.16.0.tgz";
76 sha1 = "b0ce3b0044d194ad4908ae4f1a6c6110a6e4d5e6";
77 };
78 };
79 1259 "grunt-crisper-1.0.1" = {
80 1260 name = "grunt-crisper";
81 1261 packageName = "grunt-crisper";
82 1262 version = "1.0.1";
83 1263 src = fetchurl {
84 1264 url = "https://registry.npmjs.org/grunt-crisper/-/grunt-crisper-1.0.1.tgz";
85 1265 sha1 = "e7c091dcaff10deb0091e3035ca7e54008991fe7";
86 1266 };
87 1267 };
1268 "grunt-legacy-log-0.1.3" = {
1269 name = "grunt-legacy-log";
1270 packageName = "grunt-legacy-log";
1271 version = "0.1.3";
1272 src = fetchurl {
1273 url = "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz";
1274 sha1 = "ec29426e803021af59029f87d2f9cd7335a05531";
1275 };
1276 };
1277 "grunt-legacy-log-utils-0.1.1" = {
1278 name = "grunt-legacy-log-utils";
1279 packageName = "grunt-legacy-log-utils";
1280 version = "0.1.1";
1281 src = fetchurl {
1282 url = "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz";
1283 sha1 = "c0706b9dd9064e116f36f23fe4e6b048672c0f7e";
1284 };
1285 };
1286 "grunt-legacy-util-0.2.0" = {
1287 name = "grunt-legacy-util";
1288 packageName = "grunt-legacy-util";
1289 version = "0.2.0";
1290 src = fetchurl {
1291 url = "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz";
1292 sha1 = "93324884dbf7e37a9ff7c026dff451d94a9e554b";
1293 };
1294 };
88 1295 "grunt-vulcanize-1.0.0" = {
89 1296 name = "grunt-vulcanize";
90 1297 packageName = "grunt-vulcanize";
91 1298 version = "1.0.0";
92 1299 src = fetchurl {
93 1300 url = "https://registry.npmjs.org/grunt-vulcanize/-/grunt-vulcanize-1.0.0.tgz";
94 1301 sha1 = "f4d6cfef274f8216c06f6c290e7dbb3b9e9e3b0f";
95 1302 };
96 1303 };
97 "node2nix-1.3.0" = {
98 name = "node2nix";
99 packageName = "node2nix";
100 version = "1.3.0";
101 src = fetchurl {
102 url = "https://registry.npmjs.org/node2nix/-/node2nix-1.3.0.tgz";
103 sha1 = "e830a3bc5880dd22ae47be71a147f776542850cc";
104 };
105 };
106 "jshint-2.9.5" = {
107 name = "jshint";
108 packageName = "jshint";
109 version = "2.9.5";
110 src = fetchurl {
111 url = "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz";
112 sha1 = "1e7252915ce681b40827ee14248c46d34e9aa62c";
113 };
114 };
115 "bower-1.8.2" = {
116 name = "bower";
117 packageName = "bower";
118 version = "1.8.2";
119 src = fetchurl {
120 url = "https://registry.npmjs.org/bower/-/bower-1.8.2.tgz";
121 sha1 = "adf53529c8d4af02ef24fb8d5341c1419d33e2f7";
122 };
123 };
124 "jquery-1.11.3" = {
125 name = "jquery";
126 packageName = "jquery";
127 version = "1.11.3";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz";
130 sha1 = "dd8b74278b27102d29df63eae28308a8cfa1b583";
131 };
132 };
133 "favico.js-0.3.10" = {
134 name = "favico.js";
135 packageName = "favico.js";
136 version = "0.3.10";
137 src = fetchurl {
138 url = "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz";
139 sha1 = "80586e27a117f24a8d51c18a99bdc714d4339301";
140 };
141 };
142 "clipboard-1.7.1" = {
143 name = "clipboard";
144 packageName = "clipboard";
145 version = "1.7.1";
146 src = fetchurl {
147 url = "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz";
148 sha1 = "360d6d6946e99a7a1fef395e42ba92b5e9b5a16b";
149 };
150 };
151 "moment-2.18.1" = {
152 name = "moment";
153 packageName = "moment";
154 version = "2.18.1";
155 src = fetchurl {
156 url = "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz";
157 sha1 = "c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f";
158 };
159 };
160 "mousetrap-1.6.1" = {
161 name = "mousetrap";
162 packageName = "mousetrap";
163 version = "1.6.1";
164 src = fetchurl {
165 url = "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.1.tgz";
166 sha1 = "2a085f5c751294c75e7e81f6ec2545b29cbf42d9";
167 };
168 };
169 "appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" = {
170 name = "appenlight-client";
171 packageName = "appenlight-client";
172 version = "0.5.1";
173 src = fetchgit {
174 url = "https://git@github.com/AppEnlight/appenlight-client-js.git";
175 rev = "14712c64c230fbbe94fcbc8094aef5eb3b90b307";
176 sha256 = "92111f1104cbf0b31303c366c0fa752cf68af7ddde40d0161edd1b5fd9dd07f7";
177 };
178 };
179 "async-0.1.22" = {
180 name = "async";
181 packageName = "async";
182 version = "0.1.22";
183 src = fetchurl {
184 url = "https://registry.npmjs.org/async/-/async-0.1.22.tgz";
185 sha1 = "0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061";
186 };
187 };
188 "coffee-script-1.3.3" = {
189 name = "coffee-script";
190 packageName = "coffee-script";
191 version = "1.3.3";
192 src = fetchurl {
193 url = "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz";
194 sha1 = "150d6b4cb522894369efed6a2101c20bc7f4a4f4";
195 };
196 };
197 "colors-0.6.2" = {
198 name = "colors";
199 packageName = "colors";
200 version = "0.6.2";
201 src = fetchurl {
202 url = "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz";
203 sha1 = "2423fe6678ac0c5dae8852e5d0e5be08c997abcc";
204 };
205 };
206 "dateformat-1.0.2-1.2.3" = {
207 name = "dateformat";
208 packageName = "dateformat";
209 version = "1.0.2-1.2.3";
210 src = fetchurl {
211 url = "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz";
212 sha1 = "b0220c02de98617433b72851cf47de3df2cdbee9";
213 };
214 };
215 "eventemitter2-0.4.14" = {
216 name = "eventemitter2";
217 packageName = "eventemitter2";
218 version = "0.4.14";
219 src = fetchurl {
220 url = "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz";
221 sha1 = "8f61b75cde012b2e9eb284d4545583b5643b61ab";
222 };
223 };
224 "findup-sync-0.1.3" = {
225 name = "findup-sync";
226 packageName = "findup-sync";
227 version = "0.1.3";
228 src = fetchurl {
229 url = "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz";
230 sha1 = "7f3e7a97b82392c653bf06589bd85190e93c3683";
231 };
232 };
233 "glob-3.1.21" = {
234 name = "glob";
235 packageName = "glob";
236 version = "3.1.21";
237 src = fetchurl {
238 url = "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz";
239 sha1 = "d29e0a055dea5138f4d07ed40e8982e83c2066cd";
240 };
241 };
242 "hooker-0.2.3" = {
243 name = "hooker";
244 packageName = "hooker";
245 version = "0.2.3";
246 src = fetchurl {
247 url = "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz";
248 sha1 = "b834f723cc4a242aa65963459df6d984c5d3d959";
249 };
250 };
251 "iconv-lite-0.2.11" = {
252 name = "iconv-lite";
253 packageName = "iconv-lite";
254 version = "0.2.11";
255 src = fetchurl {
256 url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz";
257 sha1 = "1ce60a3a57864a292d1321ff4609ca4bb965adc8";
258 };
259 };
260 "minimatch-0.2.14" = {
261 name = "minimatch";
262 packageName = "minimatch";
263 version = "0.2.14";
264 src = fetchurl {
265 url = "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz";
266 sha1 = "c74e780574f63c6f9a090e90efbe6ef53a6a756a";
267 };
268 };
269 "nopt-1.0.10" = {
270 name = "nopt";
271 packageName = "nopt";
272 version = "1.0.10";
273 src = fetchurl {
274 url = "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz";
275 sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee";
276 };
277 };
278 "rimraf-2.2.8" = {
279 name = "rimraf";
280 packageName = "rimraf";
281 version = "2.2.8";
282 src = fetchurl {
283 url = "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz";
284 sha1 = "e439be2aaee327321952730f99a8929e4fc50582";
285 };
286 };
287 "lodash-0.9.2" = {
288 name = "lodash";
289 packageName = "lodash";
290 version = "0.9.2";
291 src = fetchurl {
292 url = "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz";
293 sha1 = "8f3499c5245d346d682e5b0d3b40767e09f1a92c";
294 };
295 };
296 "underscore.string-2.2.1" = {
297 name = "underscore.string";
298 packageName = "underscore.string";
299 version = "2.2.1";
300 src = fetchurl {
301 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz";
302 sha1 = "d7c0fa2af5d5a1a67f4253daee98132e733f0f19";
303 };
304 };
305 "which-1.0.9" = {
306 name = "which";
307 packageName = "which";
308 version = "1.0.9";
309 src = fetchurl {
310 url = "https://registry.npmjs.org/which/-/which-1.0.9.tgz";
311 sha1 = "460c1da0f810103d0321a9b633af9e575e64486f";
312 };
313 };
314 "js-yaml-2.0.5" = {
315 name = "js-yaml";
316 packageName = "js-yaml";
317 version = "2.0.5";
318 src = fetchurl {
319 url = "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz";
320 sha1 = "a25ae6509999e97df278c6719da11bd0687743a8";
321 };
322 };
323 "exit-0.1.2" = {
324 name = "exit";
325 packageName = "exit";
326 version = "0.1.2";
327 src = fetchurl {
328 url = "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz";
329 sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c";
330 };
331 };
332 "getobject-0.1.0" = {
333 name = "getobject";
334 packageName = "getobject";
1304 "har-schema-1.0.5" = {
1305 name = "har-schema";
1306 packageName = "har-schema";
1307 version = "1.0.5";
1308 src = fetchurl {
1309 url = "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz";
1310 sha1 = "d263135f43307c02c602afc8fe95970c0151369e";
1311 };
1312 };
1313 "har-validator-4.2.1" = {
1314 name = "har-validator";
1315 packageName = "har-validator";
1316 version = "4.2.1";
1317 src = fetchurl {
1318 url = "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz";
1319 sha1 = "33481d0f1bbff600dd203d75812a6a5fba002e2a";
1320 };
1321 };
1322 "has-ansi-0.1.0" = {
1323 name = "has-ansi";
1324 packageName = "has-ansi";
335 1325 version = "0.1.0";
336 1326 src = fetchurl {
337 url = "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz";
338 sha1 = "047a449789fa160d018f5486ed91320b6ec7885c";
339 };
340 };
341 "grunt-legacy-util-0.2.0" = {
342 name = "grunt-legacy-util";
343 packageName = "grunt-legacy-util";
344 version = "0.2.0";
345 src = fetchurl {
346 url = "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz";
347 sha1 = "93324884dbf7e37a9ff7c026dff451d94a9e554b";
348 };
349 };
350 "grunt-legacy-log-0.1.3" = {
351 name = "grunt-legacy-log";
352 packageName = "grunt-legacy-log";
353 version = "0.1.3";
354 src = fetchurl {
355 url = "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz";
356 sha1 = "ec29426e803021af59029f87d2f9cd7335a05531";
357 };
358 };
359 "glob-3.2.11" = {
360 name = "glob";
361 packageName = "glob";
362 version = "3.2.11";
363 src = fetchurl {
364 url = "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz";
365 sha1 = "4a973f635b9190f715d10987d5c00fd2815ebe3d";
366 };
367 };
368 "lodash-2.4.2" = {
369 name = "lodash";
370 packageName = "lodash";
371 version = "2.4.2";
372 src = fetchurl {
373 url = "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz";
374 sha1 = "fadd834b9683073da179b3eae6d9c0d15053f73e";
375 };
376 };
377 "inherits-2.0.3" = {
378 name = "inherits";
379 packageName = "inherits";
380 version = "2.0.3";
381 src = fetchurl {
382 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
383 sha1 = "633c2c83e3da42a502f52466022480f4208261de";
384 };
385 };
386 "minimatch-0.3.0" = {
387 name = "minimatch";
388 packageName = "minimatch";
389 version = "0.3.0";
390 src = fetchurl {
391 url = "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz";
392 sha1 = "275d8edaac4f1bb3326472089e7949c8394699dd";
393 };
394 };
395 "lru-cache-2.7.3" = {
396 name = "lru-cache";
397 packageName = "lru-cache";
398 version = "2.7.3";
399 src = fetchurl {
400 url = "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz";
401 sha1 = "6d4524e8b955f95d4f5b58851ce21dd72fb4e952";
402 };
403 };
404 "sigmund-1.0.1" = {
405 name = "sigmund";
406 packageName = "sigmund";
407 version = "1.0.1";
408 src = fetchurl {
409 url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz";
410 sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
411 };
412 };
413 "graceful-fs-1.2.3" = {
414 name = "graceful-fs";
415 packageName = "graceful-fs";
416 version = "1.2.3";
417 src = fetchurl {
418 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz";
419 sha1 = "15a4806a57547cb2d2dbf27f42e89a8c3451b364";
420 };
421 };
422 "inherits-1.0.2" = {
423 name = "inherits";
424 packageName = "inherits";
425 version = "1.0.2";
426 src = fetchurl {
427 url = "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz";
428 sha1 = "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b";
429 };
430 };
431 "abbrev-1.1.0" = {
432 name = "abbrev";
433 packageName = "abbrev";
434 version = "1.1.0";
435 src = fetchurl {
436 url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz";
437 sha1 = "d0554c2256636e2f56e7c2e5ad183f859428d81f";
438 };
439 };
440 "argparse-0.1.16" = {
441 name = "argparse";
442 packageName = "argparse";
443 version = "0.1.16";
444 src = fetchurl {
445 url = "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz";
446 sha1 = "cfd01e0fbba3d6caed049fbd758d40f65196f57c";
447 };
448 };
449 "esprima-1.0.4" = {
450 name = "esprima";
451 packageName = "esprima";
452 version = "1.0.4";
453 src = fetchurl {
454 url = "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz";
455 sha1 = "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad";
456 };
457 };
458 "underscore-1.7.0" = {
459 name = "underscore";
460 packageName = "underscore";
461 version = "1.7.0";
462 src = fetchurl {
463 url = "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz";
464 sha1 = "6bbaf0877500d36be34ecaa584e0db9fef035209";
465 };
466 };
467 "underscore.string-2.4.0" = {
468 name = "underscore.string";
469 packageName = "underscore.string";
470 version = "2.4.0";
471 src = fetchurl {
472 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz";
473 sha1 = "8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b";
474 };
475 };
476 "grunt-legacy-log-utils-0.1.1" = {
477 name = "grunt-legacy-log-utils";
478 packageName = "grunt-legacy-log-utils";
479 version = "0.1.1";
480 src = fetchurl {
481 url = "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz";
482 sha1 = "c0706b9dd9064e116f36f23fe4e6b048672c0f7e";
483 };
484 };
485 "underscore.string-2.3.3" = {
486 name = "underscore.string";
487 packageName = "underscore.string";
488 version = "2.3.3";
489 src = fetchurl {
490 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz";
491 sha1 = "71c08bf6b428b1133f37e78fa3a21c82f7329b0d";
492 };
493 };
494 "chalk-1.1.3" = {
495 name = "chalk";
496 packageName = "chalk";
497 version = "1.1.3";
498 src = fetchurl {
499 url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
500 sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
501 };
502 };
503 "file-sync-cmp-0.1.1" = {
504 name = "file-sync-cmp";
505 packageName = "file-sync-cmp";
506 version = "0.1.1";
507 src = fetchurl {
508 url = "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz";
509 sha1 = "a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b";
510 };
511 };
512 "ansi-styles-2.2.1" = {
513 name = "ansi-styles";
514 packageName = "ansi-styles";
515 version = "2.2.1";
516 src = fetchurl {
517 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
518 sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
519 };
520 };
521 "escape-string-regexp-1.0.5" = {
522 name = "escape-string-regexp";
523 packageName = "escape-string-regexp";
524 version = "1.0.5";
525 src = fetchurl {
526 url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
527 sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
1327 url = "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz";
1328 sha1 = "84f265aae8c0e6a88a12d7022894b7568894c62e";
528 1329 };
529 1330 };
530 1331 "has-ansi-2.0.0" = {
531 1332 name = "has-ansi";
532 1333 packageName = "has-ansi";
533 1334 version = "2.0.0";
534 1335 src = fetchurl {
535 1336 url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
536 1337 sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
537 1338 };
538 1339 };
539 "strip-ansi-3.0.1" = {
540 name = "strip-ansi";
541 packageName = "strip-ansi";
542 version = "3.0.1";
543 src = fetchurl {
544 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
545 sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
546 };
547 };
548 "supports-color-2.0.0" = {
549 name = "supports-color";
550 packageName = "supports-color";
551 version = "2.0.0";
552 src = fetchurl {
553 url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
554 sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
555 };
556 };
557 "ansi-regex-2.1.1" = {
558 name = "ansi-regex";
559 packageName = "ansi-regex";
560 version = "2.1.1";
561 src = fetchurl {
562 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
563 sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
564 };
565 };
566 "chalk-0.5.1" = {
567 name = "chalk";
568 packageName = "chalk";
569 version = "0.5.1";
570 src = fetchurl {
571 url = "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz";
572 sha1 = "663b3a648b68b55d04690d49167aa837858f2174";
573 };
574 };
575 "source-map-0.3.0" = {
576 name = "source-map";
577 packageName = "source-map";
578 version = "0.3.0";
579 src = fetchurl {
580 url = "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz";
581 sha1 = "8586fb9a5a005e5b501e21cd18b6f21b457ad1f9";
582 };
583 };
584 "ansi-styles-1.1.0" = {
585 name = "ansi-styles";
586 packageName = "ansi-styles";
587 version = "1.1.0";
588 src = fetchurl {
589 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz";
590 sha1 = "eaecbf66cd706882760b2f4691582b8f55d7a7de";
591 };
592 };
593 "has-ansi-0.1.0" = {
594 name = "has-ansi";
595 packageName = "has-ansi";
596 version = "0.1.0";
597 src = fetchurl {
598 url = "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz";
599 sha1 = "84f265aae8c0e6a88a12d7022894b7568894c62e";
600 };
601 };
602 "strip-ansi-0.3.0" = {
603 name = "strip-ansi";
604 packageName = "strip-ansi";
605 version = "0.3.0";
606 src = fetchurl {
607 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz";
608 sha1 = "25f48ea22ca79187f3174a4db8759347bb126220";
609 };
610 };
611 "supports-color-0.2.0" = {
612 name = "supports-color";
613 packageName = "supports-color";
614 version = "0.2.0";
615 src = fetchurl {
616 url = "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz";
617 sha1 = "d92de2694eb3f67323973d7ae3d8b55b4c22190a";
618 };
619 };
620 "ansi-regex-0.2.1" = {
621 name = "ansi-regex";
622 packageName = "ansi-regex";
623 version = "0.2.1";
624 src = fetchurl {
625 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz";
626 sha1 = "0d8e946967a3d8143f93e24e298525fc1b2235f9";
627 };
628 };
629 "amdefine-1.0.1" = {
630 name = "amdefine";
631 packageName = "amdefine";
632 version = "1.0.1";
633 src = fetchurl {
634 url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz";
635 sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
636 };
637 };
638 "async-2.5.0" = {
639 name = "async";
640 packageName = "async";
641 version = "2.5.0";
642 src = fetchurl {
643 url = "https://registry.npmjs.org/async/-/async-2.5.0.tgz";
644 sha1 = "843190fd6b7357a0b9e1c956edddd5ec8462b54d";
645 };
646 };
647 "less-2.7.2" = {
648 name = "less";
649 packageName = "less";
650 version = "2.7.2";
651 src = fetchurl {
652 url = "https://registry.npmjs.org/less/-/less-2.7.2.tgz";
653 sha1 = "368d6cc73e1fb03981183280918743c5dcf9b3df";
654 };
655 };
656 "lodash-4.17.4" = {
657 name = "lodash";
658 packageName = "lodash";
659 version = "4.17.4";
660 src = fetchurl {
661 url = "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz";
662 sha1 = "78203a4d1c328ae1d86dca6460e369b57f4055ae";
663 };
664 };
665 "errno-0.1.4" = {
666 name = "errno";
667 packageName = "errno";
668 version = "0.1.4";
669 src = fetchurl {
670 url = "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz";
671 sha1 = "b896e23a9e5e8ba33871fc996abd3635fc9a1c7d";
672 };
673 };
674 "graceful-fs-4.1.11" = {
675 name = "graceful-fs";
676 packageName = "graceful-fs";
677 version = "4.1.11";
678 src = fetchurl {
679 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz";
680 sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658";
1340 "has-unicode-2.0.1" = {
1341 name = "has-unicode";
1342 packageName = "has-unicode";
1343 version = "2.0.1";
1344 src = fetchurl {
1345 url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz";
1346 sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
1347 };
1348 };
1349 "hasha-2.2.0" = {
1350 name = "hasha";
1351 packageName = "hasha";
1352 version = "2.2.0";
1353 src = fetchurl {
1354 url = "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz";
1355 sha1 = "78d7cbfc1e6d66303fe79837365984517b2f6ee1";
1356 };
1357 };
1358 "hawk-3.1.3" = {
1359 name = "hawk";
1360 packageName = "hawk";
1361 version = "3.1.3";
1362 src = fetchurl {
1363 url = "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz";
1364 sha1 = "078444bd7c1640b0fe540d2c9b73d59678e8e1c4";
1365 };
1366 };
1367 "hoek-2.16.3" = {
1368 name = "hoek";
1369 packageName = "hoek";
1370 version = "2.16.3";
1371 src = fetchurl {
1372 url = "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz";
1373 sha1 = "20bb7403d3cea398e91dc4710a8ff1b8274a25ed";
1374 };
1375 };
1376 "hooker-0.2.3" = {
1377 name = "hooker";
1378 packageName = "hooker";
1379 version = "0.2.3";
1380 src = fetchurl {
1381 url = "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz";
1382 sha1 = "b834f723cc4a242aa65963459df6d984c5d3d959";
1383 };
1384 };
1385 "hosted-git-info-2.7.1" = {
1386 name = "hosted-git-info";
1387 packageName = "hosted-git-info";
1388 version = "2.7.1";
1389 src = fetchurl {
1390 url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz";
1391 sha512 = "7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==";
1392 };
1393 };
1394 "htmlparser2-3.8.3" = {
1395 name = "htmlparser2";
1396 packageName = "htmlparser2";
1397 version = "3.8.3";
1398 src = fetchurl {
1399 url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz";
1400 sha1 = "996c28b191516a8be86501a7d79757e5c70c1068";
1401 };
1402 };
1403 "http-signature-1.1.1" = {
1404 name = "http-signature";
1405 packageName = "http-signature";
1406 version = "1.1.1";
1407 src = fetchurl {
1408 url = "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz";
1409 sha1 = "df72e267066cd0ac67fb76adf8e134a8fbcf91bf";
1410 };
1411 };
1412 "hydrolysis-1.25.0" = {
1413 name = "hydrolysis";
1414 packageName = "hydrolysis";
1415 version = "1.25.0";
1416 src = fetchurl {
1417 url = "https://registry.npmjs.org/hydrolysis/-/hydrolysis-1.25.0.tgz";
1418 sha1 = "a4fb14a37a1e03b0db52d8aaa57c682272a14d84";
1419 };
1420 };
1421 "iconv-lite-0.2.11" = {
1422 name = "iconv-lite";
1423 packageName = "iconv-lite";
1424 version = "0.2.11";
1425 src = fetchurl {
1426 url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz";
1427 sha1 = "1ce60a3a57864a292d1321ff4609ca4bb965adc8";
681 1428 };
682 1429 };
683 1430 "image-size-0.5.5" = {
684 1431 name = "image-size";
685 1432 packageName = "image-size";
686 1433 version = "0.5.5";
687 1434 src = fetchurl {
688 1435 url = "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz";
689 1436 sha1 = "09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c";
690 1437 };
691 1438 };
692 "mime-1.4.0" = {
693 name = "mime";
694 packageName = "mime";
695 version = "1.4.0";
696 src = fetchurl {
697 url = "https://registry.npmjs.org/mime/-/mime-1.4.0.tgz";
698 sha1 = "69e9e0db51d44f2a3b56e48b7817d7d137f1a343";
699 };
700 };
701 "mkdirp-0.5.1" = {
702 name = "mkdirp";
703 packageName = "mkdirp";
704 version = "0.5.1";
705 src = fetchurl {
706 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
707 sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
708 };
709 };
710 "promise-7.3.1" = {
711 name = "promise";
712 packageName = "promise";
713 version = "7.3.1";
714 src = fetchurl {
715 url = "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz";
716 sha1 = "064b72602b18f90f29192b8b1bc418ffd1ebd3bf";
717 };
718 };
719 "source-map-0.5.7" = {
720 name = "source-map";
721 packageName = "source-map";
722 version = "0.5.7";
723 src = fetchurl {
724 url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz";
725 sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
726 };
727 };
728 "request-2.82.0" = {
729 name = "request";
730 packageName = "request";
731 version = "2.82.0";
732 src = fetchurl {
733 url = "https://registry.npmjs.org/request/-/request-2.82.0.tgz";
734 sha1 = "2ba8a92cd7ac45660ea2b10a53ae67cd247516ea";
735 };
736 };
737 "prr-0.0.0" = {
738 name = "prr";
739 packageName = "prr";
740 version = "0.0.0";
741 src = fetchurl {
742 url = "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz";
743 sha1 = "1a84b85908325501411853d0081ee3fa86e2926a";
744 };
745 };
746 "minimist-0.0.8" = {
747 name = "minimist";
748 packageName = "minimist";
749 version = "0.0.8";
750 src = fetchurl {
751 url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
752 sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
753 };
754 };
755 "asap-2.0.6" = {
756 name = "asap";
757 packageName = "asap";
758 version = "2.0.6";
759 src = fetchurl {
760 url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz";
761 sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
762 };
763 };
764 "aws-sign2-0.7.0" = {
765 name = "aws-sign2";
766 packageName = "aws-sign2";
767 version = "0.7.0";
768 src = fetchurl {
769 url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
770 sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
771 };
772 };
773 "aws4-1.6.0" = {
774 name = "aws4";
775 packageName = "aws4";
776 version = "1.6.0";
777 src = fetchurl {
778 url = "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz";
779 sha1 = "83ef5ca860b2b32e4a0deedee8c771b9db57471e";
780 };
781 };
782 "caseless-0.12.0" = {
783 name = "caseless";
784 packageName = "caseless";
785 version = "0.12.0";
786 src = fetchurl {
787 url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
788 sha1 = "1b681c21ff84033c826543090689420d187151dc";
789 };
790 };
791 "combined-stream-1.0.5" = {
792 name = "combined-stream";
793 packageName = "combined-stream";
794 version = "1.0.5";
795 src = fetchurl {
796 url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz";
797 sha1 = "938370a57b4a51dea2c77c15d5c5fdf895164009";
798 };
799 };
800 "extend-3.0.1" = {
801 name = "extend";
802 packageName = "extend";
803 version = "3.0.1";
804 src = fetchurl {
805 url = "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz";
806 sha1 = "a755ea7bc1adfcc5a31ce7e762dbaadc5e636444";
807 };
808 };
809 "forever-agent-0.6.1" = {
810 name = "forever-agent";
811 packageName = "forever-agent";
812 version = "0.6.1";
813 src = fetchurl {
814 url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
815 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
816 };
817 };
818 "form-data-2.3.1" = {
819 name = "form-data";
820 packageName = "form-data";
821 version = "2.3.1";
822 src = fetchurl {
823 url = "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz";
824 sha1 = "6fb94fbd71885306d73d15cc497fe4cc4ecd44bf";
825 };
826 };
827 "har-validator-5.0.3" = {
828 name = "har-validator";
829 packageName = "har-validator";
830 version = "5.0.3";
831 src = fetchurl {
832 url = "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz";
833 sha1 = "ba402c266194f15956ef15e0fcf242993f6a7dfd";
834 };
835 };
836 "hawk-6.0.2" = {
837 name = "hawk";
838 packageName = "hawk";
839 version = "6.0.2";
840 src = fetchurl {
841 url = "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz";
842 sha1 = "af4d914eb065f9b5ce4d9d11c1cb2126eecc3038";
843 };
844 };
845 "http-signature-1.2.0" = {
846 name = "http-signature";
847 packageName = "http-signature";
848 version = "1.2.0";
849 src = fetchurl {
850 url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
851 sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
1439 "inflight-1.0.6" = {
1440 name = "inflight";
1441 packageName = "inflight";
1442 version = "1.0.6";
1443 src = fetchurl {
1444 url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
1445 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
1446 };
1447 };
1448 "inherits-1.0.2" = {
1449 name = "inherits";
1450 packageName = "inherits";
1451 version = "1.0.2";
1452 src = fetchurl {
1453 url = "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz";
1454 sha1 = "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b";
1455 };
1456 };
1457 "inherits-2.0.3" = {
1458 name = "inherits";
1459 packageName = "inherits";
1460 version = "2.0.3";
1461 src = fetchurl {
1462 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
1463 sha1 = "633c2c83e3da42a502f52466022480f4208261de";
1464 };
1465 };
1466 "ini-1.3.5" = {
1467 name = "ini";
1468 packageName = "ini";
1469 version = "1.3.5";
1470 src = fetchurl {
1471 url = "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz";
1472 sha512 = "RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==";
1473 };
1474 };
1475 "is-builtin-module-1.0.0" = {
1476 name = "is-builtin-module";
1477 packageName = "is-builtin-module";
1478 version = "1.0.0";
1479 src = fetchurl {
1480 url = "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
1481 sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
1482 };
1483 };
1484 "is-fullwidth-code-point-1.0.0" = {
1485 name = "is-fullwidth-code-point";
1486 packageName = "is-fullwidth-code-point";
1487 version = "1.0.0";
1488 src = fetchurl {
1489 url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
1490 sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
1491 };
1492 };
1493 "is-stream-1.1.0" = {
1494 name = "is-stream";
1495 packageName = "is-stream";
1496 version = "1.1.0";
1497 src = fetchurl {
1498 url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz";
1499 sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
852 1500 };
853 1501 };
854 1502 "is-typedarray-1.0.0" = {
855 1503 name = "is-typedarray";
856 1504 packageName = "is-typedarray";
857 1505 version = "1.0.0";
858 1506 src = fetchurl {
859 1507 url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
860 1508 sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
861 1509 };
862 1510 };
1511 "isarray-0.0.1" = {
1512 name = "isarray";
1513 packageName = "isarray";
1514 version = "0.0.1";
1515 src = fetchurl {
1516 url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
1517 sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
1518 };
1519 };
1520 "isarray-1.0.0" = {
1521 name = "isarray";
1522 packageName = "isarray";
1523 version = "1.0.0";
1524 src = fetchurl {
1525 url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
1526 sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
1527 };
1528 };
1529 "isexe-2.0.0" = {
1530 name = "isexe";
1531 packageName = "isexe";
1532 version = "2.0.0";
1533 src = fetchurl {
1534 url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz";
1535 sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
1536 };
1537 };
863 1538 "isstream-0.1.2" = {
864 1539 name = "isstream";
865 1540 packageName = "isstream";
866 1541 version = "0.1.2";
867 1542 src = fetchurl {
868 1543 url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
869 1544 sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
870 1545 };
871 1546 };
1547 "jquery-1.11.3" = {
1548 name = "jquery";
1549 packageName = "jquery";
1550 version = "1.11.3";
1551 src = fetchurl {
1552 url = "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz";
1553 sha1 = "dd8b74278b27102d29df63eae28308a8cfa1b583";
1554 };
1555 };
1556 "js-yaml-2.0.5" = {
1557 name = "js-yaml";
1558 packageName = "js-yaml";
1559 version = "2.0.5";
1560 src = fetchurl {
1561 url = "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz";
1562 sha1 = "a25ae6509999e97df278c6719da11bd0687743a8";
1563 };
1564 };
1565 "jsbn-0.1.1" = {
1566 name = "jsbn";
1567 packageName = "jsbn";
1568 version = "0.1.1";
1569 src = fetchurl {
1570 url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
1571 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
1572 };
1573 };
1574 "jshint-2.9.6" = {
1575 name = "jshint";
1576 packageName = "jshint";
1577 version = "2.9.6";
1578 src = fetchurl {
1579 url = "https://registry.npmjs.org/jshint/-/jshint-2.9.6.tgz";
1580 sha512 = "KO9SIAKTlJQOM4lE64GQUtGBRpTOuvbrRrSZw3AhUxMNG266nX9hK2cKA4SBhXOj0irJGyNyGSLT62HGOVDEOA==";
1581 };
1582 };
1583 "json-schema-0.2.3" = {
1584 name = "json-schema";
1585 packageName = "json-schema";
1586 version = "0.2.3";
1587 src = fetchurl {
1588 url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
1589 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
1590 };
1591 };
1592 "json-stable-stringify-1.0.1" = {
1593 name = "json-stable-stringify";
1594 packageName = "json-stable-stringify";
1595 version = "1.0.1";
1596 src = fetchurl {
1597 url = "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
1598 sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
1599 };
1600 };
872 1601 "json-stringify-safe-5.0.1" = {
873 1602 name = "json-stringify-safe";
874 1603 packageName = "json-stringify-safe";
875 1604 version = "5.0.1";
876 1605 src = fetchurl {
877 1606 url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
878 1607 sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
879 1608 };
880 1609 };
881 "mime-types-2.1.17" = {
882 name = "mime-types";
883 packageName = "mime-types";
884 version = "2.1.17";
885 src = fetchurl {
886 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz";
887 sha1 = "09d7a393f03e995a79f8af857b70a9e0ab16557a";
888 };
889 };
890 "oauth-sign-0.8.2" = {
891 name = "oauth-sign";
892 packageName = "oauth-sign";
893 version = "0.8.2";
894 src = fetchurl {
895 url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz";
896 sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
897 };
898 };
899 "performance-now-2.1.0" = {
900 name = "performance-now";
901 packageName = "performance-now";
902 version = "2.1.0";
903 src = fetchurl {
904 url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
905 sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
906 };
907 };
908 "qs-6.5.1" = {
909 name = "qs";
910 packageName = "qs";
911 version = "6.5.1";
912 src = fetchurl {
913 url = "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz";
914 sha1 = "349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8";
915 };
916 };
917 "safe-buffer-5.1.1" = {
918 name = "safe-buffer";
919 packageName = "safe-buffer";
920 version = "5.1.1";
921 src = fetchurl {
922 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz";
923 sha1 = "893312af69b2123def71f57889001671eeb2c853";
924 };
925 };
926 "stringstream-0.0.5" = {
927 name = "stringstream";
928 packageName = "stringstream";
929 version = "0.0.5";
930 src = fetchurl {
931 url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz";
932 sha1 = "4e484cd4de5a0bbbee18e46307710a8a81621878";
933 };
934 };
935 "tough-cookie-2.3.3" = {
936 name = "tough-cookie";
937 packageName = "tough-cookie";
938 version = "2.3.3";
939 src = fetchurl {
940 url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz";
941 sha1 = "0b618a5565b6dea90bf3425d04d55edc475a7561";
942 };
943 };
944 "tunnel-agent-0.6.0" = {
945 name = "tunnel-agent";
946 packageName = "tunnel-agent";
947 version = "0.6.0";
948 src = fetchurl {
949 url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
950 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
951 };
952 };
953 "uuid-3.1.0" = {
954 name = "uuid";
955 packageName = "uuid";
956 version = "3.1.0";
957 src = fetchurl {
958 url = "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz";
959 sha1 = "3dd3d3e790abc24d7b0d3a034ffababe28ebbc04";
960 };
961 };
962 "delayed-stream-1.0.0" = {
963 name = "delayed-stream";
964 packageName = "delayed-stream";
965 version = "1.0.0";
966 src = fetchurl {
967 url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
968 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
969 };
970 };
971 "asynckit-0.4.0" = {
972 name = "asynckit";
973 packageName = "asynckit";
974 version = "0.4.0";
975 src = fetchurl {
976 url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
977 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
978 };
979 };
980 "ajv-5.2.2" = {
981 name = "ajv";
982 packageName = "ajv";
983 version = "5.2.2";
984 src = fetchurl {
985 url = "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz";
986 sha1 = "47c68d69e86f5d953103b0074a9430dc63da5e39";
987 };
988 };
989 "har-schema-2.0.0" = {
990 name = "har-schema";
991 packageName = "har-schema";
992 version = "2.0.0";
993 src = fetchurl {
994 url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
995 sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
996 };
997 };
998 "co-4.6.0" = {
999 name = "co";
1000 packageName = "co";
1001 version = "4.6.0";
1002 src = fetchurl {
1003 url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz";
1004 sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
1005 };
1006 };
1007 "fast-deep-equal-1.0.0" = {
1008 name = "fast-deep-equal";
1009 packageName = "fast-deep-equal";
1010 version = "1.0.0";
1011 src = fetchurl {
1012 url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz";
1013 sha1 = "96256a3bc975595eb36d82e9929d060d893439ff";
1014 };
1015 };
1016 "json-schema-traverse-0.3.1" = {
1017 name = "json-schema-traverse";
1018 packageName = "json-schema-traverse";
1019 version = "0.3.1";
1020 src = fetchurl {
1021 url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz";
1022 sha1 = "349a6d44c53a51de89b40805c5d5e59b417d3340";
1023 };
1024 };
1025 "json-stable-stringify-1.0.1" = {
1026 name = "json-stable-stringify";
1027 packageName = "json-stable-stringify";
1610 "jsonfile-1.0.1" = {
1611 name = "jsonfile";
1612 packageName = "jsonfile";
1028 1613 version = "1.0.1";
1029 1614 src = fetchurl {
1030 url = "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
1031 sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
1615 url = "https://registry.npmjs.org/jsonfile/-/jsonfile-1.0.1.tgz";
1616 sha1 = "ea5efe40b83690b98667614a7392fc60e842c0dd";
1617 };
1618 };
1619 "jsonfile-2.4.0" = {
1620 name = "jsonfile";
1621 packageName = "jsonfile";
1622 version = "2.4.0";
1623 src = fetchurl {
1624 url = "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz";
1625 sha1 = "3736a2b428b87bbda0cc83b53fa3d633a35c2ae8";
1032 1626 };
1033 1627 };
1034 1628 "jsonify-0.0.0" = {
1035 1629 name = "jsonify";
1036 1630 packageName = "jsonify";
1037 1631 version = "0.0.0";
1038 1632 src = fetchurl {
1039 1633 url = "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz";
1040 1634 sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
1041 1635 };
1042 1636 };
1043 "hoek-4.2.0" = {
1044 name = "hoek";
1045 packageName = "hoek";
1046 version = "4.2.0";
1047 src = fetchurl {
1048 url = "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz";
1049 sha1 = "72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d";
1050 };
1051 };
1052 "boom-4.3.1" = {
1053 name = "boom";
1054 packageName = "boom";
1055 version = "4.3.1";
1056 src = fetchurl {
1057 url = "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz";
1058 sha1 = "4f8a3005cb4a7e3889f749030fd25b96e01d2e31";
1059 };
1060 };
1061 "cryptiles-3.1.2" = {
1062 name = "cryptiles";
1063 packageName = "cryptiles";
1064 version = "3.1.2";
1065 src = fetchurl {
1066 url = "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz";
1067 sha1 = "a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe";
1068 };
1069 };
1070 "sntp-2.0.2" = {
1071 name = "sntp";
1072 packageName = "sntp";
1073 version = "2.0.2";
1074 src = fetchurl {
1075 url = "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz";
1076 sha1 = "5064110f0af85f7cfdb7d6b67a40028ce52b4b2b";
1077 };
1078 };
1079 "boom-5.2.0" = {
1080 name = "boom";
1081 packageName = "boom";
1082 version = "5.2.0";
1083 src = fetchurl {
1084 url = "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz";
1085 sha1 = "5dd9da6ee3a5f302077436290cb717d3f4a54e02";
1086 };
1087 };
1088 "assert-plus-1.0.0" = {
1089 name = "assert-plus";
1090 packageName = "assert-plus";
1091 version = "1.0.0";
1092 src = fetchurl {
1093 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
1094 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
1095 };
1096 };
1097 1637 "jsprim-1.4.1" = {
1098 1638 name = "jsprim";
1099 1639 packageName = "jsprim";
1100 1640 version = "1.4.1";
1101 1641 src = fetchurl {
1102 1642 url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
1103 1643 sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
1104 1644 };
1105 1645 };
1106 "sshpk-1.13.1" = {
1107 name = "sshpk";
1108 packageName = "sshpk";
1109 version = "1.13.1";
1110 src = fetchurl {
1111 url = "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz";
1112 sha1 = "512df6da6287144316dc4c18fe1cf1d940739be3";
1113 };
1114 };
1115 "extsprintf-1.3.0" = {
1116 name = "extsprintf";
1117 packageName = "extsprintf";
1118 version = "1.3.0";
1119 src = fetchurl {
1120 url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
1121 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
1122 };
1123 };
1124 "json-schema-0.2.3" = {
1125 name = "json-schema";
1126 packageName = "json-schema";
1127 version = "0.2.3";
1128 src = fetchurl {
1129 url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
1130 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
1131 };
1132 };
1133 "verror-1.10.0" = {
1134 name = "verror";
1135 packageName = "verror";
1136 version = "1.10.0";
1137 src = fetchurl {
1138 url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
1139 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
1140 };
1141 };
1142 "core-util-is-1.0.2" = {
1143 name = "core-util-is";
1144 packageName = "core-util-is";
1145 version = "1.0.2";
1146 src = fetchurl {
1147 url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
1148 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
1149 };
1150 };
1151 "asn1-0.2.3" = {
1152 name = "asn1";
1153 packageName = "asn1";
1154 version = "0.2.3";
1155 src = fetchurl {
1156 url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
1157 sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
1158 };
1159 };
1160 "dashdash-1.14.1" = {
1161 name = "dashdash";
1162 packageName = "dashdash";
1163 version = "1.14.1";
1164 src = fetchurl {
1165 url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
1166 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
1167 };
1168 };
1169 "getpass-0.1.7" = {
1170 name = "getpass";
1171 packageName = "getpass";
1172 version = "0.1.7";
1173 src = fetchurl {
1174 url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
1175 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
1176 };
1177 };
1178 "jsbn-0.1.1" = {
1179 name = "jsbn";
1180 packageName = "jsbn";
1181 version = "0.1.1";
1182 src = fetchurl {
1183 url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
1184 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
1185 };
1186 };
1187 "tweetnacl-0.14.5" = {
1188 name = "tweetnacl";
1189 packageName = "tweetnacl";
1190 version = "0.14.5";
1191 src = fetchurl {
1192 url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
1193 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
1194 };
1195 };
1196 "ecc-jsbn-0.1.1" = {
1197 name = "ecc-jsbn";
1198 packageName = "ecc-jsbn";
1199 version = "0.1.1";
1200 src = fetchurl {
1201 url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz";
1202 sha1 = "0fc73a9ed5f0d53c38193398523ef7e543777505";
1203 };
1204 };
1205 "bcrypt-pbkdf-1.0.1" = {
1206 name = "bcrypt-pbkdf";
1207 packageName = "bcrypt-pbkdf";
1208 version = "1.0.1";
1209 src = fetchurl {
1210 url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz";
1211 sha1 = "63bc5dcb61331b92bc05fd528953c33462a06f8d";
1212 };
1213 };
1214 "mime-db-1.30.0" = {
1215 name = "mime-db";
1216 packageName = "mime-db";
1217 version = "1.30.0";
1218 src = fetchurl {
1219 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz";
1220 sha1 = "74c643da2dd9d6a45399963465b26d5ca7d71f01";
1221 };
1222 };
1223 "punycode-1.4.1" = {
1224 name = "punycode";
1225 packageName = "punycode";
1226 version = "1.4.1";
1227 src = fetchurl {
1228 url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
1229 sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
1230 };
1231 };
1232 "gaze-0.5.2" = {
1233 name = "gaze";
1234 packageName = "gaze";
1235 version = "0.5.2";
1236 src = fetchurl {
1237 url = "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz";
1238 sha1 = "40b709537d24d1d45767db5a908689dfe69ac44f";
1239 };
1240 };
1241 "tiny-lr-fork-0.0.5" = {
1242 name = "tiny-lr-fork";
1243 packageName = "tiny-lr-fork";
1244 version = "0.0.5";
1245 src = fetchurl {
1246 url = "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz";
1247 sha1 = "1e99e1e2a8469b736ab97d97eefa98c71f76ed0a";
1248 };
1249 };
1250 "async-0.2.10" = {
1251 name = "async";
1252 packageName = "async";
1253 version = "0.2.10";
1254 src = fetchurl {
1255 url = "https://registry.npmjs.org/async/-/async-0.2.10.tgz";
1256 sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
1257 };
1258 };
1259 "globule-0.1.0" = {
1260 name = "globule";
1261 packageName = "globule";
1262 version = "0.1.0";
1263 src = fetchurl {
1264 url = "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz";
1265 sha1 = "d9c8edde1da79d125a151b79533b978676346ae5";
1646 "kew-0.7.0" = {
1647 name = "kew";
1648 packageName = "kew";
1649 version = "0.7.0";
1650 src = fetchurl {
1651 url = "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz";
1652 sha1 = "79d93d2d33363d6fdd2970b335d9141ad591d79b";
1653 };
1654 };
1655 "klaw-1.3.1" = {
1656 name = "klaw";
1657 packageName = "klaw";
1658 version = "1.3.1";
1659 src = fetchurl {
1660 url = "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz";
1661 sha1 = "4088433b46b3b1ba259d78785d8e96f73ba02439";
1662 };
1663 };
1664 "less-2.7.3" = {
1665 name = "less";
1666 packageName = "less";
1667 version = "2.7.3";
1668 src = fetchurl {
1669 url = "https://registry.npmjs.org/less/-/less-2.7.3.tgz";
1670 sha512 = "KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==";
1671 };
1672 };
1673 "levn-0.3.0" = {
1674 name = "levn";
1675 packageName = "levn";
1676 version = "0.3.0";
1677 src = fetchurl {
1678 url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
1679 sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
1680 };
1681 };
1682 "lodash-0.9.2" = {
1683 name = "lodash";
1684 packageName = "lodash";
1685 version = "0.9.2";
1686 src = fetchurl {
1687 url = "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz";
1688 sha1 = "8f3499c5245d346d682e5b0d3b40767e09f1a92c";
1266 1689 };
1267 1690 };
1268 1691 "lodash-1.0.2" = {
1269 1692 name = "lodash";
1270 1693 packageName = "lodash";
1271 1694 version = "1.0.2";
1272 1695 src = fetchurl {
1273 1696 url = "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz";
1274 1697 sha1 = "8f57560c83b59fc270bd3d561b690043430e2551";
1275 1698 };
1276 1699 };
1277 "qs-0.5.6" = {
1278 name = "qs";
1279 packageName = "qs";
1280 version = "0.5.6";
1281 src = fetchurl {
1282 url = "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz";
1283 sha1 = "31b1ad058567651c526921506b9a8793911a0384";
1284 };
1285 };
1286 "faye-websocket-0.4.4" = {
1287 name = "faye-websocket";
1288 packageName = "faye-websocket";
1289 version = "0.4.4";
1290 src = fetchurl {
1291 url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz";
1292 sha1 = "c14c5b3bf14d7417ffbfd990c0a7495cd9f337bc";
1293 };
1294 };
1295 "noptify-0.0.3" = {
1296 name = "noptify";
1297 packageName = "noptify";
1298 version = "0.0.3";
1299 src = fetchurl {
1300 url = "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz";
1301 sha1 = "58f654a73d9753df0c51d9686dc92104a67f4bbb";
1302 };
1303 };
1304 "debug-0.7.4" = {
1305 name = "debug";
1306 packageName = "debug";
1307 version = "0.7.4";
1308 src = fetchurl {
1309 url = "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz";
1310 sha1 = "06e1ea8082c2cb14e39806e22e2f6f757f92af39";
1700 "lodash-2.4.2" = {
1701 name = "lodash";
1702 packageName = "lodash";
1703 version = "2.4.2";
1704 src = fetchurl {
1705 url = "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz";
1706 sha1 = "fadd834b9683073da179b3eae6d9c0d15053f73e";
1707 };
1708 };
1709 "lodash-4.17.10" = {
1710 name = "lodash";
1711 packageName = "lodash";
1712 version = "4.17.10";
1713 src = fetchurl {
1714 url = "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz";
1715 sha512 = "UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==";
1716 };
1717 };
1718 "lru-cache-2.7.3" = {
1719 name = "lru-cache";
1720 packageName = "lru-cache";
1721 version = "2.7.3";
1722 src = fetchurl {
1723 url = "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz";
1724 sha1 = "6d4524e8b955f95d4f5b58851ce21dd72fb4e952";
1725 };
1726 };
1727 "mime-1.6.0" = {
1728 name = "mime";
1729 packageName = "mime";
1730 version = "1.6.0";
1731 src = fetchurl {
1732 url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz";
1733 sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
1734 };
1735 };
1736 "mime-db-1.35.0" = {
1737 name = "mime-db";
1738 packageName = "mime-db";
1739 version = "1.35.0";
1740 src = fetchurl {
1741 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz";
1742 sha512 = "JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==";
1743 };
1744 };
1745 "mime-types-2.1.19" = {
1746 name = "mime-types";
1747 packageName = "mime-types";
1748 version = "2.1.19";
1749 src = fetchurl {
1750 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz";
1751 sha512 = "P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==";
1752 };
1753 };
1754 "minimatch-0.2.14" = {
1755 name = "minimatch";
1756 packageName = "minimatch";
1757 version = "0.2.14";
1758 src = fetchurl {
1759 url = "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz";
1760 sha1 = "c74e780574f63c6f9a090e90efbe6ef53a6a756a";
1761 };
1762 };
1763 "minimatch-0.3.0" = {
1764 name = "minimatch";
1765 packageName = "minimatch";
1766 version = "0.3.0";
1767 src = fetchurl {
1768 url = "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz";
1769 sha1 = "275d8edaac4f1bb3326472089e7949c8394699dd";
1770 };
1771 };
1772 "minimatch-3.0.4" = {
1773 name = "minimatch";
1774 packageName = "minimatch";
1775 version = "3.0.4";
1776 src = fetchurl {
1777 url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
1778 sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
1779 };
1780 };
1781 "minimist-0.0.8" = {
1782 name = "minimist";
1783 packageName = "minimist";
1784 version = "0.0.8";
1785 src = fetchurl {
1786 url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
1787 sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
1788 };
1789 };
1790 "minipass-2.3.3" = {
1791 name = "minipass";
1792 packageName = "minipass";
1793 version = "2.3.3";
1794 src = fetchurl {
1795 url = "https://registry.npmjs.org/minipass/-/minipass-2.3.3.tgz";
1796 sha512 = "/jAn9/tEX4gnpyRATxgHEOV6xbcyxgT7iUnxo9Y3+OB0zX00TgKIv/2FZCf5brBbICcwbLqVv2ImjvWWrQMSYw==";
1797 };
1798 };
1799 "minizlib-1.1.0" = {
1800 name = "minizlib";
1801 packageName = "minizlib";
1802 version = "1.1.0";
1803 src = fetchurl {
1804 url = "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz";
1805 sha512 = "4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==";
1806 };
1807 };
1808 "mkdirp-0.3.5" = {
1809 name = "mkdirp";
1810 packageName = "mkdirp";
1811 version = "0.3.5";
1812 src = fetchurl {
1813 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz";
1814 sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7";
1815 };
1816 };
1817 "mkdirp-0.5.1" = {
1818 name = "mkdirp";
1819 packageName = "mkdirp";
1820 version = "0.5.1";
1821 src = fetchurl {
1822 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
1823 sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
1824 };
1825 };
1826 "moment-2.22.2" = {
1827 name = "moment";
1828 packageName = "moment";
1829 version = "2.22.2";
1830 src = fetchurl {
1831 url = "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz";
1832 sha1 = "3c257f9839fc0e93ff53149632239eb90783ff66";
1833 };
1834 };
1835 "mousetrap-1.6.2" = {
1836 name = "mousetrap";
1837 packageName = "mousetrap";
1838 version = "1.6.2";
1839 src = fetchurl {
1840 url = "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.2.tgz";
1841 sha512 = "jDjhi7wlHwdO6q6DS7YRmSHcuI+RVxadBkLt3KHrhd3C2b+w5pKefg3oj5beTcHZyVFA9Aksf+yEE1y5jxUjVA==";
1842 };
1843 };
1844 "ms-2.0.0" = {
1845 name = "ms";
1846 packageName = "ms";
1847 version = "2.0.0";
1848 src = fetchurl {
1849 url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
1850 sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
1851 };
1852 };
1853 "ncp-0.4.2" = {
1854 name = "ncp";
1855 packageName = "ncp";
1856 version = "0.4.2";
1857 src = fetchurl {
1858 url = "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz";
1859 sha1 = "abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574";
1860 };
1861 };
1862 "nijs-0.0.25" = {
1863 name = "nijs";
1864 packageName = "nijs";
1865 version = "0.0.25";
1866 src = fetchurl {
1867 url = "https://registry.npmjs.org/nijs/-/nijs-0.0.25.tgz";
1868 sha1 = "04b035cb530d46859d1018839a518c029133f676";
1869 };
1870 };
1871 "node2nix-1.6.0" = {
1872 name = "node2nix";
1873 packageName = "node2nix";
1874 version = "1.6.0";
1875 src = fetchurl {
1876 url = "https://registry.npmjs.org/node2nix/-/node2nix-1.6.0.tgz";
1877 sha512 = "MJY6SsQH3pN59R9N3nMz/L8BsbQ0DlvSF38mgg1fwfwgnaJ+y600s3Nd0vZ+cnETUH+4OPETc4QohflccjPUYw==";
1878 };
1879 };
1880 "nopt-1.0.10" = {
1881 name = "nopt";
1882 packageName = "nopt";
1883 version = "1.0.10";
1884 src = fetchurl {
1885 url = "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz";
1886 sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee";
1311 1887 };
1312 1888 };
1313 1889 "nopt-2.0.0" = {
1314 1890 name = "nopt";
1315 1891 packageName = "nopt";
1316 1892 version = "2.0.0";
1317 1893 src = fetchurl {
1318 1894 url = "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz";
1319 1895 sha1 = "ca7416f20a5e3f9c3b86180f96295fa3d0b52e0d";
1320 1896 };
1321 1897 };
1322 "command-line-args-3.0.5" = {
1323 name = "command-line-args";
1324 packageName = "command-line-args";
1325 version = "3.0.5";
1326 src = fetchurl {
1327 url = "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz";
1328 sha1 = "5bd4ad45e7983e5c1344918e40280ee2693c5ac0";
1329 };
1330 };
1331 "command-line-usage-3.0.8" = {
1332 name = "command-line-usage";
1333 packageName = "command-line-usage";
1334 version = "3.0.8";
1335 src = fetchurl {
1336 url = "https://registry.npmjs.org/command-line-usage/-/command-line-usage-3.0.8.tgz";
1337 sha1 = "b6a20978c1b383477f5c11a529428b880bfe0f4d";
1338 };
1339 };
1340 "dom5-1.3.6" = {
1341 name = "dom5";
1342 packageName = "dom5";
1343 version = "1.3.6";
1344 src = fetchurl {
1345 url = "https://registry.npmjs.org/dom5/-/dom5-1.3.6.tgz";
1346 sha1 = "a7088a9fc5f3b08dc9f6eda4c7abaeb241945e0d";
1347 };
1348 };
1349 "array-back-1.0.4" = {
1350 name = "array-back";
1351 packageName = "array-back";
1352 version = "1.0.4";
1353 src = fetchurl {
1354 url = "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz";
1355 sha1 = "644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b";
1356 };
1357 };
1358 "feature-detect-es6-1.3.1" = {
1359 name = "feature-detect-es6";
1360 packageName = "feature-detect-es6";
1361 version = "1.3.1";
1362 src = fetchurl {
1363 url = "https://registry.npmjs.org/feature-detect-es6/-/feature-detect-es6-1.3.1.tgz";
1364 sha1 = "f888736af9cb0c91f55663bfa4762eb96ee7047f";
1365 };
1366 };
1367 "find-replace-1.0.3" = {
1368 name = "find-replace";
1369 packageName = "find-replace";
1370 version = "1.0.3";
1371 src = fetchurl {
1372 url = "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz";
1373 sha1 = "b88e7364d2d9c959559f388c66670d6130441fa0";
1374 };
1375 };
1376 "typical-2.6.1" = {
1377 name = "typical";
1378 packageName = "typical";
1379 version = "2.6.1";
1380 src = fetchurl {
1381 url = "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz";
1382 sha1 = "5c080e5d661cbbe38259d2e70a3c7253e873881d";
1383 };
1384 };
1385 "test-value-2.1.0" = {
1386 name = "test-value";
1387 packageName = "test-value";
1388 version = "2.1.0";
1389 src = fetchurl {
1390 url = "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz";
1391 sha1 = "11da6ff670f3471a73b625ca4f3fdcf7bb748291";
1392 };
1393 };
1394 "ansi-escape-sequences-3.0.0" = {
1395 name = "ansi-escape-sequences";
1396 packageName = "ansi-escape-sequences";
1397 version = "3.0.0";
1398 src = fetchurl {
1399 url = "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz";
1400 sha1 = "1c18394b6af9b76ff9a63509fa497669fd2ce53e";
1401 };
1402 };
1403 "table-layout-0.3.0" = {
1404 name = "table-layout";
1405 packageName = "table-layout";
1406 version = "0.3.0";
1407 src = fetchurl {
1408 url = "https://registry.npmjs.org/table-layout/-/table-layout-0.3.0.tgz";
1409 sha1 = "6ee20dc483db371b3e5c87f704ed2f7c799d2c9a";
1410 };
1411 };
1412 "core-js-2.5.1" = {
1413 name = "core-js";
1414 packageName = "core-js";
1415 version = "2.5.1";
1416 src = fetchurl {
1417 url = "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz";
1418 sha1 = "ae6874dc66937789b80754ff5428df66819ca50b";
1419 };
1420 };
1421 "deep-extend-0.4.2" = {
1422 name = "deep-extend";
1423 packageName = "deep-extend";
1424 version = "0.4.2";
1425 src = fetchurl {
1426 url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz";
1427 sha1 = "48b699c27e334bf89f10892be432f6e4c7d34a7f";
1428 };
1429 };
1430 "wordwrapjs-2.0.0" = {
1431 name = "wordwrapjs";
1432 packageName = "wordwrapjs";
1433 version = "2.0.0";
1434 src = fetchurl {
1435 url = "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-2.0.0.tgz";
1436 sha1 = "ab55f695e6118da93858fdd70c053d1c5e01ac20";
1437 };
1438 };
1439 "reduce-flatten-1.0.1" = {
1440 name = "reduce-flatten";
1441 packageName = "reduce-flatten";
1442 version = "1.0.1";
1443 src = fetchurl {
1444 url = "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz";
1445 sha1 = "258c78efd153ddf93cb561237f61184f3696e327";
1446 };
1447 };
1448 "@types/clone-0.1.30" = {
1449 name = "@types/clone";
1450 packageName = "@types/clone";
1451 version = "0.1.30";
1452 src = fetchurl {
1453 url = "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz";
1454 sha1 = "e7365648c1b42136a59c7d5040637b3b5c83b614";
1455 };
1456 };
1457 "@types/node-4.2.20" = {
1458 name = "@types/node";
1459 packageName = "@types/node";
1460 version = "4.2.20";
1461 src = fetchurl {
1462 url = "https://registry.npmjs.org/@types/node/-/node-4.2.20.tgz";
1463 sha1 = "3f7dceff43e07cfff4407fc3495d98a533b32267";
1464 };
1465 };
1466 "@types/parse5-0.0.31" = {
1467 name = "@types/parse5";
1468 packageName = "@types/parse5";
1469 version = "0.0.31";
1470 src = fetchurl {
1471 url = "https://registry.npmjs.org/@types/parse5/-/parse5-0.0.31.tgz";
1472 sha1 = "e827a493a443b156e1b582a2e4c3bdc0040f2ee7";
1473 };
1474 };
1475 "clone-1.0.2" = {
1476 name = "clone";
1477 packageName = "clone";
1478 version = "1.0.2";
1479 src = fetchurl {
1480 url = "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz";
1481 sha1 = "260b7a99ebb1edfe247538175f783243cb19d149";
1482 };
1483 };
1484 "parse5-1.5.1" = {
1485 name = "parse5";
1486 packageName = "parse5";
1487 version = "1.5.1";
1488 src = fetchurl {
1489 url = "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz";
1490 sha1 = "9b7f3b0de32be78dc2401b17573ccaf0f6f59d94";
1491 };
1492 };
1493 "@types/node-6.0.88" = {
1494 name = "@types/node";
1495 packageName = "@types/node";
1496 version = "6.0.88";
1497 src = fetchurl {
1498 url = "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz";
1499 sha1 = "f618f11a944f6a18d92b5c472028728a3e3d4b66";
1500 };
1501 };
1502 "es6-promise-2.3.0" = {
1503 name = "es6-promise";
1504 packageName = "es6-promise";
1505 version = "2.3.0";
1506 src = fetchurl {
1507 url = "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz";
1508 sha1 = "96edb9f2fdb01995822b263dd8aadab6748181bc";
1509 };
1510 };
1511 "hydrolysis-1.25.0" = {
1512 name = "hydrolysis";
1513 packageName = "hydrolysis";
1514 version = "1.25.0";
1515 src = fetchurl {
1516 url = "https://registry.npmjs.org/hydrolysis/-/hydrolysis-1.25.0.tgz";
1517 sha1 = "a4fb14a37a1e03b0db52d8aaa57c682272a14d84";
1518 };
1519 };
1520 1898 "nopt-3.0.6" = {
1521 1899 name = "nopt";
1522 1900 packageName = "nopt";
1523 1901 version = "3.0.6";
1524 1902 src = fetchurl {
1525 1903 url = "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz";
1526 1904 sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
1527 1905 };
1528 1906 };
1529 "path-posix-1.0.0" = {
1530 name = "path-posix";
1531 packageName = "path-posix";
1532 version = "1.0.0";
1533 src = fetchurl {
1534 url = "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz";
1535 sha1 = "06b26113f56beab042545a23bfa88003ccac260f";
1536 };
1537 };
1538 "acorn-3.3.0" = {
1539 name = "acorn";
1540 packageName = "acorn";
1541 version = "3.3.0";
1542 src = fetchurl {
1543 url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz";
1544 sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
1545 };
1546 };
1547 "babel-polyfill-6.26.0" = {
1548 name = "babel-polyfill";
1549 packageName = "babel-polyfill";
1550 version = "6.26.0";
1551 src = fetchurl {
1552 url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz";
1553 sha1 = "379937abc67d7895970adc621f284cd966cf2153";
1554 };
1555 };
1556 "doctrine-0.7.2" = {
1557 name = "doctrine";
1558 packageName = "doctrine";
1559 version = "0.7.2";
1560 src = fetchurl {
1561 url = "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz";
1562 sha1 = "7cb860359ba3be90e040b26b729ce4bfa654c523";
1563 };
1564 };
1565 "dom5-1.1.0" = {
1566 name = "dom5";
1567 packageName = "dom5";
1568 version = "1.1.0";
1569 src = fetchurl {
1570 url = "https://registry.npmjs.org/dom5/-/dom5-1.1.0.tgz";
1571 sha1 = "3a0c7700c083ab4c4d26938a78b0f0c6dcc37794";
1572 };
1573 };
1574 "escodegen-1.9.0" = {
1575 name = "escodegen";
1576 packageName = "escodegen";
1577 version = "1.9.0";
1578 src = fetchurl {
1579 url = "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz";
1580 sha1 = "9811a2f265dc1cd3894420ee3717064b632b8852";
1581 };
1582 };
1583 "espree-3.5.1" = {
1584 name = "espree";
1585 packageName = "espree";
1586 version = "3.5.1";
1587 src = fetchurl {
1588 url = "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz";
1589 sha1 = "0c988b8ab46db53100a1954ae4ba995ddd27d87e";
1590 };
1591 };
1592 "estraverse-3.1.0" = {
1593 name = "estraverse";
1594 packageName = "estraverse";
1595 version = "3.1.0";
1596 src = fetchurl {
1597 url = "https://registry.npmjs.org/estraverse/-/estraverse-3.1.0.tgz";
1598 sha1 = "15e28a446b8b82bc700ccc8b96c78af4da0d6cba";
1599 };
1600 };
1601 "path-is-absolute-1.0.1" = {
1602 name = "path-is-absolute";
1603 packageName = "path-is-absolute";
1907 "noptify-0.0.3" = {
1908 name = "noptify";
1909 packageName = "noptify";
1910 version = "0.0.3";
1911 src = fetchurl {
1912 url = "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz";
1913 sha1 = "58f654a73d9753df0c51d9686dc92104a67f4bbb";
1914 };
1915 };
1916 "normalize-package-data-2.4.0" = {
1917 name = "normalize-package-data";
1918 packageName = "normalize-package-data";
1919 version = "2.4.0";
1920 src = fetchurl {
1921 url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz";
1922 sha512 = "9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==";
1923 };
1924 };
1925 "npm-package-arg-6.1.0" = {
1926 name = "npm-package-arg";
1927 packageName = "npm-package-arg";
1928 version = "6.1.0";
1929 src = fetchurl {
1930 url = "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz";
1931 sha512 = "zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==";
1932 };
1933 };
1934 "npm-registry-client-8.5.1" = {
1935 name = "npm-registry-client";
1936 packageName = "npm-registry-client";
1937 version = "8.5.1";
1938 src = fetchurl {
1939 url = "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.5.1.tgz";
1940 sha512 = "7rjGF2eA7hKDidGyEWmHTiKfXkbrcQAsGL/Rh4Rt3x3YNRNHhwaTzVJfW3aNvvlhg4G62VCluif0sLCb/i51Hg==";
1941 };
1942 };
1943 "npmconf-2.1.3" = {
1944 name = "npmconf";
1945 packageName = "npmconf";
1946 version = "2.1.3";
1947 src = fetchurl {
1948 url = "https://registry.npmjs.org/npmconf/-/npmconf-2.1.3.tgz";
1949 sha512 = "iTK+HI68GceCoGOHAQiJ/ik1iDfI7S+cgyG8A+PP18IU3X83kRhQIRhAUNj4Bp2JMx6Zrt5kCiozYa9uGWTjhA==";
1950 };
1951 };
1952 "npmlog-4.1.2" = {
1953 name = "npmlog";
1954 packageName = "npmlog";
1955 version = "4.1.2";
1956 src = fetchurl {
1957 url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
1958 sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==";
1959 };
1960 };
1961 "number-is-nan-1.0.1" = {
1962 name = "number-is-nan";
1963 packageName = "number-is-nan";
1604 1964 version = "1.0.1";
1605 1965 src = fetchurl {
1606 url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
1607 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
1608 };
1609 };
1610 "babel-runtime-6.26.0" = {
1611 name = "babel-runtime";
1612 packageName = "babel-runtime";
1613 version = "6.26.0";
1614 src = fetchurl {
1615 url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz";
1616 sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
1617 };
1618 };
1619 "regenerator-runtime-0.10.5" = {
1620 name = "regenerator-runtime";
1621 packageName = "regenerator-runtime";
1622 version = "0.10.5";
1623 src = fetchurl {
1624 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz";
1625 sha1 = "336c3efc1220adcedda2c9fab67b5a7955a33658";
1626 };
1627 };
1628 "regenerator-runtime-0.11.0" = {
1629 name = "regenerator-runtime";
1630 packageName = "regenerator-runtime";
1631 version = "0.11.0";
1632 src = fetchurl {
1633 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz";
1634 sha1 = "7e54fe5b5ccd5d6624ea6255c3473be090b802e1";
1635 };
1636 };
1637 "esutils-1.1.6" = {
1638 name = "esutils";
1639 packageName = "esutils";
1640 version = "1.1.6";
1641 src = fetchurl {
1642 url = "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz";
1643 sha1 = "c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375";
1644 };
1645 };
1646 "isarray-0.0.1" = {
1647 name = "isarray";
1648 packageName = "isarray";
1649 version = "0.0.1";
1650 src = fetchurl {
1651 url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
1652 sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
1653 };
1654 };
1655 "estraverse-4.2.0" = {
1656 name = "estraverse";
1657 packageName = "estraverse";
1658 version = "4.2.0";
1659 src = fetchurl {
1660 url = "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz";
1661 sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
1662 };
1663 };
1664 "esutils-2.0.2" = {
1665 name = "esutils";
1666 packageName = "esutils";
1667 version = "2.0.2";
1668 src = fetchurl {
1669 url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz";
1670 sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
1671 };
1672 };
1673 "esprima-3.1.3" = {
1674 name = "esprima";
1675 packageName = "esprima";
1676 version = "3.1.3";
1677 src = fetchurl {
1678 url = "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz";
1679 sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633";
1966 url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
1967 sha1 = "097b602b53422a522c1afb8790318336941a011d";
1968 };
1969 };
1970 "oauth-sign-0.8.2" = {
1971 name = "oauth-sign";
1972 packageName = "oauth-sign";
1973 version = "0.8.2";
1974 src = fetchurl {
1975 url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz";
1976 sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
1977 };
1978 };
1979 "object-assign-4.1.1" = {
1980 name = "object-assign";
1981 packageName = "object-assign";
1982 version = "4.1.1";
1983 src = fetchurl {
1984 url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
1985 sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
1986 };
1987 };
1988 "once-1.3.3" = {
1989 name = "once";
1990 packageName = "once";
1991 version = "1.3.3";
1992 src = fetchurl {
1993 url = "https://registry.npmjs.org/once/-/once-1.3.3.tgz";
1994 sha1 = "b2e261557ce4c314ec8304f3fa82663e4297ca20";
1995 };
1996 };
1997 "once-1.4.0" = {
1998 name = "once";
1999 packageName = "once";
2000 version = "1.4.0";
2001 src = fetchurl {
2002 url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
2003 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
1680 2004 };
1681 2005 };
1682 2006 "optionator-0.8.2" = {
1683 2007 name = "optionator";
1684 2008 packageName = "optionator";
1685 2009 version = "0.8.2";
1686 2010 src = fetchurl {
1687 2011 url = "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz";
1688 2012 sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64";
1689 2013 };
1690 2014 };
1691 "prelude-ls-1.1.2" = {
1692 name = "prelude-ls";
1693 packageName = "prelude-ls";
1694 version = "1.1.2";
1695 src = fetchurl {
1696 url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
1697 sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
1698 };
1699 };
1700 "deep-is-0.1.3" = {
1701 name = "deep-is";
1702 packageName = "deep-is";
1703 version = "0.1.3";
1704 src = fetchurl {
1705 url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
1706 sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
1707 };
1708 };
1709 "wordwrap-1.0.0" = {
1710 name = "wordwrap";
1711 packageName = "wordwrap";
1712 version = "1.0.0";
1713 src = fetchurl {
1714 url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz";
1715 sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
1716 };
1717 };
1718 "type-check-0.3.2" = {
1719 name = "type-check";
1720 packageName = "type-check";
1721 version = "0.3.2";
1722 src = fetchurl {
1723 url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
1724 sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
1725 };
1726 };
1727 "levn-0.3.0" = {
1728 name = "levn";
1729 packageName = "levn";
1730 version = "0.3.0";
1731 src = fetchurl {
1732 url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
1733 sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
1734 };
1735 };
1736 "fast-levenshtein-2.0.6" = {
1737 name = "fast-levenshtein";
1738 packageName = "fast-levenshtein";
1739 version = "2.0.6";
1740 src = fetchurl {
1741 url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
1742 sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
1743 };
1744 };
1745 "acorn-5.1.2" = {
1746 name = "acorn";
1747 packageName = "acorn";
1748 version = "5.1.2";
1749 src = fetchurl {
1750 url = "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz";
1751 sha1 = "911cb53e036807cf0fa778dc5d370fbd864246d7";
1752 };
1753 };
1754 "acorn-jsx-3.0.1" = {
1755 name = "acorn-jsx";
1756 packageName = "acorn-jsx";
1757 version = "3.0.1";
1758 src = fetchurl {
1759 url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz";
1760 sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b";
1761 };
1762 };
1763 "object-assign-4.1.1" = {
1764 name = "object-assign";
1765 packageName = "object-assign";
1766 version = "4.1.1";
1767 src = fetchurl {
1768 url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
1769 sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
1770 };
1771 };
1772 "crisper-1.2.0" = {
1773 name = "crisper";
1774 packageName = "crisper";
1775 version = "1.2.0";
1776 src = fetchurl {
1777 url = "https://registry.npmjs.org/crisper/-/crisper-1.2.0.tgz";
1778 sha1 = "9a91f597d71f6110294e076ad44dbb3408568e46";
1779 };
1780 };
1781 2015 "optparse-1.0.5" = {
1782 2016 name = "optparse";
1783 2017 packageName = "optparse";
1784 2018 version = "1.0.5";
1785 2019 src = fetchurl {
1786 2020 url = "https://registry.npmjs.org/optparse/-/optparse-1.0.5.tgz";
1787 2021 sha1 = "75e75a96506611eb1c65ba89018ff08a981e2c16";
1788 2022 };
1789 2023 };
1790 "semver-5.4.1" = {
1791 name = "semver";
1792 packageName = "semver";
1793 version = "5.4.1";
1794 src = fetchurl {
1795 url = "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz";
1796 sha1 = "e059c09d8571f0540823733433505d3a2f00b18e";
1797 };
1798 };
1799 "npm-registry-client-8.4.0" = {
1800 name = "npm-registry-client";
1801 packageName = "npm-registry-client";
1802 version = "8.4.0";
1803 src = fetchurl {
1804 url = "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.4.0.tgz";
1805 sha1 = "d52b901685647fc62a4c03eafecb6ceaa5018d4c";
1806 };
1807 };
1808 "npmconf-2.1.2" = {
1809 name = "npmconf";
1810 packageName = "npmconf";
1811 version = "2.1.2";
1812 src = fetchurl {
1813 url = "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz";
1814 sha1 = "66606a4a736f1e77a059aa071a79c94ab781853a";
1815 };
1816 };
1817 "tar-3.1.15" = {
1818 name = "tar";
1819 packageName = "tar";
1820 version = "3.1.15";
1821 src = fetchurl {
1822 url = "https://registry.npmjs.org/tar/-/tar-3.1.15.tgz";
1823 sha1 = "cccdc35b90917d58e4c3837795d5d022d7a1f46f";
1824 };
1825 };
1826 "temp-0.8.3" = {
1827 name = "temp";
1828 packageName = "temp";
1829 version = "0.8.3";
1830 src = fetchurl {
1831 url = "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz";
1832 sha1 = "e0c6bc4d26b903124410e4fed81103014dfc1f59";
1833 };
1834 };
1835 "fs.extra-1.3.2" = {
1836 name = "fs.extra";
1837 packageName = "fs.extra";
1838 version = "1.3.2";
1839 src = fetchurl {
1840 url = "https://registry.npmjs.org/fs.extra/-/fs.extra-1.3.2.tgz";
1841 sha1 = "dd023f93013bee24531f1b33514c37b20fd93349";
1842 };
1843 };
1844 "findit-2.0.0" = {
1845 name = "findit";
1846 packageName = "findit";
1847 version = "2.0.0";
1848 src = fetchurl {
1849 url = "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz";
1850 sha1 = "6509f0126af4c178551cfa99394e032e13a4d56e";
1851 };
1852 };
1853 "base64-js-1.2.1" = {
1854 name = "base64-js";
1855 packageName = "base64-js";
1856 version = "1.2.1";
1857 src = fetchurl {
1858 url = "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz";
1859 sha1 = "a91947da1f4a516ea38e5b4ec0ec3773675e0886";
1860 };
1861 };
1862 "slasp-0.0.4" = {
1863 name = "slasp";
1864 packageName = "slasp";
1865 version = "0.0.4";
1866 src = fetchurl {
1867 url = "https://registry.npmjs.org/slasp/-/slasp-0.0.4.tgz";
1868 sha1 = "9adc26ee729a0f95095851a5489f87a5258d57a9";
1869 };
1870 };
1871 "nijs-0.0.23" = {
1872 name = "nijs";
1873 packageName = "nijs";
1874 version = "0.0.23";
1875 src = fetchurl {
1876 url = "https://registry.npmjs.org/nijs/-/nijs-0.0.23.tgz";
1877 sha1 = "dbf8f4a0acafbe3b8d9b71c24cbd1d851de6c31a";
1878 };
1879 };
1880 "concat-stream-1.6.0" = {
1881 name = "concat-stream";
1882 packageName = "concat-stream";
1883 version = "1.6.0";
1884 src = fetchurl {
1885 url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz";
1886 sha1 = "0aac662fd52be78964d5532f694784e70110acf7";
1887 };
1888 };
1889 "normalize-package-data-2.4.0" = {
1890 name = "normalize-package-data";
1891 packageName = "normalize-package-data";
1892 version = "2.4.0";
1893 src = fetchurl {
1894 url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz";
1895 sha1 = "12f95a307d58352075a04907b84ac8be98ac012f";
1896 };
1897 };
1898 "npm-package-arg-5.1.2" = {
1899 name = "npm-package-arg";
1900 packageName = "npm-package-arg";
1901 version = "5.1.2";
1902 src = fetchurl {
1903 url = "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-5.1.2.tgz";
1904 sha1 = "fb18d17bb61e60900d6312619919bd753755ab37";
1905 };
1906 };
1907 "once-1.4.0" = {
1908 name = "once";
1909 packageName = "once";
1910 version = "1.4.0";
1911 src = fetchurl {
1912 url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
1913 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
1914 };
1915 };
1916 "retry-0.10.1" = {
1917 name = "retry";
1918 packageName = "retry";
1919 version = "0.10.1";
1920 src = fetchurl {
1921 url = "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz";
1922 sha1 = "e76388d217992c252750241d3d3956fed98d8ff4";
1923 };
1924 };
1925 "slide-1.1.6" = {
1926 name = "slide";
1927 packageName = "slide";
1928 version = "1.1.6";
1929 src = fetchurl {
1930 url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz";
1931 sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707";
1932 };
1933 };
1934 "ssri-4.1.6" = {
1935 name = "ssri";
1936 packageName = "ssri";
1937 version = "4.1.6";
1938 src = fetchurl {
1939 url = "https://registry.npmjs.org/ssri/-/ssri-4.1.6.tgz";
1940 sha1 = "0cb49b6ac84457e7bdd466cb730c3cb623e9a25b";
1941 };
1942 };
1943 "npmlog-4.1.2" = {
1944 name = "npmlog";
1945 packageName = "npmlog";
1946 version = "4.1.2";
1947 src = fetchurl {
1948 url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
1949 sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
1950 };
1951 };
1952 "typedarray-0.0.6" = {
1953 name = "typedarray";
1954 packageName = "typedarray";
1955 version = "0.0.6";
1956 src = fetchurl {
1957 url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz";
1958 sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
1959 };
1960 };
1961 "readable-stream-2.3.3" = {
1962 name = "readable-stream";
1963 packageName = "readable-stream";
1964 version = "2.3.3";
1965 src = fetchurl {
1966 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz";
1967 sha1 = "368f2512d79f9d46fdfc71349ae7878bbc1eb95c";
1968 };
1969 };
1970 "isarray-1.0.0" = {
1971 name = "isarray";
1972 packageName = "isarray";
1973 version = "1.0.0";
1974 src = fetchurl {
1975 url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
1976 sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
1977 };
1978 };
1979 "process-nextick-args-1.0.7" = {
1980 name = "process-nextick-args";
1981 packageName = "process-nextick-args";
1982 version = "1.0.7";
1983 src = fetchurl {
1984 url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz";
1985 sha1 = "150e20b756590ad3f91093f25a4f2ad8bff30ba3";
1986 };
1987 };
1988 "string_decoder-1.0.3" = {
1989 name = "string_decoder";
1990 packageName = "string_decoder";
1991 version = "1.0.3";
1992 src = fetchurl {
1993 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz";
1994 sha1 = "0fc67d7c141825de94282dd536bec6b9bce860ab";
1995 };
1996 };
1997 "util-deprecate-1.0.2" = {
1998 name = "util-deprecate";
1999 packageName = "util-deprecate";
2000 version = "1.0.2";
2001 src = fetchurl {
2002 url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
2003 sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
2004 };
2005 };
2006 "hosted-git-info-2.5.0" = {
2007 name = "hosted-git-info";
2008 packageName = "hosted-git-info";
2009 version = "2.5.0";
2010 src = fetchurl {
2011 url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz";
2012 sha1 = "6d60e34b3abbc8313062c3b798ef8d901a07af3c";
2013 };
2014 };
2015 "is-builtin-module-1.0.0" = {
2016 name = "is-builtin-module";
2017 packageName = "is-builtin-module";
2018 version = "1.0.0";
2019 src = fetchurl {
2020 url = "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
2021 sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
2022 };
2023 };
2024 "validate-npm-package-license-3.0.1" = {
2025 name = "validate-npm-package-license";
2026 packageName = "validate-npm-package-license";
2027 version = "3.0.1";
2028 src = fetchurl {
2029 url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz";
2030 sha1 = "2804babe712ad3379459acfbe24746ab2c303fbc";
2031 };
2032 };
2033 "builtin-modules-1.1.1" = {
2034 name = "builtin-modules";
2035 packageName = "builtin-modules";
2036 version = "1.1.1";
2037 src = fetchurl {
2038 url = "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz";
2039 sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
2040 };
2041 };
2042 "spdx-correct-1.0.2" = {
2043 name = "spdx-correct";
2044 packageName = "spdx-correct";
2045 version = "1.0.2";
2046 src = fetchurl {
2047 url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz";
2048 sha1 = "4b3073d933ff51f3912f03ac5519498a4150db40";
2049 };
2050 };
2051 "spdx-expression-parse-1.0.4" = {
2052 name = "spdx-expression-parse";
2053 packageName = "spdx-expression-parse";
2054 version = "1.0.4";
2055 src = fetchurl {
2056 url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz";
2057 sha1 = "9bdf2f20e1f40ed447fbe273266191fced51626c";
2058 };
2059 };
2060 "spdx-license-ids-1.2.2" = {
2061 name = "spdx-license-ids";
2062 packageName = "spdx-license-ids";
2063 version = "1.2.2";
2064 src = fetchurl {
2065 url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz";
2066 sha1 = "c9df7a3424594ade6bd11900d596696dc06bac57";
2067 };
2068 };
2069 "osenv-0.1.4" = {
2070 name = "osenv";
2071 packageName = "osenv";
2072 version = "0.1.4";
2073 src = fetchurl {
2074 url = "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz";
2075 sha1 = "42fe6d5953df06c8064be6f176c3d05aaaa34644";
2076 };
2077 };
2078 "validate-npm-package-name-3.0.0" = {
2079 name = "validate-npm-package-name";
2080 packageName = "validate-npm-package-name";
2081 version = "3.0.0";
2082 src = fetchurl {
2083 url = "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz";
2084 sha1 = "5fa912d81eb7d0c74afc140de7317f0ca7df437e";
2085 };
2086 };
2087 2024 "os-homedir-1.0.2" = {
2088 2025 name = "os-homedir";
2089 2026 packageName = "os-homedir";
2090 2027 version = "1.0.2";
2091 2028 src = fetchurl {
2092 2029 url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
2093 2030 sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
2094 2031 };
2095 2032 };
2096 2033 "os-tmpdir-1.0.2" = {
2097 2034 name = "os-tmpdir";
2098 2035 packageName = "os-tmpdir";
2099 2036 version = "1.0.2";
2100 2037 src = fetchurl {
2101 2038 url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
2102 2039 sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
2103 2040 };
2104 2041 };
2105 "builtins-1.0.3" = {
2106 name = "builtins";
2107 packageName = "builtins";
2108 version = "1.0.3";
2109 src = fetchurl {
2110 url = "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz";
2111 sha1 = "cb94faeb61c8696451db36534e1422f94f0aee88";
2112 };
2113 };
2114 "wrappy-1.0.2" = {
2115 name = "wrappy";
2116 packageName = "wrappy";
2117 version = "1.0.2";
2118 src = fetchurl {
2119 url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
2120 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
2121 };
2122 };
2123 "are-we-there-yet-1.1.4" = {
2124 name = "are-we-there-yet";
2125 packageName = "are-we-there-yet";
2126 version = "1.1.4";
2127 src = fetchurl {
2128 url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz";
2129 sha1 = "bb5dca382bb94f05e15194373d16fd3ba1ca110d";
2130 };
2131 };
2132 "console-control-strings-1.1.0" = {
2133 name = "console-control-strings";
2134 packageName = "console-control-strings";
2135 version = "1.1.0";
2136 src = fetchurl {
2137 url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz";
2138 sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
2139 };
2140 };
2141 "gauge-2.7.4" = {
2142 name = "gauge";
2143 packageName = "gauge";
2144 version = "2.7.4";
2145 src = fetchurl {
2146 url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz";
2147 sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
2148 };
2149 };
2150 "set-blocking-2.0.0" = {
2151 name = "set-blocking";
2152 packageName = "set-blocking";
2153 version = "2.0.0";
2154 src = fetchurl {
2155 url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
2156 sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
2157 };
2158 };
2159 "delegates-1.0.0" = {
2160 name = "delegates";
2161 packageName = "delegates";
2042 "osenv-0.1.5" = {
2043 name = "osenv";
2044 packageName = "osenv";
2045 version = "0.1.5";
2046 src = fetchurl {
2047 url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
2048 sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==";
2049 };
2050 };
2051 "parse5-1.5.1" = {
2052 name = "parse5";
2053 packageName = "parse5";
2054 version = "1.5.1";
2055 src = fetchurl {
2056 url = "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz";
2057 sha1 = "9b7f3b0de32be78dc2401b17573ccaf0f6f59d94";
2058 };
2059 };
2060 "path-is-absolute-1.0.1" = {
2061 name = "path-is-absolute";
2062 packageName = "path-is-absolute";
2063 version = "1.0.1";
2064 src = fetchurl {
2065 url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
2066 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
2067 };
2068 };
2069 "path-posix-1.0.0" = {
2070 name = "path-posix";
2071 packageName = "path-posix";
2162 2072 version = "1.0.0";
2163 2073 src = fetchurl {
2164 url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
2165 sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
2166 };
2167 };
2168 "aproba-1.2.0" = {
2169 name = "aproba";
2170 packageName = "aproba";
2074 url = "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz";
2075 sha1 = "06b26113f56beab042545a23bfa88003ccac260f";
2076 };
2077 };
2078 "pend-1.2.0" = {
2079 name = "pend";
2080 packageName = "pend";
2171 2081 version = "1.2.0";
2172 2082 src = fetchurl {
2173 url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
2174 sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
2175 };
2176 };
2177 "has-unicode-2.0.1" = {
2178 name = "has-unicode";
2179 packageName = "has-unicode";
2083 url = "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz";
2084 sha1 = "7a57eb550a6783f9115331fcf4663d5c8e007a50";
2085 };
2086 };
2087 "performance-now-0.2.0" = {
2088 name = "performance-now";
2089 packageName = "performance-now";
2090 version = "0.2.0";
2091 src = fetchurl {
2092 url = "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz";
2093 sha1 = "33ef30c5c77d4ea21c5a53869d91b56d8f2555e5";
2094 };
2095 };
2096 "phantom-4.0.12" = {
2097 name = "phantom";
2098 packageName = "phantom";
2099 version = "4.0.12";
2100 src = fetchurl {
2101 url = "https://registry.npmjs.org/phantom/-/phantom-4.0.12.tgz";
2102 sha512 = "Tz82XhtPmwCk1FFPmecy7yRGZG2btpzY2KI9fcoPT7zT9det0CcMyfBFPp1S8DqzsnQnm8ZYEfdy528mwVtksA==";
2103 };
2104 };
2105 "phantomjs-prebuilt-2.1.16" = {
2106 name = "phantomjs-prebuilt";
2107 packageName = "phantomjs-prebuilt";
2108 version = "2.1.16";
2109 src = fetchurl {
2110 url = "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz";
2111 sha1 = "efd212a4a3966d3647684ea8ba788549be2aefef";
2112 };
2113 };
2114 "pinkie-2.0.4" = {
2115 name = "pinkie";
2116 packageName = "pinkie";
2117 version = "2.0.4";
2118 src = fetchurl {
2119 url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz";
2120 sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
2121 };
2122 };
2123 "pinkie-promise-2.0.1" = {
2124 name = "pinkie-promise";
2125 packageName = "pinkie-promise";
2180 2126 version = "2.0.1";
2181 2127 src = fetchurl {
2182 url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz";
2183 sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
2184 };
2185 };
2186 "signal-exit-3.0.2" = {
2187 name = "signal-exit";
2188 packageName = "signal-exit";
2189 version = "3.0.2";
2190 src = fetchurl {
2191 url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz";
2192 sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
2193 };
2194 };
2195 "string-width-1.0.2" = {
2196 name = "string-width";
2197 packageName = "string-width";
2198 version = "1.0.2";
2199 src = fetchurl {
2200 url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
2201 sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
2202 };
2203 };
2204 "wide-align-1.1.2" = {
2205 name = "wide-align";
2206 packageName = "wide-align";
2128 url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
2129 sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
2130 };
2131 };
2132 "prelude-ls-1.1.2" = {
2133 name = "prelude-ls";
2134 packageName = "prelude-ls";
2207 2135 version = "1.1.2";
2208 2136 src = fetchurl {
2209 url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz";
2210 sha1 = "571e0f1b0604636ebc0dfc21b0339bbe31341710";
2211 };
2212 };
2213 "code-point-at-1.1.0" = {
2214 name = "code-point-at";
2215 packageName = "code-point-at";
2216 version = "1.1.0";
2217 src = fetchurl {
2218 url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
2219 sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
2220 };
2221 };
2222 "is-fullwidth-code-point-1.0.0" = {
2223 name = "is-fullwidth-code-point";
2224 packageName = "is-fullwidth-code-point";
2225 version = "1.0.0";
2226 src = fetchurl {
2227 url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
2228 sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
2229 };
2230 };
2231 "number-is-nan-1.0.1" = {
2232 name = "number-is-nan";
2233 packageName = "number-is-nan";
2234 version = "1.0.1";
2235 src = fetchurl {
2236 url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
2237 sha1 = "097b602b53422a522c1afb8790318336941a011d";
2238 };
2239 };
2240 "config-chain-1.1.11" = {
2241 name = "config-chain";
2242 packageName = "config-chain";
2243 version = "1.1.11";
2244 src = fetchurl {
2245 url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz";
2246 sha1 = "aba09747dfbe4c3e70e766a6e41586e1859fc6f2";
2247 };
2248 };
2249 "ini-1.3.4" = {
2250 name = "ini";
2251 packageName = "ini";
2252 version = "1.3.4";
2253 src = fetchurl {
2254 url = "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz";
2255 sha1 = "0537cb79daf59b59a1a517dff706c86ec039162e";
2256 };
2257 };
2258 "once-1.3.3" = {
2259 name = "once";
2260 packageName = "once";
2261 version = "1.3.3";
2262 src = fetchurl {
2263 url = "https://registry.npmjs.org/once/-/once-1.3.3.tgz";
2264 sha1 = "b2e261557ce4c314ec8304f3fa82663e4297ca20";
2265 };
2266 };
2267 "semver-4.3.6" = {
2268 name = "semver";
2269 packageName = "semver";
2270 version = "4.3.6";
2271 src = fetchurl {
2272 url = "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz";
2273 sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da";
2274 };
2275 };
2276 "uid-number-0.0.5" = {
2277 name = "uid-number";
2278 packageName = "uid-number";
2279 version = "0.0.5";
2280 src = fetchurl {
2281 url = "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz";
2282 sha1 = "5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e";
2137 url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
2138 sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
2139 };
2140 };
2141 "process-nextick-args-2.0.0" = {
2142 name = "process-nextick-args";
2143 packageName = "process-nextick-args";
2144 version = "2.0.0";
2145 src = fetchurl {
2146 url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz";
2147 sha512 = "MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==";
2148 };
2149 };
2150 "progress-1.1.8" = {
2151 name = "progress";
2152 packageName = "progress";
2153 version = "1.1.8";
2154 src = fetchurl {
2155 url = "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz";
2156 sha1 = "e260c78f6161cdd9b0e56cc3e0a85de17c7a57be";
2157 };
2158 };
2159 "promise-7.3.1" = {
2160 name = "promise";
2161 packageName = "promise";
2162 version = "7.3.1";
2163 src = fetchurl {
2164 url = "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz";
2165 sha512 = "nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==";
2283 2166 };
2284 2167 };
2285 2168 "proto-list-1.2.4" = {
2286 2169 name = "proto-list";
2287 2170 packageName = "proto-list";
2288 2171 version = "1.2.4";
2289 2172 src = fetchurl {
2290 2173 url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz";
2291 2174 sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
2292 2175 };
2293 2176 };
2294 "minipass-2.2.1" = {
2295 name = "minipass";
2296 packageName = "minipass";
2297 version = "2.2.1";
2298 src = fetchurl {
2299 url = "https://registry.npmjs.org/minipass/-/minipass-2.2.1.tgz";
2300 sha1 = "5ada97538b1027b4cf7213432428578cb564011f";
2301 };
2302 };
2303 "minizlib-1.0.3" = {
2304 name = "minizlib";
2305 packageName = "minizlib";
2306 version = "1.0.3";
2307 src = fetchurl {
2308 url = "https://registry.npmjs.org/minizlib/-/minizlib-1.0.3.tgz";
2309 sha1 = "d5c1abf77be154619952e253336eccab9b2a32f5";
2310 };
2311 };
2312 "yallist-3.0.2" = {
2313 name = "yallist";
2314 packageName = "yallist";
2315 version = "3.0.2";
2316 src = fetchurl {
2317 url = "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz";
2318 sha1 = "8452b4bb7e83c7c188d8041c1a837c773d6d8bb9";
2319 };
2320 };
2321 "fs-extra-0.6.4" = {
2322 name = "fs-extra";
2323 packageName = "fs-extra";
2324 version = "0.6.4";
2325 src = fetchurl {
2326 url = "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz";
2327 sha1 = "f46f0c75b7841f8d200b3348cd4d691d5a099d15";
2328 };
2329 };
2330 "mkdirp-0.3.5" = {
2331 name = "mkdirp";
2332 packageName = "mkdirp";
2333 version = "0.3.5";
2334 src = fetchurl {
2335 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz";
2336 sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7";
2337 };
2338 };
2339 "walk-2.3.9" = {
2340 name = "walk";
2341 packageName = "walk";
2342 version = "2.3.9";
2343 src = fetchurl {
2344 url = "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz";
2345 sha1 = "31b4db6678f2ae01c39ea9fb8725a9031e558a7b";
2346 };
2347 };
2348 "ncp-0.4.2" = {
2349 name = "ncp";
2350 packageName = "ncp";
2351 version = "0.4.2";
2352 src = fetchurl {
2353 url = "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz";
2354 sha1 = "abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574";
2355 };
2356 };
2357 "jsonfile-1.0.1" = {
2358 name = "jsonfile";
2359 packageName = "jsonfile";
2360 version = "1.0.1";
2361 src = fetchurl {
2362 url = "https://registry.npmjs.org/jsonfile/-/jsonfile-1.0.1.tgz";
2363 sha1 = "ea5efe40b83690b98667614a7392fc60e842c0dd";
2364 };
2365 };
2366 "foreachasync-3.0.0" = {
2367 name = "foreachasync";
2368 packageName = "foreachasync";
2369 version = "3.0.0";
2370 src = fetchurl {
2371 url = "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz";
2372 sha1 = "5502987dc8714be3392097f32e0071c9dee07cf6";
2373 };
2374 };
2375 "cli-1.0.1" = {
2376 name = "cli";
2377 packageName = "cli";
2177 "prr-1.0.1" = {
2178 name = "prr";
2179 packageName = "prr";
2378 2180 version = "1.0.1";
2379 2181 src = fetchurl {
2380 url = "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz";
2381 sha1 = "22817534f24bfa4950c34d532d48ecbc621b8c14";
2382 };
2383 };
2384 "console-browserify-1.1.0" = {
2385 name = "console-browserify";
2386 packageName = "console-browserify";
2387 version = "1.1.0";
2388 src = fetchurl {
2389 url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz";
2390 sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10";
2391 };
2392 };
2393 "htmlparser2-3.8.3" = {
2394 name = "htmlparser2";
2395 packageName = "htmlparser2";
2396 version = "3.8.3";
2397 src = fetchurl {
2398 url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz";
2399 sha1 = "996c28b191516a8be86501a7d79757e5c70c1068";
2400 };
2401 };
2402 "minimatch-3.0.4" = {
2403 name = "minimatch";
2404 packageName = "minimatch";
2405 version = "3.0.4";
2406 src = fetchurl {
2407 url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
2408 sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
2409 };
2410 };
2411 "shelljs-0.3.0" = {
2412 name = "shelljs";
2413 packageName = "shelljs";
2414 version = "0.3.0";
2415 src = fetchurl {
2416 url = "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz";
2417 sha1 = "3596e6307a781544f591f37da618360f31db57b1";
2418 };
2419 };
2420 "strip-json-comments-1.0.4" = {
2421 name = "strip-json-comments";
2422 packageName = "strip-json-comments";
2423 version = "1.0.4";
2424 src = fetchurl {
2425 url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz";
2426 sha1 = "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91";
2427 };
2428 };
2429 "lodash-3.7.0" = {
2430 name = "lodash";
2431 packageName = "lodash";
2432 version = "3.7.0";
2433 src = fetchurl {
2434 url = "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz";
2435 sha1 = "3678bd8ab995057c07ade836ed2ef087da811d45";
2436 };
2437 };
2438 "glob-7.1.2" = {
2439 name = "glob";
2440 packageName = "glob";
2441 version = "7.1.2";
2442 src = fetchurl {
2443 url = "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz";
2444 sha1 = "c19c9df9a028702d678612384a6552404c636d15";
2445 };
2446 };
2447 "fs.realpath-1.0.0" = {
2448 name = "fs.realpath";
2449 packageName = "fs.realpath";
2450 version = "1.0.0";
2451 src = fetchurl {
2452 url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
2453 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
2454 };
2455 };
2456 "inflight-1.0.6" = {
2457 name = "inflight";
2458 packageName = "inflight";
2459 version = "1.0.6";
2460 src = fetchurl {
2461 url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
2462 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
2463 };
2464 };
2465 "brace-expansion-1.1.8" = {
2466 name = "brace-expansion";
2467 packageName = "brace-expansion";
2468 version = "1.1.8";
2469 src = fetchurl {
2470 url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz";
2471 sha1 = "c07b211c7c952ec1f8efd51a77ef0d1d3990a292";
2472 };
2473 };
2474 "balanced-match-1.0.0" = {
2475 name = "balanced-match";
2476 packageName = "balanced-match";
2477 version = "1.0.0";
2478 src = fetchurl {
2479 url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
2480 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
2481 };
2482 };
2483 "concat-map-0.0.1" = {
2484 name = "concat-map";
2485 packageName = "concat-map";
2486 version = "0.0.1";
2487 src = fetchurl {
2488 url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
2489 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
2490 };
2491 };
2492 "date-now-0.1.4" = {
2493 name = "date-now";
2494 packageName = "date-now";
2495 version = "0.1.4";
2496 src = fetchurl {
2497 url = "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz";
2498 sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b";
2499 };
2500 };
2501 "domhandler-2.3.0" = {
2502 name = "domhandler";
2503 packageName = "domhandler";
2504 version = "2.3.0";
2505 src = fetchurl {
2506 url = "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz";
2507 sha1 = "2de59a0822d5027fabff6f032c2b25a2a8abe738";
2508 };
2509 };
2510 "domutils-1.5.1" = {
2511 name = "domutils";
2512 packageName = "domutils";
2513 version = "1.5.1";
2514 src = fetchurl {
2515 url = "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz";
2516 sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
2517 };
2518 };
2519 "domelementtype-1.3.0" = {
2520 name = "domelementtype";
2521 packageName = "domelementtype";
2522 version = "1.3.0";
2523 src = fetchurl {
2524 url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz";
2525 sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2";
2182 url = "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz";
2183 sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
2184 };
2185 };
2186 "punycode-1.4.1" = {
2187 name = "punycode";
2188 packageName = "punycode";
2189 version = "1.4.1";
2190 src = fetchurl {
2191 url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
2192 sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
2193 };
2194 };
2195 "qrious-4.0.2" = {
2196 name = "qrious";
2197 packageName = "qrious";
2198 version = "4.0.2";
2199 src = fetchurl {
2200 url = "https://registry.npmjs.org/qrious/-/qrious-4.0.2.tgz";
2201 sha512 = "xWPJIrK1zu5Ypn898fBp8RHkT/9ibquV2Kv24S/JY9VYEhMBMKur1gHVsOiNUh7PHP9uCgejjpZUHUIXXKoU/g==";
2202 };
2203 };
2204 "qs-0.5.6" = {
2205 name = "qs";
2206 packageName = "qs";
2207 version = "0.5.6";
2208 src = fetchurl {
2209 url = "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz";
2210 sha1 = "31b1ad058567651c526921506b9a8793911a0384";
2211 };
2212 };
2213 "qs-6.4.0" = {
2214 name = "qs";
2215 packageName = "qs";
2216 version = "6.4.0";
2217 src = fetchurl {
2218 url = "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz";
2219 sha1 = "13e26d28ad6b0ffaa91312cd3bf708ed351e7233";
2526 2220 };
2527 2221 };
2528 2222 "readable-stream-1.1.14" = {
2529 2223 name = "readable-stream";
2530 2224 packageName = "readable-stream";
2531 2225 version = "1.1.14";
2532 2226 src = fetchurl {
2533 2227 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz";
2534 2228 sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
2535 2229 };
2536 2230 };
2537 "entities-1.0.0" = {
2538 name = "entities";
2539 packageName = "entities";
2540 version = "1.0.0";
2541 src = fetchurl {
2542 url = "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz";
2543 sha1 = "b2987aa3821347fcde642b24fdfc9e4fb712bf26";
2544 };
2545 };
2546 "dom-serializer-0.1.0" = {
2547 name = "dom-serializer";
2548 packageName = "dom-serializer";
2549 version = "0.1.0";
2550 src = fetchurl {
2551 url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz";
2552 sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82";
2553 };
2554 };
2555 "domelementtype-1.1.3" = {
2556 name = "domelementtype";
2557 packageName = "domelementtype";
2558 version = "1.1.3";
2559 src = fetchurl {
2560 url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz";
2561 sha1 = "bd28773e2642881aec51544924299c5cd822185b";
2562 };
2563 };
2564 "entities-1.1.1" = {
2565 name = "entities";
2566 packageName = "entities";
2567 version = "1.1.1";
2568 src = fetchurl {
2569 url = "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz";
2570 sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0";
2571 };
2572 };
2573 "string_decoder-0.10.31" = {
2574 name = "string_decoder";
2575 packageName = "string_decoder";
2576 version = "0.10.31";
2577 src = fetchurl {
2578 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
2579 sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
2580 };
2581 };
2582 "good-listener-1.2.2" = {
2583 name = "good-listener";
2584 packageName = "good-listener";
2585 version = "1.2.2";
2586 src = fetchurl {
2587 url = "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz";
2588 sha1 = "d53b30cdf9313dffb7dc9a0d477096aa6d145c50";
2231 "readable-stream-2.3.6" = {
2232 name = "readable-stream";
2233 packageName = "readable-stream";
2234 version = "2.3.6";
2235 src = fetchurl {
2236 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz";
2237 sha512 = "tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==";
2238 };
2239 };
2240 "reduce-flatten-1.0.1" = {
2241 name = "reduce-flatten";
2242 packageName = "reduce-flatten";
2243 version = "1.0.1";
2244 src = fetchurl {
2245 url = "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz";
2246 sha1 = "258c78efd153ddf93cb561237f61184f3696e327";
2247 };
2248 };
2249 "regenerator-runtime-0.10.5" = {
2250 name = "regenerator-runtime";
2251 packageName = "regenerator-runtime";
2252 version = "0.10.5";
2253 src = fetchurl {
2254 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz";
2255 sha1 = "336c3efc1220adcedda2c9fab67b5a7955a33658";
2256 };
2257 };
2258 "regenerator-runtime-0.11.1" = {
2259 name = "regenerator-runtime";
2260 packageName = "regenerator-runtime";
2261 version = "0.11.1";
2262 src = fetchurl {
2263 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
2264 sha512 = "MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==";
2265 };
2266 };
2267 "request-2.81.0" = {
2268 name = "request";
2269 packageName = "request";
2270 version = "2.81.0";
2271 src = fetchurl {
2272 url = "https://registry.npmjs.org/request/-/request-2.81.0.tgz";
2273 sha1 = "c6928946a0e06c5f8d6f8a9333469ffda46298a0";
2274 };
2275 };
2276 "request-progress-2.0.1" = {
2277 name = "request-progress";
2278 packageName = "request-progress";
2279 version = "2.0.1";
2280 src = fetchurl {
2281 url = "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz";
2282 sha1 = "5d36bb57961c673aa5b788dbc8141fdf23b44e08";
2283 };
2284 };
2285 "retry-0.10.1" = {
2286 name = "retry";
2287 packageName = "retry";
2288 version = "0.10.1";
2289 src = fetchurl {
2290 url = "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz";
2291 sha1 = "e76388d217992c252750241d3d3956fed98d8ff4";
2292 };
2293 };
2294 "rimraf-2.2.8" = {
2295 name = "rimraf";
2296 packageName = "rimraf";
2297 version = "2.2.8";
2298 src = fetchurl {
2299 url = "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz";
2300 sha1 = "e439be2aaee327321952730f99a8929e4fc50582";
2301 };
2302 };
2303 "safe-buffer-5.1.2" = {
2304 name = "safe-buffer";
2305 packageName = "safe-buffer";
2306 version = "5.1.2";
2307 src = fetchurl {
2308 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
2309 sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
2310 };
2311 };
2312 "safer-buffer-2.1.2" = {
2313 name = "safer-buffer";
2314 packageName = "safer-buffer";
2315 version = "2.1.2";
2316 src = fetchurl {
2317 url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
2318 sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
2589 2319 };
2590 2320 };
2591 2321 "select-1.1.2" = {
2592 2322 name = "select";
2593 2323 packageName = "select";
2594 2324 version = "1.1.2";
2595 2325 src = fetchurl {
2596 2326 url = "https://registry.npmjs.org/select/-/select-1.1.2.tgz";
2597 2327 sha1 = "0e7350acdec80b1108528786ec1d4418d11b396d";
2598 2328 };
2599 2329 };
2330 "semver-4.3.6" = {
2331 name = "semver";
2332 packageName = "semver";
2333 version = "4.3.6";
2334 src = fetchurl {
2335 url = "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz";
2336 sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da";
2337 };
2338 };
2339 "semver-5.5.0" = {
2340 name = "semver";
2341 packageName = "semver";
2342 version = "5.5.0";
2343 src = fetchurl {
2344 url = "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz";
2345 sha512 = "4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==";
2346 };
2347 };
2348 "set-blocking-2.0.0" = {
2349 name = "set-blocking";
2350 packageName = "set-blocking";
2351 version = "2.0.0";
2352 src = fetchurl {
2353 url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
2354 sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
2355 };
2356 };
2357 "shelljs-0.3.0" = {
2358 name = "shelljs";
2359 packageName = "shelljs";
2360 version = "0.3.0";
2361 src = fetchurl {
2362 url = "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz";
2363 sha1 = "3596e6307a781544f591f37da618360f31db57b1";
2364 };
2365 };
2366 "sigmund-1.0.1" = {
2367 name = "sigmund";
2368 packageName = "sigmund";
2369 version = "1.0.1";
2370 src = fetchurl {
2371 url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz";
2372 sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
2373 };
2374 };
2375 "signal-exit-3.0.2" = {
2376 name = "signal-exit";
2377 packageName = "signal-exit";
2378 version = "3.0.2";
2379 src = fetchurl {
2380 url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz";
2381 sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
2382 };
2383 };
2384 "slasp-0.0.4" = {
2385 name = "slasp";
2386 packageName = "slasp";
2387 version = "0.0.4";
2388 src = fetchurl {
2389 url = "https://registry.npmjs.org/slasp/-/slasp-0.0.4.tgz";
2390 sha1 = "9adc26ee729a0f95095851a5489f87a5258d57a9";
2391 };
2392 };
2393 "slide-1.1.6" = {
2394 name = "slide";
2395 packageName = "slide";
2396 version = "1.1.6";
2397 src = fetchurl {
2398 url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz";
2399 sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707";
2400 };
2401 };
2402 "sntp-1.0.9" = {
2403 name = "sntp";
2404 packageName = "sntp";
2405 version = "1.0.9";
2406 src = fetchurl {
2407 url = "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz";
2408 sha1 = "6541184cc90aeea6c6e7b35e2659082443c66198";
2409 };
2410 };
2411 "source-map-0.3.0" = {
2412 name = "source-map";
2413 packageName = "source-map";
2414 version = "0.3.0";
2415 src = fetchurl {
2416 url = "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz";
2417 sha1 = "8586fb9a5a005e5b501e21cd18b6f21b457ad1f9";
2418 };
2419 };
2420 "source-map-0.5.7" = {
2421 name = "source-map";
2422 packageName = "source-map";
2423 version = "0.5.7";
2424 src = fetchurl {
2425 url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz";
2426 sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
2427 };
2428 };
2429 "source-map-0.6.1" = {
2430 name = "source-map";
2431 packageName = "source-map";
2432 version = "0.6.1";
2433 src = fetchurl {
2434 url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
2435 sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
2436 };
2437 };
2438 "spdx-correct-3.0.0" = {
2439 name = "spdx-correct";
2440 packageName = "spdx-correct";
2441 version = "3.0.0";
2442 src = fetchurl {
2443 url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz";
2444 sha512 = "N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==";
2445 };
2446 };
2447 "spdx-exceptions-2.1.0" = {
2448 name = "spdx-exceptions";
2449 packageName = "spdx-exceptions";
2450 version = "2.1.0";
2451 src = fetchurl {
2452 url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz";
2453 sha512 = "4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==";
2454 };
2455 };
2456 "spdx-expression-parse-3.0.0" = {
2457 name = "spdx-expression-parse";
2458 packageName = "spdx-expression-parse";
2459 version = "3.0.0";
2460 src = fetchurl {
2461 url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
2462 sha512 = "Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==";
2463 };
2464 };
2465 "spdx-license-ids-3.0.0" = {
2466 name = "spdx-license-ids";
2467 packageName = "spdx-license-ids";
2468 version = "3.0.0";
2469 src = fetchurl {
2470 url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz";
2471 sha512 = "2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==";
2472 };
2473 };
2474 "split-1.0.1" = {
2475 name = "split";
2476 packageName = "split";
2477 version = "1.0.1";
2478 src = fetchurl {
2479 url = "https://registry.npmjs.org/split/-/split-1.0.1.tgz";
2480 sha512 = "mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==";
2481 };
2482 };
2483 "sshpk-1.14.2" = {
2484 name = "sshpk";
2485 packageName = "sshpk";
2486 version = "1.14.2";
2487 src = fetchurl {
2488 url = "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz";
2489 sha1 = "c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98";
2490 };
2491 };
2492 "ssri-5.3.0" = {
2493 name = "ssri";
2494 packageName = "ssri";
2495 version = "5.3.0";
2496 src = fetchurl {
2497 url = "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz";
2498 sha512 = "XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==";
2499 };
2500 };
2501 "stack-trace-0.0.10" = {
2502 name = "stack-trace";
2503 packageName = "stack-trace";
2504 version = "0.0.10";
2505 src = fetchurl {
2506 url = "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz";
2507 sha1 = "547c70b347e8d32b4e108ea1a2a159e5fdde19c0";
2508 };
2509 };
2510 "string-width-1.0.2" = {
2511 name = "string-width";
2512 packageName = "string-width";
2513 version = "1.0.2";
2514 src = fetchurl {
2515 url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
2516 sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
2517 };
2518 };
2519 "string_decoder-0.10.31" = {
2520 name = "string_decoder";
2521 packageName = "string_decoder";
2522 version = "0.10.31";
2523 src = fetchurl {
2524 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
2525 sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
2526 };
2527 };
2528 "string_decoder-1.1.1" = {
2529 name = "string_decoder";
2530 packageName = "string_decoder";
2531 version = "1.1.1";
2532 src = fetchurl {
2533 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
2534 sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
2535 };
2536 };
2537 "stringstream-0.0.6" = {
2538 name = "stringstream";
2539 packageName = "stringstream";
2540 version = "0.0.6";
2541 src = fetchurl {
2542 url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz";
2543 sha512 = "87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==";
2544 };
2545 };
2546 "strip-ansi-0.3.0" = {
2547 name = "strip-ansi";
2548 packageName = "strip-ansi";
2549 version = "0.3.0";
2550 src = fetchurl {
2551 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz";
2552 sha1 = "25f48ea22ca79187f3174a4db8759347bb126220";
2553 };
2554 };
2555 "strip-ansi-3.0.1" = {
2556 name = "strip-ansi";
2557 packageName = "strip-ansi";
2558 version = "3.0.1";
2559 src = fetchurl {
2560 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
2561 sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
2562 };
2563 };
2564 "strip-json-comments-1.0.4" = {
2565 name = "strip-json-comments";
2566 packageName = "strip-json-comments";
2567 version = "1.0.4";
2568 src = fetchurl {
2569 url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz";
2570 sha1 = "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91";
2571 };
2572 };
2573 "supports-color-0.2.0" = {
2574 name = "supports-color";
2575 packageName = "supports-color";
2576 version = "0.2.0";
2577 src = fetchurl {
2578 url = "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz";
2579 sha1 = "d92de2694eb3f67323973d7ae3d8b55b4c22190a";
2580 };
2581 };
2582 "supports-color-2.0.0" = {
2583 name = "supports-color";
2584 packageName = "supports-color";
2585 version = "2.0.0";
2586 src = fetchurl {
2587 url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
2588 sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
2589 };
2590 };
2591 "table-layout-0.3.0" = {
2592 name = "table-layout";
2593 packageName = "table-layout";
2594 version = "0.3.0";
2595 src = fetchurl {
2596 url = "https://registry.npmjs.org/table-layout/-/table-layout-0.3.0.tgz";
2597 sha1 = "6ee20dc483db371b3e5c87f704ed2f7c799d2c9a";
2598 };
2599 };
2600 "tar-3.1.15" = {
2601 name = "tar";
2602 packageName = "tar";
2603 version = "3.1.15";
2604 src = fetchurl {
2605 url = "https://registry.npmjs.org/tar/-/tar-3.1.15.tgz";
2606 sha512 = "pQNFsg+Wb6VXsrIPUnuQwrHR4wD5ASBR0jRyiT4/AALFA2Nl+CjhkDX5fTmIwCuULRtyQR3Dae2BBnP2EFHscw==";
2607 };
2608 };
2609 "temp-0.8.3" = {
2610 name = "temp";
2611 packageName = "temp";
2612 version = "0.8.3";
2613 src = fetchurl {
2614 url = "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz";
2615 sha1 = "e0c6bc4d26b903124410e4fed81103014dfc1f59";
2616 };
2617 };
2618 "test-value-2.1.0" = {
2619 name = "test-value";
2620 packageName = "test-value";
2621 version = "2.1.0";
2622 src = fetchurl {
2623 url = "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz";
2624 sha1 = "11da6ff670f3471a73b625ca4f3fdcf7bb748291";
2625 };
2626 };
2627 "throttleit-1.0.0" = {
2628 name = "throttleit";
2629 packageName = "throttleit";
2630 version = "1.0.0";
2631 src = fetchurl {
2632 url = "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz";
2633 sha1 = "9e785836daf46743145a5984b6268d828528ac6c";
2634 };
2635 };
2636 "through-2.3.8" = {
2637 name = "through";
2638 packageName = "through";
2639 version = "2.3.8";
2640 src = fetchurl {
2641 url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz";
2642 sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
2643 };
2644 };
2600 2645 "tiny-emitter-2.0.2" = {
2601 2646 name = "tiny-emitter";
2602 2647 packageName = "tiny-emitter";
2603 2648 version = "2.0.2";
2604 2649 src = fetchurl {
2605 2650 url = "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz";
2606 sha1 = "82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c";
2607 };
2608 };
2609 "delegate-3.1.3" = {
2610 name = "delegate";
2611 packageName = "delegate";
2612 version = "3.1.3";
2613 src = fetchurl {
2614 url = "https://registry.npmjs.org/delegate/-/delegate-3.1.3.tgz";
2615 sha1 = "9a8251a777d7025faa55737bc3b071742127a9fd";
2651 sha512 = "2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==";
2652 };
2653 };
2654 "tiny-lr-fork-0.0.5" = {
2655 name = "tiny-lr-fork";
2656 packageName = "tiny-lr-fork";
2657 version = "0.0.5";
2658 src = fetchurl {
2659 url = "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz";
2660 sha1 = "1e99e1e2a8469b736ab97d97eefa98c71f76ed0a";
2661 };
2662 };
2663 "tough-cookie-2.3.4" = {
2664 name = "tough-cookie";
2665 packageName = "tough-cookie";
2666 version = "2.3.4";
2667 src = fetchurl {
2668 url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz";
2669 sha512 = "TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==";
2670 };
2671 };
2672 "tunnel-agent-0.6.0" = {
2673 name = "tunnel-agent";
2674 packageName = "tunnel-agent";
2675 version = "0.6.0";
2676 src = fetchurl {
2677 url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
2678 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
2679 };
2680 };
2681 "tweetnacl-0.14.5" = {
2682 name = "tweetnacl";
2683 packageName = "tweetnacl";
2684 version = "0.14.5";
2685 src = fetchurl {
2686 url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
2687 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
2688 };
2689 };
2690 "type-check-0.3.2" = {
2691 name = "type-check";
2692 packageName = "type-check";
2693 version = "0.3.2";
2694 src = fetchurl {
2695 url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
2696 sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
2697 };
2698 };
2699 "typedarray-0.0.6" = {
2700 name = "typedarray";
2701 packageName = "typedarray";
2702 version = "0.0.6";
2703 src = fetchurl {
2704 url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz";
2705 sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
2706 };
2707 };
2708 "typical-2.6.1" = {
2709 name = "typical";
2710 packageName = "typical";
2711 version = "2.6.1";
2712 src = fetchurl {
2713 url = "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz";
2714 sha1 = "5c080e5d661cbbe38259d2e70a3c7253e873881d";
2715 };
2716 };
2717 "uid-number-0.0.5" = {
2718 name = "uid-number";
2719 packageName = "uid-number";
2720 version = "0.0.5";
2721 src = fetchurl {
2722 url = "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz";
2723 sha1 = "5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e";
2724 };
2725 };
2726 "underscore-1.7.0" = {
2727 name = "underscore";
2728 packageName = "underscore";
2729 version = "1.7.0";
2730 src = fetchurl {
2731 url = "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz";
2732 sha1 = "6bbaf0877500d36be34ecaa584e0db9fef035209";
2733 };
2734 };
2735 "underscore.string-2.2.1" = {
2736 name = "underscore.string";
2737 packageName = "underscore.string";
2738 version = "2.2.1";
2739 src = fetchurl {
2740 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz";
2741 sha1 = "d7c0fa2af5d5a1a67f4253daee98132e733f0f19";
2742 };
2743 };
2744 "underscore.string-2.3.3" = {
2745 name = "underscore.string";
2746 packageName = "underscore.string";
2747 version = "2.3.3";
2748 src = fetchurl {
2749 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz";
2750 sha1 = "71c08bf6b428b1133f37e78fa3a21c82f7329b0d";
2751 };
2752 };
2753 "underscore.string-2.4.0" = {
2754 name = "underscore.string";
2755 packageName = "underscore.string";
2756 version = "2.4.0";
2757 src = fetchurl {
2758 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz";
2759 sha1 = "8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b";
2760 };
2761 };
2762 "unicode-5.2.0-0.7.5" = {
2763 name = "unicode-5.2.0";
2764 packageName = "unicode-5.2.0";
2765 version = "0.7.5";
2766 src = fetchurl {
2767 url = "https://registry.npmjs.org/unicode-5.2.0/-/unicode-5.2.0-0.7.5.tgz";
2768 sha512 = "KVGLW1Bri30x00yv4HNM8kBxoqFXr0Sbo55735nvrlsx4PYBZol3UtoWgO492fSwmsetzPEZzy73rbU8OGXJcA==";
2769 };
2770 };
2771 "util-deprecate-1.0.2" = {
2772 name = "util-deprecate";
2773 packageName = "util-deprecate";
2774 version = "1.0.2";
2775 src = fetchurl {
2776 url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
2777 sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
2778 };
2779 };
2780 "uuid-3.3.2" = {
2781 name = "uuid";
2782 packageName = "uuid";
2783 version = "3.3.2";
2784 src = fetchurl {
2785 url = "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz";
2786 sha512 = "yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==";
2787 };
2788 };
2789 "validate-npm-package-license-3.0.3" = {
2790 name = "validate-npm-package-license";
2791 packageName = "validate-npm-package-license";
2792 version = "3.0.3";
2793 src = fetchurl {
2794 url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz";
2795 sha512 = "63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==";
2796 };
2797 };
2798 "validate-npm-package-name-3.0.0" = {
2799 name = "validate-npm-package-name";
2800 packageName = "validate-npm-package-name";
2801 version = "3.0.0";
2802 src = fetchurl {
2803 url = "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz";
2804 sha1 = "5fa912d81eb7d0c74afc140de7317f0ca7df437e";
2805 };
2806 };
2807 "verror-1.10.0" = {
2808 name = "verror";
2809 packageName = "verror";
2810 version = "1.10.0";
2811 src = fetchurl {
2812 url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
2813 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
2814 };
2815 };
2816 "vulcanize-1.16.0" = {
2817 name = "vulcanize";
2818 packageName = "vulcanize";
2819 version = "1.16.0";
2820 src = fetchurl {
2821 url = "https://registry.npmjs.org/vulcanize/-/vulcanize-1.16.0.tgz";
2822 sha512 = "TYlFljSc896b5+0FmMiw0JAMrHNBiHx0IAFC/dQR3Dxdb9Nx43ohm6wMWTlPXQn4sk/0WkqfgoAA6SLxyvPCLQ==";
2823 };
2824 };
2825 "walk-2.3.14" = {
2826 name = "walk";
2827 packageName = "walk";
2828 version = "2.3.14";
2829 src = fetchurl {
2830 url = "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz";
2831 sha512 = "5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg==";
2832 };
2833 };
2834 "which-1.0.9" = {
2835 name = "which";
2836 packageName = "which";
2837 version = "1.0.9";
2838 src = fetchurl {
2839 url = "https://registry.npmjs.org/which/-/which-1.0.9.tgz";
2840 sha1 = "460c1da0f810103d0321a9b633af9e575e64486f";
2841 };
2842 };
2843 "which-1.3.1" = {
2844 name = "which";
2845 packageName = "which";
2846 version = "1.3.1";
2847 src = fetchurl {
2848 url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz";
2849 sha512 = "HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==";
2850 };
2851 };
2852 "wide-align-1.1.3" = {
2853 name = "wide-align";
2854 packageName = "wide-align";
2855 version = "1.1.3";
2856 src = fetchurl {
2857 url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz";
2858 sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==";
2859 };
2860 };
2861 "winston-2.4.3" = {
2862 name = "winston";
2863 packageName = "winston";
2864 version = "2.4.3";
2865 src = fetchurl {
2866 url = "https://registry.npmjs.org/winston/-/winston-2.4.3.tgz";
2867 sha512 = "GYKuysPz2pxYAVJD2NPsDLP5Z79SDEzPm9/j4tCjkF/n89iBNGBMJcR+dMUqxgPNgoSs6fVygPi+Vl2oxIpBuw==";
2868 };
2869 };
2870 "wordwrap-1.0.0" = {
2871 name = "wordwrap";
2872 packageName = "wordwrap";
2873 version = "1.0.0";
2874 src = fetchurl {
2875 url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz";
2876 sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
2877 };
2878 };
2879 "wordwrapjs-2.0.0" = {
2880 name = "wordwrapjs";
2881 packageName = "wordwrapjs";
2882 version = "2.0.0";
2883 src = fetchurl {
2884 url = "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-2.0.0.tgz";
2885 sha1 = "ab55f695e6118da93858fdd70c053d1c5e01ac20";
2886 };
2887 };
2888 "wrappy-1.0.2" = {
2889 name = "wrappy";
2890 packageName = "wrappy";
2891 version = "1.0.2";
2892 src = fetchurl {
2893 url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
2894 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
2895 };
2896 };
2897 "yallist-3.0.2" = {
2898 name = "yallist";
2899 packageName = "yallist";
2900 version = "3.0.2";
2901 src = fetchurl {
2902 url = "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz";
2903 sha1 = "8452b4bb7e83c7c188d8041c1a837c773d6d8bb9";
2904 };
2905 };
2906 "yauzl-2.4.1" = {
2907 name = "yauzl";
2908 packageName = "yauzl";
2909 version = "2.4.1";
2910 src = fetchurl {
2911 url = "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz";
2912 sha1 = "9528f442dab1b2284e58b4379bb194e22e0c4005";
2616 2913 };
2617 2914 };
2618 2915 };
2619 2916 args = {
2620 2917 name = "rhodecode-enterprise";
2621 2918 packageName = "rhodecode-enterprise";
2622 version = "0.0.1";
2623 src = ./.;
2919 version = "1.0.0";
2920 src = ./..;
2624 2921 dependencies = [
2625 sources."grunt-0.4.5"
2626 sources."grunt-contrib-copy-1.0.0"
2627 (sources."grunt-contrib-concat-0.5.1" // {
2922 sources."@types/clone-0.1.30"
2923 sources."@types/node-4.2.23"
2924 (sources."@types/parse5-0.0.31" // {
2628 2925 dependencies = [
2629 sources."chalk-0.5.1"
2630 sources."ansi-styles-1.1.0"
2631 sources."has-ansi-0.1.0"
2632 sources."strip-ansi-0.3.0"
2633 sources."supports-color-0.2.0"
2634 sources."ansi-regex-0.2.1"
2926 sources."@types/node-6.0.114"
2927 ];
2928 })
2929 sources."abbrev-1.1.1"
2930 sources."acorn-3.3.0"
2931 sources."acorn-jsx-3.0.1"
2932 sources."ajv-4.11.8"
2933 sources."amdefine-1.0.1"
2934 sources."ansi-escape-sequences-3.0.0"
2935 sources."ansi-regex-2.1.1"
2936 sources."ansi-styles-2.2.1"
2937 sources."appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1"
2938 sources."aproba-1.2.0"
2939 sources."are-we-there-yet-1.1.5"
2940 (sources."argparse-0.1.16" // {
2941 dependencies = [
2942 sources."underscore.string-2.4.0"
2635 2943 ];
2636 2944 })
2637 sources."grunt-contrib-jshint-0.12.0"
2638 (sources."grunt-contrib-less-1.4.1" // {
2945 sources."array-back-1.0.4"
2946 sources."asap-2.0.6"
2947 sources."asn1-0.2.3"
2948 sources."assert-plus-0.2.0"
2949 sources."async-0.1.22"
2950 sources."asynckit-0.4.0"
2951 sources."aws-sign2-0.6.0"
2952 sources."aws4-1.7.0"
2953 sources."babel-polyfill-6.26.0"
2954 (sources."babel-runtime-6.26.0" // {
2639 2955 dependencies = [
2640 sources."async-2.5.0"
2641 sources."lodash-4.17.4"
2956 sources."regenerator-runtime-0.11.1"
2642 2957 ];
2643 2958 })
2644 (sources."grunt-contrib-watch-0.6.1" // {
2959 sources."balanced-match-1.0.0"
2960 sources."base64-js-1.2.3"
2961 sources."bcrypt-pbkdf-1.0.2"
2962 sources."boom-2.10.1"
2963 sources."bower-1.8.4"
2964 sources."brace-expansion-1.1.11"
2965 sources."buffer-from-1.1.1"
2966 sources."builtin-modules-1.1.1"
2967 sources."builtins-1.0.3"
2968 sources."caseless-0.12.0"
2969 sources."chalk-1.1.3"
2970 (sources."cli-1.0.1" // {
2645 2971 dependencies = [
2646 sources."lodash-2.4.2"
2647 sources."async-0.2.10"
2972 sources."glob-7.1.2"
2973 sources."minimatch-3.0.4"
2648 2974 ];
2649 2975 })
2976 sources."clipboard-2.0.1"
2977 sources."clone-1.0.4"
2978 sources."co-4.6.0"
2979 sources."code-point-at-1.1.0"
2980 sources."coffee-script-1.3.3"
2981 sources."colors-0.6.2"
2982 sources."combined-stream-1.0.6"
2983 sources."command-line-args-3.0.5"
2984 sources."command-line-usage-3.0.8"
2985 sources."concat-map-0.0.1"
2986 sources."concat-stream-1.6.2"
2987 sources."config-chain-1.1.11"
2988 sources."console-browserify-1.1.0"
2989 sources."console-control-strings-1.1.0"
2990 sources."core-js-2.5.7"
2991 sources."core-util-is-1.0.2"
2650 2992 sources."crisper-2.1.1"
2651 (sources."vulcanize-1.16.0" // {
2993 sources."cryptiles-2.0.5"
2994 sources."cycle-1.0.3"
2995 (sources."dashdash-1.14.1" // {
2652 2996 dependencies = [
2653 sources."nopt-3.0.6"
2997 sources."assert-plus-1.0.0"
2654 2998 ];
2655 2999 })
2656 sources."grunt-crisper-1.0.1"
2657 (sources."grunt-vulcanize-1.0.0" // {
3000 sources."date-now-0.1.4"
3001 sources."dateformat-1.0.2-1.2.3"
3002 sources."debug-0.7.4"
3003 sources."deep-extend-0.4.2"
3004 sources."deep-is-0.1.3"
3005 sources."delayed-stream-1.0.0"
3006 sources."delegate-3.2.0"
3007 sources."delegates-1.0.0"
3008 sources."doctrine-0.7.2"
3009 (sources."dom-serializer-0.1.0" // {
2658 3010 dependencies = [
2659 sources."crisper-1.2.0"
2660 sources."nopt-3.0.6"
3011 sources."domelementtype-1.1.3"
3012 sources."entities-1.1.1"
2661 3013 ];
2662 3014 })
2663 sources."node2nix-1.3.0"
2664 (sources."jshint-2.9.5" // {
3015 sources."dom5-1.3.6"
3016 sources."domelementtype-1.3.0"
3017 sources."domhandler-2.3.0"
3018 sources."domutils-1.5.1"
3019 sources."ecc-jsbn-0.1.2"
3020 sources."entities-1.0.0"
3021 sources."errno-0.1.7"
3022 sources."es6-promise-2.3.0"
3023 sources."escape-string-regexp-1.0.5"
3024 (sources."escodegen-1.11.0" // {
2665 3025 dependencies = [
2666 sources."minimatch-3.0.4"
2667 sources."lodash-3.7.0"
3026 sources."esprima-3.1.3"
3027 sources."estraverse-4.2.0"
3028 sources."esutils-2.0.2"
3029 sources."source-map-0.6.1"
3030 ];
3031 })
3032 (sources."espree-3.5.4" // {
3033 dependencies = [
3034 sources."acorn-5.7.1"
2668 3035 ];
2669 3036 })
2670 sources."bower-1.8.2"
2671 sources."jquery-1.11.3"
3037 sources."esprima-1.0.4"
3038 sources."estraverse-3.1.0"
3039 sources."esutils-1.1.6"
3040 sources."eventemitter2-0.4.14"
3041 sources."exit-0.1.2"
3042 sources."extend-3.0.2"
3043 (sources."extract-zip-1.6.7" // {
3044 dependencies = [
3045 sources."debug-2.6.9"
3046 ];
3047 })
3048 sources."extsprintf-1.3.0"
3049 sources."eyes-0.1.8"
3050 sources."fast-levenshtein-2.0.6"
2672 3051 sources."favico.js-0.3.10"
2673 sources."clipboard-1.7.1"
2674 sources."moment-2.18.1"
2675 sources."mousetrap-1.6.1"
2676 sources."appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1"
2677 sources."async-0.1.22"
2678 sources."coffee-script-1.3.3"
2679 sources."colors-0.6.2"
2680 sources."dateformat-1.0.2-1.2.3"
2681 sources."eventemitter2-0.4.14"
3052 sources."faye-websocket-0.4.4"
3053 sources."fd-slicer-1.0.1"
3054 sources."feature-detect-es6-1.5.0"
3055 sources."file-sync-cmp-0.1.1"
3056 sources."find-replace-1.0.3"
3057 sources."findit-2.0.0"
2682 3058 (sources."findup-sync-0.1.3" // {
2683 3059 dependencies = [
2684 3060 sources."glob-3.2.11"
2685 3061 sources."lodash-2.4.2"
2686 3062 sources."minimatch-0.3.0"
2687 3063 ];
2688 3064 })
3065 sources."foreachasync-3.0.0"
3066 sources."forever-agent-0.6.1"
3067 sources."form-data-2.1.4"
3068 (sources."fs-extra-0.6.4" // {
3069 dependencies = [
3070 sources."mkdirp-0.3.5"
3071 ];
3072 })
3073 (sources."fs.extra-1.3.2" // {
3074 dependencies = [
3075 sources."mkdirp-0.3.5"
3076 ];
3077 })
3078 sources."fs.realpath-1.0.0"
3079 sources."gauge-2.7.4"
3080 sources."gaze-0.5.2"
3081 sources."getobject-0.1.0"
3082 (sources."getpass-0.1.7" // {
3083 dependencies = [
3084 sources."assert-plus-1.0.0"
3085 ];
3086 })
2689 3087 (sources."glob-3.1.21" // {
2690 3088 dependencies = [
2691 3089 sources."inherits-1.0.2"
2692 3090 ];
2693 3091 })
2694 sources."hooker-0.2.3"
2695 sources."iconv-lite-0.2.11"
2696 sources."minimatch-0.2.14"
2697 sources."nopt-1.0.10"
2698 sources."rimraf-2.2.8"
2699 sources."lodash-0.9.2"
2700 sources."underscore.string-2.2.1"
2701 sources."which-1.0.9"
2702 sources."js-yaml-2.0.5"
2703 sources."exit-0.1.2"
2704 sources."getobject-0.1.0"
2705 sources."grunt-legacy-util-0.2.0"
3092 (sources."globule-0.1.0" // {
3093 dependencies = [
3094 sources."lodash-1.0.2"
3095 ];
3096 })
3097 sources."good-listener-1.2.2"
3098 sources."graceful-fs-1.2.3"
3099 sources."grunt-0.4.5"
3100 (sources."grunt-contrib-concat-0.5.1" // {
3101 dependencies = [
3102 sources."ansi-regex-0.2.1"
3103 sources."ansi-styles-1.1.0"
3104 sources."chalk-0.5.1"
3105 sources."has-ansi-0.1.0"
3106 sources."strip-ansi-0.3.0"
3107 sources."supports-color-0.2.0"
3108 ];
3109 })
3110 sources."grunt-contrib-copy-1.0.0"
3111 sources."grunt-contrib-jshint-0.12.0"
3112 (sources."grunt-contrib-less-1.4.1" // {
3113 dependencies = [
3114 sources."async-2.6.1"
3115 sources."lodash-4.17.10"
3116 ];
3117 })
3118 (sources."grunt-contrib-watch-0.6.1" // {
3119 dependencies = [
3120 sources."async-0.2.10"
3121 sources."lodash-2.4.2"
3122 ];
3123 })
3124 sources."grunt-crisper-1.0.1"
2706 3125 (sources."grunt-legacy-log-0.1.3" // {
2707 3126 dependencies = [
2708 3127 sources."lodash-2.4.2"
2709 3128 sources."underscore.string-2.3.3"
2710 3129 ];
2711 3130 })
2712 sources."inherits-2.0.3"
2713 sources."lru-cache-2.7.3"
2714 sources."sigmund-1.0.1"
2715 sources."graceful-fs-1.2.3"
2716 sources."abbrev-1.1.0"
2717 (sources."argparse-0.1.16" // {
2718 dependencies = [
2719 sources."underscore.string-2.4.0"
2720 ];
2721 })
2722 sources."esprima-1.0.4"
2723 sources."underscore-1.7.0"
2724 3131 (sources."grunt-legacy-log-utils-0.1.1" // {
2725 3132 dependencies = [
2726 3133 sources."lodash-2.4.2"
2727 3134 sources."underscore.string-2.3.3"
2728 3135 ];
2729 3136 })
2730 sources."chalk-1.1.3"
2731 sources."file-sync-cmp-0.1.1"
2732 sources."ansi-styles-2.2.1"
2733 sources."escape-string-regexp-1.0.5"
3137 sources."grunt-legacy-util-0.2.0"
3138 (sources."grunt-vulcanize-1.0.0" // {
3139 dependencies = [
3140 sources."crisper-1.2.0"
3141 sources."nopt-3.0.6"
3142 ];
3143 })
3144 sources."har-schema-1.0.5"
3145 sources."har-validator-4.2.1"
2734 3146 sources."has-ansi-2.0.0"
2735 sources."strip-ansi-3.0.1"
2736 sources."supports-color-2.0.0"
2737 sources."ansi-regex-2.1.1"
2738 sources."source-map-0.3.0"
2739 sources."amdefine-1.0.1"
2740 (sources."less-2.7.2" // {
3147 sources."has-unicode-2.0.1"
3148 sources."hasha-2.2.0"
3149 sources."hawk-3.1.3"
3150 sources."hoek-2.16.3"
3151 sources."hooker-0.2.3"
3152 sources."hosted-git-info-2.7.1"
3153 (sources."htmlparser2-3.8.3" // {
3154 dependencies = [
3155 sources."readable-stream-1.1.14"
3156 sources."string_decoder-0.10.31"
3157 ];
3158 })
3159 sources."http-signature-1.1.1"
3160 (sources."hydrolysis-1.25.0" // {
3161 dependencies = [
3162 sources."dom5-1.1.0"
3163 ];
3164 })
3165 sources."iconv-lite-0.2.11"
3166 sources."image-size-0.5.5"
3167 sources."inflight-1.0.6"
3168 sources."inherits-2.0.3"
3169 sources."ini-1.3.5"
3170 sources."is-builtin-module-1.0.0"
3171 sources."is-fullwidth-code-point-1.0.0"
3172 sources."is-stream-1.1.0"
3173 sources."is-typedarray-1.0.0"
3174 sources."isarray-0.0.1"
3175 sources."isexe-2.0.0"
3176 sources."isstream-0.1.2"
3177 sources."jquery-1.11.3"
3178 sources."js-yaml-2.0.5"
3179 sources."jsbn-0.1.1"
3180 (sources."jshint-2.9.6" // {
3181 dependencies = [
3182 sources."lodash-4.17.10"
3183 sources."minimatch-3.0.4"
3184 ];
3185 })
3186 sources."json-schema-0.2.3"
3187 sources."json-stable-stringify-1.0.1"
3188 sources."json-stringify-safe-5.0.1"
3189 sources."jsonfile-1.0.1"
3190 sources."jsonify-0.0.0"
3191 (sources."jsprim-1.4.1" // {
3192 dependencies = [
3193 sources."assert-plus-1.0.0"
3194 ];
3195 })
3196 sources."kew-0.7.0"
3197 (sources."klaw-1.3.1" // {
3198 dependencies = [
3199 sources."graceful-fs-4.1.11"
3200 ];
3201 })
3202 (sources."less-2.7.3" // {
2741 3203 dependencies = [
2742 3204 sources."graceful-fs-4.1.11"
2743 3205 sources."source-map-0.5.7"
2744 3206 ];
2745 3207 })
2746 sources."errno-0.1.4"
2747 sources."image-size-0.5.5"
2748 sources."mime-1.4.0"
2749 sources."mkdirp-0.5.1"
2750 sources."promise-7.3.1"
2751 sources."request-2.82.0"
2752 sources."prr-0.0.0"
3208 sources."levn-0.3.0"
3209 sources."lodash-0.9.2"
3210 sources."lru-cache-2.7.3"
3211 sources."mime-1.6.0"
3212 sources."mime-db-1.35.0"
3213 sources."mime-types-2.1.19"
3214 sources."minimatch-0.2.14"
2753 3215 sources."minimist-0.0.8"
2754 sources."asap-2.0.6"
2755 sources."aws-sign2-0.7.0"
2756 sources."aws4-1.6.0"
2757 sources."caseless-0.12.0"
2758 sources."combined-stream-1.0.5"
2759 sources."extend-3.0.1"
2760 sources."forever-agent-0.6.1"
2761 sources."form-data-2.3.1"
2762 sources."har-validator-5.0.3"
2763 sources."hawk-6.0.2"
2764 sources."http-signature-1.2.0"
2765 sources."is-typedarray-1.0.0"
2766 sources."isstream-0.1.2"
2767 sources."json-stringify-safe-5.0.1"
2768 sources."mime-types-2.1.17"
2769 sources."oauth-sign-0.8.2"
2770 sources."performance-now-2.1.0"
2771 sources."qs-6.5.1"
2772 sources."safe-buffer-5.1.1"
2773 sources."stringstream-0.0.5"
2774 sources."tough-cookie-2.3.3"
2775 sources."tunnel-agent-0.6.0"
2776 sources."uuid-3.1.0"
2777 sources."delayed-stream-1.0.0"
2778 sources."asynckit-0.4.0"
2779 sources."ajv-5.2.2"
2780 sources."har-schema-2.0.0"
2781 sources."co-4.6.0"
2782 sources."fast-deep-equal-1.0.0"
2783 sources."json-schema-traverse-0.3.1"
2784 sources."json-stable-stringify-1.0.1"
2785 sources."jsonify-0.0.0"
2786 sources."hoek-4.2.0"
2787 sources."boom-4.3.1"
2788 (sources."cryptiles-3.1.2" // {
2789 dependencies = [
2790 sources."boom-5.2.0"
2791 ];
2792 })
2793 sources."sntp-2.0.2"
2794 sources."assert-plus-1.0.0"
2795 sources."jsprim-1.4.1"
2796 sources."sshpk-1.13.1"
2797 sources."extsprintf-1.3.0"
2798 sources."json-schema-0.2.3"
2799 sources."verror-1.10.0"
2800 sources."core-util-is-1.0.2"
2801 sources."asn1-0.2.3"
2802 sources."dashdash-1.14.1"
2803 sources."getpass-0.1.7"
2804 sources."jsbn-0.1.1"
2805 sources."tweetnacl-0.14.5"
2806 sources."ecc-jsbn-0.1.1"
2807 sources."bcrypt-pbkdf-1.0.1"
2808 sources."mime-db-1.30.0"
2809 sources."punycode-1.4.1"
2810 sources."gaze-0.5.2"
2811 (sources."tiny-lr-fork-0.0.5" // {
2812 dependencies = [
2813 sources."qs-0.5.6"
2814 ];
2815 })
2816 (sources."globule-0.1.0" // {
2817 dependencies = [
2818 sources."lodash-1.0.2"
2819 ];
2820 })
2821 sources."faye-websocket-0.4.4"
3216 sources."minipass-2.3.3"
3217 sources."minizlib-1.1.0"
3218 sources."mkdirp-0.5.1"
3219 sources."moment-2.22.2"
3220 sources."mousetrap-1.6.2"
3221 sources."ms-2.0.0"
3222 sources."ncp-0.4.2"
3223 sources."nijs-0.0.25"
3224 sources."node2nix-1.6.0"
3225 sources."nopt-1.0.10"
2822 3226 (sources."noptify-0.0.3" // {
2823 3227 dependencies = [
2824 3228 sources."nopt-2.0.0"
2825 3229 ];
2826 3230 })
2827 sources."debug-0.7.4"
2828 sources."command-line-args-3.0.5"
2829 sources."command-line-usage-3.0.8"
2830 sources."dom5-1.3.6"
2831 sources."array-back-1.0.4"
2832 sources."feature-detect-es6-1.3.1"
2833 sources."find-replace-1.0.3"
2834 sources."typical-2.6.1"
2835 sources."test-value-2.1.0"
2836 sources."ansi-escape-sequences-3.0.0"
2837 sources."table-layout-0.3.0"
2838 sources."core-js-2.5.1"
2839 sources."deep-extend-0.4.2"
2840 sources."wordwrapjs-2.0.0"
2841 sources."reduce-flatten-1.0.1"
2842 sources."@types/clone-0.1.30"
2843 sources."@types/node-4.2.20"
2844 (sources."@types/parse5-0.0.31" // {
2845 dependencies = [
2846 sources."@types/node-6.0.88"
2847 ];
2848 })
2849 sources."clone-1.0.2"
2850 sources."parse5-1.5.1"
2851 sources."es6-promise-2.3.0"
2852 (sources."hydrolysis-1.25.0" // {
2853 dependencies = [
2854 sources."dom5-1.1.0"
2855 ];
2856 })
2857 sources."path-posix-1.0.0"
2858 sources."acorn-3.3.0"
2859 sources."babel-polyfill-6.26.0"
2860 sources."doctrine-0.7.2"
2861 (sources."escodegen-1.9.0" // {
2862 dependencies = [
2863 sources."estraverse-4.2.0"
2864 sources."esutils-2.0.2"
2865 sources."esprima-3.1.3"
2866 sources."source-map-0.5.7"
2867 ];
2868 })
2869 (sources."espree-3.5.1" // {
2870 dependencies = [
2871 sources."acorn-5.1.2"
2872 ];
2873 })
2874 sources."estraverse-3.1.0"
2875 sources."path-is-absolute-1.0.1"
2876 (sources."babel-runtime-6.26.0" // {
2877 dependencies = [
2878 sources."regenerator-runtime-0.11.0"
2879 ];
2880 })
2881 sources."regenerator-runtime-0.10.5"
2882 sources."esutils-1.1.6"
2883 sources."isarray-0.0.1"
2884 sources."optionator-0.8.2"
2885 sources."prelude-ls-1.1.2"
2886 sources."deep-is-0.1.3"
2887 sources."wordwrap-1.0.0"
2888 sources."type-check-0.3.2"
2889 sources."levn-0.3.0"
2890 sources."fast-levenshtein-2.0.6"
2891 sources."acorn-jsx-3.0.1"
2892 sources."object-assign-4.1.1"
2893 sources."optparse-1.0.5"
2894 sources."semver-5.4.1"
2895 (sources."npm-registry-client-8.4.0" // {
3231 sources."normalize-package-data-2.4.0"
3232 sources."npm-package-arg-6.1.0"
3233 (sources."npm-registry-client-8.5.1" // {
2896 3234 dependencies = [
2897 3235 sources."graceful-fs-4.1.11"
2898 3236 ];
2899 3237 })
2900 (sources."npmconf-2.1.2" // {
3238 (sources."npmconf-2.1.3" // {
2901 3239 dependencies = [
2902 3240 sources."nopt-3.0.6"
2903 3241 sources."once-1.3.3"
2904 3242 sources."semver-4.3.6"
2905 3243 ];
2906 3244 })
2907 sources."tar-3.1.15"
2908 sources."temp-0.8.3"
2909 (sources."fs.extra-1.3.2" // {
3245 sources."npmlog-4.1.2"
3246 sources."number-is-nan-1.0.1"
3247 sources."oauth-sign-0.8.2"
3248 sources."object-assign-4.1.1"
3249 sources."once-1.4.0"
3250 sources."optionator-0.8.2"
3251 sources."optparse-1.0.5"
3252 sources."os-homedir-1.0.2"
3253 sources."os-tmpdir-1.0.2"
3254 sources."osenv-0.1.5"
3255 sources."parse5-1.5.1"
3256 sources."path-is-absolute-1.0.1"
3257 sources."path-posix-1.0.0"
3258 sources."pend-1.2.0"
3259 sources."performance-now-0.2.0"
3260 sources."phantom-4.0.12"
3261 (sources."phantomjs-prebuilt-2.1.16" // {
2910 3262 dependencies = [
2911 sources."mkdirp-0.3.5"
3263 sources."es6-promise-4.2.4"
3264 sources."fs-extra-1.0.0"
3265 sources."graceful-fs-4.1.11"
3266 sources."jsonfile-2.4.0"
3267 sources."which-1.3.1"
2912 3268 ];
2913 3269 })
2914 sources."findit-2.0.0"
2915 sources."base64-js-1.2.1"
2916 sources."slasp-0.0.4"
2917 sources."nijs-0.0.23"
2918 sources."concat-stream-1.6.0"
2919 sources."normalize-package-data-2.4.0"
2920 sources."npm-package-arg-5.1.2"
2921 sources."once-1.4.0"
2922 sources."retry-0.10.1"
2923 sources."slide-1.1.6"
2924 sources."ssri-4.1.6"
2925 sources."npmlog-4.1.2"
2926 sources."typedarray-0.0.6"
2927 (sources."readable-stream-2.3.3" // {
3270 sources."pinkie-2.0.4"
3271 sources."pinkie-promise-2.0.1"
3272 sources."prelude-ls-1.1.2"
3273 sources."process-nextick-args-2.0.0"
3274 sources."progress-1.1.8"
3275 sources."promise-7.3.1"
3276 sources."proto-list-1.2.4"
3277 sources."prr-1.0.1"
3278 sources."punycode-1.4.1"
3279 sources."qrious-4.0.2"
3280 sources."qs-6.4.0"
3281 (sources."readable-stream-2.3.6" // {
2928 3282 dependencies = [
2929 3283 sources."isarray-1.0.0"
2930 3284 ];
2931 3285 })
2932 sources."process-nextick-args-1.0.7"
2933 sources."string_decoder-1.0.3"
2934 sources."util-deprecate-1.0.2"
2935 sources."hosted-git-info-2.5.0"
2936 sources."is-builtin-module-1.0.0"
2937 sources."validate-npm-package-license-3.0.1"
2938 sources."builtin-modules-1.1.1"
2939 sources."spdx-correct-1.0.2"
2940 sources."spdx-expression-parse-1.0.4"
2941 sources."spdx-license-ids-1.2.2"
2942 sources."osenv-0.1.4"
2943 sources."validate-npm-package-name-3.0.0"
2944 sources."os-homedir-1.0.2"
2945 sources."os-tmpdir-1.0.2"
2946 sources."builtins-1.0.3"
2947 sources."wrappy-1.0.2"
2948 sources."are-we-there-yet-1.1.4"
2949 sources."console-control-strings-1.1.0"
2950 sources."gauge-2.7.4"
3286 sources."reduce-flatten-1.0.1"
3287 sources."regenerator-runtime-0.10.5"
3288 sources."request-2.81.0"
3289 sources."request-progress-2.0.1"
3290 sources."retry-0.10.1"
3291 sources."rimraf-2.2.8"
3292 sources."safe-buffer-5.1.2"
3293 sources."safer-buffer-2.1.2"
3294 sources."select-1.1.2"
3295 sources."semver-5.5.0"
2951 3296 sources."set-blocking-2.0.0"
2952 sources."delegates-1.0.0"
2953 sources."aproba-1.2.0"
2954 sources."has-unicode-2.0.1"
3297 sources."shelljs-0.3.0"
3298 sources."sigmund-1.0.1"
2955 3299 sources."signal-exit-3.0.2"
2956 sources."string-width-1.0.2"
2957 sources."wide-align-1.1.2"
2958 sources."code-point-at-1.1.0"
2959 sources."is-fullwidth-code-point-1.0.0"
2960 sources."number-is-nan-1.0.1"
2961 sources."config-chain-1.1.11"
2962 sources."ini-1.3.4"
2963 sources."uid-number-0.0.5"
2964 sources."proto-list-1.2.4"
2965 sources."minipass-2.2.1"
2966 sources."minizlib-1.0.3"
2967 sources."yallist-3.0.2"
2968 (sources."fs-extra-0.6.4" // {
3300 sources."slasp-0.0.4"
3301 sources."slide-1.1.6"
3302 sources."sntp-1.0.9"
3303 sources."source-map-0.3.0"
3304 sources."spdx-correct-3.0.0"
3305 sources."spdx-exceptions-2.1.0"
3306 sources."spdx-expression-parse-3.0.0"
3307 sources."spdx-license-ids-3.0.0"
3308 sources."split-1.0.1"
3309 (sources."sshpk-1.14.2" // {
2969 3310 dependencies = [
2970 sources."mkdirp-0.3.5"
3311 sources."assert-plus-1.0.0"
2971 3312 ];
2972 3313 })
2973 sources."walk-2.3.9"
2974 sources."ncp-0.4.2"
2975 sources."jsonfile-1.0.1"
2976 sources."foreachasync-3.0.0"
2977 (sources."cli-1.0.1" // {
3314 sources."ssri-5.3.0"
3315 sources."stack-trace-0.0.10"
3316 sources."string-width-1.0.2"
3317 sources."string_decoder-1.1.1"
3318 sources."stringstream-0.0.6"
3319 sources."strip-ansi-3.0.1"
3320 sources."strip-json-comments-1.0.4"
3321 sources."supports-color-2.0.0"
3322 sources."table-layout-0.3.0"
3323 sources."tar-3.1.15"
3324 sources."temp-0.8.3"
3325 sources."test-value-2.1.0"
3326 sources."throttleit-1.0.0"
3327 sources."through-2.3.8"
3328 sources."tiny-emitter-2.0.2"
3329 (sources."tiny-lr-fork-0.0.5" // {
2978 3330 dependencies = [
2979 sources."glob-7.1.2"
2980 sources."minimatch-3.0.4"
2981 ];
2982 })
2983 sources."console-browserify-1.1.0"
2984 (sources."htmlparser2-3.8.3" // {
2985 dependencies = [
2986 sources."readable-stream-1.1.14"
2987 sources."string_decoder-0.10.31"
3331 sources."qs-0.5.6"
2988 3332 ];
2989 3333 })
2990 sources."shelljs-0.3.0"
2991 sources."strip-json-comments-1.0.4"
2992 sources."fs.realpath-1.0.0"
2993 sources."inflight-1.0.6"
2994 sources."brace-expansion-1.1.8"
2995 sources."balanced-match-1.0.0"
2996 sources."concat-map-0.0.1"
2997 sources."date-now-0.1.4"
2998 sources."domhandler-2.3.0"
2999 sources."domutils-1.5.1"
3000 sources."domelementtype-1.3.0"
3001 sources."entities-1.0.0"
3002 (sources."dom-serializer-0.1.0" // {
3334 sources."tough-cookie-2.3.4"
3335 sources."tunnel-agent-0.6.0"
3336 sources."tweetnacl-0.14.5"
3337 sources."type-check-0.3.2"
3338 sources."typedarray-0.0.6"
3339 sources."typical-2.6.1"
3340 sources."uid-number-0.0.5"
3341 sources."underscore-1.7.0"
3342 sources."underscore.string-2.2.1"
3343 sources."unicode-5.2.0-0.7.5"
3344 sources."util-deprecate-1.0.2"
3345 sources."uuid-3.3.2"
3346 sources."validate-npm-package-license-3.0.3"
3347 sources."validate-npm-package-name-3.0.0"
3348 (sources."verror-1.10.0" // {
3003 3349 dependencies = [
3004 sources."domelementtype-1.1.3"
3005 sources."entities-1.1.1"
3350 sources."assert-plus-1.0.0"
3006 3351 ];
3007 3352 })
3008 sources."good-listener-1.2.2"
3009 sources."select-1.1.2"
3010 sources."tiny-emitter-2.0.2"
3011 sources."delegate-3.1.3"
3353 (sources."vulcanize-1.16.0" // {
3354 dependencies = [
3355 sources."nopt-3.0.6"
3356 ];
3357 })
3358 sources."walk-2.3.14"
3359 sources."which-1.0.9"
3360 sources."wide-align-1.1.3"
3361 (sources."winston-2.4.3" // {
3362 dependencies = [
3363 sources."async-1.0.0"
3364 sources."colors-1.0.3"
3365 ];
3366 })
3367 sources."wordwrap-1.0.0"
3368 sources."wordwrapjs-2.0.0"
3369 sources."wrappy-1.0.2"
3370 sources."yallist-3.0.2"
3371 sources."yauzl-2.4.1"
3012 3372 ];
3373 buildInputs = globalBuildInputs;
3013 3374 meta = {
3375 description = "RhodeCode JS packaged";
3376 license = "SEE LICENSE IN LICENSE.txt";
3014 3377 };
3015 3378 production = false;
3379 bypassCache = false;
3016 3380 };
3017 3381 in
3018 3382 {
3019 3383 tarball = nodeEnv.buildNodeSourceDist args;
3020 3384 package = nodeEnv.buildNodePackage args;
3021 3385 shell = nodeEnv.buildNodeShell args;
3022 3386 } No newline at end of file
1 NO CONTENT: file renamed from pkgs/patch-beaker-lock-func-debug.diff to pkgs/patch_beaker/patch-beaker-lock-func-debug.diff
@@ -1,250 +1,247 b''
1 1 # Overrides for the generated python-packages.nix
2 2 #
3 3 # This function is intended to be used as an extension to the generated file
4 4 # python-packages.nix. The main objective is to add needed dependencies of C
5 5 # libraries and tweak the build instructions where needed.
6 6
7 { pkgs, basePythonPackages }:
7 { pkgs
8 , basePythonPackages
9 }:
8 10
9 11 let
10 12 sed = "sed -i";
13
11 14 localLicenses = {
12 15 repoze = {
13 16 fullName = "Repoze License";
14 17 url = http://www.repoze.org/LICENSE.txt;
15 18 };
16 19 };
17 20
18 21 in
19 22
20 23 self: super: {
21 24
22 appenlight-client = super.appenlight-client.override (attrs: {
25 "appenlight-client" = super."appenlight-client".override (attrs: {
23 26 meta = {
24 27 license = [ pkgs.lib.licenses.bsdOriginal ];
25 28 };
26 29 });
27 30
28 Beaker = super.Beaker.override (attrs: {
31 "beaker" = super."beaker".override (attrs: {
29 32 patches = [
30 ./patch-beaker-lock-func-debug.diff
33 ./patch_beaker/patch-beaker-lock-func-debug.diff
34 ./patch_beaker/patch-beaker-metadata-reuse.diff
31 35 ];
32 36 });
33 37
34 future = super.future.override (attrs: {
38 "gevent" = super."gevent".override (attrs: {
39 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
40 # NOTE: (marcink) odd requirements from gevent aren't set properly,
41 # thus we need to inject psutil manually
42 self."psutil"
43 ];
44 });
45
46 "future" = super."future".override (attrs: {
35 47 meta = {
36 48 license = [ pkgs.lib.licenses.mit ];
37 49 };
38 50 });
39 51
40 testpath = super.testpath.override (attrs: {
52 "testpath" = super."testpath".override (attrs: {
41 53 meta = {
42 54 license = [ pkgs.lib.licenses.mit ];
43 55 };
44 56 });
45 57
46 gnureadline = super.gnureadline.override (attrs: {
47 buildInputs = attrs.buildInputs ++ [
58 "gnureadline" = super."gnureadline".override (attrs: {
59 buildInputs = [
48 60 pkgs.ncurses
49 61 ];
50 62 patchPhase = ''
51 63 substituteInPlace setup.py --replace "/bin/bash" "${pkgs.bash}/bin/bash"
52 64 '';
53 65 });
54 66
55 gunicorn = super.gunicorn.override (attrs: {
56 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
67 "gunicorn" = super."gunicorn".override (attrs: {
68 propagatedBuildInputs = [
57 69 # johbo: futures is needed as long as we are on Python 2, otherwise
58 70 # gunicorn explodes if used with multiple threads per worker.
59 self.futures
71 self."futures"
60 72 ];
61 73 });
62 74
63 nbconvert = super.nbconvert.override (attrs: {
75 "nbconvert" = super."nbconvert".override (attrs: {
64 76 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
65 77 # marcink: plug in jupyter-client for notebook rendering
66 self.jupyter-client
78 self."jupyter-client"
67 79 ];
68 80 });
69 81
70 ipython = super.ipython.override (attrs: {
82 "ipython" = super."ipython".override (attrs: {
71 83 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
72 self.gnureadline
84 self."gnureadline"
73 85 ];
74 86 });
75 87
76 lxml = super.lxml.override (attrs: {
77 # johbo: On 16.09 we need this to compile on darwin, otherwise compilation
78 # fails on Darwin.
79 hardeningDisable = if pkgs.stdenv.isDarwin then [ "format" ] else null;
80 buildInputs = with self; [
88 "lxml" = super."lxml".override (attrs: {
89 buildInputs = [
81 90 pkgs.libxml2
82 91 pkgs.libxslt
83 92 ];
93 propagatedBuildInputs = [
94 # Needed, so that "setup.py bdist_wheel" does work
95 self."wheel"
96 ];
84 97 });
85 98
86 MySQL-python = super.MySQL-python.override (attrs: {
87 buildInputs = attrs.buildInputs ++ [
99 "mysql-python" = super."mysql-python".override (attrs: {
100 buildInputs = [
88 101 pkgs.openssl
89 102 ];
90 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
103 propagatedBuildInputs = [
91 104 pkgs.libmysql
92 105 pkgs.zlib
93 106 ];
94 107 });
95 108
96 psutil = super.psutil.override (attrs: {
97 buildInputs = attrs.buildInputs ++
98 pkgs.lib.optional pkgs.stdenv.isDarwin pkgs.darwin.IOKit;
99 });
100
101 psycopg2 = super.psycopg2.override (attrs: {
102 buildInputs = attrs.buildInputs ++
103 pkgs.lib.optional pkgs.stdenv.isDarwin pkgs.openssl;
104 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
109 "psycopg2" = super."psycopg2".override (attrs: {
110 propagatedBuildInputs = [
105 111 pkgs.postgresql
106 112 ];
107 113 meta = {
108 114 license = pkgs.lib.licenses.lgpl3Plus;
109 115 };
110 116 });
111 117
112 pycurl = super.pycurl.override (attrs: {
113 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
118 "pycurl" = super."pycurl".override (attrs: {
119 propagatedBuildInputs = [
114 120 pkgs.curl
115 121 pkgs.openssl
116 122 ];
117 123 preConfigure = ''
118 124 substituteInPlace setup.py --replace '--static-libs' '--libs'
119 125 export PYCURL_SSL_LIBRARY=openssl
120 126 '';
121 127 meta = {
122 # TODO: It is LGPL and MIT
123 128 license = pkgs.lib.licenses.mit;
124 129 };
125 130 });
126 131
127 pyramid = super.pyramid.override (attrs: {
128 postFixup = ''
129 wrapPythonPrograms
130 # TODO: johbo: "wrapPython" adds this magic line which
131 # confuses pserve.
132 ${sed} '/import sys; sys.argv/d' $out/bin/.pserve-wrapped
133 '';
132 "pyramid" = super."pyramid".override (attrs: {
134 133 meta = {
135 134 license = localLicenses.repoze;
136 135 };
137 136 });
138 137
139 pyramid-debugtoolbar = super.pyramid-debugtoolbar.override (attrs: {
138 "pyramid-debugtoolbar" = super."pyramid-debugtoolbar".override (attrs: {
140 139 meta = {
141 140 license = [ pkgs.lib.licenses.bsdOriginal localLicenses.repoze ];
142 141 };
143 142 });
144 143
145 pysqlite = super.pysqlite.override (attrs: {
144 "pysqlite" = super."pysqlite".override (attrs: {
146 145 propagatedBuildInputs = [
147 146 pkgs.sqlite
148 147 ];
149 148 meta = {
150 149 license = [ pkgs.lib.licenses.zlib pkgs.lib.licenses.libpng ];
151 150 };
152 151 });
153 152
154 pytest-runner = super.pytest-runner.override (attrs: {
153 "pytest-runner" = super."pytest-runner".override (attrs: {
155 154 propagatedBuildInputs = [
156 self.setuptools-scm
155 self."setuptools-scm"
156 ];
157 });
158
159 "python-ldap" = super."python-ldap".override (attrs: {
160 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
161 pkgs.openldap
162 pkgs.cyrus_sasl
163 pkgs.openssl
157 164 ];
158 165 });
159 166
160 python-ldap = super.python-ldap.override (attrs: {
161 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
162 pkgs.cyrus_sasl
163 pkgs.openldap
164 pkgs.openssl
167 "python-pam" = super."python-pam".override (attrs: {
168 propagatedBuildInputs = [
169 pkgs.pam
165 170 ];
166 # TODO: johbo: Remove the "or" once we drop 16.03 support.
167 NIX_CFLAGS_COMPILE = "-I${pkgs.cyrus_sasl.dev or pkgs.cyrus_sasl}/include/sasl";
171 # TODO: johbo: Check if this can be avoided, or transform into
172 # a real patch
173 patchPhase = ''
174 substituteInPlace pam.py \
175 --replace 'find_library("pam")' '"${pkgs.pam}/lib/libpam.so.0"'
176 '';
177 });
178
179 "pyzmq" = super."pyzmq".override (attrs: {
180 buildInputs = [
181 pkgs.czmq
182 ];
168 183 });
169 184
170 python-pam = super.python-pam.override (attrs:
171 let
172 includeLibPam = pkgs.stdenv.isLinux;
173 in {
174 # TODO: johbo: Move the option up into the default.nix, we should
175 # include python-pam only on supported platforms.
176 propagatedBuildInputs = attrs.propagatedBuildInputs ++
177 pkgs.lib.optional includeLibPam [
178 pkgs.pam
179 ];
180 # TODO: johbo: Check if this can be avoided, or transform into
181 # a real patch
182 patchPhase = pkgs.lib.optionals includeLibPam ''
183 substituteInPlace pam.py \
184 --replace 'find_library("pam")' '"${pkgs.pam}/lib/libpam.so.0"'
185 '';
186 });
187
188 URLObject = super.URLObject.override (attrs: {
185 "urlobject" = super."urlobject".override (attrs: {
189 186 meta = {
190 187 license = {
191 188 spdxId = "Unlicense";
192 189 fullName = "The Unlicense";
193 190 url = http://unlicense.org/;
194 191 };
195 192 };
196 193 });
197 194
198 docutils = super.docutils.override (attrs: {
195 "docutils" = super."docutils".override (attrs: {
199 196 meta = {
200 197 license = pkgs.lib.licenses.bsd2;
201 198 };
202 199 });
203 200
204 colander = super.colander.override (attrs: {
201 "colander" = super."colander".override (attrs: {
205 202 meta = {
206 203 license = localLicenses.repoze;
207 204 };
208 205 });
209 206
210 pyramid-beaker = super.pyramid-beaker.override (attrs: {
207 "pyramid-beaker" = super."pyramid-beaker".override (attrs: {
211 208 meta = {
212 209 license = localLicenses.repoze;
213 210 };
214 211 });
215 212
216 pyramid-mako = super.pyramid-mako.override (attrs: {
213 "pyramid-mako" = super."pyramid-mako".override (attrs: {
217 214 meta = {
218 215 license = localLicenses.repoze;
219 216 };
220 217 });
221 218
222 repoze.lru = super.repoze.lru.override (attrs: {
219 "repoze.lru" = super."repoze.lru".override (attrs: {
223 220 meta = {
224 221 license = localLicenses.repoze;
225 222 };
226 223 });
227 224
228 python-editor = super.python-editor.override (attrs: {
225 "python-editor" = super."python-editor".override (attrs: {
229 226 meta = {
230 227 license = pkgs.lib.licenses.asl20;
231 228 };
232 229 });
233 230
234 translationstring = super.translationstring.override (attrs: {
231 "translationstring" = super."translationstring".override (attrs: {
235 232 meta = {
236 233 license = localLicenses.repoze;
237 234 };
238 235 });
239 236
240 venusian = super.venusian.override (attrs: {
237 "venusian" = super."venusian".override (attrs: {
241 238 meta = {
242 239 license = localLicenses.repoze;
243 240 };
244 241 });
245 242
246 # Avoid that setuptools is replaced, this leads to trouble
247 # with buildPythonPackage.
248 setuptools = basePythonPackages.setuptools;
243 # Avoid that base packages screw up the build process
244 inherit (basePythonPackages)
245 setuptools;
249 246
250 247 }
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from rhodecode/lib/memory_lru_debug.py to rhodecode/lib/memory_lru_dict.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from rhodecode/tests/controllers/test_utils.py to rhodecode/tests/other/test_views_utils.py
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now