@zajno/common 2.2.11 → 2.2.13

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.
@@ -8,7 +8,7 @@ export interface IDayIndex extends IWeekIndex {
8
8
  day: number;
9
9
  }
10
10
  /**
11
- * Helps with converting sequential index to zero-based month, week, day index.
11
+ * Helps with converting sequential index to 0- or 1-based month, week, day index.
12
12
  *
13
13
  * Allows to use any number of days per week, not just 7. Also one can set any number of weeks per month (but it will be used globally).
14
14
  *
@@ -18,18 +18,31 @@ export interface IDayIndex extends IWeekIndex {
18
18
  */
19
19
  export declare class CalendarIndex implements IDayIndex {
20
20
  readonly perWeek: number;
21
+ readonly base: 1 | 0;
21
22
  static WEEKS_PER_MONTH: number;
22
23
  /** sequential index */
23
24
  raw: number;
24
- constructor(perWeek?: number);
25
+ /**
26
+ * @param perWeek how many indexes allocated per week
27
+ * @param [base=0] 1 or 0 - determines base for all indexes (0 by default)
28
+ */
29
+ constructor(perWeek?: number, base?: 1 | 0);
25
30
  get perMonth(): number;
26
- /** zero-based month index based on `perWeek` property */
31
+ /** 1/0-based month index based on `perWeek` property */
27
32
  get month(): number;
28
- /** zero-based week index based on `perWeek` property */
29
- get week(): number;
30
33
  get fullWeek(): number;
34
+ /** 1/0-based week index based on `perWeek` property */
35
+ get week(): number;
31
36
  get day(): number;
32
37
  set(month: number, week?: number, day?: number): this;
33
38
  toIndex(): IDayIndex;
39
+ clone(): CalendarIndex;
34
40
  }
41
+ /** returns based (1/0) remainder of `value / div`
42
+ *
43
+ * Ex.: get day of week
44
+ */
45
+ export declare function basedRemainder(this: void, base: 1 | 0, value: number, div: number): number;
46
+ /** returns based (1/0) floor'ed of `value / div` */
47
+ export declare function basedFloor(this: void, base: 1 | 0, value: number, div: number): number;
35
48
  //# sourceMappingURL=calendarIndex.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendarIndex.d.ts","sourceRoot":"","sources":["../../src/dates/calendarIndex.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC3C,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAU,SAAQ,UAAU;IACzC,GAAG,EAAE,MAAM,CAAC;CACf;AAGD;;;;;;;;GAQG;AACH,qBAAa,aAAc,YAAW,SAAS;IAO/B,QAAQ,CAAC,OAAO,EAAE,MAAM;IALpC,MAAM,CAAC,eAAe,SAAK;IAE3B,uBAAuB;IAChB,GAAG,EAAE,MAAM,CAAK;gBAEF,OAAO,GAAE,MAAU;IAExC,IAAW,QAAQ,WAA2D;IAE9E,yDAAyD;IACzD,IAAW,KAAK,WAAmD;IAEnE,wDAAwD;IACxD,IAAW,IAAI,WAGd;IAED,IAAW,QAAQ,WAElB;IAED,IAAW,GAAG,WAEb;IAEM,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,EAAE,GAAG,GAAE,MAAU;IAKpD,OAAO,IAAI,SAAS;CAO9B"}
1
+ {"version":3,"file":"calendarIndex.d.ts","sourceRoot":"","sources":["../../src/dates/calendarIndex.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC3C,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAU,SAAQ,UAAU;IACzC,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,qBAAa,aAAc,YAAW,SAAS;IAW/B,QAAQ,CAAC,OAAO,EAAE,MAAM;IAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;IAT9D,MAAM,CAAC,eAAe,SAAK;IAE3B,uBAAuB;IAChB,GAAG,EAAE,MAAM,CAAK;IAEvB;;;OAGG;gBACkB,OAAO,GAAE,MAAU,EAAW,IAAI,GAAE,CAAC,GAAG,CAAK;IAElE,IAAW,QAAQ,WAA2D;IAE9E,wDAAwD;IACxD,IAAW,KAAK,WAMf;IAED,IAAW,QAAQ,WAMlB;IAED,uDAAuD;IACvD,IAAW,IAAI,WAOd;IAED,IAAW,GAAG,WAEb;IAEM,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,EAAE,GAAG,GAAE,MAAkB;IAOpE,OAAO,IAAI,SAAS;IAQpB,KAAK;CAKf;AAED;;;EAGE;AACF,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAEjF;AAED,oDAAoD;AACpD,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAE7E"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CalendarIndex = void 0;
3
+ exports.basedFloor = exports.basedRemainder = exports.CalendarIndex = void 0;
4
4
  /**
5
- * Helps with converting sequential index to zero-based month, week, day index.
5
+ * Helps with converting sequential index to 0- or 1-based month, week, day index.
6
6
  *
7
7
  * Allows to use any number of days per week, not just 7. Also one can set any number of weeks per month (but it will be used globally).
8
8
  *
@@ -12,28 +12,47 @@ exports.CalendarIndex = void 0;
12
12
  */
13
13
  class CalendarIndex {
14
14
  perWeek;
15
+ base;
15
16
  static WEEKS_PER_MONTH = 4;
16
17
  /** sequential index */
17
18
  raw = 0;
18
- constructor(perWeek = 7) {
19
+ /**
20
+ * @param perWeek how many indexes allocated per week
21
+ * @param [base=0] 1 or 0 - determines base for all indexes (0 by default)
22
+ */
23
+ constructor(perWeek = 7, base = 0) {
19
24
  this.perWeek = perWeek;
25
+ this.base = base;
20
26
  }
21
27
  get perMonth() { return this.perWeek * CalendarIndex.WEEKS_PER_MONTH; }
22
- /** zero-based month index based on `perWeek` property */
23
- get month() { return Math.floor(this.raw / this.perMonth); }
24
- /** zero-based week index based on `perWeek` property */
25
- get week() {
26
- const rest = this.raw % this.perMonth;
27
- return Math.floor(rest / this.perWeek);
28
+ /** 1/0-based month index based on `perWeek` property */
29
+ get month() {
30
+ if (this.raw <= 0) {
31
+ return 0;
32
+ }
33
+ return basedFloor(this.base, this.raw, this.perMonth);
28
34
  }
29
35
  get fullWeek() {
30
- return Math.floor(this.raw / this.perWeek);
36
+ if (this.raw <= 0) {
37
+ return 0;
38
+ }
39
+ return basedFloor(this.base, this.raw, this.perWeek);
40
+ }
41
+ /** 1/0-based week index based on `perWeek` property */
42
+ get week() {
43
+ const fw = this.fullWeek;
44
+ if (fw === 0) {
45
+ return 0;
46
+ }
47
+ return basedRemainder(this.base, fw, CalendarIndex.WEEKS_PER_MONTH);
31
48
  }
32
49
  get day() {
33
- return this.raw % this.perWeek;
50
+ return basedRemainder(this.base, this.raw, this.perWeek);
34
51
  }
35
- set(month, week = 0, day = 0) {
36
- this.raw = month * this.perMonth + week * this.perWeek + day;
52
+ set(month, week = this.base, day = this.base) {
53
+ const m = Math.max(month - this.base, 0);
54
+ const w = Math.max(week - this.base, 0);
55
+ this.raw = m * this.perMonth + w * this.perWeek + day;
37
56
  return this;
38
57
  }
39
58
  toIndex() {
@@ -43,6 +62,24 @@ class CalendarIndex {
43
62
  day: this.day,
44
63
  };
45
64
  }
65
+ clone() {
66
+ const res = new CalendarIndex(this.perWeek, this.base);
67
+ res.raw = this.raw;
68
+ return res;
69
+ }
46
70
  }
47
71
  exports.CalendarIndex = CalendarIndex;
72
+ /** returns based (1/0) remainder of `value / div`
73
+ *
74
+ * Ex.: get day of week
75
+ */
76
+ function basedRemainder(base, value, div) {
77
+ return (value - base) % div + base;
78
+ }
79
+ exports.basedRemainder = basedRemainder;
80
+ /** returns based (1/0) floor'ed of `value / div` */
81
+ function basedFloor(base, value, div) {
82
+ return Math.floor((value - base) / div) + base;
83
+ }
84
+ exports.basedFloor = basedFloor;
48
85
  //# sourceMappingURL=calendarIndex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendarIndex.js","sourceRoot":"","sources":["../../src/dates/calendarIndex.ts"],"names":[],"mappings":";;;AAcA;;;;;;;;GAQG;AACH,MAAa,aAAa;IAOD;IALrB,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC;IAE3B,uBAAuB;IAChB,GAAG,GAAW,CAAC,CAAC;IAEvB,YAAqB,UAAkB,CAAC;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAI,CAAC;IAE7C,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;IAE9E,yDAAyD;IACzD,IAAW,KAAK,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEnE,wDAAwD;IACxD,IAAW,IAAI;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,IAAW,GAAG;QACV,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;IACnC,CAAC;IAEM,GAAG,CAAC,KAAa,EAAE,OAAe,CAAC,EAAE,MAAc,CAAC;QACvD,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QAC7D,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,OAAO;QACV,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;SAChB,CAAC;IACN,CAAC;;AAvCL,sCAwCC"}
1
+ {"version":3,"file":"calendarIndex.js","sourceRoot":"","sources":["../../src/dates/calendarIndex.ts"],"names":[],"mappings":"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"}
package/lazy/promise.d.ts CHANGED
@@ -16,7 +16,7 @@ export declare class LazyPromise<T> implements IDisposable, LazyLight<T>, ILazyP
16
16
  get promise(): Promise<T>;
17
17
  get value(): NonNullable<T>;
18
18
  protected ensureInstanceLoading(): void;
19
- private setInstance;
19
+ setInstance: (res: T | undefined) => T | undefined;
20
20
  reset: () => void;
21
21
  dispose: () => void;
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../src/lazy/promise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAChC,CAAC;AAEF,qBAAa,WAAW,CAAC,CAAC,CAAE,YAAW,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;IAQzE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP5B,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,KAAK,CAAwB;IAErC,OAAO,CAAC,QAAQ,CAA2B;gBAGtB,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE,CAAC,GAAG,SAAqB;IAKvD,IAAI,IAAI,YAAkC;IAC1C,IAAI,QAAQ,YAAmC;IAE/C,IAAI,OAAO,eAGV;IAED,IAAI,KAAK,mBAGR;IAED,SAAS,CAAC,qBAAqB;IAO/B,OAAO,CAAC,WAAW,CAMjB;IAEF,KAAK,aAIH;IAEF,OAAO,aAAsB;CAChC"}
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../src/lazy/promise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAChC,CAAC;AAEF,qBAAa,WAAW,CAAC,CAAC,CAAE,YAAW,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;IAQzE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP5B,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,KAAK,CAAwB;IAErC,OAAO,CAAC,QAAQ,CAA2B;gBAGtB,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE,CAAC,GAAG,SAAqB;IAKvD,IAAI,IAAI,YAAkC;IAC1C,IAAI,QAAQ,YAAmC;IAE/C,IAAI,OAAO,eAGV;IAED,IAAI,KAAK,mBAGR;IAED,SAAS,CAAC,qBAAqB;IAcxB,WAAW,QAAS,CAAC,GAAG,SAAS,mBAMtC;IAEF,KAAK,aAIH;IAEF,OAAO,aAAsB;CAChC"}
package/lazy/promise.js CHANGED
@@ -25,12 +25,19 @@ class LazyPromise {
25
25
  ensureInstanceLoading() {
26
26
  if (this._busy === null) {
27
27
  this._busy = true;
28
- this._promise = this._factory().then(this.setInstance);
28
+ this._promise = this._factory().then(v => {
29
+ // case: during the promise `setInstance` was called
30
+ if (!this._busy && this._instance !== undefined) {
31
+ return this._instance;
32
+ }
33
+ this.setInstance(v);
34
+ return v;
35
+ });
29
36
  }
30
37
  }
31
38
  setInstance = (res) => {
32
39
  this._busy = false;
33
- this._instance = res || undefined;
40
+ this._instance = res;
34
41
  // keep this._promise to allow to re-use it outside
35
42
  return res;
36
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/lazy/promise.ts"],"names":[],"mappings":";;;AAQA,MAAa,WAAW;IAQC;IACA;IAPb,SAAS,GAAkB,SAAS,CAAC;IACrC,KAAK,GAAmB,IAAI,CAAC;IAE7B,QAAQ,GAAsB,IAAI,CAAC;IAE3C,YACqB,QAA0B,EAC1B,UAAyB,SAAS;QADlC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,YAAO,GAAP,OAAO,CAA2B;QAEnD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IAC1C,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;IAE/C,IAAI,OAAO;QACP,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,QAAS,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACL,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,SAAU,CAAC;IAC3B,CAAC;IAES,qBAAqB;QAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAEO,WAAW,GAAG,CAAC,GAAM,EAAE,EAAE;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,SAAS,CAAC;QAClC,mDAAmD;QAEnD,OAAO,GAAG,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,GAAG,GAAG,EAAE;QACT,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;CAChC;AAjDD,kCAiDC"}
1
+ {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/lazy/promise.ts"],"names":[],"mappings":";;;AAQA,MAAa,WAAW;IAQC;IACA;IAPb,SAAS,GAAkB,SAAS,CAAC;IACrC,KAAK,GAAmB,IAAI,CAAC;IAE7B,QAAQ,GAAsB,IAAI,CAAC;IAE3C,YACqB,QAA0B,EAC1B,UAAyB,SAAS;QADlC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,YAAO,GAAP,OAAO,CAA2B;QAEnD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IAC1C,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;IAE/C,IAAI,OAAO;QACP,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,QAAS,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACL,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,SAAU,CAAC;IAC3B,CAAC;IAES,qBAAqB;QAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBACrC,oDAAoD;gBACpD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC9C,OAAO,IAAI,CAAC,SAAS,CAAC;gBAC1B,CAAC;gBACD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACpB,OAAO,CAAC,CAAC;YACb,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEM,WAAW,GAAG,CAAC,GAAkB,EAAE,EAAE;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,mDAAmD;QAEnD,OAAO,GAAG,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,GAAG,GAAG,EAAE;QACT,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;CAChC;AAxDD,kCAwDC"}
@@ -11,6 +11,7 @@ export declare class Lazy<T> implements IDisposable, LazyLight<T> {
11
11
  protected get isValid(): boolean;
12
12
  private ensureInstance;
13
13
  prewarm(): this;
14
+ setInstance: (instance: T | null) => void;
14
15
  reset(): void;
15
16
  dispose(): void;
16
17
  }
@@ -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;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,qBAAa,IAAI,CAAC,CAAC,CAAE,YAAW,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAKjD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAS,CAAC,KAAK,IAAI;IAJpD,SAAS,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAQ;gBAGd,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EACnB,SAAS,CAAC,UAAS,CAAC,KAAK,IAAI,aAAA;IAKpD,IAAI,QAAQ,YAAsC;IAElD,IAAI,KAAK,mBAGR;IAED,iEAAiE;IACjE,SAAS,KAAK,OAAO,YAA4B;IAEjD,OAAO,CAAC,cAAc;IAUtB,OAAO;IAKP,KAAK;IAOL,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;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,qBAAa,IAAI,CAAC,CAAC,CAAE,YAAW,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAKjD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAS,CAAC,KAAK,IAAI;IAJpD,SAAS,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAQ;gBAGd,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EACnB,SAAS,CAAC,UAAS,CAAC,KAAK,IAAI,aAAA;IAKpD,IAAI,QAAQ,YAAsC;IAElD,IAAI,KAAK,mBAGR;IAED,iEAAiE;IACjE,SAAS,KAAK,OAAO,YAA4B;IAEjD,OAAO,CAAC,cAAc;IAWtB,OAAO;IAKP,WAAW,aAAc,CAAC,GAAG,IAAI,UAE/B;IAEF,KAAK;IAOL,OAAO;CACV"}
package/lazy/singleton.js CHANGED
@@ -22,17 +22,21 @@ class Lazy {
22
22
  }
23
23
  // additional reset to make sure previous instance has been disposed
24
24
  this.reset();
25
- this._instance = this._factory();
25
+ const res = this._factory();
26
+ this.setInstance(res);
26
27
  }
27
28
  prewarm() {
28
29
  this.ensureInstance();
29
30
  return this;
30
31
  }
32
+ setInstance = (instance) => {
33
+ this._instance = instance;
34
+ };
31
35
  reset() {
32
36
  if (this.hasValue && this._instance && this._disposer) {
33
37
  this._disposer(this._instance);
34
38
  }
35
- this._instance = null;
39
+ this.setInstance(null);
36
40
  }
37
41
  dispose() { this.reset(); }
38
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"singleton.js","sourceRoot":"","sources":["../../src/lazy/singleton.ts"],"names":[],"mappings":";;;AAGA,MAAa,IAAI;IAKU;IACA;IAJb,SAAS,GAAa,IAAI,CAAC;IAErC,YACuB,QAAmB,EACnB,SAA6B;QAD7B,aAAQ,GAAR,QAAQ,CAAW;QACnB,cAAS,GAAT,SAAS,CAAoB;IAGpD,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,SAAU,CAAC;IAC3B,CAAC;IAED,iEAAiE;IACjE,IAAc,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEzC,cAAc;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACX,CAAC;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,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC9B;AA5CD,oBA4CC"}
1
+ {"version":3,"file":"singleton.js","sourceRoot":"","sources":["../../src/lazy/singleton.ts"],"names":[],"mappings":";;;AAGA,MAAa,IAAI;IAKU;IACA;IAJb,SAAS,GAAa,IAAI,CAAC;IAErC,YACuB,QAAmB,EACnB,SAA6B;QAD7B,aAAQ,GAAR,QAAQ,CAAW;QACnB,cAAS,GAAT,SAAS,CAAoB;IAGpD,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,SAAU,CAAC;IAC3B,CAAC;IAED,iEAAiE;IACjE,IAAc,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEzC,cAAc;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACX,CAAC;QAED,oEAAoE;QACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO;QACH,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,GAAG,CAAC,QAAkB,EAAE,EAAE;QACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC,CAAC;IAEF,KAAK;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC9B;AAjDD,oBAiDC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zajno/common",
3
- "version": "2.2.11",
3
+ "version": "2.2.13",
4
4
  "description": "Zajno's re-usable utilities for JS/TS projects",
5
5
  "private": false,
6
6
  "repository": {