# @huz-com/callback

> Base config

Latest version **1.0.36** (published 2021-11-29) · ISC license · 0 weekly downloads

## Install

```sh
npm install @huz-com/callback
pnpm add @huz-com/callback
yarn add @huz-com/callback
bun add @huz-com/callback
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.36 |
| Published | 2021-11-29 |
| First published | 2021-03-12 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 113.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Mustafa Yelmer |
| Maintainers | demiremrece, mustafayelmer, e.buyuk |
| Keywords | Logger, Log Driven Development, LDD |

## Links

- npm: https://www.npmjs.com/package/@huz-com/callback
- Repository: git@gitlab.azerdev.com:huz.byorbit/be/component/callback
- npm.io page: https://npm.io/package/@huz-com/callback

## Dependencies (4)

- [@huz-com/types](https://npm.io/package/@huz-com/types.md) ^1.0.3
- [@huz-com/config](https://npm.io/package/@huz-com/config.md) ^1.0.3
- [@huz-com/primitive](https://npm.io/package/@huz-com/primitive.md) ^1.0.3
- [@huz-com/error-core](https://npm.io/package/@huz-com/error-core.md) ^1.0.12

## Alternatives

- [cli-color](https://npm.io/package/cli-color.md) — 3.4M weekly downloads
- [log](https://npm.io/package/log.md) — 1.3M weekly downloads
- [@luma.gl/experimental](https://npm.io/package/@luma.gl/experimental.md) — 77.1K weekly downloads
- [logstash-client](https://npm.io/package/logstash-client.md) — 4.5K weekly downloads
- [@nocobase/plugin-logger](https://npm.io/package/@nocobase/plugin-logger.md) — 2.0K weekly downloads

## Recent versions

- 1.0.36 (latest) — 2021-11-29
- 1.0.35 — 2021-11-29
- 1.0.34 — 2021-06-30
- 1.0.33 — 2021-06-30
- 1.0.32 — 2021-06-30
- 1.0.31 — 2021-05-08
- 1.0.30 — 2021-05-08
- 1.0.29 — 2021-05-07
- 1.0.28 — 2021-05-07
- 1.0.27 — 2021-05-07
- 1.0.26 — 2021-05-07
- 1.0.25 — 2021-05-07
- 1.0.24 — 2021-05-07
- 1.0.23 — 2021-05-07
- 1.0.22 — 2021-05-06
- … 19 more at https://npm.io/package/@huz-com/callback/versions

## 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](./test/Callback.spec.ts)
- Standards Complied: [Huz Standards](https://gitlab.azerdev.com/huz.byorbit/be/documentation/standards)

## Commands
- ``npm run clear`` *// clears "dist" folder*
- ``npm run lint`` *// runs eslint for static code analysis*
- ``npm run test`` *// runs test files in "test" folder*
- ``npm run build`` *// builds JS files at "dist" folder*
- ``npm publish`` *or* ``npm run publix`` *// publishes "dist" folder to npm*

## Install
``npm i @huz-com/callback``

## For Context
````javascript
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
````javascript
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
````javascript
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
````javascript
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
````

---
_Source: https://npm.io/package/@huz-com/callback · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
