goodt-baselib-ts
TypeScript icon, indicating that this package has built-in type declarations

0.2.1 • Public • Published

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;

Readme

Keywords

none

Package Sidebar

Install

npm i goodt-baselib-ts

Weekly Downloads

3

Version

0.2.1

License

MIT

Unpacked Size

304 kB

Total Files

26

Last publish

Collaborators

  • darkair