equipped 5.0.10 → 5.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.
Files changed (52) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/cache/index.cjs +1 -0
  3. package/dist/cjs/cache/index.cjs.map +1 -1
  4. package/dist/cjs/cache/index.min.cjs +1 -1
  5. package/dist/cjs/cache/index.min.cjs.map +1 -1
  6. package/dist/cjs/cache/types/in-memory.cjs +47 -0
  7. package/dist/cjs/cache/types/in-memory.cjs.map +1 -0
  8. package/dist/cjs/cache/types/in-memory.min.cjs +2 -0
  9. package/dist/cjs/cache/types/in-memory.min.cjs.map +1 -0
  10. package/dist/cjs/cache/types/redis.cjs +9 -6
  11. package/dist/cjs/cache/types/redis.cjs.map +1 -1
  12. package/dist/cjs/cache/types/redis.min.cjs +1 -1
  13. package/dist/cjs/cache/types/redis.min.cjs.map +1 -1
  14. package/dist/cjs/instance/settings.cjs +11 -8
  15. package/dist/cjs/instance/settings.cjs.map +1 -1
  16. package/dist/cjs/instance/settings.min.cjs +1 -1
  17. package/dist/cjs/instance/settings.min.cjs.map +1 -1
  18. package/dist/cjs/server/requests-auth/tokens.cjs +6 -7
  19. package/dist/cjs/server/requests-auth/tokens.cjs.map +1 -1
  20. package/dist/cjs/server/requests-auth/tokens.min.cjs +1 -1
  21. package/dist/cjs/server/requests-auth/tokens.min.cjs.map +1 -1
  22. package/dist/esm/cache/index.min.mjs +1 -1
  23. package/dist/esm/cache/index.min.mjs.map +1 -1
  24. package/dist/esm/cache/index.mjs +1 -0
  25. package/dist/esm/cache/index.mjs.map +1 -1
  26. package/dist/esm/cache/types/in-memory.min.mjs +2 -0
  27. package/dist/esm/cache/types/in-memory.min.mjs.map +1 -0
  28. package/dist/esm/cache/types/in-memory.mjs +47 -0
  29. package/dist/esm/cache/types/in-memory.mjs.map +1 -0
  30. package/dist/esm/cache/types/redis.min.mjs +1 -1
  31. package/dist/esm/cache/types/redis.min.mjs.map +1 -1
  32. package/dist/esm/cache/types/redis.mjs +9 -6
  33. package/dist/esm/cache/types/redis.mjs.map +1 -1
  34. package/dist/esm/instance/settings.min.mjs +1 -1
  35. package/dist/esm/instance/settings.min.mjs.map +1 -1
  36. package/dist/esm/instance/settings.mjs +8 -5
  37. package/dist/esm/instance/settings.mjs.map +1 -1
  38. package/dist/esm/server/requests-auth/tokens.min.mjs +1 -1
  39. package/dist/esm/server/requests-auth/tokens.min.mjs.map +1 -1
  40. package/dist/esm/server/requests-auth/tokens.mjs +6 -7
  41. package/dist/esm/server/requests-auth/tokens.mjs.map +1 -1
  42. package/dist/types/cache/index.d.ts +12 -1
  43. package/dist/types/cache/index.js +1 -0
  44. package/dist/types/cache/types/in-memory.js +46 -0
  45. package/dist/types/cache/types/redis.js +9 -6
  46. package/dist/types/{index-BmX5WyqC.d.ts → index-BsKp1IR2.d.ts} +25 -18
  47. package/dist/types/index.d.ts +1 -1
  48. package/dist/types/instance/index.d.ts +1 -1
  49. package/dist/types/instance/settings.js +8 -5
  50. package/dist/types/server/index.d.ts +2 -2
  51. package/dist/types/server/requests-auth/tokens.js +6 -7
  52. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [5.0.11](https://github.com/kevinand11/equipped/compare/v5.0.10...v5.0.11) (2025-06-28)
6
+
7
+
8
+ ### Features
9
+
10
+ * add inmemory cache, make cache optional on instance and pass cache impl to CacheTokenImpl ([4338693](https://github.com/kevinand11/equipped/commit/43386931a1da6b1680d48e76a522d5398236c946))
11
+
5
12
  ### [5.0.10](https://github.com/kevinand11/equipped/compare/v5.0.9...v5.0.10) (2025-06-27)
6
13
 
7
14
 
@@ -1,4 +1,5 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); }var _basecjs = require('./base.cjs'); _createStarExport(_basecjs);
2
2
  var _pipescjs = require('./pipes.cjs'); _createStarExport(_pipescjs);
3
+ var _inmemorycjs = require('./types/in-memory.cjs'); _createStarExport(_inmemorycjs);
3
4
  var _rediscjs = require('./types/redis.cjs'); _createStarExport(_rediscjs);
4
5
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAAA,maAAc;AACd,qEAAc;AACd,2EAAc","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/index.cjs","sourcesContent":["export * from './base'\nexport * from './pipes'\nexport * from './types/redis'\n"]}
1
+ {"version":3,"sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAAA,maAAc;AACd,qEAAc;AACd,qFAAc;AACd,2EAAc","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/index.cjs","sourcesContent":["export * from './base'\nexport * from './pipes'\nexport * from './types/in-memory'\nexport * from './types/redis'\n"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); }var _basemincjs = require('./base.min.cjs'); _createStarExport(_basemincjs);var _pipesmincjs = require('./pipes.min.cjs'); _createStarExport(_pipesmincjs);var _redismincjs = require('./types/redis.min.cjs'); _createStarExport(_redismincjs);
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); }var _basemincjs = require('./base.min.cjs'); _createStarExport(_basemincjs);var _pipesmincjs = require('./pipes.min.cjs'); _createStarExport(_pipesmincjs);var _inmemorymincjs = require('./types/in-memory.min.cjs'); _createStarExport(_inmemorymincjs);var _redismincjs = require('./types/redis.min.cjs'); _createStarExport(_redismincjs);
2
2
  //# sourceMappingURL=index.min.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAAA,6aACA,+EACc,qFAAA","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/index.min.cjs","sourcesContent":["export * from './base'\nexport * from './pipes'\nexport * from './types/redis'\n"]}
1
+ {"version":3,"sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAAA,6aACA,+EACc,+FACA,qFAAA","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/index.min.cjs","sourcesContent":["export * from './base'\nexport * from './pipes'\nexport * from './types/in-memory'\nexport * from './types/redis'\n"]}
@@ -0,0 +1,47 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _indexcjs = require('../../instance/index.cjs');
2
+ var _basecjs = require('../base.cjs');
3
+ class InMemoryCache extends _basecjs.Cache {
4
+ __init() {this.cache = /* @__PURE__ */ new Map()}
5
+ constructor() {
6
+ super();InMemoryCache.prototype.__init.call(this);;
7
+ let interval;
8
+ _indexcjs.Instance.on(
9
+ "start",
10
+ async () => {
11
+ interval = setInterval(() => {
12
+ const now = Date.now();
13
+ for (const [key, record] of this.cache.entries()) {
14
+ if (record.expiredAt <= now) this.cache.delete(key);
15
+ }
16
+ }, 5e3);
17
+ },
18
+ 1
19
+ );
20
+ _indexcjs.Instance.on("close", async () => clearInterval(interval), 1);
21
+ }
22
+ getScopedKey(key) {
23
+ return _indexcjs.Instance.get().getScopedName(key, ":");
24
+ }
25
+ async delete(key) {
26
+ this.cache.delete(this.getScopedKey(key));
27
+ }
28
+ async get(key) {
29
+ const record = this.cache.get(this.getScopedKey(key));
30
+ if (record && record.expiredAt > Date.now()) return record.data;
31
+ return null;
32
+ }
33
+ async set(key, data, ttlInSecs) {
34
+ this.cache.set(this.getScopedKey(key), { data, expiredAt: Date.now() + ttlInSecs * 1e3 });
35
+ }
36
+ async getOrSet(key, fn, ttlInSecs) {
37
+ const cached = await this.get(key);
38
+ if (cached) return JSON.parse(cached);
39
+ const result = await fn();
40
+ await this.set(key, JSON.stringify(result), ttlInSecs);
41
+ return result;
42
+ }
43
+ }
44
+
45
+
46
+ exports.InMemoryCache = InMemoryCache;
47
+ //# sourceMappingURL=in-memory.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cache/types/in-memory.ts","/home/runner/work/equipped/equipped/dist/cjs/cache/types/in-memory.cjs"],"names":[],"mappings":"AAAA,6HAAyB;AACzB,sCAAsB;AAOf,MAAM,cAAA,QAAsB,eAAM;AAAA,iBACvB,MAAA,kBAAQ,IAAI,GAAA,CAAwB,EAAA;AAAA,EAErD,WAAA,CAAA,EAAc;AACb,IAAA,KAAA,CAAM,4CAAA;AACN,IAAA,IAAI,QAAA;AACJ,IAAA,kBAAA,CAAS,EAAA;AAAA,MACR,OAAA;AAAA,MACA,MAAA,CAAA,EAAA,GAAY;AACX,QAAA,SAAA,EAAW,WAAA,CAAY,CAAA,EAAA,GAAM;AAC5B,UAAA,MAAM,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,CAAA;AACrB,UAAA,IAAA,CAAA,MAAW,CAAC,GAAA,EAAK,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG;AACjD,YAAA,GAAA,CAAI,MAAA,CAAO,UAAA,GAAa,GAAA,EAAK,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAA;AAAA,UACnD;AAAA,QACD,CAAA,EAAG,GAAI,CAAA;AAAA,MACR,CAAA;AAAA,MACA;AAAA,IACD,CAAA;AACA,IAAA,kBAAA,CAAS,EAAA,CAAG,OAAA,EAAS,MAAA,CAAA,EAAA,GAAY,aAAA,CAAc,QAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,EAC5D;AAAA,EAEQ,YAAA,CAAa,GAAA,EAAqB;AACzC,IAAA,OAAO,kBAAA,CAAS,GAAA,CAAI,CAAA,CAAE,aAAA,CAAc,GAAA,EAAK,GAAG,CAAA;AAAA,EAC7C;AAAA,EAEA,MAAM,MAAA,CAAO,GAAA,EAAa;AACzB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa,GAAG,CAAC,CAAA;AAAA,EACzC;AAAA,EAEA,MAAM,GAAA,CAAI,GAAA,EAAa;AACtB,IAAA,MAAM,OAAA,EAAS,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,YAAA,CAAa,GAAG,CAAC,CAAA;AACpD,IAAA,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,UAAA,EAAY,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,OAAO,MAAA,CAAO,IAAA;AAC3D,IAAA,OAAO,IAAA;AAAA,EACR;AAAA,EAEA,MAAM,GAAA,CAAI,GAAA,EAAa,IAAA,EAAc,SAAA,EAAmB;AACvD,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,YAAA,CAAa,GAAG,CAAA,EAAG,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,UAAA,EAAY,IAAK,CAAC,CAAA;AAAA,EAC1F;AAAA,EAEA,MAAM,QAAA,CAAY,GAAA,EAAa,EAAA,EAAsB,SAAA,EAA+B;AACnF,IAAA,MAAM,OAAA,EAAS,MAAM,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA;AACjC,IAAA,GAAA,CAAI,MAAA,EAAQ,OAAO,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA;AAEpC,IAAA,MAAM,OAAA,EAAS,MAAM,EAAA,CAAG,CAAA;AACxB,IAAA,MAAM,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA,EAAG,SAAS,CAAA;AACrD,IAAA,OAAO,MAAA;AAAA,EACR;AACD;ACZA;AACE;AACF,sCAAC","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/types/in-memory.cjs","sourcesContent":["import { Instance } from '../../instance'\nimport { Cache } from '../base'\n\ntype CacheEntry = {\n\tdata: string\n\texpiredAt: number\n}\n\nexport class InMemoryCache extends Cache {\n\tprivate readonly cache = new Map<string, CacheEntry>()\n\n\tconstructor() {\n\t\tsuper()\n\t\tlet interval: ReturnType<typeof setInterval> | undefined\n\t\tInstance.on(\n\t\t\t'start',\n\t\t\tasync () => {\n\t\t\t\tinterval = setInterval(() => {\n\t\t\t\t\tconst now = Date.now()\n\t\t\t\t\tfor (const [key, record] of this.cache.entries()) {\n\t\t\t\t\t\tif (record.expiredAt <= now) this.cache.delete(key)\n\t\t\t\t\t}\n\t\t\t\t}, 5000)\n\t\t\t},\n\t\t\t1,\n\t\t)\n\t\tInstance.on('close', async () => clearInterval(interval), 1)\n\t}\n\n\tprivate getScopedKey(key: string): string {\n\t\treturn Instance.get().getScopedName(key, ':')\n\t}\n\n\tasync delete(key: string) {\n\t\tthis.cache.delete(this.getScopedKey(key))\n\t}\n\n\tasync get(key: string) {\n\t\tconst record = this.cache.get(this.getScopedKey(key))\n\t\tif (record && record.expiredAt > Date.now()) return record.data\n\t\treturn null\n\t}\n\n\tasync set(key: string, data: string, ttlInSecs: number) {\n\t\tthis.cache.set(this.getScopedKey(key), { data, expiredAt: Date.now() + ttlInSecs * 1000 })\n\t}\n\n\tasync getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs: number): Promise<T> {\n\t\tconst cached = await this.get(key)\n\t\tif (cached) return JSON.parse(cached) as T\n\n\t\tconst result = await fn()\n\t\tawait this.set(key, JSON.stringify(result), ttlInSecs)\n\t\treturn result\n\t}\n}\n",null]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _indexmincjs = require('../../instance/index.min.cjs');var _basemincjs = require('../base.min.cjs');class h extends _basemincjs.Cache{__init() {this.cache=new Map}constructor(){super();h.prototype.__init.call(this);;let e;_indexmincjs.Instance.on("start",async()=>{e=setInterval(()=>{const t=Date.now();for(const[r,n]of this.cache.entries())n.expiredAt<=t&&this.cache.delete(r)},5e3)},1),_indexmincjs.Instance.on("close",async()=>clearInterval(e),1)}getScopedKey(e){return _indexmincjs.Instance.get().getScopedName(e,":")}async delete(e){this.cache.delete(this.getScopedKey(e))}async get(e){const t=this.cache.get(this.getScopedKey(e));return t&&t.expiredAt>Date.now()?t.data:null}async set(e,t,r){this.cache.set(this.getScopedKey(e),{data:t,expiredAt:Date.now()+r*1e3})}async getOrSet(e,t,r){const n=await this.get(e);if(n)return JSON.parse(n);const a=await t();return await this.set(e,JSON.stringify(a),r),a}}exports.InMemoryCache = h;
2
+ //# sourceMappingURL=in-memory.min.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cache/types/in-memory.ts"],"names":["interval","now","key","record","Instance","data","ttlInSecs","fn","cached","result"],"mappings":"AAAA,oIACS,6CAQS,MAAY,EAE7B,QAAA,iBAAA,gBAAA,KACC,CAAA,IAAM,IACN,WAEC,CAAA,CAAA,CAAA,KACA,CAAA,gCAAA,CAAA,IAAY,CACXA,CAAAA,qBAAW,CAAA,EAAA,CAAA,OAAA,CAAY,KACtB,CAAA,CAAA,EAAA,CAAA,CAAMC,CAAAA,WAAe,CACrB,CAAA,CAAA,EAAA,CAAA,MAAYC,CAAKC,CAAM,IAAK,CAAA,GAAA,CAAK,CAAA,CAAA,GAAA,CAAM,KAAA,CAAA,CAAA,CAAQ,CAAA,CAC1CA,GAAO,IAAA,CAAA,KAAaF,CAAAA,OAAU,CAAA,CAAA,CAAA,CAAA,CAAA,SAAgB,EAEpD,CAAG,EAAA,IAEJ,CACD,KACS,CAAA,MAAG,CAAA,CAAA,CAAS,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,OAAcD,CAAQ,KAGhD,CAAA,CAAA,EAAA,aACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOI,CAAAA,YAAe,CAAA,CAAA,CAAA,CAAA,OAAmB,qBAAA,CAAA,GAG1C,CAAA,CAAA,CAAA,aACC,CAAA,CAAA,CAAA,GAAK,CAAA,CAAA,MAAM,MAAO,CAAA,CAAA,CAAK,CAAA,IAAA,CAAA,KAAA,CAAA,MAGxB,CAAA,IAAM,CAAA,YACCD,CAAAA,CAAS,CAAA,CAAA,CAAA,MAAK,GAAM,CAAA,CAAA,CAAI,CAAA,MAAK,CAAA,CAAA,IAAA,CAAA,KAAgB,CAAC,GACpD,CAAA,IAAA,CAAIA,YAAiB,CAAA,CAAA,CAAY,CAAA,CAAA,OAAS,CAAA,EAAUA,CAAO,CAAA,SAI5D,CAAA,IAAA,CAAM,GAAA,CAAID,CAAAA,CAAaG,CAAAA,CAAcC,IACpC,CAAA,IAAK,CAAA,MAAM,GAAI,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,KAAgB,CAAA,GAAK,CAAA,IAAAD,CAAM,YAAW,CAAA,CAAA,CAAK,CAAA,CAAA,IAAQC,CAAAA,CAAY,CAAA,SAGpF,CAAA,IAAM,CAAA,GAAA,CAAA,CAAYJ,CAAAA,CAAaK,CAAAA,GAAqD,CACnF,CAAA,CAAA,MAAe,QAAM,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAIL,CAAG,MAC7BM,CAAQ,CAAA,MAAO,IAAA,CAAK,GAAA,CAAA,CAAA,CAAMA,CAAM,EAEpC,CAAA,CAAA,CAAA,OAAe,IAAMD,CAAAA,KACrB,CAAA,CAAA,CAAA,CAAA,MAAA,CAAM,CAAA,MAAK,CAAA,CAAIL,CAAAA,CAAK,OAAK,MAAA,IAAgB,CAAGI,GACrCG,CACR,CACD,CAAA,IAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0BAAA","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/types/in-memory.min.cjs","sourcesContent":["import { Instance } from '../../instance'\nimport { Cache } from '../base'\n\ntype CacheEntry = {\n\tdata: string\n\texpiredAt: number\n}\n\nexport class InMemoryCache extends Cache {\n\tprivate readonly cache = new Map<string, CacheEntry>()\n\n\tconstructor() {\n\t\tsuper()\n\t\tlet interval: ReturnType<typeof setInterval> | undefined\n\t\tInstance.on(\n\t\t\t'start',\n\t\t\tasync () => {\n\t\t\t\tinterval = setInterval(() => {\n\t\t\t\t\tconst now = Date.now()\n\t\t\t\t\tfor (const [key, record] of this.cache.entries()) {\n\t\t\t\t\t\tif (record.expiredAt <= now) this.cache.delete(key)\n\t\t\t\t\t}\n\t\t\t\t}, 5000)\n\t\t\t},\n\t\t\t1,\n\t\t)\n\t\tInstance.on('close', async () => clearInterval(interval), 1)\n\t}\n\n\tprivate getScopedKey(key: string): string {\n\t\treturn Instance.get().getScopedName(key, ':')\n\t}\n\n\tasync delete(key: string) {\n\t\tthis.cache.delete(this.getScopedKey(key))\n\t}\n\n\tasync get(key: string) {\n\t\tconst record = this.cache.get(this.getScopedKey(key))\n\t\tif (record && record.expiredAt > Date.now()) return record.data\n\t\treturn null\n\t}\n\n\tasync set(key: string, data: string, ttlInSecs: number) {\n\t\tthis.cache.set(this.getScopedKey(key), { data, expiredAt: Date.now() + ttlInSecs * 1000 })\n\t}\n\n\tasync getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs: number): Promise<T> {\n\t\tconst cached = await this.get(key)\n\t\tif (cached) return JSON.parse(cached) as T\n\n\t\tconst result = await fn()\n\t\tawait this.set(key, JSON.stringify(result), ttlInSecs)\n\t\treturn result\n\t}\n}\n"]}
@@ -28,21 +28,24 @@ class RedisCache extends _basecjs.Cache {
28
28
  if (!extraConfig) _indexcjs3.Instance.on("start", async () => this.client.connect(), 1);
29
29
  _indexcjs3.Instance.on("close", async () => this.client.quit(), 1);
30
30
  }
