renovate 39.176.4 → 40.0.0-next.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.
- package/dist/config/migrations/custom/package-rules-migration.js.map +1 -1
- package/dist/config/migrations/migrations-service.d.ts +2 -2
- package/dist/config/migrations/migrations-service.js.map +1 -1
- package/dist/config/migrations/types.d.ts +1 -3
- package/dist/config/migrations/types.js.map +1 -1
- package/dist/config/options/index.js +1 -1
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/presets/internal/group.js +0 -1
- package/dist/config/presets/internal/group.js.map +1 -1
- package/dist/config/presets/types.d.ts +4 -4
- package/dist/config/presets/types.js.map +1 -1
- package/dist/config-validator.js.map +1 -1
- package/dist/logger/utils.js +4 -2
- package/dist/logger/utils.js.map +1 -1
- package/dist/modules/datasource/artifactory/index.js +1 -1
- package/dist/modules/datasource/artifactory/index.js.map +1 -1
- package/dist/modules/datasource/conan/index.js +1 -1
- package/dist/modules/datasource/conan/index.js.map +1 -1
- package/dist/modules/datasource/crate/index.js.map +1 -1
- package/dist/modules/datasource/datasource.d.ts +1 -1
- package/dist/modules/datasource/datasource.js +3 -1
- package/dist/modules/datasource/datasource.js.map +1 -1
- package/dist/modules/datasource/deb/common.d.ts +3 -3
- package/dist/modules/datasource/deb/common.js.map +1 -1
- package/dist/modules/datasource/docker/ecr.js +1 -1
- package/dist/modules/datasource/docker/ecr.js.map +1 -1
- package/dist/modules/datasource/docker/index.js.map +1 -1
- package/dist/modules/datasource/hexpm-bob/index.js +1 -1
- package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
- package/dist/modules/datasource/nuget/v2.js +1 -1
- package/dist/modules/datasource/nuget/v2.js.map +1 -1
- package/dist/modules/datasource/pod/index.js +1 -2
- package/dist/modules/datasource/pod/index.js.map +1 -1
- package/dist/modules/datasource/rubygems/metadata-cache.js.map +1 -1
- package/dist/modules/datasource/sbt-plugin/index.js +1 -2
- package/dist/modules/datasource/sbt-plugin/index.js.map +1 -1
- package/dist/modules/manager/ansible-galaxy/collections-metadata.js +1 -2
- package/dist/modules/manager/ansible-galaxy/collections-metadata.js.map +1 -1
- package/dist/modules/manager/asdf/upgradeable-tooling.js +4 -4
- package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/batect/extract.js.map +1 -1
- package/dist/modules/manager/bazel/artifacts.js +2 -2
- package/dist/modules/manager/bazel/artifacts.js.map +1 -1
- package/dist/modules/manager/bazel/common.js +1 -2
- package/dist/modules/manager/bazel/common.js.map +1 -1
- package/dist/modules/manager/bazel/parser.js +1 -1
- package/dist/modules/manager/bazel/parser.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/context.d.ts +4 -3
- package/dist/modules/manager/bazel-module/parser/context.js +9 -6
- package/dist/modules/manager/bazel-module/parser/context.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/extension-tags.js +10 -2
- package/dist/modules/manager/bazel-module/parser/extension-tags.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/fragments.d.ts +20 -2
- package/dist/modules/manager/bazel-module/parser/fragments.js +8 -2
- package/dist/modules/manager/bazel-module/parser/fragments.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/index.js +1 -1
- package/dist/modules/manager/bazel-module/parser/index.js.map +1 -1
- package/dist/modules/manager/bazel-module/parser/maven.d.ts +16 -0
- package/dist/modules/manager/bazel-module/parser/oci.d.ts +8 -0
- package/dist/modules/manager/bazel-module/parser/oci.js +4 -1
- package/dist/modules/manager/bazel-module/parser/oci.js.map +1 -1
- package/dist/modules/manager/bun/artifacts.js +1 -1
- package/dist/modules/manager/bun/artifacts.js.map +1 -1
- package/dist/modules/manager/bundler/extract.js.map +1 -1
- package/dist/modules/manager/cargo/artifacts.js +1 -1
- package/dist/modules/manager/cargo/artifacts.js.map +1 -1
- package/dist/modules/manager/cargo/extract.js.map +1 -1
- package/dist/modules/manager/cargo/types.d.ts +1 -3
- package/dist/modules/manager/cargo/types.js.map +1 -1
- package/dist/modules/manager/composer/utils.js +4 -4
- package/dist/modules/manager/composer/utils.js.map +1 -1
- package/dist/modules/manager/deps-edn/extract.js +3 -3
- package/dist/modules/manager/deps-edn/extract.js.map +1 -1
- package/dist/modules/manager/deps-edn/types.js.map +1 -1
- package/dist/modules/manager/dockerfile/extract.js +2 -3
- package/dist/modules/manager/dockerfile/extract.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +17 -17
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/flux/types.d.ts +3 -3
- package/dist/modules/manager/flux/types.js.map +1 -1
- package/dist/modules/manager/git-submodules/types.d.ts +2 -2
- package/dist/modules/manager/git-submodules/types.js.map +1 -1
- package/dist/modules/manager/github-actions/extract.js +2 -2
- package/dist/modules/manager/github-actions/extract.js.map +1 -1
- package/dist/modules/manager/glasskube/types.d.ts +2 -2
- package/dist/modules/manager/glasskube/types.js.map +1 -1
- package/dist/modules/manager/gleam/artifacts.js +1 -1
- package/dist/modules/manager/gleam/artifacts.js.map +1 -1
- package/dist/modules/manager/gradle/utils.js +6 -2
- package/dist/modules/manager/gradle/utils.js.map +1 -1
- package/dist/modules/manager/haskell-cabal/extract.js +1 -1
- package/dist/modules/manager/haskell-cabal/extract.js.map +1 -1
- package/dist/modules/manager/helmfile/artifacts.js +1 -1
- package/dist/modules/manager/helmfile/artifacts.js.map +1 -1
- package/dist/modules/manager/helmfile/extract.js +2 -2
- package/dist/modules/manager/helmfile/extract.js.map +1 -1
- package/dist/modules/manager/helmv3/artifacts.js +1 -1
- package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
- package/dist/modules/manager/helmv3/extract.js.map +1 -1
- package/dist/modules/manager/helmv3/utils.js +1 -1
- package/dist/modules/manager/helmv3/utils.js.map +1 -1
- package/dist/modules/manager/homebrew/util.js +1 -2
- package/dist/modules/manager/homebrew/util.js.map +1 -1
- package/dist/modules/manager/jsonnet-bundler/extract.js +1 -1
- package/dist/modules/manager/jsonnet-bundler/extract.js.map +1 -1
- package/dist/modules/manager/leiningen/extract.js +1 -2
- package/dist/modules/manager/leiningen/extract.js.map +1 -1
- package/dist/modules/manager/maven/extract.js.map +1 -1
- package/dist/modules/manager/maven/update.js.map +1 -1
- package/dist/modules/manager/mise/upgradeable-tooling.js +7 -7
- package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
- package/dist/modules/manager/nix/extract.js +1 -1
- package/dist/modules/manager/nix/extract.js.map +1 -1
- package/dist/modules/manager/npm/extract/pnpm.js +1 -1
- package/dist/modules/manager/npm/extract/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/post-update/index.js +1 -1
- package/dist/modules/manager/npm/post-update/index.js.map +1 -1
- package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
- package/dist/modules/manager/nuget/config-formatter.js +1 -2
- package/dist/modules/manager/nuget/config-formatter.js.map +1 -1
- package/dist/modules/manager/nuget/package-tree.js +1 -1
- package/dist/modules/manager/nuget/package-tree.js.map +1 -1
- package/dist/modules/manager/nuget/util.js +2 -2
- package/dist/modules/manager/nuget/util.js.map +1 -1
- package/dist/modules/manager/osgi/extract.js +3 -3
- package/dist/modules/manager/osgi/extract.js.map +1 -1
- package/dist/modules/manager/pep621/processors/pdm.js +1 -1
- package/dist/modules/manager/pep621/processors/pdm.js.map +1 -1
- package/dist/modules/manager/pep621/processors/uv.js +3 -2
- package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
- package/dist/modules/manager/pip-compile/artifacts.js +8 -2
- package/dist/modules/manager/pip-compile/artifacts.js.map +1 -1
- package/dist/modules/manager/pip-compile/common.d.ts +5 -3
- package/dist/modules/manager/pip-compile/common.js +34 -13
- package/dist/modules/manager/pip-compile/common.js.map +1 -1
- package/dist/modules/manager/pip-compile/extract.js.map +1 -1
- package/dist/modules/manager/pip-compile/types.d.ts +1 -0
- package/dist/modules/manager/pip-compile/types.js.map +1 -1
- package/dist/modules/manager/poetry/artifacts.js +2 -2
- package/dist/modules/manager/poetry/artifacts.js.map +1 -1
- package/dist/modules/manager/pre-commit/types.d.ts +2 -2
- package/dist/modules/manager/pre-commit/types.js.map +1 -1
- package/dist/modules/manager/pub/artifacts.js +1 -1
- package/dist/modules/manager/pub/artifacts.js.map +1 -1
- package/dist/modules/manager/swift/extract.js +1 -2
- package/dist/modules/manager/swift/extract.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/terraform-block/required-provider.js +2 -2
- package/dist/modules/manager/terraform/extractors/terraform-block/required-provider.js.map +1 -1
- package/dist/modules/manager/terraform/hcl/types.d.ts +1 -3
- package/dist/modules/manager/terraform/hcl/types.js.map +1 -1
- package/dist/modules/manager/terraform/lockfile/index.js +1 -1
- package/dist/modules/manager/terraform/lockfile/index.js.map +1 -1
- package/dist/modules/manager/terragrunt/artifacts.js +1 -1
- package/dist/modules/manager/terragrunt/artifacts.js.map +1 -1
- package/dist/modules/manager/types.d.ts +1 -0
- package/dist/modules/manager/types.js.map +1 -1
- package/dist/modules/manager/woodpecker/types.d.ts +2 -2
- package/dist/modules/manager/woodpecker/types.js.map +1 -1
- package/dist/modules/platform/azure/azure-helper.js.map +1 -1
- package/dist/modules/platform/azure/index.js +1 -1
- package/dist/modules/platform/azure/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/index.js.map +1 -1
- package/dist/modules/platform/bitbucket/utils.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/index.js +2 -2
- package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
- package/dist/modules/platform/gerrit/scm.js +1 -1
- package/dist/modules/platform/gerrit/scm.js.map +1 -1
- package/dist/modules/platform/gitea/index.js +6 -5
- package/dist/modules/platform/gitea/index.js.map +1 -1
- package/dist/modules/platform/gitea/pr-cache.d.ts +3 -2
- package/dist/modules/platform/gitea/pr-cache.js +21 -12
- package/dist/modules/platform/gitea/pr-cache.js.map +1 -1
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/modules/platform/gitlab/index.js +20 -16
- package/dist/modules/platform/gitlab/index.js.map +1 -1
- package/dist/modules/platform/types.d.ts +2 -2
- package/dist/modules/platform/types.js.map +1 -1
- package/dist/modules/versioning/bazel-module/bzlmod-version.d.ts +1 -1
- package/dist/modules/versioning/bazel-module/bzlmod-version.js.map +1 -1
- package/dist/modules/versioning/generic.d.ts +2 -6
- package/dist/modules/versioning/generic.js.map +1 -1
- package/dist/modules/versioning/gradle/compare.d.ts +2 -2
- package/dist/modules/versioning/gradle/compare.js.map +1 -1
- package/dist/modules/versioning/gradle/index.js +1 -1
- package/dist/modules/versioning/gradle/index.js.map +1 -1
- package/dist/modules/versioning/pvp/range.js +2 -2
- package/dist/modules/versioning/pvp/range.js.map +1 -1
- package/dist/modules/versioning/rpm/index.js +5 -5
- package/dist/modules/versioning/rpm/index.js.map +1 -1
- package/dist/modules/versioning/semver-coerced/index.js +4 -4
- package/dist/modules/versioning/semver-coerced/index.js.map +1 -1
- package/dist/modules/versioning/types.d.ts +1 -3
- package/dist/modules/versioning/types.js.map +1 -1
- package/dist/types/git.d.ts +2 -2
- package/dist/types/git.js.map +1 -1
- package/dist/types/platform/github/index.d.ts +4 -4
- package/dist/types/platform/github/index.js.map +1 -1
- package/dist/types/platform/gitlab/index.d.ts +2 -2
- package/dist/types/platform/gitlab/index.js.map +1 -1
- package/dist/util/assign-keys.d.ts +1 -3
- package/dist/util/assign-keys.js.map +1 -1
- package/dist/util/cache/repository/http-cache.js +1 -1
- package/dist/util/cache/repository/http-cache.js.map +1 -1
- package/dist/util/exec/types.d.ts +2 -2
- package/dist/util/exec/types.js.map +1 -1
- package/dist/util/git/auth.js +1 -1
- package/dist/util/git/auth.js.map +1 -1
- package/dist/util/git/index.d.ts +10 -10
- package/dist/util/git/index.js +22 -26
- package/dist/util/git/index.js.map +1 -1
- package/dist/util/http/bitbucket.js.map +1 -1
- package/dist/util/http/cache/abstract-http-cache-provider.js +1 -1
- package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
- package/dist/util/http/index.js.map +1 -1
- package/dist/util/http/types.d.ts +3 -5
- package/dist/util/http/types.js.map +1 -1
- package/dist/util/pretty-time.js.map +1 -1
- package/dist/util/schema-utils.js.map +1 -1
- package/dist/util/stats.js +1 -0
- package/dist/util/stats.js.map +1 -1
- package/dist/workers/repository/dependency-dashboard.js +2 -2
- package/dist/workers/repository/dependency-dashboard.js.map +1 -1
- package/dist/workers/repository/init/config.d.ts +1 -2
- package/dist/workers/repository/init/config.js +0 -13
- package/dist/workers/repository/init/config.js.map +1 -1
- package/dist/workers/repository/init/merge.d.ts +2 -1
- package/dist/workers/repository/init/merge.js +13 -3
- package/dist/workers/repository/init/merge.js.map +1 -1
- package/dist/workers/repository/model/commit-message.js.map +1 -1
- package/dist/workers/repository/process/vulnerabilities.js +3 -1
- package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
- package/dist/workers/repository/process/write.js +1 -1
- package/dist/workers/repository/process/write.js.map +1 -1
- package/dist/workers/repository/reconfigure/validate.js +3 -1
- package/dist/workers/repository/reconfigure/validate.js.map +1 -1
- package/dist/workers/repository/update/branch/schedule.js +1 -1
- package/dist/workers/repository/update/branch/schedule.js.map +1 -1
- package/dist/workers/repository/update/pr/body/updates-table.js.map +1 -1
- package/dist/workers/repository/updates/generate.js +9 -0
- package/dist/workers/repository/updates/generate.js.map +1 -1
- package/package.json +28 -24
- package/renovate-schema.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/util/http/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport merge from 'deepmerge';\nimport type { Options, RetryObject } from 'got';\nimport got, { RequestError } from 'got';\nimport type { SetRequired } from 'type-fest';\nimport type { infer as Infer, ZodError } from 'zod';\nimport { ZodType } from 'zod';\nimport { GlobalConfig } from '../../config/global';\nimport { HOST_DISABLED } from '../../constants/error-messages';\nimport { pkg } from '../../expose.cjs';\nimport { logger } from '../../logger';\nimport { ExternalHostError } from '../../types/errors/external-host-error';\nimport * as memCache from '../cache/memory';\nimport { hash } from '../hash';\nimport { type AsyncResult, Result } from '../result';\nimport { type HttpRequestStatsDataPoint, HttpStats } from '../stats';\nimport { resolveBaseUrl } from '../url';\nimport { parseSingleYaml } from '../yaml';\nimport { applyAuthorization, removeAuthorization } from './auth';\nimport { hooks } from './hooks';\nimport { applyHostRule, findMatchingRule } from './host-rules';\nimport { getQueue } from './queue';\nimport { getRetryAfter, wrapWithRetry } from './retry-after';\nimport { getThrottle } from './throttle';\nimport type {\n GotJSONOptions,\n GotOptions,\n GotTask,\n HttpOptions,\n HttpResponse,\n InternalHttpOptions,\n} from './types';\n// TODO: refactor code to remove this (#9651)\nimport './legacy';\nimport { copyResponse } from './util';\n\nexport { RequestError as HttpError };\n\nexport class EmptyResultError extends Error {}\nexport type SafeJsonError = RequestError | ZodError | EmptyResultError;\n\ntype HttpFnArgs<\n Opts extends HttpOptions,\n ResT = unknown,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n> = {\n url: string;\n httpOptions?: Opts;\n schema?: Schema;\n};\n\nfunction applyDefaultHeaders(options: Options): void {\n const renovateVersion = pkg.version;\n options.headers = {\n ...options.headers,\n 'user-agent':\n GlobalConfig.get('userAgent') ??\n `RenovateBot/${renovateVersion} (https://github.com/renovatebot/renovate)`,\n };\n}\n\ntype QueueStatsData = Pick<HttpRequestStatsDataPoint, 'queueMs'>;\n\n// Note on types:\n// options.requestType can be either 'json' or 'buffer', but `T` should be\n// `Buffer` in the latter case.\n// We don't declare overload signatures because it's immediately wrapped by\n// `request`.\nasync function gotTask<T>(\n url: string,\n options: SetRequired<GotOptions, 'method'>,\n queueStats: QueueStatsData,\n): Promise<HttpResponse<T>> {\n logger.trace({ url, options }, 'got request');\n\n let duration = 0;\n let statusCode = 0;\n\n try {\n // Cheat the TS compiler using `as` to pick a specific overload.\n // Otherwise it doesn't typecheck.\n const resp = await got<T>(url, { ...options, hooks } as GotJSONOptions);\n statusCode = resp.statusCode;\n duration =\n resp.timings.phases.total ??\n /* istanbul ignore next: can't be tested */ 0;\n return resp;\n } catch (error) {\n if (error instanceof RequestError) {\n statusCode =\n error.response?.statusCode ??\n /* istanbul ignore next: can't be tested */ -1;\n duration =\n error.timings?.phases.total ??\n /* istanbul ignore next: can't be tested */ -1;\n const method = options.method.toUpperCase();\n const code = error.code ?? /* istanbul ignore next */ 'UNKNOWN';\n const retryCount =\n error.request?.retryCount ?? /* istanbul ignore next */ -1;\n logger.debug(\n `${method} ${url} = (code=${code}, statusCode=${statusCode} retryCount=${retryCount}, duration=${duration})`,\n );\n }\n\n throw error;\n } finally {\n HttpStats.write({\n method: options.method,\n url,\n reqMs: duration,\n queueMs: queueStats.queueMs,\n status: statusCode,\n });\n }\n}\n\nexport class Http<Opts extends HttpOptions = HttpOptions> {\n private options?: GotOptions;\n\n constructor(\n protected hostType: string,\n options: HttpOptions = {},\n ) {\n const retryLimit = process.env.NODE_ENV === 'test' ? 0 : 2;\n this.options = merge<GotOptions>(\n options,\n {\n context: { hostType },\n retry: {\n calculateDelay: (retryObject) =>\n this.calculateRetryDelay(retryObject),\n limit: retryLimit,\n maxRetryAfter: 0, // Don't rely on `got` retry-after handling, just let it fail and then we'll handle it\n },\n },\n { isMergeableObject: is.plainObject },\n );\n }\n\n protected async request<T>(\n requestUrl: string | URL,\n httpOptions: InternalHttpOptions,\n ): Promise<HttpResponse<T>> {\n let url = requestUrl.toString();\n if (httpOptions?.baseUrl) {\n url = resolveBaseUrl(httpOptions.baseUrl, url);\n }\n\n let options = merge<SetRequired<GotOptions, 'method'>, InternalHttpOptions>(\n {\n method: 'get',\n ...this.options,\n hostType: this.hostType,\n },\n httpOptions,\n { isMergeableObject: is.plainObject },\n );\n\n logger.trace(`HTTP request: ${options.method.toUpperCase()} ${url}`);\n\n options.hooks = {\n beforeRedirect: [removeAuthorization],\n };\n\n applyDefaultHeaders(options);\n\n if (\n is.undefined(options.readOnly) &&\n ['head', 'get'].includes(options.method)\n ) {\n options.readOnly = true;\n }\n\n const hostRule = findMatchingRule(url, options);\n options = applyHostRule(url, options, hostRule);\n if (options.enabled === false) {\n logger.debug(`Host is disabled - rejecting request. HostUrl: ${url}`);\n throw new Error(HOST_DISABLED);\n }\n options = applyAuthorization(options);\n options.timeout ??= 60000;\n\n const { cacheProvider } = options;\n const cachedResponse = await cacheProvider?.bypassServer<T>(url);\n if (cachedResponse) {\n return cachedResponse;\n }\n\n const memCacheKey =\n options.memCache !== false &&\n (options.method === 'get' || options.method === 'head')\n ? hash(\n `got-${JSON.stringify({\n url,\n headers: options.headers,\n method: options.method,\n })}`,\n )\n : null;\n\n let resPromise: Promise<HttpResponse<T>> | null = null;\n\n // Cache GET requests unless memCache=false\n if (memCacheKey) {\n resPromise = memCache.get(memCacheKey);\n }\n\n // istanbul ignore else: no cache tests\n if (!resPromise) {\n if (cacheProvider) {\n await cacheProvider.setCacheHeaders(url, options);\n }\n\n const startTime = Date.now();\n const httpTask: GotTask<T> = () => {\n const queueMs = Date.now() - startTime;\n return gotTask(url, options, { queueMs });\n };\n\n const throttle = getThrottle(url);\n const throttledTask: GotTask<T> = throttle\n ? () => throttle.add<HttpResponse<T>>(httpTask)\n : httpTask;\n\n const queue = getQueue(url);\n const queuedTask: GotTask<T> = queue\n ? () => queue.add<HttpResponse<T>>(throttledTask)\n : throttledTask;\n\n const { maxRetryAfter = 60 } = hostRule;\n resPromise = wrapWithRetry(queuedTask, url, getRetryAfter, maxRetryAfter);\n\n if (memCacheKey) {\n memCache.set(memCacheKey, resPromise);\n }\n }\n\n try {\n const res = await resPromise;\n const deepCopyNeeded = !!memCacheKey && res.statusCode !== 304;\n const resCopy = copyResponse(res, deepCopyNeeded);\n resCopy.authorization = !!options?.headers?.authorization;\n\n if (cacheProvider) {\n return await cacheProvider.wrapServerResponse(url, resCopy);\n }\n\n return resCopy;\n } catch (err) {\n const { abortOnError, abortIgnoreStatusCodes } = options;\n if (abortOnError && !abortIgnoreStatusCodes?.includes(err.statusCode)) {\n throw new ExternalHostError(err);\n }\n\n const staleResponse = await cacheProvider?.bypassServer<T>(url, true);\n if (staleResponse) {\n logger.debug(\n { err },\n `Request error: returning stale cache instead for ${url}`,\n );\n return staleResponse;\n }\n\n throw err;\n }\n }\n\n protected calculateRetryDelay({ computedValue }: RetryObject): number {\n return computedValue;\n }\n\n get(url: string, options: HttpOptions = {}): Promise<HttpResponse> {\n return this.request<string>(url, options);\n }\n\n head(url: string, options: HttpOptions = {}): Promise<HttpResponse> {\n return this.request<string>(url, { ...options, method: 'head' });\n }\n\n getBuffer(\n url: string,\n options: HttpOptions = {},\n ): Promise<HttpResponse<Buffer>> {\n return this.request<Buffer>(url, {\n ...options,\n responseType: 'buffer',\n });\n }\n\n private async requestJson<ResT = unknown>(\n method: InternalHttpOptions['method'],\n { url, httpOptions: requestOptions, schema }: HttpFnArgs<Opts, ResT>,\n ): Promise<HttpResponse<ResT>> {\n const { body, ...httpOptions } = { ...requestOptions };\n const opts: InternalHttpOptions = {\n ...httpOptions,\n method,\n responseType: 'json',\n };\n // signal that we expect a json response\n opts.headers = {\n accept: 'application/json',\n ...opts.headers,\n };\n if (body) {\n opts.json = body;\n }\n const res = await this.request<ResT>(url, opts);\n\n if (!schema) {\n return res;\n }\n\n res.body = await schema.parseAsync(res.body);\n return res;\n }\n\n private resolveArgs<ResT = unknown>(\n arg1: string,\n arg2: Opts | ZodType<ResT> | undefined,\n arg3: ZodType<ResT> | undefined,\n ): HttpFnArgs<Opts, ResT> {\n const res: HttpFnArgs<Opts, ResT> = { url: arg1 };\n\n if (arg2 instanceof ZodType) {\n res.schema = arg2;\n } else if (arg2) {\n res.httpOptions = arg2;\n }\n\n if (arg3) {\n res.schema = arg3;\n }\n\n return res;\n }\n\n async getPlain(url: string, options?: Opts): Promise<HttpResponse> {\n const opt = options ?? {};\n return await this.get(url, {\n headers: {\n Accept: 'text/plain',\n },\n ...opt,\n });\n }\n\n /**\n * @deprecated use `getYaml` instead\n */\n async getYamlUnchecked<ResT>(\n url: string,\n options?: Opts,\n ): Promise<HttpResponse<ResT>> {\n const res = await this.get(url, options);\n const body = parseSingleYaml<ResT>(res.body);\n return { ...res, body };\n }\n\n async getYaml<Schema extends ZodType<any, any, any>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n async getYaml<Schema extends ZodType<any, any, any>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n async getYaml<Schema extends ZodType<any, any, any>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<Infer<Schema>>> {\n const url = arg1;\n let schema: Schema;\n let httpOptions: Opts | undefined;\n if (arg3) {\n schema = arg3;\n httpOptions = arg2 as Opts;\n } else {\n schema = arg2 as Schema;\n }\n\n const opts: InternalHttpOptions = {\n ...httpOptions,\n method: 'get',\n };\n\n const res = await this.get(url, opts);\n const body = await schema.parseAsync(parseSingleYaml(res.body));\n return { ...res, body };\n }\n\n getYamlSafe<\n ResT extends NonNullable<unknown>,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n >(url: string, schema: Schema): AsyncResult<Infer<Schema>, SafeJsonError>;\n getYamlSafe<\n ResT extends NonNullable<unknown>,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n >(\n url: string,\n options: Opts,\n schema: Schema,\n ): AsyncResult<Infer<Schema>, SafeJsonError>;\n getYamlSafe<\n ResT extends NonNullable<unknown>,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n >(\n arg1: string,\n arg2: Opts | Schema,\n arg3?: Schema,\n ): AsyncResult<ResT, SafeJsonError> {\n const url = arg1;\n let schema: Schema;\n let httpOptions: Opts | undefined;\n if (arg3) {\n schema = arg3;\n httpOptions = arg2 as Opts;\n } else {\n schema = arg2 as Schema;\n }\n\n let res: AsyncResult<HttpResponse<ResT>, SafeJsonError>;\n if (httpOptions) {\n res = Result.wrap(this.getYaml(url, httpOptions, schema));\n } else {\n res = Result.wrap(this.getYaml(url, schema));\n }\n\n return res.transform((response) => Result.ok(response.body));\n }\n\n /**\n * Request JSON and return the response without any validation.\n *\n * The usage of this method is discouraged, please use `getJson` instead.\n *\n * If you're new to Zod schema validation library:\n * - consult the [documentation of Zod library](https://github.com/colinhacks/zod?tab=readme-ov-file#basic-usage)\n * - search the Renovate codebase for 'zod' module usage\n * - take a look at the `schema-utils.ts` file for Renovate-specific schemas and utilities\n */\n getJsonUnchecked<ResT = unknown>(\n url: string,\n options?: Opts,\n ): Promise<HttpResponse<ResT>> {\n return this.requestJson<ResT>('get', { url, httpOptions: options });\n }\n\n /**\n * Request JSON with a Zod schema for the response,\n * throwing an error if the response is not valid.\n *\n * @param url\n * @param schema Zod schema for the response\n */\n getJson<Schema extends ZodType<any, any, any>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n getJson<Schema extends ZodType<any, any, any>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n getJson<Schema extends ZodType<any, any, any>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<Infer<Schema>>> {\n const args = this.resolveArgs<Infer<Schema>>(arg1, arg2, arg3);\n return this.requestJson<Infer<Schema>>('get', args);\n }\n\n /**\n * Request JSON with a Zod schema for the response,\n * wrapping response data in a `Result` class.\n *\n * @param url\n * @param schema Zod schema for the response\n */\n getJsonSafe<ResT extends NonNullable<unknown>, Schema extends ZodType<ResT>>(\n url: string,\n schema: Schema,\n ): AsyncResult<Infer<Schema>, SafeJsonError>;\n getJsonSafe<ResT extends NonNullable<unknown>, Schema extends ZodType<ResT>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): AsyncResult<Infer<Schema>, SafeJsonError>;\n getJsonSafe<ResT extends NonNullable<unknown>, Schema extends ZodType<ResT>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): AsyncResult<ResT, SafeJsonError> {\n const args = this.resolveArgs<ResT>(arg1, arg2, arg3);\n return Result.wrap(this.requestJson<ResT>('get', args)).transform(\n (response) => Result.ok(response.body),\n );\n }\n\n headJson(url: string, httpOptions?: Opts): Promise<HttpResponse<never>> {\n return this.requestJson<never>('head', { url, httpOptions });\n }\n\n postJson<T>(url: string, options?: Opts): Promise<HttpResponse<T>>;\n postJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n postJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n postJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('post', args);\n }\n\n putJson<T>(url: string, options?: Opts): Promise<HttpResponse<T>>;\n putJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n putJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n putJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: ZodType,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('put', args);\n }\n\n patchJson<T>(url: string, options?: Opts): Promise<HttpResponse<T>>;\n patchJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n patchJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n patchJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('patch', args);\n }\n\n deleteJson<T>(url: string, options?: Opts): Promise<HttpResponse<T>>;\n deleteJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n deleteJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n deleteJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('delete', args);\n }\n\n stream(url: string, options?: HttpOptions): NodeJS.ReadableStream {\n // TODO: fix types (#22198)\n let combinedOptions: any = {\n method: 'get',\n ...this.options,\n hostType: this.hostType,\n ...options,\n };\n\n let resolvedUrl = url;\n // istanbul ignore else: needs test\n if (options?.baseUrl) {\n resolvedUrl = resolveBaseUrl(options.baseUrl, url);\n }\n\n applyDefaultHeaders(combinedOptions);\n\n if (\n is.undefined(combinedOptions.readOnly) &&\n ['head', 'get'].includes(combinedOptions.method)\n ) {\n combinedOptions.readOnly = true;\n }\n\n const hostRule = findMatchingRule(url, combinedOptions);\n combinedOptions = applyHostRule(resolvedUrl, combinedOptions, hostRule);\n if (combinedOptions.enabled === false) {\n throw new Error(HOST_DISABLED);\n }\n combinedOptions = applyAuthorization(combinedOptions);\n\n return got.stream(resolvedUrl, combinedOptions);\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/util/http/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport merge from 'deepmerge';\nimport type { Options, RetryObject } from 'got';\nimport got, { RequestError } from 'got';\nimport type { SetRequired } from 'type-fest';\nimport type { infer as Infer, ZodError } from 'zod';\nimport { ZodType } from 'zod';\nimport { GlobalConfig } from '../../config/global';\nimport { HOST_DISABLED } from '../../constants/error-messages';\nimport { pkg } from '../../expose.cjs';\nimport { logger } from '../../logger';\nimport { ExternalHostError } from '../../types/errors/external-host-error';\nimport * as memCache from '../cache/memory';\nimport { hash } from '../hash';\nimport { type AsyncResult, Result } from '../result';\nimport { type HttpRequestStatsDataPoint, HttpStats } from '../stats';\nimport { resolveBaseUrl } from '../url';\nimport { parseSingleYaml } from '../yaml';\nimport { applyAuthorization, removeAuthorization } from './auth';\nimport { hooks } from './hooks';\nimport { applyHostRule, findMatchingRule } from './host-rules';\nimport { getQueue } from './queue';\nimport { getRetryAfter, wrapWithRetry } from './retry-after';\nimport { getThrottle } from './throttle';\nimport type {\n GotJSONOptions,\n GotOptions,\n GotTask,\n HttpOptions,\n HttpResponse,\n InternalHttpOptions,\n} from './types';\n// TODO: refactor code to remove this (#9651)\nimport './legacy';\nimport { copyResponse } from './util';\n\nexport { RequestError as HttpError };\n\nexport class EmptyResultError extends Error {}\nexport type SafeJsonError = RequestError | ZodError | EmptyResultError;\n\ninterface HttpFnArgs<\n Opts extends HttpOptions,\n ResT = unknown,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n> {\n url: string;\n httpOptions?: Opts;\n schema?: Schema;\n}\n\nfunction applyDefaultHeaders(options: Options): void {\n const renovateVersion = pkg.version;\n options.headers = {\n ...options.headers,\n 'user-agent':\n GlobalConfig.get('userAgent') ??\n `RenovateBot/${renovateVersion} (https://github.com/renovatebot/renovate)`,\n };\n}\n\ntype QueueStatsData = Pick<HttpRequestStatsDataPoint, 'queueMs'>;\n\n// Note on types:\n// options.requestType can be either 'json' or 'buffer', but `T` should be\n// `Buffer` in the latter case.\n// We don't declare overload signatures because it's immediately wrapped by\n// `request`.\nasync function gotTask<T>(\n url: string,\n options: SetRequired<GotOptions, 'method'>,\n queueStats: QueueStatsData,\n): Promise<HttpResponse<T>> {\n logger.trace({ url, options }, 'got request');\n\n let duration = 0;\n let statusCode = 0;\n\n try {\n // Cheat the TS compiler using `as` to pick a specific overload.\n // Otherwise it doesn't typecheck.\n const resp = await got<T>(url, { ...options, hooks } as GotJSONOptions);\n statusCode = resp.statusCode;\n duration =\n resp.timings.phases.total ??\n /* istanbul ignore next: can't be tested */ 0;\n return resp;\n } catch (error) {\n if (error instanceof RequestError) {\n statusCode =\n error.response?.statusCode ??\n /* istanbul ignore next: can't be tested */ -1;\n duration =\n error.timings?.phases.total ??\n /* istanbul ignore next: can't be tested */ -1;\n const method = options.method.toUpperCase();\n const code = error.code ?? /* istanbul ignore next */ 'UNKNOWN';\n const retryCount =\n error.request?.retryCount ?? /* istanbul ignore next */ -1;\n logger.debug(\n `${method} ${url} = (code=${code}, statusCode=${statusCode} retryCount=${retryCount}, duration=${duration})`,\n );\n }\n\n throw error;\n } finally {\n HttpStats.write({\n method: options.method,\n url,\n reqMs: duration,\n queueMs: queueStats.queueMs,\n status: statusCode,\n });\n }\n}\n\nexport class Http<Opts extends HttpOptions = HttpOptions> {\n private options?: GotOptions;\n\n constructor(\n protected hostType: string,\n options: HttpOptions = {},\n ) {\n const retryLimit = process.env.NODE_ENV === 'test' ? 0 : 2;\n this.options = merge<GotOptions>(\n options,\n {\n context: { hostType },\n retry: {\n calculateDelay: (retryObject) =>\n this.calculateRetryDelay(retryObject),\n limit: retryLimit,\n maxRetryAfter: 0, // Don't rely on `got` retry-after handling, just let it fail and then we'll handle it\n },\n },\n { isMergeableObject: is.plainObject },\n );\n }\n\n protected async request<T>(\n requestUrl: string | URL,\n httpOptions: InternalHttpOptions,\n ): Promise<HttpResponse<T>> {\n let url = requestUrl.toString();\n if (httpOptions?.baseUrl) {\n url = resolveBaseUrl(httpOptions.baseUrl, url);\n }\n\n let options = merge<SetRequired<GotOptions, 'method'>, InternalHttpOptions>(\n {\n method: 'get',\n ...this.options,\n hostType: this.hostType,\n },\n httpOptions,\n { isMergeableObject: is.plainObject },\n );\n\n logger.trace(`HTTP request: ${options.method.toUpperCase()} ${url}`);\n\n options.hooks = {\n beforeRedirect: [removeAuthorization],\n };\n\n applyDefaultHeaders(options);\n\n if (\n is.undefined(options.readOnly) &&\n ['head', 'get'].includes(options.method)\n ) {\n options.readOnly = true;\n }\n\n const hostRule = findMatchingRule(url, options);\n options = applyHostRule(url, options, hostRule);\n if (options.enabled === false) {\n logger.debug(`Host is disabled - rejecting request. HostUrl: ${url}`);\n throw new Error(HOST_DISABLED);\n }\n options = applyAuthorization(options);\n options.timeout ??= 60000;\n\n const { cacheProvider } = options;\n const cachedResponse = await cacheProvider?.bypassServer<T>(url);\n if (cachedResponse) {\n return cachedResponse;\n }\n\n const memCacheKey =\n options.memCache !== false &&\n (options.method === 'get' || options.method === 'head')\n ? hash(\n `got-${JSON.stringify({\n url,\n headers: options.headers,\n method: options.method,\n })}`,\n )\n : null;\n\n let resPromise: Promise<HttpResponse<T>> | null = null;\n\n // Cache GET requests unless memCache=false\n if (memCacheKey) {\n resPromise = memCache.get(memCacheKey);\n }\n\n // istanbul ignore else: no cache tests\n if (!resPromise) {\n if (cacheProvider) {\n await cacheProvider.setCacheHeaders(url, options);\n }\n\n const startTime = Date.now();\n const httpTask: GotTask<T> = () => {\n const queueMs = Date.now() - startTime;\n return gotTask(url, options, { queueMs });\n };\n\n const throttle = getThrottle(url);\n const throttledTask: GotTask<T> = throttle\n ? () => throttle.add<HttpResponse<T>>(httpTask)\n : httpTask;\n\n const queue = getQueue(url);\n const queuedTask: GotTask<T> = queue\n ? () => queue.add<HttpResponse<T>>(throttledTask)\n : throttledTask;\n\n const { maxRetryAfter = 60 } = hostRule;\n resPromise = wrapWithRetry(queuedTask, url, getRetryAfter, maxRetryAfter);\n\n if (memCacheKey) {\n memCache.set(memCacheKey, resPromise);\n }\n }\n\n try {\n const res = await resPromise;\n const deepCopyNeeded = !!memCacheKey && res.statusCode !== 304;\n const resCopy = copyResponse(res, deepCopyNeeded);\n resCopy.authorization = !!options?.headers?.authorization;\n\n if (cacheProvider) {\n return await cacheProvider.wrapServerResponse(url, resCopy);\n }\n\n return resCopy;\n } catch (err) {\n const { abortOnError, abortIgnoreStatusCodes } = options;\n if (abortOnError && !abortIgnoreStatusCodes?.includes(err.statusCode)) {\n throw new ExternalHostError(err);\n }\n\n const staleResponse = await cacheProvider?.bypassServer<T>(url, true);\n if (staleResponse) {\n logger.debug(\n { err },\n `Request error: returning stale cache instead for ${url}`,\n );\n return staleResponse;\n }\n\n throw err;\n }\n }\n\n protected calculateRetryDelay({ computedValue }: RetryObject): number {\n return computedValue;\n }\n\n get(url: string, options: HttpOptions = {}): Promise<HttpResponse> {\n return this.request<string>(url, options);\n }\n\n head(url: string, options: HttpOptions = {}): Promise<HttpResponse> {\n return this.request<string>(url, { ...options, method: 'head' });\n }\n\n getBuffer(\n url: string,\n options: HttpOptions = {},\n ): Promise<HttpResponse<Buffer>> {\n return this.request<Buffer>(url, {\n ...options,\n responseType: 'buffer',\n });\n }\n\n private async requestJson<ResT = unknown>(\n method: InternalHttpOptions['method'],\n { url, httpOptions: requestOptions, schema }: HttpFnArgs<Opts, ResT>,\n ): Promise<HttpResponse<ResT>> {\n const { body, ...httpOptions } = { ...requestOptions };\n const opts: InternalHttpOptions = {\n ...httpOptions,\n method,\n responseType: 'json',\n };\n // signal that we expect a json response\n opts.headers = {\n accept: 'application/json',\n ...opts.headers,\n };\n if (body) {\n opts.json = body;\n }\n const res = await this.request<ResT>(url, opts);\n\n if (!schema) {\n return res;\n }\n\n res.body = await schema.parseAsync(res.body);\n return res;\n }\n\n private resolveArgs<ResT = unknown>(\n arg1: string,\n arg2: Opts | ZodType<ResT> | undefined,\n arg3: ZodType<ResT> | undefined,\n ): HttpFnArgs<Opts, ResT> {\n const res: HttpFnArgs<Opts, ResT> = { url: arg1 };\n\n if (arg2 instanceof ZodType) {\n res.schema = arg2;\n } else if (arg2) {\n res.httpOptions = arg2;\n }\n\n if (arg3) {\n res.schema = arg3;\n }\n\n return res;\n }\n\n async getPlain(url: string, options?: Opts): Promise<HttpResponse> {\n const opt = options ?? {};\n return await this.get(url, {\n headers: {\n Accept: 'text/plain',\n },\n ...opt,\n });\n }\n\n /**\n * @deprecated use `getYaml` instead\n */\n async getYamlUnchecked<ResT>(\n url: string,\n options?: Opts,\n ): Promise<HttpResponse<ResT>> {\n const res = await this.get(url, options);\n const body = parseSingleYaml<ResT>(res.body);\n return { ...res, body };\n }\n\n async getYaml<Schema extends ZodType<any, any, any>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n async getYaml<Schema extends ZodType<any, any, any>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n async getYaml<Schema extends ZodType<any, any, any>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<Infer<Schema>>> {\n const url = arg1;\n let schema: Schema;\n let httpOptions: Opts | undefined;\n if (arg3) {\n schema = arg3;\n httpOptions = arg2 as Opts;\n } else {\n schema = arg2 as Schema;\n }\n\n const opts: InternalHttpOptions = {\n ...httpOptions,\n method: 'get',\n };\n\n const res = await this.get(url, opts);\n const body = await schema.parseAsync(parseSingleYaml(res.body));\n return { ...res, body };\n }\n\n getYamlSafe<\n ResT extends NonNullable<unknown>,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n >(url: string, schema: Schema): AsyncResult<Infer<Schema>, SafeJsonError>;\n getYamlSafe<\n ResT extends NonNullable<unknown>,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n >(\n url: string,\n options: Opts,\n schema: Schema,\n ): AsyncResult<Infer<Schema>, SafeJsonError>;\n getYamlSafe<\n ResT extends NonNullable<unknown>,\n Schema extends ZodType<ResT> = ZodType<ResT>,\n >(\n arg1: string,\n arg2: Opts | Schema,\n arg3?: Schema,\n ): AsyncResult<ResT, SafeJsonError> {\n const url = arg1;\n let schema: Schema;\n let httpOptions: Opts | undefined;\n if (arg3) {\n schema = arg3;\n httpOptions = arg2 as Opts;\n } else {\n schema = arg2 as Schema;\n }\n\n let res: AsyncResult<HttpResponse<ResT>, SafeJsonError>;\n if (httpOptions) {\n res = Result.wrap(this.getYaml(url, httpOptions, schema));\n } else {\n res = Result.wrap(this.getYaml(url, schema));\n }\n\n return res.transform((response) => Result.ok(response.body));\n }\n\n /**\n * Request JSON and return the response without any validation.\n *\n * The usage of this method is discouraged, please use `getJson` instead.\n *\n * If you're new to Zod schema validation library:\n * - consult the [documentation of Zod library](https://github.com/colinhacks/zod?tab=readme-ov-file#basic-usage)\n * - search the Renovate codebase for 'zod' module usage\n * - take a look at the `schema-utils.ts` file for Renovate-specific schemas and utilities\n */\n getJsonUnchecked<ResT = unknown>(\n url: string,\n options?: Opts,\n ): Promise<HttpResponse<ResT>> {\n return this.requestJson<ResT>('get', { url, httpOptions: options });\n }\n\n /**\n * Request JSON with a Zod schema for the response,\n * throwing an error if the response is not valid.\n *\n * @param url\n * @param schema Zod schema for the response\n */\n getJson<Schema extends ZodType<any, any, any>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n getJson<Schema extends ZodType<any, any, any>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n getJson<Schema extends ZodType<any, any, any>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<Infer<Schema>>> {\n const args = this.resolveArgs<Infer<Schema>>(arg1, arg2, arg3);\n return this.requestJson<Infer<Schema>>('get', args);\n }\n\n /**\n * Request JSON with a Zod schema for the response,\n * wrapping response data in a `Result` class.\n *\n * @param url\n * @param schema Zod schema for the response\n */\n getJsonSafe<ResT extends NonNullable<unknown>, Schema extends ZodType<ResT>>(\n url: string,\n schema: Schema,\n ): AsyncResult<Infer<Schema>, SafeJsonError>;\n getJsonSafe<ResT extends NonNullable<unknown>, Schema extends ZodType<ResT>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): AsyncResult<Infer<Schema>, SafeJsonError>;\n getJsonSafe<ResT extends NonNullable<unknown>, Schema extends ZodType<ResT>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): AsyncResult<ResT, SafeJsonError> {\n const args = this.resolveArgs<ResT>(arg1, arg2, arg3);\n return Result.wrap(this.requestJson<ResT>('get', args)).transform(\n (response) => Result.ok(response.body),\n );\n }\n\n headJson(url: string, httpOptions?: Opts): Promise<HttpResponse<never>> {\n return this.requestJson<never>('head', { url, httpOptions });\n }\n\n postJson<T>(url: string, options?: Opts): Promise<HttpResponse<T>>;\n postJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n postJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n postJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('post', args);\n }\n\n putJson<T>(url: string, options?: Opts): Promise<HttpResponse<T>>;\n putJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n putJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n putJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: ZodType,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('put', args);\n }\n\n patchJson<T>(url: string, options?: Opts): Promise<HttpResponse<T>>;\n patchJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n patchJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n patchJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('patch', args);\n }\n\n deleteJson<T>(url: string, options?: Opts): Promise<HttpResponse<T>>;\n deleteJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n deleteJson<T, Schema extends ZodType<T> = ZodType<T>>(\n url: string,\n options: Opts,\n schema: Schema,\n ): Promise<HttpResponse<Infer<Schema>>>;\n deleteJson<T = unknown, Schema extends ZodType<T> = ZodType<T>>(\n arg1: string,\n arg2?: Opts | Schema,\n arg3?: Schema,\n ): Promise<HttpResponse<T>> {\n const args = this.resolveArgs(arg1, arg2, arg3);\n return this.requestJson<T>('delete', args);\n }\n\n stream(url: string, options?: HttpOptions): NodeJS.ReadableStream {\n // TODO: fix types (#22198)\n let combinedOptions: any = {\n method: 'get',\n ...this.options,\n hostType: this.hostType,\n ...options,\n };\n\n let resolvedUrl = url;\n // istanbul ignore else: needs test\n if (options?.baseUrl) {\n resolvedUrl = resolveBaseUrl(options.baseUrl, url);\n }\n\n applyDefaultHeaders(combinedOptions);\n\n if (\n is.undefined(combinedOptions.readOnly) &&\n ['head', 'get'].includes(combinedOptions.method)\n ) {\n combinedOptions.readOnly = true;\n }\n\n const hostRule = findMatchingRule(url, combinedOptions);\n combinedOptions = applyHostRule(resolvedUrl, combinedOptions, hostRule);\n if (combinedOptions.enabled === false) {\n throw new Error(HOST_DISABLED);\n }\n combinedOptions = applyAuthorization(combinedOptions);\n\n return got.stream(resolvedUrl, combinedOptions);\n }\n}\n"]}
|
@@ -7,7 +7,7 @@ export type GotContextOptions = {
|
|
7
7
|
export type GotOptions = GotBufferOptions | GotJSONOptions;
|
8
8
|
export type GotBufferOptions = OptionsOfBufferResponseBody & GotExtraOptions;
|
9
9
|
export type GotJSONOptions = OptionsOfJSONResponseBody & GotExtraOptions;
|
10
|
-
export
|
10
|
+
export interface GotExtraOptions {
|
11
11
|
abortOnError?: boolean;
|
12
12
|
abortIgnoreStatusCodes?: number[];
|
13
13
|
token?: string;
|
@@ -16,7 +16,7 @@ export type GotExtraOptions = {
|
|
16
16
|
memCache?: boolean;
|
17
17
|
noAuth?: boolean;
|
18
18
|
context?: GotContextOptions;
|
19
|
-
}
|
19
|
+
}
|
20
20
|
export interface RequestStats {
|
21
21
|
method: string;
|
22
22
|
url: string;
|
@@ -25,9 +25,7 @@ export interface RequestStats {
|
|
25
25
|
statusCode: number;
|
26
26
|
}
|
27
27
|
export type OutgoingHttpHeaders = Record<string, string | string[] | undefined>;
|
28
|
-
export
|
29
|
-
[k: string]: unknown;
|
30
|
-
}
|
28
|
+
export type GraphqlVariables = Record<string, unknown>;
|
31
29
|
export interface GraphqlOptions {
|
32
30
|
variables?: GraphqlVariables;
|
33
31
|
paginate?: boolean;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/util/http/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { IncomingHttpHeaders } from 'node:http';\nimport type {\n OptionsOfBufferResponseBody,\n OptionsOfJSONResponseBody,\n ParseJsonFunction,\n} from 'got';\nimport type { HttpCacheProvider } from './cache/types';\n\nexport type GotContextOptions = {\n authType?: string;\n} & Record<string, unknown>;\n\n// TODO: Move options to context\nexport type GotOptions = GotBufferOptions | GotJSONOptions;\nexport type GotBufferOptions = OptionsOfBufferResponseBody & GotExtraOptions;\nexport type GotJSONOptions = OptionsOfJSONResponseBody & GotExtraOptions;\n\nexport
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/util/http/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { IncomingHttpHeaders } from 'node:http';\nimport type {\n OptionsOfBufferResponseBody,\n OptionsOfJSONResponseBody,\n ParseJsonFunction,\n} from 'got';\nimport type { HttpCacheProvider } from './cache/types';\n\nexport type GotContextOptions = {\n authType?: string;\n} & Record<string, unknown>;\n\n// TODO: Move options to context\nexport type GotOptions = GotBufferOptions | GotJSONOptions;\nexport type GotBufferOptions = OptionsOfBufferResponseBody & GotExtraOptions;\nexport type GotJSONOptions = OptionsOfJSONResponseBody & GotExtraOptions;\n\nexport interface GotExtraOptions {\n abortOnError?: boolean;\n abortIgnoreStatusCodes?: number[];\n token?: string;\n hostType?: string;\n enabled?: boolean;\n memCache?: boolean;\n noAuth?: boolean;\n context?: GotContextOptions;\n}\n\nexport interface RequestStats {\n method: string;\n url: string;\n duration: number;\n queueDuration: number;\n statusCode: number;\n}\n\nexport type OutgoingHttpHeaders = Record<string, string | string[] | undefined>;\n\nexport type GraphqlVariables = Record<string, unknown>;\n\nexport interface GraphqlOptions {\n variables?: GraphqlVariables;\n paginate?: boolean;\n count?: number;\n limit?: number;\n cursor?: string | null;\n acceptHeader?: string;\n token?: string;\n readOnly?: boolean;\n}\n\nexport interface HttpOptions {\n body?: any;\n username?: string;\n password?: string;\n baseUrl?: string;\n headers?: OutgoingHttpHeaders;\n\n /**\n * Do not use authentication\n */\n noAuth?: boolean;\n\n throwHttpErrors?: boolean;\n\n token?: string;\n memCache?: boolean;\n cacheProvider?: HttpCacheProvider;\n readOnly?: boolean;\n}\n\nexport interface InternalHttpOptions extends HttpOptions {\n json?: HttpOptions['body'];\n responseType?: 'json' | 'buffer';\n method?: 'get' | 'post' | 'put' | 'patch' | 'delete' | 'head';\n parseJson?: ParseJsonFunction;\n}\n\nexport interface HttpHeaders extends IncomingHttpHeaders {\n link?: string | undefined;\n}\n\nexport interface HttpResponse<T = string> {\n statusCode: number;\n body: T;\n headers: HttpHeaders;\n authorization?: boolean;\n}\n\nexport type Task<T> = () => Promise<T>;\nexport type GotTask<T> = Task<HttpResponse<T>>;\n\nexport interface ThrottleLimitRule {\n matchHost: string;\n throttleMs: number;\n}\n\nexport interface ConcurrencyLimitRule {\n matchHost: string;\n concurrency: number;\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pretty-time.js","sourceRoot":"","sources":["../../lib/util/pretty-time.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"pretty-time.js","sourceRoot":"","sources":["../../lib/util/pretty-time.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { DateTime } from 'luxon';\nimport ms from 'ms';\nimport { logger } from '../logger';\nimport { regEx } from './regex';\n\nconst splitRegex = regEx(/(.*?[a-z]+)/);\n\nfunction split(time: string): string[] {\n return time\n .split(splitRegex)\n .map((x) => x.trim())\n .filter(is.nonEmptyString);\n}\n\nfunction applyCustomFormat(spec: string): ms.StringValue {\n const monthRegex = regEx(/^(\\d+)\\s*(?:months?|M)$/);\n return spec.replace(\n monthRegex,\n (_, months) => `${months * 30} days`,\n ) as ms.StringValue;\n}\n\nexport function toMs(time: string): number | null {\n try {\n const specs = split(time).map(applyCustomFormat);\n if (!specs.length) {\n logger.debug({ time }, `Invalid time specifier: '${time}'`);\n return null;\n }\n\n let totalMillis = 0;\n for (const spec of specs) {\n const millis = ms(spec);\n if (!is.number(millis)) {\n logger.debug({ time }, `Invalid time specifier: '${spec}'`);\n return null;\n }\n totalMillis += millis;\n }\n return totalMillis;\n } catch (err) {\n logger.debug({ time, err }, `Invalid time specifier: '${time}'`);\n return null;\n }\n}\n\nconst rangeRegex = regEx(/^(?<operator>(>=|<=|<|>))\\s*(?<age>.*)$/);\n\nexport function satisfiesDateRange(\n date: string,\n range: string,\n): boolean | null {\n const grps = range.trim().match(rangeRegex)?.groups;\n if (!grps) {\n return null;\n }\n\n const { operator, age } = grps;\n const luxonDate = DateTime.fromISO(date, { zone: 'utc' });\n if (!luxonDate.isValid) {\n logger.trace(`Invalid date when computing satisfiesDateRange: '${date}'`);\n return null;\n }\n\n const dateMs = luxonDate.toMillis();\n const ageMs = toMs(age);\n if (!is.number(ageMs)) {\n return null;\n }\n\n const rangeMs = Date.now() - ageMs;\n\n switch (operator) {\n case '>':\n return dateMs < rangeMs;\n case '>=':\n return dateMs <= rangeMs;\n case '<':\n return dateMs > rangeMs;\n case '<=':\n return dateMs >= rangeMs;\n // istanbul ignore next: can never happen\n default:\n return dateMs === rangeMs;\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../../lib/util/schema-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import JSON5 from 'json5';\nimport * as JSONC from 'jsonc-parser';\nimport { DateTime } from 'luxon';\nimport type { JsonArray, JsonValue } from 'type-fest';\nimport {\n type ZodEffects,\n type ZodString,\n type ZodType,\n type ZodTypeDef,\n z,\n} from 'zod';\nimport { logger } from '../logger';\nimport type { PackageDependency } from '../modules/manager/types';\nimport { parse as parseToml } from './toml';\nimport type { YamlOptions } from './yaml';\nimport { parseSingleYaml, parseYaml } from './yaml';\n\ninterface ErrorContext<T> {\n error: z.ZodError;\n input: T;\n}\n\ninterface LooseOpts<T> {\n onError?: (err: ErrorContext<T>) => void;\n}\n\n/**\n * Works like `z.array()`, but drops wrong elements instead of invalidating the whole array.\n *\n * **Important**: non-array inputs are still invalid.\n * Use `LooseArray(...).catch([])` to handle it.\n *\n * @param Elem Schema for array elements\n * @param onError Callback for errors\n * @returns Schema for array\n */\nexport function LooseArray<Schema extends z.ZodTypeAny>(\n Elem: Schema,\n { onError }: LooseOpts<unknown[]> = {},\n): z.ZodEffects<z.ZodArray<z.ZodAny, 'many'>, z.TypeOf<Schema>[], any[]> {\n if (!onError) {\n // Avoid error-related computations inside the loop\n return z.array(z.any()).transform((input) => {\n const output: z.infer<Schema>[] = [];\n for (const x of input) {\n const parsed = Elem.safeParse(x);\n if (parsed.success) {\n output.push(parsed.data);\n }\n }\n return output;\n });\n }\n\n return z.array(z.any()).transform((input) => {\n const output: z.infer<Schema>[] = [];\n const issues: z.ZodIssue[] = [];\n\n for (let idx = 0; idx < input.length; idx += 1) {\n const x = input[idx];\n const parsed = Elem.safeParse(x);\n\n if (parsed.success) {\n output.push(parsed.data);\n continue;\n }\n\n for (const issue of parsed.error.issues) {\n issue.path.unshift(idx);\n issues.push(issue);\n }\n }\n\n if (issues.length) {\n const error = new z.ZodError(issues);\n onError({ error, input });\n }\n\n return output;\n });\n}\n\ntype LooseRecordResult<\n KeySchema extends z.ZodTypeAny,\n ValueSchema extends z.ZodTypeAny,\n> = z.ZodEffects<\n z.ZodRecord<z.ZodString, z.ZodAny>,\n Record<z.TypeOf<KeySchema>, z.TypeOf<ValueSchema>>,\n Record<z.TypeOf<KeySchema>, any>\n>;\n\ntype LooseRecordOpts<\n KeySchema extends z.ZodTypeAny,\n ValueSchema extends z.ZodTypeAny,\n> = LooseOpts<Record<z.TypeOf<KeySchema> | z.TypeOf<ValueSchema>, unknown>>;\n\n/**\n * Works like `z.record()`, but drops wrong elements instead of invalidating the whole record.\n *\n * **Important**: non-record inputs other are still invalid.\n * Use `LooseRecord(...).catch({})` to handle it.\n *\n * @param KeyValue Schema for record keys\n * @param ValueValue Schema for record values\n * @param onError Callback for errors\n * @returns Schema for record\n */\nexport function LooseRecord<ValueSchema extends z.ZodTypeAny>(\n Value: ValueSchema,\n): LooseRecordResult<z.ZodString, ValueSchema>;\nexport function LooseRecord<\n KeySchema extends z.ZodTypeAny,\n ValueSchema extends z.ZodTypeAny,\n>(\n Key: KeySchema,\n Value: ValueSchema,\n): LooseRecordResult<KeySchema, ValueSchema>;\nexport function LooseRecord<ValueSchema extends z.ZodTypeAny>(\n Value: ValueSchema,\n { onError }: LooseRecordOpts<z.ZodString, ValueSchema>,\n): LooseRecordResult<z.ZodString, ValueSchema>;\nexport function LooseRecord<\n KeySchema extends z.ZodTypeAny,\n ValueSchema extends z.ZodTypeAny,\n>(\n Key: KeySchema,\n Value: ValueSchema,\n { onError }: LooseRecordOpts<KeySchema, ValueSchema>,\n): LooseRecordResult<KeySchema, ValueSchema>;\nexport function LooseRecord<\n KeySchema extends z.ZodTypeAny,\n ValueSchema extends z.ZodTypeAny,\n>(\n arg1: ValueSchema | KeySchema,\n arg2?: ValueSchema | LooseOpts<Record<string, unknown>>,\n arg3?: LooseRecordOpts<KeySchema, ValueSchema>,\n): LooseRecordResult<KeySchema, ValueSchema> {\n let Key: z.ZodSchema = z.any();\n let Value: ValueSchema;\n let opts: LooseRecordOpts<KeySchema, ValueSchema> = {};\n if (arg2 && arg3) {\n Key = arg1 as KeySchema;\n Value = arg2 as ValueSchema;\n opts = arg3;\n } else if (arg2) {\n if (arg2 instanceof z.ZodType) {\n Key = arg1 as KeySchema;\n Value = arg2;\n } else {\n Value = arg1 as ValueSchema;\n opts = arg2;\n }\n } else {\n Value = arg1 as ValueSchema;\n }\n\n const { onError } = opts;\n if (!onError) {\n // Avoid error-related computations inside the loop\n return z.record(z.any()).transform((input) => {\n const output: Record<string, z.infer<ValueSchema>> = {};\n for (const [inputKey, inputVal] of Object.entries(input)) {\n const parsedKey = Key.safeParse(inputKey);\n const parsedValue = Value.safeParse(inputVal);\n if (parsedKey.success && parsedValue.success) {\n output[parsedKey.data] = parsedValue.data;\n }\n }\n return output;\n });\n }\n\n return z.record(z.any()).transform((input) => {\n const output: Record<string, z.infer<ValueSchema>> = {};\n const issues: z.ZodIssue[] = [];\n\n for (const [inputKey, inputVal] of Object.entries(input)) {\n const parsedKey = Key.safeParse(inputKey);\n if (!parsedKey.success) {\n for (const issue of parsedKey.error.issues) {\n issue.path.unshift(inputKey);\n issues.push(issue);\n }\n continue;\n }\n\n const parsedValue = Value.safeParse(inputVal);\n if (!parsedValue.success) {\n for (const issue of parsedValue.error.issues) {\n issue.path.unshift(inputKey);\n issues.push(issue);\n }\n continue;\n }\n\n output[parsedKey.data] = parsedValue.data;\n continue;\n }\n\n if (issues.length) {\n const error = new z.ZodError(issues);\n onError({ error, input });\n }\n\n return output;\n });\n}\n\nexport const Json = z.string().transform((str, ctx): JsonValue => {\n try {\n return JSON.parse(str);\n } catch {\n ctx.addIssue({ code: 'custom', message: 'Invalid JSON' });\n return z.NEVER;\n }\n});\ntype Json = z.infer<typeof Json>;\n\nexport const Json5 = z.string().transform((str, ctx): JsonValue => {\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): JsonValue => {\n const errors: JSONC.ParseError[] = [];\n const value = JSONC.parse(str, errors, { allowTrailingComma: true });\n if (errors.length === 0) {\n return value;\n }\n ctx.addIssue({ code: 'custom', message: 'Invalid JSONC' });\n return z.NEVER;\n});\n\nexport const UtcDate = z\n .string({ description: 'ISO 8601 string' })\n .transform((str, ctx): DateTime => {\n const date = DateTime.fromISO(str, { zone: 'utc' });\n if (!date.isValid) {\n ctx.addIssue({ code: 'custom', message: 'Invalid date' });\n return z.NEVER;\n }\n return date;\n });\n\nexport const Yaml = z.string().transform((str, ctx): JsonValue => {\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): JsonArray => {\n try {\n return parseYaml(str) as JsonArray;\n } catch {\n ctx.addIssue({ code: 'custom', message: 'Invalid YAML' });\n return z.NEVER;\n }\n});\n\nexport function multidocYaml(\n opts?: Omit<YamlOptions, 'customSchema'>,\n): ZodEffects<ZodString, JsonArray, string> {\n return z.string().transform((str, ctx): JsonArray => {\n try {\n return parseYaml(str, opts) as JsonArray;\n } catch {\n ctx.addIssue({ code: 'custom', message: 'Invalid YAML' });\n return z.NEVER;\n }\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\nexport function withDepType<\n Output extends PackageDependency[],\n Schema extends ZodType<Output, ZodTypeDef, unknown>,\n>(schema: Schema, depType: string, force: boolean = true): ZodEffects<Schema> {\n return schema.transform((deps) => {\n for (const dep of deps) {\n if (!dep.depType || force) {\n dep.depType = depType;\n }\n }\n return deps;\n });\n}\n\nexport function withDebugMessage<Input, Output>(\n value: Output,\n msg: string,\n): (ctx: { error: z.ZodError; input: Input }) => Output {\n return ({ error: err }) => {\n logger.debug({ err }, msg);\n return value;\n };\n}\n\nexport function withTraceMessage<Input, Output>(\n value: Output,\n msg: string,\n): (ctx: { error: z.ZodError; input: Input }) => Output {\n return ({ error: err }) => {\n logger.trace({ err }, msg);\n return value;\n };\n}\n"]}
|
1
|
+
{"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../../lib/util/schema-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import JSON5 from 'json5';\nimport * as JSONC from 'jsonc-parser';\nimport { DateTime } from 'luxon';\nimport type { JsonArray, JsonValue } from 'type-fest';\nimport {\n type ZodEffects,\n type ZodString,\n type ZodType,\n type ZodTypeDef,\n z,\n} from 'zod';\nimport { logger } from '../logger';\nimport type { PackageDependency } from '../modules/manager/types';\nimport { parse as parseToml } from './toml';\nimport type { YamlOptions } from './yaml';\nimport { parseSingleYaml, parseYaml } from './yaml';\n\ninterface ErrorContext<T> {\n error: z.ZodError;\n input: T;\n}\n\ninterface LooseOpts<T> {\n onError?: (err: ErrorContext<T>) => void;\n}\n\n/**\n * Works like `z.array()`, but drops wrong elements instead of invalidating the whole array.\n *\n * **Important**: non-array inputs are still invalid.\n * Use `LooseArray(...).catch([])` to handle it.\n *\n * @param Elem Schema for array elements\n * @param onError Callback for errors\n * @returns Schema for array\n */\nexport function LooseArray<Schema extends z.ZodTypeAny>(\n Elem: Schema,\n { onError }: LooseOpts<unknown[]> = {},\n): z.ZodEffects<z.ZodArray<z.ZodAny, 'many'>, z.TypeOf<Schema>[], any[]> {\n if (!onError) {\n // Avoid error-related computations inside the loop\n return z.array(z.any()).transform((input) => {\n const output: z.infer<Schema>[] = [];\n for (const x of input) {\n const parsed = Elem.safeParse(x);\n if (parsed.success) {\n output.push(parsed.data);\n }\n }\n return output;\n });\n }\n\n return z.array(z.any()).transform((input) => {\n const output: z.infer<Schema>[] = [];\n const issues: z.ZodIssue[] = [];\n\n for (let idx = 0; idx < input.length; idx += 1) {\n const x = input[idx];\n const parsed = Elem.safeParse(x);\n\n if (parsed.success) {\n output.push(parsed.data);\n continue;\n }\n\n for (const issue of parsed.error.issues) {\n issue.path.unshift(idx);\n issues.push(issue);\n }\n }\n\n if (issues.length) {\n const error = new z.ZodError(issues);\n onError({ error, input });\n }\n\n return output;\n });\n}\n\ntype LooseRecordResult<\n KeySchema extends z.ZodTypeAny,\n ValueSchema extends z.ZodTypeAny,\n> = z.ZodEffects<\n z.ZodRecord<z.ZodString, z.ZodAny>,\n Record<z.TypeOf<KeySchema>, z.TypeOf<ValueSchema>>,\n Record<z.TypeOf<KeySchema>, any>\n>;\n\ntype LooseRecordOpts<\n KeySchema extends z.ZodTypeAny,\n ValueSchema extends z.ZodTypeAny,\n> = LooseOpts<Record<z.TypeOf<KeySchema> | z.TypeOf<ValueSchema>, unknown>>;\n\n/**\n * Works like `z.record()`, but drops wrong elements instead of invalidating the whole record.\n *\n * **Important**: non-record inputs other are still invalid.\n * Use `LooseRecord(...).catch({})` to handle it.\n *\n * @param KeyValue Schema for record keys\n * @param ValueValue Schema for record values\n * @param onError Callback for errors\n * @returns Schema for record\n */\nexport function LooseRecord<ValueSchema extends z.ZodTypeAny>(\n Value: ValueSchema,\n): LooseRecordResult<z.ZodString, ValueSchema>;\nexport function LooseRecord<\n KeySchema extends z.ZodTypeAny,\n ValueSchema extends z.ZodTypeAny,\n>(\n Key: KeySchema,\n Value: ValueSchema,\n): LooseRecordResult<KeySchema, ValueSchema>;\nexport function LooseRecord<ValueSchema extends z.ZodTypeAny>(\n Value: ValueSchema,\n { onError }: LooseRecordOpts<z.ZodString, ValueSchema>,\n): LooseRecordResult<z.ZodString, ValueSchema>;\nexport function LooseRecord<\n KeySchema extends z.ZodTypeAny,\n ValueSchema extends z.ZodTypeAny,\n>(\n Key: KeySchema,\n Value: ValueSchema,\n { onError }: LooseRecordOpts<KeySchema, ValueSchema>,\n): LooseRecordResult<KeySchema, ValueSchema>;\nexport function LooseRecord<\n KeySchema extends z.ZodTypeAny,\n ValueSchema extends z.ZodTypeAny,\n>(\n arg1: ValueSchema | KeySchema,\n arg2?: ValueSchema | LooseOpts<Record<string, unknown>>,\n arg3?: LooseRecordOpts<KeySchema, ValueSchema>,\n): LooseRecordResult<KeySchema, ValueSchema> {\n let Key: z.ZodSchema = z.any();\n let Value: ValueSchema;\n let opts: LooseRecordOpts<KeySchema, ValueSchema> = {};\n if (arg2 && arg3) {\n Key = arg1 as KeySchema;\n Value = arg2 as ValueSchema;\n opts = arg3;\n } else if (arg2) {\n if (arg2 instanceof z.ZodType) {\n Key = arg1 as KeySchema;\n Value = arg2;\n } else {\n Value = arg1 as ValueSchema;\n opts = arg2;\n }\n } else {\n Value = arg1 as ValueSchema;\n }\n\n const { onError } = opts;\n if (!onError) {\n // Avoid error-related computations inside the loop\n return z.record(z.any()).transform((input) => {\n const output: Record<string, z.infer<ValueSchema>> = {};\n for (const [inputKey, inputVal] of Object.entries(input)) {\n const parsedKey = Key.safeParse(inputKey);\n const parsedValue = Value.safeParse(inputVal);\n if (parsedKey.success && parsedValue.success) {\n output[parsedKey.data] = parsedValue.data;\n }\n }\n return output;\n });\n }\n\n return z.record(z.any()).transform((input) => {\n const output: Record<string, z.infer<ValueSchema>> = {};\n const issues: z.ZodIssue[] = [];\n\n for (const [inputKey, inputVal] of Object.entries(input)) {\n const parsedKey = Key.safeParse(inputKey);\n if (!parsedKey.success) {\n for (const issue of parsedKey.error.issues) {\n issue.path.unshift(inputKey);\n issues.push(issue);\n }\n continue;\n }\n\n const parsedValue = Value.safeParse(inputVal);\n if (!parsedValue.success) {\n for (const issue of parsedValue.error.issues) {\n issue.path.unshift(inputKey);\n issues.push(issue);\n }\n continue;\n }\n\n output[parsedKey.data] = parsedValue.data;\n continue;\n }\n\n if (issues.length) {\n const error = new z.ZodError(issues);\n onError({ error, input });\n }\n\n return output;\n });\n}\n\nexport const Json = z.string().transform((str, ctx): JsonValue => {\n try {\n return JSON.parse(str);\n } catch {\n ctx.addIssue({ code: 'custom', message: 'Invalid JSON' });\n return z.NEVER;\n }\n});\ntype Json = z.infer<typeof Json>;\n\nexport const Json5 = z.string().transform((str, ctx): JsonValue => {\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): JsonValue => {\n const errors: JSONC.ParseError[] = [];\n const value = JSONC.parse(str, errors, { allowTrailingComma: true });\n if (errors.length === 0) {\n return value;\n }\n ctx.addIssue({ code: 'custom', message: 'Invalid JSONC' });\n return z.NEVER;\n});\n\nexport const UtcDate = z\n .string({ description: 'ISO 8601 string' })\n .transform((str, ctx): DateTime => {\n const date = DateTime.fromISO(str, { zone: 'utc' });\n if (!date.isValid) {\n ctx.addIssue({ code: 'custom', message: 'Invalid date' });\n return z.NEVER;\n }\n return date;\n });\n\nexport const Yaml = z.string().transform((str, ctx): JsonValue => {\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): JsonArray => {\n try {\n return parseYaml(str) as JsonArray;\n } catch {\n ctx.addIssue({ code: 'custom', message: 'Invalid YAML' });\n return z.NEVER;\n }\n});\n\nexport function multidocYaml(\n opts?: Omit<YamlOptions, 'customSchema'>,\n): ZodEffects<ZodString, JsonArray, string> {\n return z.string().transform((str, ctx): JsonArray => {\n try {\n return parseYaml(str, opts) as JsonArray;\n } catch {\n ctx.addIssue({ code: 'custom', message: 'Invalid YAML' });\n return z.NEVER;\n }\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\nexport function withDepType<\n Output extends PackageDependency[],\n Schema extends ZodType<Output, ZodTypeDef, unknown>,\n>(schema: Schema, depType: string, force = true): ZodEffects<Schema> {\n return schema.transform((deps) => {\n for (const dep of deps) {\n if (!dep.depType || force) {\n dep.depType = depType;\n }\n }\n return deps;\n });\n}\n\nexport function withDebugMessage<Input, Output>(\n value: Output,\n msg: string,\n): (ctx: { error: z.ZodError; input: Input }) => Output {\n return ({ error: err }) => {\n logger.debug({ err }, msg);\n return value;\n };\n}\n\nexport function withTraceMessage<Input, Output>(\n value: Output,\n msg: string,\n): (ctx: { error: z.ZodError; input: Input }) => Output {\n return ({ error: err }) => {\n logger.trace({ err }, msg);\n return value;\n };\n}\n"]}
|
package/dist/util/stats.js
CHANGED
@@ -81,6 +81,7 @@ class PackageCacheStats {
|
|
81
81
|
}
|
82
82
|
}
|
83
83
|
exports.PackageCacheStats = PackageCacheStats;
|
84
|
+
/* eslint-enable @typescript-eslint/consistent-indexed-object-style */
|
84
85
|
class DatasourceCacheStats {
|
85
86
|
static getData() {
|
86
87
|
return (memCache.get('datasource-cache-stats') ?? []);
|
package/dist/util/stats.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../lib/util/stats.ts"],"names":[],"mappings":";;;AAcA,4CAQC;;AAtBD,sCAAmC;AACnC,iEAA2C;AAC3C,+BAAiC;AAYjC,SAAgB,gBAAgB,CAAC,IAAc;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACpD,CAAC;AAED,MAAa,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,UAAkB,EAAE,QAAgB;QAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAkB,cAAc,CAAC,IAAI,EAAE,CAAC;QACjE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,UAAkB,EAClB,QAA0B;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,SAAS;QACd,MAAM,MAAM,GAAsC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAkB,cAAc,CAAC,IAAI,EAAE,CAAC;QACjE,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAAM;QACX,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;QACvC,eAAM,CAAC,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC5C,CAAC;CACF;AAhCD,kCAgCC;AAID,MAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,QAAgB;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAmB,oBAAoB,CAAC,IAAI,EAAE,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAI,QAA0B;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,QAAgB;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAmB,oBAAoB,CAAC,IAAI,EAAE,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAI,QAA0B;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,SAAS;QACd,MAAM,gBAAgB,GACpB,QAAQ,CAAC,GAAG,CAAmB,oBAAoB,CAAC,IAAI,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAE/C,MAAM,gBAAgB,GACpB,QAAQ,CAAC,GAAG,CAAmB,oBAAoB,CAAC,IAAI,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAE/C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,MAAM;QACX,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAC7C,eAAM,CAAC,KAAK,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACnD,CAAC;CACF;AA7CD,8CA6CC;AAgCD,MAAa,oBAAoB;IACvB,MAAM,CAAC,OAAO;QACpB,OAAO,CACL,QAAQ,CAAC,GAAG,CAA6B,wBAAwB,CAAC,IAAI,EAAE,CACzE,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,OAAO,CAAC,IAAgC;QACrD,QAAQ,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,GAAG,CACR,UAAkB,EAClB,WAAmB,EACnB,WAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,IAAI,CACT,UAAkB,EAClB,WAAmB,EACnB,WAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,GAAG,CACR,UAAkB,EAClB,WAAmB,EACnB,WAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,IAAI,CACT,UAAkB,EAClB,WAAmB,EACnB,WAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,SAAS;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAA0B,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC9D,KAAK,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAEzD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,KAAK;gBACxC,GAAG,EAAE,CAAC;gBACN,IAAI,EAAE,CAAC;gBACP,GAAG,EAAE,CAAC;gBACN,IAAI,EAAE,CAAC;aACR,CAAC;YAEF,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;gBAC/D,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC/C,SAAS;YACX,CAAC;YAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;gBAChE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;gBAChD,SAAS;YACX,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;gBAChE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC/C,SAAS;YACX,CAAC;YAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;gBACjE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;gBAChD,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAAM;QACX,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEzC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,eAAM,CAAC,KAAK,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,eAAM,CAAC,KAAK,CAAC,IAAI,EAAE,sCAAsC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF;AA3GD,oDA2GC;AAkCD,MAAa,SAAS;IACpB,MAAM,CAAC,KAAK,CAAC,IAA+B;QAC1C,MAAM,YAAY,GAChB,QAAQ,CAAC,GAAG,CAA8B,eAAe,CAAC,IAAI,EAAE,CAAC;QACnE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,aAAa;QAClB,MAAM,YAAY,GAChB,QAAQ,CAAC,GAAG,CAA8B,eAAe,CAAC,IAAI,EAAE,CAAC;QAEnE,8DAA8D;QAC9D,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAClB,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;YAED,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAClB,OAAO,CAAC,CAAC;YACX,CAAC;YAED,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,SAAS;QACd,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QAE7C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;QAEnC,MAAM,IAAI,GAAgB,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,YAAY,GAAgD,EAAE,CAAC;QAErE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;YAClD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAE9C,MAAM,SAAS,GAAG,IAAA,cAAQ,EAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,4CAA4C,CAAC,CAAC;gBACpE,SAAS;YACX,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;YACjD,MAAM,OAAO,GAAG,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAC;YAEvC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEnC,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;YAEnE,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC9B,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,KAAK,GAAkC,EAAE,CAAC;QAEhD,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAClE,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;YAEhC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAEpD,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAEjD,KAAK,CAAC,QAAQ,CAAC,GAAG;gBAChB,KAAK;gBACL,QAAQ,EAAE,SAAS,CAAC,KAAK;gBACzB,WAAW,EAAE,SAAS,CAAC,QAAQ;gBAC/B,QAAQ,EAAE,SAAS,CAAC,KAAK;gBACzB,UAAU,EAAE,WAAW,CAAC,KAAK;gBAC7B,aAAa,EAAE,WAAW,CAAC,QAAQ;gBACnC,UAAU,EAAE,WAAW,CAAC,KAAK;aAC9B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI;YACJ,WAAW;YACX,YAAY;YACZ,KAAK;YACL,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAM;QACX,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,GACxD,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,eAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACpE,eAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACrD,eAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAChD,CAAC;CACF;AAlGD,8BAkGC;AAWD,SAAS,UAAU,CAAI,GAAsB;IAC3C,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAa,cAAc;IACzB,MAAM,CAAC,OAAO;QACZ,OAAO,QAAQ,CAAC,GAAG,CAAqB,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAW;QACrB,OAAO,CACL,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI;YACvB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;SACR,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAW,EAAE,IAA4B;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAqB,kBAAkB,CAAC,IAAI,EAAE,CAAC;QACzE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAClB,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAW;QAC3B,MAAM,SAAS,GAAG,IAAA,cAAQ,EAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,wCAAwC,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;QACvC,MAAM,OAAO,GAAG,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,GAAW;QAC7B,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC;YACrB,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;YACpB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,GAAW;QAC/B,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC;YACtB,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;YACrB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,GAAW;QAC9B,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YACf,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,GAAW;QAChC,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;YAChB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,MAAM;QACX,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,MAAM,GAA2D,EAAE,CAAC;QACxE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,IAAA,cAAQ,EAAC,GAAG,CAAC,CAAC;YAChC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAE5B,eAAM,CAAC,KAAK,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAChD,CAAC;CACF;AA5FD,wCA4FC","sourcesContent":["import { logger } from '../logger';\nimport * as memCache from './cache/memory';\nimport { parseUrl } from './url';\n\ntype LookupStatsData = Record<string, number[]>;\n\ninterface TimingStatsReport {\n count: number;\n avgMs: number;\n medianMs: number;\n maxMs: number;\n totalMs: number;\n}\n\nexport function makeTimingReport(data: number[]): TimingStatsReport {\n const count = data.length;\n const totalMs = data.reduce((a, c) => a + c, 0);\n const avgMs = count ? Math.round(totalMs / count) : 0;\n const maxMs = Math.max(0, ...data);\n const sorted = data.sort((a, b) => a - b);\n const medianMs = count ? sorted[Math.floor(count / 2)] : 0;\n return { count, avgMs, medianMs, maxMs, totalMs };\n}\n\nexport class LookupStats {\n static write(datasource: string, duration: number): void {\n const data = memCache.get<LookupStatsData>('lookup-stats') ?? {};\n data[datasource] ??= [];\n data[datasource].push(duration);\n memCache.set('lookup-stats', data);\n }\n\n static async wrap<T>(\n datasource: string,\n callback: () => Promise<T>,\n ): Promise<T> {\n const start = Date.now();\n const result = await callback();\n const duration = Date.now() - start;\n LookupStats.write(datasource, duration);\n return result;\n }\n\n static getReport(): Record<string, TimingStatsReport> {\n const report: Record<string, TimingStatsReport> = {};\n const data = memCache.get<LookupStatsData>('lookup-stats') ?? {};\n for (const [datasource, durations] of Object.entries(data)) {\n report[datasource] = makeTimingReport(durations);\n }\n return report;\n }\n\n static report(): void {\n const report = LookupStats.getReport();\n logger.debug(report, 'Lookup statistics');\n }\n}\n\ntype PackageCacheData = number[];\n\nexport class PackageCacheStats {\n static writeSet(duration: number): void {\n const data = memCache.get<PackageCacheData>('package-cache-sets') ?? [];\n data.push(duration);\n memCache.set('package-cache-sets', data);\n }\n\n static async wrapSet<T>(callback: () => Promise<T>): Promise<T> {\n const start = Date.now();\n const result = await callback();\n const duration = Date.now() - start;\n PackageCacheStats.writeSet(duration);\n return result;\n }\n\n static writeGet(duration: number): void {\n const data = memCache.get<PackageCacheData>('package-cache-gets') ?? [];\n data.push(duration);\n memCache.set('package-cache-gets', data);\n }\n\n static async wrapGet<T>(callback: () => Promise<T>): Promise<T> {\n const start = Date.now();\n const result = await callback();\n const duration = Date.now() - start;\n PackageCacheStats.writeGet(duration);\n return result;\n }\n\n static getReport(): { get: TimingStatsReport; set: TimingStatsReport } {\n const packageCacheGets =\n memCache.get<PackageCacheData>('package-cache-gets') ?? [];\n const get = makeTimingReport(packageCacheGets);\n\n const packageCacheSets =\n memCache.get<PackageCacheData>('package-cache-sets') ?? [];\n const set = makeTimingReport(packageCacheSets);\n\n return { get, set };\n }\n\n static report(): void {\n const report = PackageCacheStats.getReport();\n logger.debug(report, 'Package cache statistics');\n }\n}\n\ninterface DatasourceCacheDataPoint {\n datasource: string;\n registryUrl: string;\n packageName: string;\n action: 'hit' | 'miss' | 'set' | 'skip';\n}\n\nexport interface DatasourceCacheReport {\n long: {\n [datasource in string]: {\n [registryUrl in string]: {\n [packageName in string]: {\n read?: 'hit' | 'miss';\n write?: 'set' | 'skip';\n };\n };\n };\n };\n short: {\n [datasource in string]: {\n [registryUrl in string]: {\n hit: number;\n miss: number;\n set: number;\n skip: number;\n };\n };\n };\n}\n\nexport class DatasourceCacheStats {\n private static getData(): DatasourceCacheDataPoint[] {\n return (\n memCache.get<DatasourceCacheDataPoint[]>('datasource-cache-stats') ?? []\n );\n }\n\n private static setData(data: DatasourceCacheDataPoint[]): void {\n memCache.set('datasource-cache-stats', data);\n }\n\n static hit(\n datasource: string,\n registryUrl: string,\n packageName: string,\n ): void {\n const data = this.getData();\n data.push({ datasource, registryUrl, packageName, action: 'hit' });\n this.setData(data);\n }\n\n static miss(\n datasource: string,\n registryUrl: string,\n packageName: string,\n ): void {\n const data = this.getData();\n data.push({ datasource, registryUrl, packageName, action: 'miss' });\n this.setData(data);\n }\n\n static set(\n datasource: string,\n registryUrl: string,\n packageName: string,\n ): void {\n const data = this.getData();\n data.push({ datasource, registryUrl, packageName, action: 'set' });\n this.setData(data);\n }\n\n static skip(\n datasource: string,\n registryUrl: string,\n packageName: string,\n ): void {\n const data = this.getData();\n data.push({ datasource, registryUrl, packageName, action: 'skip' });\n this.setData(data);\n }\n\n static getReport(): DatasourceCacheReport {\n const data = this.getData();\n const result: DatasourceCacheReport = { long: {}, short: {} };\n for (const { datasource, registryUrl, packageName, action } of data) {\n result.long[datasource] ??= {};\n result.long[datasource][registryUrl] ??= {};\n result.long[datasource][registryUrl] ??= {};\n result.long[datasource][registryUrl][packageName] ??= {};\n\n result.short[datasource] ??= {};\n result.short[datasource][registryUrl] ??= {\n hit: 0,\n miss: 0,\n set: 0,\n skip: 0,\n };\n\n if (action === 'hit') {\n result.long[datasource][registryUrl][packageName].read = 'hit';\n result.short[datasource][registryUrl].hit += 1;\n continue;\n }\n\n if (action === 'miss') {\n result.long[datasource][registryUrl][packageName].read = 'miss';\n result.short[datasource][registryUrl].miss += 1;\n continue;\n }\n\n if (action === 'set') {\n result.long[datasource][registryUrl][packageName].write = 'set';\n result.short[datasource][registryUrl].set += 1;\n continue;\n }\n\n if (action === 'skip') {\n result.long[datasource][registryUrl][packageName].write = 'skip';\n result.short[datasource][registryUrl].skip += 1;\n continue;\n }\n }\n\n return result;\n }\n\n static report(): void {\n const { long, short } = this.getReport();\n\n if (Object.keys(short).length > 0) {\n logger.debug(short, 'Datasource cache statistics');\n }\n\n if (Object.keys(long).length > 0) {\n logger.trace(long, 'Datasource cache detailed statistics');\n }\n }\n}\n\nexport interface HttpRequestStatsDataPoint {\n method: string;\n url: string;\n reqMs: number;\n queueMs: number;\n status: number;\n}\n\ninterface HostStatsData {\n count: number;\n reqAvgMs: number;\n reqMedianMs: number;\n reqMaxMs: number;\n queueAvgMs: number;\n queueMedianMs: number;\n queueMaxMs: number;\n}\n\n// url -> method -> status -> count\ntype UrlHttpStat = Record<string, Record<string, Record<string, number>>>;\n\ninterface HttpStatsCollection {\n // debug data\n urls: UrlHttpStat;\n hosts: Record<string, HostStatsData>;\n requests: number;\n\n // trace data\n rawRequests: string[];\n hostRequests: Record<string, HttpRequestStatsDataPoint[]>;\n}\n\nexport class HttpStats {\n static write(data: HttpRequestStatsDataPoint): void {\n const httpRequests =\n memCache.get<HttpRequestStatsDataPoint[]>('http-requests') ?? [];\n httpRequests.push(data);\n memCache.set('http-requests', httpRequests);\n }\n\n static getDataPoints(): HttpRequestStatsDataPoint[] {\n const httpRequests =\n memCache.get<HttpRequestStatsDataPoint[]>('http-requests') ?? [];\n\n // istanbul ignore next: sorting is hard and not worth testing\n httpRequests.sort((a, b) => {\n if (a.url < b.url) {\n return -1;\n }\n\n if (a.url > b.url) {\n return 1;\n }\n\n return 0;\n });\n\n return httpRequests;\n }\n\n static getReport(): HttpStatsCollection {\n const dataPoints = HttpStats.getDataPoints();\n\n const requests = dataPoints.length;\n\n const urls: UrlHttpStat = {};\n const rawRequests: string[] = [];\n const hostRequests: Record<string, HttpRequestStatsDataPoint[]> = {};\n\n for (const dataPoint of dataPoints) {\n const { url, reqMs, queueMs, status } = dataPoint;\n const method = dataPoint.method.toUpperCase();\n\n const parsedUrl = parseUrl(url);\n if (!parsedUrl) {\n logger.debug({ url }, 'Failed to parse URL during stats reporting');\n continue;\n }\n const { hostname, origin, pathname } = parsedUrl;\n const baseUrl = `${origin}${pathname}`;\n\n urls[baseUrl] ??= {};\n urls[baseUrl][method] ??= {};\n urls[baseUrl][method][status] ??= 0;\n urls[baseUrl][method][status] += 1;\n\n rawRequests.push(`${method} ${url} ${status} ${reqMs} ${queueMs}`);\n\n hostRequests[hostname] ??= [];\n hostRequests[hostname].push(dataPoint);\n }\n\n const hosts: Record<string, HostStatsData> = {};\n\n for (const [hostname, dataPoints] of Object.entries(hostRequests)) {\n const count = dataPoints.length;\n\n const reqTimes = dataPoints.map((r) => r.reqMs);\n const queueTimes = dataPoints.map((r) => r.queueMs);\n\n const reqReport = makeTimingReport(reqTimes);\n const queueReport = makeTimingReport(queueTimes);\n\n hosts[hostname] = {\n count,\n reqAvgMs: reqReport.avgMs,\n reqMedianMs: reqReport.medianMs,\n reqMaxMs: reqReport.maxMs,\n queueAvgMs: queueReport.avgMs,\n queueMedianMs: queueReport.medianMs,\n queueMaxMs: queueReport.maxMs,\n };\n }\n\n return {\n urls,\n rawRequests,\n hostRequests,\n hosts,\n requests,\n };\n }\n\n static report(): void {\n const { urls, rawRequests, hostRequests, hosts, requests } =\n HttpStats.getReport();\n logger.trace({ rawRequests, hostRequests }, 'HTTP full statistics');\n logger.debug({ hosts, requests }, 'HTTP statistics');\n logger.trace({ urls }, 'HTTP URL statistics');\n }\n}\n\ninterface HttpCacheHostStatsData {\n hit: number;\n miss: number;\n localHit?: number;\n localMiss?: number;\n}\n\ntype HttpCacheStatsData = Record<string, HttpCacheHostStatsData>;\n\nfunction sortObject<T>(obj: Record<string, T>): Record<string, T> {\n const result: Record<string, T> = {};\n for (const key of Object.keys(obj).sort()) {\n result[key] = obj[key];\n }\n return result;\n}\n\nexport class HttpCacheStats {\n static getData(): HttpCacheStatsData {\n return memCache.get<HttpCacheStatsData>('http-cache-stats') ?? {};\n }\n\n static read(key: string): HttpCacheHostStatsData {\n return (\n this.getData()?.[key] ?? {\n hit: 0,\n miss: 0,\n }\n );\n }\n\n static write(key: string, data: HttpCacheHostStatsData): void {\n const stats = memCache.get<HttpCacheStatsData>('http-cache-stats') ?? {};\n stats[key] = data;\n memCache.set('http-cache-stats', stats);\n }\n\n static getBaseUrl(url: string): string | null {\n const parsedUrl = parseUrl(url);\n if (!parsedUrl) {\n logger.debug({ url }, 'Failed to parse URL during cache stats');\n return null;\n }\n const { origin, pathname } = parsedUrl;\n const baseUrl = `${origin}${pathname}`;\n return baseUrl;\n }\n\n static incLocalHits(url: string): void {\n const baseUrl = HttpCacheStats.getBaseUrl(url);\n if (baseUrl) {\n const host = baseUrl;\n const stats = HttpCacheStats.read(host);\n stats.localHit ??= 0;\n stats.localHit += 1;\n HttpCacheStats.write(host, stats);\n }\n }\n\n static incLocalMisses(url: string): void {\n const baseUrl = HttpCacheStats.getBaseUrl(url);\n if (baseUrl) {\n const host = baseUrl;\n const stats = HttpCacheStats.read(host);\n stats.localMiss ??= 0;\n stats.localMiss += 1;\n HttpCacheStats.write(host, stats);\n }\n }\n\n static incRemoteHits(url: string): void {\n const baseUrl = HttpCacheStats.getBaseUrl(url);\n if (baseUrl) {\n const host = baseUrl;\n const stats = HttpCacheStats.read(host);\n stats.hit += 1;\n HttpCacheStats.write(host, stats);\n }\n }\n\n static incRemoteMisses(url: string): void {\n const baseUrl = HttpCacheStats.getBaseUrl(url);\n if (baseUrl) {\n const host = baseUrl;\n const stats = HttpCacheStats.read(host);\n stats.miss += 1;\n HttpCacheStats.write(host, stats);\n }\n }\n\n static report(): void {\n const data = HttpCacheStats.getData();\n let report: Record<string, Record<string, HttpCacheHostStatsData>> = {};\n for (const [url, stats] of Object.entries(data)) {\n const parsedUrl = parseUrl(url);\n if (parsedUrl) {\n const { origin, pathname } = parsedUrl;\n report[origin] ??= {};\n report[origin][pathname] = stats;\n }\n }\n\n for (const [host, hostStats] of Object.entries(report)) {\n report[host] = sortObject(hostStats);\n }\n report = sortObject(report);\n\n logger.debug(report, 'HTTP cache statistics');\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../lib/util/stats.ts"],"names":[],"mappings":";;;AAcA,4CAQC;;AAtBD,sCAAmC;AACnC,iEAA2C;AAC3C,+BAAiC;AAYjC,SAAgB,gBAAgB,CAAC,IAAc;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACpD,CAAC;AAED,MAAa,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,UAAkB,EAAE,QAAgB;QAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAkB,cAAc,CAAC,IAAI,EAAE,CAAC;QACjE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,UAAkB,EAClB,QAA0B;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,SAAS;QACd,MAAM,MAAM,GAAsC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAkB,cAAc,CAAC,IAAI,EAAE,CAAC;QACjE,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAAM;QACX,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;QACvC,eAAM,CAAC,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC5C,CAAC;CACF;AAhCD,kCAgCC;AAID,MAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,QAAgB;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAmB,oBAAoB,CAAC,IAAI,EAAE,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAI,QAA0B;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,QAAgB;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAmB,oBAAoB,CAAC,IAAI,EAAE,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAI,QAA0B;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,SAAS;QACd,MAAM,gBAAgB,GACpB,QAAQ,CAAC,GAAG,CAAmB,oBAAoB,CAAC,IAAI,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAE/C,MAAM,gBAAgB,GACpB,QAAQ,CAAC,GAAG,CAAmB,oBAAoB,CAAC,IAAI,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAE/C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,MAAM;QACX,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAC7C,eAAM,CAAC,KAAK,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACnD,CAAC;CACF;AA7CD,8CA6CC;AAgCD,sEAAsE;AAEtE,MAAa,oBAAoB;IACvB,MAAM,CAAC,OAAO;QACpB,OAAO,CACL,QAAQ,CAAC,GAAG,CAA6B,wBAAwB,CAAC,IAAI,EAAE,CACzE,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,OAAO,CAAC,IAAgC;QACrD,QAAQ,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,GAAG,CACR,UAAkB,EAClB,WAAmB,EACnB,WAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,IAAI,CACT,UAAkB,EAClB,WAAmB,EACnB,WAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,GAAG,CACR,UAAkB,EAClB,WAAmB,EACnB,WAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,IAAI,CACT,UAAkB,EAClB,WAAmB,EACnB,WAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,SAAS;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAA0B,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC9D,KAAK,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAEzD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,KAAK;gBACxC,GAAG,EAAE,CAAC;gBACN,IAAI,EAAE,CAAC;gBACP,GAAG,EAAE,CAAC;gBACN,IAAI,EAAE,CAAC;aACR,CAAC;YAEF,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;gBAC/D,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC/C,SAAS;YACX,CAAC;YAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;gBAChE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;gBAChD,SAAS;YACX,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;gBAChE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC/C,SAAS;YACX,CAAC;YAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;gBACjE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;gBAChD,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAAM;QACX,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEzC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,eAAM,CAAC,KAAK,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,eAAM,CAAC,KAAK,CAAC,IAAI,EAAE,sCAAsC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF;AA3GD,oDA2GC;AAkCD,MAAa,SAAS;IACpB,MAAM,CAAC,KAAK,CAAC,IAA+B;QAC1C,MAAM,YAAY,GAChB,QAAQ,CAAC,GAAG,CAA8B,eAAe,CAAC,IAAI,EAAE,CAAC;QACnE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,aAAa;QAClB,MAAM,YAAY,GAChB,QAAQ,CAAC,GAAG,CAA8B,eAAe,CAAC,IAAI,EAAE,CAAC;QAEnE,8DAA8D;QAC9D,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAClB,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;YAED,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAClB,OAAO,CAAC,CAAC;YACX,CAAC;YAED,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,SAAS;QACd,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QAE7C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;QAEnC,MAAM,IAAI,GAAgB,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,YAAY,GAAgD,EAAE,CAAC;QAErE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;YAClD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAE9C,MAAM,SAAS,GAAG,IAAA,cAAQ,EAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,4CAA4C,CAAC,CAAC;gBACpE,SAAS;YACX,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;YACjD,MAAM,OAAO,GAAG,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAC;YAEvC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEnC,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;YAEnE,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC9B,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,KAAK,GAAkC,EAAE,CAAC;QAEhD,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAClE,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;YAEhC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAEpD,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAEjD,KAAK,CAAC,QAAQ,CAAC,GAAG;gBAChB,KAAK;gBACL,QAAQ,EAAE,SAAS,CAAC,KAAK;gBACzB,WAAW,EAAE,SAAS,CAAC,QAAQ;gBAC/B,QAAQ,EAAE,SAAS,CAAC,KAAK;gBACzB,UAAU,EAAE,WAAW,CAAC,KAAK;gBAC7B,aAAa,EAAE,WAAW,CAAC,QAAQ;gBACnC,UAAU,EAAE,WAAW,CAAC,KAAK;aAC9B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI;YACJ,WAAW;YACX,YAAY;YACZ,KAAK;YACL,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAM;QACX,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,GACxD,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,eAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACpE,eAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACrD,eAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAChD,CAAC;CACF;AAlGD,8BAkGC;AAWD,SAAS,UAAU,CAAI,GAAsB;IAC3C,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAa,cAAc;IACzB,MAAM,CAAC,OAAO;QACZ,OAAO,QAAQ,CAAC,GAAG,CAAqB,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAW;QACrB,OAAO,CACL,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI;YACvB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;SACR,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAW,EAAE,IAA4B;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAqB,kBAAkB,CAAC,IAAI,EAAE,CAAC;QACzE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAClB,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAW;QAC3B,MAAM,SAAS,GAAG,IAAA,cAAQ,EAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,wCAAwC,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;QACvC,MAAM,OAAO,GAAG,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,GAAW;QAC7B,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC;YACrB,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;YACpB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,GAAW;QAC/B,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC;YACtB,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;YACrB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,GAAW;QAC9B,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YACf,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,GAAW;QAChC,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;YAChB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,MAAM;QACX,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,MAAM,GAA2D,EAAE,CAAC;QACxE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,IAAA,cAAQ,EAAC,GAAG,CAAC,CAAC;YAChC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAE5B,eAAM,CAAC,KAAK,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAChD,CAAC;CACF;AA5FD,wCA4FC","sourcesContent":["import { logger } from '../logger';\nimport * as memCache from './cache/memory';\nimport { parseUrl } from './url';\n\ntype LookupStatsData = Record<string, number[]>;\n\ninterface TimingStatsReport {\n count: number;\n avgMs: number;\n medianMs: number;\n maxMs: number;\n totalMs: number;\n}\n\nexport function makeTimingReport(data: number[]): TimingStatsReport {\n const count = data.length;\n const totalMs = data.reduce((a, c) => a + c, 0);\n const avgMs = count ? Math.round(totalMs / count) : 0;\n const maxMs = Math.max(0, ...data);\n const sorted = data.sort((a, b) => a - b);\n const medianMs = count ? sorted[Math.floor(count / 2)] : 0;\n return { count, avgMs, medianMs, maxMs, totalMs };\n}\n\nexport class LookupStats {\n static write(datasource: string, duration: number): void {\n const data = memCache.get<LookupStatsData>('lookup-stats') ?? {};\n data[datasource] ??= [];\n data[datasource].push(duration);\n memCache.set('lookup-stats', data);\n }\n\n static async wrap<T>(\n datasource: string,\n callback: () => Promise<T>,\n ): Promise<T> {\n const start = Date.now();\n const result = await callback();\n const duration = Date.now() - start;\n LookupStats.write(datasource, duration);\n return result;\n }\n\n static getReport(): Record<string, TimingStatsReport> {\n const report: Record<string, TimingStatsReport> = {};\n const data = memCache.get<LookupStatsData>('lookup-stats') ?? {};\n for (const [datasource, durations] of Object.entries(data)) {\n report[datasource] = makeTimingReport(durations);\n }\n return report;\n }\n\n static report(): void {\n const report = LookupStats.getReport();\n logger.debug(report, 'Lookup statistics');\n }\n}\n\ntype PackageCacheData = number[];\n\nexport class PackageCacheStats {\n static writeSet(duration: number): void {\n const data = memCache.get<PackageCacheData>('package-cache-sets') ?? [];\n data.push(duration);\n memCache.set('package-cache-sets', data);\n }\n\n static async wrapSet<T>(callback: () => Promise<T>): Promise<T> {\n const start = Date.now();\n const result = await callback();\n const duration = Date.now() - start;\n PackageCacheStats.writeSet(duration);\n return result;\n }\n\n static writeGet(duration: number): void {\n const data = memCache.get<PackageCacheData>('package-cache-gets') ?? [];\n data.push(duration);\n memCache.set('package-cache-gets', data);\n }\n\n static async wrapGet<T>(callback: () => Promise<T>): Promise<T> {\n const start = Date.now();\n const result = await callback();\n const duration = Date.now() - start;\n PackageCacheStats.writeGet(duration);\n return result;\n }\n\n static getReport(): { get: TimingStatsReport; set: TimingStatsReport } {\n const packageCacheGets =\n memCache.get<PackageCacheData>('package-cache-gets') ?? [];\n const get = makeTimingReport(packageCacheGets);\n\n const packageCacheSets =\n memCache.get<PackageCacheData>('package-cache-sets') ?? [];\n const set = makeTimingReport(packageCacheSets);\n\n return { get, set };\n }\n\n static report(): void {\n const report = PackageCacheStats.getReport();\n logger.debug(report, 'Package cache statistics');\n }\n}\n\ninterface DatasourceCacheDataPoint {\n datasource: string;\n registryUrl: string;\n packageName: string;\n action: 'hit' | 'miss' | 'set' | 'skip';\n}\n\n/* eslint-disable @typescript-eslint/consistent-indexed-object-style */\nexport interface DatasourceCacheReport {\n long: {\n [datasource in string]: {\n [registryUrl in string]: {\n [packageName in string]: {\n read?: 'hit' | 'miss';\n write?: 'set' | 'skip';\n };\n };\n };\n };\n short: {\n [datasource in string]: {\n [registryUrl in string]: {\n hit: number;\n miss: number;\n set: number;\n skip: number;\n };\n };\n };\n}\n/* eslint-enable @typescript-eslint/consistent-indexed-object-style */\n\nexport class DatasourceCacheStats {\n private static getData(): DatasourceCacheDataPoint[] {\n return (\n memCache.get<DatasourceCacheDataPoint[]>('datasource-cache-stats') ?? []\n );\n }\n\n private static setData(data: DatasourceCacheDataPoint[]): void {\n memCache.set('datasource-cache-stats', data);\n }\n\n static hit(\n datasource: string,\n registryUrl: string,\n packageName: string,\n ): void {\n const data = this.getData();\n data.push({ datasource, registryUrl, packageName, action: 'hit' });\n this.setData(data);\n }\n\n static miss(\n datasource: string,\n registryUrl: string,\n packageName: string,\n ): void {\n const data = this.getData();\n data.push({ datasource, registryUrl, packageName, action: 'miss' });\n this.setData(data);\n }\n\n static set(\n datasource: string,\n registryUrl: string,\n packageName: string,\n ): void {\n const data = this.getData();\n data.push({ datasource, registryUrl, packageName, action: 'set' });\n this.setData(data);\n }\n\n static skip(\n datasource: string,\n registryUrl: string,\n packageName: string,\n ): void {\n const data = this.getData();\n data.push({ datasource, registryUrl, packageName, action: 'skip' });\n this.setData(data);\n }\n\n static getReport(): DatasourceCacheReport {\n const data = this.getData();\n const result: DatasourceCacheReport = { long: {}, short: {} };\n for (const { datasource, registryUrl, packageName, action } of data) {\n result.long[datasource] ??= {};\n result.long[datasource][registryUrl] ??= {};\n result.long[datasource][registryUrl] ??= {};\n result.long[datasource][registryUrl][packageName] ??= {};\n\n result.short[datasource] ??= {};\n result.short[datasource][registryUrl] ??= {\n hit: 0,\n miss: 0,\n set: 0,\n skip: 0,\n };\n\n if (action === 'hit') {\n result.long[datasource][registryUrl][packageName].read = 'hit';\n result.short[datasource][registryUrl].hit += 1;\n continue;\n }\n\n if (action === 'miss') {\n result.long[datasource][registryUrl][packageName].read = 'miss';\n result.short[datasource][registryUrl].miss += 1;\n continue;\n }\n\n if (action === 'set') {\n result.long[datasource][registryUrl][packageName].write = 'set';\n result.short[datasource][registryUrl].set += 1;\n continue;\n }\n\n if (action === 'skip') {\n result.long[datasource][registryUrl][packageName].write = 'skip';\n result.short[datasource][registryUrl].skip += 1;\n continue;\n }\n }\n\n return result;\n }\n\n static report(): void {\n const { long, short } = this.getReport();\n\n if (Object.keys(short).length > 0) {\n logger.debug(short, 'Datasource cache statistics');\n }\n\n if (Object.keys(long).length > 0) {\n logger.trace(long, 'Datasource cache detailed statistics');\n }\n }\n}\n\nexport interface HttpRequestStatsDataPoint {\n method: string;\n url: string;\n reqMs: number;\n queueMs: number;\n status: number;\n}\n\ninterface HostStatsData {\n count: number;\n reqAvgMs: number;\n reqMedianMs: number;\n reqMaxMs: number;\n queueAvgMs: number;\n queueMedianMs: number;\n queueMaxMs: number;\n}\n\n// url -> method -> status -> count\ntype UrlHttpStat = Record<string, Record<string, Record<string, number>>>;\n\ninterface HttpStatsCollection {\n // debug data\n urls: UrlHttpStat;\n hosts: Record<string, HostStatsData>;\n requests: number;\n\n // trace data\n rawRequests: string[];\n hostRequests: Record<string, HttpRequestStatsDataPoint[]>;\n}\n\nexport class HttpStats {\n static write(data: HttpRequestStatsDataPoint): void {\n const httpRequests =\n memCache.get<HttpRequestStatsDataPoint[]>('http-requests') ?? [];\n httpRequests.push(data);\n memCache.set('http-requests', httpRequests);\n }\n\n static getDataPoints(): HttpRequestStatsDataPoint[] {\n const httpRequests =\n memCache.get<HttpRequestStatsDataPoint[]>('http-requests') ?? [];\n\n // istanbul ignore next: sorting is hard and not worth testing\n httpRequests.sort((a, b) => {\n if (a.url < b.url) {\n return -1;\n }\n\n if (a.url > b.url) {\n return 1;\n }\n\n return 0;\n });\n\n return httpRequests;\n }\n\n static getReport(): HttpStatsCollection {\n const dataPoints = HttpStats.getDataPoints();\n\n const requests = dataPoints.length;\n\n const urls: UrlHttpStat = {};\n const rawRequests: string[] = [];\n const hostRequests: Record<string, HttpRequestStatsDataPoint[]> = {};\n\n for (const dataPoint of dataPoints) {\n const { url, reqMs, queueMs, status } = dataPoint;\n const method = dataPoint.method.toUpperCase();\n\n const parsedUrl = parseUrl(url);\n if (!parsedUrl) {\n logger.debug({ url }, 'Failed to parse URL during stats reporting');\n continue;\n }\n const { hostname, origin, pathname } = parsedUrl;\n const baseUrl = `${origin}${pathname}`;\n\n urls[baseUrl] ??= {};\n urls[baseUrl][method] ??= {};\n urls[baseUrl][method][status] ??= 0;\n urls[baseUrl][method][status] += 1;\n\n rawRequests.push(`${method} ${url} ${status} ${reqMs} ${queueMs}`);\n\n hostRequests[hostname] ??= [];\n hostRequests[hostname].push(dataPoint);\n }\n\n const hosts: Record<string, HostStatsData> = {};\n\n for (const [hostname, dataPoints] of Object.entries(hostRequests)) {\n const count = dataPoints.length;\n\n const reqTimes = dataPoints.map((r) => r.reqMs);\n const queueTimes = dataPoints.map((r) => r.queueMs);\n\n const reqReport = makeTimingReport(reqTimes);\n const queueReport = makeTimingReport(queueTimes);\n\n hosts[hostname] = {\n count,\n reqAvgMs: reqReport.avgMs,\n reqMedianMs: reqReport.medianMs,\n reqMaxMs: reqReport.maxMs,\n queueAvgMs: queueReport.avgMs,\n queueMedianMs: queueReport.medianMs,\n queueMaxMs: queueReport.maxMs,\n };\n }\n\n return {\n urls,\n rawRequests,\n hostRequests,\n hosts,\n requests,\n };\n }\n\n static report(): void {\n const { urls, rawRequests, hostRequests, hosts, requests } =\n HttpStats.getReport();\n logger.trace({ rawRequests, hostRequests }, 'HTTP full statistics');\n logger.debug({ hosts, requests }, 'HTTP statistics');\n logger.trace({ urls }, 'HTTP URL statistics');\n }\n}\n\ninterface HttpCacheHostStatsData {\n hit: number;\n miss: number;\n localHit?: number;\n localMiss?: number;\n}\n\ntype HttpCacheStatsData = Record<string, HttpCacheHostStatsData>;\n\nfunction sortObject<T>(obj: Record<string, T>): Record<string, T> {\n const result: Record<string, T> = {};\n for (const key of Object.keys(obj).sort()) {\n result[key] = obj[key];\n }\n return result;\n}\n\nexport class HttpCacheStats {\n static getData(): HttpCacheStatsData {\n return memCache.get<HttpCacheStatsData>('http-cache-stats') ?? {};\n }\n\n static read(key: string): HttpCacheHostStatsData {\n return (\n this.getData()?.[key] ?? {\n hit: 0,\n miss: 0,\n }\n );\n }\n\n static write(key: string, data: HttpCacheHostStatsData): void {\n const stats = memCache.get<HttpCacheStatsData>('http-cache-stats') ?? {};\n stats[key] = data;\n memCache.set('http-cache-stats', stats);\n }\n\n static getBaseUrl(url: string): string | null {\n const parsedUrl = parseUrl(url);\n if (!parsedUrl) {\n logger.debug({ url }, 'Failed to parse URL during cache stats');\n return null;\n }\n const { origin, pathname } = parsedUrl;\n const baseUrl = `${origin}${pathname}`;\n return baseUrl;\n }\n\n static incLocalHits(url: string): void {\n const baseUrl = HttpCacheStats.getBaseUrl(url);\n if (baseUrl) {\n const host = baseUrl;\n const stats = HttpCacheStats.read(host);\n stats.localHit ??= 0;\n stats.localHit += 1;\n HttpCacheStats.write(host, stats);\n }\n }\n\n static incLocalMisses(url: string): void {\n const baseUrl = HttpCacheStats.getBaseUrl(url);\n if (baseUrl) {\n const host = baseUrl;\n const stats = HttpCacheStats.read(host);\n stats.localMiss ??= 0;\n stats.localMiss += 1;\n HttpCacheStats.write(host, stats);\n }\n }\n\n static incRemoteHits(url: string): void {\n const baseUrl = HttpCacheStats.getBaseUrl(url);\n if (baseUrl) {\n const host = baseUrl;\n const stats = HttpCacheStats.read(host);\n stats.hit += 1;\n HttpCacheStats.write(host, stats);\n }\n }\n\n static incRemoteMisses(url: string): void {\n const baseUrl = HttpCacheStats.getBaseUrl(url);\n if (baseUrl) {\n const host = baseUrl;\n const stats = HttpCacheStats.read(host);\n stats.miss += 1;\n HttpCacheStats.write(host, stats);\n }\n }\n\n static report(): void {\n const data = HttpCacheStats.getData();\n let report: Record<string, Record<string, HttpCacheHostStatsData>> = {};\n for (const [url, stats] of Object.entries(data)) {\n const parsedUrl = parseUrl(url);\n if (parsedUrl) {\n const { origin, pathname } = parsedUrl;\n report[origin] ??= {};\n report[origin][pathname] = stats;\n }\n }\n\n for (const [host, hostStats] of Object.entries(report)) {\n report[host] = sortObject(hostStats);\n }\n report = sortObject(report);\n\n logger.debug(report, 'HTTP cache statistics');\n }\n}\n"]}
|
@@ -75,7 +75,7 @@ function parseDashboardIssue(issueBody) {
|
|
75
75
|
const dependencyDashboardRebaseAllOpen = checkRebaseAll(issueBody);
|
76
76
|
const dependencyDashboardAllPending = checkApproveAllPendingPR(issueBody);
|
77
77
|
const dependencyDashboardAllRateLimited = checkOpenAllRateLimitedPR(issueBody);
|
78
|
-
dependencyDashboardChecks
|
78
|
+
dependencyDashboardChecks.configMigrationCheckboxState =
|
79
79
|
getConfigMigrationCheckboxState(issueBody);
|
80
80
|
return {
|
81
81
|
dependencyDashboardChecks,
|
@@ -136,7 +136,7 @@ function appendRepoProblems(config, issueBody) {
|
|
136
136
|
const repoProblems = (0, common_1.extractRepoProblems)(config.repository);
|
137
137
|
if (repoProblems.size) {
|
138
138
|
newIssueBody += '## Repository problems\n\n';
|
139
|
-
const repoProblemsHeader = config.customizeDashboard?.
|
139
|
+
const repoProblemsHeader = config.customizeDashboard?.repoProblemsHeader ??
|
140
140
|
'Renovate tried to run on this repository, but found these problems.';
|
141
141
|
newIssueBody += template.compile(repoProblemsHeader, config) + '\n\n';
|
142
142
|
for (const repoProblem of repoProblems) {
|