1.0.0 • Published 3 years ago
jsn6-core v1.0.0
jsn6-core
Core functions
Example
Load config from ENV
@Startup('config') // Init when startup then store data in global.config
@BaseConfig('.env') // Load from .env file
export class AppConfig {
name = 'profile'
NODE_ENV = 'development'
host = '0.0.0.0'
port = 3001
grpcPort = 5001
logger = {
maxRequestExecutionTime: 3000,
maxExecutionTime: 1000,
level: 'error',
onlyLevel: '', // Only show some log level
}
redis = {
keyPrefix: 'user',
uri: 'redis://127.0.0.1:6379',
}
}
export const config = global['config']
Logger
- Base on
winston
@Startup('logger.logger')
export class AppLogger extends Logger {
constructor() {
super({
sentryDSN: '',
level: 'debug',
onlyLevel: '', // Only show some log level
})
}
}
export const logger = global['logger']
logger.error(new Error('Error now'))
logger.info('Done')
logger.warn('Warning')
logger.debug('Debug here')
Worker
import { rabbit, redis } from '@/global';
import { Startup } from 'jsn6-core/dist/core/Startup';
import { Worker } from 'jsn6-core/dist/worker';
@Startup('worker.start')
export class MyWorker extends Worker {
async onInit() {
// Init worker
}
async isAvailable() {
// Check worker is live or dead
}
async onStart() {
// Do something here
}
async onDispose() {
// Execute this when something error then crash app
}
}
Validation
import { Schema, assert } from 'jsn6-core/dist/validator/Assert'
@Schema('insert', {
id: 'number|convert',
name: 'string|notEmpty',
age: 'number|convert|optional'
})
export class UserModel {
id: number
name: string
age: number
}
assert(UserModel, 'insert', {
id: 1,
age: 'abc'
})
// Expected: Throw error age must be number and name is requried
1.0.0
3 years ago