]> git.immae.eu Git - perso/Immae/Config/Nix.git/commitdiff
Add mypads to etherpad
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Thu, 30 Apr 2020 15:39:11 +0000 (17:39 +0200)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Thu, 30 Apr 2020 15:39:11 +0000 (17:39 +0200)
modules/private/environment.nix
modules/private/websites/tools/ether/default.nix
pkgs/webapps/default.nix
pkgs/webapps/etherpad-lite/modules/ep_adminpads/node-packages.nix
pkgs/webapps/etherpad-lite/modules/ep_delete_empty_pads/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_delete_empty_pads/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_mypads/fix_ldap.patch [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_mypads/node-packages.json [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_mypads/node-packages.nix [new file with mode: 0644]
pkgs/webapps/etherpad-lite/modules/ep_scrollto/node-packages.nix

index 00026227dba94172a7b14b484e5654f8472d72a9..969c9c776d5d36d95ccd95708567e9e0bc9cc2b6 100644 (file)
@@ -837,6 +837,7 @@ in
                 ldap = mkLdapOptions "Etherpad" {
                   group_filter = mkOption { type = str; description = "Filter for groups"; };
                 };
+                adminPassword = mkOption { type = str; description = "Admin password for mypads / admin"; };
                 session_key = mkOption { type = str; description = "Session key"; };
                 api_key = mkOption { type = str; description = "API key"; };
                 redirects = mkOption { type = str; description = "Redirects for apache"; };
index 50446fffc8a316c96517e656452ab59673e5c449..a0329ef6f881fe8d85458d5196273e0ea1be2aa6 100644 (file)
@@ -88,6 +88,10 @@ in {
               "percentageToScrollWhenUserPressesArrowUp": 0
             },
             "users": {
+              "admin": {
+                "password": "${env.adminPassword}",
+                "is_admin": true
+              },
               "ldapauth": {
                 "hash": "invalid",
                 "url": "ldaps://${env.ldap.host}",
@@ -104,6 +108,23 @@ in {
                 "anonymousReadonly": false
               }
             },
+            "ep_mypads": {
+              "warning": "This hash is stored in database, changing anything here will not have any consequence",
+              "ldap": {
+                "url": "ldaps://${env.ldap.host}",
+                "bindDN": "${env.ldap.dn}",
+                "bindCredentials": "${env.ldap.password}",
+                "searchBase": "${env.ldap.base}",
+                "searchFilter": "${env.ldap.filter}",
+                "properties": {
+                  "login": "uid",
+                  "email": "mail",
+                  "firstname": "givenName",
+                  "lastname": "sn"
+                },
+                "defaultLang": "fr"
+              }
+            },
             "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],
             "loadTest": false,
             "indentationOnNewLine": false,
index 3117f7e9e1c67081ccf86b96dbbcd3a420361394..05172a93a0c9dd0cf7566a84483b8ca32b3872b9 100644 (file)
@@ -25,6 +25,7 @@ rec {
       "ep_headings2" "ep_ldapauth" "ep_line_height" "ep_markdown"
       "ep_previewimages" "ep_ruler" "ep_scrollto" "ep_set_title_on_pad"
       "ep_subscript_and_superscript" "ep_timesliderdiff"
+      "ep_delete_empty_pads" "ep_mypads"
     ];
   in
     # nix files are built using node2nix -i node-packages.json
index 90f09a36f9051eeb8ae855f1e90d4d58a5d265d1..2f62257e936d0a0f690d60ae0ab133c0a1cd25d7 100644 (file)
@@ -11,8 +11,8 @@ in
     packageName = "ep_adminpads";
     version = "0.0.12";
     src = fetchurl {
-      url = "https://registry.npmjs.org/ep_adminpads/-/ep_adminpads-0.0.12.tgz";
-      sha1 = "e8a04b6c77f76d9d8703c9b40e656950f2f5c125";
+      url = "https://github.com/spcsser/ep_adminpads/archive/master.tar.gz";
+      sha1 = "49ypihbwxmd97g813aq2rjwh7pq1y08a";
     };
     buildInputs = globalBuildInputs;
     meta = {
@@ -24,4 +24,4 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_delete_empty_pads/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_delete_empty_pads/node-packages.json
new file mode 100644 (file)
index 0000000..8688afc
--- /dev/null
@@ -0,0 +1 @@
+[ "ep_delete_empty_pads" ]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_delete_empty_pads/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_delete_empty_pads/node-packages.nix
new file mode 100644 (file)
index 0000000..8f3e9c0
--- /dev/null
@@ -0,0 +1,26 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {};
+in
+{
+  ep_delete_empty_pads = nodeEnv.buildNodePackage {
+    name = "ep_delete_empty_pads";
+    packageName = "ep_delete_empty_pads";
+    version = "0.0.6";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_delete_empty_pads/-/ep_delete_empty_pads-0.0.6.tgz";
+      sha512 = "ZpVKhWYUBAz5jWXT4Ldjraa5oAmOmOiSaNUSVOdVEG7DLeoNaTrjSQx0KZl4EjF1Qp/oUQwX69ryjY0assmdrw==";
+    };
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Delete pads which were never edited";
+      license = "Apache-2.0";
+    };
+    production = true;
+    bypassCache = true;
+    reconstructLock = true;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_mypads/fix_ldap.patch b/pkgs/webapps/etherpad-lite/modules/ep_mypads/fix_ldap.patch
new file mode 100644 (file)
index 0000000..738a066
--- /dev/null
@@ -0,0 +1,88 @@
+diff --git a/auth.js b/auth.js
+index ce77ee4..de66b03 100644
+--- a/auth.js
++++ b/auth.js
+@@ -91,6 +91,7 @@ var cuid        = require('cuid');
+ var common = require('./model/common.js');
+ var user   = require('./model/user.js');
+ var conf   = require('./configuration.js');
++var utils  = require('./utils.js');
+ var NOT_INTERNAL_AUTH_PWD = 'soooooo_useless';
+@@ -212,6 +213,7 @@ module.exports = (function () {
+             }
+             return callback(new Error(emsg), false);
+           }
++          console.log("before user.get");
+           user.get(login, function(err, u) {
+             var props = ldapConf.properties;
+             var mail;
+@@ -229,27 +231,30 @@ module.exports = (function () {
+               return callback(new Error(emsg), false);
+             }
+             if (err) {
++              console.log("in user.get err");
+               // We have to create the user in mypads database
+               ldapConf  = conf.get('authLdapSettings');
+               user.set({
+-                  login: ldapuser[props.login],
++                  login: utils.getSingleton(ldapuser[props.login]),
+                   password: NOT_INTERNAL_AUTH_PWD,
+-                  firstname: ldapuser[props.firstname],
+-                  lastname: ldapuser[props.lastname],
++                  firstname: utils.getSingleton(ldapuser[props.firstname]),
++                  lastname: utils.getSingleton(ldapuser[props.lastname]),
+                   email: mail,
+                   lang: ldapConf.defaultLang || 'en'
+                 }, callback);
+             } else if (u.email     !== mail                      ||
+-                       u.firstname !== ldapuser[props.firstname] ||
+-                       u.lastname  !== ldapuser[props.lastname]) {
++                       u.firstname !== utils.getSingleton(ldapuser[props.firstname]) ||
++                       u.lastname  !== utils.getSingleton(ldapuser[props.lastname])) {
+                 // Update database and cache informations if needed
+                 // (i.e. update from LDAP)
++                console.log("in user.get update");
+                 u.email     = mail;
+-                u.firstname = ldapuser[props.firstname];
+-                u.lastname  = ldapuser[props.lastname];
++                u.firstname = utils.getSingleton(ldapuser[props.firstname]);
++                u.lastname  = utils.getSingleton(ldapuser[props.lastname]);
+                 u.password  = NOT_INTERNAL_AUTH_PWD;
+                 user.set(u, callback);
+             } else {
++                console.log("in user.get callback");
+               return callback(null, u);
+             }
+           });
+diff --git a/model/common.js b/model/common.js
+index b19829b..9421742 100644
+--- a/model/common.js
++++ b/model/common.js
+@@ -94,6 +94,7 @@ module.exports = (function() {
+       var isFS = function (s) { return (ld.isString(s) && !ld.isEmpty(s)); };
+       ld.forEach(strFields, function (s) {
+         if (!isFS(params[s])) {
++          console.log(params, s);
+           throw new TypeError('BACKEND.ERROR.TYPE.PARAM_STR');
+         }
+         if (s.length > 100) {
+diff --git a/utils.js b/utils.js
+index 32c2727..d381d06 100644
+--- a/utils.js
++++ b/utils.js
+@@ -14,3 +14,13 @@ exports.callbackify2 = function (fun) {
+     return wrapPromise(fun(arg1, arg2), cb);
+   };
+ };
++
++exports.getSingleton = function (stringOrArray) {
++  if (Array.isArray(stringOrArray)) {
++    if (stringOrArray.length > 0) {
++      return stringOrArray[0];
++    }
++  } else if (stringOrArray) {
++    return stringOrArray;
++  }
++}
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_mypads/node-packages.json b/pkgs/webapps/etherpad-lite/modules/ep_mypads/node-packages.json
new file mode 100644 (file)
index 0000000..36b70bd
--- /dev/null
@@ -0,0 +1 @@
+["ep_mypads"]
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_mypads/node-packages.nix b/pkgs/webapps/etherpad-lite/modules/ep_mypads/node-packages.nix
new file mode 100644 (file)
index 0000000..13b302c
--- /dev/null
@@ -0,0 +1,2156 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {
+    "@types/ldapjs-1.0.7" = {
+      name = "_at_types_slash_ldapjs";
+      packageName = "@types/ldapjs";
+      version = "1.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/ldapjs/-/ldapjs-1.0.7.tgz";
+        sha512 = "Cacc0pQ6fw8+J5Qwebbj2+YpYANOl09WEDjJsNyPHpNSza318mUIuAhgXDfC8kXDViymlEQIvgbvuPKovRIVEQ==";
+      };
+    };
+    "@types/node-13.13.4" = {
+      name = "_at_types_slash_node";
+      packageName = "@types/node";
+      version = "13.13.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz";
+        sha512 = "x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==";
+      };
+    };
+    "abstract-logging-1.0.0" = {
+      name = "abstract-logging";
+      packageName = "abstract-logging";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/abstract-logging/-/abstract-logging-1.0.0.tgz";
+        sha1 = "8b7deafd310559bc28f77724dd1bb30177278c1b";
+      };
+    };
+    "addressparser-0.2.1" = {
+      name = "addressparser";
+      packageName = "addressparser";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz";
+        sha1 = "d11a5b2eeda04cfefebdf3196c10ae13db6cd607";
+      };
+    };
+    "addressparser-0.3.2" = {
+      name = "addressparser";
+      packageName = "addressparser";
+      version = "0.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/addressparser/-/addressparser-0.3.2.tgz";
+        sha1 = "59873f35e8fcf6c7361c10239261d76e15348bb2";
+      };
+    };
+    "ajv-6.12.2" = {
+      name = "ajv";
+      packageName = "ajv";
+      version = "6.12.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz";
+        sha512 = "k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==";
+      };
+    };
+    "ansi-regex-2.1.1" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
+        sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
+      };
+    };
+    "ansi-regex-3.0.0" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz";
+        sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
+      };
+    };
+    "ansi-styles-2.2.1" = {
+      name = "ansi-styles";
+      packageName = "ansi-styles";
+      version = "2.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
+        sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
+      };
+    };
+    "asap-2.0.6" = {
+      name = "asap";
+      packageName = "asap";
+      version = "2.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz";
+        sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
+      };
+    };
+    "asn1-0.2.3" = {
+      name = "asn1";
+      packageName = "asn1";
+      version = "0.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
+        sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
+      };
+    };
+    "assert-plus-0.1.5" = {
+      name = "assert-plus";
+      packageName = "assert-plus";
+      version = "0.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz";
+        sha1 = "ee74009413002d84cec7219c6ac811812e723160";
+      };
+    };
+    "assert-plus-1.0.0" = {
+      name = "assert-plus";
+      packageName = "assert-plus";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
+        sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+      };
+    };
+    "async-0.1.15" = {
+      name = "async";
+      packageName = "async";
+      version = "0.1.15";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-0.1.15.tgz";
+        sha1 = "2180eaca2cf2a6ca5280d41c0585bec9b3e49bd3";
+      };
+    };
+    "async-0.9.2" = {
+      name = "async";
+      packageName = "async";
+      version = "0.9.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-0.9.2.tgz";
+        sha1 = "aea74d5e61c1f899613bf64bda66d4c78f2fd17d";
+      };
+    };
+    "async-2.6.3" = {
+      name = "async";
+      packageName = "async";
+      version = "2.6.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-2.6.3.tgz";
+        sha512 = "zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==";
+      };
+    };
+    "asynckit-0.4.0" = {
+      name = "asynckit";
+      packageName = "asynckit";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
+        sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+      };
+    };
+    "aws-sign2-0.7.0" = {
+      name = "aws-sign2";
+      packageName = "aws-sign2";
+      version = "0.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
+        sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+      };
+    };
+    "aws4-1.9.1" = {
+      name = "aws4";
+      packageName = "aws4";
+      version = "1.9.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz";
+        sha512 = "wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==";
+      };
+    };
+    "backoff-2.5.0" = {
+      name = "backoff";
+      packageName = "backoff";
+      version = "2.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz";
+        sha1 = "f616eda9d3e4b66b8ca7fca79f695722c5f8e26f";
+      };
+    };
+    "balanced-match-1.0.0" = {
+      name = "balanced-match";
+      packageName = "balanced-match";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
+        sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
+      };
+    };
+    "bcrypt-pbkdf-1.0.2" = {
+      name = "bcrypt-pbkdf";
+      packageName = "bcrypt-pbkdf";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
+        sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
+      };
+    };
+    "bcryptjs-2.4.3" = {
+      name = "bcryptjs";
+      packageName = "bcryptjs";
+      version = "2.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz";
+        sha1 = "9ab5627b93e60621ff7cdac5da9733027df1d0cb";
+      };
+    };
+    "bignumber.js-2.0.5" = {
+      name = "bignumber.js";
+      packageName = "bignumber.js";
+      version = "2.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.0.5.tgz";
+        sha1 = "e1d16f495454d4229a7a483ce8d3d774ddc50659";
+      };
+    };
+    "bluebird-2.11.0" = {
+      name = "bluebird";
+      packageName = "bluebird";
+      version = "2.11.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz";
+        sha1 = "534b9033c022c9579c56ba3b3e5a5caafbb650e1";
+      };
+    };
+    "body-parser-1.12.4" = {
+      name = "body-parser";
+      packageName = "body-parser";
+      version = "1.12.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/body-parser/-/body-parser-1.12.4.tgz";
+        sha1 = "090700c4ba28862a8520ef378395fdee5f61c229";
+      };
+    };
+    "brace-expansion-1.1.11" = {
+      name = "brace-expansion";
+      packageName = "brace-expansion";
+      version = "1.1.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
+        sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
+      };
+    };
+    "browser-fingerprint-0.0.1" = {
+      name = "browser-fingerprint";
+      packageName = "browser-fingerprint";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz";
+        sha1 = "8df3cdca25bf7d5b3542d61545d730053fce604a";
+      };
+    };
+    "browser-request-0.3.3" = {
+      name = "browser-request";
+      packageName = "browser-request";
+      version = "0.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz";
+        sha1 = "9ece5b5aca89a29932242e18bf933def9876cc17";
+      };
+    };
+    "buffer-equal-constant-time-1.0.1" = {
+      name = "buffer-equal-constant-time";
+      packageName = "buffer-equal-constant-time";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz";
+        sha1 = "f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819";
+      };
+    };
+    "buffer-writer-1.0.1" = {
+      name = "buffer-writer";
+      packageName = "buffer-writer";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz";
+        sha1 = "22a936901e3029afcd7547eb4487ceb697a3bf08";
+      };
+    };
+    "bufferjs-1.1.0" = {
+      name = "bufferjs";
+      packageName = "bufferjs";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bufferjs/-/bufferjs-1.1.0.tgz";
+        sha1 = "095ffa39c5e6b40a2178a1169c9effc584a73201";
+      };
+    };
+    "bunyan-1.8.12" = {
+      name = "bunyan";
+      packageName = "bunyan";
+      version = "1.8.12";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz";
+        sha1 = "f150f0f6748abdd72aeae84f04403be2ef113797";
+      };
+    };
+    "bytes-1.0.0" = {
+      name = "bytes";
+      packageName = "bytes";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz";
+        sha1 = "3569ede8ba34315fab99c3e92cb04c7220de1fa8";
+      };
+    };
+    "bytes-2.1.0" = {
+      name = "bytes";
+      packageName = "bytes";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz";
+        sha1 = "ac93c410e2ffc9cc7cf4b464b38289067f5e47b4";
+      };
+    };
+    "caseless-0.12.0" = {
+      name = "caseless";
+      packageName = "caseless";
+      version = "0.12.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
+        sha1 = "1b681c21ff84033c826543090689420d187151dc";
+      };
+    };
+    "cassandra-driver-2.0.1" = {
+      name = "cassandra-driver";
+      packageName = "cassandra-driver";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cassandra-driver/-/cassandra-driver-2.0.1.tgz";
+        sha1 = "072759ab837628dcbcb5bc678283dcc922c767e2";
+      };
+    };
+    "chalk-1.1.3" = {
+      name = "chalk";
+      packageName = "chalk";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
+        sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
+      };
+    };
+    "channels-0.0.4" = {
+      name = "channels";
+      packageName = "channels";
+      version = "0.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/channels/-/channels-0.0.4.tgz";
+        sha1 = "1bee323edea152bb9ef04f41bc6e6b0f5948a941";
+      };
+    };
+    "cli-progress-2.1.1" = {
+      name = "cli-progress";
+      packageName = "cli-progress";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cli-progress/-/cli-progress-2.1.1.tgz";
+        sha512 = "TSJw3LY9ZRSis7yYzQ7flIdtQMbacd9oYoiFphJhI4SzgmqF0zErO+uNv0lbUjk1L4AGfHQJ4OVYYzW+JV66KA==";
+      };
+    };
+    "cloudant-follow-0.17.0" = {
+      name = "cloudant-follow";
+      packageName = "cloudant-follow";
+      version = "0.17.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cloudant-follow/-/cloudant-follow-0.17.0.tgz";
+        sha512 = "JQ1xvKAHh8rsnSVBjATLCjz/vQw1sWBGadxr2H69yFMwD7hShUGDwwEefdypaxroUJ/w6t1cSwilp/hRUxEW8w==";
+      };
+    };
+    "colors-1.4.0" = {
+      name = "colors";
+      packageName = "colors";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz";
+        sha512 = "a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==";
+      };
+    };
+    "combined-stream-1.0.8" = {
+      name = "combined-stream";
+      packageName = "combined-stream";
+      version = "1.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
+        sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
+      };
+    };
+    "commander-2.20.3" = {
+      name = "commander";
+      packageName = "commander";
+      version = "2.20.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz";
+        sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==";
+      };
+    };
+    "concat-map-0.0.1" = {
+      name = "concat-map";
+      packageName = "concat-map";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
+        sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+      };
+    };
+    "content-type-1.0.4" = {
+      name = "content-type";
+      packageName = "content-type";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz";
+        sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==";
+      };
+    };
+    "cookie-0.1.2" = {
+      name = "cookie";
+      packageName = "cookie";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz";
+        sha1 = "72fec3d24e48a3432073d90c12642005061004b1";
+      };
+    };
+    "cookie-parser-1.3.4" = {
+      name = "cookie-parser";
+      packageName = "cookie-parser";
+      version = "1.3.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.4.tgz";
+        sha1 = "193035a5be97117a21709b3aa737f6132717bda6";
+      };
+    };
+    "cookie-signature-1.0.6" = {
+      name = "cookie-signature";
+      packageName = "cookie-signature";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
+        sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
+      };
+    };
+    "core-js-1.2.7" = {
+      name = "core-js";
+      packageName = "core-js";
+      version = "1.2.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz";
+        sha1 = "652294c14651db28fa93bd2d5ff2983a4f08c636";
+      };
+    };
+    "core-util-is-1.0.2" = {
+      name = "core-util-is";
+      packageName = "core-util-is";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
+        sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+      };
+    };
+    "cuid-1.3.8" = {
+      name = "cuid";
+      packageName = "cuid";
+      version = "1.3.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cuid/-/cuid-1.3.8.tgz";
+        sha1 = "4b875e0969bad764f7ec0706cf44f5fb0831f6b7";
+      };
+    };
+    "dashdash-1.14.1" = {
+      name = "dashdash";
+      packageName = "dashdash";
+      version = "1.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
+        sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+      };
+    };
+    "debug-2.2.0" = {
+      name = "debug";
+      packageName = "debug";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz";
+        sha1 = "f87057e995b1a1f6ae6a4960664137bc56f039da";
+      };
+    };
+    "debug-3.2.6" = {
+      name = "debug";
+      packageName = "debug";
+      version = "3.2.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz";
+        sha512 = "mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==";
+      };
+    };
+    "delayed-stream-1.0.0" = {
+      name = "delayed-stream";
+      packageName = "delayed-stream";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
+        sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+      };
+    };
+    "denque-1.4.1" = {
+      name = "denque";
+      packageName = "denque";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz";
+        sha512 = "OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==";
+      };
+    };
+    "depd-1.0.1" = {
+      name = "depd";
+      packageName = "depd";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz";
+        sha1 = "80aec64c9d6d97e65cc2a9caa93c0aa6abf73aaa";
+      };
+    };
+    "dirty-0.9.9" = {
+      name = "dirty";
+      packageName = "dirty";
+      version = "0.9.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dirty/-/dirty-0.9.9.tgz";
+        sha1 = "f785804c4cf7907220cb10fa576b22329feda545";
+      };
+    };
+    "dtrace-provider-0.8.8" = {
+      name = "dtrace-provider";
+      packageName = "dtrace-provider";
+      version = "0.8.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz";
+        sha512 = "b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==";
+      };
+    };
+    "ecc-jsbn-0.1.2" = {
+      name = "ecc-jsbn";
+      packageName = "ecc-jsbn";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
+        sha1 = "3a83a904e54353287874c564b7549386849a98c9";
+      };
+    };
+    "ecdsa-sig-formatter-1.0.11" = {
+      name = "ecdsa-sig-formatter";
+      packageName = "ecdsa-sig-formatter";
+      version = "1.0.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz";
+        sha512 = "nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==";
+      };
+    };
+    "ee-first-1.1.0" = {
+      name = "ee-first";
+      packageName = "ee-first";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz";
+        sha1 = "6a0d7c6221e490feefd92ec3f441c9ce8cd097f4";
+      };
+    };
+    "elasticsearch-11.0.1" = {
+      name = "elasticsearch";
+      packageName = "elasticsearch";
+      version = "11.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/elasticsearch/-/elasticsearch-11.0.1.tgz";
+        sha1 = "d180684c6bde7ecfa0fa24e62fa1c872eeae08e7";
+      };
+    };
+    "emailjs-0.3.16" = {
+      name = "emailjs";
+      packageName = "emailjs";
+      version = "0.3.16";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/emailjs/-/emailjs-0.3.16.tgz";
+        sha1 = "f162735352ce7b6615a5d811714051f90f23331d";
+      };
+    };
+    "encoding-0.1.12" = {
+      name = "encoding";
+      packageName = "encoding";
+      version = "0.1.12";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz";
+        sha1 = "538b66f3ee62cd1ab51ec323829d1f9480c74beb";
+      };
+    };
+    "errs-0.3.2" = {
+      name = "errs";
+      packageName = "errs";
+      version = "0.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/errs/-/errs-0.3.2.tgz";
+        sha1 = "798099b2dbd37ca2bc749e538a7c1307d0b50499";
+      };
+    };
+    "escape-string-regexp-1.0.5" = {
+      name = "escape-string-regexp";
+      packageName = "escape-string-regexp";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+        sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+      };
+    };
+    "extend-3.0.2" = {
+      name = "extend";
+      packageName = "extend";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
+        sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
+      };
+    };
+    "extsprintf-1.2.0" = {
+      name = "extsprintf";
+      packageName = "extsprintf";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz";
+        sha1 = "5ad946c22f5b32ba7f8cd7426711c6e8a3fc2529";
+      };
+    };
+    "extsprintf-1.3.0" = {
+      name = "extsprintf";
+      packageName = "extsprintf";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
+        sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+      };
+    };
+    "fast-deep-equal-3.1.1" = {
+      name = "fast-deep-equal";
+      packageName = "fast-deep-equal";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
+        sha512 = "8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==";
+      };
+    };
+    "fast-json-stable-stringify-2.1.0" = {
+      name = "fast-json-stable-stringify";
+      packageName = "fast-json-stable-stringify";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
+        sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==";
+      };
+    };
+    "forever-agent-0.6.1" = {
+      name = "forever-agent";
+      packageName = "forever-agent";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
+        sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+      };
+    };
+    "form-data-2.3.3" = {
+      name = "form-data";
+      packageName = "form-data";
+      version = "2.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
+        sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
+      };
+    };
+    "generic-pool-2.4.3" = {
+      name = "generic-pool";
+      packageName = "generic-pool";
+      version = "2.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.3.tgz";
+        sha1 = "780c36f69dfad05a5a045dd37be7adca11a4f6ff";
+      };
+    };
+    "getpass-0.1.7" = {
+      name = "getpass";
+      packageName = "getpass";
+      version = "0.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
+        sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+      };
+    };
+    "glob-6.0.4" = {
+      name = "glob";
+      packageName = "glob";
+      version = "6.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz";
+        sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22";
+      };
+    };
+    "har-schema-2.0.0" = {
+      name = "har-schema";
+      packageName = "har-schema";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
+        sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+      };
+    };
+    "har-validator-5.1.3" = {
+      name = "har-validator";
+      packageName = "har-validator";
+      version = "5.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz";
+        sha512 = "sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==";
+      };
+    };
+    "has-ansi-2.0.0" = {
+      name = "has-ansi";
+      packageName = "has-ansi";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
+        sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
+      };
+    };
+    "hoek-2.16.3" = {
+      name = "hoek";
+      packageName = "hoek";
+      version = "2.16.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz";
+        sha1 = "20bb7403d3cea398e91dc4710a8ff1b8274a25ed";
+      };
+    };
+    "hoek-4.2.1" = {
+      name = "hoek";
+      packageName = "hoek";
+      version = "4.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz";
+        sha512 = "QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==";
+      };
+    };
+    "http-signature-1.2.0" = {
+      name = "http-signature";
+      packageName = "http-signature";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
+        sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+      };
+    };
+    "iconv-lite-0.4.24" = {
+      name = "iconv-lite";
+      packageName = "iconv-lite";
+      version = "0.4.24";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
+        sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
+      };
+    };
+    "iconv-lite-0.4.8" = {
+      name = "iconv-lite";
+      packageName = "iconv-lite";
+      version = "0.4.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.8.tgz";
+        sha1 = "c6019a7595f2cefca702eab694a010bcd9298d20";
+      };
+    };
+    "inflight-1.0.6" = {
+      name = "inflight";
+      packageName = "inflight";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
+        sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+      };
+    };
+    "inherits-2.0.4" = {
+      name = "inherits";
+      packageName = "inherits";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
+        sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
+      };
+    };
+    "is-fullwidth-code-point-2.0.0" = {
+      name = "is-fullwidth-code-point";
+      packageName = "is-fullwidth-code-point";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
+        sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
+      };
+    };
+    "is-typedarray-1.0.0" = {
+      name = "is-typedarray";
+      packageName = "is-typedarray";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
+        sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+      };
+    };
+    "isarray-0.0.1" = {
+      name = "isarray";
+      packageName = "isarray";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
+        sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
+      };
+    };
+    "isemail-1.2.0" = {
+      name = "isemail";
+      packageName = "isemail";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz";
+        sha1 = "be03df8cc3e29de4d2c5df6501263f1fa4595e9a";
+      };
+    };
+    "isemail-2.2.1" = {
+      name = "isemail";
+      packageName = "isemail";
+      version = "2.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz";
+        sha1 = "0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6";
+      };
+    };
+    "isstream-0.1.2" = {
+      name = "isstream";
+      packageName = "isstream";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
+        sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+      };
+    };
+    "items-2.1.2" = {
+      name = "items";
+      packageName = "items";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/items/-/items-2.1.2.tgz";
+        sha512 = "kezcEqgB97BGeZZYtX/MA8AG410ptURstvnz5RAgyFZ8wQFPMxHY8GpTq+/ZHKT3frSlIthUq7EvLt9xn3TvXg==";
+      };
+    };
+    "joi-10.6.0" = {
+      name = "joi";
+      packageName = "joi";
+      version = "10.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz";
+        sha512 = "hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==";
+      };
+    };
+    "joi-6.10.1" = {
+      name = "joi";
+      packageName = "joi";
+      version = "6.10.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz";
+        sha1 = "4d50c318079122000fe5f16af1ff8e1917b77e06";
+      };
+    };
+    "js-base64-2.1.9" = {
+      name = "js-base64";
+      packageName = "js-base64";
+      version = "2.1.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz";
+        sha1 = "f0e80ae039a4bd654b5f281fc93f04a914a7fcce";
+      };
+    };
+    "js-cookie-2.2.1" = {
+      name = "js-cookie";
+      packageName = "js-cookie";
+      version = "2.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz";
+        sha512 = "HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==";
+      };
+    };
+    "jsbn-0.1.1" = {
+      name = "jsbn";
+      packageName = "jsbn";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
+        sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+      };
+    };
+    "json-beautify-1.1.1" = {
+      name = "json-beautify";
+      packageName = "json-beautify";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-beautify/-/json-beautify-1.1.1.tgz";
+        sha512 = "17j+Hk2lado0xqKtUcyAjK0AtoHnPSIgktWRsEXgdFQFG9UnaGw6CHa0J7xsvulxRpFl6CrkDFHght1p5ZJc4A==";
+      };
+    };
+    "json-schema-0.2.3" = {
+      name = "json-schema";
+      packageName = "json-schema";
+      version = "0.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
+        sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+      };
+    };
+    "json-schema-traverse-0.4.1" = {
+      name = "json-schema-traverse";
+      packageName = "json-schema-traverse";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
+        sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
+      };
+    };
+    "json-stringify-safe-5.0.1" = {
+      name = "json-stringify-safe";
+      packageName = "json-stringify-safe";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+        sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+      };
+    };
+    "jsonminify-0.4.1" = {
+      name = "jsonminify";
+      packageName = "jsonminify";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsonminify/-/jsonminify-0.4.1.tgz";
+        sha1 = "805dafbb39395188cee9ab582c81ef959d7e710c";
+      };
+    };
+    "jsonwebtoken-5.0.5" = {
+      name = "jsonwebtoken";
+      packageName = "jsonwebtoken";
+      version = "5.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-5.0.5.tgz";
+        sha1 = "6592cc05ee03dd5ad9e03a910911a4da79afe0f8";
+      };
+    };
+    "jsonwebtoken-7.4.3" = {
+      name = "jsonwebtoken";
+      packageName = "jsonwebtoken";
+      version = "7.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz";
+        sha1 = "77f5021de058b605a1783fa1283e99812e645638";
+      };
+    };
+    "jsprim-1.4.1" = {
+      name = "jsprim";
+      packageName = "jsprim";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
+        sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+      };
+    };
+    "jwa-1.4.1" = {
+      name = "jwa";
+      packageName = "jwa";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz";
+        sha512 = "qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==";
+      };
+    };
+    "jws-3.2.2" = {
+      name = "jws";
+      packageName = "jws";
+      version = "3.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz";
+        sha512 = "YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==";
+      };
+    };
+    "ldap-filter-0.2.2" = {
+      name = "ldap-filter";
+      packageName = "ldap-filter";
+      version = "0.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz";
+        sha1 = "f2b842be0b86da3352798505b31ebcae590d77d0";
+      };
+    };
+    "ldapauth-fork-4.3.3" = {
+      name = "ldapauth-fork";
+      packageName = "ldapauth-fork";
+      version = "4.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-4.3.3.tgz";
+        sha512 = "x76VpQ5ZqkwAJmqwcD6KIwDiNEbgIGIPGwC/eA17e1dxWhlTx36w0DlLOFwjTuZ2iuaLTsZsUprlVqvSlwc/1Q==";
+      };
+    };
+    "ldapjs-1.0.2" = {
+      name = "ldapjs";
+      packageName = "ldapjs";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.2.tgz";
+        sha1 = "544ff7032b7b83c68f0701328d9297aa694340f9";
+      };
+    };
+    "lodash-3.10.1" = {
+      name = "lodash";
+      packageName = "lodash";
+      version = "3.10.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz";
+        sha1 = "5bf45e8e49ba4189e17d482789dfd15bd140b7b6";
+      };
+    };
+    "lodash-4.17.15" = {
+      name = "lodash";
+      packageName = "lodash";
+      version = "4.17.15";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz";
+        sha512 = "8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==";
+      };
+    };
+    "lodash-compat-3.10.2" = {
+      name = "lodash-compat";
+      packageName = "lodash-compat";
+      version = "3.10.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.2.tgz";
+        sha1 = "c6940128a9d30f8e902cd2cf99fd0cba4ecfc183";
+      };
+    };
+    "lodash.isempty-4.4.0" = {
+      name = "lodash.isempty";
+      packageName = "lodash.isempty";
+      version = "4.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz";
+        sha1 = "6f86cbedd8be4ec987be9aaf33c9684db1b31e7e";
+      };
+    };
+    "lodash.once-4.1.1" = {
+      name = "lodash.once";
+      packageName = "lodash.once";
+      version = "4.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz";
+        sha1 = "0dd3971213c7c56df880977d504c88fb471a97ac";
+      };
+    };
+    "long-2.4.0" = {
+      name = "long";
+      packageName = "long";
+      version = "2.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/long/-/long-2.4.0.tgz";
+        sha1 = "9fa180bb1d9500cdc29c4156766a1995e1f4524f";
+      };
+    };
+    "lru-cache-5.1.1" = {
+      name = "lru-cache";
+      packageName = "lru-cache";
+      version = "5.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz";
+        sha512 = "KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==";
+      };
+    };
+    "media-typer-0.3.0" = {
+      name = "media-typer";
+      packageName = "media-typer";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
+        sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
+      };
+    };
+    "mime-db-1.44.0" = {
+      name = "mime-db";
+      packageName = "mime-db";
+      version = "1.44.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz";
+        sha512 = "/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==";
+      };
+    };
+    "mime-types-2.1.27" = {
+      name = "mime-types";
+      packageName = "mime-types";
+      version = "2.1.27";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz";
+        sha512 = "JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==";
+      };
+    };
+    "mimelib-0.2.14" = {
+      name = "mimelib";
+      packageName = "mimelib";
+      version = "0.2.14";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz";
+        sha1 = "2a1aa724bd190b85bd526e6317ab6106edfd6831";
+      };
+    };
+    "minimatch-3.0.4" = {
+      name = "minimatch";
+      packageName = "minimatch";
+      version = "3.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
+        sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
+      };
+    };
+    "minimist-1.2.5" = {
+      name = "minimist";
+      packageName = "minimist";
+      version = "1.2.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
+        sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
+      };
+    };
+    "mkdirp-0.5.5" = {
+      name = "mkdirp";
+      packageName = "mkdirp";
+      version = "0.5.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
+        sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
+      };
+    };
+    "moment-1.7.0" = {
+      name = "moment";
+      packageName = "moment";
+      version = "1.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/moment/-/moment-1.7.0.tgz";
+        sha1 = "6f3d73a446c6bd6af1b993801d0b8071efad5e28";
+      };
+    };
+    "moment-2.24.0" = {
+      name = "moment";
+      packageName = "moment";
+      version = "2.24.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz";
+        sha512 = "bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==";
+      };
+    };
+    "ms-0.7.1" = {
+      name = "ms";
+      packageName = "ms";
+      version = "0.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz";
+        sha1 = "9cd13c03adbff25b65effde7ce864ee952017098";
+      };
+    };
+    "ms-2.1.2" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
+        sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
+      };
+    };
+    "mv-2.1.1" = {
+      name = "mv";
+      packageName = "mv";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz";
+        sha1 = "ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2";
+      };
+    };
+    "mysql-2.6.1" = {
+      name = "mysql";
+      packageName = "mysql";
+      version = "2.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mysql/-/mysql-2.6.1.tgz";
+        sha1 = "71bf1fb20550cf2940b831664df33f3637b5504d";
+      };
+    };
+    "nan-2.14.1" = {
+      name = "nan";
+      packageName = "nan";
+      version = "2.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz";
+        sha512 = "isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==";
+      };
+    };
+    "nano-6.4.4" = {
+      name = "nano";
+      packageName = "nano";
+      version = "6.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nano/-/nano-6.4.4.tgz";
+        sha512 = "7sldMrZI1ZH8QE29PnzohxLfR67WNVzMKLa7EMl3x9Hr+0G+YpOUCq50qZ9G66APrjcb0Of2BTOZLNBCutZGag==";
+      };
+    };
+    "ncp-2.0.0" = {
+      name = "ncp";
+      packageName = "ncp";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz";
+        sha1 = "195a21d6c46e361d2fb1281ba38b91e9df7bdbb3";
+      };
+    };
+    "node-fingerprint-0.0.2" = {
+      name = "node-fingerprint";
+      packageName = "node-fingerprint";
+      version = "0.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-fingerprint/-/node-fingerprint-0.0.2.tgz";
+        sha1 = "31cbabeb71a67ae7dd5a7dc042e51c3c75868501";
+      };
+    };
+    "oauth-sign-0.9.0" = {
+      name = "oauth-sign";
+      packageName = "oauth-sign";
+      version = "0.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
+        sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
+      };
+    };
+    "object-assign-4.1.0" = {
+      name = "object-assign";
+      packageName = "object-assign";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz";
+        sha1 = "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0";
+      };
+    };
+    "on-finished-2.2.1" = {
+      name = "on-finished";
+      packageName = "on-finished";
+      version = "2.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz";
+        sha1 = "5c85c1cc36299f78029653f667f27b6b99ebc029";
+      };
+    };
+    "once-1.4.0" = {
+      name = "once";
+      packageName = "once";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
+        sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+      };
+    };
+    "packet-reader-0.2.0" = {
+      name = "packet-reader";
+      packageName = "packet-reader";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz";
+        sha1 = "819df4d010b82d5ea5671f8a1a3acf039bcd7700";
+      };
+    };
+    "passport-0.2.2" = {
+      name = "passport";
+      packageName = "passport";
+      version = "0.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/passport/-/passport-0.2.2.tgz";
+        sha1 = "9c38f17beb929f3d81af7b8838e8430db8703f2b";
+      };
+    };
+    "passport-jwt-3.0.1" = {
+      name = "passport-jwt";
+      packageName = "passport-jwt";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/passport-jwt/-/passport-jwt-3.0.1.tgz";
+        sha1 = "e4f7276dad8bd251d43c6fc38883130b963272f6";
+      };
+    };
+    "passport-strategy-1.0.0" = {
+      name = "passport-strategy";
+      packageName = "passport-strategy";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz";
+        sha1 = "b5539aa8fc225a3d1ad179476ddf236b440f52e4";
+      };
+    };
+    "path-is-absolute-1.0.1" = {
+      name = "path-is-absolute";
+      packageName = "path-is-absolute";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+        sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+      };
+    };
+    "pause-0.0.1" = {
+      name = "pause";
+      packageName = "pause";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz";
+        sha1 = "1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d";
+      };
+    };
+    "performance-now-2.1.0" = {
+      name = "performance-now";
+      packageName = "performance-now";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
+        sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+      };
+    };
+    "pg-6.1.3" = {
+      name = "pg";
+      packageName = "pg";
+      version = "6.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg/-/pg-6.1.3.tgz";
+        sha1 = "8e5e497329c2b81dbfd563f1541c5803c7269de4";
+      };
+    };
+    "pg-connection-string-0.1.3" = {
+      name = "pg-connection-string";
+      packageName = "pg-connection-string";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz";
+        sha1 = "da1847b20940e42ee1492beaf65d49d91b245df7";
+      };
+    };
+    "pg-int8-1.0.1" = {
+      name = "pg-int8";
+      packageName = "pg-int8";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz";
+        sha512 = "WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==";
+      };
+    };
+    "pg-pool-1.8.0" = {
+      name = "pg-pool";
+      packageName = "pg-pool";
+      version = "1.8.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-pool/-/pg-pool-1.8.0.tgz";
+        sha1 = "f7ec73824c37a03f076f51bfdf70e340147c4f37";
+      };
+    };
+    "pg-types-1.13.0" = {
+      name = "pg-types";
+      packageName = "pg-types";
+      version = "1.13.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-types/-/pg-types-1.13.0.tgz";
+        sha512 = "lfKli0Gkl/+za/+b6lzENajczwZHc7D5kiUCZfgm914jipD2kIOIvEkAhZ8GrW3/TUoP9w8FHjwpPObBye5KQQ==";
+      };
+    };
+    "pgpass-1.0.2" = {
+      name = "pgpass";
+      packageName = "pgpass";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz";
+        sha1 = "2a7bb41b6065b67907e91da1b07c1847c877b306";
+      };
+    };
+    "postgres-array-1.0.3" = {
+      name = "postgres-array";
+      packageName = "postgres-array";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.3.tgz";
+        sha512 = "5wClXrAP0+78mcsNX3/ithQ5exKvCyK5lr5NEEEeGwwM6NJdQgzIJBVxLvRW+huFpX92F2QnZ5CcokH0VhK2qQ==";
+      };
+    };
+    "postgres-bytea-1.0.0" = {
+      name = "postgres-bytea";
+      packageName = "postgres-bytea";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz";
+        sha1 = "027b533c0aa890e26d172d47cf9ccecc521acd35";
+      };
+    };
+    "postgres-date-1.0.5" = {
+      name = "postgres-date";
+      packageName = "postgres-date";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.5.tgz";
+        sha512 = "pdau6GRPERdAYUQwkBnGKxEfPyhVZXG/JiS44iZWiNdSOWE09N2lUgN6yshuq6fVSon4Pm0VMXd1srUUkLe9iA==";
+      };
+    };
+    "postgres-interval-1.2.0" = {
+      name = "postgres-interval";
+      packageName = "postgres-interval";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz";
+        sha512 = "9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==";
+      };
+    };
+    "precond-0.2.3" = {
+      name = "precond";
+      packageName = "precond";
+      version = "0.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz";
+        sha1 = "aa9591bcaa24923f1e0f4849d240f47efc1075ac";
+      };
+    };
+    "promise-7.3.1" = {
+      name = "promise";
+      packageName = "promise";
+      version = "7.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz";
+        sha512 = "nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==";
+      };
+    };
+    "psl-1.8.0" = {
+      name = "psl";
+      packageName = "psl";
+      version = "1.8.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz";
+        sha512 = "RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==";
+      };
+    };
+    "punycode-2.1.1" = {
+      name = "punycode";
+      packageName = "punycode";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
+        sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
+      };
+    };
+    "qs-2.4.2" = {
+      name = "qs";
+      packageName = "qs";
+      version = "2.4.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz";
+        sha1 = "f7ce788e5777df0b5010da7f7c4e73ba32470f5a";
+      };
+    };
+    "qs-6.5.2" = {
+      name = "qs";
+      packageName = "qs";
+      version = "6.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
+        sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
+      };
+    };
+    "raw-body-2.0.2" = {
+      name = "raw-body";
+      packageName = "raw-body";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/raw-body/-/raw-body-2.0.2.tgz";
+        sha1 = "a2c2f98c8531cee99c63d8d238b7de97bb659fca";
+      };
+    };
+    "readable-stream-1.1.14" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "1.1.14";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz";
+        sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
+      };
+    };
+    "redis-3.0.2" = {
+      name = "redis";
+      packageName = "redis";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/redis/-/redis-3.0.2.tgz";
+        sha512 = "PNhLCrjU6vKVuMOyFu7oSP296mwBkcE6lrAjruBYG5LgdSqtRBoVQIylrMyVZD/lkF24RSNNatzvYag6HRBHjQ==";
+      };
+    };
+    "redis-commands-1.5.0" = {
+      name = "redis-commands";
+      packageName = "redis-commands";
+      version = "1.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/redis-commands/-/redis-commands-1.5.0.tgz";
+        sha512 = "6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg==";
+      };
+    };
+    "redis-errors-1.2.0" = {
+      name = "redis-errors";
+      packageName = "redis-errors";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz";
+        sha1 = "eb62d2adb15e4eaf4610c04afe1529384250abad";
+      };
+    };
+    "redis-parser-3.0.0" = {
+      name = "redis-parser";
+      packageName = "redis-parser";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz";
+        sha1 = "b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4";
+      };
+    };
+    "request-2.88.2" = {
+      name = "request";
+      packageName = "request";
+      version = "2.88.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
+        sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==";
+      };
+    };
+    "require-all-1.0.0" = {
+      name = "require-all";
+      packageName = "require-all";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/require-all/-/require-all-1.0.0.tgz";
+        sha1 = "8483708e7ce4c6dfad988b5080f97829b92d2227";
+      };
+    };
+    "rethinkdb-2.4.2" = {
+      name = "rethinkdb";
+      packageName = "rethinkdb";
+      version = "2.4.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rethinkdb/-/rethinkdb-2.4.2.tgz";
+        sha512 = "6DzwqEpFc8cqesAdo07a845oBRxLiHvWzopTKBo/uY2ypGWIsJQFJk3wjRDtSEhczxJqLS0jnf37rwgzYAw8NQ==";
+      };
+    };
+    "rimraf-2.4.5" = {
+      name = "rimraf";
+      packageName = "rimraf";
+      version = "2.4.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz";
+        sha1 = "ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da";
+      };
+    };
+    "safe-buffer-5.2.0" = {
+      name = "safe-buffer";
+      packageName = "safe-buffer";
+      version = "5.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz";
+        sha512 = "fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==";
+      };
+    };
+    "safe-json-stringify-1.2.0" = {
+      name = "safe-json-stringify";
+      packageName = "safe-json-stringify";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz";
+        sha512 = "gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==";
+      };
+    };
+    "safer-buffer-2.1.2" = {
+      name = "safer-buffer";
+      packageName = "safer-buffer";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
+        sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
+      };
+    };
+    "sax-1.2.4" = {
+      name = "sax";
+      packageName = "sax";
+      version = "1.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
+        sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
+      };
+    };
+    "semver-4.3.2" = {
+      name = "semver";
+      packageName = "semver";
+      version = "4.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz";
+        sha1 = "c7a07158a80bedd052355b770d82d6640f803be7";
+      };
+    };
+    "simple-cas-interface-1.0.2" = {
+      name = "simple-cas-interface";
+      packageName = "simple-cas-interface";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/simple-cas-interface/-/simple-cas-interface-1.0.2.tgz";
+        sha1 = "e347b0a7955b5254dae9727984368dd534cde8ec";
+      };
+    };
+    "slugg-0.1.2" = {
+      name = "slugg";
+      packageName = "slugg";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/slugg/-/slugg-0.1.2.tgz";
+        sha1 = "3a2a65baaf24c0f62eaac8acf243740a379072b5";
+      };
+    };
+    "split-1.0.1" = {
+      name = "split";
+      packageName = "split";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/split/-/split-1.0.1.tgz";
+        sha512 = "mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==";
+      };
+    };
+    "sshpk-1.16.1" = {
+      name = "sshpk";
+      packageName = "sshpk";
+      version = "1.16.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
+        sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
+      };
+    };
+    "starttls-0.2.1" = {
+      name = "starttls";
+      packageName = "starttls";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/starttls/-/starttls-0.2.1.tgz";
+        sha1 = "b98d3e5e778d46f199c843a64f889f0347c6d19a";
+      };
+    };
+    "string-width-2.1.1" = {
+      name = "string-width";
+      packageName = "string-width";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz";
+        sha512 = "nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==";
+      };
+    };
+    "string_decoder-0.10.31" = {
+      name = "string_decoder";
+      packageName = "string_decoder";
+      version = "0.10.31";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
+        sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
+      };
+    };
+    "strip-ansi-3.0.1" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
+        sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+      };
+    };
+    "strip-ansi-4.0.0" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz";
+        sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
+      };
+    };
+    "supports-color-2.0.0" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
+        sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
+      };
+    };
+    "through-2.3.8" = {
+      name = "through";
+      packageName = "through";
+      version = "2.3.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz";
+        sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
+      };
+    };
+    "topo-1.1.0" = {
+      name = "topo";
+      packageName = "topo";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz";
+        sha1 = "e9d751615d1bb87dc865db182fa1ca0a5ef536d5";
+      };
+    };
+    "topo-2.0.2" = {
+      name = "topo";
+      packageName = "topo";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz";
+        sha1 = "cd5615752539057c0dc0491a621c3bc6fbe1d182";
+      };
+    };
+    "tough-cookie-2.5.0" = {
+      name = "tough-cookie";
+      packageName = "tough-cookie";
+      version = "2.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
+        sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
+      };
+    };
+    "tunnel-agent-0.6.0" = {
+      name = "tunnel-agent";
+      packageName = "tunnel-agent";
+      version = "0.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+        sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+      };
+    };
+    "tweetnacl-0.14.5" = {
+      name = "tweetnacl";
+      packageName = "tweetnacl";
+      version = "0.14.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
+        sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+      };
+    };
+    "type-is-1.6.18" = {
+      name = "type-is";
+      packageName = "type-is";
+      version = "1.6.18";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz";
+        sha512 = "TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==";
+      };
+    };
+    "ueberdb2-0.3.8" = {
+      name = "ueberdb2";
+      packageName = "ueberdb2";
+      version = "0.3.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ueberdb2/-/ueberdb2-0.3.8.tgz";
+        sha512 = "eBjKyjQ3Ehk8phoC0ijnZD5RzJSE2wKg627hoEGowQrW+QcHwL5u2K/6pT+1wv6/PkC/VDth+b68ukG/VxrCTg==";
+      };
+    };
+    "uri-js-4.2.2" = {
+      name = "uri-js";
+      packageName = "uri-js";
+      version = "4.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz";
+        sha512 = "KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==";
+      };
+    };
+    "uuid-3.4.0" = {
+      name = "uuid";
+      packageName = "uuid";
+      version = "3.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
+        sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
+      };
+    };
+    "vasync-1.6.4" = {
+      name = "vasync";
+      packageName = "vasync";
+      version = "1.6.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz";
+        sha1 = "dfe93616ad0e7ae801b332a9d88bfc5cdc8e1d1f";
+      };
+    };
+    "verror-1.10.0" = {
+      name = "verror";
+      packageName = "verror";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
+        sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+      };
+    };
+    "verror-1.6.0" = {
+      name = "verror";
+      packageName = "verror";
+      version = "1.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz";
+        sha1 = "7d13b27b1facc2e2da90405eb5ea6e5bdd252ea5";
+      };
+    };
+    "wrappy-1.0.2" = {
+      name = "wrappy";
+      packageName = "wrappy";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
+        sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+      };
+    };
+    "xml2js-0.4.23" = {
+      name = "xml2js";
+      packageName = "xml2js";
+      version = "0.4.23";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz";
+        sha512 = "ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==";
+      };
+    };
+    "xmlbuilder-11.0.1" = {
+      name = "xmlbuilder";
+      packageName = "xmlbuilder";
+      version = "11.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz";
+        sha512 = "fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==";
+      };
+    };
+    "xtend-4.0.2" = {
+      name = "xtend";
+      packageName = "xtend";
+      version = "4.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz";
+        sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==";
+      };
+    };
+    "yallist-3.1.1" = {
+      name = "yallist";
+      packageName = "yallist";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz";
+        sha512 = "a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==";
+      };
+    };
+  };
+in
+{
+  ep_mypads = nodeEnv.buildNodePackage {
+    name = "ep_mypads";
+    packageName = "ep_mypads";
+    version = "1.7.16";
+    preRebuild = ''
+      patch -p1 < ${./fix_ldap.patch}
+    '';
+    src = fetchurl {
+      url = "https://registry.npmjs.org/ep_mypads/-/ep_mypads-1.7.16.tgz";
+      sha512 = "9byCSgC6Jc/0c1t/Wd+3rwtMEhXKLSWui9hI3ZacZzIf5oSwr2hcr+6W7l6xJIzdPN6jQDnA5WGi1fnX9fSjsQ==";
+    };
+    dependencies = [
+      sources."@types/ldapjs-1.0.7"
+      sources."@types/node-13.13.4"
+      sources."abstract-logging-1.0.0"
+      sources."addressparser-0.3.2"
+      sources."ajv-6.12.2"
+      sources."ansi-regex-3.0.0"
+      sources."ansi-styles-2.2.1"
+      sources."asap-2.0.6"
+      sources."asn1-0.2.3"
+      sources."assert-plus-1.0.0"
+      (sources."async-2.6.3" // {
+        dependencies = [
+          sources."lodash-4.17.15"
+        ];
+      })
+      sources."asynckit-0.4.0"
+      sources."aws-sign2-0.7.0"
+      sources."aws4-1.9.1"
+      sources."backoff-2.5.0"
+      sources."balanced-match-1.0.0"
+      sources."bcrypt-pbkdf-1.0.2"
+      sources."bcryptjs-2.4.3"
+      sources."bignumber.js-2.0.5"
+      sources."bluebird-2.11.0"
+      sources."body-parser-1.12.4"
+      sources."brace-expansion-1.1.11"
+      sources."browser-fingerprint-0.0.1"
+      sources."browser-request-0.3.3"
+      sources."buffer-equal-constant-time-1.0.1"
+      sources."buffer-writer-1.0.1"
+      sources."bufferjs-1.1.0"
+      (sources."bunyan-1.8.12" // {
+        dependencies = [
+          sources."moment-2.24.0"
+        ];
+      })
+      sources."bytes-1.0.0"
+      sources."caseless-0.12.0"
+      (sources."cassandra-driver-2.0.1" // {
+        dependencies = [
+          sources."async-0.9.2"
+        ];
+      })
+      (sources."chalk-1.1.3" // {
+        dependencies = [
+          sources."ansi-regex-2.1.1"
+          sources."strip-ansi-3.0.1"
+        ];
+      })
+      sources."channels-0.0.4"
+      sources."cli-progress-2.1.1"
+      (sources."cloudant-follow-0.17.0" // {
+        dependencies = [
+          sources."debug-3.2.6"
+          sources."ms-2.1.2"
+        ];
+      })
+      sources."colors-1.4.0"
+      sources."combined-stream-1.0.8"
+      sources."commander-2.20.3"
+      sources."concat-map-0.0.1"
+      sources."content-type-1.0.4"
+      sources."cookie-0.1.2"
+      sources."cookie-parser-1.3.4"
+      sources."cookie-signature-1.0.6"
+      sources."core-js-1.2.7"
+      sources."core-util-is-1.0.2"
+      sources."cuid-1.3.8"
+      sources."dashdash-1.14.1"
+      sources."debug-2.2.0"
+      sources."delayed-stream-1.0.0"
+      sources."denque-1.4.1"
+      sources."depd-1.0.1"
+      sources."dirty-0.9.9"
+      sources."dtrace-provider-0.8.8"
+      sources."ecc-jsbn-0.1.2"
+      sources."ecdsa-sig-formatter-1.0.11"
+      sources."ee-first-1.1.0"
+      sources."elasticsearch-11.0.1"
+      sources."emailjs-0.3.16"
+      (sources."encoding-0.1.12" // {
+        dependencies = [
+          sources."iconv-lite-0.4.24"
+        ];
+      })
+      sources."errs-0.3.2"
+      sources."escape-string-regexp-1.0.5"
+      sources."extend-3.0.2"
+      sources."extsprintf-1.2.0"
+      sources."fast-deep-equal-3.1.1"
+      sources."fast-json-stable-stringify-2.1.0"
+      sources."forever-agent-0.6.1"
+      sources."form-data-2.3.3"
+      sources."generic-pool-2.4.3"
+      sources."getpass-0.1.7"
+      sources."glob-6.0.4"
+      sources."har-schema-2.0.0"
+      sources."har-validator-5.1.3"
+      (sources."has-ansi-2.0.0" // {
+        dependencies = [
+          sources."ansi-regex-2.1.1"
+        ];
+      })
+      sources."hoek-2.16.3"
+      sources."http-signature-1.2.0"
+      sources."iconv-lite-0.4.8"
+      sources."inflight-1.0.6"
+      sources."inherits-2.0.4"
+      sources."is-fullwidth-code-point-2.0.0"
+      sources."is-typedarray-1.0.0"
+      sources."isarray-0.0.1"
+      sources."isemail-1.2.0"
+      sources."isstream-0.1.2"
+      sources."items-2.1.2"
+      (sources."joi-6.10.1" // {
+        dependencies = [
+          sources."moment-2.24.0"
+        ];
+      })
+      sources."js-base64-2.1.9"
+      sources."js-cookie-2.2.1"
+      sources."jsbn-0.1.1"
+      sources."json-beautify-1.1.1"
+      sources."json-schema-0.2.3"
+      sources."json-schema-traverse-0.4.1"
+      sources."json-stringify-safe-5.0.1"
+      sources."jsonminify-0.4.1"
+      sources."jsonwebtoken-5.0.5"
+      (sources."jsprim-1.4.1" // {
+        dependencies = [
+          sources."extsprintf-1.3.0"
+        ];
+      })
+      sources."jwa-1.4.1"
+      sources."jws-3.2.2"
+      (sources."ldap-filter-0.2.2" // {
+        dependencies = [
+          sources."assert-plus-0.1.5"
+        ];
+      })
+      sources."ldapauth-fork-4.3.3"
+      sources."ldapjs-1.0.2"
+      sources."lodash-3.10.1"
+      sources."lodash-compat-3.10.2"
+      sources."lodash.isempty-4.4.0"
+      sources."lodash.once-4.1.1"
+      sources."long-2.4.0"
+      sources."lru-cache-5.1.1"
+      sources."media-typer-0.3.0"
+      sources."mime-db-1.44.0"
+      sources."mime-types-2.1.27"
+      (sources."mimelib-0.2.14" // {
+        dependencies = [
+          sources."addressparser-0.2.1"
+        ];
+      })
+      sources."minimatch-3.0.4"
+      sources."minimist-1.2.5"
+      sources."mkdirp-0.5.5"
+      sources."moment-1.7.0"
+      sources."ms-0.7.1"
+      sources."mv-2.1.1"
+      sources."mysql-2.6.1"
+      sources."nan-2.14.1"
+      sources."nano-6.4.4"
+      sources."ncp-2.0.0"
+      sources."node-fingerprint-0.0.2"
+      sources."oauth-sign-0.9.0"
+      sources."object-assign-4.1.0"
+      sources."on-finished-2.2.1"
+      sources."once-1.4.0"
+      sources."packet-reader-0.2.0"
+      sources."passport-0.2.2"
+      (sources."passport-jwt-3.0.1" // {
+        dependencies = [
+          sources."jsonwebtoken-7.4.3"
+          sources."ms-2.1.2"
+        ];
+      })
+      sources."passport-strategy-1.0.0"
+      sources."path-is-absolute-1.0.1"
+      sources."pause-0.0.1"
+      sources."performance-now-2.1.0"
+      sources."pg-6.1.3"
+      sources."pg-connection-string-0.1.3"
+      sources."pg-int8-1.0.1"
+      sources."pg-pool-1.8.0"
+      sources."pg-types-1.13.0"
+      sources."pgpass-1.0.2"
+      sources."postgres-array-1.0.3"
+      sources."postgres-bytea-1.0.0"
+      sources."postgres-date-1.0.5"
+      sources."postgres-interval-1.2.0"
+      sources."precond-0.2.3"
+      sources."promise-7.3.1"
+      sources."psl-1.8.0"
+      sources."punycode-2.1.1"
+      sources."qs-2.4.2"
+      (sources."raw-body-2.0.2" // {
+        dependencies = [
+          sources."bytes-2.1.0"
+        ];
+      })
+      sources."readable-stream-1.1.14"
+      sources."redis-3.0.2"
+      sources."redis-commands-1.5.0"
+      sources."redis-errors-1.2.0"
+      sources."redis-parser-3.0.0"
+      (sources."request-2.88.2" // {
+        dependencies = [
+          sources."qs-6.5.2"
+        ];
+      })
+      sources."require-all-1.0.0"
+      sources."rethinkdb-2.4.2"
+      sources."rimraf-2.4.5"
+      sources."safe-buffer-5.2.0"
+      sources."safe-json-stringify-1.2.0"
+      sources."safer-buffer-2.1.2"
+      sources."sax-1.2.4"
+      sources."semver-4.3.2"
+      (sources."simple-cas-interface-1.0.2" // {
+        dependencies = [
+          sources."hoek-4.2.1"
+          sources."isemail-2.2.1"
+          sources."joi-10.6.0"
+          sources."topo-2.0.2"
+        ];
+      })
+      sources."slugg-0.1.2"
+      sources."split-1.0.1"
+      sources."sshpk-1.16.1"
+      sources."starttls-0.2.1"
+      sources."string-width-2.1.1"
+      sources."string_decoder-0.10.31"
+      sources."strip-ansi-4.0.0"
+      sources."supports-color-2.0.0"
+      sources."through-2.3.8"
+      sources."topo-1.1.0"
+      sources."tough-cookie-2.5.0"
+      sources."tunnel-agent-0.6.0"
+      sources."tweetnacl-0.14.5"
+      sources."type-is-1.6.18"
+      (sources."ueberdb2-0.3.8" // {
+        dependencies = [
+          sources."async-0.1.15"
+        ];
+      })
+      sources."uri-js-4.2.2"
+      sources."uuid-3.4.0"
+      (sources."vasync-1.6.4" // {
+        dependencies = [
+          sources."verror-1.6.0"
+        ];
+      })
+      sources."verror-1.10.0"
+      sources."wrappy-1.0.2"
+      sources."xml2js-0.4.23"
+      sources."xmlbuilder-11.0.1"
+      sources."xtend-4.0.2"
+      sources."yallist-3.1.1"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Groups and private pads for etherpad";
+      license = "Apache-2.0";
+    };
+    production = true;
+    bypassCache = true;
+    reconstructLock = true;
+  };
+}
index b584d43d1e60e7b5172a97c8090f9b6c62c28cc6..8f7656f06eac245436bd5e58e4c84bf0e6fd3c94 100644 (file)
@@ -15,6 +15,9 @@ in
       sha512 = "uUfpiUWO0xLhN2R89jMPUYD+vhyiPyH6b8QL7y+0bKiOYOqf9l/rgXwTLuf4iB3p0J1/oVXhgSkG0dlZ35bUWw==";
     };
     buildInputs = globalBuildInputs;
+    preRebuild = ''
+      sed -i -e "s/is_old_ie = browser.msie.*$/is_old_ie = false;/" static/js/postAceInit.js
+    '';
     meta = {
       description = "Scroll to a specific line number based on a parameter of lineNumber in the URL IE http://test.com/p/foo#lineNumber=10 -- Users can click on the line number to get a link";
       homepage = "https://github.com/johnmclear/ep_scrollto#readme";
@@ -23,4 +26,4 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
-}
\ No newline at end of file
+}