upgrade sequelize

This commit is contained in:
les
2020-06-27 02:10:10 +02:00
parent a56839730a
commit 75815fdb03
33 changed files with 546 additions and 369 deletions

View File

@@ -1,4 +1,4 @@
const { announcement: Announcement } = require('../models') const Announcement = require('../models/announcement')
const debug = require('debug')('announcement:controller') const debug = require('debug')('announcement:controller')
const announceController = { const announceController = {

View File

@@ -1,4 +1,4 @@
const { ap_user: APUser } = require('../models') const APUser = require('../models/ap_user')
const apUserController = { const apUserController = {
async toggleBlock (req, res) { async toggleBlock (req, res) {

View File

@@ -9,14 +9,13 @@ const helpers = require('../../helpers')
const linkifyHtml = require('linkifyjs/html') const linkifyHtml = require('linkifyjs/html')
const Sequelize = require('sequelize') const Sequelize = require('sequelize')
const { const Event = require('../models/event')
event: Event, const Resource = require('../models/resource')
resource: Resource, const Tag = require('../models/tag')
tag: Tag, const Place = require('../models/place')
place: Place, const Notification = require('../models/notification')
notification: Notification, const APUser = require('../models/ap_user')
ap_user: APUser
} = require('../models')
const exportController = require('./export') const exportController = require('./export')
const debug = require('debug')('controller:event') const debug = require('debug')('controller:event')
@@ -301,15 +300,14 @@ const eventController = {
await event.setUser(req.user) await event.setUser(req.user)
} }
// return created event to the client
res.json(event)
// create recurrent instances of event if needed // create recurrent instances of event if needed
// without waiting for the task manager // without waiting for the task manager
if (event.recurrent) { if (event.recurrent) {
eventController._createRecurrent() eventController._createRecurrent()
} }
// return created event to the client
res.json(event)
// send notifications (mastodon / email) // send notifications (mastodon / email)
const notifier = require('../../notifier') const notifier = require('../../notifier')
notifier.notifyEvent('Create', event.id) notifier.notifyEvent('Create', event.id)

View File

@@ -1,4 +1,7 @@
const { event: Event, place: Place, tag: Tag } = require('../models') const Event = require('../models/event')
const Place = require('../models/place')
const Tag = require('../models/tag')
const { Op } = require('sequelize') const { Op } = require('sequelize')
const moment = require('moment-timezone') const moment = require('moment-timezone')
const ics = require('ics') const ics = require('ics')

View File

@@ -1,9 +1,7 @@
const { const APUser = require('../models/ap_user')
ap_user: APUser, const Instance = require('../models/instance')
instance: Instance, const Resource = require('../models/resource')
resource: Resource
// event: Event
} = require('../models')
// const { Op } = require('sequelize') // const { Op } = require('sequelize')
const instancesController = { const instancesController = {

View File

@@ -1,10 +1,12 @@
const crypto = require('crypto') const crypto = require('crypto')
const { promisify } = require('util') const { promisify } = require('util')
const randomBytes = promisify(crypto.randomBytes) const randomBytes = promisify(crypto.randomBytes)
const {
oauth_client: OAuthClient, oauth_token: OAuthToken, const OAuthClient = require('../models/oauth_client')
oauth_code: OAuthCode, user: User const OAuthToken = require('../models/oauth_token')
} = require('../models') const OAuthCode = require('../models/oauth_code')
const User = require('../models/user')
const debug = require('debug')('oauth') const debug = require('debug')('oauth')
const moment = require('moment') const moment = require('moment')

View File

@@ -1,4 +1,4 @@
const { resource: Resource } = require('../models') const Resource = require('../models/resource')
const resourceController = { const resourceController = {
async hide (req, res) { async hide (req, res) {

View File

@@ -1,4 +1,4 @@
const { setting: Setting } = require('../models') const Setting = require('../models/setting')
const config = require('config') const config = require('config')
const consola = require('consola') const consola = require('consola')
const path = require('path') const path = require('path')

View File

@@ -2,7 +2,7 @@ const crypto = require('crypto')
const { Op } = require('sequelize') const { Op } = require('sequelize')
const config = require('config') const config = require('config')
const mail = require('../mail') const mail = require('../mail')
const { user: User } = require('../models') const User = require('../models/user')
const settingsController = require('./settings') const settingsController = require('./settings')
const debug = require('debug')('user:controller') const debug = require('debug')('user:controller')
const linkify = require('linkifyjs') const linkify = require('linkifyjs')

View File

@@ -1,9 +1,12 @@
module.exports = (sequelize, DataTypes) => { const sequelize = require('./index')
const announcement = sequelize.define('announcement', { const { Model, DataTypes } = require('sequelize')
title: DataTypes.STRING,
announcement: DataTypes.STRING,
visible: DataTypes.BOOLEAN
}, {})
return announcement class Announcement extends Model {}
}
Announcement.init({
title: DataTypes.STRING,
announcement: DataTypes.STRING,
visible: DataTypes.BOOLEAN
}, { sequelize, modelName: 'announcement' })
module.exports = Announcement

View File

@@ -1,18 +1,16 @@
module.exports = (sequelize, DataTypes) => { const sequelize = require('./index')
const APUser = sequelize.define('ap_user', { const { Model, DataTypes } = require('sequelize')
ap_id: {
type: DataTypes.STRING,
primaryKey: true
},
follower: DataTypes.BOOLEAN,
blocked: DataTypes.BOOLEAN,
object: DataTypes.JSON
})
APUser.associate = function (models) { class APUser extends Model {}
APUser.belongsTo(models.instance)
APUser.hasMany(models.resource)
}
return APUser APUser.init({
} ap_id: {
type: DataTypes.STRING,
primaryKey: true
},
follower: DataTypes.BOOLEAN,
blocked: DataTypes.BOOLEAN,
object: DataTypes.JSON
}, { sequelize, modelName: 'ap_user' })
module.exports = APUser

View File

@@ -2,92 +2,105 @@ const config = require('config')
const moment = require('moment-timezone') const moment = require('moment-timezone')
const htmlToText = require('html-to-text') const htmlToText = require('html-to-text')
module.exports = (sequelize, DataTypes) => { const { Model, DataTypes } = require('sequelize')
const Event = sequelize.define('event', { const sequelize = require('./index')
id: {
allowNull: false,
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
title: DataTypes.STRING,
slug: DataTypes.STRING,
description: DataTypes.TEXT,
multidate: DataTypes.BOOLEAN,
start_datetime: {
type: DataTypes.INTEGER,
index: true
},
end_datetime: {
type: DataTypes.INTEGER,
index: true
},
image_path: DataTypes.STRING,
is_visible: DataTypes.BOOLEAN,
recurrent: DataTypes.JSON,
likes: { type: DataTypes.JSON, defaultValue: [] },
boost: { type: DataTypes.JSON, defaultValue: [] }
}, {})
Event.associate = function (models) { const Resource = require('./resource')
Event.belongsTo(models.place) const Notification = require('./notification')
Event.belongsTo(models.user) const Place = require('./place')
Event.belongsToMany(models.tag, { through: 'event_tags' }) const User = require('./user')
Event.belongsToMany(models.notification, { through: 'event_notification' }) const Tag = require('./tag')
Event.hasMany(models.resource)
Event.hasMany(Event, { as: 'child', foreignKey: 'parentId' }) class Event extends Model {}
Event.belongsTo(models.event, { as: 'parent' })
Event.init({
id: {
allowNull: false,
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
title: DataTypes.STRING,
slug: DataTypes.STRING,
description: DataTypes.TEXT,
multidate: DataTypes.BOOLEAN,
start_datetime: {
type: DataTypes.INTEGER,
index: true
},
end_datetime: {
type: DataTypes.INTEGER,
index: true
},
image_path: DataTypes.STRING,
is_visible: DataTypes.BOOLEAN,
recurrent: DataTypes.JSON,
likes: { type: DataTypes.JSON, defaultValue: [] },
boost: { type: DataTypes.JSON, defaultValue: [] }
}, { sequelize, modelName: 'event' })
Event.belongsTo(Place)
Place.hasMany(Event)
Event.belongsTo(User)
Event.belongsToMany(Tag, { through: 'event_tags' })
Event.belongsToMany(Notification, { through: 'event_notification' })
Notification.belongsToMany(Event, { through: 'event_notification' })
Event.hasMany(Resource)
Resource.belongsTo(Event)
Event.hasMany(Event, { as: 'child', foreignKey: 'parentId' })
Event.belongsTo(Event, { as: 'parent' })
Event.prototype.toAP = function (username, locale, follower = []) {
const tags = this.tags && this.tags.map(t => t.tag.replace(/[ #]/g, '_'))
const plainDescription = htmlToText.fromString(this.description.replace('\n', '').slice(0, 1000))
const summary = `
📍 ${this.place.name}
📅 ${moment.unix(this.start_datetime).locale(locale).format('dddd, D MMMM (HH:mm)')}
${plainDescription}
${tags.map(t => `#${t}`)}
`
const attachment = []
if (this.image_path) {
attachment.push({
type: 'Document',
mediaType: 'image/webp',
url: `${config.baseurl}/media/${this.image_path}`,
name: null,
blurHash: null
})
} }
Event.prototype.toAP = function (username, locale, follower = []) { return {
const tags = this.tags && this.tags.map(t => t.tag.replace(/[ #]/g, '_')) id: `${config.baseurl}/federation/m/${this.id}`,
name: this.title,
const plainDescription = htmlToText.fromString(this.description.replace('\n', '').slice(0, 1000)) url: `${config.baseurl}/event/${this.id}`,
const summary = ` type: 'Event',
📍 ${this.place.name} startTime: moment.unix(this.start_datetime).locale(locale).format(),
📅 ${moment.unix(this.start_datetime).locale(locale).format('dddd, D MMMM (HH:mm)')} endTime: moment.unix(this.end_datetime).locale(locale).format(),
location: {
${plainDescription} name: this.place.name
},
${tags.map(t => `#${t}`)} attachment,
tag: tags.map(tag => ({
` type: 'Hashtag',
name: '#' + tag,
const attachment = [] href: '/tags/' + tag
if (this.image_path) { })),
attachment.push({ published: this.createdAt,
type: 'Document', attributedTo: `${config.baseurl}/federation/u/${username}`,
mediaType: 'image/webp', to: follower || [],
url: `${config.baseurl}/media/${this.image_path}`, cc: ['https://www.w3.org/ns/activitystreams#Public', `${config.baseurl}/federation/u/${username}/followers`],
name: null, summary,
blurHash: null sensitive: false
})
}
return {
id: `${config.baseurl}/federation/m/${this.id}`,
name: this.title,
url: `${config.baseurl}/event/${this.id}`,
type: 'Event',
startTime: moment.unix(this.start_datetime).locale(locale).format(),
endTime: moment.unix(this.end_datetime).locale(locale).format(),
location: {
name: this.place.name
},
attachment,
tag: tags.map(tag => ({
type: 'Hashtag',
name: '#' + tag,
href: '/tags/' + tag
})),
published: this.createdAt,
attributedTo: `${config.baseurl}/federation/u/${username}`,
to: follower || [],
cc: ['https://www.w3.org/ns/activitystreams#Public', `${config.baseurl}/federation/u/${username}/followers`],
summary,
sensitive: false
}
} }
return Event
} }
module.exports = Event

View File

@@ -1,13 +1,15 @@
'use strict' const sequelize = require('./index')
module.exports = (sequelize, DataTypes) => { const { Model, DataTypes } = require('sequelize')
const event_notification = sequelize.define('event_notification', {
status: {
type: DataTypes.ENUM,
values: ['new', 'sent', 'error'],
defaultValue: 'new',
index: true
}
}, {})
return event_notification class EventNotification extends Model {}
}
EventNotification.init({
status: {
type: DataTypes.ENUM,
values: ['new', 'sent', 'error'],
defaultValue: 'new',
index: true
}
}, { sequelize, modelName: 'event_notification' })
module.exports = EventNotification

View File

@@ -1,10 +1,10 @@
const fs = require('fs') // const fs = require('fs')
const path = require('path') // const path = require('path')
const Sequelize = require('sequelize') const Sequelize = require('sequelize')
const basename = path.basename(__filename) // const basename = path.basename(__filename)
const config = require('config') const config = require('config')
const consola = require('consola') const consola = require('consola')
const db = {} // const db = {}
let sequelize = null let sequelize = null
try { try {
@@ -19,23 +19,23 @@ sequelize.authenticate().catch(e => {
process.exit(-1) process.exit(-1)
}) })
fs // fs
.readdirSync(__dirname) // .readdirSync(__dirname)
.filter(file => { // .filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js') // return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js')
}) // })
.forEach(file => { // .forEach(file => {
const model = sequelize.import(path.join(__dirname, file)) // const model = sequelize.import(path.join(__dirname, file))
db[model.name] = model // db[model.name] = model
}) // })
Object.keys(db).forEach(modelName => { // Object.keys(db).forEach(modelName => {
if (db[modelName].associate) { // if (db[modelName].associate) {
db[modelName].associate(db) // db[modelName].associate(db)
} // }
}) // })
db.sequelize = sequelize // db.sequelize = sequelize
db.Sequelize = Sequelize // db.Sequelize = Sequelize
module.exports = db module.exports = sequelize

View File

@@ -1,19 +1,22 @@
'use strict'
module.exports = (sequelize, DataTypes) => {
const Instance = sequelize.define('instance', {
domain: {
primaryKey: true,
allowNull: false,
type: DataTypes.STRING
},
name: DataTypes.STRING,
blocked: DataTypes.BOOLEAN,
data: DataTypes.JSON
}, {})
Instance.associate = function (models) { const sequelize = require('./index')
Instance.hasMany(models.ap_user) const { Model, DataTypes } = require('sequelize')
} const APUser = require('./ap_user')
return Instance class Instance extends Model {}
}
Instance.init({
domain: {
primaryKey: true,
allowNull: false,
type: DataTypes.STRING
},
name: DataTypes.STRING,
blocked: DataTypes.BOOLEAN,
data: DataTypes.JSON
}, { sequelize, modelName: 'instance' })
Instance.hasMany(APUser)
APUser.belongsTo(Instance)
module.exports = Instance

View File

@@ -1,26 +1,32 @@
module.exports = (sequelize, DataTypes) => { const sequelize = require('./index')
const Notification = sequelize.define('notification', { const { Model, DataTypes } = require('sequelize')
filters: DataTypes.JSON, // const Event = require('./event')
email: DataTypes.STRING,
remove_code: DataTypes.STRING,
action: {
type: DataTypes.ENUM,
values: ['Create', 'Update', 'Delete']
},
type: {
type: DataTypes.ENUM,
values: ['mail', 'admin_email', 'ap']
}
}, {
indexes: [{
unique: true,
fields: ['action', 'type']
}]
})
Notification.associate = function (models) { class Notification extends Model {}
Notification.belongsToMany(models.event, { through: 'event_notification' })
Notification.init({
filters: DataTypes.JSON,
email: DataTypes.STRING,
remove_code: DataTypes.STRING,
action: {
type: DataTypes.ENUM,
values: ['Create', 'Update', 'Delete']
},
type: {
type: DataTypes.ENUM,
values: ['mail', 'admin_email', 'ap']
} }
return Notification },
} {
sequelize,
modelName: 'notification',
indexes: [{
unique: true,
fields: ['action', 'type']
}]
})
// Notification.belongsToMany(Event, { through: 'event_notification' })
module.exports = Notification

View File

@@ -1,17 +1,20 @@
module.exports = (sequelize, DataTypes) => { const sequelize = require('./index')
const OAuthClient = sequelize.define('oauth_client', { const { Model, DataTypes } = require('sequelize')
id: {
type: DataTypes.STRING,
primaryKey: true,
allowNull: false
},
name: DataTypes.STRING,
client_secret: DataTypes.STRING,
scopes: DataTypes.STRING,
redirectUris: DataTypes.STRING,
website: DataTypes.STRING
}, {})
return OAuthClient class OAuthClient extends Model {}
}
OAuthClient.init({
id: {
type: DataTypes.STRING,
primaryKey: true,
allowNull: false
},
name: DataTypes.STRING,
client_secret: DataTypes.STRING,
scopes: DataTypes.STRING,
redirectUris: DataTypes.STRING,
website: DataTypes.STRING
}, { sequelize, modelName: 'oauth_client' })
module.exports = OAuthClient

View File

@@ -1,19 +1,23 @@
module.exports = (sequelize, DataTypes) => { const sequelize = require('./index')
const OAuthCode = sequelize.define('oauth_code', { const { Model, DataTypes } = require('sequelize')
authorizationCode: {
type: DataTypes.STRING,
primaryKey: true
},
expiresAt: DataTypes.DATE,
scope: DataTypes.STRING,
redirect_uri: DataTypes.STRING
}, {})
OAuthCode.associate = function (models) { const User = require('./user')
OAuthCode.belongsTo(models.user) const OAuthClient = require('./oauth_client')
OAuthCode.belongsTo(models.oauth_client, { as: 'client' })
}
return OAuthCode class OAuthCode extends Model {}
}
OAuthCode.init({
authorizationCode: {
type: DataTypes.STRING,
primaryKey: true
},
expiresAt: DataTypes.DATE,
scope: DataTypes.STRING,
redirect_uri: DataTypes.STRING
}, { sequelize, modelName: 'oauth_code' })
OAuthCode.belongsTo(User)
OAuthCode.belongsTo(OAuthClient, { as: 'client' })
module.exports = OAuthCode

View File

@@ -1,31 +1,35 @@
module.exports = (sequelize, DataTypes) => { const sequelize = require('./index')
const OAuthToken = sequelize.define('oauth_token', { const { Model, DataTypes } = require('sequelize')
accessToken: {
type: DataTypes.STRING,
allowNull: false,
primaryKey: true
},
accessTokenExpiresAt: {
type: DataTypes.DATE,
get () {
return new Date(this.getDataValue('accesTokenExpiresAt'))
}
},
refreshToken: DataTypes.STRING,
refreshTokenExpiresAt: {
type: DataTypes.DATE,
get () {
return new Date(this.getDataValue('accesTokenExpiresAt'))
}
},
scope: DataTypes.STRING
}, {})
OAuthToken.associate = function (models) { const User = require('./user')
OAuthToken.belongsTo(models.user) const OAuthClient = require('./oauth_client')
OAuthToken.belongsTo(models.oauth_client, { as: 'client' })
}
return OAuthToken class OAuthToken extends Model {}
}
OAuthToken.init({
accessToken: {
type: DataTypes.STRING,
allowNull: false,
primaryKey: true
},
accessTokenExpiresAt: {
type: DataTypes.DATE,
get () {
return new Date(this.getDataValue('accesTokenExpiresAt'))
}
},
refreshToken: DataTypes.STRING,
refreshTokenExpiresAt: {
type: DataTypes.DATE,
get () {
return new Date(this.getDataValue('accesTokenExpiresAt'))
}
},
scope: DataTypes.STRING
}, { sequelize, modelName: 'oauth_token' })
OAuthToken.belongsTo(User)
OAuthToken.belongsTo(OAuthClient, { as: 'client' })
module.exports = OAuthToken

View File

@@ -1,19 +1,19 @@
const { Model, DataTypes } = require('sequelize')
const sequelize = require('./index')
module.exports = (sequelize, DataTypes) => { // const Event = require('./event')
class Place extends Model {}
const Place = sequelize.define('place', { Place.init({
name: { name: {
type: DataTypes.STRING, type: DataTypes.STRING,
unique: true, unique: true,
index: true, index: true,
allowNull: false allowNull: false
}, },
address: DataTypes.STRING address: DataTypes.STRING
}, {}) }, { sequelize, modelName: 'place' })
Place.associate = function (models) { // Place.hasMany(Event)
Place.hasMany(models.event)
}
return Place module.exports = Place
}

View File

@@ -1,19 +1,22 @@
module.exports = (sequelize, DataTypes) => { const { Model, DataTypes } = require('sequelize')
const Resource = sequelize.define('resource', { const sequelize = require('./index')
activitypub_id: {
type: DataTypes.STRING,
index: true,
unique: true
},
hidden: DataTypes.BOOLEAN,
data: DataTypes.JSON
}, {})
Resource.associate = function (models) { // const Event = require('./event')
// Resource.belongsTo(models.instance) const APUser = require('./ap_user')
Resource.belongsTo(models.event)
Resource.belongsTo(models.ap_user)
}
return Resource class Resource extends Model {}
}
Resource.init({
activitypub_id: {
type: DataTypes.STRING,
index: true,
unique: true
},
hidden: DataTypes.BOOLEAN,
data: DataTypes.JSON
}, { sequelize, modelName: 'resource' })
APUser.hasMany(Resource)
Resource.belongsTo(APUser)
module.exports = Resource

View File

@@ -13,3 +13,5 @@ Setting.init({
value: DataTypes.JSON, value: DataTypes.JSON,
is_secret: DataTypes.BOOLEAN is_secret: DataTypes.BOOLEAN
}, { sequelize, modelName: 'setting' }) }, { sequelize, modelName: 'setting' })
module.exports = Setting

View File

@@ -1,18 +1,19 @@
const { Model, DataTypes } = require('sequelize')
// const Event = require('./event')
const sequelize = require('./index')
module.exports = (sequelize, DataTypes) => { class Tag extends Model {}
const Tag = sequelize.define('tag', {
tag: {
type: DataTypes.STRING,
allowNull: false,
index: true,
primaryKey: true
},
weigth: { type: DataTypes.INTEGER, defaultValue: 0, allowNull: false }
}, {})
Tag.associate = function (models) { Tag.init({
Tag.belongsToMany(models.event, { through: 'event_tags' }) tag: {
} type: DataTypes.STRING,
allowNull: false,
index: true,
primaryKey: true
},
weigth: { type: DataTypes.INTEGER, defaultValue: 0, allowNull: false }
}, { sequelize, modelName: 'tag' })
return Tag // Tag.belongsToMany(Event, { through: 'event_tags' })
}
module.exports = Tag

View File

@@ -1,50 +1,55 @@
const bcrypt = require('bcryptjs') const bcrypt = require('bcryptjs')
const { Model, DataTypes } = require('sequelize')
const sequelize = require('./index')
module.exports = (sequelize, DataTypes) => { // const Event = require('./event')
const User = sequelize.define('user', {
settings: { class User extends Model {}
type: DataTypes.JSON,
defaultValue: [] User.init({
settings: {
type: DataTypes.JSON,
defaultValue: []
},
email: {
type: DataTypes.STRING,
unique: { msg: 'error.email_taken' },
validate: {
notEmpty: true
}, },
email: { index: true,
type: DataTypes.STRING, allowNull: false
unique: { msg: 'error.email_taken' }, },
validate: { description: DataTypes.TEXT,
notEmpty: true password: DataTypes.STRING,
}, recover_code: DataTypes.STRING,
index: true, is_admin: DataTypes.BOOLEAN,
allowNull: false is_active: DataTypes.BOOLEAN
}, }, {
description: DataTypes.TEXT, sequelize,
password: DataTypes.STRING, modelName: 'user',
recover_code: DataTypes.STRING, scopes: {
is_admin: DataTypes.BOOLEAN, withoutPassword: {
is_active: DataTypes.BOOLEAN attributes: { exclude: ['password', 'recover_code'] }
}, {
scopes: {
withoutPassword: {
attributes: { exclude: ['password', 'recover_code'] }
}
} }
})
User.associate = function (models) {
User.hasMany(models.event)
} }
})
User.prototype.comparePassword = async function (pwd) { // User.hasMany(Event)
if (!this.password) { return false }
const ret = await bcrypt.compare(pwd, this.password)
return ret
}
User.beforeSave(async (user, options) => { User.prototype.comparePassword = async function (pwd) {
if (user.changed('password')) { if (!this.password) { return false }
const salt = await bcrypt.genSalt(10) const ret = await bcrypt.compare(pwd, this.password)
const hash = await bcrypt.hash(user.password, salt) return ret
user.password = hash
}
})
return User
} }
User.beforeSave(async (user, options) => {
if (user.changed('password')) {
const salt = await bcrypt.genSalt(10)
const hash = await bcrypt.hash(user.password, salt)
user.password = hash
}
})
module.exports = User

View File

@@ -1,4 +1,4 @@
const { event: Event } = require('../api/models') const Event = require('../api/models/event')
const config = require('config') const config = require('config')
const debug = require('debug')('fediverse:ego') const debug = require('debug')('fediverse:ego')

View File

@@ -4,7 +4,8 @@ const crypto = require('crypto')
const config = require('config') const config = require('config')
const httpSignature = require('http-signature') const httpSignature = require('http-signature')
const debug = require('debug')('federation:helpers') const debug = require('debug')('federation:helpers')
const { ap_user: APUser, instance: Instance } = require('../api/models') const APUser = require('../api/models/ap_user')
const Instance = require('../api/models/instance')
const url = require('url') const url = require('url')
const settingsController = require('../api/controller/settings') const settingsController = require('../api/controller/settings')

View File

@@ -3,7 +3,11 @@ const router = express.Router()
const cors = require('cors') const cors = require('cors')
const Follows = require('./follows') const Follows = require('./follows')
const Users = require('./users') const Users = require('./users')
const { event: Event, user: User, tag: Tag, place: Place } = require('../api/models') const Event = require('../api/models/event')
const User = require('../api/models/user')
const Tag = require('../api/models/tag')
const Place = require('../api/models/place')
const settingsController = require('../api/controller/settings') const settingsController = require('../api/controller/settings')
const Resources = require('./resources') const Resources = require('./resources')
const Helpers = require('./helpers') const Helpers = require('./helpers')

View File

@@ -1,4 +1,7 @@
const { event: Event, resource: Resource, ap_user: APUser } = require('../api/models') const Event = require('../api/models/event')
const Resource = require('../api/models/resource')
const APUser = require('../api/models/ap_user')
const debug = require('debug')('fediverse:resource') const debug = require('debug')('fediverse:resource')
const helpers = require('../helpers') const helpers = require('../helpers')
const linkifyHtml = require('linkifyjs/html') const linkifyHtml = require('linkifyjs/html')

View File

@@ -1,4 +1,8 @@
const { event: Event, place: Place, tag: Tag, ap_user: APUser } = require('../api/models') const Event = require('../api/models/event')
const Place = require('../api/models/place')
const APUser = require('../api/models/ap_user')
const Tag = require('../api/models/tag')
const config = require('config') const config = require('config')
const debug = require('debug')('fediverse:user') const debug = require('debug')('fediverse:user')

View File

@@ -1,6 +1,9 @@
const express = require('express') const express = require('express')
const router = express.Router() const router = express.Router()
const { event: Event, user: User, resource: Resource } = require('../api/models') const Event = require('../api/models/event')
const Resource = require('../api/models/resource')
const User = require('../api/models/user')
const cors = require('cors') const cors = require('cors')
const settingsController = require('../api/controller/settings') const settingsController = require('../api/controller/settings')
const version = require('../../package.json').version const version = require('../../package.json').version

View File

@@ -32,8 +32,8 @@ async function main () {
function shutdown () { function shutdown () {
TaskManager.stop() TaskManager.stop()
nuxt.close(async () => { nuxt.close(async () => {
const db = require('./api/models') const sequelize = require('./api/models')
await db.sequelize.close() await sequelize.close()
process.exit() process.exit()
}) })
} }

View File

@@ -3,10 +3,13 @@ const config = require('config')
const debug = require('debug')('notifier') const debug = require('debug')('notifier')
const fediverseHelpers = require('./federation/helpers') const fediverseHelpers = require('./federation/helpers')
const { const Event = require('./api/models/event')
event: Event, notification: Notification, event_notification: EventNotification, const Notification = require('./api/models/event')
user: User, place: Place, tag: Tag const EventNotification = require('./api/models/event')
} = require('./api/models') const User = require('./api/models/event')
const Place = require('./api/models/event')
const Tag = require('./api/models/event')
const eventController = require('./api/controller/event') const eventController = require('./api/controller/event')
const notifier = { const notifier = {

111
yarn.lock
View File

@@ -44,6 +44,7 @@
version "7.10.3" version "7.10.3"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.3.tgz#32b9a0d963a71d7a54f5f6c15659c3dbc2a523a5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.3.tgz#32b9a0d963a71d7a54f5f6c15659c3dbc2a523a5"
integrity sha512-drt8MUHbEqRzNR0xnF8nMehbY11b1SDkRw03PSNH/3Rb2Z35oxkddVSi3rcaak0YJQ86PCuE7Qx1jSFhbLNBMA== integrity sha512-drt8MUHbEqRzNR0xnF8nMehbY11b1SDkRw03PSNH/3Rb2Z35oxkddVSi3rcaak0YJQ86PCuE7Qx1jSFhbLNBMA==
<<<<<<< Updated upstream
dependencies: dependencies:
"@babel/types" "^7.10.3" "@babel/types" "^7.10.3"
jsesc "^2.5.1" jsesc "^2.5.1"
@@ -70,6 +71,34 @@
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz#a17d9723b6e2c750299d2a14d4637c76936d8285" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz#a17d9723b6e2c750299d2a14d4637c76936d8285"
integrity sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA== integrity sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==
dependencies: dependencies:
=======
dependencies:
"@babel/types" "^7.10.3"
jsesc "^2.5.1"
lodash "^4.17.13"
source-map "^0.5.0"
"@babel/helper-annotate-as-pure@^7.10.1":
version "7.10.1"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268"
integrity sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==
dependencies:
"@babel/types" "^7.10.1"
"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.1":
version "7.10.3"
resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.3.tgz#4e9012d6701bef0030348d7f9c808209bd3e8687"
integrity sha512-lo4XXRnBlU6eRM92FkiZxpo1xFLmv3VsPFk61zJKMm7XYJfwqXHsYJTY6agoc4a3L8QPw1HqWehO18coZgbT6A==
dependencies:
"@babel/helper-explode-assignable-expression" "^7.10.3"
"@babel/types" "^7.10.3"
"@babel/helper-compilation-targets@^7.10.2":
version "7.10.2"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz#a17d9723b6e2c750299d2a14d4637c76936d8285"
integrity sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==
dependencies:
>>>>>>> Stashed changes
"@babel/compat-data" "^7.10.1" "@babel/compat-data" "^7.10.1"
browserslist "^4.12.0" browserslist "^4.12.0"
invariant "^2.2.4" invariant "^2.2.4"
@@ -367,6 +396,7 @@
version "7.10.1" version "7.10.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz#d5bc0645913df5b17ad7eda0fa2308330bde34c5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz#d5bc0645913df5b17ad7eda0fa2308330bde34c5"
integrity sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ== integrity sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==
<<<<<<< Updated upstream
dependencies: dependencies:
"@babel/helper-plugin-utils" "^7.10.1" "@babel/helper-plugin-utils" "^7.10.1"
@@ -376,6 +406,17 @@
integrity sha512-a9OAbQhKOwSle1Vr0NJu/ISg1sPfdEkfRKWpgPuzhnWWzForou2gIeUIIwjAMHRekhhpJ7eulZlYs0H14Cbi+g== integrity sha512-a9OAbQhKOwSle1Vr0NJu/ISg1sPfdEkfRKWpgPuzhnWWzForou2gIeUIIwjAMHRekhhpJ7eulZlYs0H14Cbi+g==
dependencies: dependencies:
"@babel/helper-plugin-utils" "^7.10.1" "@babel/helper-plugin-utils" "^7.10.1"
=======
dependencies:
"@babel/helper-plugin-utils" "^7.10.1"
"@babel/plugin-syntax-decorators@^7.10.1":
version "7.10.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.1.tgz#16b869c4beafc9a442565147bda7ce0967bd4f13"
integrity sha512-a9OAbQhKOwSle1Vr0NJu/ISg1sPfdEkfRKWpgPuzhnWWzForou2gIeUIIwjAMHRekhhpJ7eulZlYs0H14Cbi+g==
dependencies:
"@babel/helper-plugin-utils" "^7.10.1"
>>>>>>> Stashed changes
"@babel/plugin-syntax-dynamic-import@^7.8.0": "@babel/plugin-syntax-dynamic-import@^7.8.0":
version "7.8.3" version "7.8.3"
@@ -2242,7 +2283,11 @@ bluebird@^2.10.0:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1"
integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=
<<<<<<< Updated upstream
bluebird@^3.0.5, bluebird@^3.1.1, bluebird@^3.5.5, bluebird@^3.7.2: bluebird@^3.0.5, bluebird@^3.1.1, bluebird@^3.5.5, bluebird@^3.7.2:
=======
bluebird@^3.0.5, bluebird@^3.1.1, bluebird@^3.5.0, bluebird@^3.5.3, bluebird@^3.5.5, bluebird@^3.7.2:
>>>>>>> Stashed changes
version "3.7.2" version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
@@ -4346,7 +4391,11 @@ eslint-plugin-import@^2.21.2:
resolve "^1.17.0" resolve "^1.17.0"
tsconfig-paths "^3.9.0" tsconfig-paths "^3.9.0"
<<<<<<< Updated upstream
eslint-plugin-jest@^23.10.0, eslint-plugin-jest@^23.17.1: eslint-plugin-jest@^23.10.0, eslint-plugin-jest@^23.17.1:
=======
eslint-plugin-jest@^23.10.0, eslint-plugin-jest@^23.13.2:
>>>>>>> Stashed changes
version "23.17.1" version "23.17.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.17.1.tgz#c0f39ba78e0f33b7ee1ce4ec92b773e39026ea3f" resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.17.1.tgz#c0f39ba78e0f33b7ee1ce4ec92b773e39026ea3f"
integrity sha512-/o36fw67qNbJGWbSBIBMfseMsNP/d88WUHAGHCi1xFwsNB3XXZGdvxbOw49j3iQz6MCW/yw8OeOsuQhi6mM5ZA== integrity sha512-/o36fw67qNbJGWbSBIBMfseMsNP/d88WUHAGHCi1xFwsNB3XXZGdvxbOw49j3iQz6MCW/yw8OeOsuQhi6mM5ZA==
@@ -4374,7 +4423,11 @@ eslint-plugin-nuxt@^1.0.0:
semver "^7.3.2" semver "^7.3.2"
vue-eslint-parser "^7.0.0" vue-eslint-parser "^7.0.0"
<<<<<<< Updated upstream
eslint-plugin-prettier@^3.1.4: eslint-plugin-prettier@^3.1.4:
=======
eslint-plugin-prettier@^3.1.3:
>>>>>>> Stashed changes
version "3.1.4" version "3.1.4"
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2"
integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==
@@ -4455,7 +4508,11 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.2
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
<<<<<<< Updated upstream
eslint@^7.3.1: eslint@^7.3.1:
=======
eslint@^7.2.0:
>>>>>>> Stashed changes
version "7.3.1" version "7.3.1"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.3.1.tgz#76392bd7e44468d046149ba128d1566c59acbe19" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.3.1.tgz#76392bd7e44468d046149ba128d1566c59acbe19"
integrity sha512-cQC/xj9bhWUcyi/RuMbRtC3I0eW8MH0jhRELSvpKYkWep3C6YZ2OkvcvJVUeO6gcunABmzptbXBuDoXsjHmfTA== integrity sha512-cQC/xj9bhWUcyi/RuMbRtC3I0eW8MH0jhRELSvpKYkWep3C6YZ2OkvcvJVUeO6gcunABmzptbXBuDoXsjHmfTA==
@@ -5909,7 +5966,11 @@ ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
<<<<<<< Updated upstream
inquirer@^7.2.0: inquirer@^7.2.0:
=======
inquirer@^7.1.0, inquirer@^7.2.0:
>>>>>>> Stashed changes
version "7.2.0" version "7.2.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.2.0.tgz#63ce99d823090de7eb420e4bb05e6f3449aa389a" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.2.0.tgz#63ce99d823090de7eb420e4bb05e6f3449aa389a"
integrity sha512-E0c4rPwr9ByePfNlTIB8z51kK1s2n6jrHuJeEHENl/sbq2G/S1auvibgEwNR4uSyiU+PiYHqSwsgGiXjG8p5ZQ== integrity sha512-E0c4rPwr9ByePfNlTIB8z51kK1s2n6jrHuJeEHENl/sbq2G/S1auvibgEwNR4uSyiU+PiYHqSwsgGiXjG8p5ZQ==
@@ -6655,7 +6716,11 @@ lazy-cache@^1.0.3:
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4=
<<<<<<< Updated upstream
less-loader@^6.1.2: less-loader@^6.1.2:
=======
less-loader@^6.1.1:
>>>>>>> Stashed changes
version "6.1.2" version "6.1.2"
resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-6.1.2.tgz#793f2ab76dea3c4fca6a27f3effceab16fc3cd9a" resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-6.1.2.tgz#793f2ab76dea3c4fca6a27f3effceab16fc3cd9a"
integrity sha512-80g+EURm8H98wirYTNnIJMxVnJU9NYIXRs7rxsghL8C+UyuGzsqDXPgQcLUrNlItMwUviYeBfSOEyULI6iza+g== integrity sha512-80g+EURm8H98wirYTNnIJMxVnJU9NYIXRs7rxsghL8C+UyuGzsqDXPgQcLUrNlItMwUviYeBfSOEyULI6iza+g==
@@ -7468,14 +7533,22 @@ mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.3:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
<<<<<<< Updated upstream
moment-timezone@^0.5.31: moment-timezone@^0.5.31:
=======
moment-timezone@^0.5.21, moment-timezone@^0.5.31:
>>>>>>> Stashed changes
version "0.5.31" version "0.5.31"
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.31.tgz#9c40d8c5026f0c7ab46eda3d63e49c155148de05" resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.31.tgz#9c40d8c5026f0c7ab46eda3d63e49c155148de05"
integrity sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA== integrity sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==
dependencies: dependencies:
moment ">= 2.9.0" moment ">= 2.9.0"
<<<<<<< Updated upstream
"moment@>= 2.9.0", moment@^2.24.0, moment@^2.25.3, moment@^2.26.0: "moment@>= 2.9.0", moment@^2.24.0, moment@^2.25.3, moment@^2.26.0:
=======
"moment@>= 2.9.0", moment@^2.24.0, moment@^2.25.3:
>>>>>>> Stashed changes
version "2.27.0" version "2.27.0"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d"
integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==
@@ -7914,7 +7987,11 @@ nuxt-express-module@^0.0.11:
dependencies: dependencies:
express "^4.16.3" express "^4.16.3"
<<<<<<< Updated upstream
nuxt@^2.13.1: nuxt@^2.13.1:
=======
nuxt@^2.12.2:
>>>>>>> Stashed changes
version "2.13.1" version "2.13.1"
resolved "https://registry.yarnpkg.com/nuxt/-/nuxt-2.13.1.tgz#039472899938de4bd785769c44ce9cec126ec818" resolved "https://registry.yarnpkg.com/nuxt/-/nuxt-2.13.1.tgz#039472899938de4bd785769c44ce9cec126ec818"
integrity sha512-a8OxhwQAfAQPmpTnRWcOFO9rlkx/QsnP35sByvkQwuaRKij3lR6MI9UbzoGb1SzjF/+BarhrYApiQL/XW2uEqg== integrity sha512-a8OxhwQAfAQPmpTnRWcOFO9rlkx/QsnP35sByvkQwuaRKij3lR6MI9UbzoGb1SzjF/+BarhrYApiQL/XW2uEqg==
@@ -9480,6 +9557,7 @@ prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2:
prosemirror-state "^1.0.0" prosemirror-state "^1.0.0"
w3c-keyname "^2.2.0" w3c-keyname "^2.2.0"
<<<<<<< Updated upstream
prosemirror-model@1.9.1: prosemirror-model@1.9.1:
version "1.9.1" version "1.9.1"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.9.1.tgz#8c08cf556f593c5f015548d2c1a6825661df087f" resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.9.1.tgz#8c08cf556f593c5f015548d2c1a6825661df087f"
@@ -9491,6 +9569,12 @@ prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.8.1:
version "1.10.0" version "1.10.0"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.10.0.tgz#bb1101732bccacf336e23a36a8b045b865025fa2" resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.10.0.tgz#bb1101732bccacf336e23a36a8b045b865025fa2"
integrity sha512-xTMbbO2q4abs5lJdeRvk/SrftNfZlMdvChKziTiK+OKtP8LkQI8uw39u4S5zqyflrmW3Or6+qnyFPf1p4v2u1g== integrity sha512-xTMbbO2q4abs5lJdeRvk/SrftNfZlMdvChKziTiK+OKtP8LkQI8uw39u4S5zqyflrmW3Or6+qnyFPf1p4v2u1g==
=======
prosemirror-model@1.8.2, prosemirror-model@1.9.1, prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.8.1:
version "1.8.2"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.8.2.tgz#c74eaacb0bbfea49b59a6d89fef5516181666a56"
integrity sha512-piffokzW7opZVCjf/9YaoXvTC0g7zMRWKJib1hpphPfC+4x6ZXe5CiExgycoWZJe59VxxP7uHX8aFiwg2i9mUQ==
>>>>>>> Stashed changes
dependencies: dependencies:
orderedmap "^1.1.0" orderedmap "^1.1.0"
@@ -10426,10 +10510,17 @@ sequelize-pool@^6.0.0:
resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-6.0.0.tgz#2b2f6570fb633ecb38a338c4fc266c0e42ce2af7" resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-6.0.0.tgz#2b2f6570fb633ecb38a338c4fc266c0e42ce2af7"
integrity sha512-D/VfOX2Z+6JTWqM73lhcqMXp1X4CeqRNVMlndvbOMtyjFAZ2kYzH7rGFGFrLO1r+RZQdc/h+3zQL4nd3cclNLg== integrity sha512-D/VfOX2Z+6JTWqM73lhcqMXp1X4CeqRNVMlndvbOMtyjFAZ2kYzH7rGFGFrLO1r+RZQdc/h+3zQL4nd3cclNLg==
<<<<<<< Updated upstream
sequelize@^6.1.0: sequelize@^6.1.0:
version "6.1.0" version "6.1.0"
resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.1.0.tgz#576eb95709142dbc96f4a8f2b166932cc2781f8d" resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.1.0.tgz#576eb95709142dbc96f4a8f2b166932cc2781f8d"
integrity sha512-8x603RQrj14QZ4dGpsYPMr3YGqsihNX9WPclNN83prwrhHAJH9LHfOG/pK2XUdrwYtbRz+2a7xKXK7rVdw3P2A== integrity sha512-8x603RQrj14QZ4dGpsYPMr3YGqsihNX9WPclNN83prwrhHAJH9LHfOG/pK2XUdrwYtbRz+2a7xKXK7rVdw3P2A==
=======
sequelize@^5.21.13:
version "5.22.0"
resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-5.22.0.tgz#72344a3aecd6767a8ceb02b8cba739e3ebeadeaf"
integrity sha512-m7Qw2MplbaLw2hA4lu8CwzH6+1cG/W4lu5fVJY8S256Rma8ma0tR9yufC7dZGQ1QsL6KnTaEYwztAbgfQbd3Lw==
>>>>>>> Stashed changes
dependencies: dependencies:
debug "^4.1.1" debug "^4.1.1"
dottie "^2.0.0" dottie "^2.0.0"
@@ -11288,7 +11379,11 @@ tiptap-commands@^1.13.1:
prosemirror-utils "0.9.6" prosemirror-utils "0.9.6"
tiptap-utils "^1.9.1" tiptap-utils "^1.9.1"
<<<<<<< Updated upstream
tiptap-extensions@^1.29.1: tiptap-extensions@^1.29.1:
=======
tiptap-extensions@^1.28.6:
>>>>>>> Stashed changes
version "1.29.1" version "1.29.1"
resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.29.1.tgz#70679bd57ffcc6a67358f58d03e574b40e0432bb" resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.29.1.tgz#70679bd57ffcc6a67358f58d03e574b40e0432bb"
integrity sha512-xwBvlGAN0W9+F5DB/s/pH8LcOaUq7WgPffv7KOGU26jmPKq8JAXXwZXn8DOmPYaRo9RscF0Tg9AADOM+0vcLkQ== integrity sha512-xwBvlGAN0W9+F5DB/s/pH8LcOaUq7WgPffv7KOGU26jmPKq8JAXXwZXn8DOmPYaRo9RscF0Tg9AADOM+0vcLkQ==
@@ -11315,7 +11410,11 @@ tiptap-utils@^1.9.1:
prosemirror-tables "1.0.0" prosemirror-tables "1.0.0"
prosemirror-utils "0.9.6" prosemirror-utils "0.9.6"
<<<<<<< Updated upstream
tiptap@^1.27.1: tiptap@^1.27.1:
=======
tiptap@^1.26.6, tiptap@^1.27.1:
>>>>>>> Stashed changes
version "1.27.1" version "1.27.1"
resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.27.1.tgz#b40b6634f23913b4570d6e7a8ed4eb5b206c7589" resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.27.1.tgz#b40b6634f23913b4570d6e7a8ed4eb5b206c7589"
integrity sha512-CwPMwKAKjAzsnkxZSISqDh73JmTZP3qpYn91k71WfIUZ7KUDkDt8gOKDrHMhaTJR2qMmuAChkkzd3OvBaBX+/Q== integrity sha512-CwPMwKAKjAzsnkxZSISqDh73JmTZP3qpYn91k71WfIUZ7KUDkDt8gOKDrHMhaTJR2qMmuAChkkzd3OvBaBX+/Q==
@@ -11598,7 +11697,11 @@ uglify-to-browserify@~1.0.0:
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
<<<<<<< Updated upstream
umzug@^2.3.0: umzug@^2.3.0:
=======
umzug@^2.1.0:
>>>>>>> Stashed changes
version "2.3.0" version "2.3.0"
resolved "https://registry.yarnpkg.com/umzug/-/umzug-2.3.0.tgz#0ef42b62df54e216b05dcaf627830a6a8b84a184" resolved "https://registry.yarnpkg.com/umzug/-/umzug-2.3.0.tgz#0ef42b62df54e216b05dcaf627830a6a8b84a184"
integrity sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw== integrity sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==
@@ -11860,12 +11963,16 @@ uuid@^3.3.2, uuid@^3.3.3:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
<<<<<<< Updated upstream
uuid@^8.1.0: uuid@^8.1.0:
version "8.2.0" version "8.2.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.2.0.tgz#cb10dd6b118e2dada7d0cd9730ba7417c93d920e" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.2.0.tgz#cb10dd6b118e2dada7d0cd9730ba7417c93d920e"
integrity sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q== integrity sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q==
v-calendar@^1.0.8: v-calendar@^1.0.8:
=======
v-calendar@^1.0.6:
>>>>>>> Stashed changes
version "1.0.8" version "1.0.8"
resolved "https://registry.yarnpkg.com/v-calendar/-/v-calendar-1.0.8.tgz#35c515749b6c5a001c815a232acfa0d85b569f6b" resolved "https://registry.yarnpkg.com/v-calendar/-/v-calendar-1.0.8.tgz#35c515749b6c5a001c815a232acfa0d85b569f6b"
integrity sha512-2st0wvSM7oGTOQixVMFHAEPjGBWEJmAhBDE6NYR5MB9Owe1d/pR5+A1OB+/HICXbuiKMjG8KzDpeySnPECddsw== integrity sha512-2st0wvSM7oGTOQixVMFHAEPjGBWEJmAhBDE6NYR5MB9Owe1d/pR5+A1OB+/HICXbuiKMjG8KzDpeySnPECddsw==
@@ -12121,7 +12228,11 @@ webpack-bundle-analyzer@^3.8.0:
opener "^1.5.1" opener "^1.5.1"
ws "^6.0.0" ws "^6.0.0"
<<<<<<< Updated upstream
webpack-cli@^3.3.12: webpack-cli@^3.3.12:
=======
webpack-cli@^3.3.11:
>>>>>>> Stashed changes
version "3.3.12" version "3.3.12"
resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a"
integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==