Add more async
This commit is contained in:
parent
7be2b7b97a
commit
8ea8b4d279
14 changed files with 108 additions and 300 deletions
2
.babelrc
2
.babelrc
|
@ -2,7 +2,7 @@
|
||||||
"presets": [
|
"presets": [
|
||||||
["@babel/preset-env", {
|
["@babel/preset-env", {
|
||||||
"targets": {
|
"targets": {
|
||||||
"node": "9.11.1"
|
"node": "10.0.0"
|
||||||
},
|
},
|
||||||
"modules": "commonjs"
|
"modules": "commonjs"
|
||||||
}]
|
}]
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
{
|
{
|
||||||
"extends": "airbnb/base",
|
"extends": "airbnb/base",
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"ecmaVersion": 6,
|
"ecmaVersion": 2018,
|
||||||
"sourceType": "module",
|
"sourceType": "module",
|
||||||
"ecmaFeatures": {
|
|
||||||
"experimentalObjectRestSpread": true
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"env": {
|
"env": {
|
||||||
"node": true,
|
"node": true,
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -5,7 +5,7 @@ help:
|
||||||
@echo "Commands:"
|
@echo "Commands:"
|
||||||
@grep -E -h '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
@grep -E -h '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
||||||
@echo
|
@echo
|
||||||
@echo "See README.md or https://github.com/udemy/website-django/blob/master/README.md"
|
@echo "See README.md"
|
||||||
@echo
|
@echo
|
||||||
|
|
||||||
.PHONY: start
|
.PHONY: start
|
||||||
|
|
|
@ -15,9 +15,9 @@ debug('Fixing missing');
|
||||||
|
|
||||||
const serviceIds = [];
|
const serviceIds = [];
|
||||||
|
|
||||||
for (const service of services) {
|
services.forEach((service) => {
|
||||||
serviceIds.push(service.id);
|
serviceIds.push(service.id);
|
||||||
}
|
});
|
||||||
|
|
||||||
const query = {
|
const query = {
|
||||||
include: [
|
include: [
|
||||||
|
@ -30,7 +30,7 @@ const query = {
|
||||||
};
|
};
|
||||||
|
|
||||||
function search(data) {
|
function search(data) {
|
||||||
const share = data.share;
|
const { share } = data;
|
||||||
const service = services.find(item => data.service.id === item.id);
|
const service = services.find(item => data.service.id === item.id);
|
||||||
|
|
||||||
debug(`Matching ${share.name} on ${data.service.id}`);
|
debug(`Matching ${share.name} on ${data.service.id}`);
|
||||||
|
@ -45,20 +45,20 @@ function search(data) {
|
||||||
|
|
||||||
function* find(model) {
|
function* find(model) {
|
||||||
const items = yield models[model].findAll(query);
|
const items = yield models[model].findAll(query);
|
||||||
for (const item of items) {
|
items.forEach((item) => {
|
||||||
let unmatched = serviceIds;
|
let unmatched = serviceIds;
|
||||||
for (const match of item.matches) {
|
item.matches.forEach((match) => {
|
||||||
unmatched = unmatched.filter(id => match.service !== id);
|
unmatched = unmatched.filter(id => match.service !== id);
|
||||||
}
|
});
|
||||||
if (unmatched.length > 0) {
|
if (unmatched.length > 0) {
|
||||||
debug(`Matching ${unmatched.join(', ')}`);
|
debug(`Matching ${unmatched.join(', ')}`);
|
||||||
for (const toMatch of unmatched) {
|
unmatched.forEach((toMatch) => {
|
||||||
search({ share: item, service: { id: toMatch } });
|
search({ share: item, service: { id: toMatch } });
|
||||||
}
|
});
|
||||||
} else {
|
} else {
|
||||||
debug(`No broken matches for ${item.name}`);
|
debug(`No broken matches for ${item.name}`);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
14
package.json
14
package.json
|
@ -7,7 +7,7 @@
|
||||||
"build": "webpack --mode=production --config webpack.config.js && webpack --config webpack.config.server.js",
|
"build": "webpack --mode=production --config webpack.config.js && webpack --config webpack.config.server.js",
|
||||||
"start": "node -r @babel/register app.js",
|
"start": "node -r @babel/register app.js",
|
||||||
"worker": "node -r @babel/register worker.js",
|
"worker": "node -r @babel/register worker.js",
|
||||||
"test": "mocha -r co-mocha -r '@babel/register' test/**/*.js --timeout=15000",
|
"test": "mocha -r '@babel/register' test/**/*.js test/lookup.js --timeout=15000",
|
||||||
"watch": "concurrently -k \"npm:watch-js\" \"npm:watch-server\"",
|
"watch": "concurrently -k \"npm:watch-js\" \"npm:watch-server\"",
|
||||||
"watch-js": "concurrently -k -n webpack-frontend,webpack-server \"webpack -w -d --config webpack.config.js\" \"webpack -w --config webpack.config.server.js\"",
|
"watch-js": "concurrently -k -n webpack-frontend,webpack-server \"webpack -w -d --config webpack.config.js\" \"webpack -w --config webpack.config.server.js\"",
|
||||||
"watch-server": "nodemon -x \"node -r @babel/register\" -e js,vue -i node_modules -i chrome/ app.js",
|
"watch-server": "nodemon -x \"node -r @babel/register\" -e js,vue -i node_modules -i chrome/ app.js",
|
||||||
|
@ -21,7 +21,6 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/cli": "^7.0.0-beta.46",
|
"@babel/cli": "^7.0.0-beta.46",
|
||||||
"@babel/core": "^7.0.0-beta.46",
|
"@babel/core": "^7.0.0-beta.46",
|
||||||
"@babel/plugin-proposal-object-rest-spread": "^7.0.0-beta.46",
|
|
||||||
"@babel/polyfill": "^7.0.0-beta.46",
|
"@babel/polyfill": "^7.0.0-beta.46",
|
||||||
"@babel/preset-env": "^7.0.0-beta.46",
|
"@babel/preset-env": "^7.0.0-beta.46",
|
||||||
"@babel/register": "^7.0.0-beta.46",
|
"@babel/register": "^7.0.0-beta.46",
|
||||||
|
@ -34,7 +33,6 @@
|
||||||
"css-loader": "^0.28.11",
|
"css-loader": "^0.28.11",
|
||||||
"debug": "^3.1.0",
|
"debug": "^3.1.0",
|
||||||
"ejs": "^2.5.9",
|
"ejs": "^2.5.9",
|
||||||
"extract-text-webpack-plugin": "^4.0.0-beta.0",
|
|
||||||
"file-loader": "^1.1.11",
|
"file-loader": "^1.1.11",
|
||||||
"iso8601-duration": "^1.1.1",
|
"iso8601-duration": "^1.1.1",
|
||||||
"kcors": "^2.2.1",
|
"kcors": "^2.2.1",
|
||||||
|
@ -42,27 +40,20 @@
|
||||||
"koa-bodyparser": "^4.2.0",
|
"koa-bodyparser": "^4.2.0",
|
||||||
"koa-compress": "~3.0.0",
|
"koa-compress": "~3.0.0",
|
||||||
"koa-favicon": "~2.0.1",
|
"koa-favicon": "~2.0.1",
|
||||||
"koa-file-server": "~2.3.1",
|
|
||||||
"koa-logger": "~3.2.0",
|
"koa-logger": "~3.2.0",
|
||||||
"koa-route": "~3.2.0",
|
"koa-route": "~3.2.0",
|
||||||
"koa-static": "^4.0.2",
|
"koa-static": "^4.0.2",
|
||||||
"koa-views": "^6.1.4",
|
"koa-views": "^6.1.4",
|
||||||
"koa-websocket": "^4.1.0",
|
|
||||||
"kue": "^0.11.6",
|
"kue": "^0.11.6",
|
||||||
"mini-css-extract-plugin": "^0.4.0",
|
"mini-css-extract-plugin": "^0.4.0",
|
||||||
"moment": "^2.22.1",
|
|
||||||
"node-sass": "^4.9.0",
|
"node-sass": "^4.9.0",
|
||||||
"node-uuid": "~1.4.2",
|
|
||||||
"nodebrainz": "^2.1.1",
|
"nodebrainz": "^2.1.1",
|
||||||
"pg": "^7.4.1",
|
|
||||||
"playmusic": "^2.3.0",
|
"playmusic": "^2.3.0",
|
||||||
"raven": "^2.6.0",
|
"raven": "^2.6.0",
|
||||||
"sass-loader": "^7.0.1",
|
"sass-loader": "^7.0.1",
|
||||||
"sequelize": "^4.37.6",
|
"sequelize": "^4.37.6",
|
||||||
"spotify-web-api-node": "^3.1.0",
|
"spotify-web-api-node": "^3.1.0",
|
||||||
"style-loader": "^0.21.0",
|
|
||||||
"superagent": "^3.8.2",
|
"superagent": "^3.8.2",
|
||||||
"uglifyjs-webpack-plugin": "^1.2.5",
|
|
||||||
"vue": "^2.5.16",
|
"vue": "^2.5.16",
|
||||||
"vue-loader": "^15.0.4",
|
"vue-loader": "^15.0.4",
|
||||||
"vue-router": "^3.0.1",
|
"vue-router": "^3.0.1",
|
||||||
|
@ -75,10 +66,9 @@
|
||||||
"webpack-stats-plugin": "^0.2.1"
|
"webpack-stats-plugin": "^0.2.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"co-mocha": "^1.2.2",
|
|
||||||
"concurrently": "^3.5.1",
|
"concurrently": "^3.5.1",
|
||||||
"eslint": "^4.19.1",
|
"eslint": "^4.19.1",
|
||||||
"eslint-config-airbnb": "^16.1.0",
|
"eslint-config-airbnb-base": "^12.1.0",
|
||||||
"eslint-plugin-import": "^2.11.0",
|
"eslint-plugin-import": "^2.11.0",
|
||||||
"istanbul": "^0.4.0",
|
"istanbul": "^0.4.0",
|
||||||
"mocha": "^5.1.1",
|
"mocha": "^5.1.1",
|
||||||
|
|
|
@ -4,8 +4,8 @@ import models from '../models';
|
||||||
import debugname from 'debug';
|
import debugname from 'debug';
|
||||||
const debug = debugname('match.audio:db');
|
const debug = debugname('match.audio:db');
|
||||||
|
|
||||||
co(function *sync() {
|
co(async function sync() {
|
||||||
debug('Syncing schema');
|
debug('Syncing schema');
|
||||||
yield models.sequelize.sync();
|
await models.sequelize.sync();
|
||||||
debug('Schema synced');
|
debug('Schema synced');
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,8 +2,8 @@ import 'should';
|
||||||
import lookup from '../lib/lookup';
|
import lookup from '../lib/lookup';
|
||||||
|
|
||||||
describe('Search with url', function(){
|
describe('Search with url', function(){
|
||||||
it('should find album by url', function* (){
|
it('should find album by url', async function (){
|
||||||
const result = yield lookup('https://play.google.com/music/listen#/album/Bz6wrjczddcj5hurijsv6ohdoay');
|
const result = await lookup('https://play.google.com/music/listen#/album/Bz6wrjczddcj5hurijsv6ohdoay');
|
||||||
result.name.should.equal('Phase 5');
|
result.name.should.equal('Phase 5');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,30 +3,30 @@ import * as amazon from '../../lib/services/amazon';
|
||||||
|
|
||||||
describe('Amazon', function () {
|
describe('Amazon', function () {
|
||||||
describe('lookupId', function () {
|
describe('lookupId', function () {
|
||||||
it('should find album by ID', function* () {
|
it('should find album by ID', async function () {
|
||||||
const result = yield amazon.lookupId('B00V8I134A', 'album');
|
const result = await amazon.lookupId('B00V8I134A', 'album');
|
||||||
result.name.should.equal('In Colour [Explicit]');
|
result.name.should.equal('In Colour [Explicit]');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find track by ID', function* (){
|
it('should find track by ID', async function () {
|
||||||
const result = yield amazon.lookupId('B00V8I1CKU', 'track');
|
const result = await amazon.lookupId('B00V8I1CKU', 'track');
|
||||||
result.name.should.equal('Sleep Sound');
|
result.name.should.equal('Sleep Sound');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('search', function(){
|
describe('search', function(){
|
||||||
it('should find album by search', function* () {
|
it('should find album by search', async function () {
|
||||||
const result = yield amazon.search({type: 'album', artist: {name: 'Jamie xx'}, name: 'In Colour'});
|
const result = await amazon.search({type: 'album', artist: {name: 'Jamie xx'}, name: 'In Colour'});
|
||||||
result.name.should.equal('In Colour [Explicit]');
|
result.name.should.equal('In Colour [Explicit]');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find track by search', function* (){
|
it('should find track by search', async function () {
|
||||||
const result = yield amazon.search({type: 'track', artist: {name: 'Jamie xx'}, albumName: 'In Colour', name: 'Loud Places'});
|
const result = await amazon.search({type: 'track', artist: {name: 'Jamie xx'}, albumName: 'In Colour', name: 'Loud Places'});
|
||||||
result.name.should.equal('Loud Places');
|
result.name.should.equal('Loud Places');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find awkward track by search', function* (){
|
it('should find awkward track by search', async function () {
|
||||||
const result = yield amazon.search({type: 'track', artist: {name: 'Jamie xx'}, albumName: 'In Colour (Remixes)', name: 'Loud Places [Tessela Remix]'});
|
const result = await amazon.search({type: 'track', artist: {name: 'Jamie xx'}, albumName: 'In Colour (Remixes)', name: 'Loud Places [Tessela Remix]'});
|
||||||
result.name.should.equal('Loud Places [Tessela Remix]');
|
result.name.should.equal('Loud Places [Tessela Remix]');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,45 +1,45 @@
|
||||||
import 'should';
|
import 'should';
|
||||||
import * as deezer from '../../lib/services/deezer';
|
import * as deezer from '../../lib/services/deezer';
|
||||||
|
|
||||||
describe('Deezer', function(){
|
describe('Deezer', () => {
|
||||||
describe('lookupId', function(){
|
describe('lookupId', () => {
|
||||||
it('should find album by ID', function* (){
|
it('should find album by ID', async function test() {
|
||||||
const result = yield deezer.lookupId('302127', 'album');
|
const result = await deezer.lookupId('302127', 'album');
|
||||||
result.name.should.equal('Discovery');
|
result.name.should.equal('Discovery');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find track by ID', function* (){
|
it('should find track by ID', async function (){
|
||||||
const result = yield deezer.lookupId('3135554', 'track');
|
const result = await deezer.lookupId('3135554', 'track');
|
||||||
result.name.should.equal('Aerodynamic');
|
result.name.should.equal('Aerodynamic');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('search', function(){
|
describe('search', () => {
|
||||||
it('should find album by search', function* (){
|
it('should find album by search', async function (){
|
||||||
const result = yield deezer.search({type: 'album', artist: {name: 'Jamie xx'}, name: 'In Colour'});
|
const result = await deezer.search({type: 'album', artist: {name: 'Jamie xx'}, name: 'In Colour'});
|
||||||
result.name.should.startWith('In Colour');
|
result.name.should.startWith('In Colour');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find album with various artists by search', function* (){
|
it('should find album with various artists by search', async function (){
|
||||||
const result = yield deezer.search({type: 'album', artist: {name: 'Various Artists'}, name: 'The Trevor Nelson Collection'});
|
const result = await deezer.search({type: 'album', artist: {name: 'Various Artists'}, name: 'The Trevor Nelson Collection'});
|
||||||
result.name.should.equal('The Trevor Nelson Collection 3');
|
result.name.should.equal('The Trevor Nelson Collection 3');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find track by search', function* (){
|
it('should find track by search', async function (){
|
||||||
const result = yield deezer.search({type: 'track', artist: {name: 'Deftones'}, albumName: 'Deftones', name: 'Hexagram'});
|
const result = await deezer.search({type: 'track', artist: {name: 'Deftones'}, albumName: 'Deftones', name: 'Hexagram'});
|
||||||
result.name.should.equal('Hexagram');
|
result.name.should.equal('Hexagram');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('lookupUrl', function(){
|
describe('lookupUrl', () => {
|
||||||
describe('parseUrl', function(){
|
describe('parseUrl', () => {
|
||||||
it('should parse album url into ID', function* (){
|
it('should parse album url into ID', async function (){
|
||||||
const result = yield deezer.parseUrl('http://www.deezer.com/album/302127');
|
const result = await deezer.parseUrl('http://www.deezer.com/album/302127');
|
||||||
result.id.should.equal(302127);
|
result.id.should.equal(302127);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse track url into ID', function* (){
|
it('should parse track url into ID', async function (){
|
||||||
const result = yield deezer.parseUrl('http://www.deezer.com/track/3135554');
|
const result = await deezer.parseUrl('http://www.deezer.com/track/3135554');
|
||||||
result.id.should.equal(3135554);
|
result.id.should.equal(3135554);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,49 +1,49 @@
|
||||||
import 'should';
|
import 'should';
|
||||||
import * as google from '../../lib/services/google';
|
import * as google from '../../lib/services/google';
|
||||||
|
|
||||||
describe('Google Play Music', function(){
|
describe('Google Play Music', () => {
|
||||||
describe('lookupId', function(){
|
describe('lookupId', () => {
|
||||||
it('should find album by ID', function* (){
|
it('should find album by ID', async function (){
|
||||||
const result = yield google.lookupId('Byp6lvzimyf74wxi5634ul4tgam', 'album');
|
const result = await google.lookupId('Byp6lvzimyf74wxi5634ul4tgam', 'album');
|
||||||
result.name.should.equal('Listen');
|
result.name.should.equal('Listen');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find track by ID', function* (){
|
it('should find track by ID', async function (){
|
||||||
const result = yield google.lookupId('Tjosptub24g2dft37lforqnudpe', 'track');
|
const result = await google.lookupId('Tjosptub24g2dft37lforqnudpe', 'track');
|
||||||
result.name.should.equal('Cherub Rock');
|
result.name.should.equal('Cherub Rock');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('search', function(){
|
describe('search', () => {
|
||||||
it('should find album by search', function* (){
|
it('should find album by search', async function (){
|
||||||
const result = yield google.search({type: 'album', artist: {name: 'Jamie xx'}, name: 'In Colour'});
|
const result = await google.search({type: 'album', artist: {name: 'Jamie xx'}, name: 'In Colour'});
|
||||||
result.name.should.equal('In Colour');
|
result.name.should.equal('In Colour');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find track by search', function* (){
|
it('should find track by search', async function (){
|
||||||
const result = yield google.search({type: 'track', artist: {name: 'Jamie xx'}, albumName: 'In Colour', name: 'Loud Places'});
|
const result = await google.search({type: 'track', artist: {name: 'Jamie xx'}, albumName: 'In Colour', name: 'Loud Places'});
|
||||||
result.name.should.equal('Loud Places');
|
result.name.should.equal('Loud Places');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find awkward track by search', function* (){
|
it('should find awkward track by search', async function (){
|
||||||
const result = yield google.search({type: 'track', artist: {name: 'Jamie xx'}, albumName: 'Loud Places (Remixes)', name: 'Loud Places [Tessela Remix]'});
|
const result = await google.search({type: 'track', artist: {name: 'Jamie xx'}, albumName: 'Loud Places (Remixes)', name: 'Loud Places [Tessela Remix]'});
|
||||||
result.name.should.equal('Loud Places [Tessela Remix]');
|
result.name.should.equal('Loud Places [Tessela Remix]');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('lookupUrl', function(){
|
describe('lookupUrl', () => {
|
||||||
it('should parse regular url into album ID', function* (){
|
it('should parse regular url into album ID', async function (){
|
||||||
const result = yield google.parseUrl('https://play.google.com/music/listen#/album/Byp6lvzimyf74wxi5634ul4tgam/Jamie+xx/In+Colour');
|
const result = await google.parseUrl('https://play.google.com/music/listen#/album/Byp6lvzimyf74wxi5634ul4tgam/Jamie+xx/In+Colour');
|
||||||
result.id.should.equal('Byp6lvzimyf74wxi5634ul4tgam');
|
result.id.should.equal('Byp6lvzimyf74wxi5634ul4tgam');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse url without ID into album ID', function* (){
|
it('should parse url without ID into album ID', async function (){
|
||||||
const result = yield google.parseUrl('https://play.google.com/music/listen#/album//Jamie+xx/In+Colour');
|
const result = await google.parseUrl('https://play.google.com/music/listen#/album//Jamie+xx/In+Colour');
|
||||||
result.id.should.equal('Bvfmezcj3n42lo4xeuslpclbyrm');
|
result.id.should.equal('Bvfmezcj3n42lo4xeuslpclbyrm');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse share url into album ID', function* (){
|
it('should parse share url into album ID', async function (){
|
||||||
const result = yield google.parseUrl('https://play.google.com/music/m/Byp6lvzimyf74wxi5634ul4tgam');
|
const result = await google.parseUrl('https://play.google.com/music/m/Byp6lvzimyf74wxi5634ul4tgam');
|
||||||
result.id.should.equal('Byp6lvzimyf74wxi5634ul4tgam');
|
result.id.should.equal('Byp6lvzimyf74wxi5634ul4tgam');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,43 +3,43 @@ import * as itunes from '../../lib/services/itunes';
|
||||||
|
|
||||||
describe('iTunes Music', function(){
|
describe('iTunes Music', function(){
|
||||||
describe('lookupId', function(){
|
describe('lookupId', function(){
|
||||||
it('should find album by ID', function* (){
|
it('should find album by ID', async function (){
|
||||||
const result = yield itunes.lookupId('id215206912', 'album');
|
const result = await itunes.lookupId('id215206912', 'album');
|
||||||
result.name.should.equal('Peace Orchestra');
|
result.name.should.equal('Peace Orchestra');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find track by ID', function* (){
|
it('should find track by ID', async function (){
|
||||||
const result = yield itunes.lookupId('id215206958', 'track');
|
const result = await itunes.lookupId('id215206958', 'track');
|
||||||
result.name.should.equal('Double Drums');
|
result.name.should.equal('Double Drums');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('search', function(){
|
describe('search', function(){
|
||||||
it('should find album by search', function* (){
|
it('should find album by search', async function (){
|
||||||
const result = yield itunes.search({type: 'album', artist: {name: 'Deftones'}, name: 'White Pony'});
|
const result = await itunes.search({type: 'album', artist: {name: 'Deftones'}, name: 'White Pony'});
|
||||||
result.name.should.equal('White Pony');
|
result.name.should.equal('White Pony');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find awkward album by search', function* (){
|
it('should find awkward album by search', async function (){
|
||||||
const result = yield itunes.search({type: 'album', artist: {name: 'Anavitória'}, name: 'Fica'});
|
const result = await itunes.search({type: 'album', artist: {name: 'Anavitória'}, name: 'Fica'});
|
||||||
result.name.should.equal('Fica (feat. Matheus & Kauan) - Single');
|
result.name.should.equal('Fica (feat. Matheus & Kauan) - Single');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find track by search', function* (){
|
it('should find track by search', async function (){
|
||||||
const result = yield itunes.search({type: 'track', artist: {name: 'Deftones'}, albumName: 'Deftones', name: 'Hexagram'});
|
const result = await itunes.search({type: 'track', artist: {name: 'Deftones'}, albumName: 'Deftones', name: 'Hexagram'});
|
||||||
result.name.should.equal('Hexagram');
|
result.name.should.equal('Hexagram');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('lookupUrl', function(){
|
describe('lookupUrl', function(){
|
||||||
describe('parseUrl', function(){
|
describe('parseUrl', function(){
|
||||||
it('should parse album url into ID', function* (){
|
it('should parse album url into ID', async function (){
|
||||||
const result = yield itunes.parseUrl('https://itunes.apple.com/us/album/double-drums/id215206912');
|
const result = await itunes.parseUrl('https://itunes.apple.com/us/album/double-drums/id215206912');
|
||||||
result.id.should.equal('us215206912');
|
result.id.should.equal('us215206912');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should parse track url into ID', function* (){
|
it('should parse track url into ID', async function (){
|
||||||
const result = yield itunes.parseUrl('https://itunes.apple.com/us/album/double-drums/id215206912?i=215206958&uo=4');
|
const result = await itunes.parseUrl('https://itunes.apple.com/us/album/double-drums/id215206912?i=215206958&uo=4');
|
||||||
result.id.should.equal('us215206958');
|
result.id.should.equal('us215206958');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,37 +3,37 @@ import * as spotify from '../../lib/services/spotify';
|
||||||
|
|
||||||
describe('Spotify', function(){
|
describe('Spotify', function(){
|
||||||
describe('lookupId', function(){
|
describe('lookupId', function(){
|
||||||
it('should find album by ID', function* (){
|
it('should find album by ID', async function (){
|
||||||
const result = yield spotify.lookupId('77UW17CZFyCaRLHdHeofZu', 'album');
|
const result = await spotify.lookupId('77UW17CZFyCaRLHdHeofZu', 'album');
|
||||||
result.name.should.equal('Listen');
|
result.name.should.equal('Listen');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find track by ID', function* (){
|
it('should find track by ID', async function (){
|
||||||
const result = yield spotify.lookupId('7dS5EaCoMnN7DzlpT6aRn2', 'track');
|
const result = await spotify.lookupId('7dS5EaCoMnN7DzlpT6aRn2', 'track');
|
||||||
result.name.should.equal('Take Me To Church');
|
result.name.should.equal('Take Me To Church');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('search', function(){
|
describe('search', function(){
|
||||||
it('should find album by search', function* (){
|
it('should find album by search', async function (){
|
||||||
const result = yield spotify.search({type: 'album', artist: {name: 'David Guetta'}, name: 'Listen (Deluxe)'});
|
const result = await spotify.search({type: 'album', artist: {name: 'David Guetta'}, name: 'Listen (Deluxe)'});
|
||||||
result.name.should.equal('Listen (Deluxe)');
|
result.name.should.equal('Listen (Deluxe)');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find br album by search', function* (){
|
it('should find br album by search', async function (){
|
||||||
const result = yield spotify.search({type: 'album', artist: {name: 'Anavitória'}, name: 'Fica'});
|
const result = await spotify.search({type: 'album', artist: {name: 'Anavitória'}, name: 'Fica'});
|
||||||
result.name.should.equal('Fica');
|
result.name.should.equal('Fica');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should find album by various artists by search', function* (){
|
it('should find album by various artists by search', async function (){
|
||||||
const result = yield spotify.search({type: 'album', artist: {name: 'Various Artists'}, name: 'The Get Down Part II: Original Soundtrack From The Netflix Original Series'});
|
const result = await spotify.search({type: 'album', artist: {name: 'Various Artists'}, name: 'The Get Down Part II: Original Soundtrack From The Netflix Original Series'});
|
||||||
result.name.should.equal('The Get Down Part II: Original Soundtrack From The Netflix Original Series');
|
result.name.should.equal('The Get Down Part II: Original Soundtrack From The Netflix Original Series');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('parseUrl', function(){
|
describe('parseUrl', function(){
|
||||||
it('should parse url into ID', function* (){
|
it('should parse url into ID', async function (){
|
||||||
const result = yield spotify.parseUrl('https://play.spotify.com/album/77UW17CZFyCaRLHdHeofZu');
|
const result = await spotify.parseUrl('https://play.spotify.com/album/77UW17CZFyCaRLHdHeofZu');
|
||||||
result.id.should.equal('77UW17CZFyCaRLHdHeofZu');
|
result.id.should.equal('77UW17CZFyCaRLHdHeofZu');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,15 +3,15 @@ import * as youtube from '../../lib/services/youtube';
|
||||||
|
|
||||||
describe('Youtube', function(){
|
describe('Youtube', function(){
|
||||||
describe('lookup', function(){
|
describe('lookup', function(){
|
||||||
it('should find album by lookup', function* (){
|
it('should find album by lookup', async function (){
|
||||||
const result = yield youtube.lookupId('6JnGBs88sL0');
|
const result = await youtube.lookupId('6JnGBs88sL0');
|
||||||
result.name.should.equal('Say It Right');
|
result.name.should.equal('Say It Right');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('search', function(){
|
describe('search', function(){
|
||||||
it('should find album by search', function* (){
|
it('should find album by search', async function (){
|
||||||
const result = yield youtube.search({type: 'track', artist: {name: 'Aesop Rock'}, album: {name: 'Skeconsthon'}, name: 'Zero Dark Thirty'});
|
const result = await youtube.search({type: 'track', artist: {name: 'Aesop Rock'}, album: {name: 'Skeconsthon'}, name: 'Zero Dark Thirty'});
|
||||||
result.name.should.equal('Aesop Rock - Zero Dark Thirty (Official Video)');
|
result.name.should.equal('Aesop Rock - Zero Dark Thirty (Official Video)');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
201
yarn.lock
201
yarn.lock
|
@ -215,7 +215,7 @@
|
||||||
"@babel/helper-remap-async-to-generator" "7.0.0-beta.46"
|
"@babel/helper-remap-async-to-generator" "7.0.0-beta.46"
|
||||||
"@babel/plugin-syntax-async-generators" "7.0.0-beta.46"
|
"@babel/plugin-syntax-async-generators" "7.0.0-beta.46"
|
||||||
|
|
||||||
"@babel/plugin-proposal-object-rest-spread@7.0.0-beta.46", "@babel/plugin-proposal-object-rest-spread@^7.0.0-beta.46":
|
"@babel/plugin-proposal-object-rest-spread@7.0.0-beta.46":
|
||||||
version "7.0.0-beta.46"
|
version "7.0.0-beta.46"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.46.tgz#fb3979488a52c1246cdced4a438ace0f47ac985b"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.46.tgz#fb3979488a52c1246cdced4a438ace0f47ac985b"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -872,7 +872,7 @@ async@1.x, async@^1.4.0, async@^1.5.0, async@^1.5.2:
|
||||||
version "1.5.2"
|
version "1.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
|
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
|
||||||
|
|
||||||
async@^2.4.1, async@^2.6.0:
|
async@^2.6.0:
|
||||||
version "2.6.0"
|
version "2.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
|
resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -1565,10 +1565,6 @@ block-stream@*:
|
||||||
dependencies:
|
dependencies:
|
||||||
inherits "~2.0.0"
|
inherits "~2.0.0"
|
||||||
|
|
||||||
bluebird@^2.3.2:
|
|
||||||
version "2.11.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1"
|
|
||||||
|
|
||||||
bluebird@^3.0.5, bluebird@^3.1.1, bluebird@^3.4.6, bluebird@^3.5.0, bluebird@^3.5.1:
|
bluebird@^3.0.5, bluebird@^3.1.1, bluebird@^3.4.6, bluebird@^3.5.0, bluebird@^3.5.1:
|
||||||
version "3.5.1"
|
version "3.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
|
||||||
|
@ -1734,10 +1730,6 @@ buffer-from@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531"
|
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531"
|
||||||
|
|
||||||
buffer-writer@1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-1.0.1.tgz#22a936901e3029afcd7547eb4487ceb697a3bf08"
|
|
||||||
|
|
||||||
buffer-xor@^1.0.3:
|
buffer-xor@^1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
|
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
|
||||||
|
@ -1766,7 +1758,7 @@ bytes@3.0.0, bytes@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
|
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
|
||||||
|
|
||||||
bytes@^2.1.0, bytes@^2.5.0:
|
bytes@^2.5.0:
|
||||||
version "2.5.0"
|
version "2.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a"
|
resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a"
|
||||||
|
|
||||||
|
@ -2130,14 +2122,7 @@ co-body@^5.1.0:
|
||||||
raw-body "^2.2.0"
|
raw-body "^2.2.0"
|
||||||
type-is "^1.6.14"
|
type-is "^1.6.14"
|
||||||
|
|
||||||
co-mocha@^1.2.2:
|
co@^4.6.0, co@~4.6.0:
|
||||||
version "1.2.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/co-mocha/-/co-mocha-1.2.2.tgz#c4fdf24d37f43ca4da668b14542a96e9377479ab"
|
|
||||||
dependencies:
|
|
||||||
co "^4.0.0"
|
|
||||||
is-generator "^1.0.1"
|
|
||||||
|
|
||||||
co@^4.0.0, co@^4.4.0, co@^4.6.0, co@~4.6.0:
|
|
||||||
version "4.6.0"
|
version "4.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
|
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
|
||||||
|
|
||||||
|
@ -2232,7 +2217,7 @@ component-emitter@^1.2.0, component-emitter@^1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
|
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
|
||||||
|
|
||||||
compressible@2, compressible@^2.0.0:
|
compressible@^2.0.0:
|
||||||
version "2.0.13"
|
version "2.0.13"
|
||||||
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9"
|
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -2918,12 +2903,6 @@ eslint-config-airbnb-base@^12.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint-restricted-globals "^0.1.1"
|
eslint-restricted-globals "^0.1.1"
|
||||||
|
|
||||||
eslint-config-airbnb@^16.1.0:
|
|
||||||
version "16.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-16.1.0.tgz#2546bfb02cc9fe92284bf1723ccf2e87bc45ca46"
|
|
||||||
dependencies:
|
|
||||||
eslint-config-airbnb-base "^12.1.0"
|
|
||||||
|
|
||||||
eslint-import-resolver-node@^0.3.1:
|
eslint-import-resolver-node@^0.3.1:
|
||||||
version "0.3.2"
|
version "0.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
|
resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
|
||||||
|
@ -3206,15 +3185,6 @@ extglob@^2.0.4:
|
||||||
snapdragon "^0.8.1"
|
snapdragon "^0.8.1"
|
||||||
to-regex "^3.0.1"
|
to-regex "^3.0.1"
|
||||||
|
|
||||||
extract-text-webpack-plugin@^4.0.0-beta.0:
|
|
||||||
version "4.0.0-beta.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz#f7361d7ff430b42961f8d1321ba8c1757b5d4c42"
|
|
||||||
dependencies:
|
|
||||||
async "^2.4.1"
|
|
||||||
loader-utils "^1.1.0"
|
|
||||||
schema-utils "^0.4.5"
|
|
||||||
webpack-sources "^1.1.0"
|
|
||||||
|
|
||||||
extsprintf@1.3.0:
|
extsprintf@1.3.0:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
|
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
|
||||||
|
@ -3875,13 +3845,6 @@ hash-base@^3.0.0:
|
||||||
inherits "^2.0.1"
|
inherits "^2.0.1"
|
||||||
safe-buffer "^5.0.1"
|
safe-buffer "^5.0.1"
|
||||||
|
|
||||||
hash-stream@^1.0.0:
|
|
||||||
version "1.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/hash-stream/-/hash-stream-1.2.0.tgz#45573530be1b8597a8548cae8311666ba6e96b9c"
|
|
||||||
dependencies:
|
|
||||||
any-promise "^1.1.0"
|
|
||||||
commander "^2.9.0"
|
|
||||||
|
|
||||||
hash-sum@^1.0.2:
|
hash-sum@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04"
|
resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04"
|
||||||
|
@ -4310,10 +4273,6 @@ is-generator-function@^1.0.3:
|
||||||
version "1.0.7"
|
version "1.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522"
|
resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522"
|
||||||
|
|
||||||
is-generator@^1.0.1:
|
|
||||||
version "1.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3"
|
|
||||||
|
|
||||||
is-glob@^2.0.0, is-glob@^2.0.1:
|
is-glob@^2.0.0, is-glob@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
|
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
|
||||||
|
@ -4562,10 +4521,6 @@ js-beautify@^1.6.12:
|
||||||
mkdirp "~0.5.0"
|
mkdirp "~0.5.0"
|
||||||
nopt "~3.0.1"
|
nopt "~3.0.1"
|
||||||
|
|
||||||
js-string-escape@1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef"
|
|
||||||
|
|
||||||
js-stringify@^1.0.1:
|
js-stringify@^1.0.1:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db"
|
resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db"
|
||||||
|
@ -4803,18 +4758,6 @@ koa-favicon@~2.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
mz "^2.7.0"
|
mz "^2.7.0"
|
||||||
|
|
||||||
koa-file-server@~2.3.1:
|
|
||||||
version "2.3.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/koa-file-server/-/koa-file-server-2.3.1.tgz#64a93857d83a0ed46ce206f79d504dd3011a46ce"
|
|
||||||
dependencies:
|
|
||||||
compressible "2"
|
|
||||||
debug "*"
|
|
||||||
hash-stream "^1.0.0"
|
|
||||||
mime-types "2"
|
|
||||||
mz "^2.0.0"
|
|
||||||
resolve-path "^1.0.0"
|
|
||||||
spdy-push "^1.0.0"
|
|
||||||
|
|
||||||
koa-is-json@^1.0.0:
|
koa-is-json@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/koa-is-json/-/koa-is-json-1.0.0.tgz#273c07edcdcb8df6a2c1ab7d59ee76491451ec14"
|
resolved "https://registry.yarnpkg.com/koa-is-json/-/koa-is-json-1.0.0.tgz#273c07edcdcb8df6a2c1ab7d59ee76491451ec14"
|
||||||
|
@ -4863,15 +4806,6 @@ koa-views@^6.1.4:
|
||||||
mz "^2.4.0"
|
mz "^2.4.0"
|
||||||
pretty "^2.0.0"
|
pretty "^2.0.0"
|
||||||
|
|
||||||
koa-websocket@^4.1.0:
|
|
||||||
version "4.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/koa-websocket/-/koa-websocket-4.1.0.tgz#3558d047db3ad70e4ea5181cae88c62c1e12224d"
|
|
||||||
dependencies:
|
|
||||||
co "^4.4.0"
|
|
||||||
debug "^2.1.2"
|
|
||||||
koa-compose "^4.0.0"
|
|
||||||
ws "^2.3.1"
|
|
||||||
|
|
||||||
koa@^2.5.1:
|
koa@^2.5.1:
|
||||||
version "2.5.1"
|
version "2.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/koa/-/koa-2.5.1.tgz#79f8b95f8d72d04fe9a58a8da5ebd6d341103f9c"
|
resolved "https://registry.yarnpkg.com/koa/-/koa-2.5.1.tgz#79f8b95f8d72d04fe9a58a8da5ebd6d341103f9c"
|
||||||
|
@ -5336,7 +5270,7 @@ miller-rabin@^4.0.0:
|
||||||
version "1.33.0"
|
version "1.33.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
|
||||||
|
|
||||||
mime-types@2, mime-types@^2.0.7, mime-types@^2.1.10, mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7:
|
mime-types@^2.0.7, mime-types@^2.1.10, mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7:
|
||||||
version "2.1.18"
|
version "2.1.18"
|
||||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
|
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -5501,7 +5435,7 @@ mute-stream@0.0.7, mute-stream@~0.0.4:
|
||||||
version "0.0.7"
|
version "0.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
|
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
|
||||||
|
|
||||||
mz@^2.0.0, mz@^2.4.0, mz@^2.6.0, mz@^2.7.0:
|
mz@^2.4.0, mz@^2.6.0, mz@^2.7.0:
|
||||||
version "2.7.0"
|
version "2.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
|
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -5530,10 +5464,6 @@ nanomatch@^1.2.9:
|
||||||
snapdragon "^0.8.1"
|
snapdragon "^0.8.1"
|
||||||
to-regex "^3.0.1"
|
to-regex "^3.0.1"
|
||||||
|
|
||||||
native-or-bluebird@^1.1.0:
|
|
||||||
version "1.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/native-or-bluebird/-/native-or-bluebird-1.2.0.tgz#39c47bfd7825d1fb9ffad32210ae25daadf101c9"
|
|
||||||
|
|
||||||
natural-compare@^1.4.0:
|
natural-compare@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||||
|
@ -5683,7 +5613,7 @@ node-sass@^4.9.0:
|
||||||
stdout-stream "^1.4.0"
|
stdout-stream "^1.4.0"
|
||||||
"true-case-path" "^1.0.2"
|
"true-case-path" "^1.0.2"
|
||||||
|
|
||||||
node-uuid@~1.4.1, node-uuid@~1.4.2:
|
node-uuid@~1.4.1:
|
||||||
version "1.4.8"
|
version "1.4.8"
|
||||||
resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907"
|
resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907"
|
||||||
|
|
||||||
|
@ -6002,10 +5932,6 @@ package-json@^4.0.0:
|
||||||
registry-url "^3.0.3"
|
registry-url "^3.0.3"
|
||||||
semver "^5.1.0"
|
semver "^5.1.0"
|
||||||
|
|
||||||
packet-reader@0.3.1:
|
|
||||||
version "0.3.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-0.3.1.tgz#cd62e60af8d7fea8a705ec4ff990871c46871f27"
|
|
||||||
|
|
||||||
pako@~1.0.5:
|
pako@~1.0.5:
|
||||||
version "1.0.6"
|
version "1.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258"
|
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258"
|
||||||
|
@ -6150,42 +6076,6 @@ performance-now@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
||||||
|
|
||||||
pg-connection-string@0.1.3:
|
|
||||||
version "0.1.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-0.1.3.tgz#da1847b20940e42ee1492beaf65d49d91b245df7"
|
|
||||||
|
|
||||||
pg-pool@~2.0.3:
|
|
||||||
version "2.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-2.0.3.tgz#c022032c8949f312a4f91fb6409ce04076be3257"
|
|
||||||
|
|
||||||
pg-types@~1.12.1:
|
|
||||||
version "1.12.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-1.12.1.tgz#d64087e3903b58ffaad279e7595c52208a14c3d2"
|
|
||||||
dependencies:
|
|
||||||
postgres-array "~1.0.0"
|
|
||||||
postgres-bytea "~1.0.0"
|
|
||||||
postgres-date "~1.0.0"
|
|
||||||
postgres-interval "^1.1.0"
|
|
||||||
|
|
||||||
pg@^7.4.1:
|
|
||||||
version "7.4.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/pg/-/pg-7.4.1.tgz#f3411c8ddf9f692322fe05e7017a1888e47f78f1"
|
|
||||||
dependencies:
|
|
||||||
buffer-writer "1.0.1"
|
|
||||||
js-string-escape "1.0.1"
|
|
||||||
packet-reader "0.3.1"
|
|
||||||
pg-connection-string "0.1.3"
|
|
||||||
pg-pool "~2.0.3"
|
|
||||||
pg-types "~1.12.1"
|
|
||||||
pgpass "1.x"
|
|
||||||
semver "4.3.2"
|
|
||||||
|
|
||||||
pgpass@1.x:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.2.tgz#2a7bb41b6065b67907e91da1b07c1847c877b306"
|
|
||||||
dependencies:
|
|
||||||
split "^1.0.0"
|
|
||||||
|
|
||||||
pify@^2.0.0, pify@^2.3.0:
|
pify@^2.0.0, pify@^2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||||
|
@ -6500,24 +6390,6 @@ postcss@^6.0.1, postcss@^6.0.20:
|
||||||
source-map "^0.6.1"
|
source-map "^0.6.1"
|
||||||
supports-color "^5.4.0"
|
supports-color "^5.4.0"
|
||||||
|
|
||||||
postgres-array@~1.0.0:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-1.0.2.tgz#8e0b32eb03bf77a5c0a7851e0441c169a256a238"
|
|
||||||
|
|
||||||
postgres-bytea@~1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35"
|
|
||||||
|
|
||||||
postgres-date@~1.0.0:
|
|
||||||
version "1.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.3.tgz#e2d89702efdb258ff9d9cee0fe91bd06975257a8"
|
|
||||||
|
|
||||||
postgres-interval@^1.1.0:
|
|
||||||
version "1.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.1.1.tgz#acdb0f897b4b1c6e496d9d4e0a853e1c428f06f0"
|
|
||||||
dependencies:
|
|
||||||
xtend "^4.0.0"
|
|
||||||
|
|
||||||
prelude-ls@~1.1.2:
|
prelude-ls@~1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
||||||
|
@ -6817,7 +6689,7 @@ raven@^2.6.0:
|
||||||
timed-out "4.0.1"
|
timed-out "4.0.1"
|
||||||
uuid "3.0.0"
|
uuid "3.0.0"
|
||||||
|
|
||||||
raw-body@2.3.2, raw-body@^2.1.3, raw-body@^2.2.0:
|
raw-body@2.3.2, raw-body@^2.2.0:
|
||||||
version "2.3.2"
|
version "2.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
|
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -7206,7 +7078,7 @@ resolve-from@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
|
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
|
||||||
|
|
||||||
resolve-path@^1.0.0, resolve-path@^1.4.0:
|
resolve-path@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7"
|
resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -7329,10 +7201,6 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0,
|
||||||
version "5.1.2"
|
version "5.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||||
|
|
||||||
safe-buffer@~5.0.1:
|
|
||||||
version "5.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
|
|
||||||
|
|
||||||
safe-regex@^1.1.0:
|
safe-regex@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
|
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
|
||||||
|
@ -7398,10 +7266,6 @@ semver-diff@^2.0.0:
|
||||||
version "5.5.0"
|
version "5.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
|
||||||
|
|
||||||
semver@4.3.2:
|
|
||||||
version "4.3.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7"
|
|
||||||
|
|
||||||
semver@~5.3.0:
|
semver@~5.3.0:
|
||||||
version "5.3.0"
|
version "5.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
|
||||||
|
@ -7729,25 +7593,6 @@ spdx-license-ids@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87"
|
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87"
|
||||||
|
|
||||||
spdy-push@^1.0.0:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/spdy-push/-/spdy-push-1.0.2.tgz#8cf38ade1be117d0440a7b9420b7f1a34368fe9f"
|
|
||||||
dependencies:
|
|
||||||
bluebird "^2.3.2"
|
|
||||||
bytes "^2.1.0"
|
|
||||||
compressible "2"
|
|
||||||
debug "*"
|
|
||||||
destroy "^1.0.3"
|
|
||||||
mime-types "2"
|
|
||||||
mz "^2.0.0"
|
|
||||||
native-or-bluebird "^1.1.0"
|
|
||||||
raw-body "^2.1.3"
|
|
||||||
spdy "^1.32.4"
|
|
||||||
|
|
||||||
spdy@^1.32.4:
|
|
||||||
version "1.32.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/spdy/-/spdy-1.32.5.tgz#70eff23cde4e97d52a445f65afddcc5695eb5edb"
|
|
||||||
|
|
||||||
split-string@^3.0.1, split-string@^3.0.2:
|
split-string@^3.0.1, split-string@^3.0.2:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
|
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
|
||||||
|
@ -7760,12 +7605,6 @@ split@0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
through "2"
|
through "2"
|
||||||
|
|
||||||
split@^1.0.0:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9"
|
|
||||||
dependencies:
|
|
||||||
through "2"
|
|
||||||
|
|
||||||
spotify-web-api-node@^3.1.0:
|
spotify-web-api-node@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/spotify-web-api-node/-/spotify-web-api-node-3.1.0.tgz#7fda3d80e08363a3003f058eda07758db5bba684"
|
resolved "https://registry.yarnpkg.com/spotify-web-api-node/-/spotify-web-api-node-3.1.0.tgz#7fda3d80e08363a3003f058eda07758db5bba684"
|
||||||
|
@ -7947,13 +7786,6 @@ strip-json-comments@~2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||||
|
|
||||||
style-loader@^0.21.0:
|
|
||||||
version "0.21.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852"
|
|
||||||
dependencies:
|
|
||||||
loader-utils "^1.1.0"
|
|
||||||
schema-utils "^0.4.5"
|
|
||||||
|
|
||||||
stylus@0.54.5, stylus@~0.54.5:
|
stylus@0.54.5, stylus@~0.54.5:
|
||||||
version "0.54.5"
|
version "0.54.5"
|
||||||
resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79"
|
resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79"
|
||||||
|
@ -8279,7 +8111,7 @@ uglify-to-browserify@~1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
|
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
|
||||||
|
|
||||||
uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.5:
|
uglifyjs-webpack-plugin@^1.2.4:
|
||||||
version "1.2.5"
|
version "1.2.5"
|
||||||
resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz#2ef8387c8f1a903ec5e44fa36f9f3cbdcea67641"
|
resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz#2ef8387c8f1a903ec5e44fa36f9f3cbdcea67641"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -8292,10 +8124,6 @@ uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.5:
|
||||||
webpack-sources "^1.1.0"
|
webpack-sources "^1.1.0"
|
||||||
worker-farm "^1.5.2"
|
worker-farm "^1.5.2"
|
||||||
|
|
||||||
ultron@~1.1.0:
|
|
||||||
version "1.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
|
|
||||||
|
|
||||||
undefsafe@^2.0.2:
|
undefsafe@^2.0.2:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76"
|
resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76"
|
||||||
|
@ -8814,13 +8642,6 @@ write@^0.2.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
mkdirp "^0.5.1"
|
mkdirp "^0.5.1"
|
||||||
|
|
||||||
ws@^2.3.1:
|
|
||||||
version "2.3.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-2.3.1.tgz#6b94b3e447cb6a363f785eaf94af6359e8e81c80"
|
|
||||||
dependencies:
|
|
||||||
safe-buffer "~5.0.1"
|
|
||||||
ultron "~1.1.0"
|
|
||||||
|
|
||||||
xdg-basedir@^3.0.0:
|
xdg-basedir@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
|
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue