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
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
Note
If using TypeScript
, you might need to enable compilerOptions.experimentalDecorators
in tsconfig.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
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).
MIT © Mitscherlich