ruckup 0.1.0

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.
Files changed (65) hide show
  1. package/dist/cli.d.ts +6 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +323 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/dep-diff.d.ts +9 -0
  6. package/dist/dep-diff.d.ts.map +1 -0
  7. package/dist/dep-diff.js +50 -0
  8. package/dist/dep-diff.js.map +1 -0
  9. package/dist/doctor.d.ts +12 -0
  10. package/dist/doctor.d.ts.map +1 -0
  11. package/dist/doctor.js +102 -0
  12. package/dist/doctor.js.map +1 -0
  13. package/dist/engine.d.ts +14 -0
  14. package/dist/engine.d.ts.map +1 -0
  15. package/dist/engine.js +128 -0
  16. package/dist/engine.js.map +1 -0
  17. package/dist/filter.d.ts +13 -0
  18. package/dist/filter.d.ts.map +1 -0
  19. package/dist/filter.js +68 -0
  20. package/dist/filter.js.map +1 -0
  21. package/dist/format.d.ts +11 -0
  22. package/dist/format.d.ts.map +1 -0
  23. package/dist/format.js +255 -0
  24. package/dist/format.js.map +1 -0
  25. package/dist/index.d.ts +17 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +16 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/inline-diff.d.ts +9 -0
  30. package/dist/inline-diff.d.ts.map +1 -0
  31. package/dist/inline-diff.js +88 -0
  32. package/dist/inline-diff.js.map +1 -0
  33. package/dist/interactive.d.ts +13 -0
  34. package/dist/interactive.d.ts.map +1 -0
  35. package/dist/interactive.js +231 -0
  36. package/dist/interactive.js.map +1 -0
  37. package/dist/open.d.ts +15 -0
  38. package/dist/open.d.ts.map +1 -0
  39. package/dist/open.js +52 -0
  40. package/dist/open.js.map +1 -0
  41. package/dist/package.d.ts +32 -0
  42. package/dist/package.d.ts.map +1 -0
  43. package/dist/package.js +143 -0
  44. package/dist/package.js.map +1 -0
  45. package/dist/registry.d.ts +26 -0
  46. package/dist/registry.d.ts.map +1 -0
  47. package/dist/registry.js +164 -0
  48. package/dist/registry.js.map +1 -0
  49. package/dist/release-info.d.ts +40 -0
  50. package/dist/release-info.d.ts.map +1 -0
  51. package/dist/release-info.js +165 -0
  52. package/dist/release-info.js.map +1 -0
  53. package/dist/security.d.ts +10 -0
  54. package/dist/security.d.ts.map +1 -0
  55. package/dist/security.js +72 -0
  56. package/dist/security.js.map +1 -0
  57. package/dist/types.d.ts +168 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/types.js +50 -0
  60. package/dist/types.js.map +1 -0
  61. package/dist/version.d.ts +23 -0
  62. package/dist/version.d.ts.map +1 -0
  63. package/dist/version.js +229 -0
  64. package/dist/version.js.map +1 -0
  65. package/package.json +66 -0
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Shared type definitions for ruckup.
3
+ */
4
+ /** Dependency type sections in package.json */
5
+ export type DepType = 'dependencies' | 'devDependencies' | 'optionalDependencies' | 'peerDependencies' | 'packageManager';
6
+ /** A single dependency with its current and target versions */
7
+ export interface UpgradeResult {
8
+ name: string;
9
+ current: string;
10
+ currentVersion: string;
11
+ target: string;
12
+ targetVersion: string;
13
+ depType: DepType;
14
+ semverChange: 'major' | 'minor' | 'patch' | 'prerelease' | 'build' | null;
15
+ isDeprecated: boolean;
16
+ publishDate?: string;
17
+ repositoryUrl?: string;
18
+ homepage?: string;
19
+ /** Security advisory info (populated when --security or interactive) */
20
+ advisories?: Advisory[];
21
+ /** Dependency diff info (populated when --inspect-deps or interactive) */
22
+ depDiff?: DepDiff;
23
+ /** Release info (populated when release notes are fetched) */
24
+ releaseInfo?: ReleaseInfo;
25
+ /** Whether the package owner changed between versions */
26
+ ownerChanged?: boolean;
27
+ }
28
+ /** npm security advisory */
29
+ export interface Advisory {
30
+ id: number;
31
+ title: string;
32
+ url: string;
33
+ severity: 'critical' | 'high' | 'moderate' | 'low' | 'info';
34
+ vulnerableVersions: string;
35
+ recommendation?: string;
36
+ }
37
+ /** Dependency diff between two versions */
38
+ export interface DepDiff {
39
+ added: Record<string, string>;
40
+ removed: Record<string, string>;
41
+ changed: Record<string, {
42
+ from: string;
43
+ to: string;
44
+ }>;
45
+ totalAdded: number;
46
+ totalRemoved: number;
47
+ totalChanged: number;
48
+ }
49
+ /** Release/tag information from SCM */
50
+ export interface ReleaseInfo {
51
+ tagName: string;
52
+ releaseName?: string;
53
+ body?: string;
54
+ releaseUrl?: string;
55
+ compareUrl?: string;
56
+ repoUrl?: string;
57
+ publishedAt?: string;
58
+ }
59
+ /** Raw npm registry package metadata */
60
+ export interface NpmPackageMetadata {
61
+ name: string;
62
+ 'dist-tags': Record<string, string>;
63
+ versions: Record<string, NpmVersionMetadata>;
64
+ time: Record<string, string>;
65
+ repository?: {
66
+ type?: string;
67
+ url?: string;
68
+ } | string;
69
+ homepage?: string;
70
+ description?: string;
71
+ }
72
+ /** Metadata for a single version from the registry */
73
+ export interface NpmVersionMetadata {
74
+ name: string;
75
+ version: string;
76
+ dependencies?: Record<string, string>;
77
+ devDependencies?: Record<string, string>;
78
+ peerDependencies?: Record<string, string>;
79
+ optionalDependencies?: Record<string, string>;
80
+ deprecated?: string | boolean;
81
+ engines?: Record<string, string>;
82
+ repository?: {
83
+ type?: string;
84
+ url?: string;
85
+ } | string;
86
+ homepage?: string;
87
+ maintainers?: Array<{
88
+ name: string;
89
+ email?: string;
90
+ }>;
91
+ _npmUser?: {
92
+ name: string;
93
+ email?: string;
94
+ };
95
+ dist?: {
96
+ shasum: string;
97
+ tarball: string;
98
+ integrity?: string;
99
+ signatures?: Array<{
100
+ keyid: string;
101
+ sig: string;
102
+ }>;
103
+ };
104
+ }
105
+ /** Version target strategy */
106
+ export type TargetStrategy = 'latest' | 'newest' | 'greatest' | 'minor' | 'patch' | 'semver';
107
+ /** CLI options (mirrors ncu options + ruckup additions) */
108
+ export interface RuckupOptions {
109
+ upgrade: boolean;
110
+ interactive: boolean;
111
+ global: boolean;
112
+ filter?: string[];
113
+ reject?: string[];
114
+ target: TargetStrategy | string;
115
+ packageFile: string;
116
+ packageManager: string;
117
+ registry: string;
118
+ registryType: 'npm' | 'json';
119
+ dep: string;
120
+ pre: boolean;
121
+ silent: boolean;
122
+ loglevel: 'silent' | 'error' | 'minimal' | 'warn' | 'info' | 'verbose' | 'silly';
123
+ format: string[];
124
+ color: boolean;
125
+ jsonAll: boolean;
126
+ jsonUpgraded: boolean;
127
+ jsonDeps: boolean;
128
+ concurrency: number;
129
+ retry: number;
130
+ timeout: number;
131
+ cache: boolean;
132
+ cacheFile: string;
133
+ cacheExpiration: number;
134
+ cacheClear: boolean;
135
+ filterVersion?: string[];
136
+ rejectVersion?: string[];
137
+ enginesNode: boolean;
138
+ minimal: boolean;
139
+ peer: boolean;
140
+ deprecated: boolean;
141
+ removeRange: boolean;
142
+ cooldown?: string;
143
+ workspace?: string[];
144
+ workspaces: boolean;
145
+ root: boolean;
146
+ deep: boolean;
147
+ cwd: string;
148
+ prefix?: string;
149
+ doctor: boolean;
150
+ doctorInstall?: string;
151
+ doctorTest?: string;
152
+ configFileName?: string;
153
+ configFilePath?: string;
154
+ mergeConfig: boolean;
155
+ stdin: boolean;
156
+ packageData?: string;
157
+ verbose: boolean;
158
+ errorLevel: number;
159
+ security: boolean;
160
+ inspectDeps: boolean;
161
+ diff: boolean;
162
+ openRelease: boolean;
163
+ openDiff: boolean;
164
+ openRepo: boolean;
165
+ githubToken?: string;
166
+ }
167
+ export declare const DEFAULT_OPTIONS: RuckupOptions;
168
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Shared type definitions for ruckup.
3
+ */
4
+ export const DEFAULT_OPTIONS = {
5
+ upgrade: false,
6
+ interactive: false,
7
+ global: false,
8
+ target: 'latest',
9
+ packageFile: './package.json',
10
+ packageManager: 'npm',
11
+ registry: 'https://registry.npmjs.org',
12
+ registryType: 'npm',
13
+ dep: 'prod,dev,optional',
14
+ pre: false,
15
+ silent: false,
16
+ loglevel: 'warn',
17
+ format: [],
18
+ color: true,
19
+ jsonAll: false,
20
+ jsonUpgraded: false,
21
+ jsonDeps: false,
22
+ concurrency: 8,
23
+ retry: 3,
24
+ timeout: 30000,
25
+ cache: false,
26
+ cacheFile: '~/.ncu-cache.json',
27
+ cacheExpiration: 10,
28
+ cacheClear: false,
29
+ enginesNode: false,
30
+ minimal: false,
31
+ peer: false,
32
+ deprecated: true,
33
+ removeRange: false,
34
+ workspaces: false,
35
+ root: true,
36
+ deep: false,
37
+ cwd: process.cwd(),
38
+ doctor: false,
39
+ mergeConfig: false,
40
+ stdin: false,
41
+ verbose: false,
42
+ errorLevel: 1,
43
+ security: false,
44
+ inspectDeps: false,
45
+ diff: false,
46
+ openRelease: false,
47
+ openDiff: false,
48
+ openRepo: false,
49
+ };
50
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0LH,MAAM,CAAC,MAAM,eAAe,GAAkB;IAC5C,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,KAAK;IAClB,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,gBAAgB;IAC7B,cAAc,EAAE,KAAK;IACrB,QAAQ,EAAE,4BAA4B;IACtC,YAAY,EAAE,KAAK;IACnB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,KAAK;IAEV,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,KAAK;IAEf,WAAW,EAAE,CAAC;IACd,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,KAAK;IAEd,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,mBAAmB;IAC9B,eAAe,EAAE,EAAE;IACnB,UAAU,EAAE,KAAK;IAEjB,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,KAAK;IACX,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,KAAK;IAElB,UAAU,EAAE,KAAK;IACjB,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;IAElB,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,KAAK;IAClB,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,CAAC;IAEb,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,KAAK;IAClB,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,KAAK;IAClB,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;CAChB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Semantic version resolution with range preservation and target strategies.
3
+ */
4
+ import type { NpmPackageMetadata, RuckupOptions } from './types.js';
5
+ /** Parse the range operator prefix from a version string */
6
+ export declare function parseRangeOperator(versionRange: string): {
7
+ operator: string;
8
+ version: string;
9
+ };
10
+ /** Reconstruct a version range string with the original operator */
11
+ export declare function applyRangeOperator(operator: string, newVersion: string): string;
12
+ /** Get all valid semver versions from package metadata, sorted ascending */
13
+ export declare function getSortedVersions(metadata: NpmPackageMetadata, options: {
14
+ pre?: boolean;
15
+ deprecated?: boolean;
16
+ }): string[];
17
+ /** Resolve the target version for a package based on strategy */
18
+ export declare function resolveTargetVersion(currentRange: string, metadata: NpmPackageMetadata, options: RuckupOptions): string | null;
19
+ /** Determine which semver change type occurred */
20
+ export declare function determineSemverChange(fromVersion: string, toVersion: string): 'major' | 'minor' | 'patch' | 'prerelease' | 'build' | null;
21
+ /** Build the new version range string preserving the original operator */
22
+ export declare function buildUpgradedRange(currentRange: string, targetVersion: string): string;
23
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAGlB,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CA0BA;AAED,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAiB/E;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/C,MAAM,EAAE,CAgBV;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,aAAa,GACrB,MAAM,GAAG,IAAI,CAiIf;AAED,kDAAkD;AAClD,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,IAAI,CAU7D;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,MAAM,CAGR"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Semantic version resolution with range preservation and target strategies.
3
+ */
4
+ import semver from 'semver';
5
+ /** Parse the range operator prefix from a version string */
6
+ export function parseRangeOperator(versionRange) {
7
+ const trimmed = versionRange.trim();
8
+ // Handle x-ranges: 1.x, 1.x.x, 1.*
9
+ if (/^\d+\.x(\.x)?$/i.test(trimmed) || /^\d+\.\*(\.\*)?$/.test(trimmed)) {
10
+ return { operator: 'x-range', version: trimmed };
11
+ }
12
+ // Wildcard
13
+ if (trimmed === '*' || trimmed === 'x') {
14
+ return { operator: '*', version: '*' };
15
+ }
16
+ // Operators: >=, <=, >, <, ^, ~, =
17
+ const match = trimmed.match(/^([~^>=<]=?)\s*(.+)$/);
18
+ if (match) {
19
+ return { operator: match[1], version: match[2] };
20
+ }
21
+ // Hyphen range: 1.0.0 - 2.0.0
22
+ if (trimmed.includes(' - ')) {
23
+ return { operator: 'hyphen', version: trimmed };
24
+ }
25
+ // No operator = exact version
26
+ return { operator: '', version: trimmed };
27
+ }
28
+ /** Reconstruct a version range string with the original operator */
29
+ export function applyRangeOperator(operator, newVersion) {
30
+ switch (operator) {
31
+ case '*':
32
+ return '*';
33
+ case 'x-range': {
34
+ const parsed = semver.parse(newVersion);
35
+ if (!parsed)
36
+ return newVersion;
37
+ return `${parsed.major}.x`;
38
+ }
39
+ case 'hyphen':
40
+ // Hyphen ranges are replaced with a caret of the new version
41
+ return `^${newVersion}`;
42
+ case '':
43
+ return newVersion;
44
+ default:
45
+ return `${operator}${newVersion}`;
46
+ }
47
+ }
48
+ /** Get all valid semver versions from package metadata, sorted ascending */
49
+ export function getSortedVersions(metadata, options) {
50
+ const versions = [];
51
+ for (const [ver, meta] of Object.entries(metadata.versions)) {
52
+ if (!semver.valid(ver))
53
+ continue;
54
+ // Skip prerelease unless --pre
55
+ if (!options.pre && semver.prerelease(ver)?.length)
56
+ continue;
57
+ // Skip deprecated unless --deprecated (default true)
58
+ if (options.deprecated === false && meta.deprecated)
59
+ continue;
60
+ versions.push(ver);
61
+ }
62
+ return versions.sort(semver.compare);
63
+ }
64
+ /** Resolve the target version for a package based on strategy */
65
+ export function resolveTargetVersion(currentRange, metadata, options) {
66
+ const { operator, version: currentVersion } = parseRangeOperator(currentRange);
67
+ const parsedCurrent = semver.coerce(currentVersion);
68
+ if (!parsedCurrent && operator !== '*')
69
+ return null;
70
+ const target = options.target;
71
+ // Handle dist-tag targets like @beta, @next
72
+ if (target.startsWith('@')) {
73
+ const tag = target.slice(1);
74
+ const tagVersion = metadata['dist-tags'][tag];
75
+ if (!tagVersion)
76
+ return null;
77
+ if (parsedCurrent && semver.lte(tagVersion, parsedCurrent.version))
78
+ return null;
79
+ return tagVersion;
80
+ }
81
+ const allVersions = getSortedVersions(metadata, {
82
+ pre: options.pre,
83
+ deprecated: options.deprecated,
84
+ });
85
+ if (allVersions.length === 0)
86
+ return null;
87
+ // Apply cooldown filter
88
+ const cooldownMs = parseCooldown(options.cooldown);
89
+ const filteredVersions = cooldownMs
90
+ ? allVersions.filter((v) => {
91
+ const publishTime = metadata.time[v];
92
+ if (!publishTime)
93
+ return true;
94
+ return Date.now() - new Date(publishTime).getTime() >= cooldownMs;
95
+ })
96
+ : allVersions;
97
+ if (filteredVersions.length === 0)
98
+ return null;
99
+ let resolved = null;
100
+ switch (target) {
101
+ case 'latest': {
102
+ const latest = metadata['dist-tags'].latest;
103
+ if (!latest)
104
+ return null;
105
+ // Check if latest is newer than current
106
+ if (parsedCurrent && semver.lte(latest, parsedCurrent.version))
107
+ return null;
108
+ // Respect pre filter
109
+ if (!options.pre && semver.prerelease(latest)?.length)
110
+ return null;
111
+ resolved = latest;
112
+ break;
113
+ }
114
+ case 'newest': {
115
+ // Most recently published version
116
+ let newestVersion = null;
117
+ let newestTime = 0;
118
+ for (const ver of filteredVersions) {
119
+ const publishTime = metadata.time[ver];
120
+ if (publishTime) {
121
+ const t = new Date(publishTime).getTime();
122
+ if (t > newestTime) {
123
+ newestTime = t;
124
+ newestVersion = ver;
125
+ }
126
+ }
127
+ }
128
+ if (!newestVersion)
129
+ return null;
130
+ if (parsedCurrent && semver.lte(newestVersion, parsedCurrent.version))
131
+ return null;
132
+ resolved = newestVersion;
133
+ break;
134
+ }
135
+ case 'greatest': {
136
+ // Highest semver
137
+ const greatest = filteredVersions[filteredVersions.length - 1];
138
+ if (parsedCurrent && semver.lte(greatest, parsedCurrent.version))
139
+ return null;
140
+ resolved = greatest;
141
+ break;
142
+ }
143
+ case 'minor': {
144
+ if (!parsedCurrent)
145
+ return null;
146
+ // Highest minor without bumping major
147
+ const candidates = filteredVersions.filter((v) => semver.major(v) === parsedCurrent.major && semver.gt(v, parsedCurrent.version));
148
+ if (candidates.length === 0)
149
+ return null;
150
+ resolved = candidates[candidates.length - 1];
151
+ break;
152
+ }
153
+ case 'patch': {
154
+ if (!parsedCurrent)
155
+ return null;
156
+ // Highest patch without bumping major or minor
157
+ const candidates = filteredVersions.filter((v) => semver.major(v) === parsedCurrent.major &&
158
+ semver.minor(v) === parsedCurrent.minor &&
159
+ semver.gt(v, parsedCurrent.version));
160
+ if (candidates.length === 0)
161
+ return null;
162
+ resolved = candidates[candidates.length - 1];
163
+ break;
164
+ }
165
+ case 'semver': {
166
+ // Highest version satisfying current range
167
+ const satisfying = filteredVersions.filter((v) => semver.satisfies(v, currentRange));
168
+ if (satisfying.length === 0)
169
+ return null;
170
+ const highest = satisfying[satisfying.length - 1];
171
+ if (parsedCurrent && semver.lte(highest, parsedCurrent.version))
172
+ return null;
173
+ resolved = highest;
174
+ break;
175
+ }
176
+ default:
177
+ // Unknown target — try as dist-tag
178
+ resolved = metadata['dist-tags'][target] ?? null;
179
+ if (resolved && parsedCurrent && semver.lte(resolved, parsedCurrent.version)) {
180
+ return null;
181
+ }
182
+ break;
183
+ }
184
+ if (!resolved)
185
+ return null;
186
+ // --minimal: only upgrade if current range doesn't satisfy the target
187
+ if (options.minimal && semver.satisfies(resolved, currentRange)) {
188
+ return null;
189
+ }
190
+ return resolved;
191
+ }
192
+ /** Determine which semver change type occurred */
193
+ export function determineSemverChange(fromVersion, toVersion) {
194
+ const from = semver.parse(fromVersion);
195
+ const to = semver.parse(toVersion);
196
+ if (!from || !to)
197
+ return null;
198
+ if (to.major !== from.major)
199
+ return 'major';
200
+ if (to.minor !== from.minor)
201
+ return 'minor';
202
+ if (to.patch !== from.patch)
203
+ return 'patch';
204
+ if (to.prerelease.length || from.prerelease.length)
205
+ return 'prerelease';
206
+ return 'build';
207
+ }
208
+ /** Build the new version range string preserving the original operator */
209
+ export function buildUpgradedRange(currentRange, targetVersion) {
210
+ const { operator } = parseRangeOperator(currentRange);
211
+ return applyRangeOperator(operator, targetVersion);
212
+ }
213
+ /** Parse cooldown string to milliseconds */
214
+ function parseCooldown(cooldown) {
215
+ if (!cooldown)
216
+ return null;
217
+ const match = cooldown.match(/^(\d+)(d|h|m)?$/);
218
+ if (!match)
219
+ return null;
220
+ const value = parseInt(match[1], 10);
221
+ const unit = match[2] || 'd';
222
+ switch (unit) {
223
+ case 'd': return value * 24 * 60 * 60 * 1000;
224
+ case 'h': return value * 60 * 60 * 1000;
225
+ case 'm': return value * 60 * 1000;
226
+ default: return value * 24 * 60 * 60 * 1000;
227
+ }
228
+ }
229
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "ruckup",
3
+ "version": "0.1.0",
4
+ "description": "npm-check-updates with security inspection — identify malicious upgraded packages",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "ruckup": "dist/cli.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "dev": "tsx src/cli.ts",
14
+ "test": "vitest run",
15
+ "test:watch": "vitest",
16
+ "lint": "eslint src/",
17
+ "prepublishOnly": "npm run build"
18
+ },
19
+ "keywords": [
20
+ "npm",
21
+ "check",
22
+ "updates",
23
+ "upgrade",
24
+ "dependencies",
25
+ "security",
26
+ "audit",
27
+ "diff",
28
+ "malicious",
29
+ "supply-chain"
30
+ ],
31
+ "license": "MIT",
32
+ "files": [
33
+ "dist",
34
+ "README.md",
35
+ "LICENSE"
36
+ ],
37
+ "engines": {
38
+ "node": ">=18.0.0"
39
+ },
40
+ "dependencies": {
41
+ "chalk": "^5.3.0",
42
+ "commander": "^12.1.0",
43
+ "cosmiconfig": "^9.0.0",
44
+ "detect-indent": "^7.0.1",
45
+ "detect-newline": "^4.0.1",
46
+ "diff": "^7.0.0",
47
+ "ini": "^5.0.0",
48
+ "marked": "^15.0.0",
49
+ "marked-terminal": "^7.2.1",
50
+ "minimatch": "^10.0.1",
51
+ "open": "^10.1.0",
52
+ "ora": "^8.1.1",
53
+ "p-limit": "^6.2.0",
54
+ "semver": "^7.6.3",
55
+ "strip-ansi": "^7.1.0"
56
+ },
57
+ "devDependencies": {
58
+ "@types/diff": "^7.0.0",
59
+ "@types/ini": "^4.1.1",
60
+ "@types/node": "^22.10.0",
61
+ "@types/semver": "^7.5.8",
62
+ "tsx": "^4.19.2",
63
+ "typescript": "^5.7.0",
64
+ "vitest": "^2.1.0"
65
+ }
66
+ }