Common
Base module consisted of the architectural blocks for typical tramvai app. This module is required at most cases and is used a lot by the other modules.
Installation
First install @tramvai/module-common
npm i @tramvai/module-common
Add CommonModule to the modules list
import { createApp } from '@tramvai/core';
import { CommonModule } from '@tramvai/module-common';
createApp({
modules: [CommonModule],
});
Explanation
Submodules
CommandModule
Module that adds implementation for the commandLineRunner and defines default command lines
This module logs with id command:command-line-runner
StateModule
Adds state-manager
ActionModule
Implements action system
This module logs with id action:action-page-runner
CookieModule
Add providers that works with cookie. See docs
EnvironmentModule
Implements work with environment variables both on server and client. See docs
PubSub
Provides PubSub interface to implement communication between components. See docs
This modules logs with id pubsub
LogModule
Module for logging. Uses @tramvai/module-log
CacheModule
Module that implements caches.
It provides next functionality:
- create new cache instance (currently it will be instance of lru-cache)
- clear all of the previously create caches
- subscribe on cache clearance event to execute own cache clearance actions
- adds papi-route
/clear-cache
that will trigger caches clear event
This modules logs wit id cache:papi-clear-cache
RequestManagerModule
Wrapper for the client request
ResponseManagerModule
Wrapper for the client response
How to
Create cache
import { provide } from '@tramvai/core';
export const providers = [
provide({
provide: MY_MODULE_PROVIDER_FACTORY,
scope: Scope.SINGLETON,
useFactory: ({ createCache }) => {
const cache = createCache('memory', ...args);
return someFactory({ cache });
},
deps: {
createCache: CREATE_CACHE_TOKEN,
},
}),
provide({
provide: REGISTER_CLEAR_CACHE_TOKEN,
scope: Scope.SINGLETON,
useFactory: ({ cache }) => {
return async () => {
await cache.reset();
console.log('my module cache cleared');
};
},
deps: {
cache: MY_MODULE_CACHE,
},
}),
provide({
provide: commandLineListTokens.clear,
useFactory: ({ clearCache }) => {
return function clear() {
clearCache();
};
},
deps: {
clearCache: CLEAR_CACHE_TOKEN,
},
}),
];
Exported tokens