jquery-tablesorter 1.16.3 → 1.16.4
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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/lib/jquery-tablesorter/version.rb +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/extras/semver-mod.js +277 -86
- data/vendor/assets/javascripts/jquery-tablesorter/extras/semver.js +272 -81
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.combined.js +4483 -0
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.js +45 -13
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.widgets.js +10 -11
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-extract.js +9 -16
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-iso8601.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-month.js +3 -4
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-range.js +2 -5
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-two-digit-year.js +2 -3
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-weekday.js +2 -3
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date.js +6 -10
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-duration.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-feet-inch-fraction.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-file-type.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-ignore-articles.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-image.js +2 -3
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-input-select.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-metric.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-named-numbers.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-network.js +9 -6
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-roman.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-alignChar.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-chart.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-columnSelector.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-cssStickyHeaders.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-editable.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter-formatter-html5.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter-formatter-jui.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter-formatter-select2.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter-type-insideRange.js +1 -4
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-formatter.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-grouping.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-headerTitles.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-math.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-output.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-print.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-reflow.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-repeatheaders.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-staticRow.js +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5e0cf6bbed8cef35f8c06f69d9cd34656cabe552
|
|
4
|
+
data.tar.gz: d35fb81a407e3cdada26f41ad02defd7bef200de
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b4ecb45d3d07efe428b91dc590dfe124488c3b0b2ef459ac8ff141601315c6711fd98b27782bdb2a5a9096de7f42f12ff0f5c7a8fe15ee73d91dc06b3ab4d9d5
|
|
7
|
+
data.tar.gz: e23e7e585c11214b3dab625e78a9d935533aff38a27db9bcb27cc442ae3f257057ddec03877b8b832194b6cf12516b8c8bc65174ce92967500b4be488590b45c
|
data/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Simple integration of jquery-tablesorter into the asset pipeline.
|
|
6
6
|
|
|
7
|
-
Current tablesorter version: 2.21.
|
|
7
|
+
Current tablesorter version: 2.21.4 (3/28/2015), [documentation]
|
|
8
8
|
|
|
9
9
|
Any issue associated with the js/css files, please report to [Mottie's fork].
|
|
10
10
|
|
|
@@ -38,7 +38,7 @@ In your `application.js`
|
|
|
38
38
|
//= require jquery-tablesorter
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
This will require all jquery-tablesorter files
|
|
41
|
+
This will require all core jquery-tablesorter files. Please note: This loads only the core-widgets and will neither include the extracted widgets nor any files from the addons and extras directories. Those files must be required manually as shown below.
|
|
42
42
|
|
|
43
43
|
Or you can include single file with:
|
|
44
44
|
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/*! Modified semver.js for node.js (v4.3.3, 3/27/2015) *//*
|
|
2
|
+
semver-mod.js by R.Garrison (@Mottie)
|
|
3
|
+
semver.js by @isaacs: https://github.com/isaacs/node-semver
|
|
4
4
|
( all modifications have been labeled )
|
|
5
5
|
*/
|
|
6
6
|
// ***** MODIFIED LINE BELOW *****
|
|
7
7
|
(function(){
|
|
8
8
|
// ***** MODIFIED LINE BELOW *****
|
|
9
9
|
var module = { exports : {} };
|
|
10
|
-
|
|
11
10
|
// export the class if we are in a Node-like system.
|
|
12
11
|
// ***** MODIFIED LINE BELOW *****
|
|
13
12
|
// if (typeof module === 'object' && module.exports === exports)
|
|
14
13
|
// ***** MODIFIED LINE BELOW *****
|
|
15
|
-
|
|
14
|
+
var exports = module.exports = SemVer;
|
|
16
15
|
|
|
17
16
|
// The debug function is excluded entirely from the minified version.
|
|
18
17
|
/* nomin */ var debug;
|
|
@@ -32,6 +31,9 @@ var module = { exports : {} };
|
|
|
32
31
|
// Not necessarily the package version of this code.
|
|
33
32
|
exports.SEMVER_SPEC_VERSION = '2.0.0';
|
|
34
33
|
|
|
34
|
+
var MAX_LENGTH = 256;
|
|
35
|
+
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
|
|
36
|
+
|
|
35
37
|
// The actual regexps go on exports.re
|
|
36
38
|
var re = exports.re = [];
|
|
37
39
|
var src = exports.src = [];
|
|
@@ -150,18 +152,18 @@ var XRANGEPLAIN = R++;
|
|
|
150
152
|
src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
|
|
151
153
|
'(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
|
|
152
154
|
'(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
|
|
153
|
-
'(?:
|
|
154
|
-
'
|
|
155
|
+
'(?:' + src[PRERELEASE] + ')?' +
|
|
156
|
+
src[BUILD] + '?' +
|
|
157
|
+
')?)?';
|
|
155
158
|
|
|
156
159
|
var XRANGEPLAINLOOSE = R++;
|
|
157
160
|
src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
|
|
158
161
|
'(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
|
|
159
162
|
'(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
|
|
160
|
-
'(?:
|
|
161
|
-
'
|
|
163
|
+
'(?:' + src[PRERELEASELOOSE] + ')?' +
|
|
164
|
+
src[BUILD] + '?' +
|
|
165
|
+
')?)?';
|
|
162
166
|
|
|
163
|
-
// >=2.x, for example, means >=2.0.0-0
|
|
164
|
-
// <1.x would be the same as "<1.0.0-0", though.
|
|
165
167
|
var XRANGE = R++;
|
|
166
168
|
src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$';
|
|
167
169
|
var XRANGELOOSE = R++;
|
|
@@ -245,8 +247,24 @@ for (var i = 0; i < R; i++) {
|
|
|
245
247
|
|
|
246
248
|
exports.parse = parse;
|
|
247
249
|
function parse(version, loose) {
|
|
250
|
+
if (version instanceof SemVer)
|
|
251
|
+
return version;
|
|
252
|
+
|
|
253
|
+
if (typeof version !== 'string')
|
|
254
|
+
return null;
|
|
255
|
+
|
|
256
|
+
if (version.length > MAX_LENGTH)
|
|
257
|
+
return null;
|
|
258
|
+
|
|
248
259
|
var r = loose ? re[LOOSE] : re[FULL];
|
|
249
|
-
|
|
260
|
+
if (!r.test(version))
|
|
261
|
+
return null;
|
|
262
|
+
|
|
263
|
+
try {
|
|
264
|
+
return new SemVer(version, loose);
|
|
265
|
+
} catch (er) {
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
250
268
|
}
|
|
251
269
|
|
|
252
270
|
exports.valid = valid;
|
|
@@ -258,7 +276,7 @@ function valid(version, loose) {
|
|
|
258
276
|
|
|
259
277
|
exports.clean = clean;
|
|
260
278
|
function clean(version, loose) {
|
|
261
|
-
var s = parse(version, loose);
|
|
279
|
+
var s = parse(version.trim().replace(/^[=v]+/, ''), loose);
|
|
262
280
|
return s ? s.version : null;
|
|
263
281
|
}
|
|
264
282
|
|
|
@@ -271,8 +289,13 @@ function SemVer(version, loose) {
|
|
|
271
289
|
return version;
|
|
272
290
|
else
|
|
273
291
|
version = version.version;
|
|
292
|
+
} else if (typeof version !== 'string') {
|
|
293
|
+
throw new TypeError('Invalid Version: ' + version);
|
|
274
294
|
}
|
|
275
295
|
|
|
296
|
+
if (version.length > MAX_LENGTH)
|
|
297
|
+
throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
|
|
298
|
+
|
|
276
299
|
if (!(this instanceof SemVer))
|
|
277
300
|
return new SemVer(version, loose);
|
|
278
301
|
|
|
@@ -290,12 +313,26 @@ function SemVer(version, loose) {
|
|
|
290
313
|
this.minor = +m[2];
|
|
291
314
|
this.patch = +m[3];
|
|
292
315
|
|
|
316
|
+
if (this.major > MAX_SAFE_INTEGER || this.major < 0)
|
|
317
|
+
throw new TypeError('Invalid major version')
|
|
318
|
+
|
|
319
|
+
if (this.minor > MAX_SAFE_INTEGER || this.minor < 0)
|
|
320
|
+
throw new TypeError('Invalid minor version')
|
|
321
|
+
|
|
322
|
+
if (this.patch > MAX_SAFE_INTEGER || this.patch < 0)
|
|
323
|
+
throw new TypeError('Invalid patch version')
|
|
324
|
+
|
|
293
325
|
// numberify any prerelease numeric ids
|
|
294
326
|
if (!m[4])
|
|
295
327
|
this.prerelease = [];
|
|
296
328
|
else
|
|
297
329
|
this.prerelease = m[4].split('.').map(function(id) {
|
|
298
|
-
|
|
330
|
+
if (/^[0-9]+$/.test(id)) {
|
|
331
|
+
var num = +id
|
|
332
|
+
if (num >= 0 && num < MAX_SAFE_INTEGER)
|
|
333
|
+
return num
|
|
334
|
+
}
|
|
335
|
+
return id;
|
|
299
336
|
});
|
|
300
337
|
|
|
301
338
|
this.build = m[5] ? m[5].split('.') : [];
|
|
@@ -343,7 +380,7 @@ SemVer.prototype.comparePre = function(other) {
|
|
|
343
380
|
return -1;
|
|
344
381
|
else if (!this.prerelease.length && other.prerelease.length)
|
|
345
382
|
return 1;
|
|
346
|
-
else if (!this.prerelease.
|
|
383
|
+
else if (!this.prerelease.length && !other.prerelease.length)
|
|
347
384
|
return 0;
|
|
348
385
|
|
|
349
386
|
var i = 0;
|
|
@@ -364,19 +401,72 @@ SemVer.prototype.comparePre = function(other) {
|
|
|
364
401
|
} while (++i);
|
|
365
402
|
};
|
|
366
403
|
|
|
367
|
-
|
|
404
|
+
// preminor will bump the version up to the next minor release, and immediately
|
|
405
|
+
// down to pre-release. premajor and prepatch work the same way.
|
|
406
|
+
SemVer.prototype.inc = function(release, identifier) {
|
|
368
407
|
switch (release) {
|
|
369
|
-
case '
|
|
408
|
+
case 'premajor':
|
|
409
|
+
this.prerelease.length = 0;
|
|
410
|
+
this.patch = 0;
|
|
411
|
+
this.minor = 0;
|
|
370
412
|
this.major++;
|
|
371
|
-
this.
|
|
372
|
-
|
|
413
|
+
this.inc('pre', identifier);
|
|
414
|
+
break;
|
|
415
|
+
case 'preminor':
|
|
416
|
+
this.prerelease.length = 0;
|
|
417
|
+
this.patch = 0;
|
|
373
418
|
this.minor++;
|
|
374
|
-
this.
|
|
419
|
+
this.inc('pre', identifier);
|
|
420
|
+
break;
|
|
421
|
+
case 'prepatch':
|
|
422
|
+
// If this is already a prerelease, it will bump to the next version
|
|
423
|
+
// drop any prereleases that might already exist, since they are not
|
|
424
|
+
// relevant at this point.
|
|
425
|
+
this.prerelease.length = 0;
|
|
426
|
+
this.inc('patch', identifier);
|
|
427
|
+
this.inc('pre', identifier);
|
|
428
|
+
break;
|
|
429
|
+
// If the input is a non-prerelease version, this acts the same as
|
|
430
|
+
// prepatch.
|
|
431
|
+
case 'prerelease':
|
|
432
|
+
if (this.prerelease.length === 0)
|
|
433
|
+
this.inc('patch', identifier);
|
|
434
|
+
this.inc('pre', identifier);
|
|
435
|
+
break;
|
|
436
|
+
|
|
437
|
+
case 'major':
|
|
438
|
+
// If this is a pre-major version, bump up to the same major version.
|
|
439
|
+
// Otherwise increment major.
|
|
440
|
+
// 1.0.0-5 bumps to 1.0.0
|
|
441
|
+
// 1.1.0 bumps to 2.0.0
|
|
442
|
+
if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0)
|
|
443
|
+
this.major++;
|
|
444
|
+
this.minor = 0;
|
|
445
|
+
this.patch = 0;
|
|
446
|
+
this.prerelease = [];
|
|
447
|
+
break;
|
|
448
|
+
case 'minor':
|
|
449
|
+
// If this is a pre-minor version, bump up to the same minor version.
|
|
450
|
+
// Otherwise increment minor.
|
|
451
|
+
// 1.2.0-5 bumps to 1.2.0
|
|
452
|
+
// 1.2.1 bumps to 1.3.0
|
|
453
|
+
if (this.patch !== 0 || this.prerelease.length === 0)
|
|
454
|
+
this.minor++;
|
|
455
|
+
this.patch = 0;
|
|
456
|
+
this.prerelease = [];
|
|
457
|
+
break;
|
|
375
458
|
case 'patch':
|
|
376
|
-
this.
|
|
459
|
+
// If this is not a pre-release version, it will increment the patch.
|
|
460
|
+
// If it is a pre-release it will bump up to the same patch version.
|
|
461
|
+
// 1.2.0-5 patches to 1.2.0
|
|
462
|
+
// 1.2.0 patches to 1.2.1
|
|
463
|
+
if (this.prerelease.length === 0)
|
|
464
|
+
this.patch++;
|
|
377
465
|
this.prerelease = [];
|
|
378
466
|
break;
|
|
379
|
-
|
|
467
|
+
// This probably shouldn't be used publicly.
|
|
468
|
+
// 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
|
|
469
|
+
case 'pre':
|
|
380
470
|
if (this.prerelease.length === 0)
|
|
381
471
|
this.prerelease = [0];
|
|
382
472
|
else {
|
|
@@ -390,6 +480,15 @@ SemVer.prototype.inc = function(release) {
|
|
|
390
480
|
if (i === -1) // didn't increment anything
|
|
391
481
|
this.prerelease.push(0);
|
|
392
482
|
}
|
|
483
|
+
if (identifier) {
|
|
484
|
+
// 1.2.0-beta.1 bumps to 1.2.0-beta.2,
|
|
485
|
+
// 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
|
|
486
|
+
if (this.prerelease[0] === identifier) {
|
|
487
|
+
if (isNaN(this.prerelease[1]))
|
|
488
|
+
this.prerelease = [identifier, 0];
|
|
489
|
+
} else
|
|
490
|
+
this.prerelease = [identifier, 0];
|
|
491
|
+
}
|
|
393
492
|
break;
|
|
394
493
|
|
|
395
494
|
default:
|
|
@@ -400,14 +499,46 @@ SemVer.prototype.inc = function(release) {
|
|
|
400
499
|
};
|
|
401
500
|
|
|
402
501
|
exports.inc = inc;
|
|
403
|
-
function inc(version, release, loose) {
|
|
502
|
+
function inc(version, release, loose, identifier) {
|
|
503
|
+
if (typeof(loose) === 'string') {
|
|
504
|
+
identifier = loose;
|
|
505
|
+
loose = undefined;
|
|
506
|
+
}
|
|
507
|
+
|
|
404
508
|
try {
|
|
405
|
-
return new SemVer(version, loose).inc(release).version;
|
|
509
|
+
return new SemVer(version, loose).inc(release, identifier).version;
|
|
406
510
|
} catch (er) {
|
|
407
511
|
return null;
|
|
408
512
|
}
|
|
409
513
|
}
|
|
410
514
|
|
|
515
|
+
exports.diff = diff;
|
|
516
|
+
function diff(version1, version2) {
|
|
517
|
+
if (eq(version1, version2)) {
|
|
518
|
+
return null;
|
|
519
|
+
} else {
|
|
520
|
+
var v1 = parse(version1);
|
|
521
|
+
var v2 = parse(version2);
|
|
522
|
+
if (v1.prerelease.length || v2.prerelease.length) {
|
|
523
|
+
for (var key in v1) {
|
|
524
|
+
if (key === 'major' || key === 'minor' || key === 'patch') {
|
|
525
|
+
if (v1[key] !== v2[key]) {
|
|
526
|
+
return 'pre'+key;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
return 'prerelease';
|
|
531
|
+
}
|
|
532
|
+
for (var key in v1) {
|
|
533
|
+
if (key === 'major' || key === 'minor' || key === 'patch') {
|
|
534
|
+
if (v1[key] !== v2[key]) {
|
|
535
|
+
return key;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
|
|
411
542
|
exports.compareIdentifiers = compareIdentifiers;
|
|
412
543
|
|
|
413
544
|
var numeric = /^[0-9]+$/;
|
|
@@ -432,6 +563,21 @@ function rcompareIdentifiers(a, b) {
|
|
|
432
563
|
return compareIdentifiers(b, a);
|
|
433
564
|
}
|
|
434
565
|
|
|
566
|
+
exports.major = major;
|
|
567
|
+
function major(a, loose) {
|
|
568
|
+
return new SemVer(a, loose).major;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
exports.minor = minor;
|
|
572
|
+
function minor(a, loose) {
|
|
573
|
+
return new SemVer(a, loose).minor;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
exports.patch = patch;
|
|
577
|
+
function patch(a, loose) {
|
|
578
|
+
return new SemVer(a, loose).patch;
|
|
579
|
+
}
|
|
580
|
+
|
|
435
581
|
exports.compare = compare;
|
|
436
582
|
function compare(a, b, loose) {
|
|
437
583
|
return new SemVer(a, loose).compare(b);
|
|
@@ -495,8 +641,16 @@ exports.cmp = cmp;
|
|
|
495
641
|
function cmp(a, op, b, loose) {
|
|
496
642
|
var ret;
|
|
497
643
|
switch (op) {
|
|
498
|
-
case '===':
|
|
499
|
-
|
|
644
|
+
case '===':
|
|
645
|
+
if (typeof a === 'object') a = a.version;
|
|
646
|
+
if (typeof b === 'object') b = b.version;
|
|
647
|
+
ret = a === b;
|
|
648
|
+
break;
|
|
649
|
+
case '!==':
|
|
650
|
+
if (typeof a === 'object') a = a.version;
|
|
651
|
+
if (typeof b === 'object') b = b.version;
|
|
652
|
+
ret = a !== b;
|
|
653
|
+
break;
|
|
500
654
|
case '': case '=': case '==': ret = eq(a, b, loose); break;
|
|
501
655
|
case '!=': ret = neq(a, b, loose); break;
|
|
502
656
|
case '>': ret = gt(a, b, loose); break;
|
|
@@ -528,6 +682,8 @@ function Comparator(comp, loose) {
|
|
|
528
682
|
this.value = '';
|
|
529
683
|
else
|
|
530
684
|
this.value = this.operator + this.semver.version;
|
|
685
|
+
|
|
686
|
+
debug('comp', this);
|
|
531
687
|
}
|
|
532
688
|
|
|
533
689
|
var ANY = {};
|
|
@@ -539,24 +695,14 @@ Comparator.prototype.parse = function(comp) {
|
|
|
539
695
|
throw new TypeError('Invalid comparator: ' + comp);
|
|
540
696
|
|
|
541
697
|
this.operator = m[1];
|
|
698
|
+
if (this.operator === '=')
|
|
699
|
+
this.operator = '';
|
|
700
|
+
|
|
542
701
|
// if it literally is just '>' or '' then allow anything.
|
|
543
702
|
if (!m[2])
|
|
544
703
|
this.semver = ANY;
|
|
545
|
-
else
|
|
704
|
+
else
|
|
546
705
|
this.semver = new SemVer(m[2], this.loose);
|
|
547
|
-
|
|
548
|
-
// <1.2.3-rc DOES allow 1.2.3-beta (has prerelease)
|
|
549
|
-
// >=1.2.3 DOES NOT allow 1.2.3-beta
|
|
550
|
-
// <=1.2.3 DOES allow 1.2.3-beta
|
|
551
|
-
// However, <1.2.3 does NOT allow 1.2.3-beta,
|
|
552
|
-
// even though `1.2.3-beta < 1.2.3`
|
|
553
|
-
// The assumption is that the 1.2.3 version has something you
|
|
554
|
-
// *don't* want, so we push the prerelease down to the minimum.
|
|
555
|
-
if (this.operator === '<' && !this.semver.prerelease.length) {
|
|
556
|
-
this.semver.prerelease = ['0'];
|
|
557
|
-
this.semver.format();
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
706
|
};
|
|
561
707
|
|
|
562
708
|
Comparator.prototype.inspect = function() {
|
|
@@ -569,8 +715,14 @@ Comparator.prototype.toString = function() {
|
|
|
569
715
|
|
|
570
716
|
Comparator.prototype.test = function(version) {
|
|
571
717
|
debug('Comparator.test', version, this.loose);
|
|
572
|
-
|
|
573
|
-
|
|
718
|
+
|
|
719
|
+
if (this.semver === ANY)
|
|
720
|
+
return true;
|
|
721
|
+
|
|
722
|
+
if (typeof version === 'string')
|
|
723
|
+
version = new SemVer(version, this.loose);
|
|
724
|
+
|
|
725
|
+
return cmp(version, this.operator, this.semver, this.loose);
|
|
574
726
|
};
|
|
575
727
|
|
|
576
728
|
|
|
@@ -707,20 +859,20 @@ function replaceTilde(comp, loose) {
|
|
|
707
859
|
if (isX(M))
|
|
708
860
|
ret = '';
|
|
709
861
|
else if (isX(m))
|
|
710
|
-
ret = '>=' + M + '.0.0
|
|
862
|
+
ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
|
|
711
863
|
else if (isX(p))
|
|
712
864
|
// ~1.2 == >=1.2.0- <1.3.0-
|
|
713
|
-
ret = '>=' + M + '.' + m + '.0
|
|
865
|
+
ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
|
|
714
866
|
else if (pr) {
|
|
715
867
|
debug('replaceTilde pr', pr);
|
|
716
868
|
if (pr.charAt(0) !== '-')
|
|
717
869
|
pr = '-' + pr;
|
|
718
870
|
ret = '>=' + M + '.' + m + '.' + p + pr +
|
|
719
|
-
' <' + M + '.' + (+m + 1) + '.0
|
|
871
|
+
' <' + M + '.' + (+m + 1) + '.0';
|
|
720
872
|
} else
|
|
721
|
-
// ~1.2.3 == >=1.2.3
|
|
722
|
-
ret = '>=' + M + '.' + m + '.' + p +
|
|
723
|
-
' <' + M + '.' + (+m + 1) + '.0
|
|
873
|
+
// ~1.2.3 == >=1.2.3 <1.3.0
|
|
874
|
+
ret = '>=' + M + '.' + m + '.' + p +
|
|
875
|
+
' <' + M + '.' + (+m + 1) + '.0';
|
|
724
876
|
|
|
725
877
|
debug('tilde return', ret);
|
|
726
878
|
return ret;
|
|
@@ -740,6 +892,7 @@ function replaceCarets(comp, loose) {
|
|
|
740
892
|
}
|
|
741
893
|
|
|
742
894
|
function replaceCaret(comp, loose) {
|
|
895
|
+
debug('caret', comp, loose);
|
|
743
896
|
var r = loose ? re[CARETLOOSE] : re[CARET];
|
|
744
897
|
return comp.replace(r, function(_, M, m, p, pr) {
|
|
745
898
|
debug('caret', comp, _, M, m, p, pr);
|
|
@@ -748,35 +901,38 @@ function replaceCaret(comp, loose) {
|
|
|
748
901
|
if (isX(M))
|
|
749
902
|
ret = '';
|
|
750
903
|
else if (isX(m))
|
|
751
|
-
ret = '>=' + M + '.0.0
|
|
904
|
+
ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
|
|
752
905
|
else if (isX(p)) {
|
|
753
906
|
if (M === '0')
|
|
754
|
-
ret = '>=' + M + '.' + m + '.0
|
|
907
|
+
ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
|
|
755
908
|
else
|
|
756
|
-
ret = '>=' + M + '.' + m + '.0
|
|
909
|
+
ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
|
|
757
910
|
} else if (pr) {
|
|
758
911
|
debug('replaceCaret pr', pr);
|
|
759
912
|
if (pr.charAt(0) !== '-')
|
|
760
913
|
pr = '-' + pr;
|
|
761
914
|
if (M === '0') {
|
|
762
915
|
if (m === '0')
|
|
763
|
-
ret = '
|
|
916
|
+
ret = '>=' + M + '.' + m + '.' + p + pr +
|
|
917
|
+
' <' + M + '.' + m + '.' + (+p + 1);
|
|
764
918
|
else
|
|
765
919
|
ret = '>=' + M + '.' + m + '.' + p + pr +
|
|
766
|
-
' <' + M + '.' + (+m + 1) + '.0
|
|
920
|
+
' <' + M + '.' + (+m + 1) + '.0';
|
|
767
921
|
} else
|
|
768
922
|
ret = '>=' + M + '.' + m + '.' + p + pr +
|
|
769
|
-
' <' + (+M + 1) + '.0.0
|
|
923
|
+
' <' + (+M + 1) + '.0.0';
|
|
770
924
|
} else {
|
|
925
|
+
debug('no pr');
|
|
771
926
|
if (M === '0') {
|
|
772
927
|
if (m === '0')
|
|
773
|
-
ret = '
|
|
928
|
+
ret = '>=' + M + '.' + m + '.' + p +
|
|
929
|
+
' <' + M + '.' + m + '.' + (+p + 1);
|
|
774
930
|
else
|
|
775
|
-
ret = '>=' + M + '.' + m + '.' + p +
|
|
776
|
-
' <' + M + '.' + (+m + 1) + '.0
|
|
931
|
+
ret = '>=' + M + '.' + m + '.' + p +
|
|
932
|
+
' <' + M + '.' + (+m + 1) + '.0';
|
|
777
933
|
} else
|
|
778
|
-
ret = '>=' + M + '.' + m + '.' + p +
|
|
779
|
-
' <' + (+M + 1) + '.0.0
|
|
934
|
+
ret = '>=' + M + '.' + m + '.' + p +
|
|
935
|
+
' <' + (+M + 1) + '.0.0';
|
|
780
936
|
}
|
|
781
937
|
|
|
782
938
|
debug('caret return', ret);
|
|
@@ -804,23 +960,27 @@ function replaceXRange(comp, loose) {
|
|
|
804
960
|
if (gtlt === '=' && anyX)
|
|
805
961
|
gtlt = '';
|
|
806
962
|
|
|
807
|
-
if (
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
963
|
+
if (xM) {
|
|
964
|
+
if (gtlt === '>' || gtlt === '<') {
|
|
965
|
+
// nothing is allowed
|
|
966
|
+
ret = '<0.0.0';
|
|
967
|
+
} else {
|
|
968
|
+
// nothing is forbidden
|
|
969
|
+
ret = '*';
|
|
970
|
+
}
|
|
971
|
+
} else if (gtlt && anyX) {
|
|
972
|
+
// replace X with 0
|
|
811
973
|
if (xm)
|
|
812
974
|
m = 0;
|
|
813
975
|
if (xp)
|
|
814
976
|
p = 0;
|
|
815
977
|
|
|
816
978
|
if (gtlt === '>') {
|
|
817
|
-
// >1 => >=2.0.0
|
|
818
|
-
// >1.2 => >=1.3.0
|
|
819
|
-
// >1.2.3 => >= 1.2.4
|
|
979
|
+
// >1 => >=2.0.0
|
|
980
|
+
// >1.2 => >=1.3.0
|
|
981
|
+
// >1.2.3 => >= 1.2.4
|
|
820
982
|
gtlt = '>=';
|
|
821
|
-
if (
|
|
822
|
-
// no change
|
|
823
|
-
} else if (xm) {
|
|
983
|
+
if (xm) {
|
|
824
984
|
M = +M + 1;
|
|
825
985
|
m = 0;
|
|
826
986
|
p = 0;
|
|
@@ -828,20 +988,21 @@ function replaceXRange(comp, loose) {
|
|
|
828
988
|
m = +m + 1;
|
|
829
989
|
p = 0;
|
|
830
990
|
}
|
|
991
|
+
} else if (gtlt === '<=') {
|
|
992
|
+
// <=0.7.x is actually <0.8.0, since any 0.7.x should
|
|
993
|
+
// pass. Similarly, <=7.x is actually <8.0.0, etc.
|
|
994
|
+
gtlt = '<'
|
|
995
|
+
if (xm)
|
|
996
|
+
M = +M + 1
|
|
997
|
+
else
|
|
998
|
+
m = +m + 1
|
|
831
999
|
}
|
|
832
1000
|
|
|
833
|
-
|
|
834
|
-
ret = gtlt + M + '.' + m + '.' + p + '-0';
|
|
835
|
-
} else if (xM) {
|
|
836
|
-
// allow any
|
|
837
|
-
ret = '*';
|
|
1001
|
+
ret = gtlt + M + '.' + m + '.' + p;
|
|
838
1002
|
} else if (xm) {
|
|
839
|
-
|
|
840
|
-
// '1.x.x' matches '2.0.0-beta', since the tag
|
|
841
|
-
// *lowers* the version value
|
|
842
|
-
ret = '>=' + M + '.0.0-0 <' + (+M + 1) + '.0.0-0';
|
|
1003
|
+
ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
|
|
843
1004
|
} else if (xp) {
|
|
844
|
-
ret = '>=' + M + '.' + m + '.0
|
|
1005
|
+
ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
|
|
845
1006
|
}
|
|
846
1007
|
|
|
847
1008
|
debug('xRange return', ret);
|
|
@@ -860,9 +1021,9 @@ function replaceStars(comp, loose) {
|
|
|
860
1021
|
|
|
861
1022
|
// This function is passed to string.replace(re[HYPHENRANGE])
|
|
862
1023
|
// M, m, patch, prerelease, build
|
|
863
|
-
// 1.2 - 3.4.5 => >=1.2.0
|
|
864
|
-
// 1.2.3 - 3.4 => >=1.2.0
|
|
865
|
-
// 1.2 - 3.4 => >=1.2.0
|
|
1024
|
+
// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
|
|
1025
|
+
// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
|
|
1026
|
+
// 1.2 - 3.4 => >=1.2.0 <3.5.0
|
|
866
1027
|
function hyphenReplace($0,
|
|
867
1028
|
from, fM, fm, fp, fpr, fb,
|
|
868
1029
|
to, tM, tm, tp, tpr, tb) {
|
|
@@ -870,18 +1031,18 @@ function hyphenReplace($0,
|
|
|
870
1031
|
if (isX(fM))
|
|
871
1032
|
from = '';
|
|
872
1033
|
else if (isX(fm))
|
|
873
|
-
from = '>=' + fM + '.0.0
|
|
1034
|
+
from = '>=' + fM + '.0.0';
|
|
874
1035
|
else if (isX(fp))
|
|
875
|
-
from = '>=' + fM + '.' + fm + '.0
|
|
1036
|
+
from = '>=' + fM + '.' + fm + '.0';
|
|
876
1037
|
else
|
|
877
1038
|
from = '>=' + from;
|
|
878
1039
|
|
|
879
1040
|
if (isX(tM))
|
|
880
1041
|
to = '';
|
|
881
1042
|
else if (isX(tm))
|
|
882
|
-
to = '<' + (+tM + 1) + '.0.0
|
|
1043
|
+
to = '<' + (+tM + 1) + '.0.0';
|
|
883
1044
|
else if (isX(tp))
|
|
884
|
-
to = '<' + tM + '.' + (+tm + 1) + '.0
|
|
1045
|
+
to = '<' + tM + '.' + (+tm + 1) + '.0';
|
|
885
1046
|
else if (tpr)
|
|
886
1047
|
to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
|
|
887
1048
|
else
|
|
@@ -895,6 +1056,10 @@ function hyphenReplace($0,
|
|
|
895
1056
|
Range.prototype.test = function(version) {
|
|
896
1057
|
if (!version)
|
|
897
1058
|
return false;
|
|
1059
|
+
|
|
1060
|
+
if (typeof version === 'string')
|
|
1061
|
+
version = new SemVer(version, this.loose);
|
|
1062
|
+
|
|
898
1063
|
for (var i = 0; i < this.set.length; i++) {
|
|
899
1064
|
if (testSet(this.set[i], version))
|
|
900
1065
|
return true;
|
|
@@ -907,6 +1072,31 @@ function testSet(set, version) {
|
|
|
907
1072
|
if (!set[i].test(version))
|
|
908
1073
|
return false;
|
|
909
1074
|
}
|
|
1075
|
+
|
|
1076
|
+
if (version.prerelease.length) {
|
|
1077
|
+
// Find the set of versions that are allowed to have prereleases
|
|
1078
|
+
// For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
|
|
1079
|
+
// That should allow `1.2.3-pr.2` to pass.
|
|
1080
|
+
// However, `1.2.4-alpha.notready` should NOT be allowed,
|
|
1081
|
+
// even though it's within the range set by the comparators.
|
|
1082
|
+
for (var i = 0; i < set.length; i++) {
|
|
1083
|
+
debug(set[i].semver);
|
|
1084
|
+
if (set[i].semver === ANY)
|
|
1085
|
+
return true;
|
|
1086
|
+
|
|
1087
|
+
if (set[i].semver.prerelease.length > 0) {
|
|
1088
|
+
var allowed = set[i].semver;
|
|
1089
|
+
if (allowed.major === version.major &&
|
|
1090
|
+
allowed.minor === version.minor &&
|
|
1091
|
+
allowed.patch === version.patch)
|
|
1092
|
+
return true;
|
|
1093
|
+
}
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
// Version has a -pre, but it's not one of the ones we like.
|
|
1097
|
+
return false;
|
|
1098
|
+
}
|
|
1099
|
+
|
|
910
1100
|
return true;
|
|
911
1101
|
}
|
|
912
1102
|
|
|
@@ -1022,5 +1212,6 @@ function outside(version, range, hilo, loose) {
|
|
|
1022
1212
|
// Use the define() function if we're in AMD land
|
|
1023
1213
|
if (typeof define === 'function' && define.amd)
|
|
1024
1214
|
define(exports);
|
|
1215
|
+
|
|
1025
1216
|
// ***** MODIFIED LINE BELOW *****
|
|
1026
1217
|
})();
|