@m9ch/make-class-singleton
v0.1.0
Published
Convert ES-Class into Singleton
Downloads
1
Readme
@m9ch/make-class-singleton
Install
via pnpm
, yarn
or npm
:
pnpm add @m9ch/make-class-singleton
# or
yarn add @m9ch/make-class-singleton
# or
npm i -S @m9ch/make-class-singleton
Usage
Use as factory function:
import { Singleton as makeSingleton } from '@m9ch/make-class-singleton'
class Foo {}
const Singleton = makeSingleton(Foo)
const foo = new Singleton()
const bar = new Singleton()
console.log(foo === bar) // true
Use as ClassDecorator
[!NOTE] If using
TypeScript
, you might need to enablecompilerOptions.experimentalDecorators
intsconfig.json
or something like that.Here is an example:
{ "compilerOptions": { "target": "esnext", "module": "esnext", "modeResolution": "node", "experimentalDecorators": true } }
import { Singleton } from '@m9ch/make-class-singleton'
@Singleton
class Foo {}
const foo = new Foo()
const bar = new Foo()
console.log(foo === bar) // true
Options
container
: Where singleton instance should create and stored, default is aWeakMap
object in this module.
[!Note] It might be unsafe if using default instance container in multi-thread environment, such as nodejs in swarm mode, or
WebWorker
.By passing a thread shared
WeakMap
object may save (not verified).
License
MIT © Mitscherlich