renovate 40.49.4 → 40.49.6

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.
@@ -1,40 +1,16 @@
1
- import { type ZodEffects, type ZodString, z } from 'zod';
1
+ import { z } from 'zod/v4';
2
2
  export declare const EksAddonsFilterSchema: z.ZodObject<{
3
- addonName: ZodString;
4
- kubernetesVersion: z.ZodOptional<ZodString>;
5
- default: z.ZodUnion<[z.ZodOptional<z.ZodBoolean>, ZodEffects<ZodString, boolean, string>]>;
6
- region: z.ZodOptional<ZodString>;
7
- profile: z.ZodOptional<ZodString>;
8
- }, "strip", z.ZodTypeAny, {
9
- addonName: string;
10
- default?: boolean | undefined;
11
- profile?: string | undefined;
12
- kubernetesVersion?: string | undefined;
13
- region?: string | undefined;
14
- }, {
15
- addonName: string;
16
- default?: string | boolean | undefined;
17
- profile?: string | undefined;
18
- kubernetesVersion?: string | undefined;
19
- region?: string | undefined;
20
- }>;
3
+ addonName: z.ZodString;
4
+ kubernetesVersion: z.ZodOptional<z.ZodString>;
5
+ default: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
6
+ region: z.ZodOptional<z.ZodString>;
7
+ profile: z.ZodOptional<z.ZodString>;
8
+ }, z.core.$strip>;
21
9
  export type EksAddonsFilter = z.infer<typeof EksAddonsFilterSchema>;
22
- export declare const EksAddonsFilter: z.ZodPipeline<ZodEffects<ZodString, string | number | boolean | import("type-fest").JsonObject | import("type-fest").JsonValue[] | readonly import("type-fest").JsonValue[] | null, string>, z.ZodObject<{
23
- addonName: ZodString;
24
- kubernetesVersion: z.ZodOptional<ZodString>;
25
- default: z.ZodUnion<[z.ZodOptional<z.ZodBoolean>, ZodEffects<ZodString, boolean, string>]>;
26
- region: z.ZodOptional<ZodString>;
27
- profile: z.ZodOptional<ZodString>;
28
- }, "strip", z.ZodTypeAny, {
29
- addonName: string;
30
- default?: boolean | undefined;
31
- profile?: string | undefined;
32
- kubernetesVersion?: string | undefined;
33
- region?: string | undefined;
34
- }, {
35
- addonName: string;
36
- default?: string | boolean | undefined;
37
- profile?: string | undefined;
38
- kubernetesVersion?: string | undefined;
39
- region?: string | undefined;
40
- }>>;
10
+ export declare const EksAddonsFilter: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<unknown, string>>, z.ZodObject<{
11
+ addonName: z.ZodString;
12
+ kubernetesVersion: z.ZodOptional<z.ZodString>;
13
+ default: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodString, z.ZodTransform<boolean, string>>]>>;
14
+ region: z.ZodOptional<z.ZodString>;
15
+ profile: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>>;
@@ -1,31 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EksAddonsFilter = exports.EksAddonsFilterSchema = void 0;
4
- const zod_1 = require("zod");
4
+ const v4_1 = require("zod/v4");
5
5
  const regex_1 = require("../../../util/regex");
