corexxx 1.0.94 → 1.0.95

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.
package/dist/dcache.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export declare namespace dcache {
2
- function memoizeAsync(func: Function, timeoutms?: number): (...args: any) => Promise<any>;
3
- function memoize(func: Function, timeoutms?: number): (...args: any) => any;
2
+ function memoizeAsync(func: Function, timeoutms?: number, customKey?: string): (...args: any) => Promise<any>;
3
+ function memoize(func: Function, timeoutms?: number, customKey?: string): (...args: any) => any;
4
4
  }
5
+ export declare function ensureOneCallAsync(func: Function): (...args: any) => Promise<void>;
package/dist/dcache.js CHANGED
@@ -9,7 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.dcache = void 0;
12
+ exports.ensureOneCallAsync = exports.dcache = void 0;
13
+ const dlog_1 = require("./dlog");
13
14
  var dcache;
14
15
  (function (dcache) {
15
16
  /*
@@ -24,11 +25,11 @@ var dcache;
24
25
  pow(3, 5); // creates the index "[3,5]" and returns 243
25
26
  */
26
27
  // make sure you have used await
27
- function memoizeAsync(func, timeoutms) {
28
+ function memoizeAsync(func, timeoutms, customKey) {
28
29
  const cache = {};
29
30
  return function memoized(...args) {
30
31
  return __awaiter(this, void 0, void 0, function* () {
31
- const key = JSON.stringify(args);
32
+ const key = customKey || JSON.stringify(args);
32
33
  if (!cache[key]) {
33
34
  cache[key] = yield func(...args);
34
35
  if (timeoutms) {
@@ -37,16 +38,19 @@ var dcache;
37
38
  }, timeoutms);
38
39
  }
39
40
  }
41
+ else {
42
+ dlog_1.dlog.d("perf:avoid call as cache founds");
43
+ }
40
44
  return cache[key];
41
45
  });
42
46
  };
43
47
  }
44
48
  dcache.memoizeAsync = memoizeAsync;
45
49
  // just call
46
- function memoize(func, timeoutms) {
50
+ function memoize(func, timeoutms, customKey) {
47
51
  const cache = {};
48
52
  return function memoized(...args) {
49
- const key = JSON.stringify(args);
53
+ const key = customKey || JSON.stringify(args);
50
54
  if (!cache[key]) {
51
55
  cache[key] = func(...args);
52
56
  if (timeoutms) {
@@ -55,9 +59,35 @@ var dcache;
55
59
  }, timeoutms);
56
60
  }
57
61
  }
62
+ else {
63
+ dlog_1.dlog.d("perf:avoid call as cache founds");
64
+ }
58
65
  return cache[key];
59
66
  };
60
67
  }
61
68
  dcache.memoize = memoize;
62
69
  })(dcache = exports.dcache || (exports.dcache = {}));
70
+ function ensureOneCallAsync(func) {
71
+ const cache = {};
72
+ return function memoized(...args) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ const key = JSON.stringify(args);
75
+ if (!cache[key]) {
76
+ cache[key] = true;
77
+ try {
78
+ yield func(...args);
79
+ cache[key] = false;
80
+ }
81
+ catch (e) {
82
+ cache[key] = false;
83
+ throw e;
84
+ }
85
+ }
86
+ else {
87
+ dlog_1.dlog.d("Perf:avoid call as another call in progress");
88
+ }
89
+ });
90
+ };
91
+ }
92
+ exports.ensureOneCallAsync = ensureOneCallAsync;
63
93
  //# sourceMappingURL=dcache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dcache.js","sourceRoot":"","sources":["../src/dcache.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,IAAiB,MAAM,CA6CtB;AA7CD,WAAiB,MAAM;IACrB;;;;;;;;;;QAUI;IACJ,gCAAgC;IAChC,SAAgB,YAAY,CAAC,IAAc,EAAE,SAAkB;QAC7D,MAAM,KAAK,GAAY,EAAE,CAAC;QAC1B,OAAO,SAAe,QAAQ,CAAC,GAAG,IAAS;;gBACzC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACf,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;oBACjC,IAAI,SAAS,EAAE;wBACb,UAAU,CAAC,GAAG,EAAE;4BACd,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;wBACzB,CAAC,EAAE,SAAS,CAAC,CAAC;qBACf;iBACF;gBACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;SAAA,CAAC;IACJ,CAAC;IAde,mBAAY,eAc3B,CAAA;IAED,YAAY;IACZ,SAAgB,OAAO,CAAC,IAAc,EAAE,SAAkB;QACxD,MAAM,KAAK,GAAY,EAAE,CAAC;QAC1B,OAAO,SAAS,QAAQ,CAAC,GAAG,IAAS;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACf,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC3B,IAAI,SAAS,EAAE;oBACb,UAAU,CAAC,GAAG,EAAE;wBACd,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;oBACzB,CAAC,EAAE,SAAS,CAAC,CAAC;iBACf;aACF;YACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC;IAde,cAAO,UActB,CAAA;AACH,CAAC,EA7CgB,MAAM,GAAN,cAAM,KAAN,cAAM,QA6CtB"}
1
+ {"version":3,"file":"dcache.js","sourceRoot":"","sources":["../src/dcache.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,iCAA8B;AAC9B,IAAiB,MAAM,CAiDtB;AAjDD,WAAiB,MAAM;IACrB;;;;;;;;;;QAUI;IACJ,gCAAgC;IAChC,SAAgB,YAAY,CAAC,IAAc,EAAE,SAAkB,EAAE,SAAkB;QACjF,MAAM,KAAK,GAAY,EAAE,CAAC;QAC1B,OAAO,SAAe,QAAQ,CAAC,GAAG,IAAS;;gBACzC,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACf,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;oBACjC,IAAI,SAAS,EAAE;wBACb,UAAU,CAAC,GAAG,EAAE;4BACd,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;wBACzB,CAAC,EAAE,SAAS,CAAC,CAAC;qBACf;iBACF;qBAAM;oBACL,WAAI,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC;iBAC3C;gBACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;SAAA,CAAC;IACJ,CAAC;IAhBe,mBAAY,eAgB3B,CAAA;IAED,YAAY;IACZ,SAAgB,OAAO,CAAC,IAAc,EAAE,SAAkB,EAAE,SAAkB;QAC5E,MAAM,KAAK,GAAY,EAAE,CAAC;QAC1B,OAAO,SAAS,QAAQ,CAAC,GAAG,IAAS;YACnC,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACf,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC3B,IAAI,SAAS,EAAE;oBACb,UAAU,CAAC,GAAG,EAAE;wBACd,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;oBACzB,CAAC,EAAE,SAAS,CAAC,CAAC;iBACf;aACF;iBAAM;gBACL,WAAI,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC;aAC3C;YACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC;IAhBe,cAAO,UAgBtB,CAAA;AACH,CAAC,EAjDgB,MAAM,GAAN,cAAM,KAAN,cAAM,QAiDtB;AAED,SAAgB,kBAAkB,CAAC,IAAc;IAC/C,MAAM,KAAK,GAAY,EAAE,CAAC;IAC1B,OAAO,SAAe,QAAQ,CAAC,GAAG,IAAS;;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACf,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBAClB,IAAI;oBACF,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;oBACpB,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;iBACpB;gBAAC,OAAO,CAAC,EAAE;oBACV,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACnB,MAAM,CAAC,CAAC;iBACT;aACF;iBAAM;gBACL,WAAI,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC;aACvD;QACH,CAAC;KAAA,CAAC;AACJ,CAAC;AAjBD,gDAiBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "corexxx",
3
- "version": "1.0.94",
3
+ "version": "1.0.95",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/dcache.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { TObject } from ".";
2
+ import { dlog } from "./dlog";
2
3
  export namespace dcache {
3
4
  /*
4
5
  https://www.sitepoint.com/implementing-memoization-in-javascript/
@@ -12,10 +13,10 @@ export namespace dcache {
12
13
  pow(3, 5); // creates the index "[3,5]" and returns 243
13
14
  */
14
15
  // make sure you have used await
15
- export function memoizeAsync(func: Function, timeoutms?: number) {
16
+ export function memoizeAsync(func: Function, timeoutms?: number, customKey?: string) {
16
17
  const cache: TObject = {};
17
18
  return async function memoized(...args: any) {
18
- const key = JSON.stringify(args);
19
+ const key = customKey || JSON.stringify(args);
19
20
  if (!cache[key]) {
20
21
  cache[key] = await func(...args);
21
22
  if (timeoutms) {
@@ -23,16 +24,18 @@ export namespace dcache {
23
24
  cache[key] = undefined;
24
25
  }, timeoutms);
25
26
  }
27
+ } else {
28
+ dlog.d("perf:avoid call as cache founds");
26
29
  }
27
30
  return cache[key];
28
31
  };
29
32
  }
30
33
 
31
34
  // just call
32
- export function memoize(func: Function, timeoutms?: number) {
35
+ export function memoize(func: Function, timeoutms?: number, customKey?: string) {
33
36
  const cache: TObject = {};
34
37
  return function memoized(...args: any) {
35
- const key = JSON.stringify(args);
38
+ const key = customKey || JSON.stringify(args);
36
39
  if (!cache[key]) {
37
40
  cache[key] = func(...args);
38
41
  if (timeoutms) {
@@ -40,8 +43,29 @@ export namespace dcache {
40
43
  cache[key] = undefined;
41
44
  }, timeoutms);
42
45
  }
46
+ } else {
47
+ dlog.d("perf:avoid call as cache founds");
43
48
  }
44
49
  return cache[key];
45
50
  };
46
51
  }
47
52
  }
53
+
54
+ export function ensureOneCallAsync(func: Function) {
55
+ const cache: TObject = {};
56
+ return async function memoized(...args: any) {
57
+ const key = JSON.stringify(args);
58
+ if (!cache[key]) {
59
+ cache[key] = true;
60
+ try {
61
+ await func(...args);
62
+ cache[key] = false;
63
+ } catch (e) {
64
+ cache[key] = false;
65
+ throw e;
66
+ }
67
+ } else {
68
+ dlog.d("Perf:avoid call as another call in progress");
69
+ }
70
+ };
71
+ }