@owlmeans/redis-resource 0.1.18-rc.41 → 0.1.18-rc.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,7 +16,7 @@ than a read by id walks the namespace. Records the product queries belong in
16
16
  ## Installation
17
17
 
18
18
  ```bash
19
- bun add @owlmeans/redis-resource@^0.1.18-rc.41
19
+ bun add @owlmeans/redis-resource@^0.1.18-rc.43
20
20
  ```
21
21
 
22
22
  `ioredis` and `ajv` are peer dependencies. The connection service comes from
@@ -228,7 +228,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
228
228
  your project's skill store (`.agents/skills/`):
229
229
 
230
230
  ```sh
231
- npx @owlmeans/agent-skills@^0.1.18-rc.46
231
+ npx @owlmeans/agent-skills@^0.1.18-rc.48
232
232
  ```
233
233
 
234
234
  The embedded files are version-matched to this package release. Do not edit them
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@owlmeans/redis-resource",
4
- "version": "0.1.18-rc.41",
5
- "generatedAt": "2026-10-03T11:19:50.785Z",
4
+ "version": "0.1.18-rc.43",
5
+ "generatedAt": "2026-10-05T08:32:19.116Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -8,7 +8,7 @@ user-invocable: false
8
8
  # @owlmeans/redis-resource
9
9
 
10
10
  **Layer:** Infra
11
- **Install:** `"@owlmeans/redis-resource": "^0.1.18-rc.41"` in `dependencies`
11
+ **Install:** `"@owlmeans/redis-resource": "^0.1.18-rc.43"` in `dependencies`
12
12
 
13
13
  ## Key Exports
14
14
 
@@ -1,4 +1,4 @@
1
- import type { ResourceRecord } from '@owlmeans/resource';
1
+ import { type ResourceRecord } from '@owlmeans/resource';
2
2
  import type { RedisResource } from './types.js';
