/** * Enforces package.json version rules for reproducible installs: private * packages pin exact versions; published runtime deps need a range for * dedupe, devDependencies stay pinned. Catches agents defaulting to the * wrong specifier for publish status. */ import type { JSONRuleDefinition } from '@eslint/json'; interface NoUnpinnedDependencyRangesOptions { /** * Whether pnpm's `catalog:` protocol is accepted unconditionally, * bypassing pinned/range checks. Defaults to `true`; set `false` to make * `catalog:` specifiers follow the same rules as any other version * string. */ readonly allowCatalog?: boolean; } type NoUnpinnedDependencyRangesRuleOptions = [NoUnpinnedDependencyRangesOptions?]; type NoUnpinnedDependencyRangesMessageIds = 'unpinned-range'; export type NoUnpinnedDependencyRangesRuleDefinition = JSONRuleDefinition<{ RuleOptions: NoUnpinnedDependencyRangesRuleOptions; MessageIds: NoUnpinnedDependencyRangesMessageIds; }>; declare const rule: NoUnpinnedDependencyRangesRuleDefinition; export default rule;