@huz-com/callback
v1.0.36
Published
Base config
Downloads
35
Maintainers
Readme
Huz.Com > Component > Callback
- General callback storage for basic, context, name, pair, entity and route
- Provides central/easy routing append
Standards
- Language:
TS
- Eslint:
Yes
- Static Code Analysis:
Yes
IntelliJ Code Inspections - DDD - Document Driven:
Yes
- EDD - Exception Driven:
Yes
- TDD - Test Driven:
Yes
go to test folder - Standards Complied: Huz Standards
Commands
npm run clear
// clears "dist" foldernpm run lint
// runs eslint for static code analysisnpm run test
// runs test files in "test" foldernpm run build
// builds JS files at "dist" foldernpm publish
ornpm run publix
// publishes "dist" folder to npm
Install
npm i @huz-com/callback
For Context
const {callback} = require('@huz-com/callback');
// default language for your platform, it based on request or constant
callback.context.add('defaultLanguage', (req) => {return 'tr'});
// current profile language for your platform, it based on request or constant
callback.context.add('currentLanguage', (req) => {return 'tr'});
// and .. whatever
For Entity & Enums
const {callback} = require('@huz-com/callback');
class GameService {
constructor () {
// in order to call as callback or function reference
this.findNameAsync = this.findNameAsync.bind(this);
this.findNameListAsync = this.findNameListAsync.bind(this);
this.findPairAsync = this.findPairAsync.bind(this);
this.findDocAsync = this.findDocAsync.bind(this);
this.route = this.route.bind(this);
callback.namer.add('Game', this.findNameAsync, this.findNameListAsync);
callback.pair.add('Game', this.findPairAsync, null);
callback.doc.add('Game', this.findDocAsync, null);
callback.route.add('Game', this.route);
}
/**
* @param {string} id
* @param {?Record<string, any>} opt
* @param {?Req} req
* @returns {Promise<string>}
*/
async findNameAsync(id, opt = null, req = null) {
// your own code which returns name of entity
return 'Game-' + id;
}
/**
* @param {Array<string>} ids
* @param {?Record<string, any>} opt
* @param {?Req} req
* @returns {Promise<Array<string>>}
*/
async findNameListAsync(ids, opt = null, req = null) {
// your own code which return name of entities
return ['Game-1', 'Game-2'];
}
/**
* @param {string} id
* @param {?Record<string, any>} opt
* @param {?Req} req
* @returns {Promise<{id: string, name: string}>}
*/
async findPairAsync(id, opt = null, req = null) {
// your own code which returns pair of entity
return {id, name: 'Game-' + id};
}
/**
* @param {string} id
* @param {?Record<string, any>} opt
* @param {?Req} req
* @returns {Promise<{id: string, name: string, description: string}>}
*/
async findDocAsync(id, opt = null, req = null) {
// your own code which returns record of entity
return {id, name: 'Game-' + id, description: ''};
}
route(router) {
// your custom router
}
}
At Route Initializing
Append all routes to Express route
const {callback} = require('@huz-com/callback');
callback.route.build(router);
At Runtime
Anywhere in your project Supports loosely-coupled architecture, so you don't import Game or Context components
const {callback} = require('@huz-com/callback');
// express's request object
const req = null;
await callback.namer.findAsync('Game', 101, null, req); // returns name of game with id 101
await callback.namer.findListAsync('Game', [101, 102], null, req); // returns name of games with id 101 and 102
await callback.pair.findAsync('Game', 101, null, req); // returns pair of game with id 101
await callback.doc.findAsync('Game', 101, null, req); // returns doc of game with id 101
callback.context.run('currentLanguage', req) // returns profile's language