goodt-baselib-ts
v0.2.1
Published
### ApiCache Abstract class for realizing caching in-code for HTTP requests on the client. Supports multiple concurrent access to the cached value via Promise.
Downloads
1
Readme
Usage
ApiCache
Abstract class for realizing caching in-code for HTTP requests on the client. Supports multiple concurrent access to the cached value via Promise.
All you need to do is call apiCache.getValue(name, Promise), and all your promises will get the value when it's loaded.
import {AbstractApiCache, CacheValue, CacheArrayValue, makeCacheValue, makeCacheArray} from 'goodt-baselib-ts';
interface Cache {
// Caching single value
prop1: CacheValue<string>,
prop2: CacheValue<number[]>,
// Caching array of specified values by unique keys
prop3: CacheArrayValue<string>,
prop4: CacheArrayValue<number[]>,
}
class ApiCache extends AbstractApiCache<Cache> {
protected cache: Record<keyof Cache, any> = {
prop1: makeCacheValue<string>(''),
prop2: makeCacheValue<number[]>([]),
prop3: makeCacheArray<string>(''),
prop4: makeCacheArray<number[]>([]),
};
}
const apiCache: ApiCache = new ApiCache();
export default apiCache;
In your code
// Single value
apiCache.getValue('prop1', async (): Promise<string> => {
return YOUR_VALUE;
})
// Value of array by UNIQ_KEY
apiCache.getArrayValue('prop4', UNIQ_KEY, async (): Promise<number[]> => {
return YOUR_VALUE;
})
ConfigService
Abstract class for working with JSON-file contains project properties
import {AbstractConfigService} from 'goodt-baselib-ts';
class ConfigService extends AbstractConfigService {
...
}
const configService: ConfigService = new ConfigService();
export default configService;
Inside your code
async configService.init('./properties.json');
configService.properties?.YOUR_PROP
ApiService
Abstract class for sending different http requests for HATEOAS.
import {AbstractApiHalService} from 'goodt-baselib-ts';
class ApiService extends AbstractApiHalService {
/**
* Return object with Authorization header
* e.g. { Authorization: 'Basic ...'}
*/
protected abstract get authHeaders(): ISettings;
/**
* Fetch proxy function
* Set manually to make easy the process of init
*/
protected fetchProxy: FetchProxy = (url: string, init: RequestInit): Promise<Response> => fetch(url, init);
/**
* Проверить состояние авторизации
*/
abstract checkIsAuthorized(customToken: string): Promise<boolean>;
}
const apiService: ApiService = new ApiService();
export default apiService;