mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-18 17:25:16 -04:00
Use import syntax for logger and config
Signed-off-by: David Mehren <dmehren1@gmail.com>
This commit is contained in:
parent
dd11483f44
commit
9f284b752b
14 changed files with 98 additions and 113 deletions
75
lib/app.ts
75
lib/app.ts
|
@ -1,46 +1,39 @@
|
||||||
'use strict'
|
import { Revision, sequelize } from './models'
|
||||||
|
import { config } from './config'
|
||||||
|
import { logger } from './logger'
|
||||||
|
|
||||||
import { Revision } from "./models"
|
const express = require('express')
|
||||||
import { sequelize } from './models'
|
|
||||||
|
|
||||||
// app
|
const ejs = require('ejs')
|
||||||
// external modules
|
const passport = require('passport')
|
||||||
const express = require('express');
|
const methodOverride = require('method-override')
|
||||||
|
const cookieParser = require('cookie-parser')
|
||||||
|
const compression = require('compression')
|
||||||
|
const session = require('express-session')
|
||||||
|
const SequelizeStore = require('connect-session-sequelize')(session.Store)
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
const ejs = require('ejs');
|
const morgan = require('morgan')
|
||||||
const passport = require('passport');
|
const passportSocketIo = require('passport.socketio')
|
||||||
const methodOverride = require('method-override');
|
const helmet = require('helmet')
|
||||||
const cookieParser = require('cookie-parser');
|
const i18n = require('i18n')
|
||||||
const compression = require('compression');
|
const flash = require('connect-flash')
|
||||||
const session = require('express-session');
|
const errors = require('./errors')
|
||||||
const SequelizeStore = require('connect-session-sequelize')(session.Store);
|
const csp = require('./csp')
|
||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
|
||||||
|
|
||||||
const morgan = require('morgan');
|
|
||||||
const passportSocketIo = require('passport.socketio');
|
|
||||||
const helmet = require('helmet');
|
|
||||||
const i18n = require('i18n');
|
|
||||||
const flash = require('connect-flash');
|
|
||||||
|
|
||||||
// core
|
|
||||||
const config = require('./config');
|
|
||||||
const logger = require('./logger');
|
|
||||||
const errors = require('./errors');
|
|
||||||
const csp = require('./csp');
|
|
||||||
|
|
||||||
// server setup
|
// server setup
|
||||||
const app = express();
|
const app = express()
|
||||||
let server: any = null;
|
let server: any = null
|
||||||
if (config.useSSL) {
|
if (config.useSSL) {
|
||||||
const ca = (function () {
|
const ca = (function () {
|
||||||
let i, len, results;
|
let i, len, results
|
||||||
results = []
|
results = []
|
||||||
for (i = 0, len = config.sslCAPath.length; i < len; i++) {
|
for (i = 0, len = config.sslCAPath.length; i < len; i++) {
|
||||||
results.push(fs.readFileSync(config.sslCAPath[i], 'utf8'))
|
results.push(fs.readFileSync(config.sslCAPath[i], 'utf8'))
|
||||||
}
|
}
|
||||||
return results
|
return results
|
||||||
})();
|
})()
|
||||||
const options = {
|
const options = {
|
||||||
key: fs.readFileSync(config.sslKeyPath, 'utf8'),
|
key: fs.readFileSync(config.sslKeyPath, 'utf8'),
|
||||||
cert: fs.readFileSync(config.sslCertPath, 'utf8'),
|
cert: fs.readFileSync(config.sslCertPath, 'utf8'),
|
||||||
|
@ -48,7 +41,7 @@ if (config.useSSL) {
|
||||||
dhparam: fs.readFileSync(config.dhParamPath, 'utf8'),
|
dhparam: fs.readFileSync(config.dhParamPath, 'utf8'),
|
||||||
requestCert: false,
|
requestCert: false,
|
||||||
rejectUnauthorized: false
|
rejectUnauthorized: false
|
||||||
};
|
}
|
||||||
server = require('https').createServer(options, app)
|
server = require('https').createServer(options, app)
|
||||||
} else {
|
} else {
|
||||||
server = require('http').createServer(app)
|
server = require('http').createServer(app)
|
||||||
|
@ -64,14 +57,14 @@ app.use(morgan('combined', {
|
||||||
}))
|
}))
|
||||||
|
|
||||||
// socket io
|
// socket io
|
||||||
const io = require('socket.io')(server);
|
const io = require('socket.io')(server)
|
||||||
io.engine.ws = new (require('ws').Server)({
|
io.engine.ws = new (require('ws').Server)({
|
||||||
noServer: true,
|
noServer: true,
|
||||||
perMessageDeflate: false
|
perMessageDeflate: false
|
||||||
})
|
})
|
||||||
|
|
||||||
// others
|
// others
|
||||||
const realtime = require('./realtime');
|
const realtime = require('./realtime')
|
||||||
|
|
||||||
// assign socket io to realtime
|
// assign socket io to realtime
|
||||||
realtime.io = io
|
realtime.io = io
|
||||||
|
@ -82,7 +75,7 @@ app.use(methodOverride('_method'))
|
||||||
// session store
|
// session store
|
||||||
const sessionStore = new SequelizeStore({
|
const sessionStore = new SequelizeStore({
|
||||||
db: sequelize
|
db: sequelize
|
||||||
});
|
})
|
||||||
|
|
||||||
// compression
|
// compression
|
||||||
app.use(compression())
|
app.use(compression())
|
||||||
|
@ -152,7 +145,7 @@ app.use(session({
|
||||||
}))
|
}))
|
||||||
|
|
||||||
// session resumption
|
// session resumption
|
||||||
const tlsSessionStore = {};
|
const tlsSessionStore = {}
|
||||||
server.on('newSession', function (id, data, cb) {
|
server.on('newSession', function (id, data, cb) {
|
||||||
tlsSessionStore[id.toString('hex')] = data
|
tlsSessionStore[id.toString('hex')] = data
|
||||||
cb()
|
cb()
|
||||||
|
@ -243,12 +236,12 @@ io.sockets.on('connection', realtime.connection)
|
||||||
|
|
||||||
// listen
|
// listen
|
||||||
function startListen () {
|
function startListen () {
|
||||||
let address;
|
let address
|
||||||
const listenCallback = function () {
|
const listenCallback = function () {
|
||||||
const schema = config.useSSL ? 'HTTPS' : 'HTTP';
|
const schema = config.useSSL ? 'HTTPS' : 'HTTP'
|
||||||
logger.info('%s Server listening at %s', schema, address)
|
logger.info('%s Server listening at %s', schema, address)
|
||||||
realtime.maintenance = false
|
realtime.maintenance = false
|
||||||
};
|
}
|
||||||
|
|
||||||
// use unix domain socket if 'path' is specified
|
// use unix domain socket if 'path' is specified
|
||||||
if (config.path) {
|
if (config.path) {
|
||||||
|
@ -287,7 +280,7 @@ function handleTermSignals () {
|
||||||
realtime.maintenance = true
|
realtime.maintenance = true
|
||||||
// disconnect all socket.io clients
|
// disconnect all socket.io clients
|
||||||
Object.keys(io.sockets.sockets).forEach(function (key) {
|
Object.keys(io.sockets.sockets).forEach(function (key) {
|
||||||
const socket = io.sockets.sockets[key];
|
const socket = io.sockets.sockets[key]
|
||||||
// notify client server going into maintenance status
|
// notify client server going into maintenance status
|
||||||
socket.emit('maintenance')
|
socket.emit('maintenance')
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
|
@ -307,7 +300,7 @@ function handleTermSignals () {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}, 100);
|
}, 100)
|
||||||
}
|
}
|
||||||
process.on('SIGINT', handleTermSignals)
|
process.on('SIGINT', handleTermSignals)
|
||||||
process.on('SIGTERM', handleTermSignals)
|
process.on('SIGTERM', handleTermSignals)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
var config = require('./config')
|
import { config } from './config'
|
||||||
|
|
||||||
var uuid = require('uuid')
|
var uuid = require('uuid')
|
||||||
|
|
||||||
var CspStrategy = {}
|
var CspStrategy = {}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
'use strict'
|
'use strict'
|
||||||
import { createHash } from 'crypto'
|
import { createHash } from 'crypto'
|
||||||
import randomColor from 'randomcolor'
|
import randomColor from 'randomcolor'
|
||||||
import config from './config'
|
import { config } from './config'
|
||||||
|
|
||||||
// core
|
// core
|
||||||
export function generateAvatar (name: string): string {
|
export function generateAvatar (name: string): string {
|
||||||
|
|
|
@ -1,22 +1,20 @@
|
||||||
import {Sequelize} from 'sequelize-typescript';
|
import { Sequelize } from 'sequelize-typescript'
|
||||||
import {Author} from './author';
|
import { Author } from './author'
|
||||||
import {Note} from './note';
|
import { Note } from './note'
|
||||||
import {Revision} from './revision';
|
import { Revision } from './revision'
|
||||||
import {Temp} from './temp';
|
import { Temp } from './temp'
|
||||||
import {User} from './user';
|
import { User } from './user'
|
||||||
|
|
||||||
const {cloneDeep} = require('lodash')
|
import { logger } from '../logger'
|
||||||
|
import { config } from '../config'
|
||||||
|
|
||||||
// core
|
const { cloneDeep } = require('lodash')
|
||||||
var config = require('../config')
|
const dbconfig = cloneDeep(config.db)
|
||||||
var logger = require('../logger')
|
|
||||||
|
|
||||||
var dbconfig = cloneDeep(config.db)
|
|
||||||
dbconfig.logging = config.debug ? (data) => {
|
dbconfig.logging = config.debug ? (data) => {
|
||||||
logger.info(data)
|
logger.info(data)
|
||||||
} : false
|
} : false
|
||||||
|
|
||||||
export let sequelize: any;
|
export let sequelize: any
|
||||||
|
|
||||||
// Heroku specific
|
// Heroku specific
|
||||||
if (config.dbURL) {
|
if (config.dbURL) {
|
||||||
|
@ -25,8 +23,6 @@ if (config.dbURL) {
|
||||||
sequelize = new Sequelize(dbconfig.database, dbconfig.username, dbconfig.password, dbconfig)
|
sequelize = new Sequelize(dbconfig.database, dbconfig.username, dbconfig.password, dbconfig)
|
||||||
}
|
}
|
||||||
|
|
||||||
sequelize.addModels([Author, Note, Revision, Temp, User]);
|
sequelize.addModels([Author, Note, Revision, Temp, User])
|
||||||
|
|
||||||
|
|
||||||
export {Author, Note, Revision, Temp, User};
|
|
||||||
|
|
||||||
|
export { Author, Note, Revision, Temp, User }
|
||||||
|
|
|
@ -30,8 +30,8 @@ import moment from 'moment'
|
||||||
// eslint-disable-next-line @typescript-eslint/camelcase
|
// eslint-disable-next-line @typescript-eslint/camelcase
|
||||||
import { diff_match_patch, patch_obj } from 'diff-match-patch'
|
import { diff_match_patch, patch_obj } from 'diff-match-patch'
|
||||||
import S from 'string'
|
import S from 'string'
|
||||||
import config from '../config'
|
import { config } from '../config'
|
||||||
import logger from '../logger'
|
import { logger } from '../logger'
|
||||||
import ot from '../ot'
|
import ot from '../ot'
|
||||||
|
|
||||||
const md = markdownIt()
|
const md = markdownIt()
|
||||||
|
|
|
@ -4,13 +4,13 @@ import { Note } from './note'
|
||||||
import { Utils } from '../utils'
|
import { Utils } from '../utils'
|
||||||
|
|
||||||
import Sequelize from 'sequelize'
|
import Sequelize from 'sequelize'
|
||||||
|
// core
|
||||||
|
import { logger } from '../logger'
|
||||||
import async = require('async');
|
import async = require('async');
|
||||||
import moment = require('moment');
|
import moment = require('moment');
|
||||||
import childProcess = require('child_process');
|
import childProcess = require('child_process');
|
||||||
import shortId = require('shortid');
|
import shortId = require('shortid');
|
||||||
import path = require('path');
|
import path = require('path');
|
||||||
// core
|
|
||||||
import logger = require('../logger');
|
|
||||||
|
|
||||||
const Op = Sequelize.Op
|
const Op = Sequelize.Op
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { Note } from './note'
|
||||||
import { Table, BeforeCreate, BeforeUpdate, HasMany, Unique, IsEmail, Column, DataType, PrimaryKey, Model, Default } from 'sequelize-typescript'
|
import { Table, BeforeCreate, BeforeUpdate, HasMany, Unique, IsEmail, Column, DataType, PrimaryKey, Model, Default } from 'sequelize-typescript'
|
||||||
import scrypt from 'scrypt-kdf'
|
import scrypt from 'scrypt-kdf'
|
||||||
import { generateAvatarURL } from '../letter-avatars'
|
import { generateAvatarURL } from '../letter-avatars'
|
||||||
import logger from '../logger'
|
import { logger } from '../logger'
|
||||||
import { UUIDV4 } from 'sequelize'
|
import { UUIDV4 } from 'sequelize'
|
||||||
|
|
||||||
// core
|
// core
|
||||||
|
|
|
@ -2,8 +2,8 @@ import { Author, Note, Revision, User } from './models'
|
||||||
|
|
||||||
import ot from './ot'
|
import ot from './ot'
|
||||||
import history from './history'
|
import history from './history'
|
||||||
import logger from './logger'
|
import { logger } from './logger'
|
||||||
import config from './config'
|
import { config } from './config'
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
import randomcolor from 'randomcolor'
|
import randomcolor from 'randomcolor'
|
||||||
import async from 'async'
|
import async from 'async'
|
||||||
|
@ -26,10 +26,8 @@ const realtime: any = {
|
||||||
}
|
}
|
||||||
/* eslint-enable @typescript-eslint/no-use-before-define */
|
/* eslint-enable @typescript-eslint/no-use-before-define */
|
||||||
|
|
||||||
|
|
||||||
const disconnectSocketQueue: any = []
|
const disconnectSocketQueue: any = []
|
||||||
|
|
||||||
|
|
||||||
function onAuthorizeSuccess (data, accept) {
|
function onAuthorizeSuccess (data, accept) {
|
||||||
accept()
|
accept()
|
||||||
}
|
}
|
||||||
|
@ -384,7 +382,6 @@ function failConnection (code, err, socket) {
|
||||||
return socket.disconnect(true)
|
return socket.disconnect(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function interruptConnection (socket, noteId, socketId) {
|
function interruptConnection (socket, noteId, socketId) {
|
||||||
if (notes[noteId]) delete notes[noteId]
|
if (notes[noteId]) delete notes[noteId]
|
||||||
if (users[socketId]) delete users[socketId]
|
if (users[socketId]) delete users[socketId]
|
||||||
|
@ -537,7 +534,6 @@ function operationCallback (socket, operation) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function startConnection (socket) {
|
function startConnection (socket) {
|
||||||
if (isConnectionBusy) return
|
if (isConnectionBusy) return
|
||||||
isConnectionBusy = true
|
isConnectionBusy = true
|
||||||
|
@ -715,7 +711,6 @@ setInterval(function () {
|
||||||
})
|
})
|
||||||
}, 60000)
|
}, 60000)
|
||||||
|
|
||||||
|
|
||||||
function updateUserData (socket, user) {
|
function updateUserData (socket, user) {
|
||||||
// retrieve user data from passport
|
// retrieve user data from passport
|
||||||
if (socket.request.user && socket.request.user.logged_in) {
|
if (socket.request.user && socket.request.user.logged_in) {
|
||||||
|
@ -731,7 +726,6 @@ function updateUserData (socket, user) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function connection (socket) {
|
function connection (socket) {
|
||||||
if (realtime.maintenance) return
|
if (realtime.maintenance) return
|
||||||
parseNoteIdFromSocket(socket, function (err, noteId) {
|
parseNoteIdFromSocket(socket, function (err, noteId) {
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
'use strict'
|
'use strict'
|
||||||
// response
|
// response
|
||||||
// external modules
|
// external modules
|
||||||
|
|
||||||
|
// core
|
||||||
|
import { config } from './config'
|
||||||
|
|
||||||
var fs = require('fs')
|
var fs = require('fs')
|
||||||
var path = require('path')
|
var path = require('path')
|
||||||
var request = require('request')
|
var request = require('request')
|
||||||
// core
|
|
||||||
var config = require('./config')
|
|
||||||
var logger = require('./logger')
|
var logger = require('./logger')
|
||||||
var models = require('./models')
|
var models = require('./models')
|
||||||
const noteUtil = require('./web/note/util')
|
const noteUtil = require('./web/note/util')
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { Response } from 'express'
|
import { Response } from 'express'
|
||||||
|
|
||||||
import { Note, Revision } from '../../models'
|
import { Note, Revision } from '../../models'
|
||||||
import logger from '../../logger'
|
import { logger } from '../../logger'
|
||||||
import config from '../../config'
|
import { config } from '../../config'
|
||||||
import errors from '../../errors'
|
import errors from '../../errors'
|
||||||
import shortId from 'shortid'
|
import shortId from 'shortid'
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import { NextFunction, Response } from 'express'
|
import { NextFunction, Request, Response } from 'express'
|
||||||
import { NoteUtils } from './util'
|
import { NoteUtils } from './util'
|
||||||
import * as ActionController from './actions'
|
import * as ActionController from './actions'
|
||||||
import errors from '../../errors'
|
import errors from '../../errors'
|
||||||
import config from '../../config'
|
import { config } from '../../config'
|
||||||
import logger from '../../logger'
|
import { logger } from '../../logger'
|
||||||
import { User, Note } from '../../models'
|
import { User, Note } from '../../models'
|
||||||
|
|
||||||
export module NoteController {
|
export module NoteController {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { NextFunction, Response } from "express";
|
import { NextFunction, Response } from "express";
|
||||||
import { NoteUtils } from "./util";
|
import { NoteUtils } from "./util";
|
||||||
import errors from '../../errors';
|
import errors from '../../errors';
|
||||||
import logger from '../../logger';
|
import { logger } from '../../logger'
|
||||||
import config from '../../config';
|
import { config } from '../../config'
|
||||||
import { User } from "../../models/user";
|
import { User } from "../../models/user";
|
||||||
import { Note } from "../../models/note";
|
import { Note } from "../../models/note";
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,19 @@
|
||||||
import { Includeable } from "sequelize";
|
import { Includeable } from 'sequelize'
|
||||||
import { Response } from "express";
|
import { Response } from 'express'
|
||||||
|
|
||||||
import path from "path";
|
import path from 'path'
|
||||||
import fs from "fs";
|
import fs from 'fs'
|
||||||
import errors from "../../errors";
|
import errors from '../../errors'
|
||||||
import config from "../../config";
|
import { config } from '../../config'
|
||||||
import logger from "../../logger";
|
import { logger } from '../../logger'
|
||||||
import { Note } from "../../models/note";
|
import { Note , User } from '../../models'
|
||||||
import { User } from "../../models/user";
|
|
||||||
|
|
||||||
export module NoteUtils {
|
export module NoteUtils {
|
||||||
export function findNoteOrCreate(req, res, callback: (note: any) => void, include?: Includeable[]) {
|
export function findNoteOrCreate(req, res, callback: (note: any) => void, include?: Includeable[]) {
|
||||||
const id = req.params.noteId || req.params.shortid;
|
const id = req.params.noteId || req.params.shortid
|
||||||
Note.parseNoteId(id, function (err, _id) {
|
Note.parseNoteId(id, function (err, _id) {
|
||||||
if (err) {
|
if (err) {
|
||||||
logger.error(err);
|
logger.error(err)
|
||||||
return errors.errorInternalError(res)
|
return errors.errorInternalError(res)
|
||||||
}
|
}
|
||||||
Note.findOne({
|
Note.findOne({
|
||||||
|
@ -31,13 +30,13 @@ export module NoteUtils {
|
||||||
return callback(note)
|
return callback(note)
|
||||||
}
|
}
|
||||||
}).catch(function (err) {
|
}).catch(function (err) {
|
||||||
logger.error(err);
|
logger.error(err)
|
||||||
return errors.errorInternalError(res)
|
return errors.errorInternalError(res)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function checkViewPermission(req: any, note: any) {
|
export function checkViewPermission (req: any, note: any) {
|
||||||
if (note.permission === 'private') {
|
if (note.permission === 'private') {
|
||||||
return req.isAuthenticated() && note.ownerId === req.user.id
|
return req.isAuthenticated() && note.ownerId === req.user.id
|
||||||
} else if (note.permission === 'limited' || note.permission === 'protected') {
|
} else if (note.permission === 'limited' || note.permission === 'protected') {
|
||||||
|
@ -47,9 +46,9 @@ export module NoteUtils {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function newNote(req: any, res: Response, body: string | null) {
|
export function newNote (req: any, res: Response, body: string | null) {
|
||||||
let owner = null;
|
let owner = null
|
||||||
const noteId = req.params.noteId ? req.params.noteId : null;
|
const noteId = req.params.noteId ? req.params.noteId : null
|
||||||
if (req.isAuthenticated()) {
|
if (req.isAuthenticated()) {
|
||||||
owner = req.user.id
|
owner = req.user.id
|
||||||
} else if (!config.allowAnonymous) {
|
} else if (!config.allowAnonymous) {
|
||||||
|
@ -67,21 +66,21 @@ export module NoteUtils {
|
||||||
}).then(function (note) {
|
}).then(function (note) {
|
||||||
return res.redirect(config.serverURL + '/' + (note.alias ? note.alias : Note.encodeNoteId(note.id)))
|
return res.redirect(config.serverURL + '/' + (note.alias ? note.alias : Note.encodeNoteId(note.id)))
|
||||||
}).catch(function (err) {
|
}).catch(function (err) {
|
||||||
logger.error(err);
|
logger.error(err)
|
||||||
return errors.errorInternalError(res)
|
return errors.errorInternalError(res)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getPublishData(req: any, res: Response, note: any, callback: (data: any) => void) {
|
export function getPublishData (req: any, res: Response, note: any, callback: (data: any) => void) {
|
||||||
const body = note.content;
|
const body = note.content
|
||||||
const extracted = Note.extractMeta(body);
|
const extracted = Note.extractMeta(body)
|
||||||
const markdown = extracted.markdown;
|
const markdown = extracted.markdown
|
||||||
const meta = Note.parseMeta(extracted.meta);
|
const meta = Note.parseMeta(extracted.meta)
|
||||||
const createtime = note.createdAt;
|
const createtime = note.createdAt
|
||||||
const updatetime = note.lastchangeAt;
|
const updatetime = note.lastchangeAt
|
||||||
let title = Note.decodeTitle(note.title);
|
let title = Note.decodeTitle(note.title)
|
||||||
title = Note.generateWebTitle(meta.title || title);
|
title = Note.generateWebTitle(meta.title || title)
|
||||||
const ogdata = Note.parseOpengraph(meta, title);
|
const ogdata = Note.parseOpengraph(meta, title)
|
||||||
const data = {
|
const data = {
|
||||||
title: title,
|
title: title,
|
||||||
description: meta.description || (markdown ? Note.generateDescription(markdown) : null),
|
description: meta.description || (markdown ? Note.generateDescription(markdown) : null),
|
||||||
|
@ -101,15 +100,14 @@ export module NoteUtils {
|
||||||
cspNonce: res.locals.nonce,
|
cspNonce: res.locals.nonce,
|
||||||
dnt: req.headers.dnt,
|
dnt: req.headers.dnt,
|
||||||
opengraph: ogdata
|
opengraph: ogdata
|
||||||
};
|
}
|
||||||
callback(data)
|
callback(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
function isRevealTheme(theme: string) {
|
function isRevealTheme (theme: string) {
|
||||||
if (fs.existsSync(path.join(__dirname, '..', '..', '..', 'public', 'build', 'reveal.js', 'css', 'theme', theme + '.css'))) {
|
if (fs.existsSync(path.join(__dirname, '..', '..', '..', 'public', 'build', 'reveal.js', 'css', 'theme', theme + '.css'))) {
|
||||||
return theme
|
return theme
|
||||||
}
|
}
|
||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
|
import { config } from '../config'
|
||||||
|
|
||||||
const Router = require('express').Router
|
const Router = require('express').Router
|
||||||
|
|
||||||
const errors = require('../errors')
|
const errors = require('../errors')
|
||||||
const realtime = require('../realtime')
|
const realtime = require('../realtime')
|
||||||
const config = require('../config')
|
|
||||||
const models = require('../models')
|
const models = require('../models')
|
||||||
const logger = require('../logger')
|
const logger = require('../logger')
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue