singl 🗝
A tiny utility library with ts + batteries included to easily create singletons in JavaScript
Usage
They say an example is worth more than 100 words 😉
Async
import { singletonAsync } from 'singl'
import mongoose from 'mongoose'
export const connection = singletonAsync<typeof mongoose>(
async () => {
const instance = await mongoose.connect(
'mongodb://some-arbitary-connection-uri:27017/test',
{
useNewUrlParser: true,
useUnifiedTopology: true
}
)
return instance
},
async instance => !instance.connection
)
Sync
import { singleton } from 'singl'
import Redis from 'ioredis'
export const redis = singleton<Redis.Redis>(
() => {
return new Redis()
},
instance => instance.status === 'connected'
)