1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 10:11:08 +01:00

feat(zaatar): mpd.fm

This commit is contained in:
2021-01-26 23:05:16 +01:00
parent 7c1ca72a29
commit 422f2b8676
8 changed files with 2423 additions and 31 deletions

View File

@@ -1,38 +1,74 @@
{ config, pkgs, lib, ... }:
let
playlists = import <niveum/lib/playlists.nix>;
playlistFiles = lib.mapAttrs (name: {tracks, ...}: pkgs.writeText "${name}.m3u" (builtins.concatStringsSep "\n" (map ({url, ...}: url) tracks))) playlists;
linkPlaylist = name: file: ''
ln -sfn "${toString file}" "/var/lib/mpd/playlists/${name}.m3u"
'';
linkPlaylists = lib.concatStringsSep "\n" (lib.mapAttrsToList linkPlaylist playlistFiles);
streams = import <niveum/lib/streams.nix> { inherit lib; };
in
{
system.activationScripts.mpd-playlists = ''
rm -rf /var/lib/mpd/playlists
install -d /var/lib/mpd/playlists
${linkPlaylists}
'';
imports = [ <niveum/modules/mpd-fm.nix> ];
environment.systemPackages = [ pkgs.ncmpcpp pkgs.mpc_cli ];
services.mpd.enable = true;
services.ympd.enable = true;
services.mpd-fm = {
enable = true;
stationsFile = "/etc/mpd-fm/stations.json";
webPort = 8080;
};
services.nginx.virtualHosts.default = {
locations."^~ /ympd/" = {
proxyPass = "http://127.0.0.1:${config.services.ympd.webPort}/";
systemd.services.antenne-asb =
let
stations = lib.lists.imap0 (id: {desc ? "", logo ? "https://picsum.photos/seed/${builtins.hashString "md5" stream}/300", stream, station}: { inherit id desc logo stream station; }) streams;
stationsJson = pkgs.writeText "stations.json" (builtins.toJSON stations);
in {
wantedBy = [ "mpd-fm.service" ];
startAt = "hourly";
script = ''
mkdir -p /etc/mpd-fm
antenne_asb_url=$(
${pkgs.curl}/bin/curl -sS 'https://www.caster.fm/widgets/em_player.php?jsinit=true&uid=529295&t=blue&c=' \
| grep streamUrl \
| sed ${lib.escapeShellArg "s/^.*'\\([^']*\\)'.*/\\1/"}
)
${pkgs.jq}/bin/jq "map(if .station == \"Antenne ASB\" then .stream |= \"$antenne_asb_url\" else . end)" < ${stationsJson} > /etc/mpd-fm/stations.json
'';
};
services.mpd.enable = true;
services.nginx = {
upstreams."mpd-fm-socket" = {
extraConfig = ''
auth_basic "Restricted Content";
auth_basic_user_file ${pkgs.writeText "ympd-password" "dj:$apr1$1ogLNSki$37uGV8iqjWEYEwtY4iq3F1"};
''; # generate password hash with `openssl passwd -apr1`
server 127.0.0.1:${toString config.services.mpd-fm.webPort};
'';
};
appendHttpConfig = ''
map $http_upgrade $connection_upgrade {
default upgrade;
''' close;
}
'';
virtualHosts.default = {
basicAuth.dj = lib.strings.fileContents <system-secrets/mpd-web.key>;
locations."/" = {
proxyPass = "http://mpd-fm-socket";
extraConfig = ''
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
''; # generate password hash with `openssl passwd -apr1`
};
};
};
/*
# dont let anyone outside localhost or local network in
networking.firewall.extraCommands = let ympdPort = config.services.ympd.webPort; in ''
${pkgs.iptables}/bin/iptables -A INPUT -p tcp --dport ${ympdPort} -s 192.168.0.0/16 -j ACCEPT
${pkgs.iptables}/bin/iptables -A INPUT -p tcp --dport ${ympdPort} -s 127.0.0.0/8 -j ACCEPT
${pkgs.iptables}/bin/iptables -A INPUT -p tcp --dport ${ympdPort} -j DROP
networking.firewall.extraCommands =
let
mpd-fm-port = toString config.services.mpd-fm.webPort;
in ''
${pkgs.iptables}/bin/iptables -A INPUT -p tcp --dport ${mpd-fm-port} -s 192.168.0.0/16 -j ACCEPT
${pkgs.iptables}/bin/iptables -A INPUT -p tcp --dport ${mpd-fm-port} -s 10.243.2.4 -j ACCEPT
${pkgs.iptables}/bin/iptables -A INPUT -p tcp --dport ${mpd-fm-port} -s 127.0.0.0/8 -j ACCEPT
${pkgs.iptables}/bin/iptables -A INPUT -p tcp --dport ${mpd-fm-port} -j DROP
'';
*/
}

View File

@@ -1,7 +1,7 @@
{ pkgs, config, lib, ... }:
let
tunerHTML = pkgs.callPackage <niveum/packages/tuner.nix> {
playlists = import <niveum/lib/playlists.nix>;
playlists = import <niveum/lib/playlists.nix> { inherit lib; };
};
in
{

View File

@@ -1,5 +1,6 @@
{ lib }:
let
di-fm-key = builtins.readFile <secrets/di.fm/key>;
di-fm-key = lib.strings.fileContents <secrets/di.fm/key>;
soma-fm = name: {
url = "http://ice1.somafm.com/${name}-128-aac";
@@ -57,13 +58,15 @@ in
provider = "lassulus";
}
{
url = "https://streamer.radio.co/s2c3cc784b/listen";
name = "Radio";
provider = "electroswing-radio.com";
url = "http://1.ice1.firststreaming.com/kkjz_fm.aac";
name = "KJazz 88.1";
provider = "California State University";
}
{
url = "http://162.244.80.20:6948";
name = "Cool Jazz Florida";
provider = "cooljazzflorida.com";
}
(rautemusik "study")
(big-fm "reggaevibes")
(big-fm "sunsetlounge")
(di-fm "ambient")
(di-fm "chilledm")
(di-fm "chillhop")
@@ -100,6 +103,8 @@ in
(soma-fm "sf1033") # Ambient music mixed with the sounds of San Francisco public safety radio traffic.
(caster-fm "TODO" "noasrv" 10182) # https://github.com/cccruzr/albumsyoumusthear/blob/7e00baf575e4d357cd275d54d1aeb717321141a8/HLS/IBERO_90_1.m3u
(caster-fm "TODO" "shaincast" 20866) # https://github.com/cccruzr/albumsyoumusthear/blob/7e00baf575e4d357cd275d54d1aeb717321141a8/HLS/IBERO_90_1.m3u
(big-fm "reggaevibes")
(big-fm "sunsetlounge")
];
};
@@ -276,6 +281,11 @@ in
name = "Hindustani";
url = "http://94.23.148.11:8058/";
}
{
url = "http://188.247.86.67:8008";
name = "Jordanian";
provider = "Rotana Tarab";
}
(caster-fm "Sitha FM" "shaincast" 48148)
(radiosai "Asia" 8002)
(radiosai "Ameri" 8006)
@@ -304,6 +314,11 @@ in
name = "Klassikradio";
provider = "Klassik Radio GmbH & Co. KG";
}
{
url = "http://www.beatlesradio.com:8000/stream";
name = "Beatles";
provider = "beatlesradio.com";
}
(caster-fm "Antenne-ASB.ga" "shaincast" 17656)
# "http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de"
# (soma-fm "scanner") # San Francisco Public Safety Scanner Feed
@@ -359,6 +374,11 @@ in
tracks = [
(rte "radio1")
(rte "radio1extra")
{
url = "http://server25531.streamplus.de/;stream.mp3";
provider = "DWG Radio";
name = "Bibelradio";
}
];
};
}

1312
lib/streams.nix Normal file

File diff suppressed because it is too large Load Diff

96
modules/mpd-fm.nix Normal file
View File

@@ -0,0 +1,96 @@
{ config, lib, pkgs, ... }:
with lib;
let
mpd-fm = pkgs.callPackage <niveum/packages/MPD.FM> {};
cfg = config.services.mpd-fm;
in {
imports = [];
options.services.mpd-fm = {
enable = mkEnableOption "MPD.FM, an MPD web UI for radio streams";
webPort = mkOption {
type = types.port;
default = 4200;
};
stations = mkOption {
default = [];
type = types.listOf (types.submodule {
options = {
id = mkOption {
type = types.int;
description = "A unique identifier of the station";
};
station = mkOption {
type = types.str;
description = "Name of the station that should be displayed";
};
desc = mkOption {
type = types.nullOr types.str;
description = "Short description of the station (optional)";
};
logo = mkOption {
type = types.str;
description = "URL to a logo of the station (any size)";
};
stream = mkOption {
type = types.str;
description = "URL to the stream of the radio station (in a format supported by MPD such as MP3, OGG, ...)";
};
};
});
};
stationsFile = mkOption {
type = types.path;
default = pkgs.writeText "stations.json" (builtins.toJSON cfg.stations);
};
package = mkOption {
type = types.package;
default = mpd-fm;
};
mpd = {
host = mkOption {
type = types.str;
default = "localhost";
description = "The host where MPD is listening.";
example = "localhost";
};
port = mkOption {
type = types.port;
default = config.services.mpd.network.port;
description = "The port where MPD is listening.";
example = 6600;
};
};
};
config = mkIf cfg.enable {
users.extraUsers.mpd-fm.isSystemUser = true;
# ref https://github.com/florianheinemann/MPD.FM/blob/9d037cf87597b26ae2f10ba9feea48946ad6cc68/service/MPD.FM.service
systemd.services.mpd-fm = {
wantedBy = [ "multi-user.target" ];
after = [ "mpd.service" ];
description = "MPD.FM an MPD web radio player web GUI";
script = "${cfg.package}/libexec/mpd.fm/deps/mpd.fm/bin/www";
environment = {
NODE_ENV = "production";
MPD_HOST = cfg.mpd.host;
MPD_PORT = toString cfg.mpd.port;
PORT = toString cfg.webPort;
STATION_FILE = cfg.stationsFile;
};
serviceConfig = {
Restart = "always";
StandardOutput = "syslog";
StandardError = "syslog";
SyslogIdentifier = "mpd-fm";
User = "mpd-fm";
};
};
};
}

View File

@@ -0,0 +1,13 @@
{ mkYarnPackage, fetchFromGitHub }:
mkYarnPackage rec {
name = "MPD.FM";
src = fetchFromGitHub {
owner = "kmein";
repo = "MPD.FM";
rev = "c7cbaa4ce3b350f26cad54378db22c8ec58d987b";
sha256 = "1iklzbaji7ls01jfi1r0frhjq2i1w29kmar7vgw32f5mgj19cyvd";
};
packageJSON = "${src}/package.json";
yarnLock = ./yarn.lock;
yarnNix = ./yarn.nix;
}

422
packages/MPD.FM/yarn.lock Normal file
View File

@@ -0,0 +1,422 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
accepts@~1.3.3:
version "1.3.7"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
dependencies:
mime-types "~2.1.24"
negotiator "0.6.2"
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
async-limiter@~1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
basic-auth@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a"
integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==
dependencies:
safe-buffer "5.1.2"
body-parser@~1.18.2:
version "1.18.3"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
dependencies:
bytes "3.0.0"
content-type "~1.0.4"
debug "2.6.9"
depd "~1.1.2"
http-errors "~1.6.3"
iconv-lite "0.4.23"
on-finished "~2.3.0"
qs "6.5.2"
raw-body "2.3.3"
type-is "~1.6.16"
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
content-disposition@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
content-type@~1.0.2, content-type@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
cookie-parser@~1.4.3:
version "1.4.5"
resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49"
integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw==
dependencies:
cookie "0.4.0"
cookie-signature "1.0.6"
cookie-signature@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
cookie@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
cookie@0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
debug@2.6.9, debug@~2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
depd@~1.1.1, depd@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
destroy@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
encodeurl@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
etag@~1.8.0, etag@~1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
express@~4.15.5:
version "4.15.5"
resolved "https://registry.yarnpkg.com/express/-/express-4.15.5.tgz#670235ca9598890a5ae8170b83db722b842ed927"
integrity sha1-ZwI1ypWYiQpa6BcLg9tyK4Qu2Sc=
dependencies:
accepts "~1.3.3"
array-flatten "1.1.1"
content-disposition "0.5.2"
content-type "~1.0.2"
cookie "0.3.1"
cookie-signature "1.0.6"
debug "2.6.9"
depd "~1.1.1"
encodeurl "~1.0.1"
escape-html "~1.0.3"
etag "~1.8.0"
finalhandler "~1.0.6"
fresh "0.5.2"
merge-descriptors "1.0.1"
methods "~1.1.2"
on-finished "~2.3.0"
parseurl "~1.3.1"
path-to-regexp "0.1.7"
proxy-addr "~1.1.5"
qs "6.5.0"
range-parser "~1.2.0"
send "0.15.6"
serve-static "1.12.6"
setprototypeof "1.0.3"
statuses "~1.3.1"
type-is "~1.6.15"
utils-merge "1.0.0"
vary "~1.1.1"
finalhandler@~1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f"
integrity sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=
dependencies:
debug "2.6.9"
encodeurl "~1.0.1"
escape-html "~1.0.3"
on-finished "~2.3.0"
parseurl "~1.3.2"
statuses "~1.3.1"
unpipe "~1.0.0"
forwarded@~0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
fresh@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
version "1.6.3"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
iconv-lite@0.4.23:
version "0.4.23"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
inherits@2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
ipaddr.js@1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0"
integrity sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
merge-descriptors@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
mime-db@1.45.0:
version "1.45.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
mime-types@~2.1.24:
version "2.1.28"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
dependencies:
mime-db "1.45.0"
mime@1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
integrity sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=
morgan@~1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59"
integrity sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==
dependencies:
basic-auth "~2.0.0"
debug "2.6.9"
depd "~1.1.2"
on-finished "~2.3.0"
on-headers "~1.0.1"
mpd@~1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/mpd/-/mpd-1.3.0.tgz#a9a0e028f6808e5594f76fa9f0c574ad86f0c0dd"
integrity sha1-qaDgKPaAjlWU92+p8MV0rYbwwN0=
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
negotiator@0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
on-finished@~2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
dependencies:
ee-first "1.1.1"
on-headers@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
parseurl@~1.3.1, parseurl@~1.3.2:
version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
proxy-addr@~1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918"
integrity sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=
dependencies:
forwarded "~0.1.0"
ipaddr.js "1.4.0"
qs@6.5.0:
version "6.5.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49"
integrity sha512-fjVFjW9yhqMhVGwRExCXLhJKrLlkYSaxNWdyc9rmHlrVZbk35YHH312dFd7191uQeXkI3mKLZTIbSvIeFwFemg==
qs@6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
range-parser@~1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
raw-body@2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==
dependencies:
bytes "3.0.0"
http-errors "1.6.3"
iconv-lite "0.4.23"
unpipe "1.0.0"
safe-buffer@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==
safe-buffer@5.1.2, safe-buffer@~5.1.0:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
"safer-buffer@>= 2.1.2 < 3":
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
send@0.15.6:
version "0.15.6"
resolved "https://registry.yarnpkg.com/send/-/send-0.15.6.tgz#20f23a9c925b762ab82705fe2f9db252ace47e34"
integrity sha1-IPI6nJJbdiq4JwX+L52yUqzkfjQ=
dependencies:
debug "2.6.9"
depd "~1.1.1"
destroy "~1.0.4"
encodeurl "~1.0.1"
escape-html "~1.0.3"
etag "~1.8.1"
fresh "0.5.2"
http-errors "~1.6.2"
mime "1.3.4"
ms "2.0.0"
on-finished "~2.3.0"
range-parser "~1.2.0"
statuses "~1.3.1"
serve-favicon@~2.4.5:
version "2.4.5"
resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.4.5.tgz#49d9a46863153a9240691c893d2b0e7d85d6d436"
integrity sha512-s7F8h2NrslMkG50KxvlGdj+ApSwaLex0vexuJ9iFf3GLTIp1ph/l1qZvRe9T9TJEYZgmq72ZwJ2VYiAEtChknw==
dependencies:
etag "~1.8.1"
fresh "0.5.2"
ms "2.0.0"
parseurl "~1.3.2"
safe-buffer "5.1.1"
serve-static@1.12.6:
version "1.12.6"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.6.tgz#b973773f63449934da54e5beba5e31d9f4211577"
integrity sha1-uXN3P2NEmTTaVOW+ul4x2fQhFXc=
dependencies:
encodeurl "~1.0.1"
escape-html "~1.0.3"
parseurl "~1.3.2"
send "0.15.6"
setprototypeof@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=
setprototypeof@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
statuses@~1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=
type-is@~1.6.15, type-is@~1.6.16:
version "1.6.18"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
dependencies:
media-typer "0.3.0"
mime-types "~2.1.24"
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
utils-merge@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
integrity sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=
vary@~1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
ws@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289"
integrity sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==
dependencies:
async-limiter "~1.0.0"
safe-buffer "~5.1.0"

493
packages/MPD.FM/yarn.nix Normal file
View File

@@ -0,0 +1,493 @@
{ fetchurl, fetchgit, linkFarm, runCommandNoCC, gnutar }: rec {
offline_cache = linkFarm "offline" packages;
packages = [
{
name = "accepts___accepts_1.3.7.tgz";
path = fetchurl {
name = "accepts___accepts_1.3.7.tgz";
url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz";
sha1 = "531bc726517a3b2b41f850021c6cc15eaab507cd";
};
}
{
name = "array_flatten___array_flatten_1.1.1.tgz";
path = fetchurl {
name = "array_flatten___array_flatten_1.1.1.tgz";
url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz";
sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
};
}
{
name = "async_limiter___async_limiter_1.0.1.tgz";
path = fetchurl {
name = "async_limiter___async_limiter_1.0.1.tgz";
url = "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz";
sha1 = "dd379e94f0db8310b08291f9d64c3209766617fd";
};
}
{
name = "basic_auth___basic_auth_2.0.1.tgz";
path = fetchurl {
name = "basic_auth___basic_auth_2.0.1.tgz";
url = "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz";
sha1 = "b998279bf47ce38344b4f3cf916d4679bbf51e3a";
};
}
{
name = "body_parser___body_parser_1.18.3.tgz";
path = fetchurl {
name = "body_parser___body_parser_1.18.3.tgz";
url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz";
sha1 = "5b292198ffdd553b3a0f20ded0592b956955c8b4";
};
}
{
name = "bytes___bytes_3.0.0.tgz";
path = fetchurl {
name = "bytes___bytes_3.0.0.tgz";
url = "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz";
sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
};
}
{
name = "content_disposition___content_disposition_0.5.2.tgz";
path = fetchurl {
name = "content_disposition___content_disposition_0.5.2.tgz";
url = "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz";
sha1 = "0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4";
};
}
{
name = "content_type___content_type_1.0.4.tgz";
path = fetchurl {
name = "content_type___content_type_1.0.4.tgz";
url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
};
}
{
name = "cookie_parser___cookie_parser_1.4.5.tgz";
path = fetchurl {
name = "cookie_parser___cookie_parser_1.4.5.tgz";
url = "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz";
sha1 = "3e572d4b7c0c80f9c61daf604e4336831b5d1d49";
};
}
{
name = "cookie_signature___cookie_signature_1.0.6.tgz";
path = fetchurl {
name = "cookie_signature___cookie_signature_1.0.6.tgz";
url = "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz";
sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
};
}
{
name = "cookie___cookie_0.3.1.tgz";
path = fetchurl {
name = "cookie___cookie_0.3.1.tgz";
url = "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz";
sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
};
}
{
name = "cookie___cookie_0.4.0.tgz";
path = fetchurl {
name = "cookie___cookie_0.4.0.tgz";
url = "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz";
sha1 = "beb437e7022b3b6d49019d088665303ebe9c14ba";
};
}
{
name = "debug___debug_2.6.9.tgz";
path = fetchurl {
name = "debug___debug_2.6.9.tgz";
url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
};
}
{
name = "depd___depd_1.1.2.tgz";
path = fetchurl {
name = "depd___depd_1.1.2.tgz";
url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
};
}
{
name = "destroy___destroy_1.0.4.tgz";
path = fetchurl {
name = "destroy___destroy_1.0.4.tgz";
url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
sha1 = "978857442c44749e4206613e37946205826abd80";
};
}
{
name = "ee_first___ee_first_1.1.1.tgz";
path = fetchurl {
name = "ee_first___ee_first_1.1.1.tgz";
url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
};
}
{
name = "encodeurl___encodeurl_1.0.2.tgz";
path = fetchurl {
name = "encodeurl___encodeurl_1.0.2.tgz";
url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
};
}
{
name = "escape_html___escape_html_1.0.3.tgz";
path = fetchurl {
name = "escape_html___escape_html_1.0.3.tgz";
url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
};
}
{
name = "etag___etag_1.8.1.tgz";
path = fetchurl {
name = "etag___etag_1.8.1.tgz";
url = "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz";
sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
};
}
{
name = "express___express_4.15.5.tgz";
path = fetchurl {
name = "express___express_4.15.5.tgz";
url = "https://registry.yarnpkg.com/express/-/express-4.15.5.tgz";
sha1 = "670235ca9598890a5ae8170b83db722b842ed927";
};
}
{
name = "finalhandler___finalhandler_1.0.6.tgz";
path = fetchurl {
name = "finalhandler___finalhandler_1.0.6.tgz";
url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz";
sha1 = "007aea33d1a4d3e42017f624848ad58d212f814f";
};
}
{
name = "forwarded___forwarded_0.1.2.tgz";
path = fetchurl {
name = "forwarded___forwarded_0.1.2.tgz";
url = "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz";
sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
};
}
{
name = "fresh___fresh_0.5.2.tgz";
path = fetchurl {
name = "fresh___fresh_0.5.2.tgz";
url = "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz";
sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
};
}
{
name = "http_errors___http_errors_1.6.3.tgz";
path = fetchurl {
name = "http_errors___http_errors_1.6.3.tgz";
url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz";
sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
};
}
{
name = "iconv_lite___iconv_lite_0.4.23.tgz";
path = fetchurl {
name = "iconv_lite___iconv_lite_0.4.23.tgz";
url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz";
sha1 = "297871f63be507adcfbfca715d0cd0eed84e9a63";
};
}
{
name = "inherits___inherits_2.0.3.tgz";
path = fetchurl {
name = "inherits___inherits_2.0.3.tgz";
url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
sha1 = "633c2c83e3da42a502f52466022480f4208261de";
};
}
{
name = "ipaddr.js___ipaddr.js_1.4.0.tgz";
path = fetchurl {
name = "ipaddr.js___ipaddr.js_1.4.0.tgz";
url = "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz";
sha1 = "296aca878a821816e5b85d0a285a99bcff4582f0";
};
}
{
name = "media_typer___media_typer_0.3.0.tgz";
path = fetchurl {
name = "media_typer___media_typer_0.3.0.tgz";
url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
};
}
{
name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
path = fetchurl {
name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
url = "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
};
}
{
name = "methods___methods_1.1.2.tgz";
path = fetchurl {
name = "methods___methods_1.1.2.tgz";
url = "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz";
sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
};
}
{
name = "mime_db___mime_db_1.45.0.tgz";
path = fetchurl {
name = "mime_db___mime_db_1.45.0.tgz";
url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz";
sha1 = "cceeda21ccd7c3a745eba2decd55d4b73e7879ea";
};
}
{
name = "mime_types___mime_types_2.1.28.tgz";
path = fetchurl {
name = "mime_types___mime_types_2.1.28.tgz";
url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz";
sha1 = "1160c4757eab2c5363888e005273ecf79d2a0ecd";
};
}
{
name = "mime___mime_1.3.4.tgz";
path = fetchurl {
name = "mime___mime_1.3.4.tgz";
url = "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz";
sha1 = "115f9e3b6b3daf2959983cb38f149a2d40eb5d53";
};
}
{
name = "morgan___morgan_1.9.1.tgz";
path = fetchurl {
name = "morgan___morgan_1.9.1.tgz";
url = "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz";
sha1 = "0a8d16734a1d9afbc824b99df87e738e58e2da59";
};
}
{
name = "mpd___mpd_1.3.0.tgz";
path = fetchurl {
name = "mpd___mpd_1.3.0.tgz";
url = "https://registry.yarnpkg.com/mpd/-/mpd-1.3.0.tgz";
sha1 = "a9a0e028f6808e5594f76fa9f0c574ad86f0c0dd";
};
}
{
name = "ms___ms_2.0.0.tgz";
path = fetchurl {
name = "ms___ms_2.0.0.tgz";
url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
};
}
{
name = "negotiator___negotiator_0.6.2.tgz";
path = fetchurl {
name = "negotiator___negotiator_0.6.2.tgz";
url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz";
sha1 = "feacf7ccf525a77ae9634436a64883ffeca346fb";
};
}
{
name = "on_finished___on_finished_2.3.0.tgz";
path = fetchurl {
name = "on_finished___on_finished_2.3.0.tgz";
url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
sha1 = "20f1336481b083cd75337992a16971aa2d906947";
};
}
{
name = "on_headers___on_headers_1.0.2.tgz";
path = fetchurl {
name = "on_headers___on_headers_1.0.2.tgz";
url = "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz";
sha1 = "772b0ae6aaa525c399e489adfad90c403eb3c28f";
};
}
{
name = "parseurl___parseurl_1.3.3.tgz";
path = fetchurl {
name = "parseurl___parseurl_1.3.3.tgz";
url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz";
sha1 = "9da19e7bee8d12dff0513ed5b76957793bc2e8d4";
};
}
{
name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
path = fetchurl {
name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
url = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
};
}
{
name = "proxy_addr___proxy_addr_1.1.5.tgz";
path = fetchurl {
name = "proxy_addr___proxy_addr_1.1.5.tgz";
url = "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz";
sha1 = "71c0ee3b102de3f202f3b64f608d173fcba1a918";
};
}
{
name = "qs___qs_6.5.0.tgz";
path = fetchurl {
name = "qs___qs_6.5.0.tgz";
url = "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz";
sha1 = "8d04954d364def3efc55b5a0793e1e2c8b1e6e49";
};
}
{
name = "qs___qs_6.5.2.tgz";
path = fetchurl {
name = "qs___qs_6.5.2.tgz";
url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
};
}
{
name = "range_parser___range_parser_1.2.1.tgz";
path = fetchurl {
name = "range_parser___range_parser_1.2.1.tgz";
url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz";
sha1 = "3cf37023d199e1c24d1a55b84800c2f3e6468031";
};
}
{
name = "raw_body___raw_body_2.3.3.tgz";
path = fetchurl {
name = "raw_body___raw_body_2.3.3.tgz";
url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz";
sha1 = "1b324ece6b5706e153855bc1148c65bb7f6ea0c3";
};
}
{
name = "safe_buffer___safe_buffer_5.1.1.tgz";
path = fetchurl {
name = "safe_buffer___safe_buffer_5.1.1.tgz";
url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz";
sha1 = "893312af69b2123def71f57889001671eeb2c853";
};
}
{
name = "safe_buffer___safe_buffer_5.1.2.tgz";
path = fetchurl {
name = "safe_buffer___safe_buffer_5.1.2.tgz";
url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
};
}
{
name = "safer_buffer___safer_buffer_2.1.2.tgz";
path = fetchurl {
name = "safer_buffer___safer_buffer_2.1.2.tgz";
url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
};
}
{
name = "send___send_0.15.6.tgz";
path = fetchurl {
name = "send___send_0.15.6.tgz";
url = "https://registry.yarnpkg.com/send/-/send-0.15.6.tgz";
sha1 = "20f23a9c925b762ab82705fe2f9db252ace47e34";
};
}
{
name = "serve_favicon___serve_favicon_2.4.5.tgz";
path = fetchurl {
name = "serve_favicon___serve_favicon_2.4.5.tgz";
url = "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.4.5.tgz";
sha1 = "49d9a46863153a9240691c893d2b0e7d85d6d436";
};
}
{
name = "serve_static___serve_static_1.12.6.tgz";
path = fetchurl {
name = "serve_static___serve_static_1.12.6.tgz";
url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.6.tgz";
sha1 = "b973773f63449934da54e5beba5e31d9f4211577";
};
}
{
name = "setprototypeof___setprototypeof_1.0.3.tgz";
path = fetchurl {
name = "setprototypeof___setprototypeof_1.0.3.tgz";
url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz";
sha1 = "66567e37043eeb4f04d91bd658c0cbefb55b8e04";
};
}
{
name = "setprototypeof___setprototypeof_1.1.0.tgz";
path = fetchurl {
name = "setprototypeof___setprototypeof_1.1.0.tgz";
url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz";
sha1 = "d0bd85536887b6fe7c0d818cb962d9d91c54e656";
};
}
{
name = "statuses___statuses_1.5.0.tgz";
path = fetchurl {
name = "statuses___statuses_1.5.0.tgz";
url = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz";
sha1 = "161c7dac177659fd9811f43771fa99381478628c";
};
}
{
name = "statuses___statuses_1.3.1.tgz";
path = fetchurl {
name = "statuses___statuses_1.3.1.tgz";
url = "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz";
sha1 = "faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e";
};
}
{
name = "type_is___type_is_1.6.18.tgz";
path = fetchurl {
name = "type_is___type_is_1.6.18.tgz";
url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz";
sha1 = "4e552cd05df09467dcbc4ef739de89f2cf37c131";
};
}
{
name = "unpipe___unpipe_1.0.0.tgz";
path = fetchurl {
name = "unpipe___unpipe_1.0.0.tgz";
url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
};
}
{
name = "utils_merge___utils_merge_1.0.0.tgz";
path = fetchurl {
name = "utils_merge___utils_merge_1.0.0.tgz";
url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz";
sha1 = "0294fb922bb9375153541c4f7096231f287c8af8";
};
}
{
name = "vary___vary_1.1.2.tgz";
path = fetchurl {
name = "vary___vary_1.1.2.tgz";
url = "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz";
sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
};
}
{
name = "ws___ws_4.1.0.tgz";
path = fetchurl {
name = "ws___ws_4.1.0.tgz";
url = "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz";
sha1 = "a979b5d7d4da68bf54efe0408967c324869a7289";
};
}
];
}