haste-server: init at 3dcc43578b99dbafac35dece9d774ff2af39e8d0

+2248
+62
pkgs/servers/haste-server/default.nix
··· 1 + { lib 2 + , nixosTests 3 + , stdenv 4 + , fetchFromGitHub 5 + , makeWrapper 6 + , nodejs 7 + , pkgs 8 + }: 9 + 10 + stdenv.mkDerivation rec { 11 + pname = "haste-server"; 12 + version = "3dcc43578b99dbafac35dece9d774ff2af39e8d0"; 13 + 14 + src = fetchFromGitHub { 15 + owner = "toptal"; 16 + repo = "haste-server"; 17 + rev = version; 18 + hash = "sha256-srSPRlG+gXSIwgVFLyfzRex97tCbV9FZXYpLD0KFRfw="; 19 + }; 20 + 21 + nativeBuildInputs = [ 22 + nodejs 23 + makeWrapper 24 + ]; 25 + 26 + installPhase = 27 + let 28 + nodeDependencies = ((import ./node-composition.nix { 29 + inherit pkgs nodejs; 30 + inherit (stdenv.hostPlatform) system; 31 + }).nodeDependencies.override (old: { 32 + # access to path '/nix/store/...-source' is forbidden in restricted mode 33 + src = src; 34 + dontNpmInstall = true; 35 + })); 36 + in 37 + '' 38 + runHook postInstall 39 + 40 + mkdir -p $out/share 41 + cp -ra . $out/share/haste-server 42 + ln -s ${nodeDependencies}/lib/node_modules $out/share/haste-server/node_modules 43 + makeWrapper ${nodejs}/bin/node $out/bin/haste-server \ 44 + --add-flags $out/share/haste-server/server.js 45 + 46 + runHook postBuild 47 + ''; 48 + 49 + passthru = { 50 + tests = { 51 + inherit (nixosTests) haste-server; 52 + }; 53 + updateScript = ./update.sh; 54 + }; 55 + 56 + meta = with lib; { 57 + description = "open source pastebin written in node.js"; 58 + homepage = "https://www.toptal.com/developers/hastebin/about.md"; 59 + license = licenses.mit; 60 + maintainers = with maintainers; [ mkg20001 ]; 61 + }; 62 + }
+17
pkgs/servers/haste-server/node-composition.nix
··· 1 + # This file has been generated by node2nix 1.9.0. Do not edit! 2 + 3 + {pkgs ? import <nixpkgs> { 4 + inherit system; 5 + }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-14_x"}: 6 + 7 + let 8 + nodeEnv = import ./node-env.nix { 9 + inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript; 10 + inherit pkgs nodejs; 11 + libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null; 12 + }; 13 + in 14 + import ./node-deps.nix { 15 + inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit; 16 + inherit nodeEnv; 17 + }
+1551
pkgs/servers/haste-server/node-deps.nix
··· 1 + # This file has been generated by node2nix 1.9.0. Do not edit! 2 + 3 + {nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}: 4 + 5 + let 6 + sources = { 7 + "@ungap/promise-all-settled-1.1.2" = { 8 + name = "_at_ungap_slash_promise-all-settled"; 9 + packageName = "@ungap/promise-all-settled"; 10 + version = "1.1.2"; 11 + src = fetchurl { 12 + url = "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz"; 13 + sha512 = "sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q=="; 14 + }; 15 + }; 16 + "ansi-colors-4.1.1" = { 17 + name = "ansi-colors"; 18 + packageName = "ansi-colors"; 19 + version = "4.1.1"; 20 + src = fetchurl { 21 + url = "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz"; 22 + sha512 = "JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA=="; 23 + }; 24 + }; 25 + "ansi-regex-3.0.0" = { 26 + name = "ansi-regex"; 27 + packageName = "ansi-regex"; 28 + version = "3.0.0"; 29 + src = fetchurl { 30 + url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz"; 31 + sha1 = "ed0317c322064f79466c02966bddb605ab37d998"; 32 + }; 33 + }; 34 + "ansi-regex-5.0.1" = { 35 + name = "ansi-regex"; 36 + packageName = "ansi-regex"; 37 + version = "5.0.1"; 38 + src = fetchurl { 39 + url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"; 40 + sha512 = "quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="; 41 + }; 42 + }; 43 + "ansi-styles-4.3.0" = { 44 + name = "ansi-styles"; 45 + packageName = "ansi-styles"; 46 + version = "4.3.0"; 47 + src = fetchurl { 48 + url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"; 49 + sha512 = "zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="; 50 + }; 51 + }; 52 + "anymatch-3.1.2" = { 53 + name = "anymatch"; 54 + packageName = "anymatch"; 55 + version = "3.1.2"; 56 + src = fetchurl { 57 + url = "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz"; 58 + sha512 = "P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg=="; 59 + }; 60 + }; 61 + "argparse-2.0.1" = { 62 + name = "argparse"; 63 + packageName = "argparse"; 64 + version = "2.0.1"; 65 + src = fetchurl { 66 + url = "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"; 67 + sha512 = "8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="; 68 + }; 69 + }; 70 + "async-1.0.0" = { 71 + name = "async"; 72 + packageName = "async"; 73 + version = "1.0.0"; 74 + src = fetchurl { 75 + url = "https://registry.npmjs.org/async/-/async-1.0.0.tgz"; 76 + sha1 = "f8fc04ca3a13784ade9e1641af98578cfbd647a9"; 77 + }; 78 + }; 79 + "async-cache-1.1.0" = { 80 + name = "async-cache"; 81 + packageName = "async-cache"; 82 + version = "1.1.0"; 83 + src = fetchurl { 84 + url = "https://registry.npmjs.org/async-cache/-/async-cache-1.1.0.tgz"; 85 + sha1 = "4a9a5a89d065ec5d8e5254bd9ee96ba76c532b5a"; 86 + }; 87 + }; 88 + "balanced-match-1.0.2" = { 89 + name = "balanced-match"; 90 + packageName = "balanced-match"; 91 + version = "1.0.2"; 92 + src = fetchurl { 93 + url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"; 94 + sha512 = "3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="; 95 + }; 96 + }; 97 + "base64-js-1.5.1" = { 98 + name = "base64-js"; 99 + packageName = "base64-js"; 100 + version = "1.5.1"; 101 + src = fetchurl { 102 + url = "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"; 103 + sha512 = "AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="; 104 + }; 105 + }; 106 + "binary-extensions-2.2.0" = { 107 + name = "binary-extensions"; 108 + packageName = "binary-extensions"; 109 + version = "2.2.0"; 110 + src = fetchurl { 111 + url = "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"; 112 + sha512 = "jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="; 113 + }; 114 + }; 115 + "bl-4.1.0" = { 116 + name = "bl"; 117 + packageName = "bl"; 118 + version = "4.1.0"; 119 + src = fetchurl { 120 + url = "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz"; 121 + sha512 = "1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="; 122 + }; 123 + }; 124 + "brace-expansion-1.1.11" = { 125 + name = "brace-expansion"; 126 + packageName = "brace-expansion"; 127 + version = "1.1.11"; 128 + src = fetchurl { 129 + url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"; 130 + sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="; 131 + }; 132 + }; 133 + "braces-3.0.2" = { 134 + name = "braces"; 135 + packageName = "braces"; 136 + version = "3.0.2"; 137 + src = fetchurl { 138 + url = "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"; 139 + sha512 = "b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A=="; 140 + }; 141 + }; 142 + "browser-stdout-1.3.1" = { 143 + name = "browser-stdout"; 144 + packageName = "browser-stdout"; 145 + version = "1.3.1"; 146 + src = fetchurl { 147 + url = "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz"; 148 + sha512 = "qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw=="; 149 + }; 150 + }; 151 + "buffer-5.7.1" = { 152 + name = "buffer"; 153 + packageName = "buffer"; 154 + version = "5.7.1"; 155 + src = fetchurl { 156 + url = "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz"; 157 + sha512 = "EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="; 158 + }; 159 + }; 160 + "buffer-writer-2.0.0" = { 161 + name = "buffer-writer"; 162 + packageName = "buffer-writer"; 163 + version = "2.0.0"; 164 + src = fetchurl { 165 + url = "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz"; 166 + sha512 = "a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw=="; 167 + }; 168 + }; 169 + "busboy-0.2.4" = { 170 + name = "busboy"; 171 + packageName = "busboy"; 172 + version = "0.2.4"; 173 + src = fetchurl { 174 + url = "https://registry.npmjs.org/busboy/-/busboy-0.2.4.tgz"; 175 + sha1 = "1977e96e1ee884649651ebdf548ca900758ba7f3"; 176 + }; 177 + }; 178 + "camelcase-6.3.0" = { 179 + name = "camelcase"; 180 + packageName = "camelcase"; 181 + version = "6.3.0"; 182 + src = fetchurl { 183 + url = "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz"; 184 + sha512 = "Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="; 185 + }; 186 + }; 187 + "chalk-4.1.2" = { 188 + name = "chalk"; 189 + packageName = "chalk"; 190 + version = "4.1.2"; 191 + src = fetchurl { 192 + url = "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"; 193 + sha512 = "oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="; 194 + }; 195 + }; 196 + "chokidar-3.5.1" = { 197 + name = "chokidar"; 198 + packageName = "chokidar"; 199 + version = "3.5.1"; 200 + src = fetchurl { 201 + url = "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz"; 202 + sha512 = "9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw=="; 203 + }; 204 + }; 205 + "cliui-7.0.4" = { 206 + name = "cliui"; 207 + packageName = "cliui"; 208 + version = "7.0.4"; 209 + src = fetchurl { 210 + url = "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz"; 211 + sha512 = "OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="; 212 + }; 213 + }; 214 + "color-convert-2.0.1" = { 215 + name = "color-convert"; 216 + packageName = "color-convert"; 217 + version = "2.0.1"; 218 + src = fetchurl { 219 + url = "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"; 220 + sha512 = "RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="; 221 + }; 222 + }; 223 + "color-name-1.1.4" = { 224 + name = "color-name"; 225 + packageName = "color-name"; 226 + version = "1.1.4"; 227 + src = fetchurl { 228 + url = "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"; 229 + sha512 = "dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="; 230 + }; 231 + }; 232 + "colors-1.0.3" = { 233 + name = "colors"; 234 + packageName = "colors"; 235 + version = "1.0.3"; 236 + src = fetchurl { 237 + url = "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz"; 238 + sha1 = "0433f44d809680fdeb60ed260f1b0c262e82a40b"; 239 + }; 240 + }; 241 + "commander-2.11.0" = { 242 + name = "commander"; 243 + packageName = "commander"; 244 + version = "2.11.0"; 245 + src = fetchurl { 246 + url = "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz"; 247 + sha512 = "b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ=="; 248 + }; 249 + }; 250 + "concat-map-0.0.1" = { 251 + name = "concat-map"; 252 + packageName = "concat-map"; 253 + version = "0.0.1"; 254 + src = fetchurl { 255 + url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"; 256 + sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b"; 257 + }; 258 + }; 259 + "connect-3.7.0" = { 260 + name = "connect"; 261 + packageName = "connect"; 262 + version = "3.7.0"; 263 + src = fetchurl { 264 + url = "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz"; 265 + sha512 = "ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ=="; 266 + }; 267 + }; 268 + "connect-ratelimit-0.0.7" = { 269 + name = "connect-ratelimit"; 270 + packageName = "connect-ratelimit"; 271 + version = "0.0.7"; 272 + src = fetchurl { 273 + url = "https://registry.npmjs.org/connect-ratelimit/-/connect-ratelimit-0.0.7.tgz"; 274 + sha1 = "e6e09c950649e849499cab1870a415a07f731568"; 275 + }; 276 + }; 277 + "connect-route-0.1.5" = { 278 + name = "connect-route"; 279 + packageName = "connect-route"; 280 + version = "0.1.5"; 281 + src = fetchurl { 282 + url = "https://registry.npmjs.org/connect-route/-/connect-route-0.1.5.tgz"; 283 + sha1 = "e3c218319d2e88a8a9ae0b0e0fe09a729c39744a"; 284 + }; 285 + }; 286 + "core-util-is-1.0.3" = { 287 + name = "core-util-is"; 288 + packageName = "core-util-is"; 289 + version = "1.0.3"; 290 + src = fetchurl { 291 + url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"; 292 + sha512 = "ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="; 293 + }; 294 + }; 295 + "cycle-1.0.3" = { 296 + name = "cycle"; 297 + packageName = "cycle"; 298 + version = "1.0.3"; 299 + src = fetchurl { 300 + url = "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz"; 301 + sha1 = "21e80b2be8580f98b468f379430662b046c34ad2"; 302 + }; 303 + }; 304 + "debug-2.6.9" = { 305 + name = "debug"; 306 + packageName = "debug"; 307 + version = "2.6.9"; 308 + src = fetchurl { 309 + url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"; 310 + sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="; 311 + }; 312 + }; 313 + "debug-4.3.1" = { 314 + name = "debug"; 315 + packageName = "debug"; 316 + version = "4.3.1"; 317 + src = fetchurl { 318 + url = "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz"; 319 + sha512 = "doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ=="; 320 + }; 321 + }; 322 + "decamelize-4.0.0" = { 323 + name = "decamelize"; 324 + packageName = "decamelize"; 325 + version = "4.0.0"; 326 + src = fetchurl { 327 + url = "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz"; 328 + sha512 = "9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ=="; 329 + }; 330 + }; 331 + "dicer-0.2.3" = { 332 + name = "dicer"; 333 + packageName = "dicer"; 334 + version = "0.2.3"; 335 + src = fetchurl { 336 + url = "https://registry.npmjs.org/dicer/-/dicer-0.2.3.tgz"; 337 + sha1 = "f00281189a55c2351ef80490a4fe9fb2c59c4939"; 338 + }; 339 + }; 340 + "diff-5.0.0" = { 341 + name = "diff"; 342 + packageName = "diff"; 343 + version = "5.0.0"; 344 + src = fetchurl { 345 + url = "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz"; 346 + sha512 = "/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w=="; 347 + }; 348 + }; 349 + "ee-first-1.1.1" = { 350 + name = "ee-first"; 351 + packageName = "ee-first"; 352 + version = "1.1.1"; 353 + src = fetchurl { 354 + url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"; 355 + sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d"; 356 + }; 357 + }; 358 + "emoji-regex-8.0.0" = { 359 + name = "emoji-regex"; 360 + packageName = "emoji-regex"; 361 + version = "8.0.0"; 362 + src = fetchurl { 363 + url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"; 364 + sha512 = "MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="; 365 + }; 366 + }; 367 + "encodeurl-1.0.2" = { 368 + name = "encodeurl"; 369 + packageName = "encodeurl"; 370 + version = "1.0.2"; 371 + src = fetchurl { 372 + url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz"; 373 + sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"; 374 + }; 375 + }; 376 + "escalade-3.1.1" = { 377 + name = "escalade"; 378 + packageName = "escalade"; 379 + version = "3.1.1"; 380 + src = fetchurl { 381 + url = "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"; 382 + sha512 = "k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="; 383 + }; 384 + }; 385 + "escape-html-1.0.3" = { 386 + name = "escape-html"; 387 + packageName = "escape-html"; 388 + version = "1.0.3"; 389 + src = fetchurl { 390 + url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"; 391 + sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988"; 392 + }; 393 + }; 394 + "escape-string-regexp-4.0.0" = { 395 + name = "escape-string-regexp"; 396 + packageName = "escape-string-regexp"; 397 + version = "4.0.0"; 398 + src = fetchurl { 399 + url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"; 400 + sha512 = "TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="; 401 + }; 402 + }; 403 + "eyes-0.1.8" = { 404 + name = "eyes"; 405 + packageName = "eyes"; 406 + version = "0.1.8"; 407 + src = fetchurl { 408 + url = "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz"; 409 + sha1 = "62cf120234c683785d902348a800ef3e0cc20bc0"; 410 + }; 411 + }; 412 + "fd-0.0.3" = { 413 + name = "fd"; 414 + packageName = "fd"; 415 + version = "0.0.3"; 416 + src = fetchurl { 417 + url = "https://registry.npmjs.org/fd/-/fd-0.0.3.tgz"; 418 + sha512 = "iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA=="; 419 + }; 420 + }; 421 + "fill-range-7.0.1" = { 422 + name = "fill-range"; 423 + packageName = "fill-range"; 424 + version = "7.0.1"; 425 + src = fetchurl { 426 + url = "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"; 427 + sha512 = "qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ=="; 428 + }; 429 + }; 430 + "finalhandler-1.1.2" = { 431 + name = "finalhandler"; 432 + packageName = "finalhandler"; 433 + version = "1.1.2"; 434 + src = fetchurl { 435 + url = "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz"; 436 + sha512 = "aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA=="; 437 + }; 438 + }; 439 + "find-up-5.0.0" = { 440 + name = "find-up"; 441 + packageName = "find-up"; 442 + version = "5.0.0"; 443 + src = fetchurl { 444 + url = "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"; 445 + sha512 = "78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="; 446 + }; 447 + }; 448 + "flat-5.0.2" = { 449 + name = "flat"; 450 + packageName = "flat"; 451 + version = "5.0.2"; 452 + src = fetchurl { 453 + url = "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz"; 454 + sha512 = "b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="; 455 + }; 456 + }; 457 + "fs.realpath-1.0.0" = { 458 + name = "fs.realpath"; 459 + packageName = "fs.realpath"; 460 + version = "1.0.0"; 461 + src = fetchurl { 462 + url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"; 463 + sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f"; 464 + }; 465 + }; 466 + "fsevents-2.3.2" = { 467 + name = "fsevents"; 468 + packageName = "fsevents"; 469 + version = "2.3.2"; 470 + src = fetchurl { 471 + url = "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"; 472 + sha512 = "xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="; 473 + }; 474 + }; 475 + "get-caller-file-2.0.5" = { 476 + name = "get-caller-file"; 477 + packageName = "get-caller-file"; 478 + version = "2.0.5"; 479 + src = fetchurl { 480 + url = "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"; 481 + sha512 = "DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="; 482 + }; 483 + }; 484 + "glob-7.1.6" = { 485 + name = "glob"; 486 + packageName = "glob"; 487 + version = "7.1.6"; 488 + src = fetchurl { 489 + url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz"; 490 + sha512 = "LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA=="; 491 + }; 492 + }; 493 + "glob-parent-5.1.2" = { 494 + name = "glob-parent"; 495 + packageName = "glob-parent"; 496 + version = "5.1.2"; 497 + src = fetchurl { 498 + url = "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"; 499 + sha512 = "AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="; 500 + }; 501 + }; 502 + "graceful-fs-4.2.9" = { 503 + name = "graceful-fs"; 504 + packageName = "graceful-fs"; 505 + version = "4.2.9"; 506 + src = fetchurl { 507 + url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz"; 508 + sha512 = "NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ=="; 509 + }; 510 + }; 511 + "growl-1.10.5" = { 512 + name = "growl"; 513 + packageName = "growl"; 514 + version = "1.10.5"; 515 + src = fetchurl { 516 + url = "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz"; 517 + sha512 = "qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA=="; 518 + }; 519 + }; 520 + "has-flag-4.0.0" = { 521 + name = "has-flag"; 522 + packageName = "has-flag"; 523 + version = "4.0.0"; 524 + src = fetchurl { 525 + url = "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"; 526 + sha512 = "EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="; 527 + }; 528 + }; 529 + "he-1.2.0" = { 530 + name = "he"; 531 + packageName = "he"; 532 + version = "1.2.0"; 533 + src = fetchurl { 534 + url = "https://registry.npmjs.org/he/-/he-1.2.0.tgz"; 535 + sha512 = "F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="; 536 + }; 537 + }; 538 + "ieee754-1.2.1" = { 539 + name = "ieee754"; 540 + packageName = "ieee754"; 541 + version = "1.2.1"; 542 + src = fetchurl { 543 + url = "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"; 544 + sha512 = "dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="; 545 + }; 546 + }; 547 + "inflight-1.0.6" = { 548 + name = "inflight"; 549 + packageName = "inflight"; 550 + version = "1.0.6"; 551 + src = fetchurl { 552 + url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"; 553 + sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9"; 554 + }; 555 + }; 556 + "inherits-2.0.4" = { 557 + name = "inherits"; 558 + packageName = "inherits"; 559 + version = "2.0.4"; 560 + src = fetchurl { 561 + url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"; 562 + sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="; 563 + }; 564 + }; 565 + "is-binary-path-2.1.0" = { 566 + name = "is-binary-path"; 567 + packageName = "is-binary-path"; 568 + version = "2.1.0"; 569 + src = fetchurl { 570 + url = "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"; 571 + sha512 = "ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="; 572 + }; 573 + }; 574 + "is-extglob-2.1.1" = { 575 + name = "is-extglob"; 576 + packageName = "is-extglob"; 577 + version = "2.1.1"; 578 + src = fetchurl { 579 + url = "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"; 580 + sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2"; 581 + }; 582 + }; 583 + "is-fullwidth-code-point-2.0.0" = { 584 + name = "is-fullwidth-code-point"; 585 + packageName = "is-fullwidth-code-point"; 586 + version = "2.0.0"; 587 + src = fetchurl { 588 + url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"; 589 + sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f"; 590 + }; 591 + }; 592 + "is-fullwidth-code-point-3.0.0" = { 593 + name = "is-fullwidth-code-point"; 594 + packageName = "is-fullwidth-code-point"; 595 + version = "3.0.0"; 596 + src = fetchurl { 597 + url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"; 598 + sha512 = "zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="; 599 + }; 600 + }; 601 + "is-glob-4.0.3" = { 602 + name = "is-glob"; 603 + packageName = "is-glob"; 604 + version = "4.0.3"; 605 + src = fetchurl { 606 + url = "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"; 607 + sha512 = "xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="; 608 + }; 609 + }; 610 + "is-number-7.0.0" = { 611 + name = "is-number"; 612 + packageName = "is-number"; 613 + version = "7.0.0"; 614 + src = fetchurl { 615 + url = "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"; 616 + sha512 = "41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="; 617 + }; 618 + }; 619 + "is-plain-obj-2.1.0" = { 620 + name = "is-plain-obj"; 621 + packageName = "is-plain-obj"; 622 + version = "2.1.0"; 623 + src = fetchurl { 624 + url = "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz"; 625 + sha512 = "YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="; 626 + }; 627 + }; 628 + "isarray-0.0.1" = { 629 + name = "isarray"; 630 + packageName = "isarray"; 631 + version = "0.0.1"; 632 + src = fetchurl { 633 + url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"; 634 + sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf"; 635 + }; 636 + }; 637 + "isexe-2.0.0" = { 638 + name = "isexe"; 639 + packageName = "isexe"; 640 + version = "2.0.0"; 641 + src = fetchurl { 642 + url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"; 643 + sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10"; 644 + }; 645 + }; 646 + "isstream-0.1.2" = { 647 + name = "isstream"; 648 + packageName = "isstream"; 649 + version = "0.1.2"; 650 + src = fetchurl { 651 + url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"; 652 + sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a"; 653 + }; 654 + }; 655 + "js-yaml-4.0.0" = { 656 + name = "js-yaml"; 657 + packageName = "js-yaml"; 658 + version = "4.0.0"; 659 + src = fetchurl { 660 + url = "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz"; 661 + sha512 = "pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q=="; 662 + }; 663 + }; 664 + "locate-path-6.0.0" = { 665 + name = "locate-path"; 666 + packageName = "locate-path"; 667 + version = "6.0.0"; 668 + src = fetchurl { 669 + url = "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"; 670 + sha512 = "iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="; 671 + }; 672 + }; 673 + "log-symbols-4.0.0" = { 674 + name = "log-symbols"; 675 + packageName = "log-symbols"; 676 + version = "4.0.0"; 677 + src = fetchurl { 678 + url = "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz"; 679 + sha512 = "FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA=="; 680 + }; 681 + }; 682 + "lru-cache-4.1.5" = { 683 + name = "lru-cache"; 684 + packageName = "lru-cache"; 685 + version = "4.1.5"; 686 + src = fetchurl { 687 + url = "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz"; 688 + sha512 = "sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g=="; 689 + }; 690 + }; 691 + "mime-2.6.0" = { 692 + name = "mime"; 693 + packageName = "mime"; 694 + version = "2.6.0"; 695 + src = fetchurl { 696 + url = "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz"; 697 + sha512 = "USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="; 698 + }; 699 + }; 700 + "minimatch-3.0.4" = { 701 + name = "minimatch"; 702 + packageName = "minimatch"; 703 + version = "3.0.4"; 704 + src = fetchurl { 705 + url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"; 706 + sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="; 707 + }; 708 + }; 709 + "mocha-8.4.0" = { 710 + name = "mocha"; 711 + packageName = "mocha"; 712 + version = "8.4.0"; 713 + src = fetchurl { 714 + url = "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz"; 715 + sha512 = "hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ=="; 716 + }; 717 + }; 718 + "ms-2.0.0" = { 719 + name = "ms"; 720 + packageName = "ms"; 721 + version = "2.0.0"; 722 + src = fetchurl { 723 + url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"; 724 + sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8"; 725 + }; 726 + }; 727 + "ms-2.1.2" = { 728 + name = "ms"; 729 + packageName = "ms"; 730 + version = "2.1.2"; 731 + src = fetchurl { 732 + url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"; 733 + sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="; 734 + }; 735 + }; 736 + "ms-2.1.3" = { 737 + name = "ms"; 738 + packageName = "ms"; 739 + version = "2.1.3"; 740 + src = fetchurl { 741 + url = "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"; 742 + sha512 = "6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="; 743 + }; 744 + }; 745 + "nanoid-3.1.20" = { 746 + name = "nanoid"; 747 + packageName = "nanoid"; 748 + version = "3.1.20"; 749 + src = fetchurl { 750 + url = "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz"; 751 + sha512 = "a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw=="; 752 + }; 753 + }; 754 + "negotiator-0.6.3" = { 755 + name = "negotiator"; 756 + packageName = "negotiator"; 757 + version = "0.6.3"; 758 + src = fetchurl { 759 + url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz"; 760 + sha512 = "+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="; 761 + }; 762 + }; 763 + "normalize-path-3.0.0" = { 764 + name = "normalize-path"; 765 + packageName = "normalize-path"; 766 + version = "3.0.0"; 767 + src = fetchurl { 768 + url = "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"; 769 + sha512 = "6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="; 770 + }; 771 + }; 772 + "on-finished-2.3.0" = { 773 + name = "on-finished"; 774 + packageName = "on-finished"; 775 + version = "2.3.0"; 776 + src = fetchurl { 777 + url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz"; 778 + sha1 = "20f1336481b083cd75337992a16971aa2d906947"; 779 + }; 780 + }; 781 + "once-1.4.0" = { 782 + name = "once"; 783 + packageName = "once"; 784 + version = "1.4.0"; 785 + src = fetchurl { 786 + url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz"; 787 + sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1"; 788 + }; 789 + }; 790 + "p-limit-3.1.0" = { 791 + name = "p-limit"; 792 + packageName = "p-limit"; 793 + version = "3.1.0"; 794 + src = fetchurl { 795 + url = "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"; 796 + sha512 = "TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="; 797 + }; 798 + }; 799 + "p-locate-5.0.0" = { 800 + name = "p-locate"; 801 + packageName = "p-locate"; 802 + version = "5.0.0"; 803 + src = fetchurl { 804 + url = "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"; 805 + sha512 = "LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="; 806 + }; 807 + }; 808 + "packet-reader-1.0.0" = { 809 + name = "packet-reader"; 810 + packageName = "packet-reader"; 811 + version = "1.0.0"; 812 + src = fetchurl { 813 + url = "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz"; 814 + sha512 = "HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ=="; 815 + }; 816 + }; 817 + "parseurl-1.3.3" = { 818 + name = "parseurl"; 819 + packageName = "parseurl"; 820 + version = "1.3.3"; 821 + src = fetchurl { 822 + url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"; 823 + sha512 = "CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="; 824 + }; 825 + }; 826 + "path-exists-4.0.0" = { 827 + name = "path-exists"; 828 + packageName = "path-exists"; 829 + version = "4.0.0"; 830 + src = fetchurl { 831 + url = "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"; 832 + sha512 = "ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="; 833 + }; 834 + }; 835 + "path-is-absolute-1.0.1" = { 836 + name = "path-is-absolute"; 837 + packageName = "path-is-absolute"; 838 + version = "1.0.1"; 839 + src = fetchurl { 840 + url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"; 841 + sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"; 842 + }; 843 + }; 844 + "pg-8.7.3" = { 845 + name = "pg"; 846 + packageName = "pg"; 847 + version = "8.7.3"; 848 + src = fetchurl { 849 + url = "https://registry.npmjs.org/pg/-/pg-8.7.3.tgz"; 850 + sha512 = "HPmH4GH4H3AOprDJOazoIcpI49XFsHCe8xlrjHkWiapdbHK+HLtbm/GQzXYAZwmPju/kzKhjaSfMACG+8cgJcw=="; 851 + }; 852 + }; 853 + "pg-connection-string-2.5.0" = { 854 + name = "pg-connection-string"; 855 + packageName = "pg-connection-string"; 856 + version = "2.5.0"; 857 + src = fetchurl { 858 + url = "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz"; 859 + sha512 = "r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="; 860 + }; 861 + }; 862 + "pg-int8-1.0.1" = { 863 + name = "pg-int8"; 864 + packageName = "pg-int8"; 865 + version = "1.0.1"; 866 + src = fetchurl { 867 + url = "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz"; 868 + sha512 = "WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="; 869 + }; 870 + }; 871 + "pg-pool-3.5.1" = { 872 + name = "pg-pool"; 873 + packageName = "pg-pool"; 874 + version = "3.5.1"; 875 + src = fetchurl { 876 + url = "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.1.tgz"; 877 + sha512 = "6iCR0wVrro6OOHFsyavV+i6KYL4lVNyYAB9RD18w66xSzN+d8b66HiwuP30Gp1SH5O9T82fckkzsRjlrhD0ioQ=="; 878 + }; 879 + }; 880 + "pg-protocol-1.5.0" = { 881 + name = "pg-protocol"; 882 + packageName = "pg-protocol"; 883 + version = "1.5.0"; 884 + src = fetchurl { 885 + url = "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz"; 886 + sha512 = "muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ=="; 887 + }; 888 + }; 889 + "pg-types-2.2.0" = { 890 + name = "pg-types"; 891 + packageName = "pg-types"; 892 + version = "2.2.0"; 893 + src = fetchurl { 894 + url = "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz"; 895 + sha512 = "qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA=="; 896 + }; 897 + }; 898 + "pgpass-1.0.5" = { 899 + name = "pgpass"; 900 + packageName = "pgpass"; 901 + version = "1.0.5"; 902 + src = fetchurl { 903 + url = "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz"; 904 + sha512 = "FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug=="; 905 + }; 906 + }; 907 + "picomatch-2.3.1" = { 908 + name = "picomatch"; 909 + packageName = "picomatch"; 910 + version = "2.3.1"; 911 + src = fetchurl { 912 + url = "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"; 913 + sha512 = "JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="; 914 + }; 915 + }; 916 + "postgres-array-2.0.0" = { 917 + name = "postgres-array"; 918 + packageName = "postgres-array"; 919 + version = "2.0.0"; 920 + src = fetchurl { 921 + url = "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz"; 922 + sha512 = "VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="; 923 + }; 924 + }; 925 + "postgres-bytea-1.0.0" = { 926 + name = "postgres-bytea"; 927 + packageName = "postgres-bytea"; 928 + version = "1.0.0"; 929 + src = fetchurl { 930 + url = "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz"; 931 + sha1 = "027b533c0aa890e26d172d47cf9ccecc521acd35"; 932 + }; 933 + }; 934 + "postgres-date-1.0.7" = { 935 + name = "postgres-date"; 936 + packageName = "postgres-date"; 937 + version = "1.0.7"; 938 + src = fetchurl { 939 + url = "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz"; 940 + sha512 = "suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q=="; 941 + }; 942 + }; 943 + "postgres-interval-1.2.0" = { 944 + name = "postgres-interval"; 945 + packageName = "postgres-interval"; 946 + version = "1.2.0"; 947 + src = fetchurl { 948 + url = "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz"; 949 + sha512 = "9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ=="; 950 + }; 951 + }; 952 + "pseudomap-1.0.2" = { 953 + name = "pseudomap"; 954 + packageName = "pseudomap"; 955 + version = "1.0.2"; 956 + src = fetchurl { 957 + url = "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz"; 958 + sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3"; 959 + }; 960 + }; 961 + "randombytes-2.1.0" = { 962 + name = "randombytes"; 963 + packageName = "randombytes"; 964 + version = "2.1.0"; 965 + src = fetchurl { 966 + url = "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz"; 967 + sha512 = "vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="; 968 + }; 969 + }; 970 + "readable-stream-1.1.14" = { 971 + name = "readable-stream"; 972 + packageName = "readable-stream"; 973 + version = "1.1.14"; 974 + src = fetchurl { 975 + url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz"; 976 + sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9"; 977 + }; 978 + }; 979 + "readable-stream-3.6.0" = { 980 + name = "readable-stream"; 981 + packageName = "readable-stream"; 982 + version = "3.6.0"; 983 + src = fetchurl { 984 + url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"; 985 + sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA=="; 986 + }; 987 + }; 988 + "readdirp-3.5.0" = { 989 + name = "readdirp"; 990 + packageName = "readdirp"; 991 + version = "3.5.0"; 992 + src = fetchurl { 993 + url = "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz"; 994 + sha512 = "cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ=="; 995 + }; 996 + }; 997 + "redis-0.8.1" = { 998 + name = "redis"; 999 + packageName = "redis"; 1000 + version = "0.8.1"; 1001 + src = fetchurl { 1002 + url = "https://registry.npmjs.org/redis/-/redis-0.8.1.tgz"; 1003 + sha1 = "159f2130599a2f719e44b03f0b4b7612f992fcb2"; 1004 + }; 1005 + }; 1006 + "redis-url-0.1.0" = { 1007 + name = "redis-url"; 1008 + packageName = "redis-url"; 1009 + version = "0.1.0"; 1010 + src = fetchurl { 1011 + url = "https://registry.npmjs.org/redis-url/-/redis-url-0.1.0.tgz"; 1012 + sha1 = "4da5e5b181b6c0cad6e1a55c7f50a8e6ee7779bb"; 1013 + }; 1014 + }; 1015 + "require-directory-2.1.1" = { 1016 + name = "require-directory"; 1017 + packageName = "require-directory"; 1018 + version = "2.1.1"; 1019 + src = fetchurl { 1020 + url = "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"; 1021 + sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"; 1022 + }; 1023 + }; 1024 + "safe-buffer-5.2.1" = { 1025 + name = "safe-buffer"; 1026 + packageName = "safe-buffer"; 1027 + version = "5.2.1"; 1028 + src = fetchurl { 1029 + url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"; 1030 + sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="; 1031 + }; 1032 + }; 1033 + "serialize-javascript-5.0.1" = { 1034 + name = "serialize-javascript"; 1035 + packageName = "serialize-javascript"; 1036 + version = "5.0.1"; 1037 + src = fetchurl { 1038 + url = "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz"; 1039 + sha512 = "SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA=="; 1040 + }; 1041 + }; 1042 + "source-map-0.6.1" = { 1043 + name = "source-map"; 1044 + packageName = "source-map"; 1045 + version = "0.6.1"; 1046 + src = fetchurl { 1047 + url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"; 1048 + sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="; 1049 + }; 1050 + }; 1051 + "split2-4.1.0" = { 1052 + name = "split2"; 1053 + packageName = "split2"; 1054 + version = "4.1.0"; 1055 + src = fetchurl { 1056 + url = "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz"; 1057 + sha512 = "VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ=="; 1058 + }; 1059 + }; 1060 + "st-2.0.0" = { 1061 + name = "st"; 1062 + packageName = "st"; 1063 + version = "2.0.0"; 1064 + src = fetchurl { 1065 + url = "https://registry.npmjs.org/st/-/st-2.0.0.tgz"; 1066 + sha512 = "drN+aGYnrZPNYIymmNwIY7LXYJ8MqsqXj4fMRue3FOgGMdGjSX10fhJ3qx0sVQPhcWxhEaN4U/eWM4O4dbYNAw=="; 1067 + }; 1068 + }; 1069 + "stack-trace-0.0.10" = { 1070 + name = "stack-trace"; 1071 + packageName = "stack-trace"; 1072 + version = "0.0.10"; 1073 + src = fetchurl { 1074 + url = "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz"; 1075 + sha1 = "547c70b347e8d32b4e108ea1a2a159e5fdde19c0"; 1076 + }; 1077 + }; 1078 + "statuses-1.5.0" = { 1079 + name = "statuses"; 1080 + packageName = "statuses"; 1081 + version = "1.5.0"; 1082 + src = fetchurl { 1083 + url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"; 1084 + sha1 = "161c7dac177659fd9811f43771fa99381478628c"; 1085 + }; 1086 + }; 1087 + "streamsearch-0.1.2" = { 1088 + name = "streamsearch"; 1089 + packageName = "streamsearch"; 1090 + version = "0.1.2"; 1091 + src = fetchurl { 1092 + url = "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz"; 1093 + sha1 = "808b9d0e56fc273d809ba57338e929919a1a9f1a"; 1094 + }; 1095 + }; 1096 + "string-width-2.1.1" = { 1097 + name = "string-width"; 1098 + packageName = "string-width"; 1099 + version = "2.1.1"; 1100 + src = fetchurl { 1101 + url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz"; 1102 + sha512 = "nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw=="; 1103 + }; 1104 + }; 1105 + "string-width-4.2.3" = { 1106 + name = "string-width"; 1107 + packageName = "string-width"; 1108 + version = "4.2.3"; 1109 + src = fetchurl { 1110 + url = "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"; 1111 + sha512 = "wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="; 1112 + }; 1113 + }; 1114 + "string_decoder-0.10.31" = { 1115 + name = "string_decoder"; 1116 + packageName = "string_decoder"; 1117 + version = "0.10.31"; 1118 + src = fetchurl { 1119 + url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"; 1120 + sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94"; 1121 + }; 1122 + }; 1123 + "string_decoder-1.3.0" = { 1124 + name = "string_decoder"; 1125 + packageName = "string_decoder"; 1126 + version = "1.3.0"; 1127 + src = fetchurl { 1128 + url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"; 1129 + sha512 = "hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="; 1130 + }; 1131 + }; 1132 + "strip-ansi-4.0.0" = { 1133 + name = "strip-ansi"; 1134 + packageName = "strip-ansi"; 1135 + version = "4.0.0"; 1136 + src = fetchurl { 1137 + url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz"; 1138 + sha1 = "a8479022eb1ac368a871389b635262c505ee368f"; 1139 + }; 1140 + }; 1141 + "strip-ansi-6.0.1" = { 1142 + name = "strip-ansi"; 1143 + packageName = "strip-ansi"; 1144 + version = "6.0.1"; 1145 + src = fetchurl { 1146 + url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"; 1147 + sha512 = "Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="; 1148 + }; 1149 + }; 1150 + "strip-json-comments-3.1.1" = { 1151 + name = "strip-json-comments"; 1152 + packageName = "strip-json-comments"; 1153 + version = "3.1.1"; 1154 + src = fetchurl { 1155 + url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"; 1156 + sha512 = "6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="; 1157 + }; 1158 + }; 1159 + "supports-color-7.2.0" = { 1160 + name = "supports-color"; 1161 + packageName = "supports-color"; 1162 + version = "7.2.0"; 1163 + src = fetchurl { 1164 + url = "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"; 1165 + sha512 = "qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="; 1166 + }; 1167 + }; 1168 + "supports-color-8.1.1" = { 1169 + name = "supports-color"; 1170 + packageName = "supports-color"; 1171 + version = "8.1.1"; 1172 + src = fetchurl { 1173 + url = "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz"; 1174 + sha512 = "MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="; 1175 + }; 1176 + }; 1177 + "to-regex-range-5.0.1" = { 1178 + name = "to-regex-range"; 1179 + packageName = "to-regex-range"; 1180 + version = "5.0.1"; 1181 + src = fetchurl { 1182 + url = "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"; 1183 + sha512 = "65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="; 1184 + }; 1185 + }; 1186 + "uglify-js-3.1.6" = { 1187 + name = "uglify-js"; 1188 + packageName = "uglify-js"; 1189 + version = "3.1.6"; 1190 + src = fetchurl { 1191 + url = "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.6.tgz"; 1192 + sha512 = "/rseyxEKEVMBo8279lqpoJgD6C/i/CIi+9TJDvWmb+Xo6mqMKwjA8Io3IMHlcXQzj99feR6zrN8m3wqqvm/nYA=="; 1193 + }; 1194 + }; 1195 + "unpipe-1.0.0" = { 1196 + name = "unpipe"; 1197 + packageName = "unpipe"; 1198 + version = "1.0.0"; 1199 + src = fetchurl { 1200 + url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"; 1201 + sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec"; 1202 + }; 1203 + }; 1204 + "util-deprecate-1.0.2" = { 1205 + name = "util-deprecate"; 1206 + packageName = "util-deprecate"; 1207 + version = "1.0.2"; 1208 + src = fetchurl { 1209 + url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"; 1210 + sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf"; 1211 + }; 1212 + }; 1213 + "utils-merge-1.0.1" = { 1214 + name = "utils-merge"; 1215 + packageName = "utils-merge"; 1216 + version = "1.0.1"; 1217 + src = fetchurl { 1218 + url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"; 1219 + sha1 = "9f95710f50a267947b2ccc124741c1028427e713"; 1220 + }; 1221 + }; 1222 + "which-2.0.2" = { 1223 + name = "which"; 1224 + packageName = "which"; 1225 + version = "2.0.2"; 1226 + src = fetchurl { 1227 + url = "https://registry.npmjs.org/which/-/which-2.0.2.tgz"; 1228 + sha512 = "BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="; 1229 + }; 1230 + }; 1231 + "wide-align-1.1.3" = { 1232 + name = "wide-align"; 1233 + packageName = "wide-align"; 1234 + version = "1.1.3"; 1235 + src = fetchurl { 1236 + url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz"; 1237 + sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA=="; 1238 + }; 1239 + }; 1240 + "winston-2.4.5" = { 1241 + name = "winston"; 1242 + packageName = "winston"; 1243 + version = "2.4.5"; 1244 + src = fetchurl { 1245 + url = "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz"; 1246 + sha512 = "TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A=="; 1247 + }; 1248 + }; 1249 + "workerpool-6.1.0" = { 1250 + name = "workerpool"; 1251 + packageName = "workerpool"; 1252 + version = "6.1.0"; 1253 + src = fetchurl { 1254 + url = "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz"; 1255 + sha512 = "toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg=="; 1256 + }; 1257 + }; 1258 + "wrap-ansi-7.0.0" = { 1259 + name = "wrap-ansi"; 1260 + packageName = "wrap-ansi"; 1261 + version = "7.0.0"; 1262 + src = fetchurl { 1263 + url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"; 1264 + sha512 = "YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="; 1265 + }; 1266 + }; 1267 + "wrappy-1.0.2" = { 1268 + name = "wrappy"; 1269 + packageName = "wrappy"; 1270 + version = "1.0.2"; 1271 + src = fetchurl { 1272 + url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"; 1273 + sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"; 1274 + }; 1275 + }; 1276 + "xtend-4.0.2" = { 1277 + name = "xtend"; 1278 + packageName = "xtend"; 1279 + version = "4.0.2"; 1280 + src = fetchurl { 1281 + url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"; 1282 + sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="; 1283 + }; 1284 + }; 1285 + "y18n-5.0.8" = { 1286 + name = "y18n"; 1287 + packageName = "y18n"; 1288 + version = "5.0.8"; 1289 + src = fetchurl { 1290 + url = "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz"; 1291 + sha512 = "0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="; 1292 + }; 1293 + }; 1294 + "yallist-2.1.2" = { 1295 + name = "yallist"; 1296 + packageName = "yallist"; 1297 + version = "2.1.2"; 1298 + src = fetchurl { 1299 + url = "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz"; 1300 + sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52"; 1301 + }; 1302 + }; 1303 + "yargs-16.2.0" = { 1304 + name = "yargs"; 1305 + packageName = "yargs"; 1306 + version = "16.2.0"; 1307 + src = fetchurl { 1308 + url = "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz"; 1309 + sha512 = "D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="; 1310 + }; 1311 + }; 1312 + "yargs-parser-20.2.4" = { 1313 + name = "yargs-parser"; 1314 + packageName = "yargs-parser"; 1315 + version = "20.2.4"; 1316 + src = fetchurl { 1317 + url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz"; 1318 + sha512 = "WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA=="; 1319 + }; 1320 + }; 1321 + "yargs-unparser-2.0.0" = { 1322 + name = "yargs-unparser"; 1323 + packageName = "yargs-unparser"; 1324 + version = "2.0.0"; 1325 + src = fetchurl { 1326 + url = "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz"; 1327 + sha512 = "7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA=="; 1328 + }; 1329 + }; 1330 + "yocto-queue-0.1.0" = { 1331 + name = "yocto-queue"; 1332 + packageName = "yocto-queue"; 1333 + version = "0.1.0"; 1334 + src = fetchurl { 1335 + url = "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"; 1336 + sha512 = "rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="; 1337 + }; 1338 + }; 1339 + }; 1340 + args = { 1341 + name = "haste"; 1342 + packageName = "haste"; 1343 + version = "0.1.0"; 1344 + src = ../../../../../../../../nix/store/5pfi6mmmdlqm2ixww08p7mlqj9a2dwbz-source; 1345 + dependencies = [ 1346 + sources."@ungap/promise-all-settled-1.1.2" 1347 + sources."ansi-colors-4.1.1" 1348 + sources."ansi-regex-3.0.0" 1349 + sources."ansi-styles-4.3.0" 1350 + sources."anymatch-3.1.2" 1351 + sources."argparse-2.0.1" 1352 + sources."async-1.0.0" 1353 + sources."async-cache-1.1.0" 1354 + sources."balanced-match-1.0.2" 1355 + sources."base64-js-1.5.1" 1356 + sources."binary-extensions-2.2.0" 1357 + (sources."bl-4.1.0" // { 1358 + dependencies = [ 1359 + sources."readable-stream-3.6.0" 1360 + sources."string_decoder-1.3.0" 1361 + ]; 1362 + }) 1363 + sources."brace-expansion-1.1.11" 1364 + sources."braces-3.0.2" 1365 + sources."browser-stdout-1.3.1" 1366 + sources."buffer-5.7.1" 1367 + sources."buffer-writer-2.0.0" 1368 + sources."busboy-0.2.4" 1369 + sources."camelcase-6.3.0" 1370 + (sources."chalk-4.1.2" // { 1371 + dependencies = [ 1372 + sources."supports-color-7.2.0" 1373 + ]; 1374 + }) 1375 + sources."chokidar-3.5.1" 1376 + (sources."cliui-7.0.4" // { 1377 + dependencies = [ 1378 + sources."ansi-regex-5.0.1" 1379 + sources."is-fullwidth-code-point-3.0.0" 1380 + sources."string-width-4.2.3" 1381 + sources."strip-ansi-6.0.1" 1382 + ]; 1383 + }) 1384 + sources."color-convert-2.0.1" 1385 + sources."color-name-1.1.4" 1386 + sources."colors-1.0.3" 1387 + sources."commander-2.11.0" 1388 + sources."concat-map-0.0.1" 1389 + sources."connect-3.7.0" 1390 + sources."connect-ratelimit-0.0.7" 1391 + sources."connect-route-0.1.5" 1392 + sources."core-util-is-1.0.3" 1393 + sources."cycle-1.0.3" 1394 + sources."debug-2.6.9" 1395 + sources."decamelize-4.0.0" 1396 + sources."dicer-0.2.3" 1397 + sources."diff-5.0.0" 1398 + sources."ee-first-1.1.1" 1399 + sources."emoji-regex-8.0.0" 1400 + sources."encodeurl-1.0.2" 1401 + sources."escalade-3.1.1" 1402 + sources."escape-html-1.0.3" 1403 + sources."escape-string-regexp-4.0.0" 1404 + sources."eyes-0.1.8" 1405 + sources."fd-0.0.3" 1406 + sources."fill-range-7.0.1" 1407 + sources."finalhandler-1.1.2" 1408 + sources."find-up-5.0.0" 1409 + sources."flat-5.0.2" 1410 + sources."fs.realpath-1.0.0" 1411 + sources."fsevents-2.3.2" 1412 + sources."get-caller-file-2.0.5" 1413 + sources."glob-7.1.6" 1414 + sources."glob-parent-5.1.2" 1415 + sources."graceful-fs-4.2.9" 1416 + sources."growl-1.10.5" 1417 + sources."has-flag-4.0.0" 1418 + sources."he-1.2.0" 1419 + sources."ieee754-1.2.1" 1420 + sources."inflight-1.0.6" 1421 + sources."inherits-2.0.4" 1422 + sources."is-binary-path-2.1.0" 1423 + sources."is-extglob-2.1.1" 1424 + sources."is-fullwidth-code-point-2.0.0" 1425 + sources."is-glob-4.0.3" 1426 + sources."is-number-7.0.0" 1427 + sources."is-plain-obj-2.1.0" 1428 + sources."isarray-0.0.1" 1429 + sources."isexe-2.0.0" 1430 + sources."isstream-0.1.2" 1431 + sources."js-yaml-4.0.0" 1432 + sources."locate-path-6.0.0" 1433 + sources."log-symbols-4.0.0" 1434 + sources."lru-cache-4.1.5" 1435 + sources."mime-2.6.0" 1436 + sources."minimatch-3.0.4" 1437 + (sources."mocha-8.4.0" // { 1438 + dependencies = [ 1439 + (sources."debug-4.3.1" // { 1440 + dependencies = [ 1441 + sources."ms-2.1.2" 1442 + ]; 1443 + }) 1444 + sources."ms-2.1.3" 1445 + ]; 1446 + }) 1447 + sources."ms-2.0.0" 1448 + sources."nanoid-3.1.20" 1449 + sources."negotiator-0.6.3" 1450 + sources."normalize-path-3.0.0" 1451 + sources."on-finished-2.3.0" 1452 + sources."once-1.4.0" 1453 + sources."p-limit-3.1.0" 1454 + sources."p-locate-5.0.0" 1455 + sources."packet-reader-1.0.0" 1456 + sources."parseurl-1.3.3" 1457 + sources."path-exists-4.0.0" 1458 + sources."path-is-absolute-1.0.1" 1459 + sources."pg-8.7.3" 1460 + sources."pg-connection-string-2.5.0" 1461 + sources."pg-int8-1.0.1" 1462 + sources."pg-pool-3.5.1" 1463 + sources."pg-protocol-1.5.0" 1464 + sources."pg-types-2.2.0" 1465 + sources."pgpass-1.0.5" 1466 + sources."picomatch-2.3.1" 1467 + sources."postgres-array-2.0.0" 1468 + sources."postgres-bytea-1.0.0" 1469 + sources."postgres-date-1.0.7" 1470 + sources."postgres-interval-1.2.0" 1471 + sources."pseudomap-1.0.2" 1472 + sources."randombytes-2.1.0" 1473 + sources."readable-stream-1.1.14" 1474 + sources."readdirp-3.5.0" 1475 + sources."redis-0.8.1" 1476 + sources."redis-url-0.1.0" 1477 + sources."require-directory-2.1.1" 1478 + sources."safe-buffer-5.2.1" 1479 + sources."serialize-javascript-5.0.1" 1480 + sources."source-map-0.6.1" 1481 + sources."split2-4.1.0" 1482 + sources."st-2.0.0" 1483 + sources."stack-trace-0.0.10" 1484 + sources."statuses-1.5.0" 1485 + sources."streamsearch-0.1.2" 1486 + sources."string-width-2.1.1" 1487 + sources."string_decoder-0.10.31" 1488 + sources."strip-ansi-4.0.0" 1489 + sources."strip-json-comments-3.1.1" 1490 + sources."supports-color-8.1.1" 1491 + sources."to-regex-range-5.0.1" 1492 + sources."uglify-js-3.1.6" 1493 + sources."unpipe-1.0.0" 1494 + sources."util-deprecate-1.0.2" 1495 + sources."utils-merge-1.0.1" 1496 + sources."which-2.0.2" 1497 + sources."wide-align-1.1.3" 1498 + sources."winston-2.4.5" 1499 + sources."workerpool-6.1.0" 1500 + (sources."wrap-ansi-7.0.0" // { 1501 + dependencies = [ 1502 + sources."ansi-regex-5.0.1" 1503 + sources."is-fullwidth-code-point-3.0.0" 1504 + sources."string-width-4.2.3" 1505 + sources."strip-ansi-6.0.1" 1506 + ]; 1507 + }) 1508 + sources."wrappy-1.0.2" 1509 + sources."xtend-4.0.2" 1510 + sources."y18n-5.0.8" 1511 + sources."yallist-2.1.2" 1512 + (sources."yargs-16.2.0" // { 1513 + dependencies = [ 1514 + sources."ansi-regex-5.0.1" 1515 + sources."is-fullwidth-code-point-3.0.0" 1516 + sources."string-width-4.2.3" 1517 + sources."strip-ansi-6.0.1" 1518 + ]; 1519 + }) 1520 + sources."yargs-parser-20.2.4" 1521 + sources."yargs-unparser-2.0.0" 1522 + sources."yocto-queue-0.1.0" 1523 + ]; 1524 + buildInputs = globalBuildInputs; 1525 + meta = { 1526 + description = "Private Pastebin Server"; 1527 + }; 1528 + production = false; 1529 + bypassCache = true; 1530 + reconstructLock = true; 1531 + }; 1532 + in 1533 + { 1534 + args = args; 1535 + sources = sources; 1536 + tarball = nodeEnv.buildNodeSourceDist args; 1537 + package = nodeEnv.buildNodePackage args; 1538 + shell = nodeEnv.buildNodeShell args; 1539 + nodeDependencies = nodeEnv.buildNodeDependencies (lib.overrideExisting args { 1540 + src = stdenv.mkDerivation { 1541 + name = args.name + "-package-json"; 1542 + src = nix-gitignore.gitignoreSourcePure [ 1543 + "*" 1544 + "!package.json" 1545 + "!package-lock.json" 1546 + ] args.src; 1547 + dontBuild = true; 1548 + installPhase = "mkdir -p $out; cp -r ./* $out;"; 1549 + }; 1550 + }); 1551 + }
+588
pkgs/servers/haste-server/node-env.nix
··· 1 + # This file originates from node2nix 2 + 3 + {lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile, writeShellScript}: 4 + 5 + let 6 + # Workaround to cope with utillinux in Nixpkgs 20.09 and util-linux in Nixpkgs master 7 + utillinux = if pkgs ? utillinux then pkgs.utillinux else pkgs.util-linux; 8 + 9 + python = if nodejs ? python then nodejs.python else python2; 10 + 11 + # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise 12 + tarWrapper = runCommand "tarWrapper" {} '' 13 + mkdir -p $out/bin 14 + 15 + cat > $out/bin/tar <<EOF 16 + #! ${stdenv.shell} -e 17 + $(type -p tar) "\$@" --warning=no-unknown-keyword --delay-directory-restore 18 + EOF 19 + 20 + chmod +x $out/bin/tar 21 + ''; 22 + 23 + # Function that generates a TGZ file from a NPM project 24 + buildNodeSourceDist = 25 + { name, version, src, ... }: 26 + 27 + stdenv.mkDerivation { 28 + name = "node-tarball-${name}-${version}"; 29 + inherit src; 30 + buildInputs = [ nodejs ]; 31 + buildPhase = '' 32 + export HOME=$TMPDIR 33 + tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts) 34 + ''; 35 + installPhase = '' 36 + mkdir -p $out/tarballs 37 + mv $tgzFile $out/tarballs 38 + mkdir -p $out/nix-support 39 + echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products 40 + ''; 41 + }; 42 + 43 + # Common shell logic 44 + installPackage = writeShellScript "install-package" '' 45 + installPackage() { 46 + local packageName=$1 src=$2 47 + 48 + local strippedName 49 + 50 + local DIR=$PWD 51 + cd $TMPDIR 52 + 53 + unpackFile $src 54 + 55 + # Make the base dir in which the target dependency resides first 56 + mkdir -p "$(dirname "$DIR/$packageName")" 57 + 58 + if [ -f "$src" ] 59 + then 60 + # Figure out what directory has been unpacked 61 + packageDir="$(find . -maxdepth 1 -type d | tail -1)" 62 + 63 + # Restore write permissions to make building work 64 + find "$packageDir" -type d -exec chmod u+x {} \; 65 + chmod -R u+w "$packageDir" 66 + 67 + # Move the extracted tarball into the output folder 68 + mv "$packageDir" "$DIR/$packageName" 69 + elif [ -d "$src" ] 70 + then 71 + # Get a stripped name (without hash) of the source directory. 72 + # On old nixpkgs it's already set internally. 73 + if [ -z "$strippedName" ] 74 + then 75 + strippedName="$(stripHash $src)" 76 + fi 77 + 78 + # Restore write permissions to make building work 79 + chmod -R u+w "$strippedName" 80 + 81 + # Move the extracted directory into the output folder 82 + mv "$strippedName" "$DIR/$packageName" 83 + fi 84 + 85 + # Change to the package directory to install dependencies 86 + cd "$DIR/$packageName" 87 + } 88 + ''; 89 + 90 + # Bundle the dependencies of the package 91 + # 92 + # Only include dependencies if they don't exist. They may also be bundled in the package. 93 + includeDependencies = {dependencies}: 94 + lib.optionalString (dependencies != []) ( 95 + '' 96 + mkdir -p node_modules 97 + cd node_modules 98 + '' 99 + + (lib.concatMapStrings (dependency: 100 + '' 101 + if [ ! -e "${dependency.name}" ]; then 102 + ${composePackage dependency} 103 + fi 104 + '' 105 + ) dependencies) 106 + + '' 107 + cd .. 108 + '' 109 + ); 110 + 111 + # Recursively composes the dependencies of a package 112 + composePackage = { name, packageName, src, dependencies ? [], ... }@args: 113 + builtins.addErrorContext "while evaluating node package '${packageName}'" '' 114 + installPackage "${packageName}" "${src}" 115 + ${includeDependencies { inherit dependencies; }} 116 + cd .. 117 + ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} 118 + ''; 119 + 120 + pinpointDependencies = {dependencies, production}: 121 + let 122 + pinpointDependenciesFromPackageJSON = writeTextFile { 123 + name = "pinpointDependencies.js"; 124 + text = '' 125 + var fs = require('fs'); 126 + var path = require('path'); 127 + 128 + function resolveDependencyVersion(location, name) { 129 + if(location == process.env['NIX_STORE']) { 130 + return null; 131 + } else { 132 + var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json"); 133 + 134 + if(fs.existsSync(dependencyPackageJSON)) { 135 + var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON)); 136 + 137 + if(dependencyPackageObj.name == name) { 138 + return dependencyPackageObj.version; 139 + } 140 + } else { 141 + return resolveDependencyVersion(path.resolve(location, ".."), name); 142 + } 143 + } 144 + } 145 + 146 + function replaceDependencies(dependencies) { 147 + if(typeof dependencies == "object" && dependencies !== null) { 148 + for(var dependency in dependencies) { 149 + var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency); 150 + 151 + if(resolvedVersion === null) { 152 + process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n"); 153 + } else { 154 + dependencies[dependency] = resolvedVersion; 155 + } 156 + } 157 + } 158 + } 159 + 160 + /* Read the package.json configuration */ 161 + var packageObj = JSON.parse(fs.readFileSync('./package.json')); 162 + 163 + /* Pinpoint all dependencies */ 164 + replaceDependencies(packageObj.dependencies); 165 + if(process.argv[2] == "development") { 166 + replaceDependencies(packageObj.devDependencies); 167 + } 168 + replaceDependencies(packageObj.optionalDependencies); 169 + 170 + /* Write the fixed package.json file */ 171 + fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2)); 172 + ''; 173 + }; 174 + in 175 + '' 176 + node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"} 177 + 178 + ${lib.optionalString (dependencies != []) 179 + '' 180 + if [ -d node_modules ] 181 + then 182 + cd node_modules 183 + ${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies} 184 + cd .. 185 + fi 186 + ''} 187 + ''; 188 + 189 + # Recursively traverses all dependencies of a package and pinpoints all 190 + # dependencies in the package.json file to the versions that are actually 191 + # being used. 192 + 193 + pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args: 194 + '' 195 + if [ -d "${packageName}" ] 196 + then 197 + cd "${packageName}" 198 + ${pinpointDependencies { inherit dependencies production; }} 199 + cd .. 200 + ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} 201 + fi 202 + ''; 203 + 204 + # Extract the Node.js source code which is used to compile packages with 205 + # native bindings 206 + nodeSources = runCommand "node-sources" {} '' 207 + tar --no-same-owner --no-same-permissions -xf ${nodejs.src} 208 + mv node-* $out 209 + ''; 210 + 211 + # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty) 212 + addIntegrityFieldsScript = writeTextFile { 213 + name = "addintegrityfields.js"; 214 + text = '' 215 + var fs = require('fs'); 216 + var path = require('path'); 217 + 218 + function augmentDependencies(baseDir, dependencies) { 219 + for(var dependencyName in dependencies) { 220 + var dependency = dependencies[dependencyName]; 221 + 222 + // Open package.json and augment metadata fields 223 + var packageJSONDir = path.join(baseDir, "node_modules", dependencyName); 224 + var packageJSONPath = path.join(packageJSONDir, "package.json"); 225 + 226 + if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored 227 + console.log("Adding metadata fields to: "+packageJSONPath); 228 + var packageObj = JSON.parse(fs.readFileSync(packageJSONPath)); 229 + 230 + if(dependency.integrity) { 231 + packageObj["_integrity"] = dependency.integrity; 232 + } else { 233 + 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. 234 + } 235 + 236 + if(dependency.resolved) { 237 + packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided 238 + } else { 239 + packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories. 240 + } 241 + 242 + if(dependency.from !== undefined) { // Adopt from property if one has been provided 243 + packageObj["_from"] = dependency.from; 244 + } 245 + 246 + fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2)); 247 + } 248 + 249 + // Augment transitive dependencies 250 + if(dependency.dependencies !== undefined) { 251 + augmentDependencies(packageJSONDir, dependency.dependencies); 252 + } 253 + } 254 + } 255 + 256 + if(fs.existsSync("./package-lock.json")) { 257 + var packageLock = JSON.parse(fs.readFileSync("./package-lock.json")); 258 + 259 + if(![1, 2].includes(packageLock.lockfileVersion)) { 260 + process.stderr.write("Sorry, I only understand lock file versions 1 and 2!\n"); 261 + process.exit(1); 262 + } 263 + 264 + if(packageLock.dependencies !== undefined) { 265 + augmentDependencies(".", packageLock.dependencies); 266 + } 267 + } 268 + ''; 269 + }; 270 + 271 + # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes 272 + reconstructPackageLock = writeTextFile { 273 + name = "addintegrityfields.js"; 274 + text = '' 275 + var fs = require('fs'); 276 + var path = require('path'); 277 + 278 + var packageObj = JSON.parse(fs.readFileSync("package.json")); 279 + 280 + var lockObj = { 281 + name: packageObj.name, 282 + version: packageObj.version, 283 + lockfileVersion: 1, 284 + requires: true, 285 + dependencies: {} 286 + }; 287 + 288 + function augmentPackageJSON(filePath, dependencies) { 289 + var packageJSON = path.join(filePath, "package.json"); 290 + if(fs.existsSync(packageJSON)) { 291 + var packageObj = JSON.parse(fs.readFileSync(packageJSON)); 292 + dependencies[packageObj.name] = { 293 + version: packageObj.version, 294 + integrity: "sha1-000000000000000000000000000=", 295 + dependencies: {} 296 + }; 297 + processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies); 298 + } 299 + } 300 + 301 + function processDependencies(dir, dependencies) { 302 + if(fs.existsSync(dir)) { 303 + var files = fs.readdirSync(dir); 304 + 305 + files.forEach(function(entry) { 306 + var filePath = path.join(dir, entry); 307 + var stats = fs.statSync(filePath); 308 + 309 + if(stats.isDirectory()) { 310 + if(entry.substr(0, 1) == "@") { 311 + // When we encounter a namespace folder, augment all packages belonging to the scope 312 + var pkgFiles = fs.readdirSync(filePath); 313 + 314 + pkgFiles.forEach(function(entry) { 315 + if(stats.isDirectory()) { 316 + var pkgFilePath = path.join(filePath, entry); 317 + augmentPackageJSON(pkgFilePath, dependencies); 318 + } 319 + }); 320 + } else { 321 + augmentPackageJSON(filePath, dependencies); 322 + } 323 + } 324 + }); 325 + } 326 + } 327 + 328 + processDependencies("node_modules", lockObj.dependencies); 329 + 330 + fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2)); 331 + ''; 332 + }; 333 + 334 + prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}: 335 + let 336 + forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com"; 337 + in 338 + '' 339 + # Pinpoint the versions of all dependencies to the ones that are actually being used 340 + echo "pinpointing versions of dependencies..." 341 + source $pinpointDependenciesScriptPath 342 + 343 + # Patch the shebangs of the bundled modules to prevent them from 344 + # calling executables outside the Nix store as much as possible 345 + patchShebangs . 346 + 347 + # Deploy the Node.js package by running npm install. Since the 348 + # dependencies have been provided already by ourselves, it should not 349 + # attempt to install them again, which is good, because we want to make 350 + # it Nix's responsibility. If it needs to install any dependencies 351 + # anyway (e.g. because the dependency parameters are 352 + # incomplete/incorrect), it fails. 353 + # 354 + # The other responsibilities of NPM are kept -- version checks, build 355 + # steps, postprocessing etc. 356 + 357 + export HOME=$TMPDIR 358 + cd "${packageName}" 359 + runHook preRebuild 360 + 361 + ${lib.optionalString bypassCache '' 362 + ${lib.optionalString reconstructLock '' 363 + if [ -f package-lock.json ] 364 + then 365 + echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!" 366 + echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!" 367 + rm package-lock.json 368 + else 369 + echo "No package-lock.json file found, reconstructing..." 370 + fi 371 + 372 + node ${reconstructPackageLock} 373 + ''} 374 + 375 + node ${addIntegrityFieldsScript} 376 + ''} 377 + 378 + npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild 379 + 380 + if [ "''${dontNpmInstall-}" != "1" ] 381 + then 382 + # NPM tries to download packages even when they already exist if npm-shrinkwrap is used. 383 + rm -f npm-shrinkwrap.json 384 + 385 + npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install 386 + fi 387 + ''; 388 + 389 + # Builds and composes an NPM package including all its dependencies 390 + buildNodePackage = 391 + { name 392 + , packageName 393 + , version 394 + , dependencies ? [] 395 + , buildInputs ? [] 396 + , production ? true 397 + , npmFlags ? "" 398 + , dontNpmInstall ? false 399 + , bypassCache ? false 400 + , reconstructLock ? false 401 + , preRebuild ? "" 402 + , dontStrip ? true 403 + , unpackPhase ? "true" 404 + , buildPhase ? "true" 405 + , meta ? {} 406 + , ... }@args: 407 + 408 + let 409 + extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ]; 410 + in 411 + stdenv.mkDerivation ({ 412 + name = "${name}-${version}"; 413 + buildInputs = [ tarWrapper python nodejs ] 414 + ++ lib.optional (stdenv.isLinux) utillinux 415 + ++ lib.optional (stdenv.isDarwin) libtool 416 + ++ buildInputs; 417 + 418 + inherit nodejs; 419 + 420 + inherit dontStrip; # Stripping may fail a build for some package deployments 421 + inherit dontNpmInstall preRebuild unpackPhase buildPhase; 422 + 423 + compositionScript = composePackage args; 424 + pinpointDependenciesScript = pinpointDependenciesOfPackage args; 425 + 426 + passAsFile = [ "compositionScript" "pinpointDependenciesScript" ]; 427 + 428 + installPhase = '' 429 + source ${installPackage} 430 + 431 + # Create and enter a root node_modules/ folder 432 + mkdir -p $out/lib/node_modules 433 + cd $out/lib/node_modules 434 + 435 + # Compose the package and all its dependencies 436 + source $compositionScriptPath 437 + 438 + ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }} 439 + 440 + # Create symlink to the deployed executable folder, if applicable 441 + if [ -d "$out/lib/node_modules/.bin" ] 442 + then 443 + ln -s $out/lib/node_modules/.bin $out/bin 444 + fi 445 + 446 + # Create symlinks to the deployed manual page folders, if applicable 447 + if [ -d "$out/lib/node_modules/${packageName}/man" ] 448 + then 449 + mkdir -p $out/share 450 + for dir in "$out/lib/node_modules/${packageName}/man/"* 451 + do 452 + mkdir -p $out/share/man/$(basename "$dir") 453 + for page in "$dir"/* 454 + do 455 + ln -s $page $out/share/man/$(basename "$dir") 456 + done 457 + done 458 + fi 459 + 460 + # Run post install hook, if provided 461 + runHook postInstall 462 + ''; 463 + 464 + meta = { 465 + # default to Node.js' platforms 466 + platforms = nodejs.meta.platforms; 467 + } // meta; 468 + } // extraArgs); 469 + 470 + # Builds a node environment (a node_modules folder and a set of binaries) 471 + buildNodeDependencies = 472 + { name 473 + , packageName 474 + , version 475 + , src 476 + , dependencies ? [] 477 + , buildInputs ? [] 478 + , production ? true 479 + , npmFlags ? "" 480 + , dontNpmInstall ? false 481 + , bypassCache ? false 482 + , reconstructLock ? false 483 + , dontStrip ? true 484 + , unpackPhase ? "true" 485 + , buildPhase ? "true" 486 + , ... }@args: 487 + 488 + let 489 + extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ]; 490 + in 491 + stdenv.mkDerivation ({ 492 + name = "node-dependencies-${name}-${version}"; 493 + 494 + buildInputs = [ tarWrapper python nodejs ] 495 + ++ lib.optional (stdenv.isLinux) utillinux 496 + ++ lib.optional (stdenv.isDarwin) libtool 497 + ++ buildInputs; 498 + 499 + inherit dontStrip; # Stripping may fail a build for some package deployments 500 + inherit dontNpmInstall unpackPhase buildPhase; 501 + 502 + includeScript = includeDependencies { inherit dependencies; }; 503 + pinpointDependenciesScript = pinpointDependenciesOfPackage args; 504 + 505 + passAsFile = [ "includeScript" "pinpointDependenciesScript" ]; 506 + 507 + installPhase = '' 508 + source ${installPackage} 509 + 510 + mkdir -p $out/${packageName} 511 + cd $out/${packageName} 512 + 513 + source $includeScriptPath 514 + 515 + # Create fake package.json to make the npm commands work properly 516 + cp ${src}/package.json . 517 + chmod 644 package.json 518 + ${lib.optionalString bypassCache '' 519 + if [ -f ${src}/package-lock.json ] 520 + then 521 + cp ${src}/package-lock.json . 522 + fi 523 + ''} 524 + 525 + # Go to the parent folder to make sure that all packages are pinpointed 526 + cd .. 527 + ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} 528 + 529 + ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }} 530 + 531 + # Expose the executables that were installed 532 + cd .. 533 + ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} 534 + 535 + mv ${packageName} lib 536 + ln -s $out/lib/node_modules/.bin $out/bin 537 + ''; 538 + } // extraArgs); 539 + 540 + # Builds a development shell 541 + buildNodeShell = 542 + { name 543 + , packageName 544 + , version 545 + , src 546 + , dependencies ? [] 547 + , buildInputs ? [] 548 + , production ? true 549 + , npmFlags ? "" 550 + , dontNpmInstall ? false 551 + , bypassCache ? false 552 + , reconstructLock ? false 553 + , dontStrip ? true 554 + , unpackPhase ? "true" 555 + , buildPhase ? "true" 556 + , ... }@args: 557 + 558 + let 559 + nodeDependencies = buildNodeDependencies args; 560 + in 561 + stdenv.mkDerivation { 562 + name = "node-shell-${name}-${version}"; 563 + 564 + buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs; 565 + buildCommand = '' 566 + mkdir -p $out/bin 567 + cat > $out/bin/shell <<EOF 568 + #! ${stdenv.shell} -e 569 + $shellHook 570 + exec ${stdenv.shell} 571 + EOF 572 + chmod +x $out/bin/shell 573 + ''; 574 + 575 + # Provide the dependencies in a development shell through the NODE_PATH environment variable 576 + inherit nodeDependencies; 577 + shellHook = lib.optionalString (dependencies != []) '' 578 + export NODE_PATH=${nodeDependencies}/lib/node_modules 579 + export PATH="${nodeDependencies}/bin:$PATH" 580 + ''; 581 + }; 582 + in 583 + { 584 + buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist; 585 + buildNodePackage = lib.makeOverridable buildNodePackage; 586 + buildNodeDependencies = lib.makeOverridable buildNodeDependencies; 587 + buildNodeShell = lib.makeOverridable buildNodeShell; 588 + }
+28
pkgs/servers/haste-server/update.sh
··· 1 + #!/usr/bin/env nix-shell 2 + #!nix-shell -i bash -p curl common-updater-scripts nodePackages.node2nix gnused nix coreutils jq 3 + 4 + set -euo pipefail 5 + 6 + latestVersion="$(curl -s "https://api.github.com/repos/toptal/haste-server/commits?per_page=1" | jq -r ".[0].sha")" 7 + currentVersion=$(nix-instantiate --eval -E "with import ./. {}; haste-server.version or (lib.getVersion haste-server)" | tr -d '"') 8 + 9 + if [[ "$currentVersion" == "$latestVersion" ]]; then 10 + echo "haste-server is up-to-date: $currentVersion" 11 + exit 0 12 + fi 13 + 14 + update-source-version haste-server 0 sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= 15 + update-source-version haste-server "$latestVersion" 16 + 17 + # use patched source 18 + store_src="$(nix-build . -A haste-server.src --no-out-link)" 19 + 20 + cd "$(dirname "${BASH_SOURCE[0]}")" 21 + 22 + node2nix \ 23 + --nodejs-14 \ 24 + --development \ 25 + --node-env ./node-env.nix \ 26 + --output ./node-deps.nix \ 27 + --input "$store_src/package.json" \ 28 + --composition ./node-composition.nix
+2
pkgs/top-level/all-packages.nix
··· 6438 6438 6439 6439 haste-client = callPackage ../tools/misc/haste-client { }; 6440 6440 6441 + haste-server = callPackage ../servers/haste-server { }; 6442 + 6441 6443 hal-hardware-analyzer = libsForQt5.callPackage ../applications/science/electronics/hal-hardware-analyzer { }; 6442 6444 6443 6445 half = callPackage ../development/libraries/half { };