renovate 44.133.0 → 44.133.1

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.
@@ -36,6 +36,10 @@ var PackageCacheRedis = class PackageCacheRedis extends PackageCacheBase {
36
36
  ...config,
37
37
  RESP
38
38
  });
39
+ client.on("error", (err) => {
40
+ logger.once.warn({ err }, "Redis cache connection error");
41
+ logger.debug({ err }, "Redis cache connection error");
42
+ });
39
43
  await client.connect();
40
44
  logger.debug("Redis cache connected");
41
45
  const binaryClient = client.withTypeMapping({ [RESP_TYPES.BLOB_STRING]: Buffer });
@@ -1 +1 @@
1
- {"version":3,"file":"redis.js","names":[],"sources":["../../../../../lib/util/cache/package/impl/redis.ts"],"sourcesContent":["import type {\n RedisClientType,\n RedisClusterOptions,\n RedisClusterType,\n RedisFunctions,\n RedisModules,\n RedisScripts,\n TypeMapping,\n} from '@redis/client';\nimport { RESP_TYPES, createClient, createCluster } from '@redis/client';\nimport { logger } from '../../../../logger/index.ts';\nimport { regEx } from '../../../regex.ts';\nimport { parseUrl } from '../../../url.ts';\nimport type { PackageCacheNamespace } from '../types.ts';\nimport { PackageCacheBase } from './base.ts';\n\nexport function normalizeRedisUrl(url: string): string {\n return url.replace(\n regEx(/^(?<scheme>rediss?)\\+cluster:\\/\\//),\n '$<scheme>://',\n );\n}\n\n// TODO: switch to RESP 3 (the @redis/client v6 default) in the next major\n// release, as it requires Redis server 6.0 or newer.\nconst RESP = 2;\n\ntype RedisClient =\n | RedisClientType<\n RedisModules,\n RedisFunctions,\n RedisScripts,\n typeof RESP,\n TypeMapping\n >\n | RedisClusterType<\n RedisModules,\n RedisFunctions,\n RedisScripts,\n typeof RESP,\n TypeMapping\n >;\n\ninterface RedisBinaryClient {\n get(key: string): Promise<Buffer | null>;\n}\n\nexport class PackageCacheRedis extends PackageCacheBase {\n static async create(\n url: string,\n prefix: string | undefined,\n ): Promise<PackageCacheRedis> {\n const rprefix = prefix ?? '';\n logger.debug('Redis cache init');\n\n const rewrittenUrl = normalizeRedisUrl(url);\n const clusteredMode = rewrittenUrl !== url;\n\n const config = {\n url: rewrittenUrl,\n socket: {\n reconnectStrategy: (retries: number) => Math.min(retries * 100, 3000),\n },\n pingInterval: 30000,\n };\n\n let client: RedisClient;\n\n if (clusteredMode) {\n const clusterConfig: RedisClusterOptions<\n RedisModules,\n RedisFunctions,\n RedisScripts,\n typeof RESP\n > = { rootNodes: [config], RESP };\n\n const parsedUrl = parseUrl(rewrittenUrl);\n if (parsedUrl?.username) {\n clusterConfig.defaults = {\n username: parsedUrl.username,\n };\n }\n\n if (parsedUrl?.password) {\n clusterConfig.defaults ??= {};\n clusterConfig.defaults.password = parsedUrl.password;\n }\n\n client = createCluster(clusterConfig);\n } else {\n client = createClient({ ...config, RESP });\n }\n\n await client.connect();\n logger.debug('Redis cache connected');\n const binaryClient = client.withTypeMapping({\n [RESP_TYPES.BLOB_STRING]: Buffer,\n }) as RedisBinaryClient;\n return new PackageCacheRedis(client, binaryClient, rprefix);\n }\n\n private readonly client: RedisClient;\n private readonly binaryClient: RedisBinaryClient;\n private readonly rprefix: string;\n\n private constructor(\n client: RedisClient,\n binaryClient: RedisBinaryClient,\n rprefix: string,\n ) {\n super();\n this.client = client;\n this.binaryClient = binaryClient;\n this.rprefix = rprefix;\n }\n\n private getKey(namespace: PackageCacheNamespace, key: string): string {\n return `${this.rprefix}${namespace}-${key}`;\n }\n\n override destroy(): Promise<void> {\n try {\n // https://github.com/redis/node-redis#disconnecting\n this.client.destroy();\n } catch (err) {\n logger.warn({ err }, 'Redis cache destroy failed');\n }\n return Promise.resolve();\n }\n\n protected override async readRaw(\n namespace: PackageCacheNamespace,\n key: string,\n ): Promise<Buffer | undefined> {\n const raw = await this.binaryClient.get(this.getKey(namespace, key));\n\n return raw ?? undefined;\n }\n\n protected override async writeRaw(\n namespace: PackageCacheNamespace,\n key: string,\n data: Buffer,\n ttlSeconds: number,\n ): Promise<void> {\n await this.client.set(this.getKey(namespace, key), data, {\n EX: ttlSeconds,\n });\n }\n\n protected override async rm(\n namespace: PackageCacheNamespace,\n key: string,\n ): Promise<void> {\n logger.trace(\n { rprefix: this.rprefix, namespace, key },\n 'Removing cache entry',\n );\n await this.client.del(this.getKey(namespace, key));\n }\n}\n"],"mappings":";;;;;;AAgBA,SAAgB,kBAAkB,KAAqB;CACrD,OAAO,IAAI,QACT,MAAM,mCAAmC,GACzC,cACF;AACF;AAIA,MAAM,OAAO;AAsBb,IAAa,oBAAb,MAAa,0BAA0B,iBAAiB;CACtD,aAAa,OACX,KACA,QAC4B;EAC5B,MAAM,UAAU,UAAU;EAC1B,OAAO,MAAM,kBAAkB;EAE/B,MAAM,eAAe,kBAAkB,GAAG;EAC1C,MAAM,gBAAgB,iBAAiB;EAEvC,MAAM,SAAS;GACb,KAAK;GACL,QAAQ,EACN,oBAAoB,YAAoB,KAAK,IAAI,UAAU,KAAK,GAAI,EACtE;GACA,cAAc;EAChB;EAEA,IAAI;EAEJ,IAAI,eAAe;GACjB,MAAM,gBAKF;IAAE,WAAW,CAAC,MAAM;IAAG;GAAK;GAEhC,MAAM,YAAY,SAAS,YAAY;GACvC,IAAI,WAAW,UACb,cAAc,WAAW,EACvB,UAAU,UAAU,SACtB;GAGF,IAAI,WAAW,UAAU;IACvB,cAAc,aAAa,CAAC;IAC5B,cAAc,SAAS,WAAW,UAAU;GAC9C;GAEA,SAAS,cAAc,aAAa;EACtC,OACE,SAAS,aAAa;GAAE,GAAG;GAAQ;EAAK,CAAC;EAG3C,MAAM,OAAO,QAAQ;EACrB,OAAO,MAAM,uBAAuB;EACpC,MAAM,eAAe,OAAO,gBAAgB,GACzC,WAAW,cAAc,OAC5B,CAAC;EACD,OAAO,IAAI,kBAAkB,QAAQ,cAAc,OAAO;CAC5D;CAEA;CACA;CACA;CAEA,YACE,QACA,cACA,SACA;EACA,MAAM;EACN,KAAK,SAAS;EACd,KAAK,eAAe;EACpB,KAAK,UAAU;CACjB;CAEA,OAAe,WAAkC,KAAqB;EACpE,OAAO,GAAG,KAAK,UAAU,UAAU,GAAG;CACxC;CAEA,UAAkC;EAChC,IAAI;GAEF,KAAK,OAAO,QAAQ;EACtB,SAAS,KAAK;GACZ,OAAO,KAAK,EAAE,IAAI,GAAG,4BAA4B;EACnD;EACA,OAAO,QAAQ,QAAQ;CACzB;CAEA,MAAyB,QACvB,WACA,KAC6B;EAG7B,OAAO,MAFW,KAAK,aAAa,IAAI,KAAK,OAAO,WAAW,GAAG,CAAC,KAErD,KAAA;CAChB;CAEA,MAAyB,SACvB,WACA,KACA,MACA,YACe;EACf,MAAM,KAAK,OAAO,IAAI,KAAK,OAAO,WAAW,GAAG,GAAG,MAAM,EACvD,IAAI,WACN,CAAC;CACH;CAEA,MAAyB,GACvB,WACA,KACe;EACf,OAAO,MACL;GAAE,SAAS,KAAK;GAAS;GAAW;EAAI,GACxC,sBACF;EACA,MAAM,KAAK,OAAO,IAAI,KAAK,OAAO,WAAW,GAAG,CAAC;CACnD;AACF"}
1
+ {"version":3,"file":"redis.js","names":[],"sources":["../../../../../lib/util/cache/package/impl/redis.ts"],"sourcesContent":["import type {\n RedisClientType,\n RedisClusterOptions,\n RedisClusterType,\n RedisFunctions,\n RedisModules,\n RedisScripts,\n TypeMapping,\n} from '@redis/client';\nimport { RESP_TYPES, createClient, createCluster } from '@redis/client';\nimport { logger } from '../../../../logger/index.ts';\nimport { regEx } from '../../../regex.ts';\nimport { parseUrl } from '../../../url.ts';\nimport type { PackageCacheNamespace } from '../types.ts';\nimport { PackageCacheBase } from './base.ts';\n\nexport function normalizeRedisUrl(url: string): string {\n return url.replace(\n regEx(/^(?<scheme>rediss?)\\+cluster:\\/\\//),\n '$<scheme>://',\n );\n}\n\n// TODO: switch to RESP 3 (the @redis/client v6 default) in the next major\n// release, as it requires Redis server 6.0 or newer.\nconst RESP = 2;\n\ntype RedisClient =\n | RedisClientType<\n RedisModules,\n RedisFunctions,\n RedisScripts,\n typeof RESP,\n TypeMapping\n >\n | RedisClusterType<\n RedisModules,\n RedisFunctions,\n RedisScripts,\n typeof RESP,\n TypeMapping\n >;\n\ninterface RedisBinaryClient {\n get(key: string): Promise<Buffer | null>;\n}\n\nexport class PackageCacheRedis extends PackageCacheBase {\n static async create(\n url: string,\n prefix: string | undefined,\n ): Promise<PackageCacheRedis> {\n const rprefix = prefix ?? '';\n logger.debug('Redis cache init');\n\n const rewrittenUrl = normalizeRedisUrl(url);\n const clusteredMode = rewrittenUrl !== url;\n\n const config = {\n url: rewrittenUrl,\n socket: {\n reconnectStrategy: (retries: number) => Math.min(retries * 100, 3000),\n },\n pingInterval: 30000,\n };\n\n let client: RedisClient;\n\n if (clusteredMode) {\n const clusterConfig: RedisClusterOptions<\n RedisModules,\n RedisFunctions,\n RedisScripts,\n typeof RESP\n > = { rootNodes: [config], RESP };\n\n const parsedUrl = parseUrl(rewrittenUrl);\n if (parsedUrl?.username) {\n clusterConfig.defaults = {\n username: parsedUrl.username,\n };\n }\n\n if (parsedUrl?.password) {\n clusterConfig.defaults ??= {};\n clusterConfig.defaults.password = parsedUrl.password;\n }\n\n client = createCluster(clusterConfig);\n } else {\n client = createClient({ ...config, RESP });\n }\n\n // node-redis emits connection errors (e.g. a closed idle socket) as events\n // and reconnects on its own, but an unhandled `error` event exits the process\n client.on('error', (err: Error) => {\n logger.once.warn({ err }, 'Redis cache connection error');\n logger.debug({ err }, 'Redis cache connection error');\n });\n\n await client.connect();\n logger.debug('Redis cache connected');\n const binaryClient = client.withTypeMapping({\n [RESP_TYPES.BLOB_STRING]: Buffer,\n }) as RedisBinaryClient;\n return new PackageCacheRedis(client, binaryClient, rprefix);\n }\n\n private readonly client: RedisClient;\n private readonly binaryClient: RedisBinaryClient;\n private readonly rprefix: string;\n\n private constructor(\n client: RedisClient,\n binaryClient: RedisBinaryClient,\n rprefix: string,\n ) {\n super();\n this.client = client;\n this.binaryClient = binaryClient;\n this.rprefix = rprefix;\n }\n\n private getKey(namespace: PackageCacheNamespace, key: string): string {\n return `${this.rprefix}${namespace}-${key}`;\n }\n\n override destroy(): Promise<void> {\n try {\n // https://github.com/redis/node-redis#disconnecting\n this.client.destroy();\n } catch (err) {\n logger.warn({ err }, 'Redis cache destroy failed');\n }\n return Promise.resolve();\n }\n\n protected override async readRaw(\n namespace: PackageCacheNamespace,\n key: string,\n ): Promise<Buffer | undefined> {\n const raw = await this.binaryClient.get(this.getKey(namespace, key));\n\n return raw ?? undefined;\n }\n\n protected override async writeRaw(\n namespace: PackageCacheNamespace,\n key: string,\n data: Buffer,\n ttlSeconds: number,\n ): Promise<void> {\n await this.client.set(this.getKey(namespace, key), data, {\n EX: ttlSeconds,\n });\n }\n\n protected override async rm(\n namespace: PackageCacheNamespace,\n key: string,\n ): Promise<void> {\n logger.trace(\n { rprefix: this.rprefix, namespace, key },\n 'Removing cache entry',\n );\n await this.client.del(this.getKey(namespace, key));\n }\n}\n"],"mappings":";;;;;;AAgBA,SAAgB,kBAAkB,KAAqB;CACrD,OAAO,IAAI,QACT,MAAM,mCAAmC,GACzC,cACF;AACF;AAIA,MAAM,OAAO;AAsBb,IAAa,oBAAb,MAAa,0BAA0B,iBAAiB;CACtD,aAAa,OACX,KACA,QAC4B;EAC5B,MAAM,UAAU,UAAU;EAC1B,OAAO,MAAM,kBAAkB;EAE/B,MAAM,eAAe,kBAAkB,GAAG;EAC1C,MAAM,gBAAgB,iBAAiB;EAEvC,MAAM,SAAS;GACb,KAAK;GACL,QAAQ,EACN,oBAAoB,YAAoB,KAAK,IAAI,UAAU,KAAK,GAAI,EACtE;GACA,cAAc;EAChB;EAEA,IAAI;EAEJ,IAAI,eAAe;GACjB,MAAM,gBAKF;IAAE,WAAW,CAAC,MAAM;IAAG;GAAK;GAEhC,MAAM,YAAY,SAAS,YAAY;GACvC,IAAI,WAAW,UACb,cAAc,WAAW,EACvB,UAAU,UAAU,SACtB;GAGF,IAAI,WAAW,UAAU;IACvB,cAAc,aAAa,CAAC;IAC5B,cAAc,SAAS,WAAW,UAAU;GAC9C;GAEA,SAAS,cAAc,aAAa;EACtC,OACE,SAAS,aAAa;GAAE,GAAG;GAAQ;EAAK,CAAC;EAK3C,OAAO,GAAG,UAAU,QAAe;GACjC,OAAO,KAAK,KAAK,EAAE,IAAI,GAAG,8BAA8B;GACxD,OAAO,MAAM,EAAE,IAAI,GAAG,8BAA8B;EACtD,CAAC;EAED,MAAM,OAAO,QAAQ;EACrB,OAAO,MAAM,uBAAuB;EACpC,MAAM,eAAe,OAAO,gBAAgB,GACzC,WAAW,cAAc,OAC5B,CAAC;EACD,OAAO,IAAI,kBAAkB,QAAQ,cAAc,OAAO;CAC5D;CAEA;CACA;CACA;CAEA,YACE,QACA,cACA,SACA;EACA,MAAM;EACN,KAAK,SAAS;EACd,KAAK,eAAe;EACpB,KAAK,UAAU;CACjB;CAEA,OAAe,WAAkC,KAAqB;EACpE,OAAO,GAAG,KAAK,UAAU,UAAU,GAAG;CACxC;CAEA,UAAkC;EAChC,IAAI;GAEF,KAAK,OAAO,QAAQ;EACtB,SAAS,KAAK;GACZ,OAAO,KAAK,EAAE,IAAI,GAAG,4BAA4B;EACnD;EACA,OAAO,QAAQ,QAAQ;CACzB;CAEA,MAAyB,QACvB,WACA,KAC6B;EAG7B,OAAO,MAFW,KAAK,aAAa,IAAI,KAAK,OAAO,WAAW,GAAG,CAAC,KAErD,KAAA;CAChB;CAEA,MAAyB,SACvB,WACA,KACA,MACA,YACe;EACf,MAAM,KAAK,OAAO,IAAI,KAAK,OAAO,WAAW,GAAG,GAAG,MAAM,EACvD,IAAI,WACN,CAAC;CACH;CAEA,MAAyB,GACvB,WACA,KACe;EACf,OAAO,MACL;GAAE,SAAS,KAAK;GAAS;GAAW;EAAI,GACxC,sBACF;EACA,MAAM,KAAK,OAAO,IAAI,KAAK,OAAO,WAAW,GAAG,CAAC;CACnD;AACF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "renovate",
3
3
  "description": "Automated dependency updates. Flexible so you don't need to be.",
4
- "version": "44.133.0",
4
+ "version": "44.133.1",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$id": "https://docs.renovatebot.com/renovate-schema.json",
3
- "title": "JSON schema for Renovate 44.133.0 config files (https://renovatebot.com/)",
3
+ "title": "JSON schema for Renovate 44.133.1 config files (https://renovatebot.com/)",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
- "x-renovate-version": "44.133.0",
5
+ "x-renovate-version": "44.133.1",
6
6
  "allowComments": true,
7
7
  "type": "object",
8
8
  "definitions": {