Skip to content

gallolabs/application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gallo App

A nodejs light framework to frame your work

Application runner:

  • Easy Dependencies injection
  • Kill signal catched and converted to abortSignal
  • Structured
  • Built-in config (load from files, envs, validation, watches, etc) and logger

[ ] Refactorize aborts, with aborts to interrupt, aborts to stop/clean, etc

import { runApp } from '@gallofeliz/application'

// ...

runApp<Config>({
    name: '@gallofeliz/Pikatchu',
    config: {
        watchChanges: true,
        userProvidedConfigSchema: tsToJsSchema<UserConfig>()
    },
    services: {
        userService({logger, db}): UserService {
            return new UserService(logger, db)
        },
        db({config, configWatcher}): Db {
            const db = new Db(config.dbPath)

            configWatcher.on('change:dbPath', ({value}) => db.setPath(value as string))

            return db
        }
    },
    async run({userService, logger, abortSignal, abortController}) {
        userService.doAJob()
        let st: NodeJS.Timeout

        abortSignal.addEventListener('abort', () => {
            clearTimeout(st)
            console.log('clean')
            userService.clean()
            resolve(undefined)
        })

        await new Promise(resolve => st = setTimeout(resolve, 5000))

        abortController.abort()
    }
})

About

A nodejs light framework to frame your work

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published