typewield
v0.3.3
Published
Decorators for typescript
Downloads
6
Maintainers
Readme
How to use
npm i typewield
@Logger
import { Logger } from 'typewield'
class TestDecorator {
@Logger
logging(value: string, num: number) {
// doing something...
return 'returning something'
}
}
new TestDecorator().logging('Hello', 2023)
[INFO] [INPUT] [logging] [ 'Hello', 2023 ]
[INFO] [OUTPUT] [logging] returning something
@Cache
import { Cache } from 'typewield'
class CacheDecorator {
@Cache
run(value: string, num: number) {
return {value, num}
}
}
const message = 'cache'
// first try the cache will be save
const resultNoCache = new CacheDecorator().run(message, 10);
// second try the return will come from the cache
const resultWithCache = new CacheDecorator().run(message, 10);
console.log(resultNoCache)
console.log(resultWithCache)
// the cache will be expired each 30 seconds by default
@CacheParam
import { CacheParam } from 'typewield'
class CacheParamDecorator {
// expire: time in milliseconds for the cache to expire. 30 seconds by default
// logger: displays in the console when data comes from the cache. false by default
// checkInterval: routine for cleaning all expired caches in milliseconds. 5 minuts by default
@CacheParam({ expire: 1000, logger: true, checkInterval: 30000 })
run(value: string, num: number) {
return {value, num}
}
}
const message = 'cache'
// first try the cache will be save
const resultNoCache = new CacheParamDecorator().run(message, 10);
// second try the return will come from the cache
const resultWithCache = new CacheParamDecorator().run(message, 10);
[INFO] [CACHE] [run] { data: { value: 'cache', num: 1 }, expireAt: 1674913252407 }
@HttpClient
import axios from 'axios'
const axiosInstance = axios.create({})
// if you dont use a axios instance this will be using fetch by default
@HttpClient({ axiosInstance, baseURL: 'http://localhost:3001' })
class HttpRequest {
// post request example
@PostRequest('/users')
async save(@Body data: any): Promise<any> {}
//get request example
@GetRequest('/users')
async findAll(): Promise<any> {}
// get using a param on url
@GetRequest('/users/:id')
async findById(@Param('id') myId: number): Promise<any> {}
// get ussing query string
@GetRequest('/users')
async findByQueryString(@Query query: any): Promise<any> {}
}
// others avilable decorators
// @PostRequest @GetRequest @PutRequest @DeleteRequest @HeadRequest
// @PurgeRequest @LinkRequest @UnlinkRequest @OptionsRequest @PatchRequest