equipped 5.0.13 → 5.0.15

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 (59) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/cache/base.cjs.map +1 -1
  3. package/dist/cjs/cache/base.min.cjs.map +1 -1
  4. package/dist/cjs/cache/types/in-memory.cjs +3 -3
  5. package/dist/cjs/cache/types/in-memory.cjs.map +1 -1
  6. package/dist/cjs/cache/types/in-memory.min.cjs +1 -1
  7. package/dist/cjs/cache/types/in-memory.min.cjs.map +1 -1
  8. package/dist/cjs/cache/types/redis.cjs +1 -1
  9. package/dist/cjs/cache/types/redis.cjs.map +1 -1
  10. package/dist/cjs/cache/types/redis.min.cjs +1 -1
  11. package/dist/cjs/cache/types/redis.min.cjs.map +1 -1
  12. package/dist/cjs/dbs/mongo/api.cjs +4 -6
  13. package/dist/cjs/dbs/mongo/api.cjs.map +1 -1
  14. package/dist/cjs/dbs/mongo/api.min.cjs +1 -1
  15. package/dist/cjs/dbs/mongo/api.min.cjs.map +1 -1
  16. package/dist/cjs/dbs/mongo/index.cjs +8 -8
  17. package/dist/cjs/dbs/mongo/index.cjs.map +1 -1
  18. package/dist/cjs/dbs/mongo/index.min.cjs +1 -1
  19. package/dist/cjs/dbs/mongo/index.min.cjs.map +1 -1
  20. package/dist/cjs/server/openapi.cjs +1 -1
  21. package/dist/cjs/server/openapi.cjs.map +1 -1
  22. package/dist/cjs/server/openapi.min.cjs +1 -1
  23. package/dist/cjs/server/openapi.min.cjs.map +1 -1
  24. package/dist/esm/cache/base.min.mjs.map +1 -1
  25. package/dist/esm/cache/base.mjs.map +1 -1
  26. package/dist/esm/cache/types/in-memory.min.mjs +1 -1
  27. package/dist/esm/cache/types/in-memory.min.mjs.map +1 -1
  28. package/dist/esm/cache/types/in-memory.mjs +3 -3
  29. package/dist/esm/cache/types/in-memory.mjs.map +1 -1
  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 +1 -1
  33. package/dist/esm/cache/types/redis.mjs.map +1 -1
  34. package/dist/esm/dbs/mongo/api.min.mjs +1 -1
  35. package/dist/esm/dbs/mongo/api.min.mjs.map +1 -1
  36. package/dist/esm/dbs/mongo/api.mjs +4 -6
  37. package/dist/esm/dbs/mongo/api.mjs.map +1 -1
  38. package/dist/esm/dbs/mongo/index.min.mjs +1 -1
  39. package/dist/esm/dbs/mongo/index.min.mjs.map +1 -1
  40. package/dist/esm/dbs/mongo/index.mjs +8 -8
  41. package/dist/esm/dbs/mongo/index.mjs.map +1 -1
  42. package/dist/esm/server/openapi.min.mjs +1 -1
  43. package/dist/esm/server/openapi.min.mjs.map +1 -1
  44. package/dist/esm/server/openapi.mjs +1 -1
  45. package/dist/esm/server/openapi.mjs.map +1 -1
  46. package/dist/types/{base-k4t2NepI.d.ts → base-8yVXb67P.d.ts} +2 -2
  47. package/dist/types/cache/index.d.ts +5 -5
  48. package/dist/types/cache/types/in-memory.js +3 -3
  49. package/dist/types/cache/types/redis.js +1 -1
  50. package/dist/types/dbs/index.d.ts +2 -2
  51. package/dist/types/dbs/mongo/api.js +4 -6
  52. package/dist/types/dbs/mongo/index.js +8 -8
  53. package/dist/types/{index-BtF0VClz.d.ts → index-BS53hVyq.d.ts} +2 -2
  54. package/dist/types/{index-CegB2bgP.d.ts → index-CfuXekZB.d.ts} +2 -1
  55. package/dist/types/index.d.ts +3 -3
  56. package/dist/types/instance/index.d.ts +3 -3
  57. package/dist/types/server/index.d.ts +4 -4
  58. package/dist/types/server/openapi.js +1 -1
  59. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
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.15](https://github.com/kevinand11/equipped/compare/v5.0.14...v5.0.15) (2025-07-06)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * docs is hosted at ./index.html instead of ./ ([98e999c](https://github.com/kevinand11/equipped/commit/98e999c004b03697f87a908f04979a7c0e647e9f))
11
+ * updatedAt for upsert ([b956e7a](https://github.com/kevinand11/equipped/commit/b956e7ae6d37ded65e260376dc2527902a6b0373))
12
+
13
+ ### [5.0.14](https://github.com/kevinand11/equipped/compare/v5.0.13...v5.0.14) (2025-07-06)
14
+
15
+
16
+ ### Features
17
+
18
+ * make ttl in cache optional ([4e38b24](https://github.com/kevinand11/equipped/commit/4e38b241b7ecb36821e0c6418f8efc9e38db1fef))
19
+
5
20
  ### [5.0.13](https://github.com/kevinand11/equipped/compare/v5.0.12...v5.0.13) (2025-07-05)
6
21
 
7
22
  ### [5.0.12](https://github.com/kevinand11/equipped/compare/v5.0.11...v5.0.12) (2025-07-05)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cache/base.ts","/home/runner/work/equipped/equipped/dist/cjs/cache/base.cjs"],"names":[],"mappings":"AAAO,+EAAe,MAAM;AAQ5B;ACNA;AACE;AACF,sBAAC","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/base.cjs","sourcesContent":["export abstract class Cache {\n\tabstract set(key: string, data: string, ttlInSecs: number): Promise<void>\n\n\tabstract get(key: string): Promise<string | null>\n\n\tabstract delete(key: string): Promise<void>\n\n\tabstract getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs: number): Promise<T>\n}\n",null]}
1
+ {"version":3,"sources":["../../../src/cache/base.ts","/home/runner/work/equipped/equipped/dist/cjs/cache/base.cjs"],"names":[],"mappings":"AAAO,+EAAe,MAAM;AAQ5B;ACNA;AACE;AACF,sBAAC","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/base.cjs","sourcesContent":["export abstract class Cache {\n\tabstract set(key: string, data: string, ttlInSecs?: number): Promise<void>\n\n\tabstract get(key: string): Promise<string | null>\n\n\tabstract delete(key: string): Promise<void>\n\n\tabstract getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs?: number): Promise<T>\n}\n",null]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cache/base.ts"],"names":["Cache"],"mappings":"AAAO,+EAAeA,CAAM,CAQ5B,CAAA,kBAAA","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/base.min.cjs","sourcesContent":["export abstract class Cache {\n\tabstract set(key: string, data: string, ttlInSecs: number): Promise<void>\n\n\tabstract get(key: string): Promise<string | null>\n\n\tabstract delete(key: string): Promise<void>\n\n\tabstract getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs: number): Promise<T>\n}\n"]}
1
+ {"version":3,"sources":["../../../src/cache/base.ts"],"names":["Cache"],"mappings":"AAAO,+EAAeA,CAAM,CAQ5B,CAAA,kBAAA","file":"/home/runner/work/equipped/equipped/dist/cjs/cache/base.min.cjs","sourcesContent":["export abstract class Cache {\n\tabstract set(key: string, data: string, ttlInSecs?: number): Promise<void>\n\n\tabstract get(key: string): Promise<string | null>\n\n\tabstract delete(key: string): Promise<void>\n\n\tabstract getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs?: number): Promise<T>\n}\n"]}
@@ -11,7 +11,7 @@ class InMemoryCache extends _basecjs.Cache {
11
11
  interval = setInterval(() => {
12
12
  const now = Date.now();
13
13
  for (const [key, record] of this.cache.entries()) {
14
- if (record.expiredAt <= now) this.cache.delete(key);
14
+ if (record.expiredAt && record.expiredAt <= now) this.cache.delete(key);
15
15
  }
16
16
  }, 5e3);
17
17
  },
@@ -27,11 +27,11 @@ class InMemoryCache extends _basecjs.Cache {
27
27
  }
28
28
  async get(key) {
29
29
  const record = this.cache.get(this.getScopedKey(key));
30
- if (record && record.expiredAt > Date.now()) return record.data;
30
+ if (record && (record.expiredAt === void 0 || record.expiredAt > Date.now())) return record.data;
31
31
  return null;
32
32
  }
33
33
  async set(key, data, ttlInSecs) {
34
- this.cache.set(this.getScopedKey(key), { data, expiredAt: Date.now() + ttlInSecs * 1e3 });
34
+ this.cache.set(this.getScopedKey(key), { data, expiredAt: ttlInSecs ? Date.now() + ttlInSecs * 1e3 : void 0 });
35
35
  }
36
36
  async getOrSet(key, fn, ttlInSecs) {
37
37
  const cached = await this.get(key);
@@ -1 +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]}
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,MAAA,CAAO,UAAA,GAAa,GAAA,EAAK,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAA;AAAA,UACvE;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,GAAA,CAAW,MAAA,CAAO,UAAA,IAAc,KAAA,EAAA,GAAa,MAAA,CAAO,UAAA,EAAY,IAAA,CAAK,GAAA,CAAI,CAAA,CAAA,EAAI,OAAO,MAAA,CAAO,IAAA;AAC/F,IAAA,OAAO,IAAA;AAAA,EACR;AAAA,EAEA,MAAM,GAAA,CAAI,GAAA,EAAa,IAAA,EAAc,SAAA,EAAoB;AACxD,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,YAAA,CAAa,GAAG,CAAA,EAAG,EAAE,IAAA,EAAM,SAAA,EAAW,UAAA,EAAY,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,UAAA,EAAY,IAAA,EAAO,KAAA,EAAU,CAAC,CAAA;AAAA,EAClH;AAAA,EAEA,MAAM,QAAA,CAAY,GAAA,EAAa,EAAA,EAAsB,SAAA,EAAgC;AACpF,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 && 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 === undefined || 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: ttlInSecs ? Date.now() + ttlInSecs * 1000 : undefined })\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]}
@@ -1,2 +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;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _indexmincjs = require('../../instance/index.min.cjs');var _basemincjs = require('../base.min.cjs');class p extends _basemincjs.Cache{__init() {this.cache=new Map}constructor(){super();p.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&&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===void 0||t.expiredAt>Date.now())?t.data:null}async set(e,t,r){this.cache.set(this.getScopedKey(e),{data:t,expiredAt:r?Date.now()+r*1e3:void 0})}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 = p;
2
2
  //# sourceMappingURL=in-memory.min.cjs.map
@@ -1 +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"]}
1
+ {"version":3,"sources":["../../../../src/cache/types/in-memory.ts"],"names":["interval","now","key","record","Instance","data","ttlInSecs","cached","fn","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,KAAaA,CAAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAaF,SAAU,EAAA,CAAA,CAAA,SAAgB,EAExE,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,YAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,OAAc,CAAA,EAAaA,CAAO,CAAA,CAAA,SAAY,GAAA,KAAS,CAAA,EAAWA,CAAAA,CAAO,SAEhG,CAEA,IAAA,CAAA,GAAM,CAAA,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,YAAuB,CAAA,CAAA,CAAA,CAAA,CAAK,IAAI,CAAA,CAAIC,CAAAA,SAAmB,CAAA,CAAU,CAAC,IAGlH,CAAA,GAAM,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAYJ,KAAmCI,CAAgC,CACpF,CAAA,CAAA,MAAe,QAAM,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAIJ,CAAG,MAC7BK,CAAQ,CAAA,MAAO,IAAA,CAAK,GAAA,CAAA,CAAA,CAAMA,CAAM,EAEpC,CAAA,CAAA,CAAA,OAAe,IAAMC,CAAAA,KACrB,CAAA,CAAA,CAAA,CAAA,MAAA,CAAM,CAAA,MAAK,CAAA,CAAIN,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 && 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 === undefined || 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: ttlInSecs ? Date.now() + ttlInSecs * 1000 : undefined })\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"]}
@@ -38,7 +38,7 @@ class RedisCache extends _basecjs.Cache {
38
38
  return await this.client.get(this.getScopedKey(key));
39
39
  }
40
40
  async set(key, data, ttlInSecs) {
41
- if (ttlInSecs > 0) await this.client.setex(this.getScopedKey(key), ttlInSecs, data);
41
+ if (ttlInSecs) await this.client.setex(this.getScopedKey(key), ttlInSecs, data);
42
42
  else this.client.set(this.getScopedKey(key), data);
43
43
  }
44
44
  async getOrSet(key, fn, ttlInSecs) {
@@ -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\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
+ {"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) 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 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;
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?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","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"]}
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) 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"]}
@@ -21,14 +21,12 @@ function getTable(config, collection) {
21
21
  ...base
22
22
  };
23
23
  }
24
- function prepUpdateValue(value, now) {
24
+ function prepUpdateValue(value, now, upsert = false) {
25
25
  return {
26
26
  ...value,
27
27
  $set: {
28
28
  ...value.$set,
29
- ...Object.keys(value).length > 0 && !_optionalChain([config, 'access', _3 => _3.options, 'optionalAccess', _4 => _4.skipAudit]) ? {
30
- updatedAt: now.getTime()
31
- } : {}
29
+ ...upsert || Object.keys(value).length > 0 && !_optionalChain([config, 'access', _3 => _3.options, 'optionalAccess', _4 => _4.skipAudit]) ? { updatedAt: now.getTime() } : {}
32
30
  }
33
31
  };
34
32
  }
@@ -93,7 +91,7 @@ function getTable(config, collection) {
93
91
  const doc = await collection.findOneAndUpdate(
94
92
  filter,
95
93
  {
96
- ...prepUpdateValue("update" in values ? values.update : {}, now),
94
+ ...prepUpdateValue("update" in values ? values.update : {}, now, true),
97
95
  // @ts-expect-error fighting ts
98
96
  $setOnInsert: prepInsertValue(values.insert, _nullishCoalesce(_optionalChain([options, 'access', _15 => _15.makeId, 'optionalCall', _16 => _16()]), () => ( new (0, _mongodb.ObjectId)().toString())), now, true)
99
97
  },
@@ -130,7 +128,7 @@ function getTable(config, collection) {
130
128
  break;
131
129
  case "upsert":
132
130
  bulk.find(operation.filter).upsert().update({
133
- ...prepUpdateValue("update" in operation ? operation.update : {}, now),
131
+ ...prepUpdateValue("update" in operation ? operation.update : {}, now, true),
134
132
  $setOnInsert: prepInsertValue(
135
133
  operation.insert,
136
134
  _nullishCoalesce(_optionalChain([operation, 'access', _22 => _22.makeId, 'optionalCall', _23 => _23(i)]), () => ( new (0, _mongodb.ObjectId)().toString())),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/dbs/mongo/api.ts","/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/api.cjs"],"names":[],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/api.cjs","sourcesContent":["import { Collection, ObjectId, OptionalUnlessRequiredId, SortDirection, WithId } from 'mongodb'\n\nimport { QueryParams } from '../pipes'\nimport { parseMongodbQueryParams } from './query'\nimport { EquippedError } from '../../errors'\nimport * as core from '../base/core'\n\nconst idKey = '_id'\ntype IdType = { _id: string }\n\nexport function getTable<Model extends core.Model<IdType>, Entity extends core.Entity>(\n\tconfig: core.Config<Model, Entity>,\n\tcollection: Collection<Model>,\n) {\n\ttype WI = Model | WithId<Model>\n\tasync function transform(doc: WI): Promise<Entity>\n\t// eslint-disable-next-line no-redeclare\n\tasync function transform(doc: WI[]): Promise<Entity[]>\n\t// eslint-disable-next-line no-redeclare\n\tasync function transform(doc: WI | WI[]) {\n\t\tconst docs = Array.isArray(doc) ? doc : [doc]\n\t\tconst mapped = docs.map((d) => config.mapper(d as Model))\n\t\treturn Array.isArray(doc) ? mapped : mapped[0]\n\t}\n\n\tfunction prepInsertValue(value: core.CreateInput<Model>, id: string, now: Date, skipUpdate?: boolean) {\n\t\tconst base: core.Model<IdType> = {\n\t\t\t[idKey]: id,\n\t\t\t...(config.options?.skipAudit\n\t\t\t\t? {}\n\t\t\t\t: {\n\t\t\t\t\t\tcreatedAt: now.getTime(),\n\t\t\t\t\t\t...(skipUpdate ? {} : { updatedAt: now.getTime() }),\n\t\t\t\t\t}),\n\t\t}\n\t\treturn {\n\t\t\t...value,\n\t\t\t...base,\n\t\t} as unknown as OptionalUnlessRequiredId<Model>\n\t}\n\n\tfunction prepUpdateValue(value: core.UpdateInput<Model>, now: Date) {\n\t\treturn {\n\t\t\t...value,\n\t\t\t$set: {\n\t\t\t\t...value.$set,\n\t\t\t\t...(Object.keys(value).length > 0 && !config.options?.skipAudit\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tupdatedAt: now.getTime(),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t}\n\t}\n\n\tconst table: core.Table<IdType, Model, Entity, { collection: Collection<Model> }> = {\n\t\tconfig,\n\t\textras: { collection },\n\n\t\tquery: async (params: QueryParams) => {\n\t\t\tconst results = await parseMongodbQueryParams(collection, params)\n\t\t\treturn {\n\t\t\t\t...results,\n\t\t\t\tresults: (await transform(results.results as any)) as any,\n\t\t\t}\n\t\t},\n\n\t\tfindMany: async (filter, options = {}) => {\n\t\t\tconst sortArray = Array.isArray(options.sort) ? options.sort : options.sort ? [options.sort] : []\n\t\t\tconst sort = sortArray.map((p) => [p.field, p.desc ? 'desc' : 'asc'] as [string, SortDirection])\n\t\t\tconst docs = await collection\n\t\t\t\t.find(filter, {\n\t\t\t\t\tsession: options.session,\n\t\t\t\t\tlimit: options.limit,\n\t\t\t\t\tsort,\n\t\t\t\t})\n\t\t\t\t.toArray()\n\t\t\treturn transform(docs)\n\t\t},\n\n\t\tfindOne: async (filter, options = {}) => {\n\t\t\tconst result = await table.findMany(filter, { ...options, limit: 1 })\n\t\t\treturn result.at(0) ?? null\n\t\t},\n\n\t\tfindById: async (id, options = {}) => {\n\t\t\tconst result = await table.findOne({ [idKey]: id } as core.Filter<Model>, options)\n\t\t\treturn result\n\t\t},\n\n\t\tinsertMany: async (values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\tconst payload = values.map((value, i) => prepInsertValue(value, options.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\tawait collection.insertMany(payload, { session: options.session })\n\n\t\t\tconst insertedData = await Promise.all(payload.map(async (data) => await table.findById(data[idKey] as any, options)))\n\t\t\treturn insertedData.filter((value) => !!value)\n\t\t},\n\n\t\tinsertOne: async (values, options = {}) => {\n\t\t\tconst result = await table.insertMany([values], options)\n\t\t\treturn result[0]\n\t\t},\n\n\t\tupdateMany: async (filter, values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\tawait collection.updateMany(filter, prepUpdateValue(values, now), { session: options.session })\n\t\t\treturn table.findMany(filter, options)\n\t\t},\n\n\t\tupdateOne: async (filter, values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\tconst doc = await collection.findOneAndUpdate(filter, prepUpdateValue(values, now), {\n\t\t\t\treturnDocument: 'after',\n\t\t\t\tsession: options.session,\n\t\t\t})\n\t\t\treturn doc ? transform(doc) : null\n\t\t},\n\n\t\tupdateById: async (id, values, options = {}) => {\n\t\t\tconst result = await table.updateOne({ [idKey]: id } as core.Filter<Model>, values, options)\n\t\t\treturn result\n\t\t},\n\n\t\tupsertOne: async (filter, values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\n\t\t\tconst doc = await collection.findOneAndUpdate(\n\t\t\t\tfilter,\n\t\t\t\t{\n\t\t\t\t\t...prepUpdateValue('update' in values ? values.update : {}, now),\n\t\t\t\t\t// @ts-expect-error fighting ts\n\t\t\t\t\t$setOnInsert: prepInsertValue(values.insert, options.makeId?.() ?? new ObjectId().toString(), now, true),\n\t\t\t\t},\n\t\t\t\t{ returnDocument: 'after', session: options.session, upsert: true },\n\t\t\t)\n\n\t\t\treturn transform(doc)\n\t\t},\n\n\t\tdeleteMany: async (filter, options = {}) => {\n\t\t\tconst docs = await table.findMany(filter, options)\n\t\t\tawait collection.deleteMany(filter, { session: options.session })\n\t\t\treturn docs\n\t\t},\n\n\t\tdeleteOne: async (filter, options) => {\n\t\t\tconst doc = await collection.findOneAndDelete(filter, { session: options?.session })\n\t\t\treturn doc ? transform(doc) : null\n\t\t},\n\n\t\tdeleteById: async (id, options) => {\n\t\t\tconst result = await table.deleteOne({ [idKey]: id } as core.Filter<Model>, options)\n\t\t\treturn result\n\t\t},\n\n\t\tbulkWrite: async (operations, options = {}) => {\n\t\t\tconst bulk = collection.initializeUnorderedBulkOp({ session: options.session })\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\toperations.forEach((operation, i) => {\n\t\t\t\tswitch (operation.op) {\n\t\t\t\t\tcase 'insert':\n\t\t\t\t\t\tbulk.insert(prepInsertValue(operation.value, operation.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\tbulk.find(operation.filter).delete()\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'update':\n\t\t\t\t\t\tbulk.find(operation.filter).update(prepUpdateValue(operation.value, now))\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'upsert':\n\t\t\t\t\t\tbulk.find(operation.filter)\n\t\t\t\t\t\t\t.upsert()\n\t\t\t\t\t\t\t.update({\n\t\t\t\t\t\t\t\t...prepUpdateValue('update' in operation ? operation.update : {}, now),\n\t\t\t\t\t\t\t\t$setOnInsert: prepInsertValue(\n\t\t\t\t\t\t\t\t\toperation.insert as any,\n\t\t\t\t\t\t\t\t\toperation.makeId?.(i) ?? new ObjectId().toString(),\n\t\t\t\t\t\t\t\t\tnow,\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new EquippedError(`Unknown bulkWrite operation`, { operation })\n\t\t\t\t}\n\t\t\t})\n\t\t\tawait bulk.execute({ session: options.session })\n\t\t},\n\t}\n\n\treturn table\n}\n",null]}
1
+ {"version":3,"sources":["../../../../src/dbs/mongo/api.ts","/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/api.cjs"],"names":[],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/api.cjs","sourcesContent":["import { Collection, ObjectId, OptionalUnlessRequiredId, SortDirection, WithId } from 'mongodb'\n\nimport { QueryParams } from '../pipes'\nimport { parseMongodbQueryParams } from './query'\nimport { EquippedError } from '../../errors'\nimport * as core from '../base/core'\n\nconst idKey = '_id'\ntype IdType = { _id: string }\n\nexport function getTable<Model extends core.Model<IdType>, Entity extends core.Entity>(\n\tconfig: core.Config<Model, Entity>,\n\tcollection: Collection<Model>,\n) {\n\ttype WI = Model | WithId<Model>\n\tasync function transform(doc: WI): Promise<Entity>\n\t// eslint-disable-next-line no-redeclare\n\tasync function transform(doc: WI[]): Promise<Entity[]>\n\t// eslint-disable-next-line no-redeclare\n\tasync function transform(doc: WI | WI[]) {\n\t\tconst docs = Array.isArray(doc) ? doc : [doc]\n\t\tconst mapped = docs.map((d) => config.mapper(d as Model))\n\t\treturn Array.isArray(doc) ? mapped : mapped[0]\n\t}\n\n\tfunction prepInsertValue(value: core.CreateInput<Model>, id: string, now: Date, skipUpdate?: boolean) {\n\t\tconst base: core.Model<IdType> = {\n\t\t\t[idKey]: id,\n\t\t\t...(config.options?.skipAudit\n\t\t\t\t? {}\n\t\t\t\t: {\n\t\t\t\t\t\tcreatedAt: now.getTime(),\n\t\t\t\t\t\t...(skipUpdate ? {} : { updatedAt: now.getTime() }),\n\t\t\t\t\t}),\n\t\t}\n\t\treturn {\n\t\t\t...value,\n\t\t\t...base,\n\t\t} as unknown as OptionalUnlessRequiredId<Model>\n\t}\n\n\tfunction prepUpdateValue(value: core.UpdateInput<Model>, now: Date, upsert = false) {\n\t\treturn {\n\t\t\t...value,\n\t\t\t$set: {\n\t\t\t\t...value.$set,\n\t\t\t\t...(upsert || (Object.keys(value).length > 0 && !config.options?.skipAudit) ? { updatedAt: now.getTime() } : {}),\n\t\t\t},\n\t\t}\n\t}\n\n\tconst table: core.Table<IdType, Model, Entity, { collection: Collection<Model> }> = {\n\t\tconfig,\n\t\textras: { collection },\n\n\t\tquery: async (params: QueryParams) => {\n\t\t\tconst results = await parseMongodbQueryParams(collection, params)\n\t\t\treturn {\n\t\t\t\t...results,\n\t\t\t\tresults: (await transform(results.results as any)) as any,\n\t\t\t}\n\t\t},\n\n\t\tfindMany: async (filter, options = {}) => {\n\t\t\tconst sortArray = Array.isArray(options.sort) ? options.sort : options.sort ? [options.sort] : []\n\t\t\tconst sort = sortArray.map((p) => [p.field, p.desc ? 'desc' : 'asc'] as [string, SortDirection])\n\t\t\tconst docs = await collection\n\t\t\t\t.find(filter, {\n\t\t\t\t\tsession: options.session,\n\t\t\t\t\tlimit: options.limit,\n\t\t\t\t\tsort,\n\t\t\t\t})\n\t\t\t\t.toArray()\n\t\t\treturn transform(docs)\n\t\t},\n\n\t\tfindOne: async (filter, options = {}) => {\n\t\t\tconst result = await table.findMany(filter, { ...options, limit: 1 })\n\t\t\treturn result.at(0) ?? null\n\t\t},\n\n\t\tfindById: async (id, options = {}) => {\n\t\t\tconst result = await table.findOne({ [idKey]: id } as core.Filter<Model>, options)\n\t\t\treturn result\n\t\t},\n\n\t\tinsertMany: async (values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\tconst payload = values.map((value, i) => prepInsertValue(value, options.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\tawait collection.insertMany(payload, { session: options.session })\n\n\t\t\tconst insertedData = await Promise.all(payload.map(async (data) => await table.findById(data[idKey] as any, options)))\n\t\t\treturn insertedData.filter((value) => !!value)\n\t\t},\n\n\t\tinsertOne: async (values, options = {}) => {\n\t\t\tconst result = await table.insertMany([values], options)\n\t\t\treturn result[0]\n\t\t},\n\n\t\tupdateMany: async (filter, values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\tawait collection.updateMany(filter, prepUpdateValue(values, now), { session: options.session })\n\t\t\treturn table.findMany(filter, options)\n\t\t},\n\n\t\tupdateOne: async (filter, values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\tconst doc = await collection.findOneAndUpdate(filter, prepUpdateValue(values, now), {\n\t\t\t\treturnDocument: 'after',\n\t\t\t\tsession: options.session,\n\t\t\t})\n\t\t\treturn doc ? transform(doc) : null\n\t\t},\n\n\t\tupdateById: async (id, values, options = {}) => {\n\t\t\tconst result = await table.updateOne({ [idKey]: id } as core.Filter<Model>, values, options)\n\t\t\treturn result\n\t\t},\n\n\t\tupsertOne: async (filter, values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\n\t\t\tconst doc = await collection.findOneAndUpdate(\n\t\t\t\tfilter,\n\t\t\t\t{\n\t\t\t\t\t...prepUpdateValue('update' in values ? values.update : {}, now, true),\n\t\t\t\t\t// @ts-expect-error fighting ts\n\t\t\t\t\t$setOnInsert: prepInsertValue(values.insert, options.makeId?.() ?? new ObjectId().toString(), now, true),\n\t\t\t\t},\n\t\t\t\t{ returnDocument: 'after', session: options.session, upsert: true },\n\t\t\t)\n\n\t\t\treturn transform(doc)\n\t\t},\n\n\t\tdeleteMany: async (filter, options = {}) => {\n\t\t\tconst docs = await table.findMany(filter, options)\n\t\t\tawait collection.deleteMany(filter, { session: options.session })\n\t\t\treturn docs\n\t\t},\n\n\t\tdeleteOne: async (filter, options) => {\n\t\t\tconst doc = await collection.findOneAndDelete(filter, { session: options?.session })\n\t\t\treturn doc ? transform(doc) : null\n\t\t},\n\n\t\tdeleteById: async (id, options) => {\n\t\t\tconst result = await table.deleteOne({ [idKey]: id } as core.Filter<Model>, options)\n\t\t\treturn result\n\t\t},\n\n\t\tbulkWrite: async (operations, options = {}) => {\n\t\t\tconst bulk = collection.initializeUnorderedBulkOp({ session: options.session })\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\toperations.forEach((operation, i) => {\n\t\t\t\tswitch (operation.op) {\n\t\t\t\t\tcase 'insert':\n\t\t\t\t\t\tbulk.insert(prepInsertValue(operation.value, operation.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\tbulk.find(operation.filter).delete()\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'update':\n\t\t\t\t\t\tbulk.find(operation.filter).update(prepUpdateValue(operation.value, now))\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'upsert':\n\t\t\t\t\t\tbulk.find(operation.filter)\n\t\t\t\t\t\t\t.upsert()\n\t\t\t\t\t\t\t.update({\n\t\t\t\t\t\t\t\t...prepUpdateValue('update' in operation ? operation.update : {}, now, true),\n\t\t\t\t\t\t\t\t$setOnInsert: prepInsertValue(\n\t\t\t\t\t\t\t\t\toperation.insert as any,\n\t\t\t\t\t\t\t\t\toperation.makeId?.(i) ?? new ObjectId().toString(),\n\t\t\t\t\t\t\t\t\tnow,\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new EquippedError(`Unknown bulkWrite operation`, { operation })\n\t\t\t\t}\n\t\t\t})\n\t\t\tawait bulk.execute({ session: options.session })\n\t\t},\n\t}\n\n\treturn table\n}\n",null]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await 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 _mongodb = require('mongodb');var _querymincjs = require('./query.min.cjs');var _indexmincjs = require('../../errors/index.min.cjs');const c="_id";function W(y,d){async function u(t){const n=(Array.isArray(t)?t:[t]).map(r=>y.mapper(r));return Array.isArray(t)?n:n[0]}function l(t,e,n,r){const s={[c]:e,..._optionalChain([y, 'access', _ => _.options, 'optionalAccess', _2 => _2.skipAudit])?{}:{createdAt:n.getTime(),...r?{}:{updatedAt:n.getTime()}}};return{...t,...s}}function o(t,e){return{...t,$set:{...t.$set,...Object.keys(t).length>0&&!_optionalChain([y, 'access', _3 => _3.options, 'optionalAccess', _4 => _4.skipAudit])?{updatedAt:e.getTime()}:{}}}}const i={config:y,extras:{collection:d},query:async t=>{const e=await _querymincjs.parseMongodbQueryParams.call(void 0, d,t);return{...e,results:await u(e.results)}},findMany:async(t,e={})=>{const r=(Array.isArray(e.sort)?e.sort:e.sort?[e.sort]:[]).map(a=>[a.field,a.desc?"desc":"asc"]),s=await d.find(t,{session:e.session,limit:e.limit,sort:r}).toArray();return u(s)},findOne:async(t,e={})=>await _asyncNullishCoalesce((await i.findMany(t,{...e,limit:1})).at(0), async () => (null)),findById:async(t,e={})=>await i.findOne({[c]:t},e),insertMany:async(t,e={})=>{const n=_nullishCoalesce(_optionalChain([e, 'access', _5 => _5.getTime, 'optionalCall', _6 => _6()]), () => (new Date)),r=t.map((a,w)=>l(a,_nullishCoalesce(_optionalChain([e, 'access', _7 => _7.makeId, 'optionalCall', _8 => _8(w)]), () => (new (0, _mongodb.ObjectId)().toString())),n));return await d.insertMany(r,{session:e.session}),(await Promise.all(r.map(async a=>await i.findById(a[c],e)))).filter(a=>!!a)},insertOne:async(t,e={})=>(await i.insertMany([t],e))[0],updateMany:async(t,e,n={})=>{const r=_nullishCoalesce(_optionalChain([n, 'access', _9 => _9.getTime, 'optionalCall', _10 => _10()]), () => (new Date));return await d.updateMany(t,o(e,r),{session:n.session}),i.findMany(t,n)},updateOne:async(t,e,n={})=>{const r=_nullishCoalesce(_optionalChain([n, 'access', _11 => _11.getTime, 'optionalCall', _12 => _12()]), () => (new Date)),s=await d.findOneAndUpdate(t,o(e,r),{returnDocument:"after",session:n.session});return s?u(s):null},updateById:async(t,e,n={})=>await i.updateOne({[c]:t},e,n),upsertOne:async(t,e,n={})=>{const r=_nullishCoalesce(_optionalChain([n, 'access', _13 => _13.getTime, 'optionalCall', _14 => _14()]), () => (new Date)),s=await d.findOneAndUpdate(t,{...o("update"in e?e.update:{},r),$setOnInsert:l(e.insert,_nullishCoalesce(_optionalChain([n, 'access', _15 => _15.makeId, 'optionalCall', _16 => _16()]), () => (new (0, _mongodb.ObjectId)().toString())),r,!0)},{returnDocument:"after",session:n.session,upsert:!0});return u(s)},deleteMany:async(t,e={})=>{const n=await i.findMany(t,e);return await d.deleteMany(t,{session:e.session}),n},deleteOne:async(t,e)=>{const n=await d.findOneAndDelete(t,{session:_optionalChain([e, 'optionalAccess', _17 => _17.session])});return n?u(n):null},deleteById:async(t,e)=>await i.deleteOne({[c]:t},e),bulkWrite:async(t,e={})=>{const n=d.initializeUnorderedBulkOp({session:e.session}),r=_nullishCoalesce(_optionalChain([e, 'access', _18 => _18.getTime, 'optionalCall', _19 => _19()]), () => (new Date));t.forEach((s,a)=>{switch(s.op){case"insert":n.insert(l(s.value,_nullishCoalesce(_optionalChain([s, 'access', _20 => _20.makeId, 'optionalCall', _21 => _21(a)]), () => (new (0, _mongodb.ObjectId)().toString())),r));break;case"delete":n.find(s.filter).delete();break;case"update":n.find(s.filter).update(o(s.value,r));break;case"upsert":n.find(s.filter).upsert().update({...o("update"in s?s.update:{},r),$setOnInsert:l(s.insert,_nullishCoalesce(_optionalChain([s, 'access', _22 => _22.makeId, 'optionalCall', _23 => _23(a)]), () => (new (0, _mongodb.ObjectId)().toString())),r,!0)});break;default:throw new (0, _indexmincjs.EquippedError)("Unknown bulkWrite operation",{operation:s})}}),await n.execute({session:e.session})}};return i}exports.getTable = W;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await 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 _mongodb = require('mongodb');var _querymincjs = require('./query.min.cjs');var _indexmincjs = require('../../errors/index.min.cjs');const c="_id";function W(y,d){async function u(t){const n=(Array.isArray(t)?t:[t]).map(r=>y.mapper(r));return Array.isArray(t)?n:n[0]}function l(t,e,n,r){const s={[c]:e,..._optionalChain([y, 'access', _ => _.options, 'optionalAccess', _2 => _2.skipAudit])?{}:{createdAt:n.getTime(),...r?{}:{updatedAt:n.getTime()}}};return{...t,...s}}function o(t,e,n=!1){return{...t,$set:{...t.$set,...n||Object.keys(t).length>0&&!_optionalChain([y, 'access', _3 => _3.options, 'optionalAccess', _4 => _4.skipAudit])?{updatedAt:e.getTime()}:{}}}}const i={config:y,extras:{collection:d},query:async t=>{const e=await _querymincjs.parseMongodbQueryParams.call(void 0, d,t);return{...e,results:await u(e.results)}},findMany:async(t,e={})=>{const r=(Array.isArray(e.sort)?e.sort:e.sort?[e.sort]:[]).map(a=>[a.field,a.desc?"desc":"asc"]),s=await d.find(t,{session:e.session,limit:e.limit,sort:r}).toArray();return u(s)},findOne:async(t,e={})=>await _asyncNullishCoalesce((await i.findMany(t,{...e,limit:1})).at(0), async () => (null)),findById:async(t,e={})=>await i.findOne({[c]:t},e),insertMany:async(t,e={})=>{const n=_nullishCoalesce(_optionalChain([e, 'access', _5 => _5.getTime, 'optionalCall', _6 => _6()]), () => (new Date)),r=t.map((a,w)=>l(a,_nullishCoalesce(_optionalChain([e, 'access', _7 => _7.makeId, 'optionalCall', _8 => _8(w)]), () => (new (0, _mongodb.ObjectId)().toString())),n));return await d.insertMany(r,{session:e.session}),(await Promise.all(r.map(async a=>await i.findById(a[c],e)))).filter(a=>!!a)},insertOne:async(t,e={})=>(await i.insertMany([t],e))[0],updateMany:async(t,e,n={})=>{const r=_nullishCoalesce(_optionalChain([n, 'access', _9 => _9.getTime, 'optionalCall', _10 => _10()]), () => (new Date));return await d.updateMany(t,o(e,r),{session:n.session}),i.findMany(t,n)},updateOne:async(t,e,n={})=>{const r=_nullishCoalesce(_optionalChain([n, 'access', _11 => _11.getTime, 'optionalCall', _12 => _12()]), () => (new Date)),s=await d.findOneAndUpdate(t,o(e,r),{returnDocument:"after",session:n.session});return s?u(s):null},updateById:async(t,e,n={})=>await i.updateOne({[c]:t},e,n),upsertOne:async(t,e,n={})=>{const r=_nullishCoalesce(_optionalChain([n, 'access', _13 => _13.getTime, 'optionalCall', _14 => _14()]), () => (new Date)),s=await d.findOneAndUpdate(t,{...o("update"in e?e.update:{},r,!0),$setOnInsert:l(e.insert,_nullishCoalesce(_optionalChain([n, 'access', _15 => _15.makeId, 'optionalCall', _16 => _16()]), () => (new (0, _mongodb.ObjectId)().toString())),r,!0)},{returnDocument:"after",session:n.session,upsert:!0});return u(s)},deleteMany:async(t,e={})=>{const n=await i.findMany(t,e);return await d.deleteMany(t,{session:e.session}),n},deleteOne:async(t,e)=>{const n=await d.findOneAndDelete(t,{session:_optionalChain([e, 'optionalAccess', _17 => _17.session])});return n?u(n):null},deleteById:async(t,e)=>await i.deleteOne({[c]:t},e),bulkWrite:async(t,e={})=>{const n=d.initializeUnorderedBulkOp({session:e.session}),r=_nullishCoalesce(_optionalChain([e, 'access', _18 => _18.getTime, 'optionalCall', _19 => _19()]), () => (new Date));t.forEach((s,a)=>{switch(s.op){case"insert":n.insert(l(s.value,_nullishCoalesce(_optionalChain([s, 'access', _20 => _20.makeId, 'optionalCall', _21 => _21(a)]), () => (new (0, _mongodb.ObjectId)().toString())),r));break;case"delete":n.find(s.filter).delete();break;case"update":n.find(s.filter).update(o(s.value,r));break;case"upsert":n.find(s.filter).upsert().update({...o("update"in s?s.update:{},r,!0),$setOnInsert:l(s.insert,_nullishCoalesce(_optionalChain([s, 'access', _22 => _22.makeId, 'optionalCall', _23 => _23(a)]), () => (new (0, _mongodb.ObjectId)().toString())),r,!0)});break;default:throw new (0, _indexmincjs.EquippedError)("Unknown bulkWrite operation",{operation:s})}}),await n.execute({session:e.session})}};return i}exports.getTable = W;
2
2
  //# sourceMappingURL=api.min.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/dbs/mongo/api.ts"],"names":["getTable","doc","d","mapped","id","now","skipUpdate","config","value","table","results","parseMongodbQueryParams","sort","options","p","docs","collection","filter","idKey","values","payload","i","prepInsertValue","ObjectId","data","prepUpdateValue","transform","operations","bulk","operation","EquippedError"],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/api.min.cjs","sourcesContent":["import { Collection, ObjectId, OptionalUnlessRequiredId, SortDirection, WithId } from 'mongodb'\n\nimport { QueryParams } from '../pipes'\nimport { parseMongodbQueryParams } from './query'\nimport { EquippedError } from '../../errors'\nimport * as core from '../base/core'\n\nconst idKey = '_id'\ntype IdType = { _id: string }\n\nexport function getTable<Model extends core.Model<IdType>, Entity extends core.Entity>(\n\tconfig: core.Config<Model, Entity>,\n\tcollection: Collection<Model>,\n) {\n\ttype WI = Model | WithId<Model>\n\tasync function transform(doc: WI): Promise<Entity>\n\t// eslint-disable-next-line no-redeclare\n\tasync function transform(doc: WI[]): Promise<Entity[]>\n\t// eslint-disable-next-line no-redeclare\n\tasync function transform(doc: WI | WI[]) {\n\t\tconst docs = Array.isArray(doc) ? doc : [doc]\n\t\tconst mapped = docs.map((d) => config.mapper(d as Model))\n\t\treturn Array.isArray(doc) ? mapped : mapped[0]\n\t}\n\n\tfunction prepInsertValue(value: core.CreateInput<Model>, id: string, now: Date, skipUpdate?: boolean) {\n\t\tconst base: core.Model<IdType> = {\n\t\t\t[idKey]: id,\n\t\t\t...(config.options?.skipAudit\n\t\t\t\t? {}\n\t\t\t\t: {\n\t\t\t\t\t\tcreatedAt: now.getTime(),\n\t\t\t\t\t\t...(skipUpdate ? {} : { updatedAt: now.getTime() }),\n\t\t\t\t\t}),\n\t\t}\n\t\treturn {\n\t\t\t...value,\n\t\t\t...base,\n\t\t} as unknown as OptionalUnlessRequiredId<Model>\n\t}\n\n\tfunction prepUpdateValue(value: core.UpdateInput<Model>, now: Date) {\n\t\treturn {\n\t\t\t...value,\n\t\t\t$set: {\n\t\t\t\t...value.$set,\n\t\t\t\t...(Object.keys(value).length > 0 && !config.options?.skipAudit\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tupdatedAt: now.getTime(),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t}\n\t}\n\n\tconst table: core.Table<IdType, Model, Entity, { collection: Collection<Model> }> = {\n\t\tconfig,\n\t\textras: { collection },\n\n\t\tquery: async (params: QueryParams) => {\n\t\t\tconst results = await parseMongodbQueryParams(collection, params)\n\t\t\treturn {\n\t\t\t\t...results,\n\t\t\t\tresults: (await transform(results.results as any)) as any,\n\t\t\t}\n\t\t},\n\n\t\tfindMany: async (filter, options = {}) => {\n\t\t\tconst sortArray = Array.isArray(options.sort) ? options.sort : options.sort ? [options.sort] : []\n\t\t\tconst sort = sortArray.map((p) => [p.field, p.desc ? 'desc' : 'asc'] as [string, SortDirection])\n\t\t\tconst docs = await collection\n\t\t\t\t.find(filter, {\n\t\t\t\t\tsession: options.session,\n\t\t\t\t\tlimit: options.limit,\n\t\t\t\t\tsort,\n\t\t\t\t})\n\t\t\t\t.toArray()\n\t\t\treturn transform(docs)\n\t\t},\n\n\t\tfindOne: async (filter, options = {}) => {\n\t\t\tconst result = await table.findMany(filter, { ...options, limit: 1 })\n\t\t\treturn result.at(0) ?? null\n\t\t},\n\n\t\tfindById: async (id, options = {}) => {\n\t\t\tconst result = await table.findOne({ [idKey]: id } as core.Filter<Model>, options)\n\t\t\treturn result\n\t\t},\n\n\t\tinsertMany: async (values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\tconst payload = values.map((value, i) => prepInsertValue(value, options.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\tawait collection.insertMany(payload, { session: options.session })\n\n\t\t\tconst insertedData = await Promise.all(payload.map(async (data) => await table.findById(data[idKey] as any, options)))\n\t\t\treturn insertedData.filter((value) => !!value)\n\t\t},\n\n\t\tinsertOne: async (values, options = {}) => {\n\t\t\tconst result = await table.insertMany([values], options)\n\t\t\treturn result[0]\n\t\t},\n\n\t\tupdateMany: async (filter, values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\tawait collection.updateMany(filter, prepUpdateValue(values, now), { session: options.session })\n\t\t\treturn table.findMany(filter, options)\n\t\t},\n\n\t\tupdateOne: async (filter, values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\tconst doc = await collection.findOneAndUpdate(filter, prepUpdateValue(values, now), {\n\t\t\t\treturnDocument: 'after',\n\t\t\t\tsession: options.session,\n\t\t\t})\n\t\t\treturn doc ? transform(doc) : null\n\t\t},\n\n\t\tupdateById: async (id, values, options = {}) => {\n\t\t\tconst result = await table.updateOne({ [idKey]: id } as core.Filter<Model>, values, options)\n\t\t\treturn result\n\t\t},\n\n\t\tupsertOne: async (filter, values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\n\t\t\tconst doc = await collection.findOneAndUpdate(\n\t\t\t\tfilter,\n\t\t\t\t{\n\t\t\t\t\t...prepUpdateValue('update' in values ? values.update : {}, now),\n\t\t\t\t\t// @ts-expect-error fighting ts\n\t\t\t\t\t$setOnInsert: prepInsertValue(values.insert, options.makeId?.() ?? new ObjectId().toString(), now, true),\n\t\t\t\t},\n\t\t\t\t{ returnDocument: 'after', session: options.session, upsert: true },\n\t\t\t)\n\n\t\t\treturn transform(doc)\n\t\t},\n\n\t\tdeleteMany: async (filter, options = {}) => {\n\t\t\tconst docs = await table.findMany(filter, options)\n\t\t\tawait collection.deleteMany(filter, { session: options.session })\n\t\t\treturn docs\n\t\t},\n\n\t\tdeleteOne: async (filter, options) => {\n\t\t\tconst doc = await collection.findOneAndDelete(filter, { session: options?.session })\n\t\t\treturn doc ? transform(doc) : null\n\t\t},\n\n\t\tdeleteById: async (id, options) => {\n\t\t\tconst result = await table.deleteOne({ [idKey]: id } as core.Filter<Model>, options)\n\t\t\treturn result\n\t\t},\n\n\t\tbulkWrite: async (operations, options = {}) => {\n\t\t\tconst bulk = collection.initializeUnorderedBulkOp({ session: options.session })\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\toperations.forEach((operation, i) => {\n\t\t\t\tswitch (operation.op) {\n\t\t\t\t\tcase 'insert':\n\t\t\t\t\t\tbulk.insert(prepInsertValue(operation.value, operation.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\tbulk.find(operation.filter).delete()\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'update':\n\t\t\t\t\t\tbulk.find(operation.filter).update(prepUpdateValue(operation.value, now))\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'upsert':\n\t\t\t\t\t\tbulk.find(operation.filter)\n\t\t\t\t\t\t\t.upsert()\n\t\t\t\t\t\t\t.update({\n\t\t\t\t\t\t\t\t...prepUpdateValue('update' in operation ? operation.update : {}, now),\n\t\t\t\t\t\t\t\t$setOnInsert: prepInsertValue(\n\t\t\t\t\t\t\t\t\toperation.insert as any,\n\t\t\t\t\t\t\t\t\toperation.makeId?.(i) ?? new ObjectId().toString(),\n\t\t\t\t\t\t\t\t\tnow,\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new EquippedError(`Unknown bulkWrite operation`, { operation })\n\t\t\t\t}\n\t\t\t})\n\t\t\tawait bulk.execute({ session: options.session })\n\t\t},\n\t}\n\n\treturn table\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/dbs/mongo/api.ts"],"names":["getTable","doc","d","mapped","id","now","skipUpdate","config","value","upsert","table","results","parseMongodbQueryParams","sort","options","p","docs","collection","filter","idKey","values","payload","i","prepInsertValue","ObjectId","data","prepUpdateValue","transform","operations","bulk","operation","EquippedError"],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/api.min.cjs","sourcesContent":["import { Collection, ObjectId, OptionalUnlessRequiredId, SortDirection, WithId } from 'mongodb'\n\nimport { QueryParams } from '../pipes'\nimport { parseMongodbQueryParams } from './query'\nimport { EquippedError } from '../../errors'\nimport * as core from '../base/core'\n\nconst idKey = '_id'\ntype IdType = { _id: string }\n\nexport function getTable<Model extends core.Model<IdType>, Entity extends core.Entity>(\n\tconfig: core.Config<Model, Entity>,\n\tcollection: Collection<Model>,\n) {\n\ttype WI = Model | WithId<Model>\n\tasync function transform(doc: WI): Promise<Entity>\n\t// eslint-disable-next-line no-redeclare\n\tasync function transform(doc: WI[]): Promise<Entity[]>\n\t// eslint-disable-next-line no-redeclare\n\tasync function transform(doc: WI | WI[]) {\n\t\tconst docs = Array.isArray(doc) ? doc : [doc]\n\t\tconst mapped = docs.map((d) => config.mapper(d as Model))\n\t\treturn Array.isArray(doc) ? mapped : mapped[0]\n\t}\n\n\tfunction prepInsertValue(value: core.CreateInput<Model>, id: string, now: Date, skipUpdate?: boolean) {\n\t\tconst base: core.Model<IdType> = {\n\t\t\t[idKey]: id,\n\t\t\t...(config.options?.skipAudit\n\t\t\t\t? {}\n\t\t\t\t: {\n\t\t\t\t\t\tcreatedAt: now.getTime(),\n\t\t\t\t\t\t...(skipUpdate ? {} : { updatedAt: now.getTime() }),\n\t\t\t\t\t}),\n\t\t}\n\t\treturn {\n\t\t\t...value,\n\t\t\t...base,\n\t\t} as unknown as OptionalUnlessRequiredId<Model>\n\t}\n\n\tfunction prepUpdateValue(value: core.UpdateInput<Model>, now: Date, upsert = false) {\n\t\treturn {\n\t\t\t...value,\n\t\t\t$set: {\n\t\t\t\t...value.$set,\n\t\t\t\t...(upsert || (Object.keys(value).length > 0 && !config.options?.skipAudit) ? { updatedAt: now.getTime() } : {}),\n\t\t\t},\n\t\t}\n\t}\n\n\tconst table: core.Table<IdType, Model, Entity, { collection: Collection<Model> }> = {\n\t\tconfig,\n\t\textras: { collection },\n\n\t\tquery: async (params: QueryParams) => {\n\t\t\tconst results = await parseMongodbQueryParams(collection, params)\n\t\t\treturn {\n\t\t\t\t...results,\n\t\t\t\tresults: (await transform(results.results as any)) as any,\n\t\t\t}\n\t\t},\n\n\t\tfindMany: async (filter, options = {}) => {\n\t\t\tconst sortArray = Array.isArray(options.sort) ? options.sort : options.sort ? [options.sort] : []\n\t\t\tconst sort = sortArray.map((p) => [p.field, p.desc ? 'desc' : 'asc'] as [string, SortDirection])\n\t\t\tconst docs = await collection\n\t\t\t\t.find(filter, {\n\t\t\t\t\tsession: options.session,\n\t\t\t\t\tlimit: options.limit,\n\t\t\t\t\tsort,\n\t\t\t\t})\n\t\t\t\t.toArray()\n\t\t\treturn transform(docs)\n\t\t},\n\n\t\tfindOne: async (filter, options = {}) => {\n\t\t\tconst result = await table.findMany(filter, { ...options, limit: 1 })\n\t\t\treturn result.at(0) ?? null\n\t\t},\n\n\t\tfindById: async (id, options = {}) => {\n\t\t\tconst result = await table.findOne({ [idKey]: id } as core.Filter<Model>, options)\n\t\t\treturn result\n\t\t},\n\n\t\tinsertMany: async (values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\tconst payload = values.map((value, i) => prepInsertValue(value, options.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\tawait collection.insertMany(payload, { session: options.session })\n\n\t\t\tconst insertedData = await Promise.all(payload.map(async (data) => await table.findById(data[idKey] as any, options)))\n\t\t\treturn insertedData.filter((value) => !!value)\n\t\t},\n\n\t\tinsertOne: async (values, options = {}) => {\n\t\t\tconst result = await table.insertMany([values], options)\n\t\t\treturn result[0]\n\t\t},\n\n\t\tupdateMany: async (filter, values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\tawait collection.updateMany(filter, prepUpdateValue(values, now), { session: options.session })\n\t\t\treturn table.findMany(filter, options)\n\t\t},\n\n\t\tupdateOne: async (filter, values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\tconst doc = await collection.findOneAndUpdate(filter, prepUpdateValue(values, now), {\n\t\t\t\treturnDocument: 'after',\n\t\t\t\tsession: options.session,\n\t\t\t})\n\t\t\treturn doc ? transform(doc) : null\n\t\t},\n\n\t\tupdateById: async (id, values, options = {}) => {\n\t\t\tconst result = await table.updateOne({ [idKey]: id } as core.Filter<Model>, values, options)\n\t\t\treturn result\n\t\t},\n\n\t\tupsertOne: async (filter, values, options = {}) => {\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\n\t\t\tconst doc = await collection.findOneAndUpdate(\n\t\t\t\tfilter,\n\t\t\t\t{\n\t\t\t\t\t...prepUpdateValue('update' in values ? values.update : {}, now, true),\n\t\t\t\t\t// @ts-expect-error fighting ts\n\t\t\t\t\t$setOnInsert: prepInsertValue(values.insert, options.makeId?.() ?? new ObjectId().toString(), now, true),\n\t\t\t\t},\n\t\t\t\t{ returnDocument: 'after', session: options.session, upsert: true },\n\t\t\t)\n\n\t\t\treturn transform(doc)\n\t\t},\n\n\t\tdeleteMany: async (filter, options = {}) => {\n\t\t\tconst docs = await table.findMany(filter, options)\n\t\t\tawait collection.deleteMany(filter, { session: options.session })\n\t\t\treturn docs\n\t\t},\n\n\t\tdeleteOne: async (filter, options) => {\n\t\t\tconst doc = await collection.findOneAndDelete(filter, { session: options?.session })\n\t\t\treturn doc ? transform(doc) : null\n\t\t},\n\n\t\tdeleteById: async (id, options) => {\n\t\t\tconst result = await table.deleteOne({ [idKey]: id } as core.Filter<Model>, options)\n\t\t\treturn result\n\t\t},\n\n\t\tbulkWrite: async (operations, options = {}) => {\n\t\t\tconst bulk = collection.initializeUnorderedBulkOp({ session: options.session })\n\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\toperations.forEach((operation, i) => {\n\t\t\t\tswitch (operation.op) {\n\t\t\t\t\tcase 'insert':\n\t\t\t\t\t\tbulk.insert(prepInsertValue(operation.value, operation.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\tbulk.find(operation.filter).delete()\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'update':\n\t\t\t\t\t\tbulk.find(operation.filter).update(prepUpdateValue(operation.value, now))\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'upsert':\n\t\t\t\t\t\tbulk.find(operation.filter)\n\t\t\t\t\t\t\t.upsert()\n\t\t\t\t\t\t\t.update({\n\t\t\t\t\t\t\t\t...prepUpdateValue('update' in operation ? operation.update : {}, now, true),\n\t\t\t\t\t\t\t\t$setOnInsert: prepInsertValue(\n\t\t\t\t\t\t\t\t\toperation.insert as any,\n\t\t\t\t\t\t\t\t\toperation.makeId?.(i) ?? new ObjectId().toString(),\n\t\t\t\t\t\t\t\t\tnow,\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new EquippedError(`Unknown bulkWrite operation`, { operation })\n\t\t\t\t}\n\t\t\t})\n\t\t\tawait bulk.execute({ session: options.session })\n\t\t},\n\t}\n\n\treturn table\n}\n"]}
@@ -8,11 +8,11 @@ class MongoDb extends __instancecjs.Db {
8
8
  constructor(mongoConfig, dbConfig) {
9
9
  super(dbConfig);
10
10
  this.mongoConfig = mongoConfig;
11
- this.#client = new (0, _mongodb.MongoClient)(mongoConfig.uri);
11
+ this.client = new (0, _mongodb.MongoClient)(mongoConfig.uri);
12
12
  _indexcjs3.Instance.on(
13
13
  "start",
14
14
  async () => {
15
- await this.#client.connect();
15
+ await this.client.connect();
16
16
  const grouped = this.#cols.reduce((acc, cur) => {
17
17
  if (!acc[cur.db]) acc[cur.db] = [];
18
18
  acc[cur.db].push(cur.col);
@@ -23,7 +23,7 @@ class MongoDb extends __instancecjs.Db {
23
23
  };
24
24
  await Promise.all(
25
25
  Object.entries(grouped).map(async ([dbName, colNames]) => {
26
- const db = this.#client.db(dbName);
26
+ const db = this.client.db(dbName);
27
27
  const collections = await db.listCollections().toArray();
28
28
  return colNames.map(async (colName) => {
29
29
  const existing = collections.find((collection) => collection.name === colName);
@@ -37,12 +37,12 @@ class MongoDb extends __instancecjs.Db {
37
37
  },
38
38
  3
39
39
  );
40
- _indexcjs3.Instance.on("close", async () => this.#client.close(), 1);
40
+ _indexcjs3.Instance.on("close", async () => this.client.close(), 1);
41
41
  }
42
- #client;
42
+
43
43
  #cols = [];
44
44
  async session(callback) {
45
- return this.#client.withSession(callback);
45
+ return this.client.withSession(callback);
46
46
  }
47
47
  id() {
48
48
  return new (0, _mongodb.ObjectId)();
@@ -53,7 +53,7 @@ class MongoDb extends __instancecjs.Db {
53
53
  new (0, _changescjs.MongoDbChange)(
54
54
  this.mongoConfig,
55
55
  this.config.changes,
56
- this.#client,
56
+ this.client,
57
57
  this.getScopedDb(config.db),
58
58
  config.col,
59
59
  config.change,
@@ -61,7 +61,7 @@ class MongoDb extends __instancecjs.Db {
61
61
  );
62
62
  }
63
63
  this.#cols.push({ db: this.getScopedDb(config.db), col: config.col });
64
- const collection = this.#client.db(this.getScopedDb(config.db)).collection(config.col);
64
+ const collection = this.client.db(this.getScopedDb(config.db)).collection(config.col);
65
65
  return _apicjs.getTable.call(void 0, config, collection);
66
66
  }
67
67
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/dbs/mongo/index.ts","/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/index.cjs"],"names":[],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/index.cjs","sourcesContent":["import { ClientSession, CollectionInfo, MongoClient, ObjectId } from 'mongodb'\n\nimport { getTable } from './api'\nimport { MongoDbConfig } from '../pipes'\nimport { MongoDbChange } from './changes'\nimport { EquippedError } from '../../errors'\nimport { Instance } from '../../instance'\nimport { Db } from '../base/_instance'\nimport * as core from '../base/core'\nimport { DbConfig } from '../base/types'\n\nexport class MongoDb extends Db<{ _id: string }> {\n\t#client: MongoClient\n\t#cols: { db: string; col: string }[] = []\n\n\tconstructor(\n\t\tprivate mongoConfig: MongoDbConfig,\n\t\tdbConfig: DbConfig,\n\t) {\n\t\tsuper(dbConfig)\n\t\tthis.#client = new MongoClient(mongoConfig.uri)\n\t\tInstance.on(\n\t\t\t'start',\n\t\t\tasync () => {\n\t\t\t\tawait this.#client.connect()\n\n\t\t\t\tconst grouped = this.#cols.reduce<Record<string, string[]>>((acc, cur) => {\n\t\t\t\t\tif (!acc[cur.db]) acc[cur.db] = []\n\t\t\t\t\tacc[cur.db].push(cur.col)\n\t\t\t\t\treturn acc\n\t\t\t\t}, {})\n\n\t\t\t\tconst options = {\n\t\t\t\t\tchangeStreamPreAndPostImages: { enabled: true },\n\t\t\t\t}\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tObject.entries(grouped).map(async ([dbName, colNames]) => {\n\t\t\t\t\t\tconst db = this.#client.db(dbName)\n\t\t\t\t\t\tconst collections = await db.listCollections<CollectionInfo>().toArray()\n\t\t\t\t\t\treturn colNames.map(async (colName) => {\n\t\t\t\t\t\t\tconst existing = collections.find((collection) => collection.name === colName)\n\t\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\texisting.options?.changeStreamPreAndPostImages?.enabled !== options.changeStreamPreAndPostImages.enabled\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\tawait db.command({ collMod: colName, ...options })\n\t\t\t\t\t\t\t} else await db.createCollection(colName, options)\n\t\t\t\t\t\t})\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t},\n\t\t\t3,\n\t\t)\n\t\tInstance.on('close', async () => this.#client.close(), 1)\n\t}\n\n\tasync session<T>(callback: (session: ClientSession) => Promise<T>) {\n\t\treturn this.#client.withSession(callback)\n\t}\n\n\tid() {\n\t\treturn new ObjectId()\n\t}\n\n\tuse<Model extends core.Model<{ _id: string }>, Entity extends core.Entity>(config: core.Config<Model, Entity>) {\n\t\tif (config.change) {\n\t\t\tif (!this.config.changes) Instance.crash(new EquippedError('Db changes are not enabled in the configuration.', { config }))\n\t\t\tnew MongoDbChange<Model, Entity>(\n\t\t\t\tthis.mongoConfig,\n\t\t\t\tthis.config.changes,\n\t\t\t\tthis.#client,\n\t\t\t\tthis.getScopedDb(config.db),\n\t\t\t\tconfig.col,\n\t\t\t\tconfig.change,\n\t\t\t\tconfig.mapper,\n\t\t\t)\n\t\t}\n\t\tthis.#cols.push({ db: this.getScopedDb(config.db), col: config.col })\n\t\tconst collection = this.#client.db(this.getScopedDb(config.db)).collection<Model>(config.col)\n\t\treturn getTable(config, collection)\n\t}\n}\n",null]}
1
+ {"version":3,"sources":["../../../../src/dbs/mongo/index.ts","/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/index.cjs"],"names":[],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/index.cjs","sourcesContent":["import { ClientSession, CollectionInfo, MongoClient, ObjectId } from 'mongodb'\n\nimport { getTable } from './api'\nimport { MongoDbConfig } from '../pipes'\nimport { MongoDbChange } from './changes'\nimport { EquippedError } from '../../errors'\nimport { Instance } from '../../instance'\nimport { Db } from '../base/_instance'\nimport * as core from '../base/core'\nimport { DbConfig } from '../base/types'\n\nexport class MongoDb extends Db<{ _id: string }> {\n\tclient: MongoClient\n\t#cols: { db: string; col: string }[] = []\n\n\tconstructor(\n\t\tprivate mongoConfig: MongoDbConfig,\n\t\tdbConfig: DbConfig,\n\t) {\n\t\tsuper(dbConfig)\n\t\tthis.client = new MongoClient(mongoConfig.uri)\n\t\tInstance.on(\n\t\t\t'start',\n\t\t\tasync () => {\n\t\t\t\tawait this.client.connect()\n\n\t\t\t\tconst grouped = this.#cols.reduce<Record<string, string[]>>((acc, cur) => {\n\t\t\t\t\tif (!acc[cur.db]) acc[cur.db] = []\n\t\t\t\t\tacc[cur.db].push(cur.col)\n\t\t\t\t\treturn acc\n\t\t\t\t}, {})\n\n\t\t\t\tconst options = {\n\t\t\t\t\tchangeStreamPreAndPostImages: { enabled: true },\n\t\t\t\t}\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tObject.entries(grouped).map(async ([dbName, colNames]) => {\n\t\t\t\t\t\tconst db = this.client.db(dbName)\n\t\t\t\t\t\tconst collections = await db.listCollections<CollectionInfo>().toArray()\n\t\t\t\t\t\treturn colNames.map(async (colName) => {\n\t\t\t\t\t\t\tconst existing = collections.find((collection) => collection.name === colName)\n\t\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\texisting.options?.changeStreamPreAndPostImages?.enabled !== options.changeStreamPreAndPostImages.enabled\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\tawait db.command({ collMod: colName, ...options })\n\t\t\t\t\t\t\t} else await db.createCollection(colName, options)\n\t\t\t\t\t\t})\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t},\n\t\t\t3,\n\t\t)\n\t\tInstance.on('close', async () => this.client.close(), 1)\n\t}\n\n\tasync session<T>(callback: (session: ClientSession) => Promise<T>) {\n\t\treturn this.client.withSession(callback)\n\t}\n\n\tid() {\n\t\treturn new ObjectId()\n\t}\n\n\tuse<Model extends core.Model<{ _id: string }>, Entity extends core.Entity>(config: core.Config<Model, Entity>) {\n\t\tif (config.change) {\n\t\t\tif (!this.config.changes) Instance.crash(new EquippedError('Db changes are not enabled in the configuration.', { config }))\n\t\t\tnew MongoDbChange<Model, Entity>(\n\t\t\t\tthis.mongoConfig,\n\t\t\t\tthis.config.changes,\n\t\t\t\tthis.client,\n\t\t\t\tthis.getScopedDb(config.db),\n\t\t\t\tconfig.col,\n\t\t\t\tconfig.change,\n\t\t\t\tconfig.mapper,\n\t\t\t)\n\t\t}\n\t\tthis.#cols.push({ db: this.getScopedDb(config.db), col: config.col })\n\t\tconst collection = this.client.db(this.getScopedDb(config.db)).collection<Model>(config.col)\n\t\treturn getTable(config, collection)\n\t}\n}\n",null]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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 _mongodb = require('mongodb');var _apimincjs = require('./api.min.cjs');var _changesmincjs = require('./changes.min.cjs');var _indexmincjs = require('../../errors/index.min.cjs');var _indexmincjs3 = require('../../instance/index.min.cjs');var __instancemincjs = require('../base/_instance.min.cjs');class q extends __instancemincjs.Db{constructor(e,n){super(n);this.mongoConfig=e;this.#e=new (0, _mongodb.MongoClient)(e.uri),_indexmincjs3.Instance.on("start",async()=>{await this.#e.connect();const c=this.#o.reduce((o,t)=>(o[t.db]||(o[t.db]=[]),o[t.db].push(t.col),o),{}),s={changeStreamPreAndPostImages:{enabled:!0}};await Promise.all(Object.entries(c).map(async([o,t])=>{const i=this.#e.db(o),d=await i.listCollections().toArray();return t.map(async r=>{const l=d.find(m=>m.name===r);l?_optionalChain([l, 'access', _ => _.options, 'optionalAccess', _2 => _2.changeStreamPreAndPostImages, 'optionalAccess', _3 => _3.enabled])!==s.changeStreamPreAndPostImages.enabled&&await i.command({collMod:r,...s}):await i.createCollection(r,s)})}))},3),_indexmincjs3.Instance.on("close",async()=>this.#e.close(),1)}#e;#o=[];async session(e){return this.#e.withSession(e)}id(){return new _mongodb.ObjectId}use(e){e.change&&(this.config.changes||_indexmincjs3.Instance.crash(new (0, _indexmincjs.EquippedError)("Db changes are not enabled in the configuration.",{config:e})),new (0, _changesmincjs.MongoDbChange)(this.mongoConfig,this.config.changes,this.#e,this.getScopedDb(e.db),e.col,e.change,e.mapper)),this.#o.push({db:this.getScopedDb(e.db),col:e.col});const n=this.#e.db(this.getScopedDb(e.db)).collection(e.col);return _apimincjs.getTable.call(void 0, e,n)}}exports.MongoDb = q;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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 _mongodb = require('mongodb');var _apimincjs = require('./api.min.cjs');var _changesmincjs = require('./changes.min.cjs');var _indexmincjs = require('../../errors/index.min.cjs');var _indexmincjs3 = require('../../instance/index.min.cjs');var __instancemincjs = require('../base/_instance.min.cjs');class q extends __instancemincjs.Db{constructor(e,n){super(n);this.mongoConfig=e;this.client=new (0, _mongodb.MongoClient)(e.uri),_indexmincjs3.Instance.on("start",async()=>{await this.client.connect();const a=this.#e.reduce((t,o)=>(t[o.db]||(t[o.db]=[]),t[o.db].push(o.col),t),{}),i={changeStreamPreAndPostImages:{enabled:!0}};await Promise.all(Object.entries(a).map(async([t,o])=>{const s=this.client.db(t),d=await s.listCollections().toArray();return o.map(async r=>{const c=d.find(m=>m.name===r);c?_optionalChain([c, 'access', _ => _.options, 'optionalAccess', _2 => _2.changeStreamPreAndPostImages, 'optionalAccess', _3 => _3.enabled])!==i.changeStreamPreAndPostImages.enabled&&await s.command({collMod:r,...i}):await s.createCollection(r,i)})}))},3),_indexmincjs3.Instance.on("close",async()=>this.client.close(),1)}#e=[];async session(e){return this.client.withSession(e)}id(){return new _mongodb.ObjectId}use(e){e.change&&(this.config.changes||_indexmincjs3.Instance.crash(new (0, _indexmincjs.EquippedError)("Db changes are not enabled in the configuration.",{config:e})),new (0, _changesmincjs.MongoDbChange)(this.mongoConfig,this.config.changes,this.client,this.getScopedDb(e.db),e.col,e.change,e.mapper)),this.#e.push({db:this.getScopedDb(e.db),col:e.col});const n=this.client.db(this.getScopedDb(e.db)).collection(e.col);return _apimincjs.getTable.call(void 0, e,n)}}exports.MongoDb = q;
2
2
  //# sourceMappingURL=index.min.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/dbs/mongo/index.ts"],"names":["MongoDb","MongoClient","#client","#cols","cur","acc","options","dbName","colName","existing","db","Instance","callback","ObjectId","config","EquippedError","getTable","collection"],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/index.min.cjs","sourcesContent":["import { ClientSession, CollectionInfo, MongoClient, ObjectId } from 'mongodb'\n\nimport { getTable } from './api'\nimport { MongoDbConfig } from '../pipes'\nimport { MongoDbChange } from './changes'\nimport { EquippedError } from '../../errors'\nimport { Instance } from '../../instance'\nimport { Db } from '../base/_instance'\nimport * as core from '../base/core'\nimport { DbConfig } from '../base/types'\n\nexport class MongoDb extends Db<{ _id: string }> {\n\t#client: MongoClient\n\t#cols: { db: string; col: string }[] = []\n\n\tconstructor(\n\t\tprivate mongoConfig: MongoDbConfig,\n\t\tdbConfig: DbConfig,\n\t) {\n\t\tsuper(dbConfig)\n\t\tthis.#client = new MongoClient(mongoConfig.uri)\n\t\tInstance.on(\n\t\t\t'start',\n\t\t\tasync () => {\n\t\t\t\tawait this.#client.connect()\n\n\t\t\t\tconst grouped = this.#cols.reduce<Record<string, string[]>>((acc, cur) => {\n\t\t\t\t\tif (!acc[cur.db]) acc[cur.db] = []\n\t\t\t\t\tacc[cur.db].push(cur.col)\n\t\t\t\t\treturn acc\n\t\t\t\t}, {})\n\n\t\t\t\tconst options = {\n\t\t\t\t\tchangeStreamPreAndPostImages: { enabled: true },\n\t\t\t\t}\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tObject.entries(grouped).map(async ([dbName, colNames]) => {\n\t\t\t\t\t\tconst db = this.#client.db(dbName)\n\t\t\t\t\t\tconst collections = await db.listCollections<CollectionInfo>().toArray()\n\t\t\t\t\t\treturn colNames.map(async (colName) => {\n\t\t\t\t\t\t\tconst existing = collections.find((collection) => collection.name === colName)\n\t\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\texisting.options?.changeStreamPreAndPostImages?.enabled !== options.changeStreamPreAndPostImages.enabled\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\tawait db.command({ collMod: colName, ...options })\n\t\t\t\t\t\t\t} else await db.createCollection(colName, options)\n\t\t\t\t\t\t})\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t},\n\t\t\t3,\n\t\t)\n\t\tInstance.on('close', async () => this.#client.close(), 1)\n\t}\n\n\tasync session<T>(callback: (session: ClientSession) => Promise<T>) {\n\t\treturn this.#client.withSession(callback)\n\t}\n\n\tid() {\n\t\treturn new ObjectId()\n\t}\n\n\tuse<Model extends core.Model<{ _id: string }>, Entity extends core.Entity>(config: core.Config<Model, Entity>) {\n\t\tif (config.change) {\n\t\t\tif (!this.config.changes) Instance.crash(new EquippedError('Db changes are not enabled in the configuration.', { config }))\n\t\t\tnew MongoDbChange<Model, Entity>(\n\t\t\t\tthis.mongoConfig,\n\t\t\t\tthis.config.changes,\n\t\t\t\tthis.#client,\n\t\t\t\tthis.getScopedDb(config.db),\n\t\t\t\tconfig.col,\n\t\t\t\tconfig.change,\n\t\t\t\tconfig.mapper,\n\t\t\t)\n\t\t}\n\t\tthis.#cols.push({ db: this.getScopedDb(config.db), col: config.col })\n\t\tconst collection = this.#client.db(this.getScopedDb(config.db)).collection<Model>(config.col)\n\t\treturn getTable(config, collection)\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/dbs/mongo/index.ts"],"names":["MongoDb","Instance","grouped","acc","cur","options","collections","db","colName","existing","#cols","config","EquippedError","collection"],"mappings":"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","file":"/home/runner/work/equipped/equipped/dist/cjs/dbs/mongo/index.min.cjs","sourcesContent":["import { ClientSession, CollectionInfo, MongoClient, ObjectId } from 'mongodb'\n\nimport { getTable } from './api'\nimport { MongoDbConfig } from '../pipes'\nimport { MongoDbChange } from './changes'\nimport { EquippedError } from '../../errors'\nimport { Instance } from '../../instance'\nimport { Db } from '../base/_instance'\nimport * as core from '../base/core'\nimport { DbConfig } from '../base/types'\n\nexport class MongoDb extends Db<{ _id: string }> {\n\tclient: MongoClient\n\t#cols: { db: string; col: string }[] = []\n\n\tconstructor(\n\t\tprivate mongoConfig: MongoDbConfig,\n\t\tdbConfig: DbConfig,\n\t) {\n\t\tsuper(dbConfig)\n\t\tthis.client = new MongoClient(mongoConfig.uri)\n\t\tInstance.on(\n\t\t\t'start',\n\t\t\tasync () => {\n\t\t\t\tawait this.client.connect()\n\n\t\t\t\tconst grouped = this.#cols.reduce<Record<string, string[]>>((acc, cur) => {\n\t\t\t\t\tif (!acc[cur.db]) acc[cur.db] = []\n\t\t\t\t\tacc[cur.db].push(cur.col)\n\t\t\t\t\treturn acc\n\t\t\t\t}, {})\n\n\t\t\t\tconst options = {\n\t\t\t\t\tchangeStreamPreAndPostImages: { enabled: true },\n\t\t\t\t}\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tObject.entries(grouped).map(async ([dbName, colNames]) => {\n\t\t\t\t\t\tconst db = this.client.db(dbName)\n\t\t\t\t\t\tconst collections = await db.listCollections<CollectionInfo>().toArray()\n\t\t\t\t\t\treturn colNames.map(async (colName) => {\n\t\t\t\t\t\t\tconst existing = collections.find((collection) => collection.name === colName)\n\t\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\texisting.options?.changeStreamPreAndPostImages?.enabled !== options.changeStreamPreAndPostImages.enabled\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\tawait db.command({ collMod: colName, ...options })\n\t\t\t\t\t\t\t} else await db.createCollection(colName, options)\n\t\t\t\t\t\t})\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t},\n\t\t\t3,\n\t\t)\n\t\tInstance.on('close', async () => this.client.close(), 1)\n\t}\n\n\tasync session<T>(callback: (session: ClientSession) => Promise<T>) {\n\t\treturn this.client.withSession(callback)\n\t}\n\n\tid() {\n\t\treturn new ObjectId()\n\t}\n\n\tuse<Model extends core.Model<{ _id: string }>, Entity extends core.Entity>(config: core.Config<Model, Entity>) {\n\t\tif (config.change) {\n\t\t\tif (!this.config.changes) Instance.crash(new EquippedError('Db changes are not enabled in the configuration.', { config }))\n\t\t\tnew MongoDbChange<Model, Entity>(\n\t\t\t\tthis.mongoConfig,\n\t\t\t\tthis.config.changes,\n\t\t\t\tthis.client,\n\t\t\t\tthis.getScopedDb(config.db),\n\t\t\t\tconfig.col,\n\t\t\t\tconfig.change,\n\t\t\t\tconfig.mapper,\n\t\t\t)\n\t\t}\n\t\tthis.#cols.push({ db: this.getScopedDb(config.db), col: config.col })\n\t\tconst collection = this.client.db(this.getScopedDb(config.db)).collection<Model>(config.col)\n\t\treturn getTable(config, collection)\n\t}\n}\n"]}
@@ -112,7 +112,7 @@ class OpenApi {
112
112
  router() {
113
113
  const jsonPath = "/openapi.json";
114
114
  const router = new (0, _routescjs.Router)({ path: _nullishCoalesce(this.config.config.openapi.docsPath, () => ( "/")), hide: true });
115
- router.get("/")((req) => req.res({ body: this.#html(`.${jsonPath}`), contentType: "text/html" }));
115
+ router.get("/index.html")((req) => req.res({ body: this.#html(`.${jsonPath}`), contentType: "text/html" }));
116
116
  router.get(jsonPath)((req) => req.res({ body: this.#baseOpenapiDoc }));
117
117
  return router;
118
118
  }