mirror of
https://github.com/ArthurDanjou/artdanj-api.git
synced 2026-01-14 12:14:33 +01:00
@@ -136,7 +136,7 @@
|
||||
"name": "connection",
|
||||
"propertyName": "connection",
|
||||
"type": "string",
|
||||
"description": "Define a custom database connection for the migration"
|
||||
"description": "The connection flag is used to lookup the directory for the migration file"
|
||||
},
|
||||
{
|
||||
"name": "folder",
|
||||
|
||||
@@ -7,24 +7,29 @@ export default class AuthController {
|
||||
public async login ({ request, auth, response }: HttpContextContract) {
|
||||
const email = request.input('email')
|
||||
const password = request.input('password')
|
||||
const infinity = request.input('infinity', false)
|
||||
|
||||
const token = await auth.attempt(email, password, {
|
||||
expiresIn: '2 days'
|
||||
expiresIn: infinity ? '' : '2 days'
|
||||
})
|
||||
return response.status(200).send({
|
||||
token: token.toJSON()
|
||||
})
|
||||
return response.status(200).send(token.toJSON())
|
||||
}
|
||||
|
||||
public async createInfiniteToken ({ request, auth, response }: HttpContextContract) {
|
||||
const email = request.input('email')
|
||||
const password = request.input('password')
|
||||
const token = await auth.attempt(email, password)
|
||||
return response.status(200).send(token.toJSON())
|
||||
return response.status(200).send({
|
||||
token: token.toJSON()
|
||||
})
|
||||
}
|
||||
|
||||
public async logout ({ auth, response }: HttpContextContract) {
|
||||
await auth.logout()
|
||||
return response.status(200).send({
|
||||
message: 'You have been disconnected'
|
||||
message: 'You have been disconnected!'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -43,13 +48,13 @@ export default class AuthController {
|
||||
|
||||
if (twitter.accessDenied()) {
|
||||
return response.status(403).send({
|
||||
message: 'Access Denied'
|
||||
message: 'Access Denied!'
|
||||
})
|
||||
}
|
||||
|
||||
if (twitter.stateMisMatch()) {
|
||||
return response.status(405).send({
|
||||
message: 'Request expired. Retry again'
|
||||
message: 'Request expired. Retry again!'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -72,13 +77,13 @@ export default class AuthController {
|
||||
|
||||
if (github.accessDenied()) {
|
||||
return response.status(403).send({
|
||||
message: 'Access Denied'
|
||||
message: 'Access Denied!'
|
||||
})
|
||||
}
|
||||
|
||||
if (github.stateMisMatch()) {
|
||||
return response.status(405).send({
|
||||
message: 'Request expired. Retry again'
|
||||
message: 'Request expired. Retry again!'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -101,13 +106,13 @@ export default class AuthController {
|
||||
|
||||
if (google.accessDenied()) {
|
||||
return response.status(403).send({
|
||||
message: 'Access Denied'
|
||||
message: 'Access Denied!'
|
||||
})
|
||||
}
|
||||
|
||||
if (google.stateMisMatch()) {
|
||||
return response.status(405).send({
|
||||
message: 'Request expired. Retry again'
|
||||
message: 'Request expired. Retry again!'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -1,21 +1,23 @@
|
||||
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
|
||||
import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext'
|
||||
import Application from "@ioc:Adonis/Core/Application";
|
||||
import File from "App/Models/File";
|
||||
|
||||
export default class FileController {
|
||||
|
||||
public async index () {
|
||||
return File.query()
|
||||
public async index({response}: HttpContextContract) {
|
||||
return response.status(200).send({
|
||||
files: File.query()
|
||||
})
|
||||
}
|
||||
|
||||
public async store ({request}: HttpContextContract) {
|
||||
public async store({request, response}: HttpContextContract) {
|
||||
const file = await request.file('file', {
|
||||
extnames: ['jpg', 'png', 'jpeg']
|
||||
})
|
||||
const label = request.input('label')
|
||||
|
||||
if (!file) {
|
||||
return 'Please upload file'
|
||||
return 'Please upload file!'
|
||||
}
|
||||
if (file.hasErrors) {
|
||||
return file.errors
|
||||
@@ -25,16 +27,20 @@ export default class FileController {
|
||||
name: `${label}.${file.extname}`
|
||||
})
|
||||
|
||||
return await File.create({
|
||||
fileName: `${label}.${file.extname}`,
|
||||
label: label
|
||||
return response.status(200).send({
|
||||
file: await File.create({
|
||||
fileName: `${label}.${file.extname}`,
|
||||
label: label
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
public async destroy({ params }: HttpContextContract) {
|
||||
public async destroy({params, response}: HttpContextContract) {
|
||||
const file = await File.findOrFail(params.id)
|
||||
await file.delete()
|
||||
return { message: "Le fichier a bien été supprimée" }
|
||||
return response.status(200).send({
|
||||
message: 'File successfully deleted!'
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
|
||||
import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext'
|
||||
import FormValidator from "App/Validators/FormValidator";
|
||||
import Form from "App/Models/Form";
|
||||
import FormConfirmation from "App/Mailers/FormConfirmation";
|
||||
@@ -7,7 +7,6 @@ export default class FormsController {
|
||||
|
||||
public async send({ request, response }: HttpContextContract) {
|
||||
const data = await request.validate(FormValidator)
|
||||
|
||||
await Form.create(data)
|
||||
|
||||
await new FormConfirmation(data.name, data.email).preview()
|
||||
|
||||
@@ -4,15 +4,24 @@ import GuestValidator from "App/Validators/guestbook/GuestValidator";
|
||||
|
||||
export default class GuestBookController {
|
||||
|
||||
public async get () {
|
||||
return GuestBookMessage.query().orderBy('created_at', 'desc')
|
||||
public async get({response}: HttpContextContract) {
|
||||
return response.status(200).send({
|
||||
guestbook_messages: GuestBookMessage.query().orderBy('created_at', 'desc')
|
||||
})
|
||||
}
|
||||
|
||||
public async store ({request, auth}: HttpContextContract) {
|
||||
if (auth.isLoggedIn) {
|
||||
const data = await request.validate(GuestValidator)
|
||||
return await GuestBookMessage.create(data)
|
||||
}
|
||||
public async store({request, auth, response}: HttpContextContract) {
|
||||
const data = await request.validate(GuestValidator)
|
||||
const user = await auth.user!
|
||||
const guestbook_message = user.related('guestbook_message').firstOrCreate({
|
||||
userId: user.id
|
||||
}, {
|
||||
...data,
|
||||
userId: user.id
|
||||
})
|
||||
return response.status(200).send({
|
||||
guestbook_message
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext";
|
||||
|
||||
export default class PostsController {
|
||||
|
||||
public async getLikes ({params}: HttpContextContract) {
|
||||
public async getLikes({params, response}: HttpContextContract) {
|
||||
let post = await Post.findBy('slug', params.slug)
|
||||
|
||||
if (!post) {
|
||||
@@ -13,7 +13,9 @@ export default class PostsController {
|
||||
})
|
||||
}
|
||||
|
||||
return post.likes
|
||||
return response.status(200).send({
|
||||
likes: post.likes
|
||||
})
|
||||
}
|
||||
|
||||
public async like ({params, response}: HttpContextContract) {
|
||||
@@ -32,7 +34,6 @@ export default class PostsController {
|
||||
likes: getLikes
|
||||
}).save()
|
||||
return response.status(200).send({
|
||||
status: 200,
|
||||
post
|
||||
})
|
||||
}
|
||||
@@ -46,7 +47,6 @@ export default class PostsController {
|
||||
likes: getLikes
|
||||
}).save()
|
||||
return response.status(200).send({
|
||||
status: 200,
|
||||
post
|
||||
})
|
||||
}
|
||||
|
||||
@@ -10,7 +10,8 @@ export default class ProfileController {
|
||||
"Dev",
|
||||
"DevOps",
|
||||
"New technologies",
|
||||
"Gaming"
|
||||
"Gaming",
|
||||
"Cloud"
|
||||
],
|
||||
code: [
|
||||
"Javascript",
|
||||
@@ -29,18 +30,18 @@ export default class ProfileController {
|
||||
"Software dev"
|
||||
],
|
||||
technologies: {
|
||||
web_app: ["VueJs", "NuxtJs", "Sass", "Tailwind"],
|
||||
web_app: ["VueJs", "NuxtJs", "Sass", "Tailwind", "WindiCss"],
|
||||
desktop_app: ["ElectronJs"],
|
||||
mobile_app: ["React Native"],
|
||||
mobile_app: ["React Native", "Vue Native"],
|
||||
back_end: {
|
||||
typescript: ["AdonisJs"],
|
||||
java: ["Spring"]
|
||||
},
|
||||
databases: ["MongoDB", "MariaDB", "Redis"],
|
||||
messaging: ["RabbitMq"],
|
||||
messaging: ["RabbitMQ"],
|
||||
other: ["Docker", "Git"],
|
||||
architecture: ["microservices", "event-driven", "design system pattern"],
|
||||
operating_systems: ['Windows', 'Linux']
|
||||
operating_systems: ['MacOS', "Linux"]
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
|
||||
import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext'
|
||||
import Project from "App/Models/Project";
|
||||
import ProjectValidator from "App/Validators/project/ProjectValidator";
|
||||
|
||||
export default class ProjectsController {
|
||||
|
||||
public async get ({ response }: HttpContextContract) {
|
||||
const projects = await Project.query().orderBy('id', 'asc')
|
||||
return response.status(200).send({
|
||||
projects
|
||||
projects: await Project.query().orderBy('id', 'asc')
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import {UpdateGitHubReadme} from "App/Tasks/UpdateGithubReadme";
|
||||
|
||||
export default class StatesController {
|
||||
|
||||
public async get ({response}: HttpContextContract) {
|
||||
public async get({response}: HttpContextContract) {
|
||||
const is_sleeping = await Redis.get('states:sleeping')
|
||||
const is_listening_music = await Redis.get('states:listening')
|
||||
const is_developing = await Redis.get('states:developing')
|
||||
@@ -18,7 +18,7 @@ export default class StatesController {
|
||||
})
|
||||
}
|
||||
|
||||
public async set ({request, response, params}: HttpContextContract) {
|
||||
public async set({request, response, params}: HttpContextContract) {
|
||||
const state = params.state
|
||||
const value = await request.input('value')
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
|
||||
import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext'
|
||||
import Subscriber from "App/Models/Subscriber";
|
||||
import SubscriberValidator from "App/Validators/subscriber/SubscriberValidator";
|
||||
|
||||
@@ -10,12 +10,23 @@ export default class SubscribersController {
|
||||
})
|
||||
}
|
||||
|
||||
public async store ({ request, response }: HttpContextContract) {
|
||||
public async store({request, response}: HttpContextContract) {
|
||||
const data = await request.validate(SubscriberValidator)
|
||||
await Subscriber.create(data)
|
||||
return response.status(200).send({
|
||||
message: 'Subscriber successfully registered !'
|
||||
message: 'Subscriber successfully registered!'
|
||||
})
|
||||
}
|
||||
|
||||
public async delete({request, response}: HttpContextContract) {
|
||||
const data = await request.validate(SubscriberValidator)
|
||||
const subscriber = await Subscriber.findBy('email', data.email)
|
||||
if (subscriber) {
|
||||
await subscriber.delete()
|
||||
return response.status(200).send({
|
||||
message: 'Subscriber successfully deleted!'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,34 +5,33 @@ import UserUpdateValidator from "App/Validators/users/UserUpdateValidator";
|
||||
|
||||
export default class UsersController {
|
||||
|
||||
public async index () {
|
||||
return User.query()
|
||||
public async index({response}: HttpContextContract) {
|
||||
return response.status(200).send({
|
||||
users: User.query()
|
||||
})
|
||||
}
|
||||
|
||||
public async store ({request}: HttpContextContract) {
|
||||
public async store({request, response}: HttpContextContract) {
|
||||
const data = await request.validate(UserStoreValidator)
|
||||
return await User.create(data)
|
||||
return response.status(200).send({
|
||||
user: await User.create(data)
|
||||
})
|
||||
}
|
||||
|
||||
public async show ({params}: HttpContextContract) {
|
||||
return await User.findOrFail(params.id)
|
||||
public async show({params, response}: HttpContextContract) {
|
||||
return response.status(200).send({
|
||||
user: await User.findOrFail(params.id)
|
||||
})
|
||||
}
|
||||
|
||||
public async update({ request, params, response }: HttpContextContract) {
|
||||
public async update({request, params, response}: HttpContextContract) {
|
||||
const user = await User.findOrFail(params.id)
|
||||
const data = await request.validate(UserUpdateValidator)
|
||||
const { email } = data
|
||||
const user2 = await User.findBy('email', email)
|
||||
|
||||
if (user2 !== null && user.email !== email) {
|
||||
return response.abort({
|
||||
message: 'L\' adresse mail n\'est pas unique !'
|
||||
})
|
||||
}
|
||||
|
||||
await user.merge(data).save()
|
||||
|
||||
return { message: 'Le compte a été mis à jour' }
|
||||
return response.status(200).send({
|
||||
message: 'User successfully updated!'
|
||||
})
|
||||
}
|
||||
|
||||
public async destroy({ response, params, auth }: HttpContextContract) {
|
||||
@@ -44,7 +43,9 @@ export default class UsersController {
|
||||
}
|
||||
|
||||
await user.delete()
|
||||
return { message: "L'utilisateur a bien été supprimé" }
|
||||
return response.status(200).send({
|
||||
message: 'User successfully deleted!'
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { DateTime } from 'luxon'
|
||||
import {DateTime} from 'luxon'
|
||||
import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm'
|
||||
import User from "./User";
|
||||
import User from "App/Models/User";
|
||||
|
||||
export default class GuestBookMessage extends BaseModel {
|
||||
@column({ isPrimary: true })
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
import { DateTime } from 'luxon'
|
||||
import {DateTime} from 'luxon'
|
||||
import Hash from '@ioc:Adonis/Core/Hash'
|
||||
import {
|
||||
column,
|
||||
beforeSave,
|
||||
BaseModel,
|
||||
} from '@ioc:Adonis/Lucid/Orm'
|
||||
import {BaseModel, beforeSave, column, hasOne, HasOne,} from '@ioc:Adonis/Lucid/Orm'
|
||||
import GuestBookMessage from "App/Models/GuestBookMessage";
|
||||
|
||||
export default class User extends BaseModel {
|
||||
@column({ isPrimary: true })
|
||||
@column({isPrimary: true})
|
||||
public id: number
|
||||
|
||||
@column()
|
||||
@@ -28,14 +25,17 @@ export default class User extends BaseModel {
|
||||
@column()
|
||||
public rememberMeToken?: string
|
||||
|
||||
@column.dateTime({ autoCreate: true })
|
||||
@hasOne(() => GuestBookMessage)
|
||||
public guestbook_message: HasOne<typeof GuestBookMessage>
|
||||
|
||||
@column.dateTime({autoCreate: true})
|
||||
public createdAt: DateTime
|
||||
|
||||
@column.dateTime({ autoCreate: true, autoUpdate: true })
|
||||
@column.dateTime({autoCreate: true, autoUpdate: true})
|
||||
public updatedAt: DateTime
|
||||
|
||||
@beforeSave()
|
||||
public static async hashPassword (user: User) {
|
||||
public static async hashPassword(user: User) {
|
||||
if (user.$dirty.password) {
|
||||
user.password = await Hash.make(user.password)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
|
||||
import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext'
|
||||
import {rules, schema} from '@ioc:Adonis/Core/Validator'
|
||||
|
||||
export default class GuestValidator {
|
||||
@@ -6,10 +6,10 @@ export default class GuestValidator {
|
||||
}
|
||||
|
||||
public schema = schema.create({
|
||||
user_id: schema.number( [
|
||||
user_id: schema.number([
|
||||
rules.required(),
|
||||
rules.unique({table: 'golden_messages', column: 'user_id'}),
|
||||
rules.exists({ table: 'users', column: 'id'})
|
||||
rules.exists({table: 'users', column: 'id'})
|
||||
]),
|
||||
message: schema.string({}, [
|
||||
rules.required()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
|
||||
import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext'
|
||||
import {rules, schema} from '@ioc:Adonis/Core/Validator'
|
||||
|
||||
export default class UserUpdateValidator {
|
||||
@@ -6,11 +6,13 @@ export default class UserUpdateValidator {
|
||||
}
|
||||
|
||||
public schema = schema.create({
|
||||
email: schema.string.optional({ trim: true, escape: true }, [rules.email()]),
|
||||
password: schema.string.optional({ trim: true, escape: true }, [rules.confirmed()]),
|
||||
email: schema.string.optional({trim: true, escape: true}, [rules.email(), rules.unique({
|
||||
table: 'users', column: 'email'
|
||||
})]),
|
||||
password: schema.string.optional({trim: true, escape: true}, [rules.confirmed()]),
|
||||
is_confirmed: schema.boolean.optional(),
|
||||
confirmation_token: schema.string.optional({ trim: true, escape: true }),
|
||||
remember_me: schema.string.optional({ trim: true, escape: true }),
|
||||
confirmation_token: schema.string.optional({trim: true, escape: true}),
|
||||
remember_me: schema.string.optional({trim: true, escape: true}),
|
||||
})
|
||||
|
||||
public cacheKey = this.ctx.routeKey
|
||||
|
||||
@@ -5,7 +5,7 @@ export default class Locations extends BaseSchema {
|
||||
|
||||
public async up () {
|
||||
this.schema.createTable(this.tableName, (table) => {
|
||||
table.increments('id')
|
||||
table.increments('id').primary()
|
||||
table.string('place')
|
||||
table.string('left')
|
||||
table.date('since')
|
||||
|
||||
@@ -5,7 +5,7 @@ export default class Forms extends BaseSchema {
|
||||
|
||||
public async up () {
|
||||
this.schema.createTable(this.tableName, (table) => {
|
||||
table.increments('id')
|
||||
table.increments('id').primary()
|
||||
table.string('name')
|
||||
table.string('email')
|
||||
table.string('subject')
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
import BaseSchema from '@ioc:Adonis/Lucid/Schema'
|
||||
|
||||
export default class GoldenMessages extends BaseSchema {
|
||||
protected tableName = 'golden_messages'
|
||||
|
||||
public async up () {
|
||||
this.schema.createTable(this.tableName, (table) => {
|
||||
table.increments('id')
|
||||
table.integer('user_id').notNullable()
|
||||
table.string('message')
|
||||
table.timestamps()
|
||||
})
|
||||
}
|
||||
|
||||
public async down () {
|
||||
this.schema.dropTable(this.tableName)
|
||||
}
|
||||
}
|
||||
22
database/migrations/1625146912533_guestbook_messages.ts
Normal file
22
database/migrations/1625146912533_guestbook_messages.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import BaseSchema from '@ioc:Adonis/Lucid/Schema'
|
||||
|
||||
export default class GuestbookMessages extends BaseSchema {
|
||||
protected tableName = 'guestbook_messages'
|
||||
|
||||
public async up() {
|
||||
this.schema.createTable(this.tableName, (table) => {
|
||||
table.increments('id').primary()
|
||||
table
|
||||
.integer('user_id')
|
||||
.unsigned()
|
||||
.references('users.id')
|
||||
.onDelete('CASCADE')
|
||||
table.string('message')
|
||||
table.timestamps(true, true)
|
||||
})
|
||||
}
|
||||
|
||||
public async down() {
|
||||
this.schema.dropTable(this.tableName)
|
||||
}
|
||||
}
|
||||
23
yarn.lock
Executable file → Normal file
23
yarn.lock
Executable file → Normal file
@@ -191,9 +191,9 @@
|
||||
pino "^6.11.3"
|
||||
|
||||
"@adonisjs/lucid@^15.0.1":
|
||||
version "15.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@adonisjs/lucid/-/lucid-15.0.1.tgz#a8cdf12f3ae6bc5fa88d452e80423cf3afb8e598"
|
||||
integrity sha512-ab3tJ9JgafaXvtOzyqd83Xs6Z1raNnSZfkVJlRHvwf3rviBEAPOLVYUDtjx7QskDkDAIam+21WkUNRHcByXQcw==
|
||||
version "15.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@adonisjs/lucid/-/lucid-15.0.2.tgz#99051cce48fc1d8061860b9efb09c18d53818a81"
|
||||
integrity sha512-SLC2YYG33efHeq++qAXe6DA2fkQkgdaQwdBz+tjku7DneRBMre+mltXlf6Mow5WHUfq9b0fxh5GQA9tKGDdWkg==
|
||||
dependencies:
|
||||
"@poppinss/hooks" "^3.0.4"
|
||||
"@poppinss/utils" "^3.1.3"
|
||||
@@ -202,9 +202,10 @@
|
||||
fast-deep-equal "^3.1.3"
|
||||
igniculus "^1.5.0"
|
||||
knex "^0.95.6"
|
||||
knex-dynamic-connection "^2.1.0"
|
||||
knex-dynamic-connection "^2.1.1"
|
||||
luxon "^1.27.0"
|
||||
macroable "^5.1.3"
|
||||
normalize-path "^3.0.0"
|
||||
pretty-hrtime "^1.0.3"
|
||||
qs "^6.10.1"
|
||||
|
||||
@@ -514,9 +515,9 @@
|
||||
"@types/responselike" "*"
|
||||
|
||||
"@types/debug@^4.1.5":
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd"
|
||||
integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==
|
||||
version "4.1.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.6.tgz#0b7018723084918a865eff99249c490505df2163"
|
||||
integrity sha512-7fDOJFA/x8B+sO1901BmHlf5dE1cxBU8mRXj8QOEDnn16hhGJv/IHxJtZhvsabZsIMn0eLIyeOKAeqSNJJYTpA==
|
||||
|
||||
"@types/faker@^5.5.6":
|
||||
version "5.5.6"
|
||||
@@ -2651,7 +2652,7 @@ kleur@^4.1.4:
|
||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d"
|
||||
integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==
|
||||
|
||||
knex-dynamic-connection@^2.1.0:
|
||||
knex-dynamic-connection@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/knex-dynamic-connection/-/knex-dynamic-connection-2.1.1.tgz#a3c9934a51bf93e2ea6c3da2f9f3dca742f7a123"
|
||||
integrity sha512-/Lwg/T13eNRJVoSJ4e9SH3slVUmg37UHxDxVluAAKdJZxYVj8YsP2x50JSk310RmKsYbOZ8oB8SwVVEuRa4nYw==
|
||||
@@ -4637,9 +4638,9 @@ type-is@^1.6.18:
|
||||
mime-types "~2.1.24"
|
||||
|
||||
typescript@^4.3.4:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc"
|
||||
integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==
|
||||
version "4.3.5"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4"
|
||||
integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==
|
||||
|
||||
uglify-js@^3.5.1:
|
||||
version "3.13.10"
|
||||
|
||||
Reference in New Issue
Block a user