open-index/open-npm huggingface dataset:
npm package: @submodule/client
Description: A client should be able to do `client('query', <corresponding request shape>)` and receive `Promise<corresponding response type>`
Latest version: 1.0.0

# @submodule/client

A client should be able to do `client('query', <corresponding request shape>)` and receive `Promise<corresponding response type>`

The shape we are looking for is simple, `RouteA | RouteB | RouteC` with each route having `routeName` to distinguise. The `routeName` will be used to feed `query`.
Once we have the shape, it is easy to build any client

Then there'll need to have series of helper to transform the collection of routes to the shape we expected

- Transform from `{ path1: module1, path2: module2 }` to `{ routeName: path1, routeModule: module1 } | { routeName: path2, routeModule: module2 }`
- From that shape, we'll need to figure out what is the Input type
- Then, we'll need to figure out what is the Output type

As such, the createClient will need
- type to extract Input
- type to extract Output
npm package: @submodule/helpers
Description: A collection of utilities pre-made functions for submodule ecosystem.
Latest version: 1.0.1

# submodule helpers

A collection of utilities pre-made functions for submodule ecosystem.

## Noteworthy mentions

### Main
main is a function to wrap around your common execution. Main function will also listen to node SIGINT and SIGTERM and will shutdown gracefully.

Use `main` and wrap as many executions as you want. On shutdown, all executions will be disposed (triggering the lifecycle event)

### Pino
[pino](https://github.com/pinojs/pino). A wrapper around pino. Easily share a premade configuration

Use `setLoggerConfig` to set the logger configuration.
Use `createLogger` to create a new logger. This logger will share the same configuration as the root logger.
npm package: @submodule/react
Description: make use of @submodule/core in react
Latest version: 1.4.1

# @submodule/react

Utitlize @submodule/core with react

## Try it out

[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/submodule-org/submodule-react/tree/main/examples/react)