diff --git a/pkgs/servers/web-apps/cryptpad/bower-packages.nix b/pkgs/servers/web-apps/cryptpad/bower-packages.nix index be0c3ab72c75..83c707472931 100644 --- a/pkgs/servers/web-apps/cryptpad/bower-packages.nix +++ b/pkgs/servers/web-apps/cryptpad/bower-packages.nix @@ -1,42 +1,40 @@ # Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix) { fetchbower, buildEnv }: buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [ - (fetchbower "jquery" "2.1.0" "~2.1.0" "02kwvz93vzpv10qnp7s0dz3al0jh77awwrizb6wadsvgifxssnlr") (fetchbower "jquery" "2.2.4" "2.2.4" "0kaln93pzjlr4vqf2zvsm9dwgjkrii9xlsqg48hc1vs16cl109rn") (fetchbower "tweetnacl" "0.12.2" "0.12.2" "1lfzbfrdaly3zyzbcp1p53yhxlrx56k8x04q924kg7l52gblm65g") (fetchbower "components-font-awesome" "4.7.0" "^4.6.3" "1w27im6ayjrbgjqa0i49ml5d3wy4ld40h9b29hz9myv77bpx4lg1") (fetchbower "ckeditor" "4.14.0" "4.14.0" "0lw9q0k8c0jlxvf35vrccab9c3c8rgpc6x66czj9si8yy2lyliyp") - (fetchbower "codemirror" "5.56.0+components1" "^5.19.0" "0fv8rxw6dspyv4bl6p2aka57544f45527rallnhnm5scv77qnakm") + (fetchbower "codemirror" "5.61.1" "^5.19.0" "1abm1fcps86y2qm033wa96pd6ixf9w01vlhly5i51j0j94arnz4g") (fetchbower "requirejs" "2.3.5" "2.3.5" "05lyvgz914h2w08r24rk0vkk3yxmqrvlg7j3i5av9ffkg9lpzsli") (fetchbower "marked" "1.1.0" "1.1.0" "1sdgqw9iki9c1pfm4c5h6c956mchbip2jywjrcmrlb75k53flsjz") (fetchbower "rangy" "rangy-release#1.3.0" "rangy-release#~1.3.0" "13x3wci003p8jyv2ncir0k23bxckx99b3555r0zvgmlwycg7w0zv") (fetchbower "json.sortify" "2.1.0" "~2.1.0" "1rz9xz0gnm4ak31n10vhslqsw8fw493gjylwj8xsy3bxqq1ygpnh") (fetchbower "secure-fabric.js" "secure-v1.7.9" "secure-v1.7.9" "1l56mk7hbnsm9cdg5zdcmg95p7a9w96dq0bbl8fp11vs0awjil7a") (fetchbower "hyperjson" "1.4.0" "~1.4.0" "1n68ls3x4lyhg1yy8i4q3xkgh5xqpyakf45sny4x91mkr68x4bd9") - (fetchbower "chainpad-crypto" "0.2.4" "^0.2.0" "0sqqc2j0pc34ig6319n18i85j03hibqkhz3cbr70vbd8x43vfzby") - (fetchbower "chainpad-listmap" "0.9.0" "^0.9.0" "173yr5a6zxq7nb3fha6f1ajv2vy0mvqwmm949ww7ihvrhh7cd0f5") - (fetchbower "chainpad" "5.2.2" "^5.2.0" "1rmh039bqk11xnnh99sqrqksr4idly75y5q4f5wyl9cg4slsqrdp") + (fetchbower "chainpad-crypto" "0.2.6" "^0.2.0" "0h6ibv6gcym7mm080swdw4l6l159xjmxgqnahyxw3aydha5cj1z0") + (fetchbower "chainpad-listmap" "0.10.2" "^0.10.0" "03j3qws0icam4c0yqrz7f6maf1dxhlc56hc6csr2d9dx0wshd57s") + (fetchbower "chainpad" "5.2.4" "^5.2.0" "1f4nap0r8w50qpmjdfhhjhpz5xcl0n4zaxxnav1qaxi5j6dyg8h6") (fetchbower "file-saver" "1.3.1" "1.3.1" "065nzkvdiicxnw06z1sjz1sbp9nyis8z839hv6ng1fk25dc5kvkg") (fetchbower "alertifyjs" "1.0.11" "1.0.11" "0v7323bzq90k35shm3h6azj4wd9la3kbi1va1pw4qyvndkwma69l") (fetchbower "scrypt-async" "1.2.0" "1.2.0" "0d076ax708p9b8hcmk4f82j925nlnm0hmp0ni45ql37g7iirfpyv") (fetchbower "require-css" "0.1.10" "0.1.10" "106gz9i76v71q9zx2pnqkkj342m630lvssnw54023a0ljc0gqcwq") (fetchbower "less" "3.7.1" "3.7.1" "1n7ps4xlbrc9m63b3q62mg3p6i7d5hwchhpjshb0drzj5crvz556") - (fetchbower "bootstrap" "3.1.1" "~3.1.1" "06bhjwa8p7mzbpr3jkgydd804z1nwrkdql66h7jkfml99psv9811") - (fetchbower "bootstrap" "4.5.0" "^v4.0.0" "0cfdn6z8jwx6y8lbbq6xpkfhq2vra0i84nkj9ji2bil1fzgzi40f") + (fetchbower "bootstrap" "4.6.0" "^v4.0.0" "1pp2n88pkms25p7mbna7vxxl5mkpdn8nvnfzwcwpp6b0871njmr6") (fetchbower "diff-dom" "2.1.1" "2.1.1" "0nrn6xqlhp0p5ixjxdk8qg3939crkggh1l8swd20d7bsz186l5f1") (fetchbower "nthen" "0.1.7" "0.1.7" "03yap5ildigaw4rwxmxs37pcwhq415iham8w39zd56ka98gpfxa5") (fetchbower "open-sans-fontface" "1.4.2" "^1.4.2" "0ksav1fcq640fmdz49ra4prwsrrfj35y2p4shx1jh1j7zxd044nf") - (fetchbower "bootstrap-tokenfield" "0.12.1" "^0.12.1" "0ib1v5k8h360sp19yiy7q92rfaz2554fvwwg2ixmxn01ydqlprw6") - (fetchbower "localforage" "1.8.1" "^1.5.2" "0ci265385racnxvn4g1n672yaxi47msw6k042nxdb5vlpf5g327j") + (fetchbower "bootstrap-tokenfield" "0.12.1" "0.12.1" "1dh791s6ih8bf9ihck9n39h68c273jb3lg4mqk94bvqraz45fvwx") + (fetchbower "localforage" "1.9.0" "^1.5.2" "18ds5427gaschld5afwi128hqy8kysa1b1ckbrzbmqz8xnlshmc2") (fetchbower "html2canvas" "0.4.1" "^0.4.1" "0yg7y90nav068q0i5afc2c221zkddpf28hi0hwc46cawx4180c69") (fetchbower "croppie" "2.6.5" "^2.5.0" "1j1v5620zi13ad42r358i4ay891abwn6nz357484kgq2bgjj6ccx") - (fetchbower "sortablejs" "1.10.2" "^1.6.0" "10q4gyblhjy7w51clr0k9j7h722l4ybzn5535givwpmp6xagv11v") + (fetchbower "sortablejs" "1.14.0" "^1.6.0" "104d688lrbwxi3hnfr4q169850ffyfv1s8qnycqxhx0zfh3887m0") (fetchbower "saferphore" "0.0.1" "^0.0.1" "1wfr9wpbm3lswmvy2p0247ydb108h4qh5s286py89k871qh6jwdi") - (fetchbower "jszip" "Stuk/jszip#3.5.0" "Stuk/jszip#^3.1.5" "1ra19d82cq1hrnbw88l8c61bs12kpgxvbfiiwpfi8fhy0l8hcsvk") + (fetchbower "jszip" "Stuk/jszip#3.7.1" "Stuk/jszip#^3.1.5" "0lzq1zd2glvfh3wwj73c9sffas56ql5472yj1cwq3g7iva5iliwq") (fetchbower "requirejs-plugins" "1.0.3" "^1.0.3" "00s3sdz1ykygx5shldwhhhybwgw7c99vkqd94i5i5x0gl97ifxf5") (fetchbower "dragula.js" "3.7.2" "3.7.2" "0dbkmrl8bcxiplprmmp9fj96ri5nahb2ql8cc7zwawncv0drvlh0") (fetchbower "MathJax" "3.0.5" "3.0.5" "087a9av15qj43m8pr3b9g59ncmydhmg40m6dfzsac62ykianh2a0") - (fetchbower "chainpad-netflux" "0.11.2" "^0.11.0" "1dqfricbm6s8iv7w1bsx1700m5cpk5rk1f4spqv0fqyf6mdz366v") - (fetchbower "netflux-websocket" "0.1.20" "^0.1.20" "1xwqq7nw7fmhglndbplarkdzxfmkq831aqs8nm6qj0hz2ggbibhz") + (fetchbower "chainpad-netflux" "0.12.9" "^0.12.0" "1b2jkfl354gs9iy05i6db9g0hnngacxd2wdv59lc0icbmx62fpvi") + (fetchbower "netflux-websocket" "0.1.21" "^0.1.20" "13ia8cqipq1jnyzzxwf9yy91gzwnwb2g5kzb6l8id5gdr415q5yn") (fetchbower "es6-promise" "3.3.1" "^3.2.2" "0ai6z5admfs84fdx6663ips49kqgz4x68ays78cic0xfb7pp6vcz") ]; } diff --git a/pkgs/servers/web-apps/cryptpad/default.nix b/pkgs/servers/web-apps/cryptpad/default.nix index abd20d644990..0d655ac5322d 100644 --- a/pkgs/servers/web-apps/cryptpad/default.nix +++ b/pkgs/servers/web-apps/cryptpad/default.nix @@ -2,6 +2,7 @@ , pkgs , lib , buildBowerComponents +, fetchbower , fetchurl , nodejs }: @@ -12,14 +13,21 @@ let inherit (stdenv.hostPlatform) system; }; - bowerPackages = buildBowerComponents { + bowerPackages = (buildBowerComponents { name = "${cryptpad.name}-bower-packages"; - # this list had to be tweaked by hand: - # * add the second jquery ~2.1.0 entry - # * add the second bootstrap ~3.1.1 entry generated = ./bower-packages.nix; src = cryptpad.src; - }; + }).overrideAttrs (old: { + bowerPackages = old.bowerPackages.override (old_: { + # add missing dependencies: + # * add the second jquery ~2.1.0 entry + # * add the second bootstrap ~3.1.1 entry + paths = old_.paths ++ [ + (fetchbower "jquery" "2.1.0" "~2.1.0" "02kwvz93vzpv10qnp7s0dz3al0jh77awwrizb6wadsvgifxssnlr") + (fetchbower "bootstrap" "3.1.1" "~3.1.1" "06bhjwa8p7mzbpr3jkgydd804z1nwrkdql66h7jkfml99psv9811") + ]; + }); + }); # find an element in an attribute set findValue = pred: default: set: diff --git a/pkgs/servers/web-apps/cryptpad/generate.sh b/pkgs/servers/web-apps/cryptpad/generate.sh index 697b5a74a08a..dc4e230f316b 100755 --- a/pkgs/servers/web-apps/cryptpad/generate.sh +++ b/pkgs/servers/web-apps/cryptpad/generate.sh @@ -1,11 +1,16 @@ #!/usr/bin/env nix-shell -#! nix-shell -i bash -I nixpkgs=../../../.. -p nodePackages.node2nix nodePackages.bower2nix +#! nix-shell -i bash -I nixpkgs=../../../.. -p nodePackages.node2nix -p nix + +cryptpadSrc=$(nix eval '(import ../../../.. {}).cryptpad.src' --raw) +echo "cryptpad src: $cryptpadSrc" + +nix-shell -I nixpkgs=https://github.com/nixos/nixpkgs/tarball/18.03 -p nodePackages.bower2nix --run "bower2nix $cryptpadSrc/bower.json bower-packages.nix" + + set -euo pipefail node2nix --nodejs-12 \ --input node-packages.json \ --output node-packages-generated.nix \ --composition node-packages.nix \ - --node-env ../../../development/node-packages/node-env.nix \ - -# TODO: bower2nix > bower-packages.nix + --node-env ../../../development/node-packages/node-env.nix diff --git a/pkgs/servers/web-apps/cryptpad/node-packages-generated.nix b/pkgs/servers/web-apps/cryptpad/node-packages-generated.nix index 47e64e9d911e..cbc12d113cfb 100644 --- a/pkgs/servers/web-apps/cryptpad/node-packages-generated.nix +++ b/pkgs/servers/web-apps/cryptpad/node-packages-generated.nix @@ -4,6 +4,15 @@ let sources = { + "@mcrowe/minibloom-0.2.0" = { + name = "_at_mcrowe_slash_minibloom"; + packageName = "@mcrowe/minibloom"; + version = "0.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@mcrowe/minibloom/-/minibloom-0.2.0.tgz"; + sha1 = "1bed96aec18388198da37443899b2c3ff5948053"; + }; + }; "accepts-1.3.7" = { name = "accepts"; packageName = "accepts"; @@ -49,22 +58,22 @@ let sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048"; }; }; - "chainpad-crypto-0.2.5" = { + "chainpad-crypto-0.2.6" = { name = "chainpad-crypto"; packageName = "chainpad-crypto"; - version = "0.2.5"; + version = "0.2.6"; src = fetchurl { - url = "https://registry.npmjs.org/chainpad-crypto/-/chainpad-crypto-0.2.5.tgz"; - sha512 = "K9vRsAspuX+uU1goXPz0CawpLIaOHq+1JP3WfDLqaz67LbCX/MLIUt9aMcSeIJcwZ9uMpqnbMGRktyVPoz6MCA=="; + url = "https://registry.npmjs.org/chainpad-crypto/-/chainpad-crypto-0.2.6.tgz"; + sha512 = "yk7bBj22rs9PaX6LiqQxiw+Vj/afBStsNP1xP/B4Uh9a8iyJ7JrSZJ2Hj3d6fyqxJlBrMAX82Aj5PCZb5dzzHw=="; }; }; - "chainpad-server-4.0.9" = { + "chainpad-server-5.1.0" = { name = "chainpad-server"; packageName = "chainpad-server"; - version = "4.0.9"; + version = "5.1.0"; src = fetchurl { - url = "https://registry.npmjs.org/chainpad-server/-/chainpad-server-4.0.9.tgz"; - sha512 = "8h1W41ktE05TM6LuXrklpW2TUxWeNyIDiRaQygKsXaA/7pyJxF7+AmPVS+xW0c31VkHjQDPiaMzPoxhcxXnIyA=="; + url = "https://registry.npmjs.org/chainpad-server/-/chainpad-server-5.1.0.tgz"; + sha512 = "BdjgOOLTXXo1EjQ7lURDe7oqsqfQISNvwhILfp3K3diY2K1hxpPLbjYzOSgxNOTADeOAff0xnInR5eUCESVWaQ=="; }; }; "content-disposition-0.5.2" = { @@ -184,13 +193,13 @@ let sha512 = "Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg=="; }; }; - "forwarded-0.1.2" = { + "forwarded-0.2.0" = { name = "forwarded"; packageName = "forwarded"; - version = "0.1.2"; + version = "0.2.0"; src = fetchurl { - url = "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz"; - sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84"; + url = "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz"; + sha512 = "buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="; }; }; "fresh-0.5.2" = { @@ -229,13 +238,13 @@ let sha512 = "+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA=="; }; }; - "graceful-fs-4.2.4" = { + "graceful-fs-4.2.8" = { name = "graceful-fs"; packageName = "graceful-fs"; - version = "4.2.4"; + version = "4.2.8"; src = fetchurl { - url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz"; - sha512 = "WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="; + url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz"; + sha512 = "qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="; }; }; "http-errors-1.6.3" = { @@ -337,22 +346,22 @@ let sha512 = "KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="; }; }; - "mime-db-1.45.0" = { + "mime-db-1.49.0" = { name = "mime-db"; packageName = "mime-db"; - version = "1.45.0"; + version = "1.49.0"; src = fetchurl { - url = "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz"; - sha512 = "CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w=="; + url = "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz"; + sha512 = "CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA=="; }; }; - "mime-types-2.1.28" = { + "mime-types-2.1.32" = { name = "mime-types"; packageName = "mime-types"; - version = "2.1.28"; + version = "2.1.32"; src = fetchurl { - url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz"; - sha512 = "0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ=="; + url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz"; + sha512 = "hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A=="; }; }; "ms-2.0.0" = { @@ -373,13 +382,13 @@ let sha512 = "hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="; }; }; - "netflux-websocket-0.1.20" = { + "netflux-websocket-0.1.21" = { name = "netflux-websocket"; packageName = "netflux-websocket"; - version = "0.1.20"; + version = "0.1.21"; src = fetchurl { - url = "https://registry.npmjs.org/netflux-websocket/-/netflux-websocket-0.1.20.tgz"; - sha512 = "svFkw4ol4gmkcXKnx5kF/8tR9mmtTCDzUlLy4mSlcNl/4iWlbDmgwp/+aJ3nqtv8fg12m+DAFGX2+fbC0//dcg=="; + url = "https://registry.npmjs.org/netflux-websocket/-/netflux-websocket-0.1.21.tgz"; + sha512 = "Zjl5lefg8urC0a0T7YCPGiUgRsISZBsTZl1STylmQz8Bq4ohcZ8cP3r6VoCpeVcvJ1Y/e3ZCXPxndWlNP9Jfug=="; }; }; "nthen-0.1.8" = { @@ -418,13 +427,13 @@ let sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c"; }; }; - "proxy-addr-2.0.6" = { + "proxy-addr-2.0.7" = { name = "proxy-addr"; packageName = "proxy-addr"; - version = "2.0.6"; + version = "2.0.7"; src = fetchurl { - url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz"; - sha512 = "dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw=="; + url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz"; + sha512 = "llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="; }; }; "pull-stream-3.6.14" = { @@ -647,27 +656,28 @@ let }; in { - "cryptpad-git+https://github.com/xwiki-labs/cryptpad.git#3.20.1" = nodeEnv.buildNodePackage { + "cryptpad-git+https://github.com/xwiki-labs/cryptpad.git#4.9.0" = nodeEnv.buildNodePackage { name = "cryptpad"; packageName = "cryptpad"; - version = "3.20.1"; + version = "4.9.0"; src = fetchgit { url = "https://github.com/xwiki-labs/cryptpad.git"; - rev = "9bc27d7d0d50d17c345bd545a45341a05293c558"; - sha256 = "4a1fc833b38b2097741500cef38c6b04f5b752c21736e95eb492c33012016332"; + rev = "b1281fb4abd14e9758d58df4801e0a00eda7bc44"; + sha256 = "ed2d0e2520645fccdada7fa5f25bb878c0ee0e61d6c81a98c18906c12750578c"; }; dependencies = [ + sources."@mcrowe/minibloom-0.2.0" sources."accepts-1.3.7" sources."array-flatten-1.1.1" sources."async-limiter-1.0.1" sources."body-parser-1.18.3" sources."bytes-3.0.0" - (sources."chainpad-crypto-0.2.5" // { + (sources."chainpad-crypto-0.2.6" // { dependencies = [ sources."tweetnacl-git+https://github.com/dchest/tweetnacl-js.git#v0.12.2" ]; }) - sources."chainpad-server-4.0.9" + sources."chainpad-server-5.1.0" sources."content-disposition-0.5.2" sources."content-type-1.0.4" sources."cookie-0.3.1" @@ -681,12 +691,12 @@ in sources."etag-1.8.1" sources."express-4.16.4" sources."finalhandler-1.1.1" - sources."forwarded-0.1.2" + sources."forwarded-0.2.0" sources."fresh-0.5.2" sources."fs-extra-7.0.1" sources."gar-1.0.4" sources."get-folder-size-2.0.1" - sources."graceful-fs-4.2.4" + sources."graceful-fs-4.2.8" sources."http-errors-1.6.3" sources."iconv-lite-0.4.23" sources."inherits-2.0.3" @@ -698,16 +708,16 @@ in sources."merge-descriptors-1.0.1" sources."methods-1.1.2" sources."mime-1.4.1" - sources."mime-db-1.45.0" - sources."mime-types-2.1.28" + sources."mime-db-1.49.0" + sources."mime-types-2.1.32" sources."ms-2.0.0" sources."negotiator-0.6.2" - sources."netflux-websocket-0.1.20" + sources."netflux-websocket-0.1.21" sources."nthen-0.1.8" sources."on-finished-2.3.0" sources."parseurl-1.3.3" sources."path-to-regexp-0.1.7" - sources."proxy-addr-2.0.6" + sources."proxy-addr-2.0.7" sources."pull-stream-3.6.14" sources."qs-6.5.2" sources."range-parser-1.2.1" diff --git a/pkgs/servers/web-apps/cryptpad/node-packages.json b/pkgs/servers/web-apps/cryptpad/node-packages.json index 07e02a1a0a2e..fde63614a46a 100644 --- a/pkgs/servers/web-apps/cryptpad/node-packages.json +++ b/pkgs/servers/web-apps/cryptpad/node-packages.json @@ -1,3 +1,3 @@ [ - { "cryptpad": "git+https://github.com/xwiki-labs/cryptpad.git#3.20.1" } + { "cryptpad": "git+https://github.com/xwiki-labs/cryptpad.git#4.9.0" } ]