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.
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],
});
Module that adds implementation for the commandLineRunner and defines default command lines
This module logs with id command:command-line-runner
Adds state-manager
Implements action system
This module logs with id action:action-page-runner
Add providers that works with cookie. See docs
Implements work with environment variables both on server and client. See docs
Provides PubSub interface to implement communication between components. See docs
This modules logs with id pubsub
Module for logging. Uses @tramvai/module-log
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
Wrapper for the client request
Wrapper for the client response
import { provide } from '@tramvai/core';
export const providers = [
provide({
provide: MY_MODULE_PROVIDER_FACTORY,
scope: Scope.SINGLETON,
useFactory: ({ createCache }) => {
const cache = createCache('memory', ...args); // type of the cache and any additional options that will be passed to the cache constructor
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(); // clear caches explicitly
};
},
deps: {
clearCache: CLEAR_CACHE_TOKEN,
},
}),
];