31
+ getScopedKey(key) {
32
+ return _indexcjs3.Instance.get().getScopedName(key, ":");
33
+ }
31
34
  async delete(key) {
32
- await this.client.del(_indexcjs3.Instance.get().getScopedName(key, ":"));
35
+ await this.client.del(this.getScopedKey(key));
33
36
  }
34
37
  async get(key) {
35
- return await this.client.get(_indexcjs3.Instance.get().getScopedName(key, ":"));
38
+ return await this.client.get(this.getScopedKey(key));
36
39
  }
37
40
  async set(key, data, ttlInSecs) {
38
- if (ttlInSecs > 0) await this.client.setex(_indexcjs3.Instance.get().getScopedName(key, ":"), ttlInSecs, data);
39
- else this.client.set(_indexcjs3.Instance.get().getScopedName(key), data);
41
+ if (ttlInSecs > 0) await this.client.setex(this.getScopedKey(key), ttlInSecs, data);
42
+ else this.client.set(this.getScopedKey(key), data);
40
43
  }
41
44
  async getOrSet(key, fn, ttlInSecs) {
42
- const cached = await this.get(_indexcjs3.Instance.get().getScopedName(key, ":"));
45
+ const cached = await this.get(this.getScopedKey(key));
43
46
  if (cached) return JSON.parse(cached);
44
47
  const result = await fn();
45
- await this.set(_indexcjs3.Instance.get().getScopedName(key, ":"), JSON.stringify(result), ttlInSecs);
48
+ await this.set(this.getScopedKey(key), JSON.stringify(result), ttlInSecs);
46
49
  }
47
50
  }
48
51
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cache/types/redis.ts","/home/runner/work/equipped/equipped/dist/cjs/cache/types/redis.cjs"],"names":[],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/types/redis.cjs","sourcesContent":["import { Cluster, Redis, RedisOptions } from 'ioredis'\n\nimport { EquippedError } from '../../errors'\nimport { Instance } from '../../instance'\nimport { Cache } from '../base'\nimport { RedisConfig } from '../pipes'\n\nexport class RedisCache extends Cache {\n\tclient: Redis | Cluster\n\n\tconstructor(settings: RedisConfig, extraConfig?: Partial<RedisOptions>) {\n\t\tsuper()\n\t\tconst node = {\n\t\t\t...(settings.host ? { host: settings.host } : {}),\n\t\t\t...(settings.port ? { port: settings.port } : {}),\n\t\t}\n\t\tconst common = {\n\t\t\t...extraConfig,\n\t\t\t...(settings.password ? { password: settings.password } : {}),\n\t\t\t...(settings.username ? { username: settings.username } : {}),\n\t\t\t...(settings.tls ? { tls: {} } : {}),\n\t\t\tlazyConnect: true,\n\t\t}\n\t\tthis.client = settings.cluster\n\t\t\t? new Cluster([node], {\n\t\t\t\t\t...extraConfig,\n\t\t\t\t\tredisOptions: common,\n\t\t\t\t\tlazyConnect: true,\n\t\t\t\t})\n\t\t\t: new Redis({ ...common, ...node })\n\t\tthis.client.on('error', async (error) => {\n\t\t\tInstance.crash(new EquippedError(`Redis failed with error`, {}, error))\n\t\t})\n\t\tif (!extraConfig) Instance.on('start', async () => this.client.connect(), 1)\n\t\tInstance.on('close', async () => this.client.quit(), 1)\n\t}\n\n\tasync delete(key: string) {\n\t\tawait this.client.del(Instance.get().getScopedName(key, ':'))\n\t}\n\n\tasync get(key: string) {\n\t\treturn await this.client.get(Instance.get().getScopedName(key, ':'))\n\t}\n\n\tasync set(key: string, data: string, ttlInSecs: number) {\n\t\tif (ttlInSecs > 0) await this.client.setex(Instance.get().getScopedName(key, ':'), ttlInSecs, data)\n\t\telse this.client.set(Instance.get().getScopedName(key), data)\n\t}\n\n\tasync getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs: number) {\n\t\tconst cached = await this.get(Instance.get().getScopedName(key, ':'))\n\t\tif (cached) return JSON.parse(cached)\n\n\t\tconst result = await fn()\n\t\tawait this.set(Instance.get().getScopedName(key, ':'), JSON.stringify(result), ttlInSecs)\n\t}\n}\n",null]}
1
+ {"version":3,"sources":["../../../../src/cache/types/redis.ts","/home/runner/work/equipped/equipped/dist/cjs/cache/types/redis.cjs"],"names":[],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/types/redis.cjs","sourcesContent":["import { Cluster, Redis, RedisOptions } from 'ioredis'\n\nimport { EquippedError } from '../../errors'\nimport { Instance } from '../../instance'\nimport { Cache } from '../base'\nimport { RedisConfig } from '../pipes'\n\nexport class RedisCache extends Cache {\n\tclient: Redis | Cluster\n\n\tconstructor(settings: RedisConfig, extraConfig?: Partial<RedisOptions>) {\n\t\tsuper()\n\t\tconst node = {\n\t\t\t...(settings.host ? { host: settings.host } : {}),\n\t\t\t...(settings.port ? { port: settings.port } : {}),\n\t\t}\n\t\tconst common = {\n\t\t\t...extraConfig,\n\t\t\t...(settings.password ? { password: settings.password } : {}),\n\t\t\t...(settings.username ? { username: settings.username } : {}),\n\t\t\t...(settings.tls ? { tls: {} } : {}),\n\t\t\tlazyConnect: true,\n\t\t}\n\t\tthis.client = settings.cluster\n\t\t\t? new Cluster([node], {\n\t\t\t\t\t...extraConfig,\n\t\t\t\t\tredisOptions: common,\n\t\t\t\t\tlazyConnect: true,\n\t\t\t\t})\n\t\t\t: new Redis({ ...common, ...node })\n\t\tthis.client.on('error', async (error) => {\n\t\t\tInstance.crash(new EquippedError(`Redis failed with error`, {}, error))\n\t\t})\n\t\tif (!extraConfig) Instance.on('start', async () => this.client.connect(), 1)\n\t\tInstance.on('close', async () => this.client.quit(), 1)\n\t}\n\n\tprivate getScopedKey(key: string): string {\n\t\treturn Instance.get().getScopedName(key, ':')\n\t}\n\n\tasync delete(key: string) {\n\t\tawait this.client.del(this.getScopedKey(key))\n\t}\n\n\tasync get(key: string) {\n\t\treturn await this.client.get(this.getScopedKey(key))\n\t}\n\n\tasync set(key: string, data: string, ttlInSecs: number) {\n\t\tif (ttlInSecs > 0) await this.client.setex(this.getScopedKey(key), ttlInSecs, data)\n\t\telse this.client.set(this.getScopedKey(key), data)\n\t}\n\n\tasync getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs: number) {\n\t\tconst cached = await this.get(this.getScopedKey(key))\n\t\tif (cached) return JSON.parse(cached)\n\n\t\tconst result = await fn()\n\t\tawait this.set(this.getScopedKey(key), JSON.stringify(result), ttlInSecs)\n\t}\n}\n",null]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _ioredis = require('ioredis');var _indexmincjs = require('../../errors/index.min.cjs');var _indexmincjs3 = require('../../instance/index.min.cjs');var _basemincjs = require('../base.min.cjs');class y extends _basemincjs.Cache{constructor(e,r){super();const s={...e.host?{host:e.host}:{},...e.port?{port:e.port}:{}},i={...r,...e.password?{password:e.password}:{},...e.username?{username:e.username}:{},...e.tls?{tls:{}}:{},lazyConnect:!0};this.client=e.cluster?new (0, _ioredis.Cluster)([s],{...r,redisOptions:i,lazyConnect:!0}):new (0, _ioredis.Redis)({...i,...s}),this.client.on("error",async o=>{_indexmincjs3.Instance.crash(new (0, _indexmincjs.EquippedError)("Redis failed with error",{},o))}),r||_indexmincjs3.Instance.on("start",async()=>this.client.connect(),1),_indexmincjs3.Instance.on("close",async()=>this.client.quit(),1)}async delete(e){await this.client.del(_indexmincjs3.Instance.get().getScopedName(e,":"))}async get(e){return await this.client.get(_indexmincjs3.Instance.get().getScopedName(e,":"))}async set(e,r,s){s>0?await this.client.setex(_indexmincjs3.Instance.get().getScopedName(e,":"),s,r):this.client.set(_indexmincjs3.Instance.get().getScopedName(e),r)}async getOrSet(e,r,s){const i=await this.get(_indexmincjs3.Instance.get().getScopedName(e,":"));if(i)return JSON.parse(i);const o=await r();await this.set(_indexmincjs3.Instance.get().getScopedName(e,":"),JSON.stringify(o),s)}}exports.RedisCache = y;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _ioredis = require('ioredis');var _indexmincjs = require('../../errors/index.min.cjs');var _indexmincjs3 = require('../../instance/index.min.cjs');var _basemincjs = require('../base.min.cjs');class f extends _basemincjs.Cache{constructor(e,t){super();const s={...e.host?{host:e.host}:{},...e.port?{port:e.port}:{}},r={...t,...e.password?{password:e.password}:{},...e.username?{username:e.username}:{},...e.tls?{tls:{}}:{},lazyConnect:!0};this.client=e.cluster?new (0, _ioredis.Cluster)([s],{...t,redisOptions:r,lazyConnect:!0}):new (0, _ioredis.Redis)({...r,...s}),this.client.on("error",async o=>{_indexmincjs3.Instance.crash(new (0, _indexmincjs.EquippedError)("Redis failed with error",{},o))}),t||_indexmincjs3.Instance.on("start",async()=>this.client.connect(),1),_indexmincjs3.Instance.on("close",async()=>this.client.quit(),1)}getScopedKey(e){return _indexmincjs3.Instance.get().getScopedName(e,":")}async delete(e){await this.client.del(this.getScopedKey(e))}async get(e){return await this.client.get(this.getScopedKey(e))}async set(e,t,s){s>0?await this.client.setex(this.getScopedKey(e),s,t):this.client.set(this.getScopedKey(e),t)}async getOrSet(e,t,s){const r=await this.get(this.getScopedKey(e));if(r)return JSON.parse(r);const o=await t();await this.set(this.getScopedKey(e),JSON.stringify(o),s)}}exports.RedisCache = f;
2
2
  //# sourceMappingURL=redis.min.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cache/types/redis.ts"],"names":["settings","node","common","extraConfig","Redis","error","Instance","key","ttlInSecs","fn","cached","result"],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/types/redis.min.cjs","sourcesContent":["import { Cluster, Redis, RedisOptions } from 'ioredis'\n\nimport { EquippedError } from '../../errors'\nimport { Instance } from '../../instance'\nimport { Cache } from '../base'\nimport { RedisConfig } from '../pipes'\n\nexport class RedisCache extends Cache {\n\tclient: Redis | Cluster\n\n\tconstructor(settings: RedisConfig, extraConfig?: Partial<RedisOptions>) {\n\t\tsuper()\n\t\tconst node = {\n\t\t\t...(settings.host ? { host: settings.host } : {}),\n\t\t\t...(settings.port ? { port: settings.port } : {}),\n\t\t}\n\t\tconst common = {\n\t\t\t...extraConfig,\n\t\t\t...(settings.password ? { password: settings.password } : {}),\n\t\t\t...(settings.username ? { username: settings.username } : {}),\n\t\t\t...(settings.tls ? { tls: {} } : {}),\n\t\t\tlazyConnect: true,\n\t\t}\n\t\tthis.client = settings.cluster\n\t\t\t? new Cluster([node], {\n\t\t\t\t\t...extraConfig,\n\t\t\t\t\tredisOptions: common,\n\t\t\t\t\tlazyConnect: true,\n\t\t\t\t})\n\t\t\t: new Redis({ ...common, ...node })\n\t\tthis.client.on('error', async (error) => {\n\t\t\tInstance.crash(new EquippedError(`Redis failed with error`, {}, error))\n\t\t})\n\t\tif (!extraConfig) Instance.on('start', async () => this.client.connect(), 1)\n\t\tInstance.on('close', async () => this.client.quit(), 1)\n\t}\n\n\tasync delete(key: string) {\n\t\tawait this.client.del(Instance.get().getScopedName(key, ':'))\n\t}\n\n\tasync get(key: string) {\n\t\treturn await this.client.get(Instance.get().getScopedName(key, ':'))\n\t}\n\n\tasync set(key: string, data: string, ttlInSecs: number) {\n\t\tif (ttlInSecs > 0) await this.client.setex(Instance.get().getScopedName(key, ':'), ttlInSecs, data)\n\t\telse this.client.set(Instance.get().getScopedName(key), data)\n\t}\n\n\tasync getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs: number) {\n\t\tconst cached = await this.get(Instance.get().getScopedName(key, ':'))\n\t\tif (cached) return JSON.parse(cached)\n\n\t\tconst result = await fn()\n\t\tawait this.set(Instance.get().getScopedName(key, ':'), JSON.stringify(result), ttlInSecs)\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/cache/types/redis.ts"],"names":["settings","node","common","extraConfig","Redis","error","Instance","key","data","ttlInSecs","fn"],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/types/redis.min.cjs","sourcesContent":["import { Cluster, Redis, RedisOptions } from 'ioredis'\n\nimport { EquippedError } from '../../errors'\nimport { Instance } from '../../instance'\nimport { Cache } from '../base'\nimport { RedisConfig } from '../pipes'\n\nexport class RedisCache extends Cache {\n\tclient: Redis | Cluster\n\n\tconstructor(settings: RedisConfig, extraConfig?: Partial<RedisOptions>) {\n\t\tsuper()\n\t\tconst node = {\n\t\t\t...(settings.host ? { host: settings.host } : {}),\n\t\t\t...(settings.port ? { port: settings.port } : {}),\n\t\t}\n\t\tconst common = {\n\t\t\t...extraConfig,\n\t\t\t...(settings.password ? { password: settings.password } : {}),\n\t\t\t...(settings.username ? { username: settings.username } : {}),\n\t\t\t...(settings.tls ? { tls: {} } : {}),\n\t\t\tlazyConnect: true,\n\t\t}\n\t\tthis.client = settings.cluster\n\t\t\t? new Cluster([node], {\n\t\t\t\t\t...extraConfig,\n\t\t\t\t\tredisOptions: common,\n\t\t\t\t\tlazyConnect: true,\n\t\t\t\t})\n\t\t\t: new Redis({ ...common, ...node })\n\t\tthis.client.on('error', async (error) => {\n\t\t\tInstance.crash(new EquippedError(`Redis failed with error`, {}, error))\n\t\t})\n\t\tif (!extraConfig) Instance.on('start', async () => this.client.connect(), 1)\n\t\tInstance.on('close', async () => this.client.quit(), 1)\n\t}\n\n\tprivate getScopedKey(key: string): string {\n\t\treturn Instance.get().getScopedName(key, ':')\n\t}\n\n\tasync delete(key: string) {\n\t\tawait this.client.del(this.getScopedKey(key))\n\t}\n\n\tasync get(key: string) {\n\t\treturn await this.client.get(this.getScopedKey(key))\n\t}\n\n\tasync set(key: string, data: string, ttlInSecs: number) {\n\t\tif (ttlInSecs > 0) await this.client.setex(this.getScopedKey(key), ttlInSecs, data)\n\t\telse this.client.set(this.getScopedKey(key), data)\n\t}\n\n\tasync getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs: number) {\n\t\tconst cached = await this.get(this.getScopedKey(key))\n\t\tif (cached) return JSON.parse(cached)\n\n\t\tconst result = await fn()\n\t\tawait this.set(this.getScopedKey(key), JSON.stringify(result), ttlInSecs)\n\t}\n}\n"]}
