diff --git a/src/adonisjs/app/Controllers/Http/AuthController.js b/src/adonisjs/app/Controllers/Http/AuthController.js index 30be87c..275af93 100644 --- a/src/adonisjs/app/Controllers/Http/AuthController.js +++ b/src/adonisjs/app/Controllers/Http/AuthController.js @@ -2,59 +2,51 @@ const Logger = use('Logger') -const User = use('App/Models/v1/User'); +const User = use('App/Models/v1/User') class AuthController { - async login({ request, auth, response, session }) { - console.log('v2/session') - Logger.info('login attempt via v2/auth/login (SESSION)') - try { - let { email, password } = request.all(); - // if (await auth.remember(true).attempt(email, password)) { - if (await auth.remember(true).attempt(email, password)) { - - console.log('------------------------------- attempt') - // console.log(session.all()) - - let user = await User.findBy('email', email) - // let token = await auth.generate(user) - - // let authenticatedUser = new User() - // authenticatedUser.id = user.id - // authenticatedUser.email = user.email - // authenticatedUser.username = user.username - - Object.assign(user, { 'adonisAuth': session.get('adonis-auth') }) - // return response.json('Logged in successfully') - - // let adonis_session = session.get('adonis-auth') - console.log(session.all()) - // console.log(auth) - return response.json(user) - - } - } - catch (e) { - console.log(e) - return response.status(e.status).json({ message: e.message }) - } + async login ({ request, auth, response, session }) { + console.log('v2/session') + Logger.info('login attempt via v2/auth/login (SESSION)') + try { + const { email, password } = request.all() + // if (await auth.remember(true).attempt(email, password)) { + if (await auth.remember(true).attempt(email, password)) { + console.log('------------------------------- attempt') + // console.log(session.all()) + + const user = await User.findBy('email', email) + // let token = await auth.generate(user) + + // let authenticatedUser = new User() + // authenticatedUser.id = user.id + // authenticatedUser.email = user.email + // authenticatedUser.username = user.username + + Object.assign(user, { adonisAuth: session.get('adonis-auth') }) + // return response.json('Logged in successfully') + + // let adonis_session = session.get('adonis-auth') + console.log(session.all()) + // console.log(auth) + return response.json(user) + } + } catch (e) { + console.log(e) + return response.status(e.status).json({ message: e.message }) } + } - async logout({ auth, response }) { - try{ - await auth.logout() - - return response.json('Logged out successfuly') - }catch(e){ - console.log(e) - return response.status(500).json(e.message) - } - + async logout ({ auth, response }) { + try { + await auth.logout() + + return response.json('Logged out successfuly') + } catch (e) { + console.log(e) + return response.status(500).json(e.message) } + } } module.exports = AuthController - - - - diff --git a/src/adonisjs/app/Controllers/Http/TestController.js b/src/adonisjs/app/Controllers/Http/TestController.js index 18d0094..e786d21 100644 --- a/src/adonisjs/app/Controllers/Http/TestController.js +++ b/src/adonisjs/app/Controllers/Http/TestController.js @@ -1,52 +1,52 @@ 'use strict' -const Case = use('App/Models/v1/Case'); -const CloudinaryService = use('App/Services/CloudinaryService'); +const Case = use('App/Models/v1/Case') +const CloudinaryService = use('App/Services/CloudinaryService') class TestController { - async test() { - console.log('Method reached') - - // const profilePic = request.file('profile_pic', { - // types: ['image'], - // size: '2mb' - // }) - - // await profilePic.move(Helpers.tmpPath('uploads'), { - // name: 'custom-name.jpg', - // overwrite: true - // }) - - // if (!profilePic.moved()) { - // return profilePic.error() - // } - // return 'File moved' - } - - async index({ view }) { - const cases = await Case.all(); - // console.log(cases.toJSON()) - return view.render('index', { cases: cases.toJSON() }) - } - - async create({ request, response, view, session }) { - console.log('chegou') - const { name } = request.all(); - const file = request.file('image'); - try { - const cloudinaryResponse = await CloudinaryService.v2.uploader.upload(file.tmpPath, {folder: 'harena'}); - let c = new Case(); - c.name = name; - c.image_url = cloudinaryResponse.secure_url; - await c.save(); - session.flash({success: 'Successfully added case'}); - return response.redirect('back'); - } catch (e) { - console.log(e) - session.flash({error: 'Error Uploading Image'}); - return response.redirect('/') - } + async test () { + console.log('Method reached') + + // const profilePic = request.file('profile_pic', { + // types: ['image'], + // size: '2mb' + // }) + + // await profilePic.move(Helpers.tmpPath('uploads'), { + // name: 'custom-name.jpg', + // overwrite: true + // }) + + // if (!profilePic.moved()) { + // return profilePic.error() + // } + // return 'File moved' + } + + async index ({ view }) { + const cases = await Case.all() + // console.log(cases.toJSON()) + return view.render('index', { cases: cases.toJSON() }) + } + + async create ({ request, response, view, session }) { + console.log('chegou') + const { name } = request.all() + const file = request.file('image') + try { + const cloudinaryResponse = await CloudinaryService.v2.uploader.upload(file.tmpPath, { folder: 'harena' }) + const c = new Case() + c.name = name + c.image_url = cloudinaryResponse.secure_url + await c.save() + session.flash({ success: 'Successfully added case' }) + return response.redirect('back') + } catch (e) { + console.log(e) + session.flash({ error: 'Error Uploading Image' }) + return response.redirect('/') } + } } module.exports = TestController diff --git a/src/adonisjs/app/Controllers/Http/v1/AdminController.js b/src/adonisjs/app/Controllers/Http/v1/AdminController.js index 6d228c4..b8d6e21 100644 --- a/src/adonisjs/app/Controllers/Http/v1/AdminController.js +++ b/src/adonisjs/app/Controllers/Http/v1/AdminController.js @@ -6,113 +6,106 @@ const Database = use('Database') -const Role = use('Adonis/Acl/Role'); -const Permission = use('Adonis/Acl/Permission'); -const User = use('App/Models/v1/User'); +const Role = use('Adonis/Acl/Role') +const Permission = use('Adonis/Acl/Permission') +const User = use('App/Models/v1/User') -const uuidv4 = require('uuid/v4'); +const uuidv4 = require('uuid/v4') class AdminController { + async create_role ({ request, response }) { + try { + const role = new Role() + role.id = await uuidv4() - async create_role({ request, response }) { - try { + const r = request.all() + role.merge(r) - let role = new Role() - role.id = await uuidv4() + await role.save() - let r = request.all() - role.merge(r) + return response.json(role) + } catch (e) { + console.log(e) - await role.save() - - return response.json(role) - } catch(e){ - console.log(e) - - if (e.code === 'ER_DUP_ENTRY') { - return response.status(409).json({ code: e.code, message: e.sqlMessage }) - } - return response.status(500).json({ message: e.toString() }) - } + if (e.code === 'ER_DUP_ENTRY') { + return response.status(409).json({ code: e.code, message: e.sqlMessage }) + } + return response.status(500).json({ message: e.toString() }) } - - - async linkRoleUser({ request, response }) { - try { - const {userId, roleId} = request.post() - let user = await User.find(userId) - let role = await Role.find(roleId) - - await user.roles().attach(role.id) - return response.json(role.slug + ' role has given to the user ' + user.username) - } catch (e) { - console.log(e) - return response.status(500).json(e) - } + } + + async linkRoleUser ({ request, response }) { + try { + const { userId, roleId } = request.post() + const user = await User.find(userId) + const role = await Role.find(roleId) + + await user.roles().attach(role.id) + return response.json(role.slug + ' role has given to the user ' + user.username) + } catch (e) { + console.log(e) + return response.status(500).json(e) } + } - async link_role_permission({ request, response }) { - try { - const {permission_id, role_id} = request.post() - let permission = await User.find(permission_id) - let role = await Role.find(role_id) + async link_role_permission ({ request, response }) { + try { + const { permission_id, role_id } = request.post() + const permission = await User.find(permission_id) + const role = await Role.find(role_id) - await role.permissions().attach(permission.id) + await role.permissions().attach(permission.id) - role.permissions = await role.permissions().fetch() + role.permissions = await role.permissions().fetch() - return response.json(role) - } catch (e) { - console.log(e) - if (e.code === 'ER_DUP_ENTRY') { - return response.status(409).json({ message: e.message }) - } + return response.json(role) + } catch (e) { + console.log(e) + if (e.code === 'ER_DUP_ENTRY') { + return response.status(409).json({ message: e.message }) + } - return response.status(500).json({ message: e.toString() }) - } + return response.status(500).json({ message: e.toString() }) } - - async list_roles({ response }) { - try{ - let roles = await Role.all() - return response.json(roles) - } catch(e){ - return response.status(500).json({ message: e.toString() }) - } + } + + async list_roles ({ response }) { + try { + const roles = await Role.all() + return response.json(roles) + } catch (e) { + return response.status(500).json({ message: e.toString() }) } + } + async list_roles_by_user ({ params, response }) { + try { + const user = await User.find(params.id) - - async list_roles_by_user({ params, response }) { - try{ - let user = await User.find(params.id) - - return response.json(await user.roles().fetch()) - } catch(e){ - console.log(e) - return response.status(500).json({ message: e.toString() }) - } + return response.json(await user.roles().fetch()) + } catch (e) { + console.log(e) + return response.status(500).json({ message: e.toString() }) } - - - - async revoke_tokens({ auth, params, response }) { - try{ - // await user.tokens().update({ is_revoked: true }) -// console.log('antes') -// console.log(await auth.listTokens()) -// // const affectedRows = await Database -// // .table('tokens').update('is_revoked', true) -// // console.log(affectedRows) -// console.log('depois') -// console.log(await auth.listTokens()) -await auth.revokeTokens() - return response.json('tokens revoked') - } catch(e){ - console.log(e) - return response.status(500).json({ message: e.message }) - } + } + + async revoke_tokens ({ auth, params, response }) { + try { + // await user.tokens().update({ is_revoked: true }) + // console.log('antes') + // console.log(await auth.listTokens()) + // // const affectedRows = await Database + // // .table('tokens').update('is_revoked', true) + // // console.log(affectedRows) + // console.log('depois') + // console.log(await auth.listTokens()) + await auth.revokeTokens() + return response.json('tokens revoked') + } catch (e) { + console.log(e) + return response.status(500).json({ message: e.message }) } + } } module.exports = AdminController diff --git a/src/adonisjs/app/Controllers/Http/v1/ArtifactController.js b/src/adonisjs/app/Controllers/Http/v1/ArtifactController.js index 1633513..860ca7f 100644 --- a/src/adonisjs/app/Controllers/Http/v1/ArtifactController.js +++ b/src/adonisjs/app/Controllers/Http/v1/ArtifactController.js @@ -1,108 +1,101 @@ 'use strict' -const Helpers = use('Helpers') -const Env = use('Env') -const uuid4 = require('uuid/v4'); +const Helpers = use('Helpers') +const Env = use('Env') +const uuid4 = require('uuid/v4') -const Artifact = use('App/Models/v1/Artifact'); -const Case = use('App/Models/v1/Case'); -const Quest = use('App/Models/v1/Quest'); -const CaseArtifacts = use('App/Models/CaseArtifact'); +const Artifact = use('App/Models/v1/Artifact') +const Case = use('App/Models/v1/Case') +const Quest = use('App/Models/v1/Quest') +const CaseArtifacts = use('App/Models/CaseArtifact') class ArtifactController { - - constructor(){ + constructor () { // See this for more on MIM types: https://docs.openx.com/Content/publishers/adunit_linearvideo_mime_types.html - this.validationOptions = { - size: '100mb', - types: ['image','video'], - extnames: ['png', 'jpg', 'jpeg', 'gif','mp4','avi', '.wmv'] + this.validationOptions = { + size: '100mb', + types: ['image', 'video'], + extnames: ['png', 'jpg', 'jpeg', 'gif', 'mp4', 'avi', '.wmv'] } - this.relativePath = '/resources/artifacts/' - this.baseUrl = Env.getOrFail('APP_URL') + this.relativePath = '/resources/artifacts/' + this.baseUrl = Env.getOrFail('APP_URL') } + async store ({ request, auth, response }) { + try { + const file = request.file('file', this.validationOptions) + const questId = request.input('questId') + const caseId = request.input('caseId', null) - async store({ request, auth, response }) { - try{ - - - let file = request.file('file', this.validationOptions) - let questId = request.input('questId') - let caseId = request.input('caseId', null) - - let artifactId = await uuid4() - let artifactFileName = artifactId + "." + file.extname - let fs_path = Helpers.publicPath(this.relativePath) + const artifactId = await uuid4() + const artifactFileName = artifactId + '.' + file.extname + let fs_path = Helpers.publicPath(this.relativePath) - let artifact = new Artifact() - artifact.id = artifactId + const artifact = new Artifact() + artifact.id = artifactId - let bodyMessage = { filename: artifactFileName, + const bodyMessage = { + filename: artifactFileName, size_in_bytes: file.size, - type: file.type, - subtype: file.subtype, - extension: file.extname, - status: file.status + type: file.type, + subtype: file.subtype, + extension: file.extname, + status: file.status } - if (caseId != null && questId == null){ - var c = await Case.find(caseId) - - if (c == null) - return response.json({ message: "Case id not found" }) - - fs_path += 'cases/' + caseId + '/' - let case_relative_path = this.relativePath + 'cases/' + caseId + '/' - - artifact.relative_path = case_relative_path + artifactFileName - - let ca = new CaseArtifacts() + if (caseId != null && questId == null) { + var c = await Case.find(caseId) + + if (c == null) { return response.json({ message: 'Case id not found' }) } + + fs_path += 'cases/' + caseId + '/' + const case_relative_path = this.relativePath + 'cases/' + caseId + '/' + + artifact.relative_path = case_relative_path + artifactFileName + + const ca = new CaseArtifacts() ca.case_id = c.id - await ca.artifact().associate(artifact) + await ca.artifact().associate(artifact) + + bodyMessage.case = c + bodyMessage.url = this.baseUrl + artifact.relative_path + } - bodyMessage.case = c - bodyMessage.url = this.baseUrl+artifact.relative_path - } + if (questId != null && caseId == null) { + var quest = await Quest.find(questId) - if (questId != null && caseId == null){ - var quest = await Quest.find(questId) + if (quest == null) { + return response.json({ message: 'Quest id not found' }) + } - if (quest == null){ - return response.json({ message: "Quest id not found" }) - } + const questRelativePath = this.relativePath + 'quests/' + quest.id + '/' - let questRelativePath = this.relativePath + 'quests/' + quest.id + '/' + artifact.relative_path = questRelativePath + artifactFileName - artifact.relative_path = questRelativePath + artifactFileName - - await quest.artifact().associate(artifact) + await quest.artifact().associate(artifact) - fs_path += 'quests/' + quest.id + '/' + fs_path += 'quests/' + quest.id + '/' - bodyMessage.quest = quest - bodyMessage.url = this.baseUrl+artifact.relative_path - } + bodyMessage.quest = quest + bodyMessage.url = this.baseUrl + artifact.relative_path + } - if (questId == null && caseId == null){ - artifact.relative_path = this.relativePath + artifactFileName - bodyMessage.url = this.baseUrl+artifact.relative_path - } + if (questId == null && caseId == null) { + artifact.relative_path = this.relativePath + artifactFileName + bodyMessage.url = this.baseUrl + artifact.relative_path + } - await file.move(fs_path, {name: artifactFileName, overwrite: false}) - await auth.user.artifacts().save(artifact) + await file.move(fs_path, { name: artifactFileName, overwrite: false }) + await auth.user.artifacts().save(artifact) - return response.json(bodyMessage) - - } catch(e){ - console.log(e) - return response.status(e.status).json({ message: e.message }) + return response.json(bodyMessage) + } catch (e) { + console.log(e) + return response.status(e.status).json({ message: e.message }) } } - } module.exports = ArtifactController - diff --git a/src/adonisjs/app/Controllers/Http/v1/AuthController.js b/src/adonisjs/app/Controllers/Http/v1/AuthController.js index ab1e8f4..1ec2d37 100644 --- a/src/adonisjs/app/Controllers/Http/v1/AuthController.js +++ b/src/adonisjs/app/Controllers/Http/v1/AuthController.js @@ -1,62 +1,58 @@ 'use strict' -const User = use('App/Models/v1/User'); -const Token = use('App/Models/v1/Token'); +const User = use('App/Models/v1/User') +const Token = use('App/Models/v1/Token') const Logger = use('Logger') class AuthController { - - async checkToken({request, auth, response}){ + async checkToken ({ request, auth, response }) { try { - console.log('=================Checking token...'); + console.log('====Checking token...') await auth.check() - response.json('token valid'); + response.json('token valid') + console.log('====Token valid') } catch (error) { - response.json('token invalid') + console.log('====Token invalid') } } - async login({ request, auth, response }) { + async login ({ request, auth, response }) { // console.log(request.all()) Logger.info('login attempt via v1/auth/login (JWT)') - let { email, password, refresh_token } = request.all(); + let { email, password, refresh_token } = request.all() console.log(password) - let user = "" - let token = "" + let user = '' + let token = '' - try{ + try { await auth.check() return response.json('user is signed already') - } catch(e) { - + } catch (e) { // token expired - if (e.code == 'E_JWT_TOKEN_EXPIRED'){ + if (e.code == 'E_JWT_TOKEN_EXPIRED') { token = await auth.generateForRefreshToken(refresh_token) Object.entries(token).forEach(entry => { - if (entry[0] == 'refreshToken'){ + if (entry[0] == 'refreshToken') { refresh_token = entry[1] } - }); + }) Logger.info('expired token') - } // unloged user - if (e.code == 'E_INVALID_JWT_TOKEN'){ - try{ + if (e.code == 'E_INVALID_JWT_TOKEN') { + try { token = await auth.withRefreshToken().attempt(email, password) Logger.info('newly generated token') - - } catch(e){ + } catch (e) { console.log(e) } } // generic error - if (token == "") - return response.status(e.status).json(e.message) + if (token == '') { return response.status(e.status).json(e.message) } user = await User.findBy('email', email) Object.assign(user, token) @@ -65,33 +61,31 @@ class AuthController { } } - async login2({ request, auth, response }) { - try{ - let refresh_token = request.input('access_code'); + async login2 ({ request, auth, response }) { + try { + const refresh_token = request.input('access_code') - let token = await auth.generateForRefreshToken(refresh_token) + const token = await auth.generateForRefreshToken(refresh_token) return response.json(token) - }catch(e){ + } catch (e) { console.log(e) return response.status(500).json(e.message) } - } - async logout({ auth, response }) { - try{ + async logout ({ auth, response }) { + try { Logger.info('logout attempt via v1/auth/logout (JWT)') const refreshToken = auth.getAuthHeader() - //console.log(refreshToken); + // console.log(refreshToken); await auth.revokeTokens(refreshToken) return response.json('successfull logout') - }catch(e){ + } catch (e) { console.log(e) return response.status(500).json(e.message) } - } } diff --git a/src/adonisjs/app/Controllers/Http/v1/CaseController.js b/src/adonisjs/app/Controllers/Http/v1/CaseController.js index 1c8df5c..467e55d 100644 --- a/src/adonisjs/app/Controllers/Http/v1/CaseController.js +++ b/src/adonisjs/app/Controllers/Http/v1/CaseController.js @@ -6,21 +6,20 @@ const Database = use('Database') -const User = use('App/Models/v1/User'); -const Case = use('App/Models/v1/Case'); +const User = use('App/Models/v1/User') +const Case = use('App/Models/v1/Case') const CaseVersion = use('App/Models/v1/CaseVersion') -const uuidv4 = require('uuid/v4'); +const uuidv4 = require('uuid/v4') /** * Resourceful controller for interacting with cases */ class CaseController { - /** Show a list of all cases */ - async index({ request, response, }) { + async index ({ request, response }) { try { - let cases = await Case.all() + const cases = await Case.all() return response.json(cases) - } catch(e){ + } catch (e) { return response.status(500).json({ message: e.message }) } } @@ -34,16 +33,15 @@ class CaseController { * @param {Response} ctx.response * @param {View} ctx.view */ - async show({ params, response }) { + async show ({ params, response }) { try { + const c = await Case.find(params.id) - let c = await Case.find( params.id ) - - if (c != null){ - let versions = await CaseVersion.query() - .where('case_id', '=', params.id ) - .orderBy('created_at', 'asc') - .fetch() + if (c != null) { + const versions = await CaseVersion.query() + .where('case_id', '=', params.id) + .orderBy('created_at', 'asc') + .fetch() c.source = versions.last().source c.versions = versions @@ -54,13 +52,13 @@ class CaseController { } } - /** * Create/save a new case.*/ - async store({ request, auth, response }) { + /** * Create/save a new case. */ + async store ({ request, auth, response }) { try { // let c = await Case.findBy('title', request.input('title')) // if (c == null) { - let c = new Case() + const c = new Case() c.id = await uuidv4() c.title = request.input('title') c.description = request.input('description') @@ -70,7 +68,7 @@ class CaseController { c.keywords = request.input('keywords') c.original_date = request.input('original_date') - let cv = new CaseVersion() + const cv = new CaseVersion() cv.id = await uuidv4() cv.source = request.input('source') @@ -82,8 +80,7 @@ class CaseController { c.versions = await c.versions().fetch() c.users = await c.users().fetch() return response.json(c) - // } else return response.status(500).json('title already exists') - + // } else return response.status(500).json('title already exists') } catch (e) { console.log(e) return response.status(500).json({ message: e.message }) @@ -91,27 +88,26 @@ class CaseController { } /** * Update case details. PUT or PATCH case/:id */ - async update({ params, request, response }) { + async update ({ params, request, response }) { try { - let c = await Case.find(params.id) - - if (c != null){ - c.title = request.input('title') - c.description = request.input('description') - c.language = request.input('language') - c.domain = request.input('domain') - c.specialty = request.input('specialty') - c.keywords = request.input('keywords') - c.original_date = request.input('originalDate') - - let cv = new CaseVersion() - cv.source = request.input('source') - cv.id = await uuidv4() - await c.versions().save(cv) - await c.save() - return response.json(c) - } else return response.status(500).json('case not found') - + const c = await Case.find(params.id) + + if (c != null) { + c.title = request.input('title') + c.description = request.input('description') + c.language = request.input('language') + c.domain = request.input('domain') + c.specialty = request.input('specialty') + c.keywords = request.input('keywords') + c.original_date = request.input('originalDate') + + const cv = new CaseVersion() + cv.source = request.input('source') + cv.id = await uuidv4() + await c.versions().save(cv) + await c.save() + return response.json(c) + } else return response.status(500).json('case not found') } catch (e) { console.log(e) return response.status(500).json({ message: e }) @@ -126,13 +122,12 @@ class CaseController { * @param {Request} ctx.request * @param {Response} ctx.response */ - async destroy({ params, response }) { + async destroy ({ params, response }) { const trx = await Database.beginTransaction() try { + const c = await Case.findBy('id', params.id) - let c = await Case.findBy('id', params.id) - - if (c != null){ + if (c != null) { await c.versions().delete() await c.users().detach() await c.quests().detach() @@ -154,36 +149,33 @@ class CaseController { } } - async share({ request, auth, response }) { + async share ({ request, auth, response }) { try { - let logged_user = auth.user.id - let {user_id, case_id} = request.post() + const logged_user = auth.user.id + const { user_id, case_id } = request.post() - if (logged_user == user_id){ + if (logged_user == user_id) { return response.status(500).json('cannot share a case with herself') } - let user = await User.find(user_id) + const user = await User.find(user_id) // Check if target user is an author - let sql_return = await Database + const sql_return = await Database .select('slug') .from('roles') .where('slug', '=', 'author') .leftJoin('role_user', 'roles.id', 'role_user.role_id') - .where('role_user.user_id', '=' , user_id) + .where('role_user.user_id', '=', user_id) - if (sql_return[0] != undefined){ + if (sql_return[0] != undefined) { await user.cases().attach(case_id, (row) => { row.role = 1 }) return response.json('case successfully shared') - } else { return response.status(500).json('target user is not an author') } - - } catch (e) { console.log(e) return response.status(e.status).json({ message: e.toString() }) diff --git a/src/adonisjs/app/Controllers/Http/v1/InstitutionController.js b/src/adonisjs/app/Controllers/Http/v1/InstitutionController.js index 97bb86e..2bf94a9 100644 --- a/src/adonisjs/app/Controllers/Http/v1/InstitutionController.js +++ b/src/adonisjs/app/Controllers/Http/v1/InstitutionController.js @@ -1,15 +1,15 @@ 'use strict' -const Institution = use('App/Models/v1/Institution'); +const Institution = use('App/Models/v1/Institution') -const uuidv4 = require('uuid/v4'); +const uuidv4 = require('uuid/v4') class InstitutionController { - async store({ request, response }) { - try{ - let institution = new Institution() + async store ({ request, response }) { + try { + const institution = new Institution() - institution.id = await uuidv4() + institution.id = await uuidv4() institution.acronym = request.input('acronym') institution.title = request.input('title') institution.country = request.input('country') @@ -19,10 +19,9 @@ class InstitutionController { response.json('institution successfully created') } catch (e) { console.log(e) - return response.status(500).json({ message: e.message }) + return response.status(500).json({ message: e.message }) } - } - + } } module.exports = InstitutionController diff --git a/src/adonisjs/app/Controllers/Http/v1/UserController.js b/src/adonisjs/app/Controllers/Http/v1/UserController.js index 24c3b34..7bc8bd0 100644 --- a/src/adonisjs/app/Controllers/Http/v1/UserController.js +++ b/src/adonisjs/app/Controllers/Http/v1/UserController.js @@ -5,16 +5,16 @@ /** @typedef {import('@adonisjs/framework/src/View')} View */ const Database = use('Database') -const Helpers = use('Helpers') +const Helpers = use('Helpers') -const User = use('App/Models/v1/User'); -const Institution = use('App/Models/v1/Institution'); -const Artifact = use('App/Models/v1/Artifact'); -const Quest = use('App/Models/v1/Quest'); -const Property = use('App/Models/Property'); +const User = use('App/Models/v1/User') +const Institution = use('App/Models/v1/Institution') +const Artifact = use('App/Models/v1/Artifact') +const Quest = use('App/Models/v1/Quest') +const Property = use('App/Models/Property') -const uuidv4 = require('uuid/v4'); -const Env = use('Env') +const uuidv4 = require('uuid/v4') +const Env = use('Env') class UserController { /** @@ -26,12 +26,11 @@ class UserController { * @param {Response} ctx.response * @param {View} ctx.view */ - async index({ request, response, view, auth }) { - try{ - - let users = await User.all() + async index ({ request, response, view, auth }) { + try { + const users = await User.all() return response.json(users) - } catch(e){ + } catch (e) { return response.status(e.status).json({ message: e.message }) } } @@ -45,14 +44,12 @@ class UserController { * @param {Response} ctx.response * @param {View} ctx.view */ - async show({ params, request, response, view }) { - try{ - let user = await User.find(params.id) - - if (user != null) - return response.json(user) - else return response.status(500).json('user not found') - } catch(e){ + async show ({ params, request, response, view }) { + try { + const user = await User.find(params.id) + + if (user != null) { return response.json(user) } else return response.status(500).json('user not found') + } catch (e) { console.log(e) return response.status(e.status).json({ message: e.message }) } @@ -66,22 +63,22 @@ class UserController { * @param {Request} ctx.request * @param {Response} ctx.response */ - async store({ request, auth, response }) { + async store ({ request, auth, response }) { try { - let user = new User() + const user = new User() - user.id = await uuidv4() + user.id = await uuidv4() user.username = request.input('username') user.email = request.input('email') user.password = request.input('password') user.login = request.input('login') - let request_institution = request.input('institution') + const request_institution = request.input('institution') if (request_institution != null) { - let institution = await Institution.findBy('acronym',request.input('institution')) + const institution = await Institution.findBy('acronym', request.input('institution')) await user.institution().associate(institution) - } else{ + } else { await user.save() } @@ -105,18 +102,17 @@ class UserController { * @param {Response} ctx.response */ - async update({ params, request, response, auth }) { + async update ({ params, request, response, auth }) { try { - let newUser = request.all() + const newUser = request.all() - let storeduser = await User.find(params.id) + const storeduser = await User.find(params.id) - if (storeduser != null){ + if (storeduser != null) { await storeduser.merge(newUser) await storeduser.save() return response.json(storeduser) } else return response.status(500).json('user not found') - } catch (e) { return response.status(e.status).json({ message: e.message }) } @@ -124,48 +120,47 @@ class UserController { /** Delete a user with id. * DELETE user/:id */ - async destroy({ params, response, auth }) { - try{ - let user = await User.find(params.id) + async destroy ({ params, response, auth }) { + try { + const user = await User.find(params.id) if (user != null) { await user.delete() } else return response.json('user not found') return response.json(user) - }catch(e){ + } catch (e) { return response.status(e.status).json({ message: e.message }) } } - async list_quests({ request, response, auth }) { - try{ - - let user = await auth.user + async list_quests ({ request, response, auth }) { + try { + const user = await auth.user return response.json(await user.quests().fetch()) - } catch(e){ + } catch (e) { console.log(e) return response.status(500).json({ message: e.message }) } } - async list_cases({ params, response, auth }) { - try{ - let user = await auth.user + async list_cases ({ params, response, auth }) { + try { + const user = await auth.user - let cases = await user.cases().fetch() + const cases = await user.cases().fetch() return response.json(cases) - } catch(e){ + } catch (e) { console.log(e) return response.status(500).json({ message: e.message }) } } - async list_cases_by_quests({ params, response, auth }) { - try{ - let user = await auth.user + async list_cases_by_quests ({ params, response, auth }) { + try { + const user = await auth.user Database .select('*') @@ -173,23 +168,20 @@ class UserController { .where('user_id', user.id) .leftJoin('cases', 'quests.case_id', 'cases.id') - let quests = await user.quests().fetch() - - let cases = await user.cases().fetch() + const quests = await user.quests().fetch() - - } catch(e){ + const cases = await user.cases().fetch() + } catch (e) { console.log(e) return response.status(500).json({ message: e.message }) } } + async listContributingQuests ({ response, auth }) { + try { + const user = await auth.user - async listContributingQuests({ response, auth }) { - try{ - let user = await auth.user - - let resultQuest = await Database + const resultQuest = await Database .select('*') .from('quests_users') .where('user_id', user.id) @@ -197,35 +189,33 @@ class UserController { .leftJoin('quests', 'quests_users.quest_id', 'quests.id') const base_url = Env.getOrFail('APP_URL') - let quests = [] + const quests = [] for (var i = 0; i < resultQuest.length; i++) { - let questJSON = {} - + const questJSON = {} + questJSON.id = resultQuest[i].quest_id questJSON.title = resultQuest[i].title questJSON.color = resultQuest[i].color - let artifact = await Artifact.find(resultQuest[i].artifact_id) - questJSON.url = base_url+artifact.relative_path + const artifact = await Artifact.find(resultQuest[i].artifact_id) + questJSON.url = base_url + artifact.relative_path quests.push(questJSON) } return response.json(quests) - - } catch(e){ + } catch (e) { console.log(e) return response.status(500).json({ message: e.message }) } } - - async listPlayingQuests({ response, auth }) { - try{ - let user = await auth.user + async listPlayingQuests ({ response, auth }) { + try { + const user = await auth.user - let resultQuest = await Database + const resultQuest = await Database .select('*') .from('quests_users') .where('user_id', user.id) @@ -233,17 +223,17 @@ class UserController { .leftJoin('quests', 'quests_users.quest_id', 'quests.id') const base_url = Env.getOrFail('APP_URL') - let quests = [] + const quests = [] for (var i = 0; i < resultQuest.length; i++) { - let questJSON = {} - + const questJSON = {} + questJSON.id = resultQuest[i].quest_id questJSON.title = resultQuest[i].title questJSON.color = resultQuest[i].color - let artifact = await Artifact.find(resultQuest[i].artifact_id) - questJSON.url = base_url+artifact.relative_path + const artifact = await Artifact.find(resultQuest[i].artifact_id) + questJSON.url = base_url + artifact.relative_path // let properties = await artifact.properties().fetch() @@ -270,13 +260,11 @@ class UserController { } return response.json(quests) - - } catch(e){ + } catch (e) { console.log(e) return response.status(500).json({ message: e.message }) } } - } module.exports = UserController diff --git a/src/adonisjs/app/Middleware/CheckPermissionForGivenCase.js b/src/adonisjs/app/Middleware/CheckPermissionForGivenCase.js index 667089e..c3ab141 100644 --- a/src/adonisjs/app/Middleware/CheckPermissionForGivenCase.js +++ b/src/adonisjs/app/Middleware/CheckPermissionForGivenCase.js @@ -12,50 +12,43 @@ class CheckPermissionForGivenCase { * @param {Function} next */ async handle ({ params, request, response, auth }, next, properties) { - try{ - let logged_user = auth.user.id - let sqlQuery = "" - let case_id = "" - - if (Object.keys(params).length === 0){ - case_id = request.input('case_id') - } else { - case_id = params.id - } - + try { + const logged_user = auth.user.id + let sqlQuery = '' + let case_id = '' + + if (Object.keys(params).length === 0) { + case_id = request.input('case_id') + } else { + case_id = params.id + } + // verify if the loged user is owner of the case - if (properties[0] == 'author'){ - + if (properties[0] == 'author') { sqlQuery = 'select uc.user_id from users u ' + 'left join users_cases uc on u.id = uc.user_id ' + 'where uc.user_id = ? and uc.case_id = ? and uc.role = 0' - let author = await Database.raw(sqlQuery, [logged_user, case_id]) + const author = await Database.raw(sqlQuery, [logged_user, case_id]) - if (author != null) - await next() - else return response.status(500).json('you are not owner of this case') + if (author != null) { await next() } else return response.status(500).json('you are not owner of this case') } - if (properties[0] == 'contributor'){ - - let logged_user = auth.user.id + if (properties[0] == 'contributor') { + const logged_user = auth.user.id // verify if the loged user is a contributor of the given case sqlQuery = 'select uc.user_id from users u ' + 'left join users_cases uc on u.id = uc.user_id ' + 'where uc.user_id = ? and uc.case_id = ? and (uc.role = 1 or uc.role = 0)' - let contributor = await Database.raw(sqlQuery, [logged_user, case_id]) + const contributor = await Database.raw(sqlQuery, [logged_user, case_id]) - if (contributor != null) - await next() - else return response.status(500).json('you are not contributor of this case') - } - }catch(e){ + if (contributor != null) { await next() } else return response.status(500).json('you are not contributor of this case') + } + } catch (e) { console.log('quebrou') console.log(e) - return response.status(500).json( e ) + return response.status(500).json(e) } - } } diff --git a/src/adonisjs/app/Middleware/CheckUserQuestPermission.js b/src/adonisjs/app/Middleware/CheckUserQuestPermission.js index a8e41fa..c6610b8 100644 --- a/src/adonisjs/app/Middleware/CheckUserQuestPermission.js +++ b/src/adonisjs/app/Middleware/CheckUserQuestPermission.js @@ -14,51 +14,47 @@ class CheckUserQuestPermission { * @param {Function} next */ async handle ({ params, request, auth, response }, next, properties) { - console.log('dijsi') - try{ - let userId = auth.user.id - let questId = request.input('questId') + // console.log('checking user permission...') + try { + const userId = auth.user.id + const questId = request.input('questId') let query_result - if (properties[0] == null){ + if (properties[0] == null) { query_result = await Database - .from('quests_users') - .where('quests_users.user_id', userId) - .where('quests_users.quest_id', questId) - .count() + .from('quests_users') + .where('quests_users.user_id', userId) + .where('quests_users.quest_id', questId) + .count() } - - if (properties[0] == 'contributor'){ + if (properties[0] == 'contributor') { query_result = await Database - .from('quests_users') - .where('quests_users.user_id', userId) - .where('quests_users.quest_id', questId) - .whereIn('quests_users.role', [0, 1]) - .count() + .from('quests_users') + .where('quests_users.user_id', userId) + .where('quests_users.quest_id', questId) + .whereIn('quests_users.role', [0, 1]) + .count() } - if (properties[0] == 'player'){ + if (properties[0] == 'player') { query_result = await Database - .from('quests_users') - .where('quests_users.user_id', userId) - .where('quests_users.quest_id', questId) - .whereIn('quests_users.role', [2]) - .count() + .from('quests_users') + .where('quests_users.user_id', userId) + .where('quests_users.quest_id', questId) + .whereIn('quests_users.role', [2]) + .count() } - if (query_result[0]['count(*)'] === 0) - return response.status(500).json('user dont have ' + properties[0] + ' permissions for such quest or quest id is incorrect') - else { + if (query_result[0]['count(*)'] === 0) { return response.status(500).json('user dont have ' + properties[0] + ' permissions for such quest or quest id is incorrect') } else { // Logger.info('check user\'s quest permission - OK') await next() } - } catch(e){ + } catch (e) { console.log(e) return response.status(500).json(e) } - } } diff --git a/src/adonisjs/app/Models/CaseArtifact.js b/src/adonisjs/app/Models/CaseArtifact.js index 5a49986..bcecc5c 100644 --- a/src/adonisjs/app/Models/CaseArtifact.js +++ b/src/adonisjs/app/Models/CaseArtifact.js @@ -4,11 +4,9 @@ const Model = use('Model') class CaseArtifact extends Model { - - artifact() { + artifact () { return this.belongsTo('App/Models/v1/Artifact') - } - + } } module.exports = CaseArtifact diff --git a/src/adonisjs/app/Models/Hooks/UserHook.js b/src/adonisjs/app/Models/Hooks/UserHook.js index f36fbbe..b6751d0 100644 --- a/src/adonisjs/app/Models/Hooks/UserHook.js +++ b/src/adonisjs/app/Models/Hooks/UserHook.js @@ -5,5 +5,5 @@ const Hash = use('Hash') const UserHook = exports = module.exports = {} UserHook.hashPassword = async (user) => { - user.password = await Hash.make(user.password) + user.password = await Hash.make(user.password) } diff --git a/src/adonisjs/app/Models/Property.js b/src/adonisjs/app/Models/Property.js index 9249f31..8c8adb6 100644 --- a/src/adonisjs/app/Models/Property.js +++ b/src/adonisjs/app/Models/Property.js @@ -4,11 +4,9 @@ const Model = use('Model') class Property extends Model { - - static get incrementing () { - return false - } - + static get incrementing () { + return false + } } module.exports = Property diff --git a/src/adonisjs/app/Models/Token.js b/src/adonisjs/app/Models/Token.js index 25958ce..fa52ff3 100644 --- a/src/adonisjs/app/Models/Token.js +++ b/src/adonisjs/app/Models/Token.js @@ -4,9 +4,9 @@ const Model = use('Model') class Token extends Model { - user(){ - return this.belongsTo('App/Models/v1/User') - } + user () { + return this.belongsTo('App/Models/v1/User') + } } module.exports = Token diff --git a/src/adonisjs/app/Models/Traits/NoTimestamp.js b/src/adonisjs/app/Models/Traits/NoTimestamp.js index 58c9340..53bb390 100644 --- a/src/adonisjs/app/Models/Traits/NoTimestamp.js +++ b/src/adonisjs/app/Models/Traits/NoTimestamp.js @@ -4,11 +4,11 @@ class NoTimestamp { register (Model) { Object.defineProperties(Model, { createdAtColumn: { - get: () => null, + get: () => null }, updatedAtColumn: { - get: () => null, - }, + get: () => null + } }) } } diff --git a/src/adonisjs/app/Models/v1/Artifact.js b/src/adonisjs/app/Models/v1/Artifact.js index 55949c1..f214734 100644 --- a/src/adonisjs/app/Models/v1/Artifact.js +++ b/src/adonisjs/app/Models/v1/Artifact.js @@ -4,16 +4,13 @@ const Model = use('Model') class Artifact extends Model { + static get incrementing () { + return false + } - static get incrementing () { - return false - } - - - user() { - return this.belongsTo('App/Models/v1/User'); - } - + user () { + return this.belongsTo('App/Models/v1/User') + } } module.exports = Artifact diff --git a/src/adonisjs/app/Models/v1/Case.js b/src/adonisjs/app/Models/v1/Case.js index f79e218..7771448 100644 --- a/src/adonisjs/app/Models/v1/Case.js +++ b/src/adonisjs/app/Models/v1/Case.js @@ -4,32 +4,32 @@ const Model = use('Model') class Case extends Model { - static get incrementing () { - return false - } + static get incrementing () { + return false + } - versions(){ - return this.hasMany('App/Models/v1/CaseVersion') - } + versions () { + return this.hasMany('App/Models/v1/CaseVersion') + } - artifacts() { - return this.hasMany('App/Models/CaseArtifact') - } + artifacts () { + return this.hasMany('App/Models/CaseArtifact') + } - users(){ - return this.belongsToMany('App/Models/v1/User') - .pivotTable('users_cases') - .withPivot(['role']) - .withTimestamps() - } + users () { + return this.belongsToMany('App/Models/v1/User') + .pivotTable('users_cases') + .withPivot(['role']) + .withTimestamps() + } - quests () { - return this - .belongsToMany('App/Models/v1/Quest') - .pivotTable('quests_cases') - .withPivot(['order_position']) - .withTimestamps() - } -} + quests () { + return this + .belongsToMany('App/Models/v1/Quest') + .pivotTable('quests_cases') + .withPivot(['order_position']) + .withTimestamps() + } +} module.exports = Case diff --git a/src/adonisjs/app/Models/v1/CaseVersion.js b/src/adonisjs/app/Models/v1/CaseVersion.js index 01ed542..cd7d8e5 100644 --- a/src/adonisjs/app/Models/v1/CaseVersion.js +++ b/src/adonisjs/app/Models/v1/CaseVersion.js @@ -4,21 +4,21 @@ const Model = use('Model') class CaseVersion extends Model { - static get incrementing () { - return false - } + static get incrementing () { + return false + } - case() { - return this.belongsTo('App/Models/v1/Case'); - } + case () { + return this.belongsTo('App/Models/v1/Case') + } - executions(){ - return this.belongsToMany('App/Models/v1/User').pivotTable('executions').withTimestamps() - } + executions () { + return this.belongsToMany('App/Models/v1/User').pivotTable('executions').withTimestamps() + } - suggested_to(){ - return this.belongsToMany('App/Models/v1/User').pivotTable('suggestions').withTimestamps() - } + suggested_to () { + return this.belongsToMany('App/Models/v1/User').pivotTable('suggestions').withTimestamps() + } } -module.exports = CaseVersion \ No newline at end of file +module.exports = CaseVersion diff --git a/src/adonisjs/app/Models/v1/Institution.js b/src/adonisjs/app/Models/v1/Institution.js index 4c95506..96b3f50 100644 --- a/src/adonisjs/app/Models/v1/Institution.js +++ b/src/adonisjs/app/Models/v1/Institution.js @@ -4,9 +4,9 @@ const Model = use('Model') class Institution extends Model { - static get incrementing () { - return false - } + static get incrementing () { + return false + } } module.exports = Institution diff --git a/src/adonisjs/app/Models/v1/Permission.js b/src/adonisjs/app/Models/v1/Permission.js index 623aa16..90f70a6 100644 --- a/src/adonisjs/app/Models/v1/Permission.js +++ b/src/adonisjs/app/Models/v1/Permission.js @@ -4,9 +4,9 @@ const Model = use('Model') class Permission extends Model { - static get incrementing () { - return false - } + static get incrementing () { + return false + } } module.exports = Permission diff --git a/src/adonisjs/app/Models/v1/Quest.js b/src/adonisjs/app/Models/v1/Quest.js index 5cc8216..1e0a87d 100644 --- a/src/adonisjs/app/Models/v1/Quest.js +++ b/src/adonisjs/app/Models/v1/Quest.js @@ -3,34 +3,30 @@ /** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */ const Model = use('Model') -const uuidv4 = require('uuid/v4'); +const uuidv4 = require('uuid/v4') class Quest extends Model { - - static get incrementing () { - return false - } - - - users(){ - return this.belongsToMany('App/Models/v1/User') - .pivotTable('quests_users') - .withPivot(['role']) - .withTimestamps() - } - - - cases(){ - return this.belongsToMany('App/Models/v1/Case') - .pivotTable('quests_cases') - .withPivot(['order_position']) - .withTimestamps() - } - - - artifact() { - return this.belongsTo('App/Models/v1/Artifact') - } + static get incrementing () { + return false + } + + users () { + return this.belongsToMany('App/Models/v1/User') + .pivotTable('quests_users') + .withPivot(['role']) + .withTimestamps() + } + + cases () { + return this.belongsToMany('App/Models/v1/Case') + .pivotTable('quests_cases') + .withPivot(['order_position']) + .withTimestamps() + } + + artifact () { + return this.belongsTo('App/Models/v1/Artifact') + } } module.exports = Quest diff --git a/src/adonisjs/app/Models/v1/Role.js b/src/adonisjs/app/Models/v1/Role.js index aef0338..80f4639 100644 --- a/src/adonisjs/app/Models/v1/Role.js +++ b/src/adonisjs/app/Models/v1/Role.js @@ -4,37 +4,37 @@ const Model = use('Model') class Role extends Model { - static get incrementing () { - return false - } + static get incrementing () { + return false + } - users() { - return this - .belongsToMany('App/Models/v1/User') - .pivotTable('role_user') - .withTimestamps() - } + users () { + return this + .belongsToMany('App/Models/v1/User') + .pivotTable('role_user') + .withTimestamps() + } - permissions() { - return this - .belongsToMany('App/Models/v1/Permission') - .pivotTable('permission_role') - .withTimestamps() - } + permissions () { + return this + .belongsToMany('App/Models/v1/Permission') + .pivotTable('permission_role') + .withTimestamps() + } - // quests() { - // return this - // .belongsToMany('App/Models/v1/Quest') - // .pivotTable('quests_users') - // .withPivot(['role']) - // .withTimestamps() - // } + // quests() { + // return this + // .belongsToMany('App/Models/v1/Quest') + // .pivotTable('quests_users') + // .withPivot(['role']) + // .withTimestamps() + // } - static get traits () { - return [ - '@provider:Adonis/Acl/HasPermission' - ] - } + static get traits () { + return [ + '@provider:Adonis/Acl/HasPermission' + ] + } } module.exports = Role diff --git a/src/adonisjs/app/Models/v1/Token.js b/src/adonisjs/app/Models/v1/Token.js index 25958ce..fa52ff3 100644 --- a/src/adonisjs/app/Models/v1/Token.js +++ b/src/adonisjs/app/Models/v1/Token.js @@ -4,9 +4,9 @@ const Model = use('Model') class Token extends Model { - user(){ - return this.belongsTo('App/Models/v1/User') - } + user () { + return this.belongsTo('App/Models/v1/User') + } } module.exports = Token diff --git a/src/adonisjs/app/Models/v1/User.js b/src/adonisjs/app/Models/v1/User.js index a8bbf16..a847da6 100644 --- a/src/adonisjs/app/Models/v1/User.js +++ b/src/adonisjs/app/Models/v1/User.js @@ -8,78 +8,74 @@ const Model = use('Model') const Database = use('Database') class User extends Model { - static get incrementing () { - return false - } - - cases(){ - return this.belongsToMany('App/Models/v1/Case') - .pivotTable('users_cases') - .withPivot(['role']) - .withTimestamps() - } - - quests() { - return this - .belongsToMany('App/Models/v1/Quest') - .pivotTable('quests_users') - .withPivot(['role']) - .withTimestamps() - } - - artifacts() { - return this.hasMany('App/Models/v1/Artifact') - } - - institution(){ - return this.belongsTo('App/Models/v1/Institution') - } - - roles(){ - return this.belongsToMany('App/Models/v1/Role') - .pivotTable('role_user') - .withTimestamps() - } - - tokens() { - return this.hasMany('App/Models/Token') - } - - static get hidden () { - return ['password'] - } - - async checkRole(role) { - let query_result = await Database - .from('roles') - .where('roles.slug', role) - .leftJoin('role_user', 'roles.id', 'role_user.role_id') - .where('role_user.user_id', this.id) - .count() - - if (query_result[0]['count(*)'] === 0) - return 0 - else - return 1 - } - - static boot() { - super.boot() - - /** + static get incrementing () { + return false + } + + cases () { + return this.belongsToMany('App/Models/v1/Case') + .pivotTable('users_cases') + .withPivot(['role']) + .withTimestamps() + } + + quests () { + return this + .belongsToMany('App/Models/v1/Quest') + .pivotTable('quests_users') + .withPivot(['role']) + .withTimestamps() + } + + artifacts () { + return this.hasMany('App/Models/v1/Artifact') + } + + institution () { + return this.belongsTo('App/Models/v1/Institution') + } + + roles () { + return this.belongsToMany('App/Models/v1/Role') + .pivotTable('role_user') + .withTimestamps() + } + + tokens () { + return this.hasMany('App/Models/Token') + } + + static get hidden () { + return ['password'] + } + + async checkRole (role) { + const query_result = await Database + .from('roles') + .where('roles.slug', role) + .leftJoin('role_user', 'roles.id', 'role_user.role_id') + .where('role_user.user_id', this.id) + .count() + + if (query_result[0]['count(*)'] === 0) { return 0 } else { return 1 } + } + + static boot () { + super.boot() + + /** * A hook to hash the user password before saving * it to the database. */ - this.addHook('beforeCreate', 'UserHook.hashPassword') - } - - - // Attach role and permissions of a user - static get traits () { - return [ - '@provider:Adonis/Acl/HasRole' - ] - } + this.addHook('beforeCreate', 'UserHook.hashPassword') + } + + // Attach role and permissions of a user + static get traits () { + return [ + '@provider:Adonis/Acl/HasRole' + ] + } } module.exports = User diff --git a/src/adonisjs/app/Services/CloudinaryService.js b/src/adonisjs/app/Services/CloudinaryService.js index 10a69fa..b9da59d 100644 --- a/src/adonisjs/app/Services/CloudinaryService.js +++ b/src/adonisjs/app/Services/CloudinaryService.js @@ -1,10 +1,10 @@ -const cloudinary = require('cloudinary'); -const Env = use('Env'); +const cloudinary = require('cloudinary') +const Env = use('Env') cloudinary.config({ cloud_name: Env.get('CLOUDINARY_CLOUD_NAME'), api_key: Env.get('CLOUDINARY_API_KEY'), api_secret: Env.get('CLOUDINARY_API_SECRET') -}); +}) -module.exports = cloudinary; \ No newline at end of file +module.exports = cloudinary diff --git a/src/adonisjs/config/app.js b/src/adonisjs/config/app.js index 909e2e2..8c2d18b 100644 --- a/src/adonisjs/config/app.js +++ b/src/adonisjs/config/app.js @@ -82,7 +82,6 @@ module.exports = { */ jsonpCallback: 'callback', - /* |-------------------------------------------------------------------------- | Etag diff --git a/src/adonisjs/config/auth.js b/src/adonisjs/config/auth.js index 3bf1b38..0ad4dd9 100644 --- a/src/adonisjs/config/auth.js +++ b/src/adonisjs/config/auth.js @@ -54,7 +54,7 @@ module.exports = { scheme: 'basic', uid: 'email', password: 'password' - }, + }, /* |-------------------------------------------------------------------------- @@ -75,7 +75,7 @@ module.exports = { secret: Env.get('APP_KEY'), // expiresIn: 300 expiresIn: 86400 - // algorithm: + // algorithm: } }, diff --git a/src/adonisjs/config/cors.js b/src/adonisjs/config/cors.js index 1e62d3c..ce5c8da 100644 --- a/src/adonisjs/config/cors.js +++ b/src/adonisjs/config/cors.js @@ -16,7 +16,7 @@ module.exports = { | Function - Receives the current origin and should return one of the above values. | */ - origin: "*", + origin: '*', /* |-------------------------------------------------------------------------- diff --git a/src/adonisjs/config/session.js b/src/adonisjs/config/session.js index 37c9f40..d3ec27c 100644 --- a/src/adonisjs/config/session.js +++ b/src/adonisjs/config/session.js @@ -66,7 +66,7 @@ module.exports = { cookie: { httpOnly: true, sameSite: false, - path: '/', + path: '/' // domain: 'harena.com' // domain: Env.get('COOKIE_DOMAIN', null) }, diff --git a/src/adonisjs/database/factory.js b/src/adonisjs/database/factory.js index b559a03..879c9cd 100644 --- a/src/adonisjs/database/factory.js +++ b/src/adonisjs/database/factory.js @@ -15,14 +15,13 @@ const Factory = use('Factory') const Hash = use('Hash') -const uuidv4 = require('uuid/v4'); - +const uuidv4 = require('uuid/v4') Factory.blueprint('App/Models/v1/User', async (faker, i, data) => { - let username = faker.username() + const username = faker.username() return { - username: username, - login: username, + username: username, + login: username, email: data[i].email, password: username, @@ -45,31 +44,31 @@ Factory.blueprint('App/Models/v1/CaseVersion', async (faker, i, data) => { } }) -Factory.blueprint('App/Models/v1/Role', async (faker, i, data ) => { +Factory.blueprint('App/Models/v1/Role', async (faker, i, data) => { return { - name: data[i].name, - slug: data[i].slug, - description: data[i].description, + name: data[i].name, + slug: data[i].slug, + description: data[i].description, - // password: faker.password(), - id: await uuidv4() - } + // password: faker.password(), + id: await uuidv4() + } }) - // data = Object.assign({ - // name: 'Administrator' || data[i].name, - // slug: 'administrator' || data[i].slug, - // description: 'manage administration privileges' || data[i].description - // }, data) - // return data +// data = Object.assign({ +// name: 'Administrator' || data[i].name, +// slug: 'administrator' || data[i].slug, +// description: 'manage administration privileges' || data[i].description +// }, data) +// return data -Factory.blueprint('App/Models/v1/Permission', async (faker, i, data ) => { +Factory.blueprint('App/Models/v1/Permission', async (faker, i, data) => { return { name: data[i].name, slug: data[i].slug, description: data[i].description, - // password: faker.password(), + // password: faker.password(), id: await uuidv4() } -}) \ No newline at end of file +}) diff --git a/src/adonisjs/database/insertions/1593995817552_create_new_permissions_schema.js b/src/adonisjs/database/insertions/1593995817552_create_new_permissions_schema.js index e620a10..7b22b17 100644 --- a/src/adonisjs/database/insertions/1593995817552_create_new_permissions_schema.js +++ b/src/adonisjs/database/insertions/1593995817552_create_new_permissions_schema.js @@ -5,42 +5,40 @@ const Schema = use('Schema') const Factory = use('Factory') -const User = use('App/Models/v1/User'); -const Role = use('App/Models/v1/Role'); -const Permission = use('App/Models/v1/Permission'); - +const User = use('App/Models/v1/User') +const Role = use('App/Models/v1/Role') +const Permission = use('App/Models/v1/Permission') class CreateNewPermissionsSchema extends Schema { async up () { - let user = await User.findBy('username', 'jacinto') - - const contributor = await Factory.model('Adonis/Acl/Role').make({ name: 'case contributor', slug: 'contributor', description: 'permissions of a contributor'}) - await contributor.save() - const read = await Factory.model('Adonis/Acl/Permission').make({ name: 'read cases', slug: 'read', description: 'read cases'}) - await read.save() - await contributor.permissions().attach([read.id]) - await user.roles().attach([contributor.id]) - - const editor = await Factory.model('Adonis/Acl/Role').make({ name: 'case editor', slug: 'editor', description: 'permissions of a editor'}) - await editor.save() - const edit = await Factory.model('Adonis/Acl/Permission').make({ name: 'edit cases', slug: 'edit', description: 'edit cases'}) - await edit.save() - await editor.permissions().attach([edit.id]) + const user = await User.findBy('username', 'jacinto') + + const contributor = await Factory.model('Adonis/Acl/Role').make({ name: 'case contributor', slug: 'contributor', description: 'permissions of a contributor' }) + await contributor.save() + const read = await Factory.model('Adonis/Acl/Permission').make({ name: 'read cases', slug: 'read', description: 'read cases' }) + await read.save() + await contributor.permissions().attach([read.id]) + await user.roles().attach([contributor.id]) + + const editor = await Factory.model('Adonis/Acl/Role').make({ name: 'case editor', slug: 'editor', description: 'permissions of a editor' }) + await editor.save() + const edit = await Factory.model('Adonis/Acl/Permission').make({ name: 'edit cases', slug: 'edit', description: 'edit cases' }) + await edit.save() + await editor.permissions().attach([edit.id]) } async down () { - let contributor = await Role.findBy('slug', 'contributor') + const contributor = await Role.findBy('slug', 'contributor') await contributor.delete() - let read = await Permission.findBy('slug', 'read') + const read = await Permission.findBy('slug', 'read') await read.delete() - let editor = await Role.findBy('slug', 'editor') + const editor = await Role.findBy('slug', 'editor') await editor.delete() - let edit = await Permission.findBy('slug', 'edit') + const edit = await Permission.findBy('slug', 'edit') await edit.delete() - } } diff --git a/src/adonisjs/database/migrations/1593910551912_course_schema.js b/src/adonisjs/database/migrations/1593910551912_course_schema.js index 5f19f09..c58d84e 100644 --- a/src/adonisjs/database/migrations/1593910551912_course_schema.js +++ b/src/adonisjs/database/migrations/1593910551912_course_schema.js @@ -1,17 +1,17 @@ - 'use strict' +'use strict' /** @type {import('@adonisjs/lucid/src/Schema')} */ const Schema = use('Schema') class CourseSchema extends Schema { up () { - this.dropIfExists('courses') + this.dropIfExists('courses') this.create('courses', (table) => { table.uuid('id') table.primary('id') - table.string('title',100) + table.string('title', 100) table.timestamps() }) } diff --git a/src/adonisjs/database/migrations/1594004809130_kos_schema.js b/src/adonisjs/database/migrations/1594004809130_kos_schema.js index c2cf863..4c3700c 100644 --- a/src/adonisjs/database/migrations/1594004809130_kos_schema.js +++ b/src/adonisjs/database/migrations/1594004809130_kos_schema.js @@ -13,7 +13,7 @@ class KosSchema extends Schema { table.string('title', 100) table.string('description') - + table.timestamps() }) } diff --git a/src/adonisjs/database/migrations/1594005111091_type_schema.js b/src/adonisjs/database/migrations/1594005111091_type_schema.js index e2b7dbc..ec2a362 100644 --- a/src/adonisjs/database/migrations/1594005111091_type_schema.js +++ b/src/adonisjs/database/migrations/1594005111091_type_schema.js @@ -14,7 +14,7 @@ class TypeSchema extends Schema { table.string('title', 100) table.string('description') - table.uuid('kos_id').references('id').inTable('kos').index('kos_id'); + table.uuid('kos_id').references('id').inTable('kos').index('kos_id') table.timestamps() }) diff --git a/src/adonisjs/database/migrations/1594005305846_property_schema.js b/src/adonisjs/database/migrations/1594005305846_property_schema.js index 1e89666..7f3d9d0 100644 --- a/src/adonisjs/database/migrations/1594005305846_property_schema.js +++ b/src/adonisjs/database/migrations/1594005305846_property_schema.js @@ -13,8 +13,8 @@ class PropertySchema extends Schema { table.string('title', 100) table.string('description') - - table.uuid('type_id').references('id').inTable('types').index('type_id'); + + table.uuid('type_id').references('id').inTable('types').index('type_id') table.timestamps() }) diff --git a/src/adonisjs/database/migrations/1594005431781_term_schema.js b/src/adonisjs/database/migrations/1594005431781_term_schema.js index 044e599..d8a2059 100644 --- a/src/adonisjs/database/migrations/1594005431781_term_schema.js +++ b/src/adonisjs/database/migrations/1594005431781_term_schema.js @@ -13,7 +13,7 @@ class TermSchema extends Schema { table.string('value', 255) - table.uuid('property_id').references('id').inTable('properties').index('property_id'); + table.uuid('property_id').references('id').inTable('properties').index('property_id') table.timestamps() }) diff --git a/src/adonisjs/database/migrations/1594036153079_course_institution_schema.js b/src/adonisjs/database/migrations/1594036153079_course_institution_schema.js index 13356cf..c863aa2 100644 --- a/src/adonisjs/database/migrations/1594036153079_course_institution_schema.js +++ b/src/adonisjs/database/migrations/1594036153079_course_institution_schema.js @@ -5,17 +5,15 @@ const Schema = use('Schema') class CourseInstitutionSchema extends Schema { up () { - this.dropIfExists('course_institutions') this.create('course_institutions', (table) => { - table.uuid('institution_id').references('id').inTable('institutions').index('institution_id'); - table.uuid('course_id').references('id').inTable('courses').index('course_id'); + table.uuid('institution_id').references('id').inTable('institutions').index('institution_id') + table.uuid('course_id').references('id').inTable('courses').index('course_id') table.primary(['institution_id', 'course_id']) table.integer('access') table.timestamps() - }) } diff --git a/src/adonisjs/database/migrations/1594320151218_user_schema.js b/src/adonisjs/database/migrations/1594320151218_user_schema.js index 98ebb04..007d9a5 100644 --- a/src/adonisjs/database/migrations/1594320151218_user_schema.js +++ b/src/adonisjs/database/migrations/1594320151218_user_schema.js @@ -16,8 +16,8 @@ class UserSchema extends Schema { table.string('email', 254).notNullable().unique() table.string('password', 60).notNullable() - table.uuid('institution_id').references('id').inTable('institutions').index('institution_id'); - table.uuid('course_id').references('id').inTable('courses').index('course_id'); + table.uuid('institution_id').references('id').inTable('institutions').index('institution_id') + table.uuid('course_id').references('id').inTable('courses').index('course_id') table.timestamps() }) diff --git a/src/adonisjs/database/migrations/1594320921120_case_version_schema.js b/src/adonisjs/database/migrations/1594320921120_case_version_schema.js index b3e9138..71a78bb 100644 --- a/src/adonisjs/database/migrations/1594320921120_case_version_schema.js +++ b/src/adonisjs/database/migrations/1594320921120_case_version_schema.js @@ -13,7 +13,7 @@ class CaseVersionSchema extends Schema { table.text('source') - table.uuid('case_id').references('id').inTable('cases').index('case_id'); + table.uuid('case_id').references('id').inTable('cases').index('case_id') table.timestamps() }) diff --git a/src/adonisjs/database/migrations/1594320979254_artifact_schema.js b/src/adonisjs/database/migrations/1594320979254_artifact_schema.js index 6babdef..2e3dbb3 100644 --- a/src/adonisjs/database/migrations/1594320979254_artifact_schema.js +++ b/src/adonisjs/database/migrations/1594320979254_artifact_schema.js @@ -11,11 +11,11 @@ class ArtifactSchema extends Schema { table.uuid('id') table.primary('id') - table.string( 'fs_path', 300).notNullable() - table.string( 'relative_path', 300).notNullable() + table.string('fs_path', 300).notNullable() + table.string('relative_path', 300).notNullable() - table.uuid('user_id').references('id').inTable('users').index('user_id'); - table.uuid('case_id').references('id').inTable('cases').index('case_id'); + table.uuid('user_id').references('id').inTable('users').index('user_id') + table.uuid('case_id').references('id').inTable('cases').index('case_id') table.timestamps() }) diff --git a/src/adonisjs/database/migrations/1594321032600_quests_cases_schema.js b/src/adonisjs/database/migrations/1594321032600_quests_cases_schema.js index 9bd5ff2..b33c1d8 100644 --- a/src/adonisjs/database/migrations/1594321032600_quests_cases_schema.js +++ b/src/adonisjs/database/migrations/1594321032600_quests_cases_schema.js @@ -8,8 +8,8 @@ class QuestCaseSchema extends Schema { this.dropIfExists('quests_cases') this.create('quests_cases', (table) => { - table.uuid('quest_id').references('id').inTable('quests').index('quest_id'); - table.uuid('case_id').references('id').inTable('cases').index('case_id'); + table.uuid('quest_id').references('id').inTable('quests').index('quest_id') + table.uuid('case_id').references('id').inTable('cases').index('case_id') table.primary(['case_id', 'quest_id']) table.integer('order_position') diff --git a/src/adonisjs/database/migrations/1594321554864_user_property_schema.js b/src/adonisjs/database/migrations/1594321554864_user_property_schema.js index 0aba4a3..75be28c 100644 --- a/src/adonisjs/database/migrations/1594321554864_user_property_schema.js +++ b/src/adonisjs/database/migrations/1594321554864_user_property_schema.js @@ -5,18 +5,16 @@ const Schema = use('Schema') class UserPropertySchema extends Schema { up () { - - this.dropIfExists('user_properties') + this.dropIfExists('user_properties') this.create('user_properties', (table) => { - table.uuid('user_id').references('id').inTable('users').index('user_id'); - table.uuid('property_id').references('id').inTable('properties').index('property_id'); + table.uuid('user_id').references('id').inTable('users').index('user_id') + table.uuid('property_id').references('id').inTable('properties').index('property_id') table.primary(['user_id', 'property_id']) - + table.string('value', 255) table.timestamps() - }) } diff --git a/src/adonisjs/database/migrations/1594321623172_case_property_schema.js b/src/adonisjs/database/migrations/1594321623172_case_property_schema.js index 26d5ead..36d4c47 100644 --- a/src/adonisjs/database/migrations/1594321623172_case_property_schema.js +++ b/src/adonisjs/database/migrations/1594321623172_case_property_schema.js @@ -8,8 +8,8 @@ class CasePropertySchema extends Schema { this.dropIfExists('case_properties') this.create('case_properties', (table) => { - table.uuid('case_id').references('id').inTable('cases').index('case_id'); - table.uuid('property_id').references('id').inTable('properties').index('property_id'); + table.uuid('case_id').references('id').inTable('cases').index('case_id') + table.uuid('property_id').references('id').inTable('properties').index('property_id') table.primary(['case_id', 'property_id']) table.string('value', 255) diff --git a/src/adonisjs/database/migrations/1594321905326_create_role_user_schema.js b/src/adonisjs/database/migrations/1594321905326_create_role_user_schema.js index 1f3ddbf..95c7479 100644 --- a/src/adonisjs/database/migrations/1594321905326_create_role_user_schema.js +++ b/src/adonisjs/database/migrations/1594321905326_create_role_user_schema.js @@ -7,8 +7,8 @@ class RoleUserTableSchema extends Schema { this.dropIfExists('role_user') this.create('role_user', table => { - table.uuid('role_id').references('id').inTable('roles').index('role_id'); - table.uuid('user_id').references('id').inTable('users').index('user_id'); + table.uuid('role_id').references('id').inTable('roles').index('role_id') + table.uuid('user_id').references('id').inTable('users').index('user_id') table.primary(['user_id', 'role_id']) table.timestamps() diff --git a/src/adonisjs/database/migrations/1595525775363_token_schema.js b/src/adonisjs/database/migrations/1595525775363_token_schema.js index 8a09ada..f1983f9 100644 --- a/src/adonisjs/database/migrations/1595525775363_token_schema.js +++ b/src/adonisjs/database/migrations/1595525775363_token_schema.js @@ -14,7 +14,7 @@ class TokenSchema extends Schema { table.string('type', 80).notNullable() table.boolean('is_revoked').defaultTo(false) - table.uuid('user_id').references('id').inTable('users').index('user_id'); + table.uuid('user_id').references('id').inTable('users').index('user_id') table.timestamps() }) diff --git a/src/adonisjs/database/migrations/1595939263063_quests_users_schema.js b/src/adonisjs/database/migrations/1595939263063_quests_users_schema.js index 266cdbb..c6f2a28 100644 --- a/src/adonisjs/database/migrations/1595939263063_quests_users_schema.js +++ b/src/adonisjs/database/migrations/1595939263063_quests_users_schema.js @@ -8,8 +8,8 @@ class QuestsUsersSchema extends Schema { this.dropIfExists('quests_users') this.create('quests_users', (table) => { - table.uuid('user_id').references('id').inTable('users').index('user_id'); - table.uuid('quest_id').references('id').inTable('quests').index('quest_id'); + table.uuid('user_id').references('id').inTable('users').index('user_id') + table.uuid('quest_id').references('id').inTable('quests').index('quest_id') table.integer('role') table.primary(['quest_id', 'user_id', 'role']) diff --git a/src/adonisjs/database/migrations/1595940026109_users_cases_schema.js b/src/adonisjs/database/migrations/1595940026109_users_cases_schema.js index 581a3ad..44207e7 100644 --- a/src/adonisjs/database/migrations/1595940026109_users_cases_schema.js +++ b/src/adonisjs/database/migrations/1595940026109_users_cases_schema.js @@ -8,8 +8,8 @@ class UsersCasesSchema extends Schema { this.dropIfExists('users_cases') this.create('users_cases', (table) => { - table.uuid('user_id').references('id').inTable('users').index('user_id'); - table.uuid('case_id').references('id').inTable('cases').index('case_id'); + table.uuid('user_id').references('id').inTable('users').index('user_id') + table.uuid('case_id').references('id').inTable('cases').index('case_id') table.primary(['case_id', 'user_id']) table.integer('role') diff --git a/src/adonisjs/database/migrations/1598918164871_artifact_update_add_drop_attributes.js b/src/adonisjs/database/migrations/1598918164871_artifact_update_add_drop_attributes.js index 69a8006..99fcd0b 100644 --- a/src/adonisjs/database/migrations/1598918164871_artifact_update_add_drop_attributes.js +++ b/src/adonisjs/database/migrations/1598918164871_artifact_update_add_drop_attributes.js @@ -16,8 +16,8 @@ class ArtifactUpdateAddPropertyAndQuestRelationshipsSchema extends Schema { down () { this.table('artifacts', (table) => { table.string('fs_path', 300).notNullable() - - table.uuid('case_id').references('id').inTable('cases').index('case_id'); + + table.uuid('case_id').references('id').inTable('cases').index('case_id') }) } } diff --git a/src/adonisjs/database/migrations/1598996196411_case_artifacts_schema.js b/src/adonisjs/database/migrations/1598996196411_case_artifacts_schema.js index f75df91..9a391cd 100644 --- a/src/adonisjs/database/migrations/1598996196411_case_artifacts_schema.js +++ b/src/adonisjs/database/migrations/1598996196411_case_artifacts_schema.js @@ -8,8 +8,8 @@ class CaseArtifactsSchema extends Schema { this.dropIfExists('case_artifacts') this.create('case_artifacts', (table) => { - table.uuid('case_id').references('id').inTable('cases').index('case_id'); - table.uuid('artifact_id').references('id').inTable('artifacts').index('artifact_id'); + table.uuid('case_id').references('id').inTable('cases').index('case_id') + table.uuid('artifact_id').references('id').inTable('artifacts').index('artifact_id') table.primary(['case_id', 'artifact_id']) diff --git a/src/adonisjs/database/migrations/1599000104430_quest_update_add_artifact_relationship_schema.js b/src/adonisjs/database/migrations/1599000104430_quest_update_add_artifact_relationship_schema.js index c31aa31..a693d0b 100644 --- a/src/adonisjs/database/migrations/1599000104430_quest_update_add_artifact_relationship_schema.js +++ b/src/adonisjs/database/migrations/1599000104430_quest_update_add_artifact_relationship_schema.js @@ -8,8 +8,7 @@ class QuestUpdateAddArtifactRelationshipSchema extends Schema { this.table('quests', (table) => { // alter table table.string('color', 7) - table.uuid('artifact_id').references('id').inTable('artifacts').index('artifact_id'); - + table.uuid('artifact_id').references('id').inTable('artifacts').index('artifact_id') }) } @@ -20,7 +19,6 @@ class QuestUpdateAddArtifactRelationshipSchema extends Schema { table.dropColumn('artifact_id') table.dropColumn('color') - }) } } diff --git a/src/adonisjs/database/seeds/RollbackInitialSeeder.js b/src/adonisjs/database/seeds/RollbackInitialSeeder.js index 236fb2f..66f3970 100644 --- a/src/adonisjs/database/seeds/RollbackInitialSeeder.js +++ b/src/adonisjs/database/seeds/RollbackInitialSeeder.js @@ -13,37 +13,34 @@ /** @type {import('@adonisjs/lucid/src/Factory')} */ const Factory = use('Factory') -const CaseVersion = use('App/Models/v1/CaseVersion'); -const Case = use('App/Models/v1/Case'); -const User = use('App/Models/v1/User'); -const Role = use('App/Models/v1/Role'); -const Quest = use('App/Models/v1/Quest'); -const Token = use('App/Models/v1/Token'); +const CaseVersion = use('App/Models/v1/CaseVersion') +const Case = use('App/Models/v1/Case') +const User = use('App/Models/v1/User') +const Role = use('App/Models/v1/Role') +const Quest = use('App/Models/v1/Quest') +const Token = use('App/Models/v1/Token') const Database = use('Database') -const Helpers = use('Helpers') -const Drive = use('Drive'); - - +const Helpers = use('Helpers') +const Drive = use('Drive') class RollbackInitialSeeder { async run () { - let trx = await Database.beginTransaction() - - try{ - let c = await Case.findBy('title', 'default-case') - let versions = await c.versions().fetch() - let cvs = versions.rows + const trx = await Database.beginTransaction() + + try { + const c = await Case.findBy('title', 'default-case') + const versions = await c.versions().fetch() + const cvs = versions.rows await c.versions().delete() await c.users().detach() - let caseArtifacts = await c.artifacts().fetch() + const caseArtifacts = await c.artifacts().fetch() console.log(caseArtifacts) console.log(caseArtifacts[0]) for (var i = 0; i < caseArtifacts.length; i++) { - console.log('iiii') artifacts[i].users().dissociate(trx) console.log('jjjj') @@ -53,14 +50,14 @@ class RollbackInitialSeeder { await c.delete(trx) - let artifactPath = Helpers.publicPath('/resources/artifacts/cases/') + c.id + '/' + const artifactPath = Helpers.publicPath('/resources/artifacts/cases/') + c.id + '/' await Drive.delete(artifactPath) - let slug_roles = ['admin', 'author', 'player'] + const slug_roles = ['admin', 'author', 'player'] for (var i = 0; i < slug_roles.length; i++) { - let role = await Role.findBy('slug', slug_roles[i]) + const role = await Role.findBy('slug', slug_roles[i]) await role.users().detach() await role.delete(trx) @@ -72,12 +69,12 @@ class RollbackInitialSeeder { await quest.delete(trx) - let user = await User.findBy('username', 'jacinto') + const user = await User.findBy('username', 'jacinto') await user.delete(trx) trx.commit() - } catch(e){ + } catch (e) { console.log('Error on seed process. Transactions rolled back. Log:') console.log(e) diff --git a/src/adonisjs/database/seeds/UniversidadeDoMinhoRollbackSeeder.js b/src/adonisjs/database/seeds/UniversidadeDoMinhoRollbackSeeder.js index 521da97..635c47f 100644 --- a/src/adonisjs/database/seeds/UniversidadeDoMinhoRollbackSeeder.js +++ b/src/adonisjs/database/seeds/UniversidadeDoMinhoRollbackSeeder.js @@ -14,53 +14,46 @@ const Factory = use('Factory') const Database = use('Database') -const uuidv4 = require('uuid/v4'); +const uuidv4 = require('uuid/v4') - -const User = use('App/Models/v1/User'); -const Quest = use('App/Models/v1/Quest'); +const User = use('App/Models/v1/User') +const Quest = use('App/Models/v1/Quest') class UniversidadeDoMinhoRollbackSeeder { - - async run () { - let trx = await Database.beginTransaction() - - try{ - - let users = [{email: 'minho1@mail.com'}, {email: 'minho2@mail.com'}, {email: 'minho3@mail.com'}] - - for (var i = 0; i < users.length; i++) { - const user = await User.findBy('email', users[i].email) - console.log(users[i].email) - console.log(user) - await user.quests().detach() - await user.roles().detach() - let tokens = await user.tokens().fetch() + const trx = await Database.beginTransaction() - let tokens_rows = tokens.rows - for (var j = 0; j < tokens_rows.length; j++) { - console.log('vi deletar') - tokens_rows[j].delete(trx) - } + try { + const users = [{ email: 'minho1@mail.com' }, { email: 'minho2@mail.com' }, { email: 'minho3@mail.com' }] + for (var i = 0; i < users.length; i++) { + const user = await User.findBy('email', users[i].email) + console.log(users[i].email) + console.log(user) + await user.quests().detach() + await user.roles().detach() + const tokens = await user.tokens().fetch() - await user.delete(trx) + const tokens_rows = tokens.rows + for (var j = 0; j < tokens_rows.length; j++) { + console.log('vi deletar') + tokens_rows[j].delete(trx) + } - } + await user.delete(trx) + } - const quest = await Quest.findBy('title', 'Decisões Extremas') - await quest.cases().detach() - await quest.delete(trx) + const quest = await Quest.findBy('title', 'Decisões Extremas') + await quest.cases().detach() + await quest.delete(trx) trx.commit() - } catch(e){ - console.log('Error on rollback-seed process. Transactions rolled back. Log:') + } catch (e) { + console.log('Error on rollback-seed process. Transactions rolled back. Log:') console.log(e) trx.rollback() } - } } diff --git a/src/adonisjs/database/seeds/UniversidadeDoMinhoSeeder.js b/src/adonisjs/database/seeds/UniversidadeDoMinhoSeeder.js index bced284..12bd5b2 100644 --- a/src/adonisjs/database/seeds/UniversidadeDoMinhoSeeder.js +++ b/src/adonisjs/database/seeds/UniversidadeDoMinhoSeeder.js @@ -14,62 +14,52 @@ const Factory = use('Factory') const Database = use('Database') -const uuidv4 = require('uuid/v4'); +const uuidv4 = require('uuid/v4') +const User = use('App/Models/v1/User') +const Quest = use('App/Models/v1/Quest') +const Case = use('App/Models/v1/Case') -const User = use('App/Models/v1/User'); -const Quest = use('App/Models/v1/Quest'); -const Case = use('App/Models/v1/Case'); - -const Role = use('App/Models/v1/Role'); -const Permission = use('App/Models/v1/Permission'); +const Role = use('App/Models/v1/Role') +const Permission = use('App/Models/v1/Permission') class UniversidadeDoMinhoSeeder { - - async run () { - let trx = await Database.beginTransaction() + const trx = await Database.beginTransaction() - try{ - let emails = [{email: 'minho1@mail.com'}, {email: 'minho2@mail.com'}, {email: 'minho3@mail.com'}] - - let quest = new Quest() + try { + const emails = [{ email: 'minho1@mail.com' }, { email: 'minho2@mail.com' }, { email: 'minho3@mail.com' }] + + const quest = new Quest() quest.title = 'Decisões Extremas' - quest.id = await uuidv4() - await quest.save(trx) + quest.id = await uuidv4() + await quest.save(trx) - let users = await Factory.model('App/Models/v1/User').createMany(3, emails, trx) + const users = await Factory.model('App/Models/v1/User').createMany(3, emails, trx) - let role_player = await Role.findBy('slug', 'player') - - for (var i = 0; i < users.length; i++) { + const role_player = await Role.findBy('slug', 'player') - await quest.users().attach(users[i].id, (row) => { + for (var i = 0; i < users.length; i++) { + await quest.users().attach(users[i].id, (row) => { const PLAYER = 2 row.role = PLAYER }, trx) - await users[i].roles().attach([role_player.id], trx) + await users[i].roles().attach([role_player.id], trx) } - let c = await Case.findBy('title', 'default-case') - await quest.cases().attach(c.id, (row) => { - row.order_position = 0 - }, trx) - - - - - + const c = await Case.findBy('title', 'default-case') + await quest.cases().attach(c.id, (row) => { + row.order_position = 0 + }, trx) trx.commit() - }catch(e){ + } catch (e) { trx.rollback() - console.log('Error on seed process. Transactions rolled back. Log:') + console.log('Error on seed process. Transactions rolled back. Log:') console.log(e) - } - + } } } diff --git a/src/adonisjs/database/seeds/defaultQuests.json b/src/adonisjs/database/seeds/defaultQuests.json new file mode 100644 index 0000000..59e0b98 --- /dev/null +++ b/src/adonisjs/database/seeds/defaultQuests.json @@ -0,0 +1,38 @@ +[ + { + "id": "68eeb917-0638-4f7c-a25d-44428980d97b", + "title": "Quiz da Emergência", + "color": "#e64e31", + "url": "imgs/quiz-emergencia.png" + }, + { + "id": "74ae85f1-8b5b-444d-8039-061f99fec333", + "title": "Desafio de Eletrocardiograma", + "color": "#ae9e00", + "url": "desafio-eletro.png" + }, + { + "id": "7f835ce4-d221-4fe8-ae3a-c48e3a0382fc", + "title": "Desafio Radiológico", + "color": "#348f00", + "url": "desafio-radio.png" + }, + { + "id": "ab31e7e1-117c-4e3a-b3c0-192d8efa885c", + "title": "default-quest", + "color": "#505050", + "url": "default-image.png" + }, + { + "id": "c0a4e21c-570b-47e2-8a08-f6bb60a49dcc", + "title": "Visita Virtual", + "color": "#245797", + "url": "visita-virtual.png" + }, + { + "id": "df0e0655-3b16-41fb-884c-e9248ba9a964", + "title": "Decisões Extremas", + "color": "#a34fa3", + "url": "decisoes-extremas.png" + } +] diff --git a/src/adonisjs/package-lock.json b/src/adonisjs/package-lock.json index 5b9d8e4..21e38aa 100644 --- a/src/adonisjs/package-lock.json +++ b/src/adonisjs/package-lock.json @@ -152,12 +152,62 @@ "@adonisjs/generic-exceptions": "^2.0.1", "chance": "^1.0.16", "debug": "^4.0.1", - "knex": "^0.19.5", + "knex": "^0.15.2", "lodash": "^4.17.11", "moment": "^2.22.2", "pluralize": "^7.0.0", "pretty-hrtime": "^1.0.3", "require-all": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "knex": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/knex/-/knex-0.15.2.tgz", + "integrity": "sha1-YFm4dIlgX0zIdZmm0qnSZXCek0A=", + "requires": { + "babel-runtime": "^6.26.0", + "bluebird": "^3.5.1", + "chalk": "2.3.2", + "commander": "^2.16.0", + "debug": "3.1.0", + "inherits": "~2.0.3", + "interpret": "^1.1.0", + "liftoff": "2.5.0", + "lodash": "^4.17.10", + "minimist": "1.2.0", + "mkdirp": "^0.5.1", + "pg-connection-string": "2.0.0", + "tarn": "^1.1.4", + "tildify": "1.2.0", + "uuid": "^3.3.2", + "v8flags": "^3.1.1" + }, + "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" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, "@adonisjs/middleware-base": { @@ -210,6 +260,32 @@ "uuid": "^3.3.2" } }, + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, "@slynova/flydrive": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@slynova/flydrive/-/flydrive-0.3.1.tgz", @@ -233,6 +309,12 @@ } } }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -257,6 +339,12 @@ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==" }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, "acorn-node": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.7.0.tgz", @@ -290,6 +378,18 @@ } } }, + "ajv": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi-bgblack": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz", @@ -428,6 +528,23 @@ "ansi-wrap": "0.1.0" } }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, "ansi-gray": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", @@ -555,6 +672,15 @@ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz", "integrity": "sha1-gwtoCqflbzNFHUsEnzvYBESY7ic=" }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -593,6 +719,17 @@ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, "array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", @@ -608,6 +745,12 @@ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, "async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", @@ -630,6 +773,12 @@ "regenerator-runtime": "^0.11.0" } }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, "base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", @@ -667,6 +816,16 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", @@ -709,7 +868,7 @@ "get-value": "^2.0.6", "has-value": "^1.0.0", "isobject": "^3.0.1", - "set-value": "^2.0.1", + "set-value": "^2.0.0", "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" @@ -761,6 +920,12 @@ "resolved": "https://registry.npmjs.org/chance/-/chance-1.0.18.tgz", "integrity": "sha512-g9YLQVHVZS/3F+zIicfB58vjcxopvYQRp7xHzvyDFDhXH1aRZI/JhwSAO0X5qYiQluoGnaNAU6wByD2KTxJN1A==" }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, "choices-separator": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/choices-separator/-/choices-separator-2.0.0.tgz", @@ -858,6 +1023,15 @@ } } }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, "cli-table": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", @@ -866,6 +1040,12 @@ "colors": "1.0.3" } }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -986,6 +1166,18 @@ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -1010,9 +1202,9 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" }, "core-util-is": { "version": "1.0.2", @@ -1071,11 +1263,32 @@ "ms": "^2.1.1" } }, + "debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "dev": true + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", @@ -1084,6 +1297,28 @@ "is-descriptor": "^1.0.0" } }, + "deglob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/deglob/-/deglob-4.0.1.tgz", + "integrity": "sha512-/g+RDZ7yf2HvoW+E5Cy+K94YhgcFgr6C8LuHZD1O5HoNPkf3KY6RfXJ0DBGlB/NkLi5gml+G9zqRzk9S0mHZCg==", + "dev": true, + "requires": { + "find-root": "^1.0.0", + "glob": "^7.0.5", + "ignore": "^5.0.0", + "pkg-config": "^1.1.0", + "run-parallel": "^1.1.2", + "uniq": "^1.0.1" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + } + } + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -1109,6 +1344,15 @@ "kuler": "1.0.x" } }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "dotenv": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", @@ -1153,6 +1397,12 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "enabled": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", @@ -1190,7 +1440,7 @@ "prompt-input": "^3.0.0", "prompt-question": "^3.0.3", "readline-ui": "^2.2.2", - "set-value": "^2.0.1" + "set-value": "^1.0.0" }, "dependencies": { "debug": { @@ -1205,6 +1455,17 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "set-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-1.0.0.tgz", + "integrity": "sha1-vMdvcaDx4HokuYfQoCr+yfZlME8=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } } } }, @@ -1213,11 +1474,66 @@ "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz", "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==" }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + } + } + }, "error-symbol": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/error-symbol/-/error-symbol-0.1.0.tgz", "integrity": "sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y=" }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "dependencies": { + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1228,11 +1544,376 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "eslint-config-standard": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", + "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", + "dev": true + }, + "eslint-config-standard-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.1.0.tgz", + "integrity": "sha512-ULVC8qH8qCqbU792ZOO6DaiaZyHNS/5CZt3hKqHkEhVlhPEPN3nfBqqxJCyp59XrjIBZPu1chMYe9T2DXZ7TMw==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", + "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", + "dev": true, + "requires": { + "eslint-utils": "^1.4.2", + "regexpp": "^3.0.0" + }, + "dependencies": { + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", + "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.11.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz", + "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==", + "dev": true, + "requires": { + "eslint-plugin-es": "^2.0.0", + "eslint-utils": "^1.4.2", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", + "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", + "dev": true + }, + "eslint-plugin-react": { + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz", + "integrity": "sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.1.0", + "object.entries": "^1.1.0", + "object.fromentries": "^2.0.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.2", + "resolve": "^1.10.1" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + } + } + }, + "eslint-plugin-standard": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", + "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "dev": true + } + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -1352,6 +2033,17 @@ "is-extendable": "^0.1.0" } }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -1367,6 +2059,18 @@ "to-regex": "^3.0.1" } }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -1390,6 +2094,24 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==" }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -1411,6 +2133,21 @@ } } }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, "findup-sync": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", @@ -1439,6 +2176,23 @@ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1480,6 +2234,30 @@ "universalify": "^0.1.0" } }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-stdin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", + "dev": true + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -1493,6 +2271,40 @@ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "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" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + }, + "dependencies": { + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + } + } + }, "global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", @@ -1515,16 +2327,40 @@ "which": "^1.2.14" } }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, "graceful-fs": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.1.tgz", "integrity": "sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw==" }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -1585,6 +2421,12 @@ "parse-passwd": "^1.0.0" } }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, "http-errors": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", @@ -1605,6 +2447,36 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, "indent-string": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", @@ -1615,6 +2487,16 @@ "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", "integrity": "sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8=" }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "info-symbol": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/info-symbol/-/info-symbol-0.1.0.tgz", @@ -1630,6 +2512,123 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "interpret": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", @@ -1702,6 +2701,12 @@ } } }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", @@ -1755,6 +2760,15 @@ "isobject": "^3.0.1" } }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, "is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", @@ -1768,6 +2782,21 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, "is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -1796,6 +2825,40 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -1821,6 +2884,16 @@ "semver": "^5.6.0" } }, + "jsx-ast-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" + } + }, "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -1853,59 +2926,6 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==" }, - "knex": { - "version": "0.19.5", - "resolved": "https://registry.yarnpkg.com/knex/-/knex-0.19.5.tgz#3597ebecf88a5942f18c3e6d91af53bda59eeb5d", - "integrity": "sha512-Hy258avCVircQq+oj3WBqPzl8jDIte438Qlq+8pt1i/TyLYVA4zPh2uKc7Bx0t+qOpa6D42HJ2jjtl2vagzilw==", - "requires": { - "babel-runtime": "^6.26.0", - "bluebird": "^3.5.1", - "chalk": "2.3.2", - "commander": "^2.16.0", - "debug": "3.1.0", - "inherits": "~2.0.3", - "interpret": "^1.1.0", - "liftoff": "2.5.0", - "lodash": "^4.17.10", - "minimist": "1.2.0", - "mkdirp": "^0.5.1", - "pg-connection-string": "2.0.0", - "tarn": "^1.1.4", - "tildify": "1.2.0", - "uuid": "^3.3.2", - "v8flags": "^3.1.1" - }, - "dependencies": { - "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, "koalas": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz", @@ -1927,6 +2947,16 @@ "set-getter": "^0.1.0" } }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "liftoff": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", @@ -1942,6 +2972,36 @@ "resolve": "^1.1.7" } }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", @@ -2024,6 +3084,15 @@ } } }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -2152,6 +3221,21 @@ "mime-db": "1.40.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", @@ -2197,7 +3281,14 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { - "minimist": "1.2.0" + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } } }, "moment": { @@ -2317,6 +3408,12 @@ } } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -2390,10 +3487,22 @@ "vary": "^1.1.2" } }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, "npm": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/npm/-/npm-6.10.3.tgz", - "integrity": "sha512-AH2uhSRaIMll7xz1JuLA6XbZu5k6DMSc77U6uWfuyBch4EzwpEc5dd54/OsX4Njioi7fSL7YmuPQbqKE2qiklw==", + "version": "6.14.8", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.14.8.tgz", + "integrity": "sha512-HBZVBMYs5blsj94GTeQZel7s9odVuuSUHy1+AlZh7rPVux1os2ashvEGLy/STNK7vUjbrCg5Kq9/GXisJgdf6A==", "requires": { "JSONStream": "^1.3.5", "abbrev": "~1.1.1", @@ -2401,16 +3510,16 @@ "ansistyles": "~0.1.3", "aproba": "^2.0.0", "archy": "~1.0.0", - "bin-links": "^1.1.2", + "bin-links": "^1.1.8", "bluebird": "^3.5.5", "byte-size": "^5.0.1", - "cacache": "^12.0.2", + "cacache": "^12.0.3", "call-limit": "^1.1.1", - "chownr": "^1.1.2", + "chownr": "^1.1.4", "ci-info": "^2.0.0", "cli-columns": "^3.1.2", "cli-table3": "^0.5.1", - "cmd-shim": "~2.0.2", + "cmd-shim": "^3.0.3", "columnify": "~1.5.4", "config-chain": "^1.1.12", "debuglog": "*", @@ -2422,11 +3531,11 @@ "find-npm-prefix": "^1.0.2", "fs-vacuum": "~1.2.10", "fs-write-stream-atomic": "~1.0.10", - "gentle-fs": "^2.0.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", + "gentle-fs": "^2.3.1", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", "has-unicode": "~2.0.1", - "hosted-git-info": "^2.8.2", + "hosted-git-info": "^2.8.8", "iferr": "^1.0.2", "imurmurhash": "*", "infer-owner": "^1.0.4", @@ -2437,14 +3546,14 @@ "is-cidr": "^3.0.0", "json-parse-better-errors": "^1.0.2", "lazy-property": "~1.0.0", - "libcipm": "^4.0.0", + "libcipm": "^4.0.8", "libnpm": "^3.0.1", "libnpmaccess": "^3.0.2", "libnpmhook": "^5.0.3", "libnpmorg": "^1.0.1", "libnpmsearch": "^2.0.2", "libnpmteam": "^1.0.2", - "libnpx": "^10.2.0", + "libnpx": "^10.2.4", "lock-verify": "^2.1.0", "lockfile": "^1.0.4", "lodash._baseindexof": "*", @@ -2459,52 +3568,52 @@ "lodash.uniq": "~4.5.0", "lodash.without": "~4.4.0", "lru-cache": "^5.1.1", - "meant": "~1.0.1", + "meant": "^1.0.2", "mississippi": "^3.0.0", - "mkdirp": "~0.5.1", + "mkdirp": "^0.5.5", "move-concurrently": "^1.0.1", - "node-gyp": "^5.0.3", - "nopt": "~4.0.1", + "node-gyp": "^5.1.0", + "nopt": "^4.0.3", "normalize-package-data": "^2.5.0", - "npm-audit-report": "^1.3.2", + "npm-audit-report": "^1.3.3", "npm-cache-filename": "~1.0.2", - "npm-install-checks": "~3.0.0", - "npm-lifecycle": "^3.1.2", - "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.4.4", - "npm-pick-manifest": "^2.2.3", - "npm-profile": "^4.0.2", - "npm-registry-fetch": "^4.0.0", + "npm-install-checks": "^3.0.2", + "npm-lifecycle": "^3.1.5", + "npm-package-arg": "^6.1.1", + "npm-packlist": "^1.4.8", + "npm-pick-manifest": "^3.0.2", + "npm-profile": "^4.0.4", + "npm-registry-fetch": "^4.0.7", "npm-user-validate": "~1.0.0", "npmlog": "~4.1.2", "once": "~1.4.0", "opener": "^1.5.1", "osenv": "^0.1.5", - "pacote": "^9.5.4", + "pacote": "^9.5.12", "path-is-inside": "~1.0.2", "promise-inflight": "~1.0.1", "qrcode-terminal": "^0.12.0", "query-string": "^6.8.2", "qw": "~1.0.1", "read": "~1.0.7", - "read-cmd-shim": "~1.0.1", + "read-cmd-shim": "^1.0.5", "read-installed": "~4.0.3", - "read-package-json": "^2.0.13", + "read-package-json": "^2.1.1", "read-package-tree": "^5.3.1", - "readable-stream": "^3.4.0", + "readable-stream": "^3.6.0", "readdir-scoped-modules": "^1.1.0", "request": "^2.88.0", "retry": "^0.12.0", - "rimraf": "^2.6.3", + "rimraf": "^2.7.1", "safe-buffer": "^5.1.2", - "semver": "^5.7.0", + "semver": "^5.7.1", "sha": "^3.0.0", "slide": "~1.1.6", "sorted-object": "~2.0.1", "sorted-union-stream": "~2.1.3", "ssri": "^6.0.1", - "stringify-package": "^1.0.0", - "tar": "^4.4.10", + "stringify-package": "^1.0.1", + "tar": "^4.4.13", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "uid-number": "0.0.6", @@ -2512,7 +3621,7 @@ "unique-filename": "^1.1.1", "unpipe": "~1.0.0", "update-notifier": "^2.5.0", - "uuid": "^3.3.2", + "uuid": "^3.3.3", "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "~3.0.0", "which": "^1.3.1", @@ -2660,13 +3769,14 @@ } }, "bin-links": { - "version": "1.1.2", + "version": "1.1.8", "bundled": true, "requires": { - "bluebird": "^3.5.0", - "cmd-shim": "^2.0.2", - "gentle-fs": "^2.0.0", - "graceful-fs": "^4.1.11", + "bluebird": "^3.5.3", + "cmd-shim": "^3.0.0", + "gentle-fs": "^2.3.0", + "graceful-fs": "^4.1.15", + "npm-normalize-package-bin": "^1.0.0", "write-file-atomic": "^2.3.0" } }, @@ -2712,7 +3822,7 @@ "bundled": true }, "cacache": { - "version": "12.0.2", + "version": "12.0.3", "bundled": true, "requires": { "bluebird": "^3.5.5", @@ -2758,7 +3868,7 @@ } }, "chownr": { - "version": "1.1.2", + "version": "1.1.4", "bundled": true }, "ci-info": { @@ -2794,23 +3904,36 @@ } }, "cliui": { - "version": "4.1.0", + "version": "5.0.0", "bundled": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", + "version": "4.1.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", "bundled": true }, + "string-width": { + "version": "3.1.0", + "bundled": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, "strip-ansi": { - "version": "4.0.0", + "version": "5.2.0", "bundled": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } } } @@ -2820,7 +3943,7 @@ "bundled": true }, "cmd-shim": { - "version": "2.0.2", + "version": "3.0.3", "bundled": true, "requires": { "graceful-fs": "^4.1.2", @@ -2911,10 +4034,10 @@ } }, "configstore": { - "version": "3.1.2", + "version": "3.1.5", "bundled": true, "requires": { - "dot-prop": "^4.1.0", + "dot-prop": "^4.2.1", "graceful-fs": "^4.1.2", "make-dir": "^1.0.0", "unique-string": "^1.0.0", @@ -3023,7 +4146,7 @@ "bundled": true }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true }, "defaults": { @@ -3065,7 +4188,7 @@ } }, "dot-prop": { - "version": "4.2.0", + "version": "4.2.1", "bundled": true, "requires": { "is-obj": "^1.0.0" @@ -3124,6 +4247,10 @@ "version": "1.0.0", "bundled": true }, + "emoji-regex": { + "version": "7.0.3", + "bundled": true + }, "encoding": { "version": "0.1.12", "bundled": true, @@ -3139,7 +4266,7 @@ } }, "env-paths": { - "version": "1.0.0", + "version": "2.2.0", "bundled": true }, "err-code": { @@ -3231,13 +4358,6 @@ "version": "1.0.2", "bundled": true }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "^2.0.0" - } - }, "flush-write-stream": { "version": "1.0.3", "bundled": true, @@ -3306,18 +4426,28 @@ "version": "1.1.1", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "requires": { + "minipass": "^2.6.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } } } }, - "fs-minipass": { - "version": "1.2.6", - "bundled": true, - "requires": { - "minipass": "^2.2.1" - } - }, "fs-vacuum": { "version": "1.2.10", "bundled": true, @@ -3405,13 +4535,16 @@ "bundled": true }, "gentle-fs": { - "version": "2.0.1", + "version": "2.3.1", "bundled": true, "requires": { "aproba": "^1.1.2", + "chownr": "^1.1.2", + "cmd-shim": "^3.0.3", "fs-vacuum": "^1.2.10", "graceful-fs": "^4.1.11", "iferr": "^0.1.5", + "infer-owner": "^1.0.4", "mkdirp": "^0.5.1", "path-is-inside": "^1.0.2", "read-cmd-shim": "^1.0.1", @@ -3429,7 +4562,7 @@ } }, "get-caller-file": { - "version": "1.0.2", + "version": "2.0.5", "bundled": true }, "get-stream": { @@ -3447,7 +4580,7 @@ } }, "glob": { - "version": "7.1.4", + "version": "7.1.6", "bundled": true, "requires": { "fs.realpath": "^1.0.0", @@ -3489,7 +4622,7 @@ } }, "graceful-fs": { - "version": "4.2.0", + "version": "4.2.4", "bundled": true }, "har-schema": { @@ -3524,11 +4657,8 @@ "bundled": true }, "hosted-git-info": { - "version": "2.8.2", - "bundled": true, - "requires": { - "lru-cache": "^5.1.1" - } + "version": "2.8.8", + "bundled": true }, "http-cache-semantics": { "version": "3.8.1", @@ -3552,7 +4682,7 @@ } }, "https-proxy-agent": { - "version": "2.2.2", + "version": "2.2.4", "bundled": true, "requires": { "agent-base": "^4.3.0", @@ -3578,7 +4708,7 @@ "bundled": true }, "ignore-walk": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "requires": { "minimatch": "^3.0.4" @@ -3626,10 +4756,6 @@ "validate-npm-package-name": "^3.0.0" } }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, "ip": { "version": "1.1.5", "bundled": true @@ -3643,10 +4769,10 @@ "bundled": true }, "is-ci": { - "version": "1.1.0", + "version": "1.2.1", "bundled": true, "requires": { - "ci-info": "^1.0.0" + "ci-info": "^1.5.0" }, "dependencies": { "ci-info": { @@ -3708,7 +4834,7 @@ } }, "is-retry-allowed": { - "version": "1.1.0", + "version": "1.2.0", "bundled": true }, "is-stream": { @@ -3784,15 +4910,8 @@ "version": "1.0.0", "bundled": true }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, "libcipm": { - "version": "4.0.0", + "version": "4.0.8", "bundled": true, "requires": { "bin-links": "^1.1.2", @@ -3801,7 +4920,7 @@ "find-npm-prefix": "^1.0.2", "graceful-fs": "^4.1.11", "ini": "^1.3.5", - "lock-verify": "^2.0.2", + "lock-verify": "^2.1.0", "mkdirp": "^0.5.1", "npm-lifecycle": "^3.0.0", "npm-logical-tree": "^1.2.1", @@ -3947,7 +5066,7 @@ } }, "libnpx": { - "version": "10.2.0", + "version": "10.2.4", "bundled": true, "requires": { "dotenv": "^5.0.1", @@ -3957,15 +5076,7 @@ "update-notifier": "^2.3.0", "which": "^1.3.0", "y18n": "^4.0.0", - "yargs": "^11.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "yargs": "^14.2.3" } }, "lock-verify": { @@ -4061,14 +5172,14 @@ } }, "make-fetch-happen": { - "version": "5.0.0", + "version": "5.0.2", "bundled": true, "requires": { "agentkeepalive": "^3.4.1", "cacache": "^12.0.0", "http-cache-semantics": "^3.8.1", "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", + "https-proxy-agent": "^2.2.3", "lru-cache": "^5.1.1", "mississippi": "^3.0.0", "node-fetch-npm": "^2.0.2", @@ -4078,16 +5189,9 @@ } }, "meant": { - "version": "1.0.1", + "version": "1.0.2", "bundled": true }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, "mime-db": { "version": "1.35.0", "bundled": true @@ -4099,10 +5203,6 @@ "mime-db": "~1.35.0" } }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true - }, "minimatch": { "version": "3.0.4", "bundled": true, @@ -4111,30 +5211,26 @@ } }, "minimist": { - "version": "1.2.0", + "version": "1.2.5", "bundled": true }, - "minipass": { - "version": "2.3.3", + "minizlib": { + "version": "1.3.3", "bundled": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "minipass": "^2.9.0" }, "dependencies": { - "yallist": { - "version": "3.0.2", - "bundled": true + "minipass": { + "version": "2.9.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } } } }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "requires": { - "minipass": "^2.2.1" - } - }, "mississippi": { "version": "3.0.0", "bundled": true, @@ -4152,10 +5248,16 @@ } }, "mkdirp": { - "version": "0.5.1", + "version": "0.5.5", "bundled": true, "requires": { - "minimist": "1.2.0" + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "bundled": true + } } }, "move-concurrently": { @@ -4194,37 +5296,24 @@ } }, "node-gyp": { - "version": "5.0.3", + "version": "5.1.0", "bundled": true, "requires": { - "env-paths": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^4.4.8", - "which": "1" - }, - "dependencies": { - "nopt": { - "version": "3.0.6", - "bundled": true, - "requires": { - "abbrev": "1" - } - }, - "semver": { - "version": "5.3.0", - "bundled": true - } + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.1.2", + "request": "^2.88.0", + "rimraf": "^2.6.3", + "semver": "^5.7.1", + "tar": "^4.4.12", + "which": "^1.3.1" } }, "nopt": { - "version": "4.0.1", + "version": "4.0.3", "bundled": true, "requires": { "abbrev": "1", @@ -4251,7 +5340,7 @@ } }, "npm-audit-report": { - "version": "1.3.2", + "version": "1.3.3", "bundled": true, "requires": { "cli-table3": "^0.5.0", @@ -4259,22 +5348,25 @@ } }, "npm-bundled": { - "version": "1.0.6", - "bundled": true + "version": "1.1.1", + "bundled": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } }, "npm-cache-filename": { "version": "1.0.2", "bundled": true }, "npm-install-checks": { - "version": "3.0.0", + "version": "3.0.2", "bundled": true, "requires": { "semver": "^2.3.0 || 3.x || 4 || 5" } }, "npm-lifecycle": { - "version": "3.1.2", + "version": "3.1.5", "bundled": true, "requires": { "byline": "^5.0.0", @@ -4291,26 +5383,31 @@ "version": "1.2.1", "bundled": true }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true + }, "npm-package-arg": { - "version": "6.1.0", + "version": "6.1.1", "bundled": true, "requires": { - "hosted-git-info": "^2.6.0", + "hosted-git-info": "^2.7.1", "osenv": "^0.1.5", - "semver": "^5.5.0", + "semver": "^5.6.0", "validate-npm-package-name": "^3.0.0" } }, "npm-packlist": { - "version": "1.4.4", + "version": "1.4.8", "bundled": true, "requires": { "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" } }, "npm-pick-manifest": { - "version": "2.2.3", + "version": "3.0.2", "bundled": true, "requires": { "figgy-pudding": "^3.5.1", @@ -4319,7 +5416,7 @@ } }, "npm-profile": { - "version": "4.0.2", + "version": "4.0.4", "bundled": true, "requires": { "aproba": "^1.1.2 || 2", @@ -4328,7 +5425,7 @@ } }, "npm-registry-fetch": { - "version": "4.0.0", + "version": "4.0.7", "bundled": true, "requires": { "JSONStream": "^1.3.4", @@ -4336,7 +5433,14 @@ "figgy-pudding": "^3.4.1", "lru-cache": "^5.1.1", "make-fetch-happen": "^5.0.0", - "npm-package-arg": "^6.1.0" + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "bundled": true + } } }, "npm-run-path": { @@ -4399,15 +5503,6 @@ "version": "1.0.2", "bundled": true }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, "os-tmpdir": { "version": "1.0.2", "bundled": true @@ -4424,24 +5519,6 @@ "version": "1.0.0", "bundled": true }, - "p-limit": { - "version": "1.2.0", - "bundled": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true - }, "package-json": { "version": "4.0.1", "bundled": true, @@ -4453,14 +5530,16 @@ } }, "pacote": { - "version": "9.5.4", + "version": "9.5.12", "bundled": true, "requires": { "bluebird": "^3.5.3", - "cacache": "^12.0.0", + "cacache": "^12.0.2", + "chownr": "^1.1.2", "figgy-pudding": "^3.5.1", "get-stream": "^4.1.0", "glob": "^7.1.3", + "infer-owner": "^1.0.4", "lru-cache": "^5.1.1", "make-fetch-happen": "^5.0.0", "minimatch": "^3.0.4", @@ -4468,9 +5547,10 @@ "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "normalize-package-data": "^2.4.0", + "npm-normalize-package-bin": "^1.0.0", "npm-package-arg": "^6.1.0", "npm-packlist": "^1.1.12", - "npm-pick-manifest": "^2.2.3", + "npm-pick-manifest": "^3.0.0", "npm-registry-fetch": "^4.0.0", "osenv": "^0.1.5", "promise-inflight": "^1.0.1", @@ -4480,13 +5560,13 @@ "safe-buffer": "^5.1.2", "semver": "^5.6.0", "ssri": "^6.0.1", - "tar": "^4.4.8", + "tar": "^4.4.10", "unique-filename": "^1.1.1", "which": "^1.3.1" }, "dependencies": { "minipass": { - "version": "2.3.5", + "version": "2.9.0", "bundled": true, "requires": { "safe-buffer": "^5.1.2", @@ -4663,19 +5743,13 @@ "bundled": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "requires": { - "deep-extend": "^0.5.1", + "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", - "bundled": true - } } }, "read": { @@ -4686,7 +5760,7 @@ } }, "read-cmd-shim": { - "version": "1.0.1", + "version": "1.0.5", "bundled": true, "requires": { "graceful-fs": "^4.1.2" @@ -4706,14 +5780,14 @@ } }, "read-package-json": { - "version": "2.0.13", + "version": "2.1.1", "bundled": true, "requires": { "glob": "^7.1.1", "graceful-fs": "^4.1.2", "json-parse-better-errors": "^1.0.1", "normalize-package-data": "^2.0.0", - "slash": "^1.0.0" + "npm-normalize-package-bin": "^1.0.0" } }, "read-package-tree": { @@ -4726,7 +5800,7 @@ } }, "readable-stream": { - "version": "3.4.0", + "version": "3.6.0", "bundled": true, "requires": { "inherits": "^2.0.3", @@ -4745,7 +5819,7 @@ } }, "registry-auth-token": { - "version": "3.3.2", + "version": "3.4.0", "bundled": true, "requires": { "rc": "^1.1.6", @@ -4790,7 +5864,7 @@ "bundled": true }, "require-main-filename": { - "version": "1.0.1", + "version": "2.0.0", "bundled": true }, "resolve-from": { @@ -4802,7 +5876,7 @@ "bundled": true }, "rimraf": { - "version": "2.6.3", + "version": "2.7.1", "bundled": true, "requires": { "glob": "^7.1.3" @@ -4830,7 +5904,7 @@ "bundled": true }, "semver": { - "version": "5.7.0", + "version": "5.7.1", "bundled": true }, "semver-diff": { @@ -4866,24 +5940,20 @@ "version": "3.0.2", "bundled": true }, - "slash": { - "version": "1.0.0", - "bundled": true - }, "slide": { "version": "1.1.6", "bundled": true }, "smart-buffer": { - "version": "4.0.2", + "version": "4.1.0", "bundled": true }, "socks": { - "version": "2.3.2", + "version": "2.3.3", "bundled": true, "requires": { - "ip": "^1.1.5", - "smart-buffer": "4.0.2" + "ip": "1.1.5", + "smart-buffer": "^4.1.0" } }, "socks-proxy-agent": { @@ -4964,7 +6034,7 @@ } }, "spdx-license-ids": { - "version": "3.0.3", + "version": "3.0.5", "bundled": true }, "split-on-first": { @@ -5065,14 +6135,20 @@ } }, "string_decoder": { - "version": "1.2.0", + "version": "1.3.0", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "bundled": true + } } }, "stringify-package": { - "version": "1.0.0", + "version": "1.0.1", "bundled": true }, "strip-ansi": { @@ -5098,12 +6174,12 @@ } }, "tar": { - "version": "4.4.10", + "version": "4.4.13", "bundled": true, "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.3.5", + "minipass": "^2.8.6", "minizlib": "^1.2.1", "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", @@ -5111,16 +6187,12 @@ }, "dependencies": { "minipass": { - "version": "2.3.5", + "version": "2.9.0", "bundled": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } - }, - "yallist": { - "version": "3.0.3", - "bundled": true } } }, @@ -5277,7 +6349,7 @@ } }, "uuid": { - "version": "3.3.2", + "version": "3.3.3", "bundled": true }, "validate-npm-package-license": { @@ -5341,7 +6413,7 @@ } }, "widest-line": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true, "requires": { "string-width": "^2.1.1" @@ -5355,20 +6427,36 @@ } }, "wrap-ansi": { - "version": "2.1.0", + "version": "5.1.0", "bundled": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, "string-width": { - "version": "1.0.2", + "version": "3.1.0", "bundled": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "bundled": true, + "requires": { + "ansi-regex": "^4.1.0" } } } @@ -5402,39 +6490,104 @@ "version": "3.0.3", "bundled": true }, - "yargs": { - "version": "11.0.0", + "yargs": { + "version": "14.2.3", + "bundled": true, + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "bundled": true + }, + "find-up": { + "version": "3.0.0", + "bundled": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "locate-path": { + "version": "3.0.0", + "bundled": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "bundled": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "bundled": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "bundled": true + }, + "string-width": { + "version": "3.1.0", + "bundled": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "bundled": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "15.0.1", "bundled": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "dependencies": { - "y18n": { - "version": "3.2.1", + "camelcase": { + "version": "5.3.1", "bundled": true } } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "requires": { - "camelcase": "^4.1.0" - } } } }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -5488,6 +6641,18 @@ } } }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -5496,6 +6661,18 @@ "isobject": "^3.0.0" } }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, "object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", @@ -5507,6 +6684,29 @@ "isobject": "^3.0.0" } }, + "object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", @@ -5524,6 +6724,18 @@ "isobject": "^3.0.1" } }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -5545,6 +6757,29 @@ "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=" }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -5555,6 +6790,47 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -5565,6 +6841,15 @@ "path-root": "^0.1.1" } }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -5580,6 +6865,18 @@ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "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=", + "dev": true + }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -5608,6 +6905,23 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz", "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==" }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -5623,6 +6937,110 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, + "pkg-conf": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", + "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + } + } + }, + "pkg-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", + "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", + "dev": true, + "requires": { + "debug-log": "^1.0.0", + "find-root": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, "platform": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz", @@ -5643,6 +7061,12 @@ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -5653,6 +7077,12 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, "promise-reduce": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/promise-reduce/-/promise-reduce-2.1.0.tgz", @@ -6002,7 +7432,7 @@ "log-utils": "^0.2.1", "pointer-symbol": "^1.0.0", "radio-symbol": "^2.0.0", - "set-value": "^2.0.1", + "set-value": "^1.0.0", "strip-color": "^0.1.0", "terminal-paginator": "^2.0.0", "toggle-array": "^1.0.1" @@ -6018,6 +7448,17 @@ } } }, + "set-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-1.0.0.tgz", + "integrity": "sha1-vMdvcaDx4HokuYfQoCr+yfZlME8=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + }, "shallow-clone": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", @@ -6106,6 +7547,17 @@ } } }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, "proxy-addr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", @@ -6129,6 +7581,12 @@ "once": "^1.3.1" } }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -6170,6 +7628,33 @@ "unpipe": "1.0.0" } }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, "readable-stream": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", @@ -6273,6 +7758,12 @@ } } }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", @@ -6314,9 +7805,9 @@ } }, "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "requires": { "path-parse": "^1.0.6" } @@ -6340,16 +7831,56 @@ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "rndm": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w=" }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -6505,17 +8036,6 @@ "to-object-path": "^0.3.0" } }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== ", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "to-object-path": "^0.3.0" - } - }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -6551,6 +8071,12 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, "simple-encryptor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/simple-encryptor/-/simple-encryptor-2.0.0.tgz", @@ -6567,6 +8093,17 @@ "is-arrayish": "^0.3.1" } }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -6696,6 +8233,38 @@ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -6723,6 +8292,12 @@ } } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "sqlstring": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", @@ -6733,6 +8308,43 @@ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, + "standard": { + "version": "14.3.4", + "resolved": "https://registry.npmjs.org/standard/-/standard-14.3.4.tgz", + "integrity": "sha512-+lpOkFssMkljJ6eaILmqxHQ2n4csuEABmcubLTb9almFi1ElDzXb1819fjf/5ygSyePCq4kU2wMdb2fBfb9P9Q==", + "dev": true, + "requires": { + "eslint": "~6.8.0", + "eslint-config-standard": "14.1.1", + "eslint-config-standard-jsx": "8.1.0", + "eslint-plugin-import": "~2.18.0", + "eslint-plugin-node": "~10.0.0", + "eslint-plugin-promise": "~4.2.1", + "eslint-plugin-react": "~7.14.2", + "eslint-plugin-standard": "~4.0.0", + "standard-engine": "^12.0.0" + } + }, + "standard-engine": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-12.1.0.tgz", + "integrity": "sha512-DVJnWM1CGkag4ucFLGdiYWa5/kJURPONmMmk17p8FT5NE4UnPZB1vxWnXnRo2sPSL78pWJG8xEM+1Tu19z0deg==", + "dev": true, + "requires": { + "deglob": "^4.0.1", + "get-stdin": "^7.0.0", + "minimist": "^1.2.5", + "pkg-conf": "^3.1.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -6817,6 +8429,26 @@ "strip-ansi": "^4.0.0" } }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -6840,11 +8472,23 @@ "ansi-regex": "^3.0.0" } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, "strip-color": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/strip-color/-/strip-color-0.1.0.tgz", "integrity": "sha1-EG9l09PmotlAHKwOsM6LinArT3s=" }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, "success-symbol": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz", @@ -6866,6 +8510,52 @@ "acorn-node": "^1.2.0" } }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "tarn": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/tarn/-/tarn-1.1.5.tgz", @@ -6901,6 +8591,18 @@ "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, "tildify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", @@ -7006,11 +8708,32 @@ "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, "tsscmp": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -7062,6 +8785,12 @@ } } }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -7116,6 +8845,15 @@ "cross-env": "^5.1.0" } }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -7145,6 +8883,12 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, "v8flags": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", @@ -7153,6 +8897,16 @@ "homedir-polyfill": "^1.0.1" } }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -7239,11 +8993,26 @@ } } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/src/adonisjs/package.json b/src/adonisjs/package.json index d12fb51..97ba7a4 100644 --- a/src/adonisjs/package.json +++ b/src/adonisjs/package.json @@ -35,8 +35,18 @@ "npm": "^6.13.4", "uuid": "^3.3.2" }, - "devDependencies": {}, + "devDependencies": { + "standard": "^14.3.4" + }, "autoload": { "App": "./app" + }, + "standard": { + "globals": [ + "use" + ], + "ignore": [ + "start/routes.js" + ] } } diff --git a/src/adonisjs/start/routes.js b/src/adonisjs/start/routes.js index 63f5916..595e286 100644 --- a/src/adonisjs/start/routes.js +++ b/src/adonisjs/start/routes.js @@ -20,11 +20,11 @@ Route.get('/', () => { return 'Hello from Harena Manager'} ) Route.group(() => { Route.post( '', 'v1/UserController.store') - Route.get( 'cases', 'v1/UserController.list_cases').middleware(['auth']) - Route.get( 'quests', 'v1/UserController.list_quests').middleware(['auth']) - Route.get( 'cases_by_quest', 'v1/UserController.list_cases_by_quests').middleware(['auth']) + Route.get('cases', 'v1/UserController.list_cases').middleware(['auth']) + Route.get( 'quests', 'v1/UserController.list_quests').middleware(['auth']) + Route.get( 'cases_by_quest', 'v1/UserController.list_cases_by_quests').middleware(['auth']) - Route.get( ':id', 'v1/UserController.show').middleware(['auth']) + Route.get( ':id', 'v1/UserController.show').middleware(['auth']) Route.put( ':id', 'v1/UserController.update').middleware(['auth']) Route.delete(':id', 'v1/UserController.destroy').middleware(['auth']) }).prefix('/api/v1/user') @@ -50,7 +50,7 @@ Route.group(() => { |---------------------------------------------------------------------------------------------- */ Route.group(() => { - Route.post('login', 'AuthController.login') + Route.post('login', 'AuthController.login') Route.post('logout', 'AuthController.logout').middleware(['auth']) }).prefix('/api/v2/auth') @@ -65,7 +65,7 @@ Route.group(() => { Route.group(() => { Route.get( '', 'v1/CaseController.index') Route.get( ':id', 'v1/CaseController.show') - Route.post( '', 'v1/CaseController.store') + Route.post( '', 'v1/CaseController.store') Route.put( ':id', 'v1/CaseController.update').middleware(['check_permission:contributor']) Route.post( 'share', 'v1/CaseController.share').middleware(['check_permission:author']) Route.delete(':id', 'v1/CaseController.destroy').middleware(['check_permission:author']) @@ -79,7 +79,7 @@ Route.group(() => { |---------------------------------------------------------------------------------------------- */ Route.group(() => { - Route.post( '', 'v1/ArtifactController.store') + Route.post( '', 'v1/ArtifactController.store') }).prefix('/api/v1/artifact/').middleware(['auth', 'is:author']) @@ -114,7 +114,7 @@ Route.group(() => { |---------------------------------------------------------------------------------------------- */ Route.group(() => { - Route.get( 'users', 'v1/QuestController.listUsers').middleware('quest_permission:contributor') + Route.get( 'users', 'v1/QuestController.listUsers').middleware('quest_permission:contributor') Route.post( '', 'v1/QuestController.store') @@ -130,24 +130,25 @@ Route.group(() => { |---------------------------------------------------------------------------------------------- */ Route.group(() => { - Route.get( 'users', 'v1/UserController.index') + Route.get( 'users', 'v1/UserController.index') Route.get( 'roles', 'v1/AdminController.list_roles') - Route.post( 'role', 'v1/AdminController.create_role') + Route.post( 'role', 'v1/AdminController.create_role') Route.post( 'role/link/permission', 'v1/AdminController.link_role_permission') - Route.get( 'user/:id/roles', 'v1/AdminController.list_roles_by_user') - Route.post( 'user/link/role', 'v1/AdminController.linkRoleUser') + Route.get( 'user/:id/roles', 'v1/AdminController.list_roles_by_user') + Route.post( 'user/link/role', 'v1/AdminController.linkRoleUser') - Route.get( 'quests', 'v1/QuestController.index') - Route.post( 'quest/link/user', 'v1/QuestController.linkUser') + Route.get( 'quests', 'v1/QuestController.index') + Route.post( 'quest/link/user', 'v1/QuestController.linkUser') + Route.delete('quest/:id', 'QuestController.destroy') - Route.post( 'institution', 'v1/InstitutionController.store') + Route.post( 'institution', 'v1/InstitutionController.store') - Route.post( 'revoke_tokens', 'v1/AdminController.revoke_tokens') + Route.post( 'revoke_tokens', 'v1/AdminController.revoke_tokens') }).prefix('/api/v1/admin').middleware(['auth', 'is:admin']) /* Test route */ Route.get('/api/imagetest', 'TestController.index') -Route.post('/', 'TestController.create').as('profile'); +Route.post('/', 'TestController.create').as('profile');