From 829339ce76e8fa960ae8b6ab7c6245d936293980 Mon Sep 17 00:00:00 2001 From: Daniel Kovacs <daniel.kovacs@inepex.com> Date: Fri, 6 Dec 2019 03:23:42 +0100 Subject: [PATCH] asfsd --- package-lock.json | 1200 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 19 + server.js | 283 +++++++++++ spotifier.db | Bin 0 -> 290816 bytes 4 files changed, 1502 insertions(+) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 server.js create mode 100644 spotifier.db diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..d0f6cc7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1200 @@ +{ + "name": "spotifier_backend", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://nexus.anjudp.com/repository/npm-group/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://nexus.anjudp.com/repository/npm-group/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "axios": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://nexus.anjudp.com/repository/npm-group/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://nexus.anjudp.com/repository/npm-group/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://nexus.anjudp.com/repository/npm-group/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://nexus.anjudp.com/repository/npm-group/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://nexus.anjudp.com/repository/npm-group/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://nexus.anjudp.com/repository/npm-group/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://nexus.anjudp.com/repository/npm-group/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://nexus.anjudp.com/repository/npm-group/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://nexus.anjudp.com/repository/npm-group/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://nexus.anjudp.com/repository/npm-group/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://nexus.anjudp.com/repository/npm-group/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://nexus.anjudp.com/repository/npm-group/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://nexus.anjudp.com/repository/npm-group/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.42.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==" + }, + "mime-types": { + "version": "2.1.25", + "resolved": "https://nexus.anjudp.com/repository/npm-group/mime-types/-/mime-types-2.1.25.tgz", + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "requires": { + "mime-db": "1.42.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "needle": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node-pre-gyp": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", + "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==" + }, + "npm-packlist": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.6.tgz", + "integrity": "sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://nexus.anjudp.com/repository/npm-group/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://nexus.anjudp.com/repository/npm-group/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://nexus.anjudp.com/repository/npm-group/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "psl": { + "version": "1.4.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + } + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "sqlite3": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-4.1.0.tgz", + "integrity": "sha512-RvqoKxq+8pDHsJo7aXxsFR18i+dU2Wp5o12qAJOV5LNcDt+fgJsc2QKKg3sIRfXrN9ZjzY1T7SNe/DFVqAXjaw==", + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.11.0", + "request": "^2.87.0" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://nexus.anjudp.com/repository/npm-group/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://nexus.anjudp.com/repository/npm-group/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://nexus.anjudp.com/repository/npm-group/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://nexus.anjudp.com/repository/npm-group/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://nexus.anjudp.com/repository/npm-group/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://nexus.anjudp.com/repository/npm-group/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://nexus.anjudp.com/repository/npm-group/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..5032e05 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "spotifier_backend", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node server.js", + "heroku-postbuild": "npm install --prefix frontend && npm run build --prefix frontend" + }, + "dependencies": { + "axios": "^0.19.0", + "dotenv": "^8.2.0", + "express": "^4.15.4", + "querystring": "^0.2.0", + "request": "^2.81.0", + "sqlite3": "^4.1.0", + "cors": "^2.8.5", + } +} diff --git a/server.js b/server.js new file mode 100644 index 0000000..0c7372e --- /dev/null +++ b/server.js @@ -0,0 +1,283 @@ + +require('dotenv').config(); + +const express = require('express'); +const request = require('request'); +const querystring = require('querystring'); +const sqlite3 = require('sqlite3').verbose(); +const bodyParser = require('body-parser'); +const axios = require('axios'); +const app = express(); +const path = require('path'); + +app.use(express.static(path.join(__dirname, 'static'))); + + +app.get('/*', (req, res) => { + console.log(__dirname); + res.sendFile(path.join(__dirname, 'static', 'index.html')); +}); + +app.use(bodyParser.json()); + + +var cors = require('cors'); +app.use(cors({origin: '*'})); + +const redirect_uri = + process.env.REDIRECT_URI || + 'https://thespotifierapp.herokuapp.com/callback'; + +let db = new sqlite3.Database('./spotifier.db', (err) => { + if (err) { + console.error(err.message); + } + console.log('Connected to the database.'); +}); + +app.get('/login', function (req, res) { + console.log(req.query); + res.redirect('https://accounts.spotify.com/authorize?' + + querystring.stringify({ + response_type: 'code', + client_id: process.env.SPOTIFY_CLIENT_ID, + scope: 'user-read-private user-read-email playlist-modify-public playlist-modify-private', + redirect_uri: redirect_uri, + state: req.query.from + })) +}); + + +app.get('/callback', function (req, res) { + let code = req.query.code || null + let authOptions = { + url: 'https://accounts.spotify.com/api/token', + form: { + code: code, + redirect_uri, + grant_type: 'authorization_code' + }, + headers: { + 'Authorization': 'Basic ' + (new Buffer( + process.env.SPOTIFY_CLIENT_ID + ':' + + process.env.SPOTIFY_CLIENT_SECRET + ).toString('base64')) + }, + json: true + } + request.post(authOptions, function (error, response, body) { + var access_token = body.access_token + console.log(access_token); + let uri = process.env.FRONTEND_URI || 'https://thespotifierapp.herokuapp.com/:3000/' + uri= uri + '?access_token=' + access_token + console.log(req.query.state); + if (req.query.state){ + console.log("sdfdfdf") + uri=uri+`&from=${encodeURI(req.query.state)}` + } + console.log(uri); + res.redirect(uri) + }) +}); + +app.get('/parties/:owner/:saved', (req, res) => { + const owner = req.params.owner + const status = req.params.saved + db.all('SELECT party.id, party_owner, party_name, num_tracks, genres, COUNT(party_members.id) AS memberCount FROM party LEFT JOIN party_members ON party.id = party_members.party_id WHERE party.party_owner=? AND party.saved=? GROUP BY party.id;', [owner, status], + (error, rows) => { + return res.json(rows).status(200); + }); +}); + +app.post('/addparty/:owner', (req, res) => { +if (req.body.party_name == undefined || req.body.party_genres == undefined) { + return res.status(400).json({message: 'Missing request body'}); +} +db.run('INSERT INTO party(party_owner,party_name, genres,num_tracks) VALUES (?,?,?,?)', + [req.params.owner, req.body.party_name, req.body.party_genres.toString(),req.body.tracksNeeded], (err) => { + if (err == undefined) { + console.log("Party added!"); + return res.status(200).json({message: "Party created"}); + } else { + console.log('Somethin went wrong: ' + err); + return res.status(500).json({message: "An error occured"}); + } + }) +}); + +app.post('/joinparty/:partyid', (req, res) => { + if (req.body.member_id == undefined || req.body.member_name == undefined || req.body.token == undefined) { + return res.status(400).json({message: 'Missing request body'}) + } + + var config ={ + headers: {Authorization: 'Bearer ' + req.body.token} + }; + let genres = []; + let genres_temp = []; + let trackNum=0; + let filtered_list = []; + db.all('SELECT genres FROM party WHERE id = ?', [req.params.partyid], (err,rows) => { + console.log(err) + console.log(rows) + if(rows.length!=0){ + genres=rows[0].genres.split(",") + } + console.log(genres) + }); + axios.get(`https://api.spotify.com/v1/users/${req.body.member_id}/playlists`,config).then( + result => { + result.data.items.forEach(function (playlist) { + axios.get( + `https://api.spotify.com/v1/playlists/${playlist.id}/tracks`, + config).then( + track_result => + track_result.data.items.forEach(function (song) { + if (genres.length > 0) { + artistId = song.track.artists[0].id; + axios.get( + `https://api.spotify.com/v1/artists/${artistId}`, + config).then( + album_result => { + album_result.data.genres.forEach(genre => { + if (genre.includes(" ")) { + genres_temp.push(genre.split(" ")[1]) + } else { + genres_temp.push(genre) + } + }) + } + ) + genres.forEach(genre => { + genres_temp.forEach(genre_temp => { + if (genre === genre_temp) { + filtered_list.push(genre); + } + }) + }) + } + if ((genres.length > 0 && filtered_list.length > 0) + || genres[0] == "") { + trackNum++; + db.run( + 'INSERT INTO songs(song_author,song_title,song_id,party_id,song_duration) VALUES (?,?,?,?,?)', + [song.track.artists[0].name, song.track.name, + song.track.id, req.params.partyid, + song.track.duration_ms]) + } else { + console.log(`Song not matched`) + } + }) + ) + }) + db.run( + 'INSERT INTO party_members(party_id,member_id,member_name) VALUES (?,?,?)', + [req.params.partyid, req.body.member_id, req.body.member_name], (err) => { + if (err == undefined) { + return res.status(200).json({message: "Join success", tracks: trackNum}); + } else { + console.log('Something went wrong: ' + err); + return res.status(500).json({message: "An error occured"}); + } + }) + } + ).catch( + err => + console.log(err) + ); + + +}); + +app.get('/memberlist/:partyid', (req,res) => { + const party_id = req.params.partyid; + db.all('SELECT member_name, member_id FROM party_members WHERE party_id=?', [party_id], + (err, rows) => { + return res.json(rows).status(200) + }); +}); + +app.get('/partydetails/:partyid', (req,res) => { + + const partyId = req.params.partyid + db.all('SELECT party_name FROM party WHERE id=?', [partyId], (err,rows) => { + if (rows.length>0) { + const partyName = rows[0].party_name + db.all( + 'SELECT song_id, song_author, song_title, song_duration, COUNT(id) AS occurrence FROM songs WHERE party_id=? GROUP BY song_id', + [partyId], (err, rows) => { + let partyDetails = { + partyName: partyName, + partySongs: rows + }; + return res.json(partyDetails).status(200) + }); + }else{ + return res.status(200) + } + }); + +}); + +app.delete('/deleteparty/:id', (req,res) => { + db.run('DELETE FROM party WHERE id=?',[req.params.id], () =>{ + db.run('DELETE FROM party_members WHERE party_id=?', [req.params.id], () =>{ + db.run('DELETE FROM songs WHERE party_id=?',[req.params.id], () =>{ + res.status(200).send(); + }) + }) + }) +}); + +app.post('/saveplaylist/:id', (req,res) => { + var config ={ + headers: {Authorization: 'Bearer ' + req.body.token} + }; + const userId=req.body.userid + const playListName = req.body.playlistname; + console.log(JSON.stringify(req.headers)); + + axios.post(`https://api.spotify.com/v1/users/${userId}/playlists`, {name: playListName},config).then(result => { + if (result.status == 200 || result.status==201) { + const playlistId = result.data.id + db.all('SELECT song_id, song_author, song_title, song_duration, COUNT(id) AS occurrence FROM songs WHERE party_id=? GROUP BY song_id ORDER BY occurrence LIMIT (SELECT num_tracks FROM party WHERE ID=?)', + [req.params.id,req.params.id], (err,rows) => { + let track_ids="uris="; + rows.forEach(row=>{ + track_ids+=`spotify:track:${row.song_id},` + }) + track_ids=track_ids.substr(0,track_ids.length-1) + axios.post(`https://api.spotify.com/v1/playlists/${playlistId}/tracks?${track_ids}`,{},config).then(result =>{ + console.log(result.data) + db.run('DELETE FROM party WHERE id=?',[req.params.id], () => { + db.run('DELETE FROM songs WHERE party_id=?', [req.params.id], + () => { + db.run('DELETE FROM party_members WHERE party_id =?', + [req.params.id], () => { + res.status(200).send(); + + } + ) + }) + }); + + }).catch(error=>{ + console.log(error) + res.status(500).send(); + }) + }) + } + + }) + + +}); + +app.post('/teszt' , (req,res) => { + res.send(status(200)) +}); + +const port = process.env.PORT || 8888 +console.log( + `Listening on port ${port}. Go /login to initiate authentication flow.`) +app.listen(port) \ No newline at end of file diff --git a/spotifier.db b/spotifier.db new file mode 100644 index 0000000000000000000000000000000000000000..1b59d6511e558b75ec733092b755aea3b125cea4 GIT binary patch literal 290816 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 literal 0 HcmV?d00001 -- GitLab