UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

147 lines 5.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LockfileYaml = exports.PixiToml = exports.PixiConfigSchema = void 0; const tslib_1 = require("tslib"); const zod_1 = require("zod"); const schema_utils_1 = require("../../../util/schema-utils"); const conda_1 = require("../../datasource/conda/"); const git_refs_1 = require("../../datasource/git-refs"); const pypi_1 = require("../../datasource/pypi"); const condaVersion = tslib_1.__importStar(require("../../versioning/conda/")); const git_1 = require("../../versioning/git"); const pep440_1 = require("../../versioning/pep440/"); const Channel = zod_1.z.union([ zod_1.z.string(), zod_1.z.object({ channel: zod_1.z.string(), priority: zod_1.z.number() }), ]); function collectNamedPackages(packages) { return Object.entries(packages).map(([depName, config]) => { return { ...config, depName, }; }); } const PypiDependency = zod_1.z .union([ zod_1.z.string().transform((version) => ({ version })), zod_1.z.object({ version: zod_1.z.string() }), ]) .transform(({ version }) => { return { currentValue: version, versioning: pep440_1.id, datasource: pypi_1.PypiDatasource.id, depType: 'pypi-dependencies', }; }); const PypiGitDependency = zod_1.z .object({ git: zod_1.z.string(), rev: zod_1.z.optional(zod_1.z.string()) }) .transform(({ git, rev }) => { // empty ref default to HEAD, so do we not need to do anything if (!rev) { return { currentValue: rev, packageName: git, datasource: git_refs_1.GitRefsDatasource.id, depType: 'pypi-dependencies', versioning: git_1.id, skipStage: 'extract', skipReason: 'unspecified-version', }; } return { currentValue: rev, packageName: git, datasource: git_refs_1.GitRefsDatasource.id, depType: 'pypi-dependencies', versioning: git_1.id, }; }); const PypiDependencies = (0, schema_utils_1.LooseRecord)(zod_1.z.string(), zod_1.z.union([PypiDependency, PypiGitDependency])).transform(collectNamedPackages); const CondaDependency = zod_1.z .union([ zod_1.z.string().transform((version) => ({ version, channel: undefined })), zod_1.z.object({ version: zod_1.z.string(), channel: zod_1.z.optional(zod_1.z.string()) }), ]) .transform(({ version, channel }) => { return { currentValue: version, versioning: condaVersion.id, datasource: conda_1.CondaDatasource.id, depType: 'dependencies', channel, }; }); const CondaDependencies = (0, schema_utils_1.LooseRecord)(zod_1.z.string(), CondaDependency).transform(collectNamedPackages); const Targets = (0, schema_utils_1.LooseRecord)(zod_1.z.string(), zod_1.z.object({ dependencies: zod_1.z.optional(CondaDependencies).default({}), 'pypi-dependencies': zod_1.z.optional(PypiDependencies).default({}), })).transform((val) => { const conda = []; const pypi = []; for (const value of Object.values(val)) { pypi.push(...value['pypi-dependencies']); conda.push(...value.dependencies); } return { pypi, conda }; }); const Project = zod_1.z.object({ channels: zod_1.z.array(Channel).default([]), 'requires-pixi': zod_1.z.string().optional(), 'channel-priority': zod_1.z .union([zod_1.z.literal('strict'), zod_1.z.literal('disabled')]) .default('strict'), }); const DependenciesMixin = zod_1.z .object({ dependencies: zod_1.z.optional(CondaDependencies).default({}), 'pypi-dependencies': zod_1.z.optional(PypiDependencies).default({}), target: zod_1.z.optional(Targets).default({}), }) .transform((val) => { return { conda: [...val.dependencies, ...val.target.conda], pypi: [...val['pypi-dependencies'], ...val.target.pypi], }; }); const Features = (0, schema_utils_1.LooseRecord)(zod_1.z.string(), zod_1.z .object({ channels: zod_1.z.array(Channel).optional(), }) .and(DependenciesMixin)).transform((features) => { const pypi = []; const conda = []; for (const feature of Object.values(features)) { conda.push(...feature.conda.map((item) => { return { ...item, channels: feature.channels, }; })); pypi.push(...feature.pypi); } return { pypi, conda }; }); const PixiWorkspace = zod_1.z .object({ workspace: Project, }) .transform((val) => { return { project: val.workspace }; }); const PixiProject = zod_1.z.object({ project: Project, }); /** * `$` of `pixi.toml` or `$.tool.pixi` of `pyproject.toml` */ exports.PixiConfigSchema = zod_1.z .union([PixiWorkspace, PixiProject]) .and(zod_1.z.object({ feature: Features.default({}) })) .and(DependenciesMixin); exports.PixiToml = schema_utils_1.Toml.pipe(exports.PixiConfigSchema); exports.LockfileYaml = schema_utils_1.Yaml.pipe(zod_1.z.object({ version: zod_1.z.number(), })); //# sourceMappingURL=schema.js.map