1 | "use strict";
|
2 | var semver = require("semver");
|
3 | exports.SemVerDSL = function (target, lastPredicate) {
|
4 | if (lastPredicate === void 0) { lastPredicate = function () { return true; }; }
|
5 | function createBoundContext(lastPredicate) {
|
6 | return Object.create({}, {
|
7 | else: {
|
8 | value: function (callback) {
|
9 | if (!lastPredicate())
|
10 | callback();
|
11 | }
|
12 | },
|
13 | elseIf: {
|
14 | get: function () {
|
15 | return exports.SemVerDSL(target, function () { return !lastPredicate(); });
|
16 | }
|
17 | }
|
18 | });
|
19 | }
|
20 | ;
|
21 | var dsl = {
|
22 | gte: function (version, callback) {
|
23 | var predicate = function () { return semver.gte(target, version) && lastPredicate(); };
|
24 | if (predicate())
|
25 | callback();
|
26 | return createBoundContext(predicate);
|
27 | },
|
28 | lte: function (version, callback) {
|
29 | var predicate = function () { return semver.lte(target, version) && lastPredicate(); };
|
30 | if (predicate())
|
31 | callback();
|
32 | return createBoundContext(predicate);
|
33 | },
|
34 | gt: function (version, callback) {
|
35 | var predicate = function () { return semver.gt(target, version) && lastPredicate(); };
|
36 | if (predicate())
|
37 | callback();
|
38 | return createBoundContext(predicate);
|
39 | },
|
40 | lt: function (version, callback) {
|
41 | var predicate = function () { return semver.lt(target, version) && lastPredicate(); };
|
42 | if (predicate())
|
43 | callback();
|
44 | return createBoundContext(predicate);
|
45 | },
|
46 | eq: function (version, callback) {
|
47 | var predicate = function () { return semver.eq(target, version) && lastPredicate(); };
|
48 | if (predicate())
|
49 | callback();
|
50 | return createBoundContext(predicate);
|
51 | },
|
52 | neq: function (version, callback) {
|
53 | var predicate = function () { return semver.neq(target, version) && lastPredicate(); };
|
54 | if (predicate())
|
55 | callback();
|
56 | return createBoundContext(predicate);
|
57 | },
|
58 | between: function (v1, v2, callback) {
|
59 | var predicate = function () { return semver.gte(target, v1) && semver.lte(target, v2) && lastPredicate(); };
|
60 | if (predicate())
|
61 | callback();
|
62 | return createBoundContext(predicate);
|
63 | }
|
64 | };
|
65 | return dsl;
|
66 | };
|
67 |
|
\ | No newline at end of file |