6
- const schema_utils_1 = require("../../../util/schema-utils");
7
- const stringIsBoolSchema = zod_1.z
8
- .string()
9
- .transform((value) => {
10
- if (value === 'true') {
11
- return true;
12
- }
13
- else if (value === 'false') {
14
- return false;
15
- }
16
- else {
17
- return false;
18
- }
19
- });
20
- exports.EksAddonsFilterSchema = zod_1.z.object({
21
- addonName: zod_1.z.string().nonempty().regex((0, regex_1.regEx)('^[a-z0-9][a-z0-9-]*[a-z0-9]$')),
22
- kubernetesVersion: zod_1.z
6
+ const v4_2 = require("../../../util/schema-utils/v4");
7
+ exports.EksAddonsFilterSchema = v4_1.z.object({
8
+ addonName: v4_1.z.string().nonempty().regex((0, regex_1.regEx)('^[a-z0-9][a-z0-9-]*[a-z0-9]$')),
9
+ kubernetesVersion: v4_1.z
23
10
  .string()
24
11
  .regex((0, regex_1.regEx)('^(?<major>\\d+)\\.(?<minor>\\d+)$'))
25
12
  .optional(),
26
- default: zod_1.z.oboolean().or(stringIsBoolSchema),
27
- region: zod_1.z.string().optional(),
28
- profile: zod_1.z.string().optional(),
13
+ default: v4_1.z
14
+ .union([v4_1.z.boolean(), v4_1.z.string().transform((value) => value === 'true')])
15
+ .optional(),
16
+ region: v4_1.z.string().optional(),
17
+ profile: v4_1.z.string().optional(),
29
18
  });
30
- exports.EksAddonsFilter = schema_utils_1.Json.pipe(exports.EksAddonsFilterSchema);
19
+ exports.EksAddonsFilter = v4_2.Json.pipe(exports.EksAddonsFilterSchema);
31
20
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/aws-eks-addon/schema.ts"],"names":[],"mappings":";;;AAAA,6BAAyD;AACzD,+CAA4C;AAC5C,6DAAkD;AAElD,MAAM,kBAAkB,GAA2C,OAAC;KACjE,MAAM,EAAE;KACR,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;IACnB,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC,CAAC;AAEQ,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAA,aAAK,EAAC,8BAA8B,CAAC,CAAC;IAC7E,iBAAiB,EAAE,OAAC;SACjB,MAAM,EAAE;SACR,KAAK,CAAC,IAAA,aAAK,EAAC,mCAAmC,CAAC,CAAC;SACjD,QAAQ,EAAE;IACb,OAAO,EAAE,OAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC;IAC5C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAGU,QAAA,eAAe,GAAG,mBAAI,CAAC,IAAI,CAAC,6BAAqB,CAAC,CAAC","sourcesContent":["import { type ZodEffects, type ZodString, z } from 'zod';\nimport { regEx } from '../../../util/regex';\nimport { Json } from '../../../util/schema-utils';\n\nconst stringIsBoolSchema: ZodEffects<ZodString, boolean, string> = z\n .string()\n .transform((value) => {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else {\n return false;\n }\n });\n\nexport const EksAddonsFilterSchema = z.object({\n addonName: z.string().nonempty().regex(regEx('^[a-z0-9][a-z0-9-]*[a-z0-9]$')),\n kubernetesVersion: z\n .string()\n .regex(regEx('^(?<major>\\\\d+)\\\\.(?<minor>\\\\d+)$'))\n .optional(),\n default: z.oboolean().or(stringIsBoolSchema),\n region: z.string().optional(),\n profile: z.string().optional(),\n});\n\nexport type EksAddonsFilter = z.infer<typeof EksAddonsFilterSchema>;\nexport const EksAddonsFilter = Json.pipe(EksAddonsFilterSchema);\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/aws-eks-addon/schema.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAC3B,+CAA4C;AAC5C,sDAAqD;AAExC,QAAA,qBAAqB,GAAG,MAAC,CAAC,MAAM,CAAC;IAC5C,SAAS,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAA,aAAK,EAAC,8BAA8B,CAAC,CAAC;IAC7E,iBAAiB,EAAE,MAAC;SACjB,MAAM,EAAE;SACR,KAAK,CAAC,IAAA,aAAK,EAAC,mCAAmC,CAAC,CAAC;SACjD,QAAQ,EAAE;IACb,OAAO,EAAE,MAAC;SACP,KAAK,CAAC,CAAC,MAAC,CAAC,OAAO,EAAE,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC;SACvE,QAAQ,EAAE;IACb,MAAM,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAGU,QAAA,eAAe,GAAG,SAAI,CAAC,IAAI,CAAC,6BAAqB,CAAC,CAAC","sourcesContent":["import { z } from 'zod/v4';\nimport { regEx } from '../../../util/regex';\nimport { Json } from '../../../util/schema-utils/v4';\n\nexport const EksAddonsFilterSchema = z.object({\n addonName: z.string().nonempty().regex(regEx('^[a-z0-9][a-z0-9-]*[a-z0-9]$')),\n kubernetesVersion: z\n .string()\n .regex(regEx('^(?<major>\\\\d+)\\\\.(?<minor>\\\\d+)$'))\n .optional(),\n default: z\n .union([z.boolean(), z.string().transform((value) => value === 'true')])\n .optional(),\n region: z.string().optional(),\n profile: z.string().optional(),\n});\n\nexport type EksAddonsFilter = z.infer<typeof EksAddonsFilterSchema>;\nexport const EksAddonsFilter = Json.pipe(EksAddonsFilterSchema);\n"]}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GithubGraphqlDatasourceFetcher = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const aggregate_error_1 = tslib_1.__importDefault(require("aggregate-error"));
6
5
  const global_1 = require("../../../config/global");
7
6
  const logger_1 = require("../../../logger");
8
7
  const external_host_error_1 = require("../../../types/errors/external-host-error");
@@ -22,13 +21,7 @@ function isUnknownGraphqlError(err) {
22
21
  return message.startsWith('Something went wrong while executing your query.');
23
22
  }
24
23
  function canBeSolvedByShrinking(err) {
25
- // AggregateErrorLegacy can be dropped after `p_all` was upgraded too
26
- // https://github.com/renovatebot/renovate/issues/36429
27
- const errors = err instanceof AggregateError
28
- ? err.errors
29
- : err instanceof aggregate_error_1.default
30
- ? [...err]
31
- : [err];
24
+ const errors = err instanceof AggregateError ? err.errors : [err];
32
25
  return errors.some((e) => err instanceof external_host_error_1.ExternalHostError || isUnknownGraphqlError(e));
33
26
  }
34
27
  class GithubGraphqlDatasourceFetcher {
@@ -1 +1 @@
1
- {"version":3,"file":"datasource-fetcher.js","sourceRoot":"","sources":["../../../../lib/util/github/graphql/datasource-fetcher.ts"],"names":[],"mappings":"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","sourcesContent":["import AggregateErrorLegacy from 'aggregate-error';\nimport { GlobalConfig } from '../../../config/global';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport * as memCache from '../../cache/memory';\nimport * as packageCache from '../../cache/package';\nimport type { PackageCacheNamespace } from '../../cache/package/types';\nimport type {\n GithubGraphqlResponse,\n GithubHttp,\n GithubHttpOptions,\n} from '../../http/github';\nimport type { HttpResponse } from '../../http/types';\nimport { getApiBaseUrl } from '../url';\nimport { GithubGraphqlMemoryCacheStrategy } from './cache-strategies/memory-cache-strategy';\nimport { GithubGraphqlPackageCacheStrategy } from './cache-strategies/package-cache-strategy';\nimport type {\n GithubDatasourceItem,\n GithubGraphqlCacheStrategy,\n GithubGraphqlDatasourceAdapter,\n GithubGraphqlPayload,\n GithubGraphqlRepoParams,\n GithubGraphqlRepoResponse,\n GithubPackageConfig,\n RawQueryResponse,\n} from './types';\n\n/**\n * We know empirically that certain type of GraphQL errors\n * can be fixed by shrinking page size.\n *\n * @see https://github.com/renovatebot/renovate/issues/16343\n */\nfunction isUnknownGraphqlError(err: Error): boolean {\n const { message } = err;\n return message.startsWith('Something went wrong while executing your query.');\n}\n\nfunction canBeSolvedByShrinking(err: Error): boolean {\n // AggregateErrorLegacy can be dropped after `p_all` was upgraded too\n // https://github.com/renovatebot/renovate/issues/36429\n const errors: Error[] =\n err instanceof AggregateError\n ? err.errors\n : err instanceof AggregateErrorLegacy\n ? [...err]\n : [err];\n return errors.some(\n (e) => err instanceof ExternalHostError || isUnknownGraphqlError(e),\n );\n}\n\nexport class GithubGraphqlDatasourceFetcher<\n GraphqlItem,\n ResultItem extends GithubDatasourceItem,\n> {\n static async query<T, U extends GithubDatasourceItem>(\n config: GithubPackageConfig,\n http: GithubHttp,\n adapter: GithubGraphqlDatasourceAdapter<T, U>,\n ): Promise<U[]> {\n const instance = new GithubGraphqlDatasourceFetcher<T, U>(\n config,\n http,\n adapter,\n );\n const items = await instance.getItems();\n return items;\n }\n\n private readonly baseUrl: string;\n private readonly repoOwner: string;\n private readonly repoName: string;\n\n private itemsPerQuery: 100 | 50 | 25 = 100;\n\n private queryCount = 0;\n\n private cursor: string | null = null;\n\n private isPersistent: boolean | undefined;\n\n constructor(\n packageConfig: GithubPackageConfig,\n private http: GithubHttp,\n private datasourceAdapter: GithubGraphqlDatasourceAdapter<\n GraphqlItem,\n ResultItem\n >,\n ) {\n const { packageName, registryUrl } = packageConfig;\n [this.repoOwner, this.repoName] = packageName.split('/');\n this.baseUrl = getApiBaseUrl(registryUrl).replace(/\\/v3\\/$/, '/'); // Replace for GHE\n }\n\n private getCacheNs(): PackageCacheNamespace {\n return this.datasourceAdapter.key;\n }\n\n private getCacheKey(): string {\n return [this.baseUrl, this.repoOwner, this.repoName].join(':');\n }\n\n private getRawQueryOptions(): GithubHttpOptions {\n const baseUrl = this.baseUrl;\n const repository = `${this.repoOwner}/${this.repoName}`;\n const query = this.datasourceAdapter.query;\n const variables: GithubGraphqlRepoParams = {\n owner: this.repoOwner,\n name: this.repoName,\n count: this.itemsPerQuery,\n cursor: this.cursor,\n };\n\n return {\n baseUrl,\n repository,\n readOnly: true,\n body: { query, variables },\n };\n }\n\n private async doRawQuery(): Promise<\n RawQueryResponse<GithubGraphqlPayload<GraphqlItem>>\n > {\n const requestOptions = this.getRawQueryOptions();\n\n type GraphqlData = GithubGraphqlRepoResponse<GraphqlItem>;\n type HttpBody = GithubGraphqlResponse<GraphqlData>;\n let httpRes: HttpResponse<HttpBody>;\n try {\n httpRes = await this.http.postJson<HttpBody>('/graphql', requestOptions);\n } catch (err) {\n return [null, err];\n }\n\n const { body } = httpRes;\n const { data, errors } = body;\n\n if (errors?.length) {\n if (errors.length === 1) {\n const { message } = errors[0];\n const err = new Error(message);\n return [null, err];\n } else {\n const errorInstances = errors.map(({ message }) => new Error(message));\n const err = new AggregateError(errorInstances);\n return [null, err];\n }\n }\n\n if (!data) {\n const msg = 'GitHub GraphQL datasource: failed to obtain data';\n const err = new Error(msg);\n return [null, err];\n }\n\n if (!data.repository) {\n const msg = 'GitHub GraphQL datasource: failed to obtain repository data';\n const err = new Error(msg);\n return [null, err];\n }\n\n if (!data.repository.payload) {\n const msg =\n 'GitHub GraphQL datasource: failed to obtain repository payload data';\n const err = new Error(msg);\n return [null, err];\n }\n\n this.queryCount += 1;\n\n // For values other than explicit `false`,\n // we assume that items can not be cached.\n this.isPersistent ??= data.repository.isRepoPrivate === false;\n\n const res = data.repository.payload;\n return [res, null];\n }\n\n private shrinkPageSize(): boolean {\n if (this.itemsPerQuery === 100) {\n this.itemsPerQuery = 50;\n return true;\n }\n\n if (this.itemsPerQuery === 50) {\n this.itemsPerQuery = 25;\n return true;\n }\n\n return false;\n }\n\n private hasReachedQueryLimit(): boolean {\n return this.queryCount >= 100;\n }\n\n private async doShrinkableQuery(): Promise<\n GithubGraphqlPayload<GraphqlItem>\n > {\n let res: GithubGraphqlPayload<GraphqlItem> | null = null;\n let err: Error | null = null;\n\n while (!res) {\n [res, err] = await this.doRawQuery();\n if (err) {\n if (!canBeSolvedByShrinking(err)) {\n throw err;\n }\n\n const shrinkResult = this.shrinkPageSize();\n if (!shrinkResult) {\n throw err;\n }\n const { body, ...options } = this.getRawQueryOptions();\n logger.debug(\n { options, newSize: this.itemsPerQuery },\n 'Shrinking GitHub GraphQL page size after error',\n );\n }\n }\n\n return res;\n }\n\n private _cacheStrategy: GithubGraphqlCacheStrategy<ResultItem> | undefined;\n\n private cacheStrategy(): GithubGraphqlCacheStrategy<ResultItem> {\n if (this._cacheStrategy) {\n return this._cacheStrategy;\n }\n const cacheNs = this.getCacheNs();\n const cacheKey = this.getCacheKey();\n const cachePrivatePackages = GlobalConfig.get(\n 'cachePrivatePackages',\n false,\n );\n this._cacheStrategy =\n cachePrivatePackages || this.isPersistent\n ? new GithubGraphqlPackageCacheStrategy<ResultItem>(cacheNs, cacheKey)\n : new GithubGraphqlMemoryCacheStrategy<ResultItem>(cacheNs, cacheKey);\n return this._cacheStrategy;\n }\n\n /**\n * This method is responsible for data synchronization.\n * It also detects persistence of the package, based on the first page result.\n */\n private async doPaginatedFetch(): Promise<void> {\n let hasNextPage = true;\n let isPaginationDone = false;\n let nextCursor: string | undefined;\n while (hasNextPage && !isPaginationDone && !this.hasReachedQueryLimit()) {\n const queryResult = await this.doShrinkableQuery();\n\n const resultItems: ResultItem[] = [];\n for (const node of queryResult.nodes) {\n const item = this.datasourceAdapter.transform(node);\n if (!item) {\n logger.once.info(\n {\n packageName: `${this.repoOwner}/${this.repoName}`,\n baseUrl: this.baseUrl,\n },\n `GitHub GraphQL datasource: skipping empty item`,\n );\n continue;\n }\n resultItems.push(item);\n }\n\n // It's important to call `getCacheStrategy()` after `doShrinkableQuery()`\n // because `doShrinkableQuery()` may change `this.isCacheable`.\n //\n // Otherwise, cache items for public packages will never be persisted\n // in long-term cache.\n isPaginationDone = await this.cacheStrategy().reconcile(resultItems);\n\n hasNextPage = !!queryResult?.pageInfo?.hasNextPage;\n nextCursor = queryResult?.pageInfo?.endCursor;\n if (hasNextPage && nextCursor) {\n this.cursor = nextCursor;\n }\n }\n\n if (this.isPersistent) {\n await this.storePersistenceFlag(30);\n }\n }\n\n private async doCachedQuery(): Promise<ResultItem[]> {\n await this.loadPersistenceFlag();\n if (!this.isPersistent) {\n await this.doPaginatedFetch();\n }\n\n const res = await this.cacheStrategy().finalizeAndReturn();\n if (res.length) {\n return res;\n }\n\n delete this.isPersistent;\n await this.doPaginatedFetch();\n return this.cacheStrategy().finalizeAndReturn();\n }\n\n async loadPersistenceFlag(): Promise<void> {\n const ns = this.getCacheNs();\n const key = `${this.getCacheKey()}:is-persistent`;\n this.isPersistent = await packageCache.get<true>(ns, key);\n }\n\n async storePersistenceFlag(minutes: number): Promise<void> {\n const ns = this.getCacheNs();\n const key = `${this.getCacheKey()}:is-persistent`;\n await packageCache.set(ns, key, true, minutes);\n }\n\n /**\n * This method ensures the only one query is executed\n * to a particular package during single run.\n */\n private doUniqueQuery(): Promise<ResultItem[]> {\n const cacheKey = `github-pending:${this.getCacheNs()}:${this.getCacheKey()}`;\n const resultPromise =\n memCache.get<Promise<ResultItem[]>>(cacheKey) ?? this.doCachedQuery();\n memCache.set(cacheKey, resultPromise);\n return resultPromise;\n }\n\n async getItems(): Promise<ResultItem[]> {\n const res = await this.doUniqueQuery();\n return res;\n }\n}\n"]}
1
+ {"version":3,"file":"datasource-fetcher.js","sourceRoot":"","sources":["../../../../lib/util/github/graphql/datasource-fetcher.ts"],"names":[],"mappings":";;;;AAAA,mDAAsD;AACtD,4CAAyC;AACzC,mFAA8E;AAC9E,qEAA+C;AAC/C,0EAAoD;AAQpD,gCAAuC;AACvC,oFAA4F;AAC5F,sFAA8F;AAY9F;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,GAAU;IACvC,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IACxB,OAAO,OAAO,CAAC,UAAU,CAAC,kDAAkD,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAU;IACxC,MAAM,MAAM,GAAY,GAAG,YAAY,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,IAAI,CAChB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,YAAY,uCAAiB,IAAI,qBAAqB,CAAC,CAAC,CAAC,CACpE,CAAC;AACJ,CAAC;AAED,MAAa,8BAA8B;IAgC/B;IACA;IA7BV,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,MAA2B,EAC3B,IAAgB,EAChB,OAA6C;QAE7C,MAAM,QAAQ,GAAG,IAAI,8BAA8B,CACjD,MAAM,EACN,IAAI,EACJ,OAAO,CACR,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAEgB,OAAO,CAAS;IAChB,SAAS,CAAS;IAClB,QAAQ,CAAS;IAE1B,aAAa,GAAkB,GAAG,CAAC;IAEnC,UAAU,GAAG,CAAC,CAAC;IAEf,MAAM,GAAkB,IAAI,CAAC;IAE7B,YAAY,CAAsB;IAE1C,YACE,aAAkC,EAC1B,IAAgB,EAChB,iBAGP;QAJO,SAAI,GAAJ,IAAI,CAAY;QAChB,sBAAiB,GAAjB,iBAAiB,CAGxB;QAED,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC;QACnD,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,IAAA,mBAAa,EAAC,WAAW,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,kBAAkB;IACvF,CAAC;IAEO,UAAU;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;IACpC,CAAC;IAEO,WAAW;QACjB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAEO,kBAAkB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAC3C,MAAM,SAAS,GAA4B;YACzC,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,KAAK,EAAE,IAAI,CAAC,aAAa;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;QAEF,OAAO;YACL,OAAO;YACP,UAAU;YACV,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;SAC3B,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU;QAGtB,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAIjD,IAAI,OAA+B,CAAC;QACpC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAW,UAAU,EAAE,cAAc,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAE9B,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC/B,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvE,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC,CAAC;gBAC/C,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,GAAG,GAAG,kDAAkD,CAAC;YAC/D,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,6DAA6D,CAAC;YAC1E,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GACP,qEAAqE,CAAC;YACxE,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QAErB,0CAA0C;QAC1C,0CAA0C;QAC1C,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,KAAK,CAAC;QAE9D,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACpC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,aAAa,KAAK,GAAG,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,KAAK,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,oBAAoB;QAC1B,OAAO,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAG7B,IAAI,GAAG,GAA6C,IAAI,CAAC;QACzD,IAAI,GAAG,GAAiB,IAAI,CAAC;QAE7B,OAAO,CAAC,GAAG,EAAE,CAAC;YACZ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjC,MAAM,GAAG,CAAC;gBACZ,CAAC;gBAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,MAAM,GAAG,CAAC;gBACZ,CAAC;gBACD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACvD,eAAM,CAAC,KAAK,CACV,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,EACxC,gDAAgD,CACjD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,cAAc,CAAqD;IAEnE,aAAa;QACnB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,oBAAoB,GAAG,qBAAY,CAAC,GAAG,CAC3C,sBAAsB,EACtB,KAAK,CACN,CAAC;QACF,IAAI,CAAC,cAAc;YACjB,oBAAoB,IAAI,IAAI,CAAC,YAAY;gBACvC,CAAC,CAAC,IAAI,0DAAiC,CAAa,OAAO,EAAE,QAAQ,CAAC;gBACtE,CAAC,CAAC,IAAI,wDAAgC,CAAa,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,gBAAgB;QAC5B,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,UAA8B,CAAC;QACnC,OAAO,WAAW,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;YACxE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEnD,MAAM,WAAW,GAAiB,EAAE,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACpD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,eAAM,CAAC,IAAI,CAAC,IAAI,CACd;wBACE,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjD,OAAO,EAAE,IAAI,CAAC,OAAO;qBACtB,EACD,gDAAgD,CACjD,CAAC;oBACF,SAAS;gBACX,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAED,0EAA0E;YAC1E,+DAA+D;YAC/D,EAAE;YACF,qEAAqE;YACrE,sBAAsB;YACtB,gBAAgB,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAErE,WAAW,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC;YACnD,UAAU,GAAG,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC;YAC9C,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAC3D,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,GAAG,CAAC;QACb,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,MAAM,YAAY,CAAC,GAAG,CAAO,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,OAAe;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC;QAClD,MAAM,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACK,aAAa;QACnB,MAAM,QAAQ,GAAG,kBAAkB,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7E,MAAM,aAAa,GACjB,QAAQ,CAAC,GAAG,CAAwB,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACxE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACtC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AA3RD,wEA2RC","sourcesContent":["import { GlobalConfig } from '../../../config/global';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport * as memCache from '../../cache/memory';\nimport * as packageCache from '../../cache/package';\nimport type { PackageCacheNamespace } from '../../cache/package/types';\nimport type {\n GithubGraphqlResponse,\n GithubHttp,\n GithubHttpOptions,\n} from '../../http/github';\nimport type { HttpResponse } from '../../http/types';\nimport { getApiBaseUrl } from '../url';\nimport { GithubGraphqlMemoryCacheStrategy } from './cache-strategies/memory-cache-strategy';\nimport { GithubGraphqlPackageCacheStrategy } from './cache-strategies/package-cache-strategy';\nimport type {\n GithubDatasourceItem,\n GithubGraphqlCacheStrategy,\n GithubGraphqlDatasourceAdapter,\n GithubGraphqlPayload,\n GithubGraphqlRepoParams,\n GithubGraphqlRepoResponse,\n GithubPackageConfig,\n RawQueryResponse,\n} from './types';\n\n/**\n * We know empirically that certain type of GraphQL errors\n * can be fixed by shrinking page size.\n *\n * @see https://github.com/renovatebot/renovate/issues/16343\n */\nfunction isUnknownGraphqlError(err: Error): boolean {\n const { message } = err;\n return message.startsWith('Something went wrong while executing your query.');\n}\n\nfunction canBeSolvedByShrinking(err: Error): boolean {\n const errors: Error[] = err instanceof AggregateError ? err.errors : [err];\n return errors.some(\n (e) => err instanceof ExternalHostError || isUnknownGraphqlError(e),\n );\n}\n\nexport class GithubGraphqlDatasourceFetcher<\n GraphqlItem,\n ResultItem extends GithubDatasourceItem,\n> {\n static async query<T, U extends GithubDatasourceItem>(\n config: GithubPackageConfig,\n http: GithubHttp,\n adapter: GithubGraphqlDatasourceAdapter<T, U>,\n ): Promise<U[]> {\n const instance = new GithubGraphqlDatasourceFetcher<T, U>(\n config,\n http,\n adapter,\n );\n const items = await instance.getItems();\n return items;\n }\n\n private readonly baseUrl: string;\n private readonly repoOwner: string;\n private readonly repoName: string;\n\n private itemsPerQuery: 100 | 50 | 25 = 100;\n\n private queryCount = 0;\n\n private cursor: string | null = null;\n\n private isPersistent: boolean | undefined;\n\n constructor(\n packageConfig: GithubPackageConfig,\n private http: GithubHttp,\n private datasourceAdapter: GithubGraphqlDatasourceAdapter<\n GraphqlItem,\n ResultItem\n >,\n ) {\n const { packageName, registryUrl } = packageConfig;\n [this.repoOwner, this.repoName] = packageName.split('/');\n this.baseUrl = getApiBaseUrl(registryUrl).replace(/\\/v3\\/$/, '/'); // Replace for GHE\n }\n\n private getCacheNs(): PackageCacheNamespace {\n return this.datasourceAdapter.key;\n }\n\n private getCacheKey(): string {\n return [this.baseUrl, this.repoOwner, this.repoName].join(':');\n }\n\n private getRawQueryOptions(): GithubHttpOptions {\n const baseUrl = this.baseUrl;\n const repository = `${this.repoOwner}/${this.repoName}`;\n const query = this.datasourceAdapter.query;\n const variables: GithubGraphqlRepoParams = {\n owner: this.repoOwner,\n name: this.repoName,\n count: this.itemsPerQuery,\n cursor: this.cursor,\n };\n\n return {\n baseUrl,\n repository,\n readOnly: true,\n body: { query, variables },\n };\n }\n\n private async doRawQuery(): Promise<\n RawQueryResponse<GithubGraphqlPayload<GraphqlItem>>\n > {\n const requestOptions = this.getRawQueryOptions();\n\n type GraphqlData = GithubGraphqlRepoResponse<GraphqlItem>;\n type HttpBody = GithubGraphqlResponse<GraphqlData>;\n let httpRes: HttpResponse<HttpBody>;\n try {\n httpRes = await this.http.postJson<HttpBody>('/graphql', requestOptions);\n } catch (err) {\n return [null, err];\n }\n\n const { body } = httpRes;\n const { data, errors } = body;\n\n if (errors?.length) {\n if (errors.length === 1) {\n const { message } = errors[0];\n const err = new Error(message);\n return [null, err];\n } else {\n const errorInstances = errors.map(({ message }) => new Error(message));\n const err = new AggregateError(errorInstances);\n return [null, err];\n }\n }\n\n if (!data) {\n const msg = 'GitHub GraphQL datasource: failed to obtain data';\n const err = new Error(msg);\n return [null, err];\n }\n\n if (!data.repository) {\n const msg = 'GitHub GraphQL datasource: failed to obtain repository data';\n const err = new Error(msg);\n return [null, err];\n }\n\n if (!data.repository.payload) {\n const msg =\n 'GitHub GraphQL datasource: failed to obtain repository payload data';\n const err = new Error(msg);\n return [null, err];\n }\n\n this.queryCount += 1;\n\n // For values other than explicit `false`,\n // we assume that items can not be cached.\n this.isPersistent ??= data.repository.isRepoPrivate === false;\n\n const res = data.repository.payload;\n return [res, null];\n }\n\n private shrinkPageSize(): boolean {\n if (this.itemsPerQuery === 100) {\n this.itemsPerQuery = 50;\n return true;\n }\n\n if (this.itemsPerQuery === 50) {\n this.itemsPerQuery = 25;\n return true;\n }\n\n return false;\n }\n\n private hasReachedQueryLimit(): boolean {\n return this.queryCount >= 100;\n }\n\n private async doShrinkableQuery(): Promise<\n GithubGraphqlPayload<GraphqlItem>\n > {\n let res: GithubGraphqlPayload<GraphqlItem> | null = null;\n let err: Error | null = null;\n\n while (!res) {\n [res, err] = await this.doRawQuery();\n if (err) {\n if (!canBeSolvedByShrinking(err)) {\n throw err;\n }\n\n const shrinkResult = this.shrinkPageSize();\n if (!shrinkResult) {\n throw err;\n }\n const { body, ...options } = this.getRawQueryOptions();\n logger.debug(\n { options, newSize: this.itemsPerQuery },\n 'Shrinking GitHub GraphQL page size after error',\n );\n }\n }\n\n return res;\n }\n\n private _cacheStrategy: GithubGraphqlCacheStrategy<ResultItem> | undefined;\n\n private cacheStrategy(): GithubGraphqlCacheStrategy<ResultItem> {\n if (this._cacheStrategy) {\n return this._cacheStrategy;\n }\n const cacheNs = this.getCacheNs();\n const cacheKey = this.getCacheKey();\n const cachePrivatePackages = GlobalConfig.get(\n 'cachePrivatePackages',\n false,\n );\n this._cacheStrategy =\n cachePrivatePackages || this.isPersistent\n ? new GithubGraphqlPackageCacheStrategy<ResultItem>(cacheNs, cacheKey)\n : new GithubGraphqlMemoryCacheStrategy<ResultItem>(cacheNs, cacheKey);\n return this._cacheStrategy;\n }\n\n /**\n * This method is responsible for data synchronization.\n * It also detects persistence of the package, based on the first page result.\n */\n private async doPaginatedFetch(): Promise<void> {\n let hasNextPage = true;\n let isPaginationDone = false;\n let nextCursor: string | undefined;\n while (hasNextPage && !isPaginationDone && !this.hasReachedQueryLimit()) {\n const queryResult = await this.doShrinkableQuery();\n\n const resultItems: ResultItem[] = [];\n for (const node of queryResult.nodes) {\n const item = this.datasourceAdapter.transform(node);\n if (!item) {\n logger.once.info(\n {\n packageName: `${this.repoOwner}/${this.repoName}`,\n baseUrl: this.baseUrl,\n },\n `GitHub GraphQL datasource: skipping empty item`,\n );\n continue;\n }\n resultItems.push(item);\n }\n\n // It's important to call `getCacheStrategy()` after `doShrinkableQuery()`\n // because `doShrinkableQuery()` may change `this.isCacheable`.\n //\n // Otherwise, cache items for public packages will never be persisted\n // in long-term cache.\n isPaginationDone = await this.cacheStrategy().reconcile(resultItems);\n\n hasNextPage = !!queryResult?.pageInfo?.hasNextPage;\n nextCursor = queryResult?.pageInfo?.endCursor;\n if (hasNextPage && nextCursor) {\n this.cursor = nextCursor;\n }\n }\n\n if (this.isPersistent) {\n await this.storePersistenceFlag(30);\n }\n }\n\n private async doCachedQuery(): Promise<ResultItem[]> {\n await this.loadPersistenceFlag();\n if (!this.isPersistent) {\n await this.doPaginatedFetch();\n }\n\n const res = await this.cacheStrategy().finalizeAndReturn();\n if (res.length) {\n return res;\n }\n\n delete this.isPersistent;\n await this.doPaginatedFetch();\n return this.cacheStrategy().finalizeAndReturn();\n }\n\n async loadPersistenceFlag(): Promise<void> {\n const ns = this.getCacheNs();\n const key = `${this.getCacheKey()}:is-persistent`;\n this.isPersistent = await packageCache.get<true>(ns, key);\n }\n\n async storePersistenceFlag(minutes: number): Promise<void> {\n const ns = this.getCacheNs();\n const key = `${this.getCacheKey()}:is-persistent`;\n await packageCache.set(ns, key, true, minutes);\n }\n\n /**\n * This method ensures the only one query is executed\n * to a particular package during single run.\n */\n private doUniqueQuery(): Promise<ResultItem[]> {\n const cacheKey = `github-pending:${this.getCacheNs()}:${this.getCacheKey()}`;\n const resultPromise =\n memCache.get<Promise<ResultItem[]>>(cacheKey) ?? this.doCachedQuery();\n memCache.set(cacheKey, resultPromise);\n return resultPromise;\n }\n\n async getItems(): Promise<ResultItem[]> {\n const res = await this.doUniqueQuery();\n return res;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import pAll from 'p-all';
2
- import type { Mapper, Options } from 'p-map';
1
+ import type { Options as PAllOptions } from 'p-all';
2
+ import type { Mapper, Options as PMapOptions } from 'p-map';
3
3
  type PromiseFactory<T> = () => Promise<T>;
4
- export declare function all<T>(tasks: PromiseFactory<T>[], options?: pAll.Options): Promise<T[]>;
5
- export declare function map<Element, NewElement>(input: Iterable<Element>, mapper: Mapper<Element, NewElement>, options?: Options): Promise<NewElement[]>;
4
+ export declare function all<T>(tasks: PromiseFactory<T>[], options?: PAllOptions): Promise<T[]>;
5
+ export declare function map<Element, NewElement>(input: Iterable<Element>, mapper: Mapper<Element, NewElement>, options?: PMapOptions): Promise<NewElement[]>;
6
6
  export {};
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.all = all;
4
4
  exports.map = map;
5
5
  const tslib_1 = require("tslib");
6
- const aggregate_error_1 = tslib_1.__importDefault(require("aggregate-error"));
7
6
  const p_all_1 = tslib_1.__importDefault(require("p-all"));
8
7
  const p_map_1 = tslib_1.__importDefault(require("p-map"));
9
8
  const logger_1 = require("../logger");
@@ -24,13 +23,11 @@ function handleMultipleErrors(errors) {
24
23
  throw new AggregateError(errors);
25
24
  }
26
25
  function handleError(err) {
27
- // AggregateErrorLegacy can be dropped after `p_all` was upgraded too
28
- // https://github.com/renovatebot/renovate/issues/36429
29
- if (!(err instanceof AggregateError || err instanceof aggregate_error_1.default)) {
26
+ if (!(err instanceof AggregateError)) {
30
27
  throw err;
31
28
  }
32
29
  logger_1.logger.debug({ err }, 'Aggregate error is thrown');
33
- handleMultipleErrors(err instanceof AggregateError ? err.errors : [...err]);
30
+ handleMultipleErrors(err.errors);
34
31
  }
35
32
  async function all(tasks, options) {
36
33
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"promises.js","sourceRoot":"","sources":["../../lib/util/promises.ts"],"names":[],"mappings":";;AAwCA,kBAcC;AAED,kBAeC;;AAvED,8EAAmD;AACnD,0DAAyB;AAEzB,0DAAyB;AACzB,sCAAmC;AACnC,6EAAwE;AAIxE,SAAS,mBAAmB,CAAC,GAAQ;IACnC,OAAO,GAAG,YAAY,uCAAiB,CAAC;AAC1C,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAe;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,SAAS,CAAC;IAClB,CAAC;IACD,IACE,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EACxD,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QACvB,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,WAAW,CAAC,GAAQ;IAC3B,qEAAqE;IACrE,uDAAuD;IACvD,IAAI,CAAC,CAAC,GAAG,YAAY,cAAc,IAAI,GAAG,YAAY,yBAAoB,CAAC,EAAE,CAAC;QAC5E,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,2BAA2B,CAAC,CAAC;IACnD,oBAAoB,CAAC,GAAG,YAAY,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC9E,CAAC;AAEM,KAAK,UAAU,GAAG,CACvB,KAA0B,EAC1B,OAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAA,eAAI,EAAC,KAAK,EAAE;YAC5B,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,KAAK;YAClB,GAAG,OAAO;SACX,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,GAAG,CACvB,KAAwB,EACxB,MAAmC,EACnC,OAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAA,eAAI,EAAC,KAAK,EAAE,MAAM,EAAE;YACpC,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,KAAK;YAClB,GAAG,OAAO;SACX,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC","sourcesContent":["import AggregateErrorLegacy from 'aggregate-error';\nimport pAll from 'p-all';\nimport type { Mapper, Options } from 'p-map';\nimport pMap from 'p-map';\nimport { logger } from '../logger';\nimport { ExternalHostError } from '../types/errors/external-host-error';\n\ntype PromiseFactory<T> = () => Promise<T>;\n\nfunction isExternalHostError(err: any): err is ExternalHostError {\n return err instanceof ExternalHostError;\n}\n\nfunction handleMultipleErrors(errors: Error[]): never {\n const hostError = errors.find(isExternalHostError);\n if (hostError) {\n throw hostError;\n }\n if (\n errors.length === 1 ||\n new Set(errors.map(({ message }) => message)).size === 1\n ) {\n const [error] = errors;\n throw error;\n }\n\n throw new AggregateError(errors);\n}\n\nfunction handleError(err: any): never {\n // AggregateErrorLegacy can be dropped after `p_all` was upgraded too\n // https://github.com/renovatebot/renovate/issues/36429\n if (!(err instanceof AggregateError || err instanceof AggregateErrorLegacy)) {\n throw err;\n }\n\n logger.debug({ err }, 'Aggregate error is thrown');\n handleMultipleErrors(err instanceof AggregateError ? err.errors : [...err]);\n}\n\nexport async function all<T>(\n tasks: PromiseFactory<T>[],\n options?: pAll.Options,\n): Promise<T[]> {\n try {\n const res = await pAll(tasks, {\n concurrency: 5,\n stopOnError: false,\n ...options,\n });\n return res;\n } catch (err) {\n return handleError(err);\n }\n}\n\nexport async function map<Element, NewElement>(\n input: Iterable<Element>,\n mapper: Mapper<Element, NewElement>,\n options?: Options,\n): Promise<NewElement[]> {\n try {\n const res = await pMap(input, mapper, {\n concurrency: 5,\n stopOnError: false,\n ...options,\n });\n return res;\n } catch (err) {\n return handleError(err);\n }\n}\n"]}
1
+ {"version":3,"file":"promises.js","sourceRoot":"","sources":["../../lib/util/promises.ts"],"names":[],"mappings":";;AAsCA,kBAcC;AAED,kBAeC;;AApED,0DAAyB;AAEzB,0DAAyB;AACzB,sCAAmC;AACnC,6EAAwE;AAIxE,SAAS,mBAAmB,CAAC,GAAQ;IACnC,OAAO,GAAG,YAAY,uCAAiB,CAAC;AAC1C,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAe;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,SAAS,CAAC;IAClB,CAAC;IACD,IACE,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EACxD,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QACvB,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,WAAW,CAAC,GAAQ;IAC3B,IAAI,CAAC,CAAC,GAAG,YAAY,cAAc,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,2BAA2B,CAAC,CAAC;IACnD,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAEM,KAAK,UAAU,GAAG,CACvB,KAA0B,EAC1B,OAAqB;IAErB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAA,eAAI,EAAC,KAAK,EAAE;YAC5B,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,KAAK;YAClB,GAAG,OAAO;SACX,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,GAAG,CACvB,KAAwB,EACxB,MAAmC,EACnC,OAAqB;IAErB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAA,eAAI,EAAC,KAAK,EAAE,MAAM,EAAE;YACpC,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,KAAK;YAClB,GAAG,OAAO;SACX,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC","sourcesContent":["import type { Options as PAllOptions } from 'p-all';\nimport pAll from 'p-all';\nimport type { Mapper, Options as PMapOptions } from 'p-map';\nimport pMap from 'p-map';\nimport { logger } from '../logger';\nimport { ExternalHostError } from '../types/errors/external-host-error';\n\ntype PromiseFactory<T> = () => Promise<T>;\n\nfunction isExternalHostError(err: any): err is ExternalHostError {\n return err instanceof ExternalHostError;\n}\n\nfunction handleMultipleErrors(errors: Error[]): never {\n const hostError = errors.find(isExternalHostError);\n if (hostError) {\n throw hostError;\n }\n if (\n errors.length === 1 ||\n new Set(errors.map(({ message }) => message)).size === 1\n ) {\n const [error] = errors;\n throw error;\n }\n\n throw new AggregateError(errors);\n}\n\nfunction handleError(err: any): never {\n if (!(err instanceof AggregateError)) {\n throw err;\n }\n\n logger.debug({ err }, 'Aggregate error is thrown');\n handleMultipleErrors(err.errors);\n}\n\nexport async function all<T>(\n tasks: PromiseFactory<T>[],\n options?: PAllOptions,\n): Promise<T[]> {\n try {\n const res = await pAll(tasks, {\n concurrency: 5,\n stopOnError: false,\n ...options,\n });\n return res;\n } catch (err) {\n return handleError(err);\n }\n}\n\nexport async function map<Element, NewElement>(\n input: Iterable<Element>,\n mapper: Mapper<Element, NewElement>,\n options?: PMapOptions,\n): Promise<NewElement[]> {\n try {\n const res = await pMap(input, mapper, {\n concurrency: 5,\n stopOnError: false,\n ...options,\n });\n return res;\n } catch (err) {\n return handleError(err);\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod/v4';
2
+ export declare const Json: z.ZodPipe<z.ZodString, z.ZodTransform<unknown, string>>;
3
+ export declare const Json5: z.ZodPipe<z.ZodString, z.ZodTransform<unknown, string>>;
4
+ export declare const Jsonc: z.ZodPipe<z.ZodString, z.ZodTransform<unknown, string>>;
5
+ export declare const Yaml: z.ZodPipe<z.ZodString, z.ZodTransform<unknown, string>>;
6
+ export declare const MultidocYaml: z.ZodPipe<z.ZodString, z.ZodTransform<unknown, string>>;
7
+ export declare const Toml: z.ZodPipe<z.ZodString, z.ZodTransform<unknown, string>>;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Toml = exports.MultidocYaml = exports.Yaml = exports.Jsonc = exports.Json5 = exports.Json = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const json5_1 = tslib_1.__importDefault(require("json5"));
6
+ const v4_1 = require("zod/v4");
7
+ const common_1 = require("../common");
8
+ const toml_1 = require("../toml");
9
+ const yaml_1 = require("../yaml");
10
+ exports.Json = v4_1.z.string().transform((str, ctx) => {
11
+ try {
12
+ return JSON.parse(str);
13
+ }
14
+ catch {
15
+ ctx.addIssue({ code: 'custom', message: 'Invalid JSON' });
16
+ return v4_1.z.NEVER;
17
+ }
18
+ });
19
+ exports.Json5 = v4_1.z.string().transform((str, ctx) => {
20
+ try {
21
+ return json5_1.default.parse(str);
22
+ }
23
+ catch {
24
+ ctx.addIssue({ code: 'custom', message: 'Invalid JSON5' });
25
+ return v4_1.z.NEVER;
26
+ }
27
+ });
28
+ exports.Jsonc = v4_1.z.string().transform((str, ctx) => {
29
+ try {
30
+ return (0, common_1.parseJsonc)(str);
31
+ }
32
+ catch {
33
+ ctx.addIssue({ code: 'custom', message: 'Invalid JSONC' });
34
+ return v4_1.z.NEVER;
35
+ }
36
+ });
37
+ exports.Yaml = v4_1.z.string().transform((str, ctx) => {
38
+ try {
39
+ return (0, yaml_1.parseSingleYaml)(str);
40
+ }
41
+ catch {
42
+ ctx.addIssue({ code: 'custom', message: 'Invalid YAML' });
43
+ return v4_1.z.NEVER;
44
+ }
45
+ });
46
+ exports.MultidocYaml = v4_1.z.string().transform((str, ctx) => {
47
+ try {
48
+ return (0, yaml_1.parseYaml)(str);
49
+ }
50
+ catch {
51
+ ctx.addIssue({ code: 'custom', message: 'Invalid YAML' });
52
+ return v4_1.z.NEVER;
53
+ }
54
+ });
55
+ exports.Toml = v4_1.z.string().transform((str, ctx) => {
56
+ try {
57
+ return (0, toml_1.parse)(str);
58
+ }
59
+ catch {
60
+ ctx.addIssue({ code: 'custom', message: 'Invalid TOML' });
61
+ return v4_1.z.NEVER;
62
+ }
63
+ });
64
+ //# sourceMappingURL=v4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v4.js","sourceRoot":"","sources":["../../../lib/util/schema-utils/v4.ts"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,+BAA2B;AAC3B,sCAAuC;AACvC,kCAA6C;AAC7C,kCAAqD;AAExC,QAAA,IAAI,GAAG,MAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAW,EAAE;IAC7D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAC,CAAC,KAAK,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEU,QAAA,KAAK,GAAG,MAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAW,EAAE;IAC9D,IAAI,CAAC;QACH,OAAO,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;QAC3D,OAAO,MAAC,CAAC,KAAK,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEU,QAAA,KAAK,GAAG,MAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAW,EAAE;IAC9D,IAAI,CAAC;QACH,OAAO,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;QAC3D,OAAO,MAAC,CAAC,KAAK,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEU,QAAA,IAAI,GAAG,MAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAW,EAAE;IAC7D,IAAI,CAAC;QACH,OAAO,IAAA,sBAAe,EAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAC,CAAC,KAAK,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,MAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAW,EAAE;IACrE,IAAI,CAAC;QACH,OAAO,IAAA,gBAAS,EAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAC,CAAC,KAAK,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAEU,QAAA,IAAI,GAAG,MAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACpD,IAAI,CAAC;QACH,OAAO,IAAA,YAAS,EAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAC,CAAC,KAAK,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC","sourcesContent":["import JSON5 from 'json5';\nimport { z } from 'zod/v4';\nimport { parseJsonc } from '../common';\nimport { parse as parseToml } from '../toml';\nimport { parseSingleYaml, parseYaml } from '../yaml';\n\nexport const Json = z.string().transform((str, ctx): unknown => {\n try {\n return JSON.parse(str);\n } catch {\n ctx.addIssue({ code: 'custom', message: 'Invalid JSON' });\n return z.NEVER;\n }\n});\n\nexport const Json5 = z.string().transform((str, ctx): unknown => {\n try {\n return JSON5.parse(str);\n } catch {\n ctx.addIssue({ code: 'custom', message: 'Invalid JSON5' });\n return z.NEVER;\n }\n});\n\nexport const Jsonc = z.string().transform((str, ctx): unknown => {\n try {\n return parseJsonc(str);\n } catch {\n ctx.addIssue({ code: 'custom', message: 'Invalid JSONC' });\n return z.NEVER;\n }\n});\n\nexport const Yaml = z.string().transform((str, ctx): unknown => {\n try {\n return parseSingleYaml(str);\n } catch {\n ctx.addIssue({ code: 'custom', message: 'Invalid YAML' });\n return z.NEVER;\n }\n});\n\nexport const MultidocYaml = z.string().transform((str, ctx): unknown => {\n try {\n return parseYaml(str);\n } catch {\n ctx.addIssue({ code: 'custom', message: 'Invalid YAML' });\n return z.NEVER;\n }\n});\n\nexport const Toml = z.string().transform((str, ctx) => {\n try {\n return parseToml(str);\n } catch {\n ctx.addIssue({ code: 'custom', message: 'Invalid TOML' });\n return z.NEVER;\n }\n});\n"]}
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": "40.49.4",
4
+ "version": "40.49.6",
5
5
  "type": "commonjs",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",
@@ -50,9 +50,9 @@
50
50
  "test": "run-s lint test-schema jest",
51
51
  "test-dirty": "git diff --exit-code",
52
52
  "test-e2e": "run-s 'test-e2e:*'",
53
- "test-e2e:pack": "npm pack",
54
- "test-e2e:install": "cd test/e2e && npm install --no-package-lock --prod",
55
- "test-e2e:run": "cd test/e2e && npm test",
53
+ "test-e2e:pack": "pnpm pack",
54
+ "test-e2e:install": "cd test/e2e && pnpm --ignore-workspace install --no-lockfile --prod",
55
+ "test-e2e:run": "cd test/e2e && pnpm test",
56
56
  "test-schema": "run-s create-json-schema",
57
57
  "test:docs": "node --test tools/docs/test/**/*.mjs",
58
58
  "schedule-test-shards": "SCHEDULE_TEST_SHARDS=true tsx tools/test-shards.ts",
@@ -178,10 +178,9 @@
178
178
  "@renovatebot/pep440": "4.1.0",
179
179
  "@renovatebot/ruby-semver": "4.0.0",
180
180
  "@sindresorhus/is": "7.0.1",
181
- "@yarnpkg/core": "4.4.1",
181
+ "@yarnpkg/core": "4.4.2",
182
182
  "@yarnpkg/parsers": "3.0.3",
183
183
  "agentkeepalive": "4.6.0",
184
- "aggregate-error": "3.1.0",
185
184
  "async-mutex": "0.5.0",
186
185
  "auth-header": "1.0.0",
187
186
  "aws4": "1.13.2",
@@ -234,7 +233,7 @@
234
233
  "nanoid": "5.1.5",
235
234
  "neotraverse": "0.6.18",
236
235
  "node-html-parser": "7.0.1",
237
- "p-all": "3.0.0",
236
+ "p-all": "5.0.0",
238
237
  "p-map": "7.0.3",
239
238
  "p-queue": "8.1.0",
240
239
  "p-throttle": "7.0.0",
@@ -312,7 +311,7 @@
312
311
  "@types/tmp": "0.2.6",
313
312
  "@types/validate-npm-package-name": "4.0.2",
314
313
  "@types/xmldoc": "1.1.9",
315
- "@vitest/coverage-v8": "3.2.0",
314
+ "@vitest/coverage-v8": "3.2.1",
316
315
  "@vitest/eslint-plugin": "1.2.1",
317
316
  "aws-sdk-client-mock": "4.1.0",
318
317
  "callsite": "1.0.0",
@@ -348,7 +347,7 @@
348
347
  "unified": "9.2.2",
349
348
  "vite": "6.3.5",
350
349
  "vite-tsconfig-paths": "5.1.4",
351
- "vitest": "3.2.0",
350
+ "vitest": "3.2.1",
352
351
  "vitest-mock-extended": "3.1.0"
353
352
  },
354
353
  "packageManager": "pnpm@10.11.1",