@@ -38,9 +38,12 @@ const instanceSettingsPipe = () => _valleyed.v.object({
38
38
  rabbitmq: _valleyed.v.merge(_indexcjs5.rabbitmqConfigPipe, _valleyed.v.object({ type: _valleyed.v.is("rabbitmq") }))
39
39
  })
40
40
  ),
41
- cache: _valleyed.v.discriminate((e) => _optionalChain([e, 'optionalAccess', _3 => _3.type]), {
42
- redis: _valleyed.v.merge(_indexcjs.redisConfigPipe, _valleyed.v.object({ type: _valleyed.v.is("redis") }))
43
- }),
41
+ cache: _valleyed.v.optional(
42
+ _valleyed.v.discriminate((e) => _optionalChain([e, 'optionalAccess', _3 => _3.type]), {
43
+ "in-memory": _valleyed.v.object({ type: _valleyed.v.is("in-memory") }),
44
+ redis: _valleyed.v.merge(_indexcjs.redisConfigPipe, _valleyed.v.object({ type: _valleyed.v.is("redis") }))
45
+ })
46
+ ),
44
47
  jobs: _valleyed.v.optional(_valleyed.v.merge(_indexcjs7.redisJobsConfigPipe, _valleyed.v.object({ type: _valleyed.v.is("redis") }))),
