@owlmeans/redis 0.1.11 → 0.1.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.
@@ -7,7 +7,7 @@ applyTo: "**/context.ts, **/config.ts, **/*.ts, **/*.tsx"
7
7
  # @owlmeans/redis
8
8
 
9
9
  **Layer:** Infra
10
- **Install:** `"@owlmeans/redis": "^0.1.11"` in `dependencies`
10
+ **Install:** `"@owlmeans/redis": "^0.1.15"` in `dependencies`
11
11
 
12
12
  ## Key Exports
13
13
 
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "package": "@owlmeans/redis",
4
- "version": "0.1.11",
5
- "generatedAt": "2026-06-17T10:37:52.363Z",
4
+ "version": "0.1.15",
5
+ "generatedAt": "2026-08-07T17:06:32.918Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -8,7 +8,7 @@ user-invocable: false
8
8
  # @owlmeans/redis
9
9
 
10
10
  **Layer:** Infra
11
- **Install:** `"@owlmeans/redis": "^0.1.11"` in `dependencies`
11
+ **Install:** `"@owlmeans/redis": "^0.1.15"` in `dependencies`
12
12
 
13
13
  ## Key Exports
14
14
 
package/build/types.d.ts CHANGED
@@ -2,5 +2,6 @@ import type { RedisOptions } from 'ioredis';
2
2
  export interface RedisMeta extends RedisOptions {
3
3
  masterNumber?: number;
4
4
  slaveNumber?: number;
5
+ dbIndex?: string | number;
5
6
  }
