@zajno/common 2.0.10 → 2.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,13 @@
1
1
  import type { IDisposable } from '../functions/disposer';
2
2
  export declare class Lazy<T> implements IDisposable {
3
3
  protected readonly _factory: (() => T);
4
+ protected readonly _disposer?: (prev: T) => void;
4
5
  protected _instance: T;
5
- constructor(_factory: (() => T));
6
+ constructor(_factory: (() => T), _disposer?: (prev: T) => void);
6
7
  get hasValue(): boolean;
7
8
  get value(): T;
9
+ /** Override me: additional way to make sure instance is valid */
10
+ protected get isValid(): boolean;
8
11
  private ensureInstance;
9
12
  prewarm(): this;
10
13
  reset(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/lazy/singleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,qBAAa,IAAI,CAAC,CAAC,CAAE,YAAW,WAAW;IAI3B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IAFlD,SAAS,CAAC,SAAS,EAAE,CAAC,CAAQ;gBAEC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IAElD,IAAI,QAAQ,YAAsC;IAElD,IAAI,KAAK,MAGR;IAED,OAAO,CAAC,cAAc;IAMtB,OAAO;IAKP,KAAK;IAIL,OAAO;CACV"}
1
+ {"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/lazy/singleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,qBAAa,IAAI,CAAC,CAAC,CAAE,YAAW,WAAW;IAKnC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI;IAJpD,SAAS,CAAC,SAAS,EAAE,CAAC,CAAQ;gBAGP,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EACnB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI;IAKpD,IAAI,QAAQ,YAAsC;IAElD,IAAI,KAAK,MAGR;IAED,iEAAiE;IACjE,SAAS,KAAK,OAAO,YAA4B;IAEjD,OAAO,CAAC,cAAc;IAUtB,OAAO;IAKP,KAAK;IAOL,OAAO;CACV"}
package/lazy/singleton.js CHANGED
@@ -2,8 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Lazy = void 0;
4
4
  class Lazy {
5
- constructor(_factory) {
5
+ constructor(_factory, _disposer) {
6
6
  this._factory = _factory;
7
+ this._disposer = _disposer;
7
8
  this._instance = null;
8
9
  }
9
10
  get hasValue() { return this._instance !== null; }
@@ -11,16 +12,24 @@ class Lazy {
11
12
  this.ensureInstance();
12
13
  return this._instance;
13
14
  }
15
+ /** Override me: additional way to make sure instance is valid */
16
+ get isValid() { return this.hasValue; }
14
17
  ensureInstance() {
15
- if (this._instance === null) {
16
- this._instance = this._factory();
18
+ if (this.isValid) {
19
+ return;
17
20
  }
21
+ // additional reset to make sure previous instance has been disposed
22
+ this.reset();
23
+ this._instance = this._factory();
18
24
  }
19
25
  prewarm() {
20
26
  this.ensureInstance();
21
27
  return this;
22
28
  }
23
29
  reset() {
30
+ if (this.hasValue && this._disposer) {
31
+ this._disposer(this._instance);
32
+ }
24
33
  this._instance = null;
25
34
  }
26
35
  dispose() { this.reset(); }
@@ -1 +1 @@
1
- {"version":3,"file":"singleton.js","sourceRoot":"","sources":["../../src/lazy/singleton.ts"],"names":[],"mappings":";;;AAEA,MAAa,IAAI;IAIb,YAA+B,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;QAFxC,cAAS,GAAM,IAAI,CAAC;IAEwB,CAAC;IAEvD,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC;IAElD,IAAI,KAAK;QACL,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEO,cAAc;QAClB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;SACpC;IACL,CAAC;IAED,OAAO;QACH,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC9B;AA7BD,oBA6BC"}
1
+ {"version":3,"file":"singleton.js","sourceRoot":"","sources":["../../src/lazy/singleton.ts"],"names":[],"mappings":";;;AAEA,MAAa,IAAI;IAIb,YACuB,QAAmB,EACnB,SAA6B;QAD7B,aAAQ,GAAR,QAAQ,CAAW;QACnB,cAAS,GAAT,SAAS,CAAoB;QAJ1C,cAAS,GAAM,IAAI,CAAC;IAO9B,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC;IAElD,IAAI,KAAK;QACL,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,iEAAiE;IACjE,IAAc,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEzC,cAAc;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,OAAO;SACV;QAED,oEAAoE;QACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAClC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC9B;AA5CD,oBA4CC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zajno/common",
3
- "version": "2.0.10",
3
+ "version": "2.0.11",
4
4
  "description": "Zajno's re-usable utilities for JS/TS projects",
5
5
  "repository": {
6
6
  "type": "git",