45
48
  server: _valleyed.v.optional(
46
49
  _valleyed.v.object({
@@ -107,21 +110,21 @@ function mapSettingsToInstance(settings) {
107
110
  res: _pino2.default.stdSerializers.res
108
111
  }
109
112
  });
110
- const cache = new (0, _indexcjs.RedisCache)(settings.cache);
113
+ const cache = _optionalChain([settings, 'access', _4 => _4.cache, 'optionalAccess', _5 => _5.type]) === "in-memory" ? new (0, _indexcjs.InMemoryCache)() : _optionalChain([settings, 'access', _6 => _6.cache, 'optionalAccess', _7 => _7.type]) === "redis" ? new (0, _indexcjs.RedisCache)(settings.cache) : void 0;
111
114
  const jobs = settings.jobs ? new (0, _indexcjs7.RedisJob)(settings.jobs) : void 0;
112
- const eventBus = _optionalChain([settings, 'access', _4 => _4.eventBus, 'optionalAccess', _5 => _5.type]) === "kafka" ? new (0, _indexcjs5.KafkaEventBus)(deleteKeys(settings.eventBus, ["type"])) : _optionalChain([settings, 'access', _6 => _6.eventBus, 'optionalAccess', _7 => _7.type]) === "rabbitmq" ? new (0, _indexcjs5.RabbitMQEventBus)(deleteKeys(settings.eventBus, ["type"])) : void 0;
115
+ const eventBus = _optionalChain([settings, 'access', _8 => _8.eventBus, 'optionalAccess', _9 => _9.type]) === "kafka" ? new (0, _indexcjs5.KafkaEventBus)(deleteKeys(settings.eventBus, ["type"])) : _optionalChain([settings, 'access', _10 => _10.eventBus, 'optionalAccess', _11 => _11.type]) === "rabbitmq" ? new (0, _indexcjs5.RabbitMQEventBus)(deleteKeys(settings.eventBus, ["type"])) : void 0;
113
116
  const serverConfig = {
114
117
  app: settings.app,
115
118
  log,
116
119
  eventBus
117
120
  };
118
- const server = _optionalChain([settings, 'access', _8 => _8.server, 'optionalAccess', _9 => _9.type]) === "express" ? new (0, _indexcjs9.ExpressServer)({ ...serverConfig, config: settings.server }) : _optionalChain([settings, 'access', _10 => _10.server, 'optionalAccess', _11 => _11.type]) === "fastify" ? new (0, _indexcjs9.FastifyServer)({ ...serverConfig, config: settings.server }) : void 0;
119
- const changesConfig = _optionalChain([settings, 'access', _12 => _12.dbs, 'optionalAccess', _13 => _13.changes]) ? {
121
+ const server = _optionalChain([settings, 'access', _12 => _12.server, 'optionalAccess', _13 => _13.type]) === "express" ? new (0, _indexcjs9.ExpressServer)({ ...serverConfig, config: settings.server }) : _optionalChain([settings, 'access', _14 => _14.server, 'optionalAccess', _15 => _15.type]) === "fastify" ? new (0, _indexcjs9.FastifyServer)({ ...serverConfig, config: settings.server }) : void 0;
122
+ const changesConfig = _optionalChain([settings, 'access', _16 => _16.dbs, 'optionalAccess', _17 => _17.changes]) ? {
120
123
  debeziumUrl: settings.dbs.changes.debeziumUrl,
121
124
  eventBus: new (0, _indexcjs5.KafkaEventBus)(settings.dbs.changes.kafkaConfig)
122
125
  } : void 0;
123
126
  const dbs = Object.fromEntries(
124
- Object.entries(_nullishCoalesce(_optionalChain([settings, 'access', _14 => _14.dbs, 'optionalAccess', _15 => _15.types]), () => ( {}))).map(([key, config]) => [
127
+ Object.entries(_nullishCoalesce(_optionalChain([settings, 'access', _18 => _18.dbs, 'optionalAccess', _19 => _19.types]), () => ( {}))).map(([key, config]) => [
125
128
  key,
126
129
  config.type === "mongo" ? new (0, _indexcjs3.MongoDb)(config, { changes: changesConfig }) : void 0
127
130
  ])
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/instance/settings.ts","/home/runner/work/equipped/equipped/dist/cjs/instance/settings.cjs"],"names":[],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/instance/settings.cjs","sourcesContent":["import pino, { Logger } from 'pino'\nimport { ConditionalObjectKeys, IsInTypeList, PipeInput, PipeOutput, v } from 'valleyed'\n\nimport { Cache, RedisCache, redisConfigPipe } from '../cache'\nimport { MongoDb, mongoDbConfigPipe } from '../dbs'\nimport { EventBus, KafkaEventBus, RabbitMQEventBus, kafkaConfigPipe, rabbitmqConfigPipe } from '../events'\nimport { RedisJob, redisJobsConfigPipe } from '../jobs'\nimport { BaseApiKeysUtility, BaseTokensUtility, ExpressServer, FastifyServer, Server } from '../server'\n\nexport const instanceSettingsPipe = () =>\n\tv.object({\n\t\tapp: v.object({\n\t\t\tid: v.string(),\n\t\t\tname: v.string(),\n\t\t}),\n\t\tlog: v.defaults(\n\t\t\tv.object({\n\t\t\t\tlevel: v.defaults(v.in(['fatal', 'error', 'warn', 'info', 'debug', 'trace', 'silent'] as const), 'info'),\n\t\t\t}),\n\t\t\t{},\n\t\t),\n\t\tdbs: v.optional(\n\t\t\tv.object({\n\t\t\t\ttypes: v.record(\n\t\t\t\t\tv.string(),\n\t\t\t\t\tv.discriminate((e) => e?.type, {\n\t\t\t\t\t\tmongo: v.merge(mongoDbConfigPipe, v.object({ type: v.is('mongo' as const) })),\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\tchanges: v.optional(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tdebeziumUrl: v.string(),\n\t\t\t\t\t\tkafkaConfig: kafkaConfigPipe,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t}),\n\t\t),\n\t\teventBus: v.optional(\n\t\t\tv.discriminate((e: any) => e?.type, {\n\t\t\t\tkafka: v.merge(kafkaConfigPipe, v.object({ type: v.is('kafka' as const) })),\n\t\t\t\trabbitmq: v.merge(rabbitmqConfigPipe, v.object({ type: v.is('rabbitmq' as const) })),\n\t\t\t}),\n\t\t),\n\t\tcache: v.discriminate((e: any) => e?.type, {\n\t\t\tredis: v.merge(redisConfigPipe, v.object({ type: v.is('redis' as const) })),\n\t\t}),\n\t\tjobs: v.optional(v.merge(redisJobsConfigPipe, v.object({ type: v.is('redis' as const) }))),\n\t\tserver: v.optional(\n\t\t\tv.object({\n\t\t\t\ttype: v.in(['fastify', 'express'] as const),\n\t\t\t\tport: v.number(),\n\t\t\t\tpublicPath: v.optional(v.string()),\n\t\t\t\thealthPath: v.optional(v.string()),\n\t\t\t\topenapi: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tdocsVersion: v.defaults(v.string(), '1.0.0'),\n\t\t\t\t\t\tdocsBaseUrl: v.defaults(v.array(v.string()), ['/']),\n\t\t\t\t\t\tdocsPath: v.defaults(v.string(), '/__docs'),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t\trequests: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tlog: v.defaults(v.boolean(), true),\n\t\t\t\t\t\tpaginationDefaultLimit: v.defaults(v.number(), 100),\n\t\t\t\t\t\tmaxFileUploadSizeInMb: v.defaults(v.number(), 500),\n\t\t\t\t\t\trateLimit: v.defaults(\n\t\t\t\t\t\t\tv.object({\n\t\t\t\t\t\t\t\tenabled: v.defaults(v.boolean(), false),\n\t\t\t\t\t\t\t\tperiodInMs: v.defaults(v.number(), 60 * 60 * 1000),\n\t\t\t\t\t\t\t\tlimit: v.defaults(v.number(), 5000),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslowdown: v.defaults(\n\t\t\t\t\t\t\tv.object({\n\t\t\t\t\t\t\t\tenabled: v.defaults(v.boolean(), false),\n\t\t\t\t\t\t\t\tperiodInMs: v.defaults(v.number(), 10 * 60 * 1000),\n\t\t\t\t\t\t\t\tdelayAfter: v.defaults(v.number(), 2000),\n\t\t\t\t\t\t\t\tdelayInMs: v.defaults(v.number(), 500),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t\trequestsAuth: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\ttokens: v.optional(v.instanceOf(BaseTokensUtility)),\n\t\t\t\t\t\tapiKey: v.optional(v.instanceOf(BaseApiKeysUtility)),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t}),\n\t\t),\n\t\tutils: v.defaults(\n\t\t\tv.object({\n\t\t\t\thashSaltRounds: v.defaults(v.number(), 10),\n\t\t\t}),\n\t\t\t{},\n\t\t),\n\t})\n\nexport type Settings = PipeOutput<ReturnType<typeof instanceSettingsPipe>>\nexport type SettingsInput = ConditionalObjectKeys<PipeInput<ReturnType<typeof instanceSettingsPipe>>>\n\ntype DbTypesMap = { mongo: MongoDb }\ntype ReshapeDbs<T extends SettingsInput> =\n\tIsInTypeList<NonNullable<T['dbs']>['types'], [unknown]> extends true\n\t\t? {}\n\t\t: {\n\t\t\t\t[K in keyof NonNullable<T['dbs']>['types']]: NonNullable<T['dbs']>['types'][K] extends { type: keyof DbTypesMap }\n\t\t\t\t\t? DbTypesMap[NonNullable<T['dbs']>['types'][K]['type']]\n\t\t\t\t\t: never\n\t\t\t}\n\ntype AddUndefined<T, C> = IsInTypeList<C, [undefined, unknown]> extends true ? undefined : T\nexport type MapSettingsToInstance<T extends SettingsInput> = {\n\tapp: T['app']\n\tlog: Logger<any, boolean>\n\teventBus: AddUndefined<EventBus, T['eventBus']>\n\tcache: AddUndefined<Cache, T['cache']>\n\tjobs: AddUndefined<RedisJob, T['jobs']>\n\tserver: AddUndefined<Server, T['server']>\n\tdbs: ReshapeDbs<T>\n\tutils: T['utils']\n}\n\nexport function mapSettingsToInstance<T extends Settings>(settings: T): MapSettingsToInstance<T> {\n\tconst log = pino<any>({\n\t\tlevel: settings.log.level,\n\t\tserializers: {\n\t\t\terr: pino.stdSerializers.err,\n\t\t\terror: pino.stdSerializers.err,\n\t\t\treq: pino.stdSerializers.req,\n\t\t\tres: pino.stdSerializers.res,\n\t\t},\n\t})\n\tconst cache = new RedisCache(settings.cache)\n\tconst jobs = settings.jobs ? new RedisJob(settings.jobs) : undefined\n\tconst eventBus =\n\t\tsettings.eventBus?.type === 'kafka'\n\t\t\t? new KafkaEventBus(deleteKeys(settings.eventBus, ['type']))\n\t\t\t: settings.eventBus?.type === 'rabbitmq'\n\t\t\t\t? new RabbitMQEventBus(deleteKeys(settings.eventBus, ['type']))\n\t\t\t\t: undefined\n\n\tconst serverConfig = {\n\t\tapp: settings.app,\n\t\tlog,\n\t\teventBus,\n\t}\n\tconst server =\n\t\tsettings.server?.type === 'express'\n\t\t\t? new ExpressServer({ ...serverConfig, config: settings.server })\n\t\t\t: settings.server?.type === 'fastify'\n\t\t\t\t? new FastifyServer({ ...serverConfig, config: settings.server })\n\t\t\t\t: undefined\n\n\tconst changesConfig = settings.dbs?.changes\n\t\t? {\n\t\t\t\tdebeziumUrl: settings.dbs.changes.debeziumUrl,\n\t\t\t\teventBus: new KafkaEventBus(settings.dbs.changes.kafkaConfig),\n\t\t\t}\n\t\t: undefined\n\n\tconst dbs = Object.fromEntries(\n\t\tObject.entries(settings.dbs?.types ?? {}).map(([key, config]) => [\n\t\t\tkey,\n\t\t\tconfig.type === 'mongo' ? new MongoDb(config, { changes: changesConfig }) : undefined,\n\t\t]),\n\t)\n\n\treturn {\n\t\tapp: settings.app,\n\t\tutils: settings.utils,\n\t\tlog,\n\t\teventBus: eventBus as any,\n\t\tcache: cache as any,\n\t\tjobs: jobs as any,\n\t\tserver: server as any,\n\t\tdbs: dbs as any,\n\t}\n}\n\nfunction deleteKeys<T extends object, K extends keyof T>(data: T, keys: K[]) {\n\tfor (const key of keys) delete data[key]\n\treturn data\n}\n",null]}
1
+ {"version":3,"sources":["../../../src/instance/settings.ts","/home/runner/work/equipped/equipped/dist/cjs/instance/settings.cjs"],"names":[],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/instance/settings.cjs","sourcesContent":["import pino, { Logger } from 'pino'\nimport { ConditionalObjectKeys, IsInTypeList, PipeInput, PipeOutput, v } from 'valleyed'\n\nimport { Cache, InMemoryCache, RedisCache, redisConfigPipe } from '../cache'\nimport { MongoDb, mongoDbConfigPipe } from '../dbs'\nimport { EventBus, KafkaEventBus, RabbitMQEventBus, kafkaConfigPipe, rabbitmqConfigPipe } from '../events'\nimport { RedisJob, redisJobsConfigPipe } from '../jobs'\nimport { BaseApiKeysUtility, BaseTokensUtility, ExpressServer, FastifyServer, Server } from '../server'\n\nexport const instanceSettingsPipe = () =>\n\tv.object({\n\t\tapp: v.object({\n\t\t\tid: v.string(),\n\t\t\tname: v.string(),\n\t\t}),\n\t\tlog: v.defaults(\n\t\t\tv.object({\n\t\t\t\tlevel: v.defaults(v.in(['fatal', 'error', 'warn', 'info', 'debug', 'trace', 'silent'] as const), 'info'),\n\t\t\t}),\n\t\t\t{},\n\t\t),\n\t\tdbs: v.optional(\n\t\t\tv.object({\n\t\t\t\ttypes: v.record(\n\t\t\t\t\tv.string(),\n\t\t\t\t\tv.discriminate((e) => e?.type, {\n\t\t\t\t\t\tmongo: v.merge(mongoDbConfigPipe, v.object({ type: v.is('mongo' as const) })),\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\tchanges: v.optional(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tdebeziumUrl: v.string(),\n\t\t\t\t\t\tkafkaConfig: kafkaConfigPipe,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t}),\n\t\t),\n\t\teventBus: v.optional(\n\t\t\tv.discriminate((e: any) => e?.type, {\n\t\t\t\tkafka: v.merge(kafkaConfigPipe, v.object({ type: v.is('kafka' as const) })),\n\t\t\t\trabbitmq: v.merge(rabbitmqConfigPipe, v.object({ type: v.is('rabbitmq' as const) })),\n\t\t\t}),\n\t\t),\n\t\tcache: v.optional(\n\t\t\tv.discriminate((e: any) => e?.type, {\n\t\t\t\t'in-memory': v.object({ type: v.is('in-memory' as const) }),\n\t\t\t\tredis: v.merge(redisConfigPipe, v.object({ type: v.is('redis' as const) })),\n\t\t\t}),\n\t\t),\n\t\tjobs: v.optional(v.merge(redisJobsConfigPipe, v.object({ type: v.is('redis' as const) }))),\n\t\tserver: v.optional(\n\t\t\tv.object({\n\t\t\t\ttype: v.in(['fastify', 'express'] as const),\n\t\t\t\tport: v.number(),\n\t\t\t\tpublicPath: v.optional(v.string()),\n\t\t\t\thealthPath: v.optional(v.string()),\n\t\t\t\topenapi: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tdocsVersion: v.defaults(v.string(), '1.0.0'),\n\t\t\t\t\t\tdocsBaseUrl: v.defaults(v.array(v.string()), ['/']),\n\t\t\t\t\t\tdocsPath: v.defaults(v.string(), '/__docs'),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t\trequests: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tlog: v.defaults(v.boolean(), true),\n\t\t\t\t\t\tpaginationDefaultLimit: v.defaults(v.number(), 100),\n\t\t\t\t\t\tmaxFileUploadSizeInMb: v.defaults(v.number(), 500),\n\t\t\t\t\t\trateLimit: v.defaults(\n\t\t\t\t\t\t\tv.object({\n\t\t\t\t\t\t\t\tenabled: v.defaults(v.boolean(), false),\n\t\t\t\t\t\t\t\tperiodInMs: v.defaults(v.number(), 60 * 60 * 1000),\n\t\t\t\t\t\t\t\tlimit: v.defaults(v.number(), 5000),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslowdown: v.defaults(\n\t\t\t\t\t\t\tv.object({\n\t\t\t\t\t\t\t\tenabled: v.defaults(v.boolean(), false),\n\t\t\t\t\t\t\t\tperiodInMs: v.defaults(v.number(), 10 * 60 * 1000),\n\t\t\t\t\t\t\t\tdelayAfter: v.defaults(v.number(), 2000),\n\t\t\t\t\t\t\t\tdelayInMs: v.defaults(v.number(), 500),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t\trequestsAuth: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\ttokens: v.optional(v.instanceOf(BaseTokensUtility)),\n\t\t\t\t\t\tapiKey: v.optional(v.instanceOf(BaseApiKeysUtility)),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t}),\n\t\t),\n\t\tutils: v.defaults(\n\t\t\tv.object({\n\t\t\t\thashSaltRounds: v.defaults(v.number(), 10),\n\t\t\t}),\n\t\t\t{},\n\t\t),\n\t})\n\nexport type Settings = PipeOutput<ReturnType<typeof instanceSettingsPipe>>\nexport type SettingsInput = ConditionalObjectKeys<PipeInput<ReturnType<typeof instanceSettingsPipe>>>\n\ntype DbTypesMap = { mongo: MongoDb }\ntype ReshapeDbs<T extends SettingsInput> =\n\tIsInTypeList<NonNullable<T['dbs']>['types'], [unknown]> extends true\n\t\t? {}\n\t\t: {\n\t\t\t\t[K in keyof NonNullable<T['dbs']>['types']]: NonNullable<T['dbs']>['types'][K] extends { type: keyof DbTypesMap }\n\t\t\t\t\t? DbTypesMap[NonNullable<T['dbs']>['types'][K]['type']]\n\t\t\t\t\t: never\n\t\t\t}\n\ntype AddUndefined<T, C> = IsInTypeList<C, [undefined, unknown]> extends true ? undefined : T\nexport type MapSettingsToInstance<T extends SettingsInput> = {\n\tapp: T['app']\n\tlog: Logger<any, boolean>\n\teventBus: AddUndefined<EventBus, T['eventBus']>\n\tcache: AddUndefined<Cache, T['cache']>\n\tjobs: AddUndefined<RedisJob, T['jobs']>\n\tserver: AddUndefined<Server, T['server']>\n\tdbs: ReshapeDbs<T>\n\tutils: T['utils']\n}\n\nexport function mapSettingsToInstance<T extends Settings>(settings: T): MapSettingsToInstance<T> {\n\tconst log = pino<any>({\n\t\tlevel: settings.log.level,\n\t\tserializers: {\n\t\t\terr: pino.stdSerializers.err,\n\t\t\terror: pino.stdSerializers.err,\n\t\t\treq: pino.stdSerializers.req,\n\t\t\tres: pino.stdSerializers.res,\n\t\t},\n\t})\n\tconst cache =\n\t\tsettings.cache?.type === 'in-memory'\n\t\t\t? new InMemoryCache()\n\t\t\t: settings.cache?.type === 'redis'\n\t\t\t\t? new RedisCache(settings.cache)\n\t\t\t\t: undefined\n\tconst jobs = settings.jobs ? new RedisJob(settings.jobs) : undefined\n\tconst eventBus =\n\t\tsettings.eventBus?.type === 'kafka'\n\t\t\t? new KafkaEventBus(deleteKeys(settings.eventBus, ['type']))\n\t\t\t: settings.eventBus?.type === 'rabbitmq'\n\t\t\t\t? new RabbitMQEventBus(deleteKeys(settings.eventBus, ['type']))\n\t\t\t\t: undefined\n\n\tconst serverConfig = {\n\t\tapp: settings.app,\n\t\tlog,\n\t\teventBus,\n\t}\n\tconst server =\n\t\tsettings.server?.type === 'express'\n\t\t\t? new ExpressServer({ ...serverConfig, config: settings.server })\n\t\t\t: settings.server?.type === 'fastify'\n\t\t\t\t? new FastifyServer({ ...serverConfig, config: settings.server })\n\t\t\t\t: undefined\n\n\tconst changesConfig = settings.dbs?.changes\n\t\t? {\n\t\t\t\tdebeziumUrl: settings.dbs.changes.debeziumUrl,\n\t\t\t\teventBus: new KafkaEventBus(settings.dbs.changes.kafkaConfig),\n\t\t\t}\n\t\t: undefined\n\n\tconst dbs = Object.fromEntries(\n\t\tObject.entries(settings.dbs?.types ?? {}).map(([key, config]) => [\n\t\t\tkey,\n\t\t\tconfig.type === 'mongo' ? new MongoDb(config, { changes: changesConfig }) : undefined,\n\t\t]),\n\t)\n\n\treturn {\n\t\tapp: settings.app,\n\t\tutils: settings.utils,\n\t\tlog,\n\t\teventBus: eventBus as any,\n\t\tcache: cache as any,\n\t\tjobs: jobs as any,\n\t\tserver: server as any,\n\t\tdbs: dbs as any,\n\t}\n}\n\nfunction deleteKeys<T extends object, K extends keyof T>(data: T, keys: K[]) {\n\tfor (const key of keys) delete data[key]\n\treturn data\n}\n",null]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _pino = require('pino'); var _pino2 = _interopRequireDefault(_pino);var _valleyed = require('valleyed');var _indexmincjs = require('../cache/index.min.cjs');var _indexmincjs3 = require('../dbs/index.min.cjs');var _indexmincjs5 = require('../events/index.min.cjs');var _indexmincjs7 = require('../jobs/index.min.cjs');var _indexmincjs9 = require('../server/index.min.cjs');const F=()=>_valleyed.v.object({app:_valleyed.v.object({id:_valleyed.v.string(),name:_valleyed.v.string()}),log:_valleyed.v.defaults(_valleyed.v.object({level:_valleyed.v.defaults(_valleyed.v.in(["fatal","error","warn","info","debug","trace","silent"]),"info")}),{}),dbs:_valleyed.v.optional(_valleyed.v.object({types:_valleyed.v.record(_valleyed.v.string(),_valleyed.v.discriminate(t=>_optionalChain([t, 'optionalAccess', _2 => _2.type]),{mongo:_valleyed.v.merge(_indexmincjs3.mongoDbConfigPipe,_valleyed.v.object({type:_valleyed.v.is("mongo")}))})),changes:_valleyed.v.optional(_valleyed.v.object({debeziumUrl:_valleyed.v.string(),kafkaConfig:_indexmincjs5.kafkaConfigPipe}))})),eventBus:_valleyed.v.optional(_valleyed.v.discriminate(t=>_optionalChain([t, 'optionalAccess', _3 => _3.type]),{kafka:_valleyed.v.merge(_indexmincjs5.kafkaConfigPipe,_valleyed.v.object({type:_valleyed.v.is("kafka")})),rabbitmq:_valleyed.v.merge(_indexmincjs5.rabbitmqConfigPipe,_valleyed.v.object({type:_valleyed.v.is("rabbitmq")}))})),cache:_valleyed.v.discriminate(t=>_optionalChain([t, 'optionalAccess', _4 => _4.type]),{redis:_valleyed.v.merge(_indexmincjs.redisConfigPipe,_valleyed.v.object({type:_valleyed.v.is("redis")}))}),jobs:_valleyed.v.optional(_valleyed.v.merge(_indexmincjs7.redisJobsConfigPipe,_valleyed.v.object({type:_valleyed.v.is("redis")}))),server:_valleyed.v.optional(_valleyed.v.object({type:_valleyed.v.in(["fastify","express"]),port:_valleyed.v.number(),publicPath:_valleyed.v.optional(_valleyed.v.string()),healthPath:_valleyed.v.optional(_valleyed.v.string()),openapi:_valleyed.v.defaults(_valleyed.v.object({docsVersion:_valleyed.v.defaults(_valleyed.v.string(),"1.0.0"),docsBaseUrl:_valleyed.v.defaults(_valleyed.v.array(_valleyed.v.string()),["/"]),docsPath:_valleyed.v.defaults(_valleyed.v.string(),"/__docs")}),{}),requests:_valleyed.v.defaults(_valleyed.v.object({log:_valleyed.v.defaults(_valleyed.v.boolean(),!0),paginationDefaultLimit:_valleyed.v.defaults(_valleyed.v.number(),100),maxFileUploadSizeInMb:_valleyed.v.defaults(_valleyed.v.number(),500),rateLimit:_valleyed.v.defaults(_valleyed.v.object({enabled:_valleyed.v.defaults(_valleyed.v.boolean(),!1),periodInMs:_valleyed.v.defaults(_valleyed.v.number(),60*60*1e3),limit:_valleyed.v.defaults(_valleyed.v.number(),5e3)}),{}),slowdown:_valleyed.v.defaults(_valleyed.v.object({enabled:_valleyed.v.defaults(_valleyed.v.boolean(),!1),periodInMs:_valleyed.v.defaults(_valleyed.v.number(),10*60*1e3),delayAfter:_valleyed.v.defaults(_valleyed.v.number(),2e3),delayInMs:_valleyed.v.defaults(_valleyed.v.number(),500)}),{})}),{}),requestsAuth:_valleyed.v.defaults(_valleyed.v.object({tokens:_valleyed.v.optional(_valleyed.v.instanceOf(_indexmincjs9.BaseTokensUtility)),apiKey:_valleyed.v.optional(_valleyed.v.instanceOf(_indexmincjs9.BaseApiKeysUtility))}),{})})),utils:_valleyed.v.defaults(_valleyed.v.object({hashSaltRounds:_valleyed.v.defaults(_valleyed.v.number(),10)}),{})});function _(t){const s=_pino2.default.call(void 0, {level:t.log.level,serializers:{err:_pino2.default.stdSerializers.err,error:_pino2.default.stdSerializers.err,req:_pino2.default.stdSerializers.req,res:_pino2.default.stdSerializers.res}}),o=new (0, _indexmincjs.RedisCache)(t.cache),u=t.jobs?new (0, _indexmincjs7.RedisJob)(t.jobs):void 0,a=_optionalChain([t, 'access', _5 => _5.eventBus, 'optionalAccess', _6 => _6.type])==="kafka"?new (0, _indexmincjs5.KafkaEventBus)(l(t.eventBus,["type"])):_optionalChain([t, 'access', _7 => _7.eventBus, 'optionalAccess', _8 => _8.type])==="rabbitmq"?new (0, _indexmincjs5.RabbitMQEventBus)(l(t.eventBus,["type"])):void 0,i={app:t.app,log:s,eventBus:a},b=_optionalChain([t, 'access', _9 => _9.server, 'optionalAccess', _10 => _10.type])==="express"?new (0, _indexmincjs9.ExpressServer)({...i,config:t.server}):_optionalChain([t, 'access', _11 => _11.server, 'optionalAccess', _12 => _12.type])==="fastify"?new (0, _indexmincjs9.FastifyServer)({...i,config:t.server}):void 0,f=_optionalChain([t, 'access', _13 => _13.dbs, 'optionalAccess', _14 => _14.changes])?{debeziumUrl:t.dbs.changes.debeziumUrl,eventBus:new (0, _indexmincjs5.KafkaEventBus)(t.dbs.changes.kafkaConfig)}:void 0,c=Object.fromEntries(Object.entries(_nullishCoalesce(_optionalChain([t, 'access', _15 => _15.dbs, 'optionalAccess', _16 => _16.types]), () => ({}))).map(([y,r])=>[y,r.type==="mongo"?new (0, _indexmincjs3.MongoDb)(r,{changes:f}):void 0]));return{app:t.app,utils:t.utils,log:s,eventBus:a,cache:o,jobs:u,server:b,dbs:c}}function l(t,s){for(const o of s)delete t[o];return t}exports.instanceSettingsPipe = F; exports.mapSettingsToInstance = _;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _pino = require('pino'); var _pino2 = _interopRequireDefault(_pino);var _valleyed = require('valleyed');var _indexmincjs = require('../cache/index.min.cjs');var _indexmincjs3 = require('../dbs/index.min.cjs');var _indexmincjs5 = require('../events/index.min.cjs');var _indexmincjs7 = require('../jobs/index.min.cjs');var _indexmincjs9 = require('../server/index.min.cjs');const _=()=>_valleyed.v.object({app:_valleyed.v.object({id:_valleyed.v.string(),name:_valleyed.v.string()}),log:_valleyed.v.defaults(_valleyed.v.object({level:_valleyed.v.defaults(_valleyed.v.in(["fatal","error","warn","info","debug","trace","silent"]),"info")}),{}),dbs:_valleyed.v.optional(_valleyed.v.object({types:_valleyed.v.record(_valleyed.v.string(),_valleyed.v.discriminate(t=>_optionalChain([t, 'optionalAccess', _2 => _2.type]),{mongo:_valleyed.v.merge(_indexmincjs3.mongoDbConfigPipe,_valleyed.v.object({type:_valleyed.v.is("mongo")}))})),changes:_valleyed.v.optional(_valleyed.v.object({debeziumUrl:_valleyed.v.string(),kafkaConfig:_indexmincjs5.kafkaConfigPipe}))})),eventBus:_valleyed.v.optional(_valleyed.v.discriminate(t=>_optionalChain([t, 'optionalAccess', _3 => _3.type]),{kafka:_valleyed.v.merge(_indexmincjs5.kafkaConfigPipe,_valleyed.v.object({type:_valleyed.v.is("kafka")})),rabbitmq:_valleyed.v.merge(_indexmincjs5.rabbitmqConfigPipe,_valleyed.v.object({type:_valleyed.v.is("rabbitmq")}))})),cache:_valleyed.v.optional(_valleyed.v.discriminate(t=>_optionalChain([t, 'optionalAccess', _4 => _4.type]),{"in-memory":_valleyed.v.object({type:_valleyed.v.is("in-memory")}),redis:_valleyed.v.merge(_indexmincjs.redisConfigPipe,_valleyed.v.object({type:_valleyed.v.is("redis")}))})),jobs:_valleyed.v.optional(_valleyed.v.merge(_indexmincjs7.redisJobsConfigPipe,_valleyed.v.object({type:_valleyed.v.is("redis")}))),server:_valleyed.v.optional(_valleyed.v.object({type:_valleyed.v.in(["fastify","express"]),port:_valleyed.v.number(),publicPath:_valleyed.v.optional(_valleyed.v.string()),healthPath:_valleyed.v.optional(_valleyed.v.string()),openapi:_valleyed.v.defaults(_valleyed.v.object({docsVersion:_valleyed.v.defaults(_valleyed.v.string(),"1.0.0"),docsBaseUrl:_valleyed.v.defaults(_valleyed.v.array(_valleyed.v.string()),["/"]),docsPath:_valleyed.v.defaults(_valleyed.v.string(),"/__docs")}),{}),requests:_valleyed.v.defaults(_valleyed.v.object({log:_valleyed.v.defaults(_valleyed.v.boolean(),!0),paginationDefaultLimit:_valleyed.v.defaults(_valleyed.v.number(),100),maxFileUploadSizeInMb:_valleyed.v.defaults(_valleyed.v.number(),500),rateLimit:_valleyed.v.defaults(_valleyed.v.object({enabled:_valleyed.v.defaults(_valleyed.v.boolean(),!1),periodInMs:_valleyed.v.defaults(_valleyed.v.number(),60*60*1e3),limit:_valleyed.v.defaults(_valleyed.v.number(),5e3)}),{}),slowdown:_valleyed.v.defaults(_valleyed.v.object({enabled:_valleyed.v.defaults(_valleyed.v.boolean(),!1),periodInMs:_valleyed.v.defaults(_valleyed.v.number(),10*60*1e3),delayAfter:_valleyed.v.defaults(_valleyed.v.number(),2e3),delayInMs:_valleyed.v.defaults(_valleyed.v.number(),500)}),{})}),{}),requestsAuth:_valleyed.v.defaults(_valleyed.v.object({tokens:_valleyed.v.optional(_valleyed.v.instanceOf(_indexmincjs9.BaseTokensUtility)),apiKey:_valleyed.v.optional(_valleyed.v.instanceOf(_indexmincjs9.BaseApiKeysUtility))}),{})})),utils:_valleyed.v.defaults(_valleyed.v.object({hashSaltRounds:_valleyed.v.defaults(_valleyed.v.number(),10)}),{})});function Q(t){const s=_pino2.default.call(void 0, {level:t.log.level,serializers:{err:_pino2.default.stdSerializers.err,error:_pino2.default.stdSerializers.err,req:_pino2.default.stdSerializers.req,res:_pino2.default.stdSerializers.res}}),o=_optionalChain([t, 'access', _5 => _5.cache, 'optionalAccess', _6 => _6.type])==="in-memory"?new _indexmincjs.InMemoryCache:_optionalChain([t, 'access', _7 => _7.cache, 'optionalAccess', _8 => _8.type])==="redis"?new (0, _indexmincjs.RedisCache)(t.cache):void 0,u=t.jobs?new (0, _indexmincjs7.RedisJob)(t.jobs):void 0,a=_optionalChain([t, 'access', _9 => _9.eventBus, 'optionalAccess', _10 => _10.type])==="kafka"?new (0, _indexmincjs5.KafkaEventBus)(l(t.eventBus,["type"])):_optionalChain([t, 'access', _11 => _11.eventBus, 'optionalAccess', _12 => _12.type])==="rabbitmq"?new (0, _indexmincjs5.RabbitMQEventBus)(l(t.eventBus,["type"])):void 0,i={app:t.app,log:s,eventBus:a},b=_optionalChain([t, 'access', _13 => _13.server, 'optionalAccess', _14 => _14.type])==="express"?new (0, _indexmincjs9.ExpressServer)({...i,config:t.server}):_optionalChain([t, 'access', _15 => _15.server, 'optionalAccess', _16 => _16.type])==="fastify"?new (0, _indexmincjs9.FastifyServer)({...i,config:t.server}):void 0,c=_optionalChain([t, 'access', _17 => _17.dbs, 'optionalAccess', _18 => _18.changes])?{debeziumUrl:t.dbs.changes.debeziumUrl,eventBus:new (0, _indexmincjs5.KafkaEventBus)(t.dbs.changes.kafkaConfig)}:void 0,f=Object.fromEntries(Object.entries(_nullishCoalesce(_optionalChain([t, 'access', _19 => _19.dbs, 'optionalAccess', _20 => _20.types]), () => ({}))).map(([y,r])=>[y,r.type==="mongo"?new (0, _indexmincjs3.MongoDb)(r,{changes:c}):void 0]));return{app:t.app,utils:t.utils,log:s,eventBus:a,cache:o,jobs:u,server:b,dbs:f}}function l(t,s){for(const o of s)delete t[o];return t}exports.instanceSettingsPipe = _; exports.mapSettingsToInstance = Q;
2
2
  //# sourceMappingURL=settings.min.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/instance/settings.ts"],"names":["redisJobsConfigPipe","v","e","mongoDbConfigPipe","rabbitmqConfigPipe","redisConfigPipe","BaseTokensUtility","BaseApiKeysUtility","pino","cache","jobs","eventBus","settings","KafkaEventBus","deleteKeys","RabbitMQEventBus","log","ExpressServer","FastifyServer","changesConfig","dbs","key","server","data","keys"],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/instance/settings.min.cjs","sourcesContent":["import pino, { Logger } from 'pino'\nimport { ConditionalObjectKeys, IsInTypeList, PipeInput, PipeOutput, v } from 'valleyed'\n\nimport { Cache, RedisCache, redisConfigPipe } from '../cache'\nimport { MongoDb, mongoDbConfigPipe } from '../dbs'\nimport { EventBus, KafkaEventBus, RabbitMQEventBus, kafkaConfigPipe, rabbitmqConfigPipe } from '../events'\nimport { RedisJob, redisJobsConfigPipe } from '../jobs'\nimport { BaseApiKeysUtility, BaseTokensUtility, ExpressServer, FastifyServer, Server } from '../server'\n\nexport const instanceSettingsPipe = () =>\n\tv.object({\n\t\tapp: v.object({\n\t\t\tid: v.string(),\n\t\t\tname: v.string(),\n\t\t}),\n\t\tlog: v.defaults(\n\t\t\tv.object({\n\t\t\t\tlevel: v.defaults(v.in(['fatal', 'error', 'warn', 'info', 'debug', 'trace', 'silent'] as const), 'info'),\n\t\t\t}),\n\t\t\t{},\n\t\t),\n\t\tdbs: v.optional(\n\t\t\tv.object({\n\t\t\t\ttypes: v.record(\n\t\t\t\t\tv.string(),\n\t\t\t\t\tv.discriminate((e) => e?.type, {\n\t\t\t\t\t\tmongo: v.merge(mongoDbConfigPipe, v.object({ type: v.is('mongo' as const) })),\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\tchanges: v.optional(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tdebeziumUrl: v.string(),\n\t\t\t\t\t\tkafkaConfig: kafkaConfigPipe,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t}),\n\t\t),\n\t\teventBus: v.optional(\n\t\t\tv.discriminate((e: any) => e?.type, {\n\t\t\t\tkafka: v.merge(kafkaConfigPipe, v.object({ type: v.is('kafka' as const) })),\n\t\t\t\trabbitmq: v.merge(rabbitmqConfigPipe, v.object({ type: v.is('rabbitmq' as const) })),\n\t\t\t}),\n\t\t),\n\t\tcache: v.discriminate((e: any) => e?.type, {\n\t\t\tredis: v.merge(redisConfigPipe, v.object({ type: v.is('redis' as const) })),\n\t\t}),\n\t\tjobs: v.optional(v.merge(redisJobsConfigPipe, v.object({ type: v.is('redis' as const) }))),\n\t\tserver: v.optional(\n\t\t\tv.object({\n\t\t\t\ttype: v.in(['fastify', 'express'] as const),\n\t\t\t\tport: v.number(),\n\t\t\t\tpublicPath: v.optional(v.string()),\n\t\t\t\thealthPath: v.optional(v.string()),\n\t\t\t\topenapi: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tdocsVersion: v.defaults(v.string(), '1.0.0'),\n\t\t\t\t\t\tdocsBaseUrl: v.defaults(v.array(v.string()), ['/']),\n\t\t\t\t\t\tdocsPath: v.defaults(v.string(), '/__docs'),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t\trequests: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tlog: v.defaults(v.boolean(), true),\n\t\t\t\t\t\tpaginationDefaultLimit: v.defaults(v.number(), 100),\n\t\t\t\t\t\tmaxFileUploadSizeInMb: v.defaults(v.number(), 500),\n\t\t\t\t\t\trateLimit: v.defaults(\n\t\t\t\t\t\t\tv.object({\n\t\t\t\t\t\t\t\tenabled: v.defaults(v.boolean(), false),\n\t\t\t\t\t\t\t\tperiodInMs: v.defaults(v.number(), 60 * 60 * 1000),\n\t\t\t\t\t\t\t\tlimit: v.defaults(v.number(), 5000),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslowdown: v.defaults(\n\t\t\t\t\t\t\tv.object({\n\t\t\t\t\t\t\t\tenabled: v.defaults(v.boolean(), false),\n\t\t\t\t\t\t\t\tperiodInMs: v.defaults(v.number(), 10 * 60 * 1000),\n\t\t\t\t\t\t\t\tdelayAfter: v.defaults(v.number(), 2000),\n\t\t\t\t\t\t\t\tdelayInMs: v.defaults(v.number(), 500),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t\trequestsAuth: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\ttokens: v.optional(v.instanceOf(BaseTokensUtility)),\n\t\t\t\t\t\tapiKey: v.optional(v.instanceOf(BaseApiKeysUtility)),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t}),\n\t\t),\n\t\tutils: v.defaults(\n\t\t\tv.object({\n\t\t\t\thashSaltRounds: v.defaults(v.number(), 10),\n\t\t\t}),\n\t\t\t{},\n\t\t),\n\t})\n\nexport type Settings = PipeOutput<ReturnType<typeof instanceSettingsPipe>>\nexport type SettingsInput = ConditionalObjectKeys<PipeInput<ReturnType<typeof instanceSettingsPipe>>>\n\ntype DbTypesMap = { mongo: MongoDb }\ntype ReshapeDbs<T extends SettingsInput> =\n\tIsInTypeList<NonNullable<T['dbs']>['types'], [unknown]> extends true\n\t\t? {}\n\t\t: {\n\t\t\t\t[K in keyof NonNullable<T['dbs']>['types']]: NonNullable<T['dbs']>['types'][K] extends { type: keyof DbTypesMap }\n\t\t\t\t\t? DbTypesMap[NonNullable<T['dbs']>['types'][K]['type']]\n\t\t\t\t\t: never\n\t\t\t}\n\ntype AddUndefined<T, C> = IsInTypeList<C, [undefined, unknown]> extends true ? undefined : T\nexport type MapSettingsToInstance<T extends SettingsInput> = {\n\tapp: T['app']\n\tlog: Logger<any, boolean>\n\teventBus: AddUndefined<EventBus, T['eventBus']>\n\tcache: AddUndefined<Cache, T['cache']>\n\tjobs: AddUndefined<RedisJob, T['jobs']>\n\tserver: AddUndefined<Server, T['server']>\n\tdbs: ReshapeDbs<T>\n\tutils: T['utils']\n}\n\nexport function mapSettingsToInstance<T extends Settings>(settings: T): MapSettingsToInstance<T> {\n\tconst log = pino<any>({\n\t\tlevel: settings.log.level,\n\t\tserializers: {\n\t\t\terr: pino.stdSerializers.err,\n\t\t\terror: pino.stdSerializers.err,\n\t\t\treq: pino.stdSerializers.req,\n\t\t\tres: pino.stdSerializers.res,\n\t\t},\n\t})\n\tconst cache = new RedisCache(settings.cache)\n\tconst jobs = settings.jobs ? new RedisJob(settings.jobs) : undefined\n\tconst eventBus =\n\t\tsettings.eventBus?.type === 'kafka'\n\t\t\t? new KafkaEventBus(deleteKeys(settings.eventBus, ['type']))\n\t\t\t: settings.eventBus?.type === 'rabbitmq'\n\t\t\t\t? new RabbitMQEventBus(deleteKeys(settings.eventBus, ['type']))\n\t\t\t\t: undefined\n\n\tconst serverConfig = {\n\t\tapp: settings.app,\n\t\tlog,\n\t\teventBus,\n\t}\n\tconst server =\n\t\tsettings.server?.type === 'express'\n\t\t\t? new ExpressServer({ ...serverConfig, config: settings.server })\n\t\t\t: settings.server?.type === 'fastify'\n\t\t\t\t? new FastifyServer({ ...serverConfig, config: settings.server })\n\t\t\t\t: undefined\n\n\tconst changesConfig = settings.dbs?.changes\n\t\t? {\n\t\t\t\tdebeziumUrl: settings.dbs.changes.debeziumUrl,\n\t\t\t\teventBus: new KafkaEventBus(settings.dbs.changes.kafkaConfig),\n\t\t\t}\n\t\t: undefined\n\n\tconst dbs = Object.fromEntries(\n\t\tObject.entries(settings.dbs?.types ?? {}).map(([key, config]) => [\n\t\t\tkey,\n\t\t\tconfig.type === 'mongo' ? new MongoDb(config, { changes: changesConfig }) : undefined,\n\t\t]),\n\t)\n\n\treturn {\n\t\tapp: settings.app,\n\t\tutils: settings.utils,\n\t\tlog,\n\t\teventBus: eventBus as any,\n\t\tcache: cache as any,\n\t\tjobs: jobs as any,\n\t\tserver: server as any,\n\t\tdbs: dbs as any,\n\t}\n}\n\nfunction deleteKeys<T extends object, K extends keyof T>(data: T, keys: K[]) {\n\tfor (const key of keys) delete data[key]\n\treturn data\n}\n"]}
1
+ {"version":3,"sources":["../../../src/instance/settings.ts"],"names":["redisJobsConfigPipe","v","e","mongoDbConfigPipe","rabbitmqConfigPipe","redisConfigPipe","BaseTokensUtility","BaseApiKeysUtility","pino","cache","settings","eventBus","deleteKeys","RabbitMQEventBus","log","ExpressServer","FastifyServer","changesConfig","dbs","key","jobs","server","data","keys"],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/instance/settings.min.cjs","sourcesContent":["import pino, { Logger } from 'pino'\nimport { ConditionalObjectKeys, IsInTypeList, PipeInput, PipeOutput, v } from 'valleyed'\n\nimport { Cache, InMemoryCache, RedisCache, redisConfigPipe } from '../cache'\nimport { MongoDb, mongoDbConfigPipe } from '../dbs'\nimport { EventBus, KafkaEventBus, RabbitMQEventBus, kafkaConfigPipe, rabbitmqConfigPipe } from '../events'\nimport { RedisJob, redisJobsConfigPipe } from '../jobs'\nimport { BaseApiKeysUtility, BaseTokensUtility, ExpressServer, FastifyServer, Server } from '../server'\n\nexport const instanceSettingsPipe = () =>\n\tv.object({\n\t\tapp: v.object({\n\t\t\tid: v.string(),\n\t\t\tname: v.string(),\n\t\t}),\n\t\tlog: v.defaults(\n\t\t\tv.object({\n\t\t\t\tlevel: v.defaults(v.in(['fatal', 'error', 'warn', 'info', 'debug', 'trace', 'silent'] as const), 'info'),\n\t\t\t}),\n\t\t\t{},\n\t\t),\n\t\tdbs: v.optional(\n\t\t\tv.object({\n\t\t\t\ttypes: v.record(\n\t\t\t\t\tv.string(),\n\t\t\t\t\tv.discriminate((e) => e?.type, {\n\t\t\t\t\t\tmongo: v.merge(mongoDbConfigPipe, v.object({ type: v.is('mongo' as const) })),\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\tchanges: v.optional(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tdebeziumUrl: v.string(),\n\t\t\t\t\t\tkafkaConfig: kafkaConfigPipe,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t}),\n\t\t),\n\t\teventBus: v.optional(\n\t\t\tv.discriminate((e: any) => e?.type, {\n\t\t\t\tkafka: v.merge(kafkaConfigPipe, v.object({ type: v.is('kafka' as const) })),\n\t\t\t\trabbitmq: v.merge(rabbitmqConfigPipe, v.object({ type: v.is('rabbitmq' as const) })),\n\t\t\t}),\n\t\t),\n\t\tcache: v.optional(\n\t\t\tv.discriminate((e: any) => e?.type, {\n\t\t\t\t'in-memory': v.object({ type: v.is('in-memory' as const) }),\n\t\t\t\tredis: v.merge(redisConfigPipe, v.object({ type: v.is('redis' as const) })),\n\t\t\t}),\n\t\t),\n\t\tjobs: v.optional(v.merge(redisJobsConfigPipe, v.object({ type: v.is('redis' as const) }))),\n\t\tserver: v.optional(\n\t\t\tv.object({\n\t\t\t\ttype: v.in(['fastify', 'express'] as const),\n\t\t\t\tport: v.number(),\n\t\t\t\tpublicPath: v.optional(v.string()),\n\t\t\t\thealthPath: v.optional(v.string()),\n\t\t\t\topenapi: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tdocsVersion: v.defaults(v.string(), '1.0.0'),\n\t\t\t\t\t\tdocsBaseUrl: v.defaults(v.array(v.string()), ['/']),\n\t\t\t\t\t\tdocsPath: v.defaults(v.string(), '/__docs'),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t\trequests: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tlog: v.defaults(v.boolean(), true),\n\t\t\t\t\t\tpaginationDefaultLimit: v.defaults(v.number(), 100),\n\t\t\t\t\t\tmaxFileUploadSizeInMb: v.defaults(v.number(), 500),\n\t\t\t\t\t\trateLimit: v.defaults(\n\t\t\t\t\t\t\tv.object({\n\t\t\t\t\t\t\t\tenabled: v.defaults(v.boolean(), false),\n\t\t\t\t\t\t\t\tperiodInMs: v.defaults(v.number(), 60 * 60 * 1000),\n\t\t\t\t\t\t\t\tlimit: v.defaults(v.number(), 5000),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslowdown: v.defaults(\n\t\t\t\t\t\t\tv.object({\n\t\t\t\t\t\t\t\tenabled: v.defaults(v.boolean(), false),\n\t\t\t\t\t\t\t\tperiodInMs: v.defaults(v.number(), 10 * 60 * 1000),\n\t\t\t\t\t\t\t\tdelayAfter: v.defaults(v.number(), 2000),\n\t\t\t\t\t\t\t\tdelayInMs: v.defaults(v.number(), 500),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t\trequestsAuth: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\ttokens: v.optional(v.instanceOf(BaseTokensUtility)),\n\t\t\t\t\t\tapiKey: v.optional(v.instanceOf(BaseApiKeysUtility)),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t}),\n\t\t),\n\t\tutils: v.defaults(\n\t\t\tv.object({\n\t\t\t\thashSaltRounds: v.defaults(v.number(), 10),\n\t\t\t}),\n\t\t\t{},\n\t\t),\n\t})\n\nexport type Settings = PipeOutput<ReturnType<typeof instanceSettingsPipe>>\nexport type SettingsInput = ConditionalObjectKeys<PipeInput<ReturnType<typeof instanceSettingsPipe>>>\n\ntype DbTypesMap = { mongo: MongoDb }\ntype ReshapeDbs<T extends SettingsInput> =\n\tIsInTypeList<NonNullable<T['dbs']>['types'], [unknown]> extends true\n\t\t? {}\n\t\t: {\n\t\t\t\t[K in keyof NonNullable<T['dbs']>['types']]: NonNullable<T['dbs']>['types'][K] extends { type: keyof DbTypesMap }\n\t\t\t\t\t? DbTypesMap[NonNullable<T['dbs']>['types'][K]['type']]\n\t\t\t\t\t: never\n\t\t\t}\n\ntype AddUndefined<T, C> = IsInTypeList<C, [undefined, unknown]> extends true ? undefined : T\nexport type MapSettingsToInstance<T extends SettingsInput> = {\n\tapp: T['app']\n\tlog: Logger<any, boolean>\n\teventBus: AddUndefined<EventBus, T['eventBus']>\n\tcache: AddUndefined<Cache, T['cache']>\n\tjobs: AddUndefined<RedisJob, T['jobs']>\n\tserver: AddUndefined<Server, T['server']>\n\tdbs: ReshapeDbs<T>\n\tutils: T['utils']\n}\n\nexport function mapSettingsToInstance<T extends Settings>(settings: T): MapSettingsToInstance<T> {\n\tconst log = pino<any>({\n\t\tlevel: settings.log.level,\n\t\tserializers: {\n\t\t\terr: pino.stdSerializers.err,\n\t\t\terror: pino.stdSerializers.err,\n\t\t\treq: pino.stdSerializers.req,\n\t\t\tres: pino.stdSerializers.res,\n\t\t},\n\t})\n\tconst cache =\n\t\tsettings.cache?.type === 'in-memory'\n\t\t\t? new InMemoryCache()\n\t\t\t: settings.cache?.type === 'redis'\n\t\t\t\t? new RedisCache(settings.cache)\n\t\t\t\t: undefined\n\tconst jobs = settings.jobs ? new RedisJob(settings.jobs) : undefined\n\tconst eventBus =\n\t\tsettings.eventBus?.type === 'kafka'\n\t\t\t? new KafkaEventBus(deleteKeys(settings.eventBus, ['type']))\n\t\t\t: settings.eventBus?.type === 'rabbitmq'\n\t\t\t\t? new RabbitMQEventBus(deleteKeys(settings.eventBus, ['type']))\n\t\t\t\t: undefined\n\n\tconst serverConfig = {\n\t\tapp: settings.app,\n\t\tlog,\n\t\teventBus,\n\t}\n\tconst server =\n\t\tsettings.server?.type === 'express'\n\t\t\t? new ExpressServer({ ...serverConfig, config: settings.server })\n\t\t\t: settings.server?.type === 'fastify'\n\t\t\t\t? new FastifyServer({ ...serverConfig, config: settings.server })\n\t\t\t\t: undefined\n\n\tconst changesConfig = settings.dbs?.changes\n\t\t? {\n\t\t\t\tdebeziumUrl: settings.dbs.changes.debeziumUrl,\n\t\t\t\teventBus: new KafkaEventBus(settings.dbs.changes.kafkaConfig),\n\t\t\t}\n\t\t: undefined\n\n\tconst dbs = Object.fromEntries(\n\t\tObject.entries(settings.dbs?.types ?? {}).map(([key, config]) => [\n\t\t\tkey,\n\t\t\tconfig.type === 'mongo' ? new MongoDb(config, { changes: changesConfig }) : undefined,\n\t\t]),\n\t)\n\n\treturn {\n\t\tapp: settings.app,\n\t\tutils: settings.utils,\n\t\tlog,\n\t\teventBus: eventBus as any,\n\t\tcache: cache as any,\n\t\tjobs: jobs as any,\n\t\tserver: server as any,\n\t\tdbs: dbs as any,\n\t}\n}\n\nfunction deleteKeys<T extends object, K extends keyof T>(data: T, keys: K[]) {\n\tfor (const key of keys) delete data[key]\n\treturn data\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _jsonwebtoken = require('jsonwebtoken'); var _jsonwebtoken2 = _interopRequireDefault(_jsonwebtoken);
2
2
  var _indexcjs = require('../../errors/index.cjs');
3
- var _indexcjs3 = require('../../instance/index.cjs');
4
3
  var _typescjs = require('../types.cjs');
5
4
  class BaseTokensUtility {
6
5
  extractAccessTokenValue(headerValue) {
@@ -42,12 +41,12 @@ class CacheTokensUtility extends BaseTokensUtility {
42
41
  }
43
42
  async createAccessToken(payload) {
44
43
  const token = _jsonwebtoken2.default.sign(payload, this.options.accessTokenKey, { expiresIn: this.options.accessTokenTTL });
45
- await _indexcjs3.Instance.get().cache.set(this.#getAccessTokenKey(payload.id), token, this.options.accessTokenTTL);
44
+ await this.options.cache().set(this.#getAccessTokenKey(payload.id), token, this.options.accessTokenTTL);
46
45
  return token;
47
46
  }
48
47
  async createRefreshToken(payload) {
49
48
  const token = _jsonwebtoken2.default.sign(payload, this.options.refreshTokenKey, { expiresIn: this.options.refreshTokenTTL });
50
- await _indexcjs3.Instance.get().cache.set(this.#getRefreshTokenKey(payload.id), token, this.options.refreshTokenTTL);
49
+ await this.options.cache().set(this.#getRefreshTokenKey(payload.id), token, this.options.refreshTokenTTL);
51
50
  return token;
52
51
  }
53
52
  async verifyAccessToken(authHeader) {
@@ -74,16 +73,16 @@ class CacheTokensUtility extends BaseTokensUtility {
74
73
  }
75
74
  }
76
75
  async retrieveAccessTokenFor(userId) {
77
- return _indexcjs3.Instance.get().cache.get(this.#getAccessTokenKey(userId));
76
+ return this.options.cache().get(this.#getAccessTokenKey(userId));
78
77
  }
79
78
  async retrieveRefreshTokenFor(userId) {
80
- return _indexcjs3.Instance.get().cache.get(this.#getRefreshTokenKey(userId));
79
+ return this.options.cache().get(this.#getRefreshTokenKey(userId));
81
80
  }
82
81
  async deleteAccessTokenFor(userId) {
83
- await _indexcjs3.Instance.get().cache.delete(this.#getAccessTokenKey(userId));
82
+ await this.options.cache().delete(this.#getAccessTokenKey(userId));
84
83
  }
85
84
  async deleteRefreshTokenFor(userId) {
86
- await _indexcjs3.Instance.get().cache.delete(this.#getRefreshTokenKey(userId));
85
+ await this.options.cache().delete(this.#getRefreshTokenKey(userId));
87
86
  }
88
87
  }
89
88
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/server/requests-auth/tokens.ts","/home/runner/work/equipped/equipped/dist/cjs/server/requests-auth/tokens.cjs"],"names":[],"mappings":"AAAA,iRAAgB;AAGhB,kDAA2E;AAC3E,qDAAyB;AAEzB,wCAA4B;AAErB,MAAe,kBAAkB;AAAA,EAUvC,uBAAA,CAAwB,WAAA,EAAqB;AAC5C,IAAA,GAAA,CAAI,CAAC,WAAA,CAAY,UAAA,CAAW,SAAS,CAAA,EAAG,MAAM,IAAI,4BAAA,CAAc,CAAA,8CAAA,CAAA,EAAkD,EAAE,YAAY,CAAC,CAAA;AACjI,IAAA,OAAO,WAAA,CAAY,KAAA,CAAM,CAAC,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,cAAA,CACL,MAAA,EAIA,UAAA,EAIE;AACF,IAAA,MAAM,SAAA,EAAW,MAAM,IAAA,CAAK,iBAAA,CAAkB,MAAA,CAAO,WAAW,CAAA,CAAE,KAAA,CAAM,CAAC,GAAA,EAAA,GAAQ;AAChF,MAAA,MAAM,MAAA,EAAQ,GAAA;AACd,MAAA,GAAA,CAAI,KAAA,CAAM,WAAA,IAAe,qBAAA,CAAY,oBAAA,EAAsB,OAAO,IAAA;AAAA,MAAA,KAC7D,MAAM,GAAA;AAAA,IACZ,CAAC,CAAA;AACD,IAAA,GAAA,CAAI,QAAA,EAAU,OAAO,MAAA;AAErB,IAAA,MAAM,YAAA,EAAc,MAAM,IAAA,CAAK,kBAAA,CAAmB,MAAA,CAAO,YAAY,CAAA;AAarE,IAAA,MAAM,SAAA,EAAW,MAAM,UAAA,CAAW,WAAA,CAAY,EAAE,CAAA;AAChD,IAAA,OAAO;AAAA,MACN,WAAA,EAAa,MAAM,IAAA,CAAK,iBAAA,CAAkB,QAAA,CAAS,MAAM,CAAA;AAAA,MACzD,YAAA,EAAc,MAAM,IAAA,CAAK,kBAAA,CAAmB,QAAA,CAAS,OAAO;AAAA,IAC7D,CAAA;AAAA,EACD;AACD;AAWO,MAAM,mBAAA,QAA2B,kBAAkB;AAAA,EACzD,CAAA,iBAAA;AAAA,EACA,CAAA,kBAAA;AAAA,EACQ;AAAA,EACR,WAAA,CAAY,OAAA,EAA8C;AACzD,IAAA,KAAA,CAAM,CAAA;AACN,IAAA,IAAA,CAAK,QAAA,EAAU;AAAA,MACd,cAAA,EAAgB,gBAAA;AAAA,MAChB,eAAA,EAAiB,iBAAA;AAAA,MACjB,cAAA,EAAgB,GAAA,EAAK,EAAA;AAAA,MACrB,eAAA,EAAiB,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA;AAAA,MAChC,iBAAA,EAAmB,gBAAA;AAAA,MACnB,kBAAA,EAAoB,iBAAA;AAAA,MACpB,GAAG;AAAA,IACJ,CAAA;AACA,IAAA,IAAA,CAAK,CAAA,kBAAA,EAAqB,CAAC,MAAA,EAAA,GAAmB,CAAA,EAAA;AACC,IAAA;AAChD,EAAA;AAE2C,EAAA;AACL,IAAA;AACD,IAAA;AAC7B,IAAA;AACR,EAAA;AAE+C,EAAA;AACT,IAAA;AACD,IAAA;AAC7B,IAAA;AACR,EAAA;AAE4C,EAAA;AACvC,IAAA;AACsB,MAAA;AACY,MAAA;AAChB,MAAA;AACU,MAAA;AAEI,MAAA;AAC5B,MAAA;AACM,IAAA;AACM,MAAA;AACI,MAAA;AACc,MAAA;AACtC,IAAA;AACD,EAAA;AAEwC,EAAA;AACnC,IAAA;AACiC,MAAA;AACf,MAAA;AACd,MAAA;AACM,IAAA;AACmB,MAAA;AACjC,IAAA;AACD,EAAA;AAE6C,EAAA;AACP,IAAA;AACtC,EAAA;AAE8C,EAAA;AACR,IAAA;AACtC,EAAA;AAE2C,EAAA;AACH,IAAA;AACxC,EAAA;AAE4C,EAAA;AACJ,IAAA;AACxC,EAAA;AACD;ACtD2C;AACA;AACA;AACA","file":"/home/runner/work/equipped/equipped/dist/cjs/server/requests-auth/tokens.cjs","sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { RequestError } from '../../errors'\nimport { AuthorizationExpired, EquippedError, NotAuthenticatedError } from '../../errors'\nimport { Instance } from '../../instance'\nimport type { AuthUser, RefreshUser } from '../../types'\nimport { StatusCodes } from '../types'\n\nexport abstract class BaseTokensUtility {\n\tabstract createAccessToken(payload: AuthUser): Promise<string>\n\tabstract createRefreshToken(payload: RefreshUser): Promise<string>\n\tabstract verifyAccessToken(token: string): Promise<AuthUser>\n\tabstract verifyRefreshToken(token: string): Promise<RefreshUser>\n\tabstract retrieveAccessTokenFor(userId: string): Promise<string | null>\n\tabstract retrieveRefreshTokenFor(userId: string): Promise<string | null>\n\tabstract deleteAccessTokenFor(userId: string): Promise<void>\n\tabstract deleteRefreshTokenFor(userId: string): Promise<void>\n\n\textractAccessTokenValue(headerValue: string) {\n\t\tif (!headerValue.startsWith('Bearer ')) throw new EquippedError(`authorization header must begin with 'Bearer '`, { headerValue })\n\t\treturn headerValue.slice(7)\n\t}\n\n\tasync exchangeTokens(\n\t\ttokens: {\n\t\t\taccessToken: string\n\t\t\trefreshToken: string\n\t\t},\n\t\tgetPayload: (id: string) => Promise<{ access: AuthUser; refresh: RefreshUser }>,\n\t): Promise<{\n\t\taccessToken: string\n\t\trefreshToken: string\n\t}> {\n\t\tconst authUser = await this.verifyAccessToken(tokens.accessToken).catch((err) => {\n\t\t\tconst error = err as RequestError\n\t\t\tif (error.statusCode === StatusCodes.AuthorizationExpired) return null\n\t\t\telse throw err\n\t\t})\n\t\tif (authUser) return tokens\n\n\t\tconst refreshUser = await this.verifyRefreshToken(tokens.refreshToken)\n\t\t// const cachedRefreshToken = await getCachedRefreshToken(refreshUser.id)\n\n\t\t// If no cached value, means someone used your old token for a second time, so current one got deleted from cache\n\t\t// if (!cachedRefreshToken) throw new NotAuthenticatedError()\n\n\t\t// If cached value is not equal, means someone is trying to use an old token for a second time\n\t\t// if (refreshToken !== cachedRefreshToken) {\n\t\t// await deleteCachedAccessToken(refreshUser.id)\n\t\t// await deleteCachedRefreshToken(refreshUser.id)\n\t\t// throw new RefreshTokenMisusedError()\n\t\t// }\n\n\t\tconst payloads = await getPayload(refreshUser.id)\n\t\treturn {\n\t\t\taccessToken: await this.createAccessToken(payloads.access),\n\t\t\trefreshToken: await this.createRefreshToken(payloads.refresh),\n\t\t}\n\t}\n}\n\ntype CacheTokensUtilityOptions = {\n\taccessTokenKey: string\n\trefreshTokenKey: string\n\taccessTokenTTL: number\n\trefreshTokenTTL: number\n\taccessTokenPrefix: string\n\trefreshTokenPrefix: string\n}\n\nexport class CacheTokensUtility extends BaseTokensUtility {\n\t#getAccessTokenKey: (userId: string) => string\n\t#getRefreshTokenKey: (userId: string) => string\n\tprivate options: CacheTokensUtilityOptions\n\tconstructor(options?: Partial<CacheTokensUtilityOptions>) {\n\t\tsuper()\n\t\tthis.options = {\n\t\t\taccessTokenKey: 'accessTokenKey',\n\t\t\trefreshTokenKey: 'refreshTokenKey',\n\t\t\taccessTokenTTL: 60 * 60,\n\t\t\trefreshTokenTTL: 14 * 24 * 60 * 60,\n\t\t\taccessTokenPrefix: 'tokens:access:',\n\t\t\trefreshTokenPrefix: 'tokens:refresh:',\n\t\t\t...options,\n\t\t}\n\t\tthis.#getAccessTokenKey = (userId: string) => `${this.options.accessTokenPrefix}${userId}`\n\t\tthis.#getRefreshTokenKey = (userId: string) => `${this.options.refreshTokenPrefix}${userId}`\n\t}\n\n\tasync createAccessToken(payload: AuthUser) {\n\t\tconst token = jwt.sign(payload, this.options.accessTokenKey, { expiresIn: this.options.accessTokenTTL })\n\t\tawait Instance.get().cache.set(this.#getAccessTokenKey(payload.id), token, this.options.accessTokenTTL)\n\t\treturn token\n\t}\n\n\tasync createRefreshToken(payload: RefreshUser) {\n\t\tconst token = jwt.sign(payload, this.options.refreshTokenKey, { expiresIn: this.options.refreshTokenTTL })\n\t\tawait Instance.get().cache.set(this.#getRefreshTokenKey(payload.id), token, this.options.refreshTokenTTL)\n\t\treturn token\n\t}\n\n\tasync verifyAccessToken(authHeader: string) {\n\t\ttry {\n\t\t\tconst accessToken = this.extractAccessTokenValue(authHeader)\n\t\t\tconst user = jwt.verify(accessToken, this.options.accessTokenKey) as AuthUser\n\t\t\tif (!user) throw new NotAuthenticatedError()\n\t\t\tconst cachedToken = await this.retrieveAccessTokenFor(user.id)\n\t\t\t// Cached access token was deleted, e.g. by user roles being modified, so token needs to be treated as expired\n\t\t\tif (accessToken && accessToken !== cachedToken) throw new AuthorizationExpired()\n\t\t\treturn user\n\t\t} catch (err) {\n\t\t\tif (err instanceof AuthorizationExpired) throw err\n\t\t\tif (err instanceof jwt.TokenExpiredError) throw new AuthorizationExpired(undefined, err)\n\t\t\telse throw new NotAuthenticatedError(undefined, err)\n\t\t}\n\t}\n\n\tasync verifyRefreshToken(token: string) {\n\t\ttry {\n\t\t\tconst user = jwt.verify(token, this.options.refreshTokenKey) as RefreshUser\n\t\t\tif (!user) throw new NotAuthenticatedError()\n\t\t\treturn user\n\t\t} catch (err) {\n\t\t\tthrow new NotAuthenticatedError(undefined, err)\n\t\t}\n\t}\n\n\tasync retrieveAccessTokenFor(userId: string) {\n\t\treturn Instance.get().cache.get(this.#getAccessTokenKey(userId))\n\t}\n\n\tasync retrieveRefreshTokenFor(userId: string) {\n\t\treturn Instance.get().cache.get(this.#getRefreshTokenKey(userId))\n\t}\n\n\tasync deleteAccessTokenFor(userId: string) {\n\t\tawait Instance.get().cache.delete(this.#getAccessTokenKey(userId))\n\t}\n\n\tasync deleteRefreshTokenFor(userId: string) {\n\t\tawait Instance.get().cache.delete(this.#getRefreshTokenKey(userId))\n\t}\n}\n",null]}
1
+ {"version":3,"sources":["../../../../src/server/requests-auth/tokens.ts","/home/runner/work/equipped/equipped/dist/cjs/server/requests-auth/tokens.cjs"],"names":[],"mappings":"AAAA,iRAAgB;AAIhB,kDAA2E;AAE3E,wCAA4B;AAErB,MAAe,kBAAkB;AAAA,EAUvC,uBAAA,CAAwB,WAAA,EAAqB;AAC5C,IAAA,GAAA,CAAI,CAAC,WAAA,CAAY,UAAA,CAAW,SAAS,CAAA,EAAG,MAAM,IAAI,4BAAA,CAAc,CAAA,8CAAA,CAAA,EAAkD,EAAE,YAAY,CAAC,CAAA;AACjI,IAAA,OAAO,WAAA,CAAY,KAAA,CAAM,CAAC,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,cAAA,CACL,MAAA,EAIA,UAAA,EAIE;AACF,IAAA,MAAM,SAAA,EAAW,MAAM,IAAA,CAAK,iBAAA,CAAkB,MAAA,CAAO,WAAW,CAAA,CAAE,KAAA,CAAM,CAAC,GAAA,EAAA,GAAQ;AAChF,MAAA,MAAM,MAAA,EAAQ,GAAA;AACd,MAAA,GAAA,CAAI,KAAA,CAAM,WAAA,IAAe,qBAAA,CAAY,oBAAA,EAAsB,OAAO,IAAA;AAAA,MAAA,KAC7D,MAAM,GAAA;AAAA,IACZ,CAAC,CAAA;AACD,IAAA,GAAA,CAAI,QAAA,EAAU,OAAO,MAAA;AAErB,IAAA,MAAM,YAAA,EAAc,MAAM,IAAA,CAAK,kBAAA,CAAmB,MAAA,CAAO,YAAY,CAAA;AAarE,IAAA,MAAM,SAAA,EAAW,MAAM,UAAA,CAAW,WAAA,CAAY,EAAE,CAAA;AAChD,IAAA,OAAO;AAAA,MACN,WAAA,EAAa,MAAM,IAAA,CAAK,iBAAA,CAAkB,QAAA,CAAS,MAAM,CAAA;AAAA,MACzD,YAAA,EAAc,MAAM,IAAA,CAAK,kBAAA,CAAmB,QAAA,CAAS,OAAO;AAAA,IAC7D,CAAA;AAAA,EACD;AACD;AAYO,MAAM,mBAAA,QAA2B,kBAAkB;AAAA,EACzD,CAAA,iBAAA;AAAA,EACA,CAAA,kBAAA;AAAA,EACQ;AAAA,EACR,WAAA,CAAY,OAAA,EAAoC;AAC/C,IAAA,KAAA,CAAM,CAAA;AACN,IAAA,IAAA,CAAK,QAAA,EAAU;AAAA,MACd,cAAA,EAAgB,gBAAA;AAAA,MAChB,eAAA,EAAiB,iBAAA;AAAA,MACjB,cAAA,EAAgB,GAAA,EAAK,EAAA;AAAA,MACrB,eAAA,EAAiB,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,EAAA;AAAA,MAChC,iBAAA,EAAmB,gBAAA;AAAA,MACnB,kBAAA,EAAoB,iBAAA;AAAA,MACpB,GAAG;AAAA,IACJ,CAAA;AACA,IAAA,IAAA,CAAK,CAAA,kBAAA,EAAqB,CAAC,MAAA,EAAA,GAAmB,CAAA,EAAA;AACC,IAAA;AAChD,EAAA;AAE2C,EAAA;AACL,IAAA;AACD,IAAA;AAC7B,IAAA;AACR,EAAA;AAE+C,EAAA;AACT,IAAA;AACD,IAAA;AAC7B,IAAA;AACR,EAAA;AAE4C,EAAA;AACvC,IAAA;AACsB,MAAA;AACY,MAAA;AAChB,MAAA;AACU,MAAA;AAEI,MAAA;AAC5B,MAAA;AACM,IAAA;AACM,MAAA;AACI,MAAA;AACc,MAAA;AACtC,IAAA;AACD,EAAA;AAEwC,EAAA;AACnC,IAAA;AACiC,MAAA;AACf,MAAA;AACd,MAAA;AACM,IAAA;AACmB,MAAA;AACjC,IAAA;AACD,EAAA;AAE6C,EAAA;AACP,IAAA;AACtC,EAAA;AAE8C,EAAA;AACR,IAAA;AACtC,EAAA;AAE2C,EAAA;AACH,IAAA;AACxC,EAAA;AAE4C,EAAA;AACJ,IAAA;AACxC,EAAA;AACD;ACxD2C;AACA;AACA;AACA","file":"/home/runner/work/equipped/equipped/dist/cjs/server/requests-auth/tokens.cjs","sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { Cache } from '../../cache'\nimport type { RequestError } from '../../errors'\nimport { AuthorizationExpired, EquippedError, NotAuthenticatedError } from '../../errors'\nimport type { AuthUser, RefreshUser } from '../../types'\nimport { StatusCodes } from '../types'\n\nexport abstract class BaseTokensUtility {\n\tabstract createAccessToken(payload: AuthUser): Promise<string>\n\tabstract createRefreshToken(payload: RefreshUser): Promise<string>\n\tabstract verifyAccessToken(token: string): Promise<AuthUser>\n\tabstract verifyRefreshToken(token: string): Promise<RefreshUser>\n\tabstract retrieveAccessTokenFor(userId: string): Promise<string | null>\n\tabstract retrieveRefreshTokenFor(userId: string): Promise<string | null>\n\tabstract deleteAccessTokenFor(userId: string): Promise<void>\n\tabstract deleteRefreshTokenFor(userId: string): Promise<void>\n\n\textractAccessTokenValue(headerValue: string) {\n\t\tif (!headerValue.startsWith('Bearer ')) throw new EquippedError(`authorization header must begin with 'Bearer '`, { headerValue })\n\t\treturn headerValue.slice(7)\n\t}\n\n\tasync exchangeTokens(\n\t\ttokens: {\n\t\t\taccessToken: string\n\t\t\trefreshToken: string\n\t\t},\n\t\tgetPayload: (id: string) => Promise<{ access: AuthUser; refresh: RefreshUser }>,\n\t): Promise<{\n\t\taccessToken: string\n\t\trefreshToken: string\n\t}> {\n\t\tconst authUser = await this.verifyAccessToken(tokens.accessToken).catch((err) => {\n\t\t\tconst error = err as RequestError\n\t\t\tif (error.statusCode === StatusCodes.AuthorizationExpired) return null\n\t\t\telse throw err\n\t\t})\n\t\tif (authUser) return tokens\n\n\t\tconst refreshUser = await this.verifyRefreshToken(tokens.refreshToken)\n\t\t// const cachedRefreshToken = await getCachedRefreshToken(refreshUser.id)\n\n\t\t// If no cached value, means someone used your old token for a second time, so current one got deleted from cache\n\t\t// if (!cachedRefreshToken) throw new NotAuthenticatedError()\n\n\t\t// If cached value is not equal, means someone is trying to use an old token for a second time\n\t\t// if (refreshToken !== cachedRefreshToken) {\n\t\t// await deleteCachedAccessToken(refreshUser.id)\n\t\t// await deleteCachedRefreshToken(refreshUser.id)\n\t\t// throw new RefreshTokenMisusedError()\n\t\t// }\n\n\t\tconst payloads = await getPayload(refreshUser.id)\n\t\treturn {\n\t\t\taccessToken: await this.createAccessToken(payloads.access),\n\t\t\trefreshToken: await this.createRefreshToken(payloads.refresh),\n\t\t}\n\t}\n}\n\ntype CacheTokensUtilityOptions = {\n\tcache: () => Cache\n\taccessTokenKey?: string\n\trefreshTokenKey?: string\n\taccessTokenTTL?: number\n\trefreshTokenTTL?: number\n\taccessTokenPrefix?: string\n\trefreshTokenPrefix?: string\n}\n\nexport class CacheTokensUtility extends BaseTokensUtility {\n\t#getAccessTokenKey: (userId: string) => string\n\t#getRefreshTokenKey: (userId: string) => string\n\tprivate options: Required<CacheTokensUtilityOptions>\n\tconstructor(options: CacheTokensUtilityOptions) {\n\t\tsuper()\n\t\tthis.options = {\n\t\t\taccessTokenKey: 'accessTokenKey',\n\t\t\trefreshTokenKey: 'refreshTokenKey',\n\t\t\taccessTokenTTL: 60 * 60,\n\t\t\trefreshTokenTTL: 14 * 24 * 60 * 60,\n\t\t\taccessTokenPrefix: 'tokens:access:',\n\t\t\trefreshTokenPrefix: 'tokens:refresh:',\n\t\t\t...options,\n\t\t}\n\t\tthis.#getAccessTokenKey = (userId: string) => `${this.options.accessTokenPrefix}${userId}`\n\t\tthis.#getRefreshTokenKey = (userId: string) => `${this.options.refreshTokenPrefix}${userId}`\n\t}\n\n\tasync createAccessToken(payload: AuthUser) {\n\t\tconst token = jwt.sign(payload, this.options.accessTokenKey, { expiresIn: this.options.accessTokenTTL })\n\t\tawait this.options.cache().set(this.#getAccessTokenKey(payload.id), token, this.options.accessTokenTTL)\n\t\treturn token\n\t}\n\n\tasync createRefreshToken(payload: RefreshUser) {\n\t\tconst token = jwt.sign(payload, this.options.refreshTokenKey, { expiresIn: this.options.refreshTokenTTL })\n\t\tawait this.options.cache().set(this.#getRefreshTokenKey(payload.id), token, this.options.refreshTokenTTL)\n\t\treturn token\n\t}\n\n\tasync verifyAccessToken(authHeader: string) {\n\t\ttry {\n\t\t\tconst accessToken = this.extractAccessTokenValue(authHeader)\n\t\t\tconst user = jwt.verify(accessToken, this.options.accessTokenKey) as AuthUser\n\t\t\tif (!user) throw new NotAuthenticatedError()\n\t\t\tconst cachedToken = await this.retrieveAccessTokenFor(user.id)\n\t\t\t// Cached access token was deleted, e.g. by user roles being modified, so token needs to be treated as expired\n\t\t\tif (accessToken && accessToken !== cachedToken) throw new AuthorizationExpired()\n\t\t\treturn user\n\t\t} catch (err) {\n\t\t\tif (err instanceof AuthorizationExpired) throw err\n\t\t\tif (err instanceof jwt.TokenExpiredError) throw new AuthorizationExpired(undefined, err)\n\t\t\telse throw new NotAuthenticatedError(undefined, err)\n\t\t}\n\t}\n\n\tasync verifyRefreshToken(token: string) {\n\t\ttry {\n\t\t\tconst user = jwt.verify(token, this.options.refreshTokenKey) as RefreshUser\n\t\t\tif (!user) throw new NotAuthenticatedError()\n\t\t\treturn user\n\t\t} catch (err) {\n\t\t\tthrow new NotAuthenticatedError(undefined, err)\n\t\t}\n\t}\n\n\tasync retrieveAccessTokenFor(userId: string) {\n\t\treturn this.options.cache().get(this.#getAccessTokenKey(userId))\n\t}\n\n\tasync retrieveRefreshTokenFor(userId: string) {\n\t\treturn this.options.cache().get(this.#getRefreshTokenKey(userId))\n\t}\n\n\tasync deleteAccessTokenFor(userId: string) {\n\t\tawait this.options.cache().delete(this.#getAccessTokenKey(userId))\n\t}\n\n\tasync deleteRefreshTokenFor(userId: string) {\n\t\tawait this.options.cache().delete(this.#getRefreshTokenKey(userId))\n\t}\n}\n",null]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _jsonwebtoken = require('jsonwebtoken'); var _jsonwebtoken2 = _interopRequireDefault(_jsonwebtoken);var _indexmincjs = require('../../errors/index.min.cjs');var _indexmincjs3 = require('../../instance/index.min.cjs');var _typesmincjs = require('../types.min.cjs');class g{extractAccessTokenValue(e){if(!e.startsWith("Bearer "))throw new (0, _indexmincjs.EquippedError)("authorization header must begin with 'Bearer '",{headerValue:e});return e.slice(7)}async exchangeTokens(e,s){if(await this.verifyAccessToken(e.accessToken).catch(h=>{if(h.statusCode===_typesmincjs.StatusCodes.AuthorizationExpired)return null;throw h}))return e;const i=await this.verifyRefreshToken(e.refreshToken),a=await s(i.id);return{accessToken:await this.createAccessToken(a.access),refreshToken:await this.createRefreshToken(a.refresh)}}}class m extends g{#e;#s;constructor(e){super(),this.options={accessTokenKey:"accessTokenKey",refreshTokenKey:"refreshTokenKey",accessTokenTTL:60*60,refreshTokenTTL:14*24*60*60,accessTokenPrefix:"tokens:access:",refreshTokenPrefix:"tokens:refresh:",...e},this.#e=s=>`${this.options.accessTokenPrefix}${s}`,this.#s=s=>`${this.options.refreshTokenPrefix}${s}`}async createAccessToken(e){const s=_jsonwebtoken2.default.sign(e,this.options.accessTokenKey,{expiresIn:this.options.accessTokenTTL});return await _indexmincjs3.Instance.get().cache.set(this.#e(e.id),s,this.options.accessTokenTTL),s}async createRefreshToken(e){const s=_jsonwebtoken2.default.sign(e,this.options.refreshTokenKey,{expiresIn:this.options.refreshTokenTTL});return await _indexmincjs3.Instance.get().cache.set(this.#s(e.id),s,this.options.refreshTokenTTL),s}async verifyAccessToken(e){try{const s=this.extractAccessTokenValue(e),n=_jsonwebtoken2.default.verify(s,this.options.accessTokenKey);if(!n)throw new _indexmincjs.NotAuthenticatedError;const i=await this.retrieveAccessTokenFor(n.id);if(s&&s!==i)throw new _indexmincjs.AuthorizationExpired;return n}catch(s){throw s instanceof _indexmincjs.AuthorizationExpired?s:s instanceof _jsonwebtoken2.default.TokenExpiredError?new (0, _indexmincjs.AuthorizationExpired)(void 0,s):new (0, _indexmincjs.NotAuthenticatedError)(void 0,s)}}async verifyRefreshToken(e){try{const s=_jsonwebtoken2.default.verify(e,this.options.refreshTokenKey);if(!s)throw new _indexmincjs.NotAuthenticatedError;return s}catch(s){throw new (0, _indexmincjs.NotAuthenticatedError)(void 0,s)}}async retrieveAccessTokenFor(e){return _indexmincjs3.Instance.get().cache.get(this.#e(e))}async retrieveRefreshTokenFor(e){return _indexmincjs3.Instance.get().cache.get(this.#s(e))}async deleteAccessTokenFor(e){await _indexmincjs3.Instance.get().cache.delete(this.#e(e))}async deleteRefreshTokenFor(e){await _indexmincjs3.Instance.get().cache.delete(this.#s(e))}}exports.BaseTokensUtility = g; exports.CacheTokensUtility = m;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _jsonwebtoken = require('jsonwebtoken'); var _jsonwebtoken2 = _interopRequireDefault(_jsonwebtoken);var _indexmincjs = require('../../errors/index.min.cjs');var _typesmincjs = require('../types.min.cjs');class k{extractAccessTokenValue(e){if(!e.startsWith("Bearer "))throw new (0, _indexmincjs.EquippedError)("authorization header must begin with 'Bearer '",{headerValue:e});return e.slice(7)}async exchangeTokens(e,s){if(await this.verifyAccessToken(e.accessToken).catch(a=>{if(a.statusCode===_typesmincjs.StatusCodes.AuthorizationExpired)return null;throw a}))return e;const o=await this.verifyRefreshToken(e.refreshToken),c=await s(o.id);return{accessToken:await this.createAccessToken(c.access),refreshToken:await this.createRefreshToken(c.refresh)}}}class d extends k{#e;#s;constructor(e){super(),this.options={accessTokenKey:"accessTokenKey",refreshTokenKey:"refreshTokenKey",accessTokenTTL:60*60,refreshTokenTTL:14*24*60*60,accessTokenPrefix:"tokens:access:",refreshTokenPrefix:"tokens:refresh:",...e},this.#e=s=>`${this.options.accessTokenPrefix}${s}`,this.#s=s=>`${this.options.refreshTokenPrefix}${s}`}async createAccessToken(e){const s=_jsonwebtoken2.default.sign(e,this.options.accessTokenKey,{expiresIn:this.options.accessTokenTTL});return await this.options.cache().set(this.#e(e.id),s,this.options.accessTokenTTL),s}async createRefreshToken(e){const s=_jsonwebtoken2.default.sign(e,this.options.refreshTokenKey,{expiresIn:this.options.refreshTokenTTL});return await this.options.cache().set(this.#s(e.id),s,this.options.refreshTokenTTL),s}async verifyAccessToken(e){try{const s=this.extractAccessTokenValue(e),t=_jsonwebtoken2.default.verify(s,this.options.accessTokenKey);if(!t)throw new _indexmincjs.NotAuthenticatedError;const o=await this.retrieveAccessTokenFor(t.id);if(s&&s!==o)throw new _indexmincjs.AuthorizationExpired;return t}catch(s){throw s instanceof _indexmincjs.AuthorizationExpired?s:s instanceof _jsonwebtoken2.default.TokenExpiredError?new (0, _indexmincjs.AuthorizationExpired)(void 0,s):new (0, _indexmincjs.NotAuthenticatedError)(void 0,s)}}async verifyRefreshToken(e){try{const s=_jsonwebtoken2.default.verify(e,this.options.refreshTokenKey);if(!s)throw new _indexmincjs.NotAuthenticatedError;return s}catch(s){throw new (0, _indexmincjs.NotAuthenticatedError)(void 0,s)}}async retrieveAccessTokenFor(e){return this.options.cache().get(this.#e(e))}async retrieveRefreshTokenFor(e){return this.options.cache().get(this.#s(e))}async deleteAccessTokenFor(e){await this.options.cache().delete(this.#e(e))}async deleteRefreshTokenFor(e){await this.options.cache().delete(this.#s(e))}}exports.BaseTokensUtility = k; exports.CacheTokensUtility = d;
2
2
  //# sourceMappingURL=tokens.min.cjs.map