syncpack
Version:
Consistent dependency versions in large JavaScript Monorepos
261 lines (260 loc) • 12 kB
TypeScript
export interface RcFile {
/** @see https://syncpack.dev/config/syncpackrc/#json */
$schema?: string;
/** @see https://syncpack.dev/config/custom-types */
customTypes?: {
[name: string]: CustomType.Any;
};
/** @see https://syncpack.dev/config/dependency-groups */
dependencyGroups?: DependencyGroup[];
/** @see https://syncpack.dev/config/format-bugs */
formatBugs?: boolean;
/** @see https://syncpack.dev/config/format-repository */
formatRepository?: boolean;
/** @see https://syncpack.dev/config/indent */
indent?: string;
/** @see https://syncpack.dev/config/max-concurrent-requests */
maxConcurrentRequests?: number;
/**
* Skip dependency updates published less than this many minutes ago.
* `0` disables the filter. When omitted, the value from the project's
* `pnpm-workspace.yaml` is used; if neither is set, defaults to `1440`
* (one day). Setting it here always overrides the pnpm value.
* @see https://pnpm.io/settings#minimumreleaseage
*/
minimumReleaseAge?: number;
/** @see https://syncpack.dev/semver-groups */
semverGroups?: SemverGroup.Any[];
/** @see https://syncpack.dev/update-groups */
updateGroups?: UpdateGroup.Any[];
/** @see https://syncpack.dev/config/sort-az */
sortAz?: string[];
/** @see https://syncpack.dev/config/sort-exports */
sortExports?: string[];
/** @see https://syncpack.dev/config/sort-first */
sortFirst?: string[];
/** @see https://syncpack.dev/config/sort-packages */
sortPackages?: boolean;
/** @see https://syncpack.dev/config/source */
source?: string[];
/** @see https://syncpack.dev/config/source-mode */
sourceMode?: 'replace' | 'extend';
/** @see https://syncpack.dev/config/strict */
strict?: boolean;
/** @see https://syncpack.dev/version-groups */
versionGroups?: VersionGroup.Any[];
/** @deprecated */
dependencyTypes?: never;
/** @deprecated */
filter?: never;
/** @deprecated */
lintFormatting?: never;
/** @deprecated */
lintSemverRanges?: never;
/** @deprecated */
lintVersions?: never;
/** @deprecated */
specifierTypes?: never;
}
export interface GroupSelector {
/** @see https://syncpack.dev/version-groups/highest-semver/#dependencies */
dependencies?: string[];
/** @see https://syncpack.dev/version-groups/highest-semver/#dependencytypes */
dependencyTypes?: DependencyType[];
/** @see https://syncpack.dev/version-groups/highest-semver/#label */
label?: string;
/** @see https://syncpack.dev/version-groups/highest-semver/#packages */
packages?: string[];
/** @see https://syncpack.dev/version-groups/highest-semver/#specifiertypes */
specifierTypes?: SpecifierType[];
}
export interface DependencyGroup {
/** @see https://syncpack.dev/config/dependency-groups/#aliasname */
aliasName: string;
/** @see https://syncpack.dev/config/dependency-groups/#dependencies */
dependencies?: string[];
/** @see https://syncpack.dev/config/dependency-groups/#dependencytypes */
dependencyTypes?: DependencyType[];
/** @see https://syncpack.dev/config/dependency-groups/#packages */
packages?: string[];
/** @see https://syncpack.dev/config/dependency-groups/#specifiertypes */
specifierTypes?: SpecifierType[];
}
declare namespace SemverGroup {
interface Ignored extends GroupSelector {
/** @see https://syncpack.dev/semver-groups/ignored/#isignored */
isIgnored: true;
}
interface WithRange extends GroupSelector {
/** @see https://syncpack.dev/semver-groups/with-range/#range */
range: SemverRange;
}
type Any = Ignored | WithRange;
}
declare namespace UpdateGroup {
interface Ignored extends GroupSelector {
/** @see https://syncpack.dev/update-groups/ignored/#isignored */
isIgnored: true;
}
interface Targeted extends GroupSelector {
/** @see https://syncpack.dev/update-groups/targeted/#target */
target: 'patch' | 'minor' | 'latest';
}
type Any = Ignored | Targeted;
}
declare namespace VersionGroup {
interface Banned extends GroupSelector {
/** @see https://syncpack.dev/version-groups/banned/#isbanned */
isBanned: true;
/** @see https://syncpack.dev/version-groups/banned/#severity */
severity?: {
IsBanned?: Severity;
};
}
interface Ignored extends GroupSelector {
/** @see https://syncpack.dev/version-groups/ignored/#isignored */
isIgnored: true;
}
interface Pinned extends GroupSelector {
/** @see https://syncpack.dev/version-groups/pinned/#pinversion */
pinVersion: string;
/** @see https://syncpack.dev/version-groups/pinned/#severity */
severity?: {
DiffersToPin?: Severity;
PinOverridesSemverRange?: Severity;
PinOverridesSemverRangeMismatch?: Severity;
RefuseToPinLocal?: Severity;
};
}
interface SnappedTo extends GroupSelector {
/** @see https://syncpack.dev/version-groups/snapped-to/#snapto */
snapTo: string[];
/** @see https://syncpack.dev/version-groups/snapped-to/#severity */
severity?: {
DiffersToSnapTarget?: Severity;
SemverRangeMismatch?: Severity;
RefuseToSnapLocal?: Severity;
};
}
interface SameRange extends GroupSelector {
/** @see https://syncpack.dev/version-groups/same-range/#policy */
policy: 'sameRange';
/** @see https://syncpack.dev/version-groups/same-range/#severity */
severity?: {
SemverRangeMismatch?: Severity;
};
}
interface SemverRangeOnly extends GroupSelector {
/** @see https://syncpack.dev/version-groups/range-only/#policy */
policy: 'semverRangeOnly';
/** @see https://syncpack.dev/version-groups/range-only/#severity */
severity?: {
SemverRangeMismatch?: Severity;
};
}
interface SameMinor extends GroupSelector {
/** @see https://syncpack.dev/version-groups/same-minor/#policy */
policy: 'sameMinor';
/** @see https://syncpack.dev/version-groups/same-minor/#severity */
severity?: {
DiffersToHighestOrLowestSemverMinor?: Severity;
SemverRangeMismatch?: Severity;
SameMinorOverridesSemverRange?: Severity;
SameMinorOverridesSemverRangeMismatch?: Severity;
};
}
interface Standard extends GroupSelector {
/** @see https://syncpack.dev/version-groups/lowest-semver/#preferversion */
preferVersion?: 'highestSemver' | 'lowestSemver';
/** @see https://syncpack.dev/version-groups/highest-semver/#severity */
severity?: {
SemverRangeMismatch?: Severity;
DiffersToLocal?: Severity;
DiffersToCatalog?: Severity;
DiffersToHighestOrLowestSemver?: Severity;
};
}
interface Catalog extends GroupSelector {
/** @see https://syncpack.dev/version-groups/catalog/#policy */
policy: 'catalog';
/** @see https://syncpack.dev/version-groups/catalog/#severity */
severity?: {
NotUsingCatalog?: Severity;
MissingFromCatalog?: Severity;
};
}
type Any = Banned | Catalog | Ignored | Pinned | SameRange | SameMinor | SemverRangeOnly | SnappedTo | Standard;
}
declare namespace CustomType {
interface NameAndVersionProps {
/** @see https://syncpack.dev/config/custom-types/#namepath */
namePath: string;
/** @see https://syncpack.dev/config/custom-types/#name */
path: string;
/** @see https://syncpack.dev/config/custom-types/#namestrategy */
strategy: 'name~version';
}
interface NamedVersionString {
/** @see https://syncpack.dev/config/custom-types/#name */
path: string;
/** @see https://syncpack.dev/config/custom-types/#namestrategy */
strategy: 'name@version';
}
interface UnnamedVersionString {
/** @see https://syncpack.dev/config/custom-types/#name */
path: string;
/** @see https://syncpack.dev/config/custom-types/#namestrategy */
strategy: 'version';
}
interface VersionsByName {
/** @see https://syncpack.dev/config/custom-types/#name */
path: string;
/** @see https://syncpack.dev/config/custom-types/#namestrategy */
strategy: 'versionsByName';
}
type Any = NameAndVersionProps | NamedVersionString | UnnamedVersionString | VersionsByName;
}
type SemverRange = '' | '*' | '>' | '>=' | '.x' | '<' | '<=' | '^' | '~';
/** @see https://syncpack.dev/severity/ */
export type Severity = 'fix' | 'warn' | 'error';
/** Severity values that appear in JSON output. `'none'` is emitted for Valid
* instances in `syncpack json` and is not writable in rcfile severity maps. */
export type JsonSeverity = Severity | 'none';
type DependencyType = 'dev' | 'local' | 'overrides' | 'peer' | 'pnpmOverrides' | 'prod' | 'resolutions' | AnyString;
type SpecifierType = 'alias' | 'exact' | 'file' | 'git' | 'latest' | 'major' | 'minor' | 'missing' | 'range' | 'range-complex' | 'range-major' | 'range-minor' | 'tag' | 'unsupported' | 'url' | 'workspace-protocol' | AnyString;
type AnyString = string & {};
/** Each Instance printed by `syncpack json` and `syncpack fix --reporter json` */
export type JsonOutput = {
dependency: string;
dependencyGroup: string;
dependencyType: DependencyType;
package: string;
property: string[];
strategy: CustomType.Any['strategy'];
versionGroup: VersionGroupVariant;
preferredSemverRange: SemverRange | null;
statusCode: StatusCode;
statusType: StatusType;
/** @see https://syncpack.dev/config/severity/ */
severity: JsonSeverity;
actual: {
raw: string;
type: SpecifierType;
};
expected: {
raw: string;
type: SpecifierType;
} | null;
};
export type StatusType = 'Valid' | 'Fixable' | 'Unfixable' | 'Suspect' | 'Conflict';
/** Each formatting mismatch printed by `syncpack format --reporter json` */
export type FormatJsonOutput = {
package: string;
filePath: string;
property: string[];
statusCode: FormatStatusCode;
};
export type FormatStatusCode = 'BugsPropertyIsNotFormatted' | 'RepositoryPropertyIsNotFormatted' | 'PropertyIsNotSortedAz' | 'PackagePropertiesAreNotSorted' | 'ExportsPropertyIsNotSorted';
export type VersionGroupVariant = 'Banned' | 'Catalog' | 'HighestSemver' | 'Ignored' | 'LowestSemver' | 'Pinned' | 'SameRange' | 'SameMinor' | 'SemverRangeOnly' | 'SnappedTo';
export type StatusCode = 'IsHighestOrLowestSemver' | 'IsIdenticalToLocal' | 'IsIdenticalToPin' | 'IsIdenticalToSnapTarget' | 'IsIgnored' | 'IsLocalAndValid' | 'IsNonSemverButIdentical' | 'SatisfiesHighestOrLowestSemver' | 'SatisfiesLocal' | 'SatisfiesSameRangeGroup' | 'SatisfiesSameMinorGroup' | 'MatchesSemverGroup' | 'SatisfiesSnapTarget' | 'DiffersToCatalog' | 'DiffersToHighestOrLowestSemver' | 'DiffersToHighestOrLowestSemverMinor' | 'DiffersToLocal' | 'DiffersToNpmRegistry' | 'DiffersToPin' | 'DiffersToSnapTarget' | 'IsBanned' | 'MissingFromCatalog' | 'NotUsingCatalog' | 'PinOverridesSemverRange' | 'PinOverridesSemverRangeMismatch' | 'SameMinorOverridesSemverRange' | 'SameMinorOverridesSemverRangeMismatch' | 'SemverRangeMismatch' | 'DependsOnInvalidLocalPackage' | 'NonSemverMismatch' | 'SameRangeMismatch' | 'SameMinorMismatch' | 'DependsOnMissingSnapTarget' | 'InvalidLocalVersion' | 'RefuseToBanLocal' | 'RefuseToPinLocal' | 'RefuseToSnapLocal' | 'MatchConflictsWithHighestOrLowestSemver' | 'MatchConflictsWithLocal' | 'MatchConflictsWithSnapTarget' | 'MismatchConflictsWithHighestOrLowestSemver' | 'MismatchConflictsWithLocal' | 'MismatchConflictsWithSnapTarget';
export {};