Skip to content

Commit 6f42e14

Browse files
author
Julien P
committed
Add SemVerStatic
• Add static version of type definition to make usage with Angular easier • Add tests for the new interface
1 parent 9f0f926 commit 6f42e14

File tree

2 files changed

+88
-2
lines changed

2 files changed

+88
-2
lines changed

semver/semver-tests.ts

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,58 @@ sets = range.set;
9494

9595
var lims:SemVerModule.Comparator[];
9696
lims = range.parseRange(str);
97+
98+
/**
99+
* Test Static version
100+
*/
101+
var semver: SemVerStatic = semver;
102+
var testString: string;
103+
var testNumber: number;
104+
var testBoolean: boolean;
105+
106+
testString = semver.SEMVER_SPEC_VERSION;
107+
108+
testString = semver.valid('v1.0.0');
109+
testString = semver.valid('v1.0.0', true);
110+
testString = semver.inc('v1.0.0', 'major');
111+
testString = semver.inc('v1.0.0', 'major', true);
112+
testNumber = semver.major('v1.0.0');
113+
testNumber = semver.major('v1.0.0', true);
114+
testNumber = semver.minor('v1.0.0');
115+
testNumber = semver.minor('v1.0.0', true);
116+
testNumber = semver.patch('v1.0.0');
117+
testNumber = semver.patch('v1.0.0', true);
118+
119+
testBoolean = semver.gt('v1.0.0', 'v2.0.0');
120+
testBoolean = semver.gt('v1.0.0', 'v2.0.0', true);
121+
testBoolean = semver.gte('v1.0.0', 'v2.0.0');
122+
testBoolean = semver.gte('v1.0.0', 'v2.0.0', true);
123+
testBoolean = semver.lt('v1.0.0', 'v2.0.0');
124+
testBoolean = semver.lt('v1.0.0', 'v2.0.0', true);
125+
testBoolean = semver.lte('v1.0.0', 'v2.0.0');
126+
testBoolean = semver.lte('v1.0.0', 'v2.0.0', true);
127+
testBoolean = semver.eq('v1.0.0', 'v2.0.0');
128+
testBoolean = semver.eq('v1.0.0', 'v2.0.0', true);
129+
testBoolean = semver.neq('v1.0.0', 'v2.0.0');
130+
testBoolean = semver.neq('v1.0.0', 'v2.0.0', true);
131+
testBoolean = semver.cmp('v1.0.0', '===', 'v2.0.0');
132+
testBoolean = semver.cmp('v1.0.0', '!==', 'v2.0.0', true);
133+
testNumber = semver.compare('v1.0.0', 'v2.0.0');
134+
testNumber = semver.compare('v1.0.0', 'v2.0.0', true);
135+
testNumber = semver.rcompare('v1.0.0', 'v2.0.0');
136+
testNumber = semver.rcompare('v1.0.0', 'v2.0.0', true);
137+
testString = semver.diff('v1.0.0', 'v2.0.0');
138+
testString = semver.diff('v1.0.0', 'v2.0.0', true);
139+
140+
testString = semver.validRange('^1.0.0');
141+
testString = semver.validRange('^1.0.0', true);
142+
testBoolean = semver.satisfies('v1.0.0', '^1.0.0');
143+
testBoolean = semver.satisfies('v1.0.0', '^1.0.0', true);
144+
testString = semver.maxSatisfying(['v1.0.0', 'v2.0.0'], '^1.0.0');
145+
testString = semver.maxSatisfying(['v1.0.0', 'v2.0.0'], '^1.0.0', true);
146+
testBoolean = semver.gtr('v1.0.0', '^1.0.0');
147+
testBoolean = semver.gtr('v1.0.0', '^1.0.0', true);
148+
testBoolean = semver.ltr('v1.0.0', '^1.0.0');
149+
testBoolean = semver.ltr('v1.0.0', '^1.0.0', true);
150+
testBoolean = semver.outside('v1.0.0', '^1.0.0', '<');
151+
testBoolean = semver.outside('v1.0.0', '^1.0.0', '>', true);

semver/semver.d.ts

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
// Definitions by: Bart van der Schoor <https://github.com/Bartvds>
44
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/semver
55

6-
declare var semver: SemVerModule.SemVer;
7-
86
declare module SemVerModule {
97
/**
108
* Return the parsed version, or null if it's not valid.
@@ -138,6 +136,39 @@ declare module SemVerModule {
138136
}
139137
}
140138

139+
interface SemVerStatic {
140+
SemVer(version: string, loose?: boolean): SemVerModule.SemVer;
141+
Comparator(comp: string, loose?: boolean): SemVerModule.Comparator;
142+
Range(range: string, loose?: boolean): SemVerModule.Range;
143+
clean(version: string, loose?: boolean): string;
144+
145+
SEMVER_SPEC_VERSION: string;
146+
147+
valid(v: string, loose?: boolean): string;
148+
inc(v: string, release: string, loose?: boolean): string;
149+
major(v: string, loose?: boolean): number;
150+
minor(v: string, loose?: boolean): number;
151+
patch(v: string, loose?: boolean): number;
152+
gt(v1: string, v2: string, loose?: boolean): boolean;
153+
gte(v1: string, v2: string, loose?: boolean): boolean;
154+
lt(v1: string, v2: string, loose?: boolean): boolean;
155+
lte(v1: string, v2: string, loose?: boolean): boolean;
156+
eq(v1: string, v2: string, loose?: boolean): boolean;
157+
neq(v1: string, v2: string, loose?: boolean): boolean;
158+
cmp(v1: string, comparator: any, v2: string, loose?: boolean): boolean;
159+
compare(v1: string, v2: string, loose?: boolean): number;
160+
rcompare(v1: string, v2: string, loose?: boolean): number;
161+
diff(v1: string, v2: string, loose?: boolean): string;
162+
validRange(range: string, loose?: boolean): string;
163+
satisfies(version: string, range: string, loose?: boolean): boolean;
164+
maxSatisfying(versions: string[], range: string, loose?: boolean): string;
165+
gtr(version: string, range: string, loose?: boolean): boolean;
166+
ltr(version: string, range: string, loose?: boolean): boolean;
167+
outside(version: string, range: string, hilo: string, loose?: boolean): boolean;
168+
}
169+
170+
declare var semver: SemVerStatic;
171+
141172
declare module "semver" {
142173
export = SemVerModule;
143174
}

0 commit comments

Comments
 (0)