Code files

This commit is contained in:
Akhil
2017-07-31 11:33:31 +05:30
parent 073a63ebdd
commit b9ae409ec0
801 changed files with 17535 additions and 0 deletions
@@ -0,0 +1,61 @@
const Koa = require('koa')
const helmet = require('koa-helmet')
const app = new Koa()
const router = require('koa-router')()
const views = require('koa-views')
const co = require('co')
const json = require('koa-json')
const onerror = require('koa-onerror')
const bodyparser = require('koa-bodyparser')
const serve = require('koa-static')
const path = require('path')
const log4js = require('koa-log4')
const logger = log4js.getLogger('app')
const index = require('./routes/index')
const users = require('./routes/users')
// middlewares
app.use(helmet())
app.use(bodyparser())
app.use(json())
app.use(log4js.koaLogger(log4js.getLogger('http'), { level: 'auto' }))
app.use(serve(path.join(__dirname, 'public')))
// handle error
onerror(app)
// setup view
app.use(views(path.join(__dirname, 'views'), {
extension: 'jade'
}))
// logger
// app.use(async (ctx, next) => {
// const start = new Date()
// await next()
// const ms = new Date() - start
// logger.info(`${ctx.method} ${ctx.url} - ${ms}ms`)
// })
app.use(co.wrap(function * (ctx, next) {
const start = new Date()
yield next()
const ms = new Date() - start
logger.info(`${ctx.method} ${ctx.url} - ${ms}ms`)
}))
// routes definition
router.use('/', index.routes(), index.allowedMethods())
router.use('/users', users.routes(), users.allowedMethods())
// mount root routes
app.use(router.routes())
.use(router.allowedMethods())
// log error
app.on('error', function (err, ctx) {
logger.error(err)
logger.error('server error', err, ctx)
})
module.exports = app
@@ -0,0 +1,106 @@
#!/usr/bin/env node
/**
* Module dependencies.
*/
const app = require('../app')
const http = require('http')
const path = require('path')
const appDir = path.resolve(__dirname, '..')
const logDir = path.join(appDir, 'logs')
/**
* make a log directory, just in case it isn't there.
*/
try {
require('fs').mkdirSync(logDir)
} catch (e) {
if (e.code !== 'EEXIST') {
console.error('Could not set up log directory, error was: ', e)
process.exit(1)
}
}
const log4js = require('koa-log4')
log4js.configure(path.join(appDir, 'log4js.json'), { cwd: logDir })
const logger = log4js.getLogger('startup')
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000')
// app.set('port', port)
/**
* Create HTTP server.
*/
var server = http.createServer(app.callback())
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port)
server.on('error', onError)
server.on('listening', onListening)
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort (val) {
var port = parseInt(val, 10)
if (isNaN(port)) {
// named pipe
return val
}
if (port >= 0) {
// port number
return port
}
return false
}
/**
* Event listener for HTTP server "error" event.
*/
function onError (error) {
if (error.syscall !== 'listen') {
throw error
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
logger.error(bind + ' requires elevated privileges')
process.exit(1)
break
case 'EADDRINUSE':
logger.error(bind + ' is already in use')
process.exit(1)
break
default:
throw error
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening () {
var addr = server.address()
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port
logger.info('Listening on ' + bind)
}
@@ -0,0 +1,66 @@
var gulp = require('gulp')
var nodemon = require('gulp-nodemon')
var sourcemaps = require('gulp-sourcemaps')
var concat = require('gulp-concat')
var uglify = require('gulp-uglify')
var cssmin = require('gulp-cssmin')
var del = require('del')
var path = require('path')
var client = {
js: {
src: 'client/js',
dest: 'public/js'
},
css: {
src: 'client/css',
dest: 'public/css'
}
}
gulp.task('default', ['jsmin', 'cssmin', 'start'])
gulp.task('start', function () {
nodemon({
script: 'bin/www',
ext: 'js css ejs',
ignore: ['public', 'logs'],
tasks: function (files) {
var tasks = []
files.forEach(function (file) {
if (path.relative(client.js.src, file).substr(0, 2) !== '..'
&& !~tasks.indexOf('jsmin')) {
tasks.push('jsmin')
}
if (path.relative(client.css.src, file).substr(0, 2) !== '..'
&& !~tasks.indexOf('cssmin')) {
tasks.push('cssmin')
}
})
return tasks
}
})
})
gulp.task('cleanjs', function () {
return del([client.js.dest])
})
gulp.task('cleancss', function () {
return del([client.css.dest])
})
gulp.task('jsmin', ['cleanjs'], function () {
return gulp.src(client.js.src + '/**/*.js')
.pipe(sourcemaps.init())
.pipe(concat('graph.js'))
.pipe(uglify())
.pipe(gulp.dest(client.js.dest))
})
gulp.task('cssmin', ['cleancss'], function () {
return gulp.src(client.css.src + '/**/*.css')
.pipe(concat('style.css'))
.pipe(cssmin())
.pipe(gulp.dest(client.css.dest))
})
@@ -0,0 +1,38 @@
{
"appenders": [
{
"type": "console"
},
{
"type": "clustered",
"appenders": [
{
"type": "dateFile",
"filename": "startup.log",
"pattern": "-yyyy-MM-dd",
"category": "startup"
},
{
"type": "dateFile",
"filename": "http.log",
"pattern": "-yyyy-MM-dd",
"category": "http"
},
{
"type": "file",
"filename": "app.log",
"maxLogSize": 10485760,
"numBackups": 5
},
{
"type": "logLevelFilter",
"level": "ERROR",
"appender": {
"type": "file",
"filename": "errors.log"
}
}
]
}
]
}
@@ -0,0 +1,31 @@
{
"name": "koa-app",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www",
"test": "gulp"
},
"dependencies": {
"co": "^4.6.0",
"jade": "~1.11.0",
"koa": "^2.0.0",
"koa-bodyparser": "^3.0.0",
"koa-helmet": "^3.1.0",
"koa-json": "^2.0.0",
"koa-log4": "^2.0.1",
"koa-onerror": "^1.2.1",
"koa-router": "^7.0.0",
"koa-static": "^3.0.0",
"koa-views": "^5.0.1"
},
"devDependencies": {
"del": "^2.2.0",
"gulp": "^3.9.1",
"gulp-concat": "^2.6.0",
"gulp-cssmin": "^0.1.7",
"gulp-nodemon": "^2.0.6",
"gulp-sourcemaps": "^1.6.0",
"gulp-uglify": "^1.5.3"
}
}
@@ -0,0 +1,8 @@
body {
padding: 50px;
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
}
a {
color: #00B7FF;
}
@@ -0,0 +1,19 @@
const co = require('co')
const router = require('koa-router')()
router.get('/', co.wrap(function *(ctx, next) {
ctx.state = {
title: 'Welcome to Koa'
}
yield ctx.render('index', {})
}))
// router.get('/', async function (ctx, next) {
// ctx.state = {
// title: 'koa2 title'
// }
//
// await ctx.render('index', {
// })
// })
module.exports = router
@@ -0,0 +1,7 @@
const router = require('koa-router')()
router.get('/', function (ctx, next) {
ctx.body = 'this a users response!'
})
module.exports = router
@@ -0,0 +1,6 @@
extends layout
block content
h1= message
h2= error.status
pre #{error.stack}
@@ -0,0 +1,5 @@
extends layout
block content
h1= title
p Welcome to #{title}
@@ -0,0 +1,7 @@
doctype html
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
body
block content