3
3
  /**
4
4
  * A `Resource` over plain redis strings: one JSON document per namespaced key.
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACuC,cAAc,EAEhE,MAAM,oBAAoB,CAAA;AAK3B,OAAO,KAAK,EAA+B,aAAa,EAAE,MAAM,YAAY,CAAA;AAY5E;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC5B,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,4BAE7C,MAAM,8CACZ,CAmZF,CAAA"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuE,KAAK,cAAc,EAA2M,MAAM,oBAAoB,CAAA;AAGtU,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,YAAY,CAAA;AAY/D;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC5B,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,4BAE7C,MAAM,8CACZ,CAgaF,CAAA"}
package/build/resource.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import { applyQuery, filterRecords, firstMatch, matchCriteria, MisshapedRecord, RecordExists, UnknownRecordError, UnsupportedArgumentError } from '@owlmeans/resource';
2
+ import { logThrottle, logger } from '@owlmeans/log';
2
3
  import { CONSUMER_ID_LENGTH, DEFAULT_DB_ALIAS, DEFAULT_STREAM_BLOCK, READ_BATCH, RECLAIM_COUNT, RECLAIM_IDLE, SCAN_BATCH, STREAM_MAX_LENGTH } from './consts.js';
3
4
  import { appendContextual, assertContext } from '@owlmeans/context';
4
5
  import { createIdOfLength, uuid } from '@owlmeans/basic-ids';
6
+ const log = logger('redis-resource');
5
7
  /**
6
8
  * A `Resource` over plain redis strings: one JSON document per namespaced key.
7
9
  *
@@ -119,7 +121,7 @@ export const makeRedisResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
119
121
  await subscriber.quit();
120
122
  }
121
123
  catch (e) {
122
- console.error(`${location}: failed to unsubscribe ${pattern}`, e);
124
+ log.error('Redis failed to unsubscribe', { resource: alias, pattern, error: e });
123
125
  }
124
126
  };
125
127
  await subscriber.psubscribe(pattern);
@@ -278,7 +280,10 @@ export const makeRedisResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
278
280
  yield JSON.parse(fields[1]);
279
281
  }
280
282
  catch (e) {
281
- console.error('Cannot parse redis stream entry', e);
283
+ // Fires per bad entry: one line per window per resource is enough.
284
+ if (logThrottle(`${location}:stream-parse`)) {
285
+ log.warn('Cannot parse redis stream entry', { resource: alias, stream: streamKey, error: e });
286
+ }
282
287
  }
283
288
  }
284
289
  } while (true);
@@ -297,7 +302,9 @@ export const makeRedisResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
297
302
  yield JSON.parse(fields[1]);
298
303
  }
299
304
  catch (e) {
300
- console.error('Cannot parse reclaimed redis stream entry', e);
305
+ if (logThrottle(`${location}:stream-reclaim-parse`)) {
306
+ log.warn('Cannot parse reclaimed redis stream entry', { resource: alias, stream: streamKey, error: e });
307
+ }
301
308
  }
302
309
  await resource.db.client.xack(streamKey, group, id);
303
310
  }
@@ -308,7 +315,13 @@ export const makeRedisResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
308
315
  await resource.db.client.xgroup('CREATE', streamKey, group, '$', 'MKSTREAM');
309
316
  }
310
317
  catch (e) {
311
- console.error('Error in redis stream consumer group', e);
318
+ // BUSYGROUP is the ordinary answer for a group that already exists.
319
+ if (e instanceof Error && e.message.includes('BUSYGROUP')) {
320
+ log.debug('Redis stream consumer group exists', { resource: alias, stream: streamKey, group });
321
+ }
322
+ else {
323
+ log.error('Error in redis stream consumer group', { resource: alias, stream: streamKey, group, error: e });
324
+ }
312
325
  }
313
326
  do {
314
327
  const resp = await resource.db.client.xreadgroup('GROUP', group, consumer, 'BLOCK', block, 'STREAMS', streamKey, '>');
@@ -323,7 +336,10 @@ export const makeRedisResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
323
336
  await resource.db.client.xack(streamKey, group, entryId);
324
337
  }
325
338
  catch (e) {
326
- console.error('Cannot parse redis stream entry', e);
339
+ // Fires per bad entry: one line per window per resource is enough.
340
+ if (logThrottle(`${location}:stream-parse`)) {
341
+ log.warn('Cannot parse redis stream entry', { resource: alias, stream: streamKey, error: e });
342
+ }
327
343
  }
328
344
  }
329
345
  } while (true);
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ServerConfig, ServerContext } from '@owlmeans/server-context';
2
+ export type Config = ServerConfig;
3
+ export type Context<C extends Config = Config> = ServerContext<C>;
4
+ //# sourceMappingURL=types.local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.local.d.ts","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAE3E,MAAM,MAAM,MAAM,GAAG,YAAY,CAAA;AAEjC,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.local.js","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/redis-resource",
3
- "version": "0.1.18-rc.41",
3
+ "version": "0.1.18-rc.43",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -25,14 +25,15 @@
25
25
  "ioredis": "*"
26
26
  },
27
27
  "dependencies": {
28
- "@owlmeans/basic-ids": "^0.1.18-rc.34",
29
- "@owlmeans/context": "^0.1.18-rc.32",
30
- "@owlmeans/resource": "^0.1.18-rc.37",
31
- "@owlmeans/server-context": "^0.1.18-rc.40"
28
+ "@owlmeans/basic-ids": "^0.1.18-rc.36",
29
+ "@owlmeans/context": "^0.1.18-rc.33",
30
+ "@owlmeans/log": "^0.1.18-rc.1",
31
+ "@owlmeans/resource": "^0.1.18-rc.39",
32
+ "@owlmeans/server-context": "^0.1.18-rc.42"
32
33
  },
33
34
  "devDependencies": {
34
35
  "@owlmeans/dep-config": "workspace:*",
35
- "@types/node": "^26.1.0",
36
+ "@types/node": "^26.6.4",
36
37
  "nodemon": "^3.1.14",
37
38
  "typescript": "^7.0.2"
38
39
  },
package/src/resource.ts CHANGED
@@ -1,22 +1,17 @@
1
- import type {
2
- Criteria, FirstOptions, ListOptions, ListResult, ResourceRecord, SubscribeOptions, Ttl,
3
- Unsubscribe, WriteOptions
4
- } from '@owlmeans/resource'
5
- import {
6
- applyQuery, filterRecords, firstMatch, matchCriteria, MisshapedRecord, RecordExists,
7
- UnknownRecordError, UnsupportedArgumentError
8
- } from '@owlmeans/resource'
9
- import type { RedisClient, RedisDbService, RedisResource } from './types.js'
10
- import type { ServerConfig, ServerContext } from '@owlmeans/server-context'
1
+ import { type Criteria, type FirstOptions, type ListOptions, type ListResult, type ResourceRecord, type SubscribeOptions, type Ttl, type Unsubscribe, type WriteOptions, applyQuery, filterRecords, firstMatch, matchCriteria, MisshapedRecord, RecordExists, UnknownRecordError, UnsupportedArgumentError } from '@owlmeans/resource'
2
+ import { logThrottle, logger } from '@owlmeans/log'
3
+ import type { Redis } from 'ioredis'
4
+ import type { RedisDbService, RedisResource } from './types.js'
11
5
  import {
12
6
  CONSUMER_ID_LENGTH, DEFAULT_DB_ALIAS, DEFAULT_STREAM_BLOCK, READ_BATCH, RECLAIM_COUNT,
13
7
  RECLAIM_IDLE, SCAN_BATCH, STREAM_MAX_LENGTH
14
8
  } from './consts.js'
15
9
  import { appendContextual, assertContext } from '@owlmeans/context'
16
10
  import { createIdOfLength, uuid } from '@owlmeans/basic-ids'
11
+ import type { Config, Context } from './types.local.js'
12
+
13
+ const log = logger('redis-resource')
17
14
 
18
- type Config = ServerConfig
19
- type Context<C extends Config = Config> = ServerContext<C>
20
15
 
21
16
  /**
22
17
  * A `Resource` over plain redis strings: one JSON document per namespaced key.
@@ -149,7 +144,7 @@ export const makeRedisResource = <
149
144
  pattern: string, onMessage: (channel: string, message: string) => void,
150
145
  opts?: { once?: boolean, ttl?: Ttl }
151
146
  ): Promise<Unsubscribe> => {
152
- const subscriber = (resource.db.client as RedisClient).duplicate()
147
+ const subscriber = (resource.db.client as unknown as { duplicate: () => Redis }).duplicate()
153
148
  let closed = false
154
149
  const unsubscribe: Unsubscribe = async () => {
155
150
  if (closed) {
@@ -160,7 +155,7 @@ export const makeRedisResource = <
160
155
  await subscriber.punsubscribe(pattern)
161
156
  await subscriber.quit()
162
157
  } catch (e) {
163
- console.error(`${location}: failed to unsubscribe ${pattern}`, e)
158
+ log.error('Redis failed to unsubscribe', { resource: alias, pattern, error: e })
164
159
  }
165
160
  }
166
161
 
@@ -366,7 +361,10 @@ export const makeRedisResource = <
366
361
  try {
367
362
  yield JSON.parse(fields[1])
368
363
  } catch (e) {
369
- console.error('Cannot parse redis stream entry', e)
364
+ // Fires per bad entry: one line per window per resource is enough.
365
+ if (logThrottle(`${location}:stream-parse`)) {
366
+ log.warn('Cannot parse redis stream entry', { resource: alias, stream: streamKey, error: e })
367
+ }
370
368
  }
371
369
  }
372
370
  } while (true)
@@ -385,7 +383,9 @@ export const makeRedisResource = <
385
383
  try {
386
384
  yield JSON.parse(fields[1])
387
385
  } catch (e) {
388
- console.error('Cannot parse reclaimed redis stream entry', e)
386
+ if (logThrottle(`${location}:stream-reclaim-parse`)) {
387
+ log.warn('Cannot parse reclaimed redis stream entry', { resource: alias, stream: streamKey, error: e })
388
+ }
389
389
  }
390
390
  await resource.db.client.xack(streamKey, group, id)
391
391
  }
@@ -394,7 +394,12 @@ export const makeRedisResource = <
394
394
  try {
395
395
  await resource.db.client.xgroup('CREATE', streamKey, group, '$', 'MKSTREAM')
396
396
  } catch (e) {
397
- console.error('Error in redis stream consumer group', e)
397
+ // BUSYGROUP is the ordinary answer for a group that already exists.
398
+ if (e instanceof Error && e.message.includes('BUSYGROUP')) {
399
+ log.debug('Redis stream consumer group exists', { resource: alias, stream: streamKey, group })
400
+ } else {
401
+ log.error('Error in redis stream consumer group', { resource: alias, stream: streamKey, group, error: e })
402
+ }
398
403
  }
399
404
  do {
400
405
  const resp = await resource.db.client.xreadgroup(
@@ -412,7 +417,10 @@ export const makeRedisResource = <
412
417
  yield JSON.parse(fields[1])
413
418
  await resource.db.client.xack(streamKey, group, entryId)
414
419
  } catch (e) {
415
- console.error('Cannot parse redis stream entry', e)
420
+ // Fires per bad entry: one line per window per resource is enough.
421
+ if (logThrottle(`${location}:stream-parse`)) {
422
+ log.warn('Cannot parse redis stream entry', { resource: alias, stream: streamKey, error: e })
423
+ }
416
424
  }
417
425
  }
418
426
  } while (true)
@@ -0,0 +1,5 @@
1
+ import type { ServerConfig, ServerContext } from '@owlmeans/server-context'
2
+
3
+ export type Config = ServerConfig
4
+
5
+ export type Context<C extends Config = Config> = ServerContext<C>