6
7
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IAIpB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,eAAO,MAAM,yBAAyB,GAAI,QAAQ,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,MAAM,KAAG,YAWtF,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,QAAQ,QAAQ,CAAC,SAAS,CAAC,KAAG;IAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAiBvH,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAoB5C,eAAO,MAAM,yBAAyB,GAAI,QAAQ,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,MAAM,KAAG,YAWtF,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,QAAQ,QAAQ,CAAC,SAAS,CAAC,KAAG;IAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAiBvH,CAAA"}
@@ -1,3 +1,20 @@
1
+ // Translate the configurable `dbIndex` (which may arrive as a string from a file-mounted
2
+ // config value) into ioredis' numeric `db` option, and drop `dbIndex` from the spread so
3
+ // it isn't forwarded as an unknown option.
4
+ const normalizeRedisMeta = (meta) => {
5
+ if (meta == null) {
6
+ return {};
7
+ }
8
+ const { dbIndex, ...rest } = meta;
9
+ if (dbIndex == null || `${dbIndex}` === '') {
10
+ return rest;
11
+ }
12
+ const db = Number(dbIndex);
13
+ if (Number.isNaN(db)) {
14
+ throw new SyntaxError(`Invalid redis dbIndex: "${dbIndex}"`);
15
+ }
16
+ return { ...rest, db };
17
+ };
1
18
  export const prepareSingleRedisOptions = (config, host) => {
2
19
  host = (host != null ? host : config.host);
3
20
  if (typeof host !== 'string') {
@@ -7,7 +24,7 @@ export const prepareSingleRedisOptions = (config, host) => {
7
24
  host: host,
8
25
  port: config.port ?? 6379,
9
26
  password: config.secret,
10
- ...config.meta
27
+ ...normalizeRedisMeta(config.meta)
11
28
  };
12
29
  };
13
30
  export const prepareClusterRedisOptions = (config) => {
@@ -23,7 +40,7 @@ export const prepareClusterRedisOptions = (config) => {
23
40
  redisOptions: {
24
41
  // tls: { rejectUnauthorized: false }, // @TODO check if it's working
25
42
  password: config.secret,
26
- ...config.meta
43
+ ...normalizeRedisMeta(config.meta)
27
44
  }
28
45
  }
29
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAA2B,EAAE,IAAa,EAAgB,EAAE;IACpG,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAW,CAAA;IACpD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,WAAW,CAAC,8EAA8E,CAAC,CAAA;IACvG,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;QACzB,QAAQ,EAAE,MAAM,CAAC,MAAM;QACvB,GAAG,MAAM,CAAC,IAAI;KACf,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,MAA2B,EAAqD,EAAE;IAC3H,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,WAAW,CAAC,kFAAkF,CAAC,CAAA;IAC3G,CAAC;IACD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE;YACtE,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gBAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YACzB,CAAC;YACD,mBAAmB,EAAE,KAAK;YAC1B,YAAY,EAAE;gBACZ,qEAAqE;gBACrE,QAAQ,EAAE,MAAM,CAAC,MAAM;gBACvB,GAAG,MAAM,CAAC,IAAI;aACf;SACF;KACF,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAIA,yFAAyF;AACzF,yFAAyF;AACzF,2CAA2C;AAC3C,MAAM,kBAAkB,GAAG,CAAC,IAAgB,EAAgB,EAAE;IAC5D,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IACjC,IAAI,OAAO,IAAI,IAAI,IAAI,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAC1B,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,WAAW,CAAC,2BAA2B,OAAO,GAAG,CAAC,CAAA;IAC9D,CAAC;IACD,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAA2B,EAAE,IAAa,EAAgB,EAAE;IACpG,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAW,CAAA;IACpD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,WAAW,CAAC,8EAA8E,CAAC,CAAA;IACvG,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;QACzB,QAAQ,EAAE,MAAM,CAAC,MAAM;QACvB,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC;KACnC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,MAA2B,EAAqD,EAAE;IAC3H,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,WAAW,CAAC,kFAAkF,CAAC,CAAA;IAC3G,CAAC;IACD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE;YACtE,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gBAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YACzB,CAAC;YACD,mBAAmB,EAAE,KAAK;YAC1B,YAAY,EAAE;gBACZ,qEAAqE;gBACrE,QAAQ,EAAE,MAAM,CAAC,MAAM;gBACvB,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC;aACnC;SACF;KACF,CAAA;AACH,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/redis",
3
- "version": "0.1.11",
3
+ "version": "0.1.15",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -22,16 +22,16 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@owlmeans/dep-config": "workspace:*",
25
- "@types/node": "^24.10.1",
26
- "nodemon": "^3.1.11",
27
- "typescript": "^6.0.2"
25
+ "@types/node": "^26.1.0",
26
+ "nodemon": "^3.1.14",
27
+ "typescript": "^6.0.3"
28
28
  },
29
29
  "dependencies": {
30
30
  "@noble/hashes": "^1.5.0",
31
- "@owlmeans/context": "^0.1.11",
32
- "@owlmeans/redis-resource": "^0.1.11",
33
- "@owlmeans/resource": "^0.1.11",
34
- "@owlmeans/server-context": "^0.1.11",
31
+ "@owlmeans/context": "^0.1.15",
32
+ "@owlmeans/redis-resource": "^0.1.15",
33
+ "@owlmeans/resource": "^0.1.15",
34
+ "@owlmeans/server-context": "^0.1.15",
35
35
  "@scure/base": "^1.1.9",
36
36
  "ioredis": "^5.4.1"
37
37
  },
package/src/types.ts CHANGED
@@ -3,4 +3,8 @@ import type { RedisOptions } from 'ioredis'
3
3
  export interface RedisMeta extends RedisOptions {
4
4
  masterNumber?: number
5
5
  slaveNumber?: number
6
+ // Numeric Redis database index (SELECT n). Accepts a string so it can be supplied from a
7
+ // file-mounted config value (e.g. /etc/app-config/cache-db-index); it is coerced to a
8
+ // number before being passed to ioredis. Prefer this over ioredis' `db` for configurability.
9
+ dbIndex?: string | number
6
10
  }
@@ -2,6 +2,24 @@ import type { DbConfig } from '@owlmeans/resource'
2
2
  import type { RedisOptions, ClusterNode, ClusterOptions } from 'ioredis'
3
3
  import type { RedisMeta } from '../types.js'
4
4
 
5
+ // Translate the configurable `dbIndex` (which may arrive as a string from a file-mounted
6
+ // config value) into ioredis' numeric `db` option, and drop `dbIndex` from the spread so
7
+ // it isn't forwarded as an unknown option.
8
+ const normalizeRedisMeta = (meta?: RedisMeta): RedisOptions => {
9
+ if (meta == null) {
10
+ return {}
11
+ }
12
+ const { dbIndex, ...rest } = meta
13
+ if (dbIndex == null || `${dbIndex}` === '') {
14
+ return rest
15
+ }
16
+ const db = Number(dbIndex)
17
+ if (Number.isNaN(db)) {
18
+ throw new SyntaxError(`Invalid redis dbIndex: "${dbIndex}"`)
19
+ }
20
+ return { ...rest, db }
21
+ }
22
+
5
23
  export const prepareSingleRedisOptions = (config: DbConfig<RedisMeta>, host?: string): RedisOptions => {
6
24
  host = (host != null ? host : config.host) as string
7
25
  if (typeof host !== 'string') {
@@ -11,7 +29,7 @@ export const prepareSingleRedisOptions = (config: DbConfig<RedisMeta>, host?: st
11
29
  host: host,
12
30
  port: config.port ?? 6379,
13
31
  password: config.secret,
14
- ...config.meta
32
+ ...normalizeRedisMeta(config.meta)
15
33
  }
16
34
  }
17
35
 
@@ -28,7 +46,7 @@ export const prepareClusterRedisOptions = (config: DbConfig<RedisMeta>): { nodes
28
46
  redisOptions: {
29
47
  // tls: { rejectUnauthorized: false }, // @TODO check if it's working
30
48
  password: config.secret,
31
- ...config.meta
49
+ ...normalizeRedisMeta(config.meta)
32
50
  }
33
51
  }
34
52
  }