namirasoft-core 1.5.4 → 1.5.6

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,13 +1,13 @@
1
- import { Mutex } from "async-mutex";
2
1
  import { IStorage } from "./IStorage";
3
2
  export declare class CacheService<DataType> {
3
+ private static pending;
4
+ private static fetcherSources;
4
5
  private name;
5
6
  private storage;
6
7
  private duration_minutes;
7
8
  private getVersion;
8
9
  private getFromSource;
9
10
  onExpired?: () => void;
10
- runGetOn?: Mutex;
11
11
  constructor(name: string, storage: IStorage, duration_minutes: number, getVersion: () => Promise<string>, getFromSource: () => Promise<DataType>);
12
12
  get(): Promise<DataType>;
13
13
  set(data: DataType, version?: string): Promise<void>;
@@ -12,6 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.CacheService = void 0;
13
13
  class CacheService {
14
14
  constructor(name, storage, duration_minutes, getVersion, getFromSource) {
15
+ let source = getFromSource.toString();
16
+ let existing = CacheService.fetcherSources[name];
17
+ if (existing !== undefined && existing !== source)
18
+ throw new Error(`CacheService: name "${name}" was already registered with a different getFromSource. The name is a global dedup key — instances that share a name must share the same fetcher.`);
19
+ CacheService.fetcherSources[name] = source;
15
20
  this.name = name;
16
21
  this.storage = storage;
17
22
  this.duration_minutes = duration_minutes;
@@ -20,7 +25,9 @@ class CacheService {
20
25
  }
21
26
  get() {
22
27
  return __awaiter(this, void 0, void 0, function* () {
23
- let innerGet = () => __awaiter(this, void 0, void 0, function* () {
28
+ if (this.name in CacheService.pending)
29
+ return CacheService.pending[this.name];
30
+ let promise = (() => __awaiter(this, void 0, void 0, function* () {
24
31
  let version = yield this.getVersion();
25
32
  let value = this.storage.get(this.name, "");
26
33
  if (value) {
@@ -33,16 +40,16 @@ class CacheService {
33
40
  let ans = yield this.getFromSource();
34
41
  yield this.set(ans, version);
35
42
  return ans;
43
+ }))().finally(() => {
44
+ delete CacheService.pending[this.name];
36
45
  });
37
- if (this.runGetOn)
38
- return yield this.runGetOn.runExclusive(() => __awaiter(this, void 0, void 0, function* () {
39
- return yield innerGet();
40
- }));
41
- return yield innerGet();
46
+ CacheService.pending[this.name] = promise;
47
+ return promise;
42
48
  });
43
49
  }
44
50
  set(data, version) {
45
51
  return __awaiter(this, void 0, void 0, function* () {
52
+ delete CacheService.pending[this.name];
46
53
  if (!version)
47
54
  version = yield this.getVersion();
48
55
  let expires_at = new Date();
@@ -61,8 +68,11 @@ class CacheService {
61
68
  });
62
69
  }
63
70
  del() {
71
+ delete CacheService.pending[this.name];
64
72
  this.storage.del(this.name);
65
73
  }
66
74
  }
67
75
  exports.CacheService = CacheService;
76
+ CacheService.pending = {};
77
+ CacheService.fetcherSources = {};
68
78
  //# sourceMappingURL=CacheService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CacheService.js","sourceRoot":"","sources":["../src/CacheService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAUA,MAAa,YAAY;IASrB,YAAY,IAAY,EAAE,OAAiB,EAAE,gBAAwB,EAAE,UAAiC,EAAE,aAAsC;QAE5I,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IACK,GAAG;;YAEL,IAAI,QAAQ,GAAG,GAAS,EAAE;gBAEtB,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC5C,IAAI,KAAK,EACT,CAAC;oBACG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAA2B,CAAC;oBACxD,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO;wBACxB,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,EAAE;4BACvC,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI;gCAClB,OAAO,KAAK,CAAC,IAAI,CAAC;gBAClC,CAAC;gBACD,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC7B,OAAO,GAAG,CAAC;YACf,CAAC,CAAA,CAAC;YACF,IAAI,IAAI,CAAC,QAAQ;gBACb,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAS,EAAE;oBAE/C,OAAO,MAAM,QAAQ,EAAE,CAAC;gBAC5B,CAAC,CAAA,CAAC,CAAC;YACP,OAAO,MAAM,QAAQ,EAAE,CAAC;QAC5B,CAAC;KAAA;IACK,GAAG,CAAC,IAAc,EAAE,OAAgB;;YAEtC,IAAI,CAAC,OAAO;gBACR,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,IAAI,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;YAC5B,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACvE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEnC,IAAI,IAAI,CAAC,SAAS,EAClB,CAAC;gBACG,IAAI,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBACxD,IAAI,KAAK,IAAI,CAAC;oBACV,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;gBACrB,UAAU,CAAC,GAAG,EAAE;;oBAEZ,MAAA,IAAI,CAAC,SAAS,oDAAI,CAAC;gBACvB,CAAC,EAAE,KAAK,CAAC,CAAC;YACd,CAAC;QACL,CAAC;KAAA;IACD,GAAG;QAEC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACJ;AAlED,oCAkEC"}
1
+ {"version":3,"file":"CacheService.js","sourceRoot":"","sources":["../src/CacheService.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConvertService = void 0;
4
+ const EnvService_1 = require("./EnvService");
4
5
  const ErrorOperation_1 = require("./ErrorOperation");
5
6
  const StringOperation_1 = require("./StringOperation");
6
7
  class ConvertService {
@@ -9,15 +10,16 @@ class ConvertService {
9
10
  this.mandatory = mandatory;
10
11
  }
11
12
  checkMandatory(value) {
12
- if (!process.env.NAMIRASOFT_MUTE)
13
- if (this.mandatory)
13
+ if (this.mandatory)
14
+ if (!EnvService_1.EnvService.isMUTE())
14
15
  if (value == null || value == undefined)
15
16
  this.onMandatoryError();
16
17
  return value;
17
18
  }
18
19
  onMandatoryError() {
19
- if (!process.env.NAMIRASOFT_MUTE)
20
- ErrorOperation_1.ErrorOperation.throwHTTP(500, "Object value can not be converted.");
20
+ if (this.mandatory)
21
+ if (!EnvService_1.EnvService.isMUTE())
22
+ ErrorOperation_1.ErrorOperation.throwHTTP(500, "Object value can not be converted.");
21
23
  }
22
24
  getString(_default = "") {
23
25
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"ConvertService.js","sourceRoot":"","sources":["../src/ConvertService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConvertService.js","sourceRoot":"","sources":["../src/ConvertService.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CookieService = void 0;
4
4
  const ConvertService_1 = require("./ConvertService");
5
+ const EnvService_1 = require("./EnvService");
5
6
  class CookieService extends ConvertService_1.ConvertService {
6
7
  constructor(cookies, name, mandatory = false) {
7
8
  super(mandatory);
@@ -20,7 +21,7 @@ class CookieService extends ConvertService_1.ConvertService {
20
21
  return null;
21
22
  }
22
23
  onMandatoryError() {
23
- if (!process.env.NAMIRASOFT_MUTE)
24
+ if (!EnvService_1.EnvService.isMUTE())
24
25
  throw new Error(`Cookie value was not provided: ${this.name}`);
25
26
  }
26
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CookieService.js","sourceRoot":"","sources":["../src/CookieService.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,MAAa,aAAc,SAAQ,+BAAc;IAO7C,YAAY,OAAe,EAAE,IAAY,EAAE,YAAqB,KAAK;QAEjE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAA8B,EAAE,MAAM,EAAE,EAAE;YAE5F,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9C,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,GAAG,CAAC;QACf,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC;IACQ,aAAa;QAElB,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,GAAG;YACH,OAAO,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IACkB,gBAAgB;QAE/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe;YAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;CACJ;AA/BD,sCA+BC"}
1
+ {"version":3,"file":"CookieService.js","sourceRoot":"","sources":["../src/CookieService.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAClD,6CAA0C;AAE1C,MAAa,aAAc,SAAQ,+BAAc;IAO7C,YAAY,OAAe,EAAE,IAAY,EAAE,YAAqB,KAAK;QAEjE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAA8B,EAAE,MAAM,EAAE,EAAE;YAE5F,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9C,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,GAAG,CAAC;QACf,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC;IACQ,aAAa;QAElB,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,GAAG;YACH,OAAO,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IACkB,gBAAgB;QAE/B,IAAI,CAAC,uBAAU,CAAC,MAAM,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;CACJ;AA/BD,sCA+BC"}
@@ -1,8 +1,12 @@
1
1
  import { ConvertService } from "./ConvertService";
2
2
  export declare class EnvService extends ConvertService {
3
- static isDebugMode(): boolean;
3
+ static isDEBUG(): boolean;
4
+ static isMUTE(): boolean;
5
+ static isSTANDALNOE(): boolean;
4
6
  name: string;
5
7
  constructor(name: string, mandatory?: boolean);
6
- getNullString(): string | null;
8
+ getNullString(): any;
9
+ private getFromProcess;
10
+ private getFromWindow;
7
11
  protected onMandatoryError(): void;
8
12
  }
@@ -3,23 +3,44 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EnvService = void 0;
4
4
  const ConvertService_1 = require("./ConvertService");
5
5
  class EnvService extends ConvertService_1.ConvertService {
6
- static isDebugMode() {
6
+ static isDEBUG() {
7
7
  let DEBUG = new EnvService("DEBUG", false).getBoolean(false);
8
8
  let REACT_DEBUG = new EnvService("REACT_DEBUG", false).getBoolean(false);
9
9
  return DEBUG || REACT_DEBUG;
10
10
  }
11
+ static isMUTE() {
12
+ return new EnvService("NAMIRASOFT_MUTE", false).getBoolean(false);
13
+ }
14
+ static isSTANDALNOE() {
15
+ return new EnvService("NAMIRASOFT_STANDALNOE", false).getBoolean(false);
16
+ }
11
17
  constructor(name, mandatory = false) {
12
18
  super(mandatory);
13
19
  this.name = name;
20
+ this.getNullString = this.getNullString.bind(this);
21
+ this.getFromProcess = this.getFromProcess.bind(this);
22
+ this.getFromWindow = this.getFromWindow.bind(this);
14
23
  }
15
24
  getNullString() {
16
- let ans = process.env[this.name];
25
+ var _a;
26
+ let ans = (_a = this.getFromWindow()) !== null && _a !== void 0 ? _a : this.getFromProcess();
17
27
  if (ans)
18
28
  return ans;
19
29
  return null;
20
30
  }
31
+ getFromProcess() {
32
+ return process.env[this.name];
33
+ }
34
+ getFromWindow() {
35
+ if (typeof window === "undefined")
36
+ return undefined;
37
+ let env = window.__ENV__;
38
+ if (!env)
39
+ return undefined;
40
+ return env[this.name];
41
+ }
21
42
  onMandatoryError() {
22
- if (!process.env.NAMIRASOFT_MUTE)
43
+ if (!EnvService.isMUTE())
23
44
  throw new Error(`Env value was not provided: ${this.name}`);
24
45
  }
25
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EnvService.js","sourceRoot":"","sources":["../src/EnvService.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,MAAa,UAAW,SAAQ,+BAAc;IAE1C,MAAM,CAAC,WAAW;QAEd,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,WAAW,GAAG,IAAI,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzE,OAAO,KAAK,IAAI,WAAW,CAAC;IAChC,CAAC;IAED,YAAY,IAAY,EAAE,YAAqB,KAAK;QAEhD,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IACQ,aAAa;QAElB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,GAAG;YACH,OAAO,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IACkB,gBAAgB;QAE/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe;YAC5B,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;CACJ;AA1BD,gCA0BC"}
1
+ {"version":3,"file":"EnvService.js","sourceRoot":"","sources":["../src/EnvService.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,MAAa,UAAW,SAAQ,+BAAc;IAE1C,MAAM,CAAC,OAAO;QAEV,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,WAAW,GAAG,IAAI,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzE,OAAO,KAAK,IAAI,WAAW,CAAC;IAChC,CAAC;IACD,MAAM,CAAC,MAAM;QAET,OAAO,IAAI,UAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,CAAC,YAAY;QAEf,OAAO,IAAI,UAAU,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,YAAY,IAAY,EAAE,YAAqB,KAAK;QAEhD,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACQ,aAAa;;QAElB,IAAI,GAAG,GAAG,MAAA,IAAI,CAAC,aAAa,EAAE,mCAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxD,IAAI,GAAG;YACH,OAAO,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IACO,cAAc;QAElB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACO,aAAa;QAEjB,IAAI,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,SAAS,CAAC;QACrB,IAAI,GAAG,GAAI,MAAc,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,GAAG;YACJ,OAAO,SAAS,CAAC;QACrB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACkB,gBAAgB;QAE/B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;CACJ;AAlDD,gCAkDC"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.5.4",
11
+ "version": "1.5.6",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/index.js",
@@ -17,9 +17,8 @@
17
17
  "build": ""
18
18
  },
19
19
  "dependencies": {
20
- "@types/node": "^26.1.0",
21
- "async-mutex": "^0.5.0",
22
- "axios": "^1.18.1",
20
+ "@types/node": "^26.1.2",
21
+ "axios": "^1.19.0",
23
22
  "moment": "^2.30.1",
24
23
  "phone": "^3.1.71",
25
24
  "uuid": "^14.0.1"
@@ -1,4 +1,3 @@
1
- import { Mutex } from "async-mutex";
2
1
  import { IStorage } from "./IStorage";
3
2
 
4
3
  interface CacheStorage<DataType>
@@ -10,15 +9,23 @@ interface CacheStorage<DataType>
10
9
 
11
10
  export class CacheService<DataType>
12
11
  {
12
+ private static pending: { [name: string]: Promise<any> } = {};
13
+ private static fetcherSources: { [name: string]: string } = {};
14
+
13
15
  private name: string;
14
16
  private storage: IStorage;
15
17
  private duration_minutes: number;
16
18
  private getVersion: () => Promise<string>;
17
19
  private getFromSource: () => Promise<DataType>;
18
20
  public onExpired?: () => void;
19
- public runGetOn?: Mutex;
20
21
  constructor(name: string, storage: IStorage, duration_minutes: number, getVersion: () => Promise<string>, getFromSource: () => Promise<DataType>)
21
22
  {
23
+ let source = getFromSource.toString();
24
+ let existing = CacheService.fetcherSources[name];
25
+ if (existing !== undefined && existing !== source)
26
+ throw new Error(`CacheService: name "${name}" was already registered with a different getFromSource. The name is a global dedup key — instances that share a name must share the same fetcher.`);
27
+ CacheService.fetcherSources[name] = source;
28
+
22
29
  this.name = name;
23
30
  this.storage = storage;
24
31
  this.duration_minutes = duration_minutes;
@@ -27,7 +34,10 @@ export class CacheService<DataType>
27
34
  }
28
35
  async get(): Promise<DataType>
29
36
  {
30
- let innerGet = async () =>
37
+ if (this.name in CacheService.pending)
38
+ return CacheService.pending[this.name] as Promise<DataType>;
39
+
40
+ let promise = (async (): Promise<DataType> =>
31
41
  {
32
42
  let version = await this.getVersion();
33
43
  let value = this.storage.get(this.name, "");
@@ -42,16 +52,18 @@ export class CacheService<DataType>
42
52
  let ans = await this.getFromSource();
43
53
  await this.set(ans, version);
44
54
  return ans;
45
- };
46
- if (this.runGetOn)
47
- return await this.runGetOn.runExclusive(async () =>
48
- {
49
- return await innerGet();
50
- });
51
- return await innerGet();
55
+ })().finally(() =>
56
+ {
57
+ delete CacheService.pending[this.name];
58
+ }) as Promise<DataType>;
59
+
60
+ CacheService.pending[this.name] = promise;
61
+ return promise;
52
62
  }
53
63
  async set(data: DataType, version?: string)
54
64
  {
65
+ delete CacheService.pending[this.name];
66
+
55
67
  if (!version)
56
68
  version = await this.getVersion();
57
69
  let expires_at = new Date();
@@ -72,6 +84,7 @@ export class CacheService<DataType>
72
84
  }
73
85
  del()
74
86
  {
87
+ delete CacheService.pending[this.name];
75
88
  this.storage.del(this.name);
76
89
  }
77
90
  }
@@ -1,3 +1,4 @@
1
+ import { EnvService } from "./EnvService";
1
2
  import { ErrorOperation } from "./ErrorOperation";
2
3
  import { StringOperation } from "./StringOperation";
3
4
 
@@ -12,16 +13,17 @@ export abstract class ConvertService
12
13
  abstract getNullString(): string | null;
13
14
  private checkMandatory<D>(value: D): D
14
15
  {
15
- if (!process.env.NAMIRASOFT_MUTE)
16
- if (this.mandatory)
16
+ if (this.mandatory)
17
+ if (!EnvService.isMUTE())
17
18
  if (value == null || value == undefined)
18
19
  this.onMandatoryError();
19
20
  return value;
20
21
  }
21
22
  protected onMandatoryError(): void
22
23
  {
23
- if (!process.env.NAMIRASOFT_MUTE)
24
- ErrorOperation.throwHTTP(500, "Object value can not be converted.");
24
+ if (this.mandatory)
25
+ if (!EnvService.isMUTE())
26
+ ErrorOperation.throwHTTP(500, "Object value can not be converted.");
25
27
  }
26
28
  getString(_default: string = ""): string
27
29
  {
@@ -1,4 +1,5 @@
1
1
  import { ConvertService } from "./ConvertService";
2
+ import { EnvService } from "./EnvService";
2
3
 
3
4
  export class CookieService extends ConvertService
4
5
  {
@@ -28,7 +29,7 @@ export class CookieService extends ConvertService
28
29
  }
29
30
  protected override onMandatoryError(): void
30
31
  {
31
- if (!process.env.NAMIRASOFT_MUTE)
32
+ if (!EnvService.isMUTE())
32
33
  throw new Error(`Cookie value was not provided: ${this.name}`);
33
34
  }
34
35
  }
package/src/EnvService.ts CHANGED
@@ -2,28 +2,52 @@ import { ConvertService } from "./ConvertService";
2
2
 
3
3
  export class EnvService extends ConvertService
4
4
  {
5
- static isDebugMode()
5
+ static isDEBUG(): boolean
6
6
  {
7
7
  let DEBUG = new EnvService("DEBUG", false).getBoolean(false);
8
8
  let REACT_DEBUG = new EnvService("REACT_DEBUG", false).getBoolean(false);
9
9
  return DEBUG || REACT_DEBUG;
10
10
  }
11
+ static isMUTE(): boolean
12
+ {
13
+ return new EnvService("NAMIRASOFT_MUTE", false).getBoolean(false);
14
+ }
15
+ static isSTANDALNOE(): boolean
16
+ {
17
+ return new EnvService("NAMIRASOFT_STANDALNOE", false).getBoolean(false);
18
+ }
11
19
  name: string;
12
20
  constructor(name: string, mandatory: boolean = false)
13
21
  {
14
22
  super(mandatory);
15
23
  this.name = name;
24
+ this.getNullString = this.getNullString.bind(this);
25
+ this.getFromProcess = this.getFromProcess.bind(this);
26
+ this.getFromWindow = this.getFromWindow.bind(this);
16
27
  }
17
28
  override getNullString()
18
29
  {
19
- let ans = process.env[this.name];
30
+ let ans = this.getFromWindow() ?? this.getFromProcess();
20
31
  if (ans)
21
32
  return ans;
22
33
  return null;
23
34
  }
35
+ private getFromProcess()
36
+ {
37
+ return process.env[this.name];
38
+ }
39
+ private getFromWindow()
40
+ {
41
+ if (typeof window === "undefined")
42
+ return undefined;
43
+ let env = (window as any).__ENV__;
44
+ if (!env)
45
+ return undefined;
46
+ return env[this.name];
47
+ }
24
48
  protected override onMandatoryError(): void
25
49
  {
26
- if (!process.env.NAMIRASOFT_MUTE)
50
+ if (!EnvService.isMUTE())
27
51
  throw new Error(`Env value was not provided: ${this.name}`);
28
52
  }
29
53
  }