@vived/core 1.2.4 → 1.3.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.
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Version = exports.VersionStage = void 0;
4
+ var VersionStage;
5
+ (function (VersionStage) {
6
+ VersionStage["RELEASED"] = "released";
7
+ VersionStage["BETA"] = "beta";
8
+ VersionStage["ALPHA"] = "alpha";
9
+ })(VersionStage || (exports.VersionStage = VersionStage = {}));
10
+ class Version {
11
+ static GetLatest(versions) {
12
+ let latest;
13
+ for (const v of versions) {
14
+ if (latest === undefined) {
15
+ latest = v;
16
+ continue;
17
+ }
18
+ if (v.major > latest.major) {
19
+ latest = v;
20
+ }
21
+ else if (v.major === latest.major) {
22
+ if (v.minor > latest.minor) {
23
+ latest = v;
24
+ }
25
+ else if (v.minor === latest.minor) {
26
+ if (v.patch > latest.patch) {
27
+ latest = v;
28
+ }
29
+ }
30
+ }
31
+ }
32
+ return latest;
33
+ }
34
+ static GetLatestWithMajor(versions, major) {
35
+ let latest;
36
+ for (const v of versions) {
37
+ if (v.major !== major)
38
+ continue;
39
+ if (latest === undefined) {
40
+ latest = v;
41
+ continue;
42
+ }
43
+ if (v.minor > latest.minor) {
44
+ latest = v;
45
+ }
46
+ else if (v.minor === latest.minor) {
47
+ if (v.patch > latest.patch) {
48
+ latest = v;
49
+ }
50
+ }
51
+ }
52
+ return latest;
53
+ }
54
+ static GetLatestWithMajorMinor(versions, major, minor) {
55
+ let latest;
56
+ for (const v of versions) {
57
+ if (v.major !== major)
58
+ continue;
59
+ if (v.minor !== minor)
60
+ continue;
61
+ if (latest === undefined) {
62
+ latest = v;
63
+ continue;
64
+ }
65
+ if (v.patch > latest.patch) {
66
+ latest = v;
67
+ }
68
+ }
69
+ return latest;
70
+ }
71
+ static FromString(versionString) {
72
+ const stringSplit = versionString.split('.');
73
+ if (stringSplit.length !== 3) {
74
+ throw new Error(`Unable to parse version string: ${versionString} because it could not be split into 3 parts`);
75
+ }
76
+ const major = parseInt(stringSplit[0], 10);
77
+ const minor = parseInt(stringSplit[1], 10);
78
+ const patchStageLabel = stringSplit[2];
79
+ let patch = NaN;
80
+ let stageLabel;
81
+ const indexOfDash = patchStageLabel.indexOf('-');
82
+ if (indexOfDash > 0) {
83
+ const patchStr = patchStageLabel.substring(0, indexOfDash);
84
+ patch = parseInt(patchStr, 10);
85
+ stageLabel = patchStageLabel.substring(indexOfDash + 1);
86
+ }
87
+ else {
88
+ patch = parseInt(patchStageLabel, 10);
89
+ }
90
+ if (isNaN(major)) {
91
+ throw new Error(`Unable to parse version string: ${versionString} because Major is not a number`);
92
+ }
93
+ if (isNaN(minor)) {
94
+ throw new Error(`Unable to parse version string: ${versionString} because Minor is not a number`);
95
+ }
96
+ if (isNaN(patch)) {
97
+ throw new Error(`Unable to parse version string: ${versionString} because Patch is not a number`);
98
+ }
99
+ let stage = VersionStage.RELEASED;
100
+ let label;
101
+ if (stageLabel) {
102
+ const stageLabelSplit = stageLabel.split('-');
103
+ if (stageLabelSplit.length > 0) {
104
+ const stringAsStage = this.stringToStage(stageLabelSplit[0]);
105
+ if (stringAsStage === undefined) {
106
+ label = stageLabel;
107
+ }
108
+ else {
109
+ stage = stringAsStage;
110
+ if (stageLabelSplit.length > 1) {
111
+ label = stageLabel.replace(`${stageLabelSplit[0]}-`, '');
112
+ }
113
+ }
114
+ }
115
+ }
116
+ const version = new Version(major, minor, patch, stage, label);
117
+ return version;
118
+ }
119
+ static stringToStage(str) {
120
+ if (str === VersionStage.ALPHA) {
121
+ return VersionStage.ALPHA;
122
+ }
123
+ else if (str === VersionStage.BETA) {
124
+ return VersionStage.BETA;
125
+ }
126
+ return undefined;
127
+ }
128
+ static AreEqual(v1, v2) {
129
+ if (v1.major !== v2.major)
130
+ return false;
131
+ if (v1.minor !== v2.minor)
132
+ return false;
133
+ if (v1.patch !== v2.patch)
134
+ return false;
135
+ if (v1.stage !== v2.stage)
136
+ return false;
137
+ if (v1.label !== v2.label)
138
+ return false;
139
+ return true;
140
+ }
141
+ static IsNewerVersion(a, b) {
142
+ if (a.major < b.major)
143
+ return true;
144
+ if (a.minor < b.minor)
145
+ return true;
146
+ if (a.patch < b.patch)
147
+ return true;
148
+ return false;
149
+ }
150
+ constructor(major, minor, patch, stage, label) {
151
+ this.major = major;
152
+ this.minor = minor;
153
+ this.patch = patch;
154
+ this.stage = stage;
155
+ this.label = label;
156
+ this.baseVersionString = `${major}.${minor}.${patch}`;
157
+ let displayString = this.baseVersionString;
158
+ if (stage === VersionStage.ALPHA) {
159
+ displayString = displayString + '-alpha';
160
+ }
161
+ else if (this.stage === VersionStage.BETA) {
162
+ displayString = displayString + '-beta';
163
+ }
164
+ if (this.label) {
165
+ displayString = displayString + `-${label}`;
166
+ }
167
+ this.displayString = displayString;
168
+ }
169
+ }
170
+ exports.Version = Version;
171
+ //# sourceMappingURL=Version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Version.js","sourceRoot":"","sources":["../../../src/ValueObjects/Version.ts"],"names":[],"mappings":"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","sourcesContent":["export enum VersionStage {\r\n RELEASED = 'released',\r\n BETA = 'beta',\r\n ALPHA = 'alpha',\r\n}\r\n\r\nexport class Version {\r\n static GetLatest(\r\n versions: Version[],\r\n ): Version | undefined {\r\n let latest: Version | undefined;\r\n\r\n for(const v of versions){\r\n if (latest === undefined) {\r\n latest = v;\r\n continue;\r\n }\r\n\r\n if (v.major > latest.major) {\r\n latest = v;\r\n } else if (v.major === latest.major) {\r\n if (v.minor > latest.minor) {\r\n latest = v;\r\n } else if (v.minor === latest.minor) {\r\n if (v.patch > latest.patch) {\r\n latest = v;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return latest;\r\n }\r\n\r\n static GetLatestWithMajor(\r\n versions: Version[],\r\n major: number,\r\n ): Version | undefined {\r\n let latest: Version | undefined;\r\n\r\n for (const v of versions) {\r\n if (v.major !== major) continue;\r\n\r\n if (latest === undefined) {\r\n latest = v;\r\n continue;\r\n }\r\n\r\n if (v.minor > latest.minor) {\r\n latest = v;\r\n } else if (v.minor === latest.minor) {\r\n if (v.patch > latest.patch) {\r\n latest = v;\r\n }\r\n }\r\n }\r\n\r\n return latest;\r\n }\r\n\r\n static GetLatestWithMajorMinor(\r\n versions: Version[],\r\n major: number,\r\n minor: number,\r\n ): Version | undefined {\r\n let latest: Version | undefined;\r\n\r\n for (const v of versions) {\r\n if (v.major !== major) continue;\r\n if (v.minor !== minor) continue;\r\n\r\n if (latest === undefined) {\r\n latest = v;\r\n continue;\r\n }\r\n\r\n if (v.patch > latest.patch) {\r\n latest = v;\r\n }\r\n }\r\n\r\n return latest;\r\n }\r\n\r\n static FromString(versionString: string): Version {\r\n const stringSplit = versionString.split('.');\r\n\r\n if (stringSplit.length !== 3) {\r\n throw new Error(`Unable to parse version string: ${versionString} because it could not be split into 3 parts`);\r\n }\r\n\r\n const major = parseInt(stringSplit[0], 10);\r\n const minor = parseInt(stringSplit[1], 10);\r\n const patchStageLabel = stringSplit[2];\r\n let patch = NaN;\r\n let stageLabel: string | undefined;\r\n\r\n const indexOfDash = patchStageLabel.indexOf('-');\r\n\r\n if (indexOfDash > 0) {\r\n const patchStr = patchStageLabel.substring(0, indexOfDash);\r\n patch = parseInt(patchStr, 10);\r\n stageLabel = patchStageLabel.substring(indexOfDash + 1);\r\n } else {\r\n patch = parseInt(patchStageLabel, 10);\r\n }\r\n\r\n if (isNaN(major)) {\r\n throw new Error(`Unable to parse version string: ${versionString} because Major is not a number`);\r\n }\r\n if (isNaN(minor)) {\r\n throw new Error(`Unable to parse version string: ${versionString} because Minor is not a number`);\r\n }\r\n if (isNaN(patch)) {\r\n throw new Error(`Unable to parse version string: ${versionString} because Patch is not a number`);\r\n }\r\n\r\n let stage = VersionStage.RELEASED;\r\n let label: string | undefined;\r\n\r\n if (stageLabel) {\r\n const stageLabelSplit = stageLabel.split('-');\r\n\r\n if (stageLabelSplit.length > 0) {\r\n const stringAsStage = this.stringToStage(stageLabelSplit[0]);\r\n\r\n if (stringAsStage === undefined) {\r\n label = stageLabel;\r\n } else {\r\n stage = stringAsStage;\r\n if (stageLabelSplit.length > 1) {\r\n label = stageLabel.replace(`${stageLabelSplit[0]}-`, '');\r\n }\r\n }\r\n }\r\n }\r\n\r\n const version = new Version(major, minor, patch, stage, label);\r\n return version;\r\n }\r\n\r\n private static stringToStage(str: string): VersionStage | undefined {\r\n if (str === VersionStage.ALPHA) {\r\n return VersionStage.ALPHA;\r\n } else if (str === VersionStage.BETA) {\r\n return VersionStage.BETA;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n static AreEqual(v1: Version, v2: Version): boolean {\r\n if (v1.major !== v2.major) return false;\r\n if (v1.minor !== v2.minor) return false;\r\n if (v1.patch !== v2.patch) return false;\r\n if (v1.stage !== v2.stage) return false;\r\n if (v1.label !== v2.label) return false;\r\n return true;\r\n }\r\n\r\n static IsNewerVersion(a: Version, b: Version): boolean {\r\n if (a.major < b.major) return true;\r\n if (a.minor < b.minor) return true;\r\n if (a.patch < b.patch) return true;\r\n\r\n return false;\r\n }\r\n\r\n readonly major: number;\r\n readonly minor: number;\r\n readonly patch: number;\r\n readonly stage: VersionStage;\r\n readonly label?: string;\r\n readonly displayString: string;\r\n readonly baseVersionString: string;\r\n\r\n constructor(major: number, minor: number, patch: number, stage: VersionStage, label?: string) {\r\n this.major = major;\r\n this.minor = minor;\r\n this.patch = patch;\r\n this.stage = stage;\r\n this.label = label;\r\n\r\n this.baseVersionString= `${major}.${minor}.${patch}`;\r\n\r\n let displayString = this.baseVersionString;\r\n if (stage === VersionStage.ALPHA) {\r\n displayString = displayString + '-alpha';\r\n } else if (this.stage === VersionStage.BETA) {\r\n displayString = displayString + '-beta';\r\n }\r\n\r\n if (this.label) {\r\n displayString = displayString + `-${label}`;\r\n }\r\n\r\n this.displayString = displayString;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,310 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Version_1 = require("./Version");
4
+ test('Initialization', () => {
5
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.BETA, 'yo');
6
+ expect(version.major).toEqual(1);
7
+ expect(version.minor).toEqual(2);
8
+ expect(version.patch).toEqual(3);
9
+ expect(version.stage).toEqual(Version_1.VersionStage.BETA);
10
+ expect(version.label).toEqual('yo');
11
+ });
12
+ test('Without a label', () => {
13
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA);
14
+ expect(version.major).toEqual(1);
15
+ expect(version.minor).toEqual(2);
16
+ expect(version.patch).toEqual(3);
17
+ expect(version.stage).toEqual(Version_1.VersionStage.ALPHA);
18
+ expect(version.label).toBeUndefined();
19
+ });
20
+ describe('Version strings', () => {
21
+ it('Shows alpha after the version', () => {
22
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA);
23
+ expect(version.displayString).toEqual('1.2.3-alpha');
24
+ });
25
+ it('Appends the label after alpha', () => {
26
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
27
+ expect(version.displayString).toEqual('1.2.3-alpha-yo');
28
+ });
29
+ it('Shows beta after the version', () => {
30
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.BETA);
31
+ expect(version.displayString).toEqual('1.2.3-beta');
32
+ });
33
+ it('Appends the label after beta', () => {
34
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.BETA, 'yo');
35
+ expect(version.displayString).toEqual('1.2.3-beta-yo');
36
+ });
37
+ it('Does not show a release string', () => {
38
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.RELEASED);
39
+ expect(version.displayString).toEqual('1.2.3');
40
+ });
41
+ it('Appends the label after version for release', () => {
42
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.RELEASED, 'yo');
43
+ expect(version.displayString).toEqual('1.2.3-yo');
44
+ });
45
+ });
46
+ describe('Version strings', () => {
47
+ it('Returns the stripped string for a release without label', () => {
48
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.RELEASED);
49
+ expect(version.baseVersionString).toEqual('1.2.3');
50
+ });
51
+ it('Returns the stripped string for a release with a label', () => {
52
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.RELEASED, 'yo');
53
+ expect(version.baseVersionString).toEqual('1.2.3');
54
+ });
55
+ it('Returns the stripped string for an alpha without label', () => {
56
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA);
57
+ expect(version.baseVersionString).toEqual('1.2.3');
58
+ });
59
+ it('Returns the stripped string for an alpha with a label', () => {
60
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
61
+ expect(version.baseVersionString).toEqual('1.2.3');
62
+ });
63
+ it('Returns the stripped string for a beta without label', () => {
64
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.BETA);
65
+ expect(version.baseVersionString).toEqual('1.2.3');
66
+ });
67
+ it('Returns the stripped string for a beta with a label', () => {
68
+ const version = new Version_1.Version(1, 2, 3, Version_1.VersionStage.BETA, 'yo');
69
+ expect(version.baseVersionString).toEqual('1.2.3');
70
+ });
71
+ });
72
+ describe('Getting the latest from a list', () => {
73
+ it('Gets the latest from list', () => {
74
+ const version1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.RELEASED);
75
+ const version2 = new Version_1.Version(0, 2, 3, Version_1.VersionStage.RELEASED);
76
+ const version3 = new Version_1.Version(1, 2, 4, Version_1.VersionStage.RELEASED);
77
+ const version4 = new Version_1.Version(0, 0, 4, Version_1.VersionStage.RELEASED);
78
+ const versions = [version1, version2, version3, version4];
79
+ const latest = Version_1.Version.GetLatest(versions);
80
+ expect(latest).toEqual(version3);
81
+ });
82
+ it('Returns the latest regardless of the stage', () => {
83
+ const version1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA);
84
+ const version2 = new Version_1.Version(0, 2, 3, Version_1.VersionStage.BETA);
85
+ const version3 = new Version_1.Version(1, 2, 4, Version_1.VersionStage.ALPHA);
86
+ const version4 = new Version_1.Version(0, 0, 4, Version_1.VersionStage.BETA);
87
+ const versions = [version1, version2, version3, version4];
88
+ const latest = Version_1.Version.GetLatest(versions);
89
+ expect(latest).toEqual(version3);
90
+ });
91
+ it('Returns undefined if the list is empty', () => {
92
+ const latest = Version_1.Version.GetLatest([]);
93
+ expect(latest).toBeUndefined();
94
+ });
95
+ });
96
+ describe('Getting the latest major', () => {
97
+ it('Gets the latest major', () => {
98
+ const version1 = new Version_1.Version(2, 2, 3, Version_1.VersionStage.RELEASED);
99
+ const version2 = new Version_1.Version(0, 2, 3, Version_1.VersionStage.RELEASED);
100
+ const version3 = new Version_1.Version(1, 2, 4, Version_1.VersionStage.RELEASED);
101
+ const version4 = new Version_1.Version(0, 3, 4, Version_1.VersionStage.RELEASED);
102
+ const versions = [version1, version2, version3, version4];
103
+ const latest = Version_1.Version.GetLatestWithMajor(versions, 0);
104
+ expect(latest).toEqual(version4);
105
+ });
106
+ it('Returns undefined if there are no majors that match', () => {
107
+ const version1 = new Version_1.Version(2, 2, 3, Version_1.VersionStage.RELEASED);
108
+ const version2 = new Version_1.Version(0, 2, 3, Version_1.VersionStage.RELEASED);
109
+ const version3 = new Version_1.Version(1, 2, 4, Version_1.VersionStage.RELEASED);
110
+ const version4 = new Version_1.Version(0, 3, 4, Version_1.VersionStage.RELEASED);
111
+ const versions = [version1, version2, version3, version4];
112
+ const latest = Version_1.Version.GetLatestWithMajor(versions, 4);
113
+ expect(latest).toBeUndefined();
114
+ });
115
+ it('Gets the latest major regardless of stage', () => {
116
+ const version1 = new Version_1.Version(2, 2, 3, Version_1.VersionStage.ALPHA);
117
+ const version2 = new Version_1.Version(0, 2, 3, Version_1.VersionStage.BETA);
118
+ const version3 = new Version_1.Version(1, 2, 4, Version_1.VersionStage.ALPHA);
119
+ const version4 = new Version_1.Version(0, 3, 4, Version_1.VersionStage.BETA);
120
+ const versions = [version1, version2, version3, version4];
121
+ const latest = Version_1.Version.GetLatestWithMajor(versions, 0);
122
+ expect(latest).toEqual(version4);
123
+ });
124
+ });
125
+ describe('Get the latest major/minor', () => {
126
+ it('Get the latest major/minor combo', () => {
127
+ const version1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.RELEASED);
128
+ const version2 = new Version_1.Version(0, 2, 3, Version_1.VersionStage.RELEASED);
129
+ const version3 = new Version_1.Version(1, 2, 4, Version_1.VersionStage.RELEASED);
130
+ const version4 = new Version_1.Version(0, 3, 4, Version_1.VersionStage.RELEASED);
131
+ const versions = [version1, version2, version3, version4];
132
+ const latest = Version_1.Version.GetLatestWithMajorMinor(versions, 1, 2);
133
+ expect(latest).toEqual(version3);
134
+ });
135
+ it('Returns undefined if there are no major/minor combos', () => {
136
+ const version1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.RELEASED);
137
+ const version2 = new Version_1.Version(0, 2, 3, Version_1.VersionStage.RELEASED);
138
+ const version3 = new Version_1.Version(1, 2, 4, Version_1.VersionStage.RELEASED);
139
+ const version4 = new Version_1.Version(0, 3, 4, Version_1.VersionStage.RELEASED);
140
+ const versions = [version1, version2, version3, version4];
141
+ const latest = Version_1.Version.GetLatestWithMajorMinor(versions, 1, 3);
142
+ expect(latest).toBeUndefined();
143
+ });
144
+ it('Get the latest major/minor combo regardless of stage', () => {
145
+ const version1 = new Version_1.Version(1, 2, 2, Version_1.VersionStage.RELEASED);
146
+ const version2 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.BETA);
147
+ const version3 = new Version_1.Version(1, 2, 4, Version_1.VersionStage.ALPHA);
148
+ const versions = [version1, version2, version3];
149
+ const latest = Version_1.Version.GetLatestWithMajorMinor(versions, 1, 2);
150
+ expect(latest).toEqual(version3);
151
+ });
152
+ });
153
+ describe('Version from string', () => {
154
+ it('Forms the version from string', () => {
155
+ const version = Version_1.Version.FromString('1.2.3');
156
+ expect(version.major).toEqual(1);
157
+ expect(version.minor).toEqual(2);
158
+ expect(version.patch).toEqual(3);
159
+ expect(version.label).toBeUndefined();
160
+ expect(version.stage).toEqual(Version_1.VersionStage.RELEASED);
161
+ });
162
+ it('Gets the alpha stage from the string', () => {
163
+ const version = Version_1.Version.FromString('1.2.3-alpha');
164
+ expect(version.major).toEqual(1);
165
+ expect(version.minor).toEqual(2);
166
+ expect(version.patch).toEqual(3);
167
+ expect(version.label).toBeUndefined();
168
+ expect(version.stage).toEqual(Version_1.VersionStage.ALPHA);
169
+ });
170
+ it('Gets the alpha stage and label from the string', () => {
171
+ const version = Version_1.Version.FromString('1.2.3-alpha-your-mom');
172
+ expect(version.major).toEqual(1);
173
+ expect(version.minor).toEqual(2);
174
+ expect(version.patch).toEqual(3);
175
+ expect(version.label).toEqual('your-mom');
176
+ expect(version.stage).toEqual(Version_1.VersionStage.ALPHA);
177
+ });
178
+ it('Gets the beta stage from the string', () => {
179
+ const version = Version_1.Version.FromString('1.2.3-beta');
180
+ expect(version.major).toEqual(1);
181
+ expect(version.minor).toEqual(2);
182
+ expect(version.patch).toEqual(3);
183
+ expect(version.label).toBeUndefined();
184
+ expect(version.stage).toEqual(Version_1.VersionStage.BETA);
185
+ });
186
+ it('Gets the beta stage and label from the string', () => {
187
+ const version = Version_1.Version.FromString('1.2.3-beta-your-mom');
188
+ expect(version.major).toEqual(1);
189
+ expect(version.minor).toEqual(2);
190
+ expect(version.patch).toEqual(3);
191
+ expect(version.label).toEqual('your-mom');
192
+ expect(version.stage).toEqual(Version_1.VersionStage.BETA);
193
+ });
194
+ it('Gets the label for a released stage from the string', () => {
195
+ const version = Version_1.Version.FromString('1.2.3-yo');
196
+ expect(version.major).toEqual(1);
197
+ expect(version.minor).toEqual(2);
198
+ expect(version.patch).toEqual(3);
199
+ expect(version.label).toEqual('yo');
200
+ expect(version.stage).toEqual(Version_1.VersionStage.RELEASED);
201
+ });
202
+ it('Forms the version from string with a hyphenated label', () => {
203
+ const version = Version_1.Version.FromString('1.2.3-your-mom');
204
+ expect(version.major).toEqual(1);
205
+ expect(version.minor).toEqual(2);
206
+ expect(version.patch).toEqual(3);
207
+ expect(version.label).toEqual('your-mom');
208
+ expect(version.stage).toEqual(Version_1.VersionStage.RELEASED);
209
+ });
210
+ it('Throws if there are not enough parts', () => {
211
+ expect.assertions(1);
212
+ try {
213
+ Version_1.Version.FromString('1.2');
214
+ }
215
+ catch (e) {
216
+ expect(e).not.toBeUndefined();
217
+ }
218
+ });
219
+ it('Throws if there are too many parts', () => {
220
+ expect.assertions(1);
221
+ try {
222
+ Version_1.Version.FromString('1.2.3.4');
223
+ }
224
+ catch (e) {
225
+ expect(e).not.toBeUndefined();
226
+ }
227
+ });
228
+ it('Throws if major is not a number', () => {
229
+ expect.assertions(1);
230
+ try {
231
+ Version_1.Version.FromString('boo.2.3');
232
+ }
233
+ catch (e) {
234
+ expect(e).not.toBeUndefined();
235
+ }
236
+ });
237
+ it('Throws if minor is not a number', () => {
238
+ expect.assertions(1);
239
+ try {
240
+ Version_1.Version.FromString('1.boo.3');
241
+ }
242
+ catch (e) {
243
+ expect(e).not.toBeUndefined();
244
+ }
245
+ });
246
+ it('Throws if patch is not a number', () => {
247
+ expect.assertions(1);
248
+ try {
249
+ Version_1.Version.FromString('1.2.boo');
250
+ }
251
+ catch (e) {
252
+ expect(e).not.toBeUndefined();
253
+ }
254
+ });
255
+ });
256
+ describe('Testing are equal', () => {
257
+ it('Returns true if equal', () => {
258
+ const v1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
259
+ const v2 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
260
+ expect(Version_1.Version.AreEqual(v1, v2)).toEqual(true);
261
+ });
262
+ it('Returns false if the majors are different', () => {
263
+ const v1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
264
+ const v2 = new Version_1.Version(2, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
265
+ expect(Version_1.Version.AreEqual(v1, v2)).toEqual(false);
266
+ });
267
+ it('Returns false if the minors are different', () => {
268
+ const v1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
269
+ const v2 = new Version_1.Version(1, 1, 3, Version_1.VersionStage.ALPHA, 'yo');
270
+ expect(Version_1.Version.AreEqual(v1, v2)).toEqual(false);
271
+ });
272
+ it('Returns false if the patches are different', () => {
273
+ const v1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
274
+ const v2 = new Version_1.Version(1, 2, 2, Version_1.VersionStage.ALPHA, 'yo');
275
+ expect(Version_1.Version.AreEqual(v1, v2)).toEqual(false);
276
+ });
277
+ it('Returns false if the stages are different', () => {
278
+ const v1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
279
+ const v2 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.BETA, 'yo');
280
+ expect(Version_1.Version.AreEqual(v1, v2)).toEqual(false);
281
+ });
282
+ it('Returns false if the labels are different', () => {
283
+ const v1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
284
+ const v2 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA);
285
+ expect(Version_1.Version.AreEqual(v1, v2)).toEqual(false);
286
+ });
287
+ });
288
+ describe('Testing for a newer version', () => {
289
+ it('Returns true if the major version is larger', () => {
290
+ const v1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
291
+ const v2 = new Version_1.Version(2, 2, 3, Version_1.VersionStage.BETA);
292
+ expect(Version_1.Version.IsNewerVersion(v1, v2)).toEqual(true);
293
+ });
294
+ it('Returns true if the minor version is larger', () => {
295
+ const v1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
296
+ const v2 = new Version_1.Version(1, 3, 3, Version_1.VersionStage.BETA);
297
+ expect(Version_1.Version.IsNewerVersion(v1, v2)).toEqual(true);
298
+ });
299
+ it('Returns true if the patch version is larger', () => {
300
+ const v1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
301
+ const v2 = new Version_1.Version(1, 2, 4, Version_1.VersionStage.BETA);
302
+ expect(Version_1.Version.IsNewerVersion(v1, v2)).toEqual(true);
303
+ });
304
+ it('Returns false if equal', () => {
305
+ const v1 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.ALPHA, 'yo');
306
+ const v2 = new Version_1.Version(1, 2, 3, Version_1.VersionStage.BETA);
307
+ expect(Version_1.Version.IsNewerVersion(v1, v2)).toEqual(false);
308
+ });
309
+ });
310
+ //# sourceMappingURL=Version.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Version.test.js","sourceRoot":"","sources":["../../../src/ValueObjects/Version.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Version, VersionStage } from './Version';\r\n\r\ntest('Initialization', () => {\r\n const version = new Version(1, 2, 3, VersionStage.BETA, 'yo');\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.stage).toEqual(VersionStage.BETA);\r\n expect(version.label).toEqual('yo');\r\n});\r\n\r\ntest('Without a label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.ALPHA);\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.stage).toEqual(VersionStage.ALPHA);\r\n expect(version.label).toBeUndefined();\r\n});\r\n\r\ndescribe('Version strings', () => {\r\n it('Shows alpha after the version', () => {\r\n const version = new Version(1, 2, 3, VersionStage.ALPHA);\r\n expect(version.displayString).toEqual('1.2.3-alpha');\r\n });\r\n\r\n it('Appends the label after alpha', () => {\r\n const version = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n expect(version.displayString).toEqual('1.2.3-alpha-yo');\r\n });\r\n\r\n it('Shows beta after the version', () => {\r\n const version = new Version(1, 2, 3, VersionStage.BETA);\r\n expect(version.displayString).toEqual('1.2.3-beta');\r\n });\r\n\r\n it('Appends the label after beta', () => {\r\n const version = new Version(1, 2, 3, VersionStage.BETA, 'yo');\r\n expect(version.displayString).toEqual('1.2.3-beta-yo');\r\n });\r\n\r\n it('Does not show a release string', () => {\r\n const version = new Version(1, 2, 3, VersionStage.RELEASED);\r\n expect(version.displayString).toEqual('1.2.3');\r\n });\r\n\r\n it('Appends the label after version for release', () => {\r\n const version = new Version(1, 2, 3, VersionStage.RELEASED, 'yo');\r\n expect(version.displayString).toEqual('1.2.3-yo');\r\n });\r\n});\r\n\r\ndescribe('Version strings', () => {\r\n it('Returns the stripped string for a release without label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.RELEASED);\r\n expect(version.baseVersionString).toEqual('1.2.3');\r\n });\r\n\r\n it('Returns the stripped string for a release with a label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.RELEASED, 'yo');\r\n expect(version.baseVersionString).toEqual('1.2.3');\r\n });\r\n\r\n it('Returns the stripped string for an alpha without label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.ALPHA);\r\n expect(version.baseVersionString).toEqual('1.2.3');\r\n });\r\n\r\n it('Returns the stripped string for an alpha with a label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n expect(version.baseVersionString).toEqual('1.2.3');\r\n });\r\n\r\n it('Returns the stripped string for a beta without label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.BETA);\r\n expect(version.baseVersionString).toEqual('1.2.3');\r\n });\r\n\r\n it('Returns the stripped string for a beta with a label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.BETA, 'yo');\r\n expect(version.baseVersionString).toEqual('1.2.3');\r\n });\r\n});\r\n\r\ndescribe('Getting the latest from a list', () => {\r\n it('Gets the latest from list', () => {\r\n const version1 = new Version(1, 2, 3, VersionStage.RELEASED);\r\n const version2 = new Version(0, 2, 3, VersionStage.RELEASED);\r\n const version3 = new Version(1, 2, 4, VersionStage.RELEASED);\r\n const version4 = new Version(0, 0, 4, VersionStage.RELEASED);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatest(versions);\r\n\r\n expect(latest).toEqual(version3);\r\n });\r\n\r\n it('Returns the latest regardless of the stage', () => {\r\n const version1 = new Version(1, 2, 3, VersionStage.ALPHA);\r\n const version2 = new Version(0, 2, 3, VersionStage.BETA);\r\n const version3 = new Version(1, 2, 4, VersionStage.ALPHA);\r\n const version4 = new Version(0, 0, 4, VersionStage.BETA);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatest(versions);\r\n\r\n expect(latest).toEqual(version3);\r\n });\r\n\r\n it('Returns undefined if the list is empty', () => {\r\n const latest = Version.GetLatest([]);\r\n expect(latest).toBeUndefined();\r\n });\r\n});\r\n\r\ndescribe('Getting the latest major', () => {\r\n it('Gets the latest major', () => {\r\n const version1 = new Version(2, 2, 3, VersionStage.RELEASED);\r\n const version2 = new Version(0, 2, 3, VersionStage.RELEASED);\r\n const version3 = new Version(1, 2, 4, VersionStage.RELEASED);\r\n const version4 = new Version(0, 3, 4, VersionStage.RELEASED);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatestWithMajor(versions, 0);\r\n\r\n expect(latest).toEqual(version4);\r\n });\r\n\r\n it('Returns undefined if there are no majors that match', () => {\r\n const version1 = new Version(2, 2, 3, VersionStage.RELEASED);\r\n const version2 = new Version(0, 2, 3, VersionStage.RELEASED);\r\n const version3 = new Version(1, 2, 4, VersionStage.RELEASED);\r\n const version4 = new Version(0, 3, 4, VersionStage.RELEASED);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatestWithMajor(versions, 4);\r\n\r\n expect(latest).toBeUndefined();\r\n });\r\n\r\n it('Gets the latest major regardless of stage', () => {\r\n const version1 = new Version(2, 2, 3, VersionStage.ALPHA);\r\n const version2 = new Version(0, 2, 3, VersionStage.BETA);\r\n const version3 = new Version(1, 2, 4, VersionStage.ALPHA);\r\n const version4 = new Version(0, 3, 4, VersionStage.BETA);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatestWithMajor(versions, 0);\r\n\r\n expect(latest).toEqual(version4);\r\n });\r\n});\r\n\r\ndescribe('Get the latest major/minor', () => {\r\n it('Get the latest major/minor combo', () => {\r\n const version1 = new Version(1, 2, 3, VersionStage.RELEASED);\r\n const version2 = new Version(0, 2, 3, VersionStage.RELEASED);\r\n const version3 = new Version(1, 2, 4, VersionStage.RELEASED);\r\n const version4 = new Version(0, 3, 4, VersionStage.RELEASED);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatestWithMajorMinor(versions, 1, 2);\r\n\r\n expect(latest).toEqual(version3);\r\n });\r\n\r\n it('Returns undefined if there are no major/minor combos', () => {\r\n const version1 = new Version(1, 2, 3, VersionStage.RELEASED);\r\n const version2 = new Version(0, 2, 3, VersionStage.RELEASED);\r\n const version3 = new Version(1, 2, 4, VersionStage.RELEASED);\r\n const version4 = new Version(0, 3, 4, VersionStage.RELEASED);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatestWithMajorMinor(versions, 1, 3);\r\n\r\n expect(latest).toBeUndefined();\r\n });\r\n\r\n it('Get the latest major/minor combo regardless of stage', () => {\r\n const version1 = new Version(1, 2, 2, VersionStage.RELEASED);\r\n const version2 = new Version(1, 2, 3, VersionStage.BETA);\r\n const version3 = new Version(1, 2, 4, VersionStage.ALPHA);\r\n const versions = [version1, version2, version3];\r\n\r\n const latest = Version.GetLatestWithMajorMinor(versions, 1, 2);\r\n\r\n expect(latest).toEqual(version3);\r\n });\r\n});\r\n\r\ndescribe('Version from string', () => {\r\n it('Forms the version from string', () => {\r\n const version = Version.FromString('1.2.3');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toBeUndefined();\r\n expect(version.stage).toEqual(VersionStage.RELEASED);\r\n });\r\n\r\n it('Gets the alpha stage from the string', () => {\r\n const version = Version.FromString('1.2.3-alpha');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toBeUndefined();\r\n expect(version.stage).toEqual(VersionStage.ALPHA);\r\n });\r\n\r\n it('Gets the alpha stage and label from the string', () => {\r\n const version = Version.FromString('1.2.3-alpha-your-mom');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toEqual('your-mom');\r\n expect(version.stage).toEqual(VersionStage.ALPHA);\r\n });\r\n\r\n it('Gets the beta stage from the string', () => {\r\n const version = Version.FromString('1.2.3-beta');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toBeUndefined();\r\n expect(version.stage).toEqual(VersionStage.BETA);\r\n });\r\n\r\n it('Gets the beta stage and label from the string', () => {\r\n const version = Version.FromString('1.2.3-beta-your-mom');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toEqual('your-mom');\r\n expect(version.stage).toEqual(VersionStage.BETA);\r\n });\r\n\r\n it('Gets the label for a released stage from the string', () => {\r\n const version = Version.FromString('1.2.3-yo');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toEqual('yo');\r\n expect(version.stage).toEqual(VersionStage.RELEASED);\r\n });\r\n\r\n it('Forms the version from string with a hyphenated label', () => {\r\n const version = Version.FromString('1.2.3-your-mom');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toEqual('your-mom');\r\n expect(version.stage).toEqual(VersionStage.RELEASED);\r\n });\r\n\r\n it('Throws if there are not enough parts', () => {\r\n expect.assertions(1);\r\n\r\n try {\r\n Version.FromString('1.2');\r\n } catch (e) {\r\n expect(e).not.toBeUndefined();\r\n }\r\n });\r\n\r\n it('Throws if there are too many parts', () => {\r\n expect.assertions(1);\r\n try {\r\n Version.FromString('1.2.3.4');\r\n } catch (e) {\r\n expect(e).not.toBeUndefined();\r\n }\r\n });\r\n\r\n it('Throws if major is not a number', () => {\r\n expect.assertions(1);\r\n try {\r\n Version.FromString('boo.2.3');\r\n } catch (e) {\r\n expect(e).not.toBeUndefined();\r\n }\r\n });\r\n\r\n it('Throws if minor is not a number', () => {\r\n expect.assertions(1);\r\n try {\r\n Version.FromString('1.boo.3');\r\n } catch (e) {\r\n expect(e).not.toBeUndefined();\r\n }\r\n });\r\n\r\n it('Throws if patch is not a number', () => {\r\n expect.assertions(1);\r\n try {\r\n Version.FromString('1.2.boo');\r\n } catch (e) {\r\n expect(e).not.toBeUndefined();\r\n }\r\n });\r\n});\r\n\r\ndescribe('Testing are equal', () => {\r\n it('Returns true if equal', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n expect(Version.AreEqual(v1, v2)).toEqual(true);\r\n });\r\n\r\n it('Returns false if the majors are different', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(2, 2, 3, VersionStage.ALPHA, 'yo');\r\n expect(Version.AreEqual(v1, v2)).toEqual(false);\r\n });\r\n\r\n it('Returns false if the minors are different', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 1, 3, VersionStage.ALPHA, 'yo');\r\n expect(Version.AreEqual(v1, v2)).toEqual(false);\r\n });\r\n\r\n it('Returns false if the patches are different', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 2, 2, VersionStage.ALPHA, 'yo');\r\n expect(Version.AreEqual(v1, v2)).toEqual(false);\r\n });\r\n\r\n it('Returns false if the stages are different', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 2, 3, VersionStage.BETA, 'yo');\r\n expect(Version.AreEqual(v1, v2)).toEqual(false);\r\n });\r\n\r\n it('Returns false if the labels are different', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 2, 3, VersionStage.ALPHA);\r\n expect(Version.AreEqual(v1, v2)).toEqual(false);\r\n });\r\n});\r\n\r\ndescribe('Testing for a newer version', () => {\r\n it('Returns true if the major version is larger', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(2, 2, 3, VersionStage.BETA);\r\n expect(Version.IsNewerVersion(v1, v2)).toEqual(true);\r\n });\r\n\r\n it('Returns true if the minor version is larger', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 3, 3, VersionStage.BETA);\r\n expect(Version.IsNewerVersion(v1, v2)).toEqual(true);\r\n });\r\n\r\n it('Returns true if the patch version is larger', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 2, 4, VersionStage.BETA);\r\n expect(Version.IsNewerVersion(v1, v2)).toEqual(true);\r\n });\r\n\r\n it('Returns false if equal', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 2, 3, VersionStage.BETA);\r\n expect(Version.IsNewerVersion(v1, v2)).toEqual(false);\r\n });\r\n});\r\n"]}
@@ -24,4 +24,5 @@ __exportStar(require("./Quaternion"), exports);
24
24
  __exportStar(require("./Rectangle"), exports);
25
25
  __exportStar(require("./Vector2"), exports);
26
26
  __exportStar(require("./Vector3"), exports);
27
+ __exportStar(require("./Version"), exports);
27
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ValueObjects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0CAAwB;AACxB,kDAAgC;AAChC,2CAAyB;AACzB,mDAAiC;AACjC,oDAAkC;AAClC,+CAA6B;AAC7B,8CAA4B;AAC5B,4CAA0B;AAC1B,4CAA0B","sourcesContent":["export * from \"./Angle\";\r\nexport * from \"./Color\";\r\nexport * from \"./LineSegment2D\";\r\nexport * from \"./Matrix\";\r\nexport * from \"./ParametricLine\";\r\nexport * from \"./ParametricPlane\";\r\nexport * from \"./Quaternion\";\r\nexport * from \"./Rectangle\";\r\nexport * from \"./Vector2\";\r\nexport * from \"./Vector3\";\r\n\r\n\r\n\r\n\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ValueObjects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0CAAwB;AACxB,kDAAgC;AAChC,2CAAyB;AACzB,mDAAiC;AACjC,oDAAkC;AAClC,+CAA6B;AAC7B,8CAA4B;AAC5B,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B","sourcesContent":["export * from \"./Angle\";\r\nexport * from \"./Color\";\r\nexport * from \"./LineSegment2D\";\r\nexport * from \"./Matrix\";\r\nexport * from \"./ParametricLine\";\r\nexport * from \"./ParametricPlane\";\r\nexport * from \"./Quaternion\";\r\nexport * from \"./Rectangle\";\r\nexport * from \"./Vector2\";\r\nexport * from \"./Vector3\";\r\nexport * from \"./Version\";\r\n"]}
@@ -0,0 +1,167 @@
1
+ export var VersionStage;
2
+ (function (VersionStage) {
3
+ VersionStage["RELEASED"] = "released";
4
+ VersionStage["BETA"] = "beta";
5
+ VersionStage["ALPHA"] = "alpha";
6
+ })(VersionStage || (VersionStage = {}));
7
+ export class Version {
8
+ static GetLatest(versions) {
9
+ let latest;
10
+ for (const v of versions) {
11
+ if (latest === undefined) {
12
+ latest = v;
13
+ continue;
14
+ }
15
+ if (v.major > latest.major) {
16
+ latest = v;
17
+ }
18
+ else if (v.major === latest.major) {
19
+ if (v.minor > latest.minor) {
20
+ latest = v;
21
+ }
22
+ else if (v.minor === latest.minor) {
23
+ if (v.patch > latest.patch) {
24
+ latest = v;
25
+ }
26
+ }
27
+ }
28
+ }
29
+ return latest;
30
+ }
31
+ static GetLatestWithMajor(versions, major) {
32
+ let latest;
33
+ for (const v of versions) {
34
+ if (v.major !== major)
35
+ continue;
36
+ if (latest === undefined) {
37
+ latest = v;
38
+ continue;
39
+ }
40
+ if (v.minor > latest.minor) {
41
+ latest = v;
42
+ }
43
+ else if (v.minor === latest.minor) {
44
+ if (v.patch > latest.patch) {
45
+ latest = v;
46
+ }
47
+ }
48
+ }
49
+ return latest;
50
+ }
51
+ static GetLatestWithMajorMinor(versions, major, minor) {
52
+ let latest;
53
+ for (const v of versions) {
54
+ if (v.major !== major)
55
+ continue;
56
+ if (v.minor !== minor)
57
+ continue;
58
+ if (latest === undefined) {
59
+ latest = v;
60
+ continue;
61
+ }
62
+ if (v.patch > latest.patch) {
63
+ latest = v;
64
+ }
65
+ }
66
+ return latest;
67
+ }
68
+ static FromString(versionString) {
69
+ const stringSplit = versionString.split('.');
70
+ if (stringSplit.length !== 3) {
71
+ throw new Error(`Unable to parse version string: ${versionString} because it could not be split into 3 parts`);
72
+ }
73
+ const major = parseInt(stringSplit[0], 10);
74
+ const minor = parseInt(stringSplit[1], 10);
75
+ const patchStageLabel = stringSplit[2];
76
+ let patch = NaN;
77
+ let stageLabel;
78
+ const indexOfDash = patchStageLabel.indexOf('-');
79
+ if (indexOfDash > 0) {
80
+ const patchStr = patchStageLabel.substring(0, indexOfDash);
81
+ patch = parseInt(patchStr, 10);
82
+ stageLabel = patchStageLabel.substring(indexOfDash + 1);
83
+ }
84
+ else {
85
+ patch = parseInt(patchStageLabel, 10);
86
+ }
87
+ if (isNaN(major)) {
88
+ throw new Error(`Unable to parse version string: ${versionString} because Major is not a number`);
89
+ }
90
+ if (isNaN(minor)) {
91
+ throw new Error(`Unable to parse version string: ${versionString} because Minor is not a number`);
92
+ }
93
+ if (isNaN(patch)) {
94
+ throw new Error(`Unable to parse version string: ${versionString} because Patch is not a number`);
95
+ }
96
+ let stage = VersionStage.RELEASED;
97
+ let label;
98
+ if (stageLabel) {
99
+ const stageLabelSplit = stageLabel.split('-');
100
+ if (stageLabelSplit.length > 0) {
101
+ const stringAsStage = this.stringToStage(stageLabelSplit[0]);
102
+ if (stringAsStage === undefined) {
103
+ label = stageLabel;
104
+ }
105
+ else {
106
+ stage = stringAsStage;
107
+ if (stageLabelSplit.length > 1) {
108
+ label = stageLabel.replace(`${stageLabelSplit[0]}-`, '');
109
+ }
110
+ }
111
+ }
112
+ }
113
+ const version = new Version(major, minor, patch, stage, label);
114
+ return version;
115
+ }
116
+ static stringToStage(str) {
117
+ if (str === VersionStage.ALPHA) {
118
+ return VersionStage.ALPHA;
119
+ }
120
+ else if (str === VersionStage.BETA) {
121
+ return VersionStage.BETA;
122
+ }
123
+ return undefined;
124
+ }
125
+ static AreEqual(v1, v2) {
126
+ if (v1.major !== v2.major)
127
+ return false;
128
+ if (v1.minor !== v2.minor)
129
+ return false;
130
+ if (v1.patch !== v2.patch)
131
+ return false;
132
+ if (v1.stage !== v2.stage)
133
+ return false;
134
+ if (v1.label !== v2.label)
135
+ return false;
136
+ return true;
137
+ }
138
+ static IsNewerVersion(a, b) {
139
+ if (a.major < b.major)
140
+ return true;
141
+ if (a.minor < b.minor)
142
+ return true;
143
+ if (a.patch < b.patch)
144
+ return true;
145
+ return false;
146
+ }
147
+ constructor(major, minor, patch, stage, label) {
148
+ this.major = major;
149
+ this.minor = minor;
150
+ this.patch = patch;
151
+ this.stage = stage;
152
+ this.label = label;
153
+ this.baseVersionString = `${major}.${minor}.${patch}`;
154
+ let displayString = this.baseVersionString;
155
+ if (stage === VersionStage.ALPHA) {
156
+ displayString = displayString + '-alpha';
157
+ }
158
+ else if (this.stage === VersionStage.BETA) {
159
+ displayString = displayString + '-beta';
160
+ }
161
+ if (this.label) {
162
+ displayString = displayString + `-${label}`;
163
+ }
164
+ this.displayString = displayString;
165
+ }
166
+ }
167
+ //# sourceMappingURL=Version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Version.js","sourceRoot":"","sources":["../../../src/ValueObjects/Version.ts"],"names":[],"mappings":"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","sourcesContent":["export enum VersionStage {\r\n RELEASED = 'released',\r\n BETA = 'beta',\r\n ALPHA = 'alpha',\r\n}\r\n\r\nexport class Version {\r\n static GetLatest(\r\n versions: Version[],\r\n ): Version | undefined {\r\n let latest: Version | undefined;\r\n\r\n for(const v of versions){\r\n if (latest === undefined) {\r\n latest = v;\r\n continue;\r\n }\r\n\r\n if (v.major > latest.major) {\r\n latest = v;\r\n } else if (v.major === latest.major) {\r\n if (v.minor > latest.minor) {\r\n latest = v;\r\n } else if (v.minor === latest.minor) {\r\n if (v.patch > latest.patch) {\r\n latest = v;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return latest;\r\n }\r\n\r\n static GetLatestWithMajor(\r\n versions: Version[],\r\n major: number,\r\n ): Version | undefined {\r\n let latest: Version | undefined;\r\n\r\n for (const v of versions) {\r\n if (v.major !== major) continue;\r\n\r\n if (latest === undefined) {\r\n latest = v;\r\n continue;\r\n }\r\n\r\n if (v.minor > latest.minor) {\r\n latest = v;\r\n } else if (v.minor === latest.minor) {\r\n if (v.patch > latest.patch) {\r\n latest = v;\r\n }\r\n }\r\n }\r\n\r\n return latest;\r\n }\r\n\r\n static GetLatestWithMajorMinor(\r\n versions: Version[],\r\n major: number,\r\n minor: number,\r\n ): Version | undefined {\r\n let latest: Version | undefined;\r\n\r\n for (const v of versions) {\r\n if (v.major !== major) continue;\r\n if (v.minor !== minor) continue;\r\n\r\n if (latest === undefined) {\r\n latest = v;\r\n continue;\r\n }\r\n\r\n if (v.patch > latest.patch) {\r\n latest = v;\r\n }\r\n }\r\n\r\n return latest;\r\n }\r\n\r\n static FromString(versionString: string): Version {\r\n const stringSplit = versionString.split('.');\r\n\r\n if (stringSplit.length !== 3) {\r\n throw new Error(`Unable to parse version string: ${versionString} because it could not be split into 3 parts`);\r\n }\r\n\r\n const major = parseInt(stringSplit[0], 10);\r\n const minor = parseInt(stringSplit[1], 10);\r\n const patchStageLabel = stringSplit[2];\r\n let patch = NaN;\r\n let stageLabel: string | undefined;\r\n\r\n const indexOfDash = patchStageLabel.indexOf('-');\r\n\r\n if (indexOfDash > 0) {\r\n const patchStr = patchStageLabel.substring(0, indexOfDash);\r\n patch = parseInt(patchStr, 10);\r\n stageLabel = patchStageLabel.substring(indexOfDash + 1);\r\n } else {\r\n patch = parseInt(patchStageLabel, 10);\r\n }\r\n\r\n if (isNaN(major)) {\r\n throw new Error(`Unable to parse version string: ${versionString} because Major is not a number`);\r\n }\r\n if (isNaN(minor)) {\r\n throw new Error(`Unable to parse version string: ${versionString} because Minor is not a number`);\r\n }\r\n if (isNaN(patch)) {\r\n throw new Error(`Unable to parse version string: ${versionString} because Patch is not a number`);\r\n }\r\n\r\n let stage = VersionStage.RELEASED;\r\n let label: string | undefined;\r\n\r\n if (stageLabel) {\r\n const stageLabelSplit = stageLabel.split('-');\r\n\r\n if (stageLabelSplit.length > 0) {\r\n const stringAsStage = this.stringToStage(stageLabelSplit[0]);\r\n\r\n if (stringAsStage === undefined) {\r\n label = stageLabel;\r\n } else {\r\n stage = stringAsStage;\r\n if (stageLabelSplit.length > 1) {\r\n label = stageLabel.replace(`${stageLabelSplit[0]}-`, '');\r\n }\r\n }\r\n }\r\n }\r\n\r\n const version = new Version(major, minor, patch, stage, label);\r\n return version;\r\n }\r\n\r\n private static stringToStage(str: string): VersionStage | undefined {\r\n if (str === VersionStage.ALPHA) {\r\n return VersionStage.ALPHA;\r\n } else if (str === VersionStage.BETA) {\r\n return VersionStage.BETA;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n static AreEqual(v1: Version, v2: Version): boolean {\r\n if (v1.major !== v2.major) return false;\r\n if (v1.minor !== v2.minor) return false;\r\n if (v1.patch !== v2.patch) return false;\r\n if (v1.stage !== v2.stage) return false;\r\n if (v1.label !== v2.label) return false;\r\n return true;\r\n }\r\n\r\n static IsNewerVersion(a: Version, b: Version): boolean {\r\n if (a.major < b.major) return true;\r\n if (a.minor < b.minor) return true;\r\n if (a.patch < b.patch) return true;\r\n\r\n return false;\r\n }\r\n\r\n readonly major: number;\r\n readonly minor: number;\r\n readonly patch: number;\r\n readonly stage: VersionStage;\r\n readonly label?: string;\r\n readonly displayString: string;\r\n readonly baseVersionString: string;\r\n\r\n constructor(major: number, minor: number, patch: number, stage: VersionStage, label?: string) {\r\n this.major = major;\r\n this.minor = minor;\r\n this.patch = patch;\r\n this.stage = stage;\r\n this.label = label;\r\n\r\n this.baseVersionString= `${major}.${minor}.${patch}`;\r\n\r\n let displayString = this.baseVersionString;\r\n if (stage === VersionStage.ALPHA) {\r\n displayString = displayString + '-alpha';\r\n } else if (this.stage === VersionStage.BETA) {\r\n displayString = displayString + '-beta';\r\n }\r\n\r\n if (this.label) {\r\n displayString = displayString + `-${label}`;\r\n }\r\n\r\n this.displayString = displayString;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,308 @@
1
+ import { Version, VersionStage } from './Version';
2
+ test('Initialization', () => {
3
+ const version = new Version(1, 2, 3, VersionStage.BETA, 'yo');
4
+ expect(version.major).toEqual(1);
5
+ expect(version.minor).toEqual(2);
6
+ expect(version.patch).toEqual(3);
7
+ expect(version.stage).toEqual(VersionStage.BETA);
8
+ expect(version.label).toEqual('yo');
9
+ });
10
+ test('Without a label', () => {
11
+ const version = new Version(1, 2, 3, VersionStage.ALPHA);
12
+ expect(version.major).toEqual(1);
13
+ expect(version.minor).toEqual(2);
14
+ expect(version.patch).toEqual(3);
15
+ expect(version.stage).toEqual(VersionStage.ALPHA);
16
+ expect(version.label).toBeUndefined();
17
+ });
18
+ describe('Version strings', () => {
19
+ it('Shows alpha after the version', () => {
20
+ const version = new Version(1, 2, 3, VersionStage.ALPHA);
21
+ expect(version.displayString).toEqual('1.2.3-alpha');
22
+ });
23
+ it('Appends the label after alpha', () => {
24
+ const version = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
25
+ expect(version.displayString).toEqual('1.2.3-alpha-yo');
26
+ });
27
+ it('Shows beta after the version', () => {
28
+ const version = new Version(1, 2, 3, VersionStage.BETA);
29
+ expect(version.displayString).toEqual('1.2.3-beta');
30
+ });
31
+ it('Appends the label after beta', () => {
32
+ const version = new Version(1, 2, 3, VersionStage.BETA, 'yo');
33
+ expect(version.displayString).toEqual('1.2.3-beta-yo');
34
+ });
35
+ it('Does not show a release string', () => {
36
+ const version = new Version(1, 2, 3, VersionStage.RELEASED);
37
+ expect(version.displayString).toEqual('1.2.3');
38
+ });
39
+ it('Appends the label after version for release', () => {
40
+ const version = new Version(1, 2, 3, VersionStage.RELEASED, 'yo');
41
+ expect(version.displayString).toEqual('1.2.3-yo');
42
+ });
43
+ });
44
+ describe('Version strings', () => {
45
+ it('Returns the stripped string for a release without label', () => {
46
+ const version = new Version(1, 2, 3, VersionStage.RELEASED);
47
+ expect(version.baseVersionString).toEqual('1.2.3');
48
+ });
49
+ it('Returns the stripped string for a release with a label', () => {
50
+ const version = new Version(1, 2, 3, VersionStage.RELEASED, 'yo');
51
+ expect(version.baseVersionString).toEqual('1.2.3');
52
+ });
53
+ it('Returns the stripped string for an alpha without label', () => {
54
+ const version = new Version(1, 2, 3, VersionStage.ALPHA);
55
+ expect(version.baseVersionString).toEqual('1.2.3');
56
+ });
57
+ it('Returns the stripped string for an alpha with a label', () => {
58
+ const version = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
59
+ expect(version.baseVersionString).toEqual('1.2.3');
60
+ });
61
+ it('Returns the stripped string for a beta without label', () => {
62
+ const version = new Version(1, 2, 3, VersionStage.BETA);
63
+ expect(version.baseVersionString).toEqual('1.2.3');
64
+ });
65
+ it('Returns the stripped string for a beta with a label', () => {
66
+ const version = new Version(1, 2, 3, VersionStage.BETA, 'yo');
67
+ expect(version.baseVersionString).toEqual('1.2.3');
68
+ });
69
+ });
70
+ describe('Getting the latest from a list', () => {
71
+ it('Gets the latest from list', () => {
72
+ const version1 = new Version(1, 2, 3, VersionStage.RELEASED);
73
+ const version2 = new Version(0, 2, 3, VersionStage.RELEASED);
74
+ const version3 = new Version(1, 2, 4, VersionStage.RELEASED);
75
+ const version4 = new Version(0, 0, 4, VersionStage.RELEASED);
76
+ const versions = [version1, version2, version3, version4];
77
+ const latest = Version.GetLatest(versions);
78
+ expect(latest).toEqual(version3);
79
+ });
80
+ it('Returns the latest regardless of the stage', () => {
81
+ const version1 = new Version(1, 2, 3, VersionStage.ALPHA);
82
+ const version2 = new Version(0, 2, 3, VersionStage.BETA);
83
+ const version3 = new Version(1, 2, 4, VersionStage.ALPHA);
84
+ const version4 = new Version(0, 0, 4, VersionStage.BETA);
85
+ const versions = [version1, version2, version3, version4];
86
+ const latest = Version.GetLatest(versions);
87
+ expect(latest).toEqual(version3);
88
+ });
89
+ it('Returns undefined if the list is empty', () => {
90
+ const latest = Version.GetLatest([]);
91
+ expect(latest).toBeUndefined();
92
+ });
93
+ });
94
+ describe('Getting the latest major', () => {
95
+ it('Gets the latest major', () => {
96
+ const version1 = new Version(2, 2, 3, VersionStage.RELEASED);
97
+ const version2 = new Version(0, 2, 3, VersionStage.RELEASED);
98
+ const version3 = new Version(1, 2, 4, VersionStage.RELEASED);
99
+ const version4 = new Version(0, 3, 4, VersionStage.RELEASED);
100
+ const versions = [version1, version2, version3, version4];
101
+ const latest = Version.GetLatestWithMajor(versions, 0);
102
+ expect(latest).toEqual(version4);
103
+ });
104
+ it('Returns undefined if there are no majors that match', () => {
105
+ const version1 = new Version(2, 2, 3, VersionStage.RELEASED);
106
+ const version2 = new Version(0, 2, 3, VersionStage.RELEASED);
107
+ const version3 = new Version(1, 2, 4, VersionStage.RELEASED);
108
+ const version4 = new Version(0, 3, 4, VersionStage.RELEASED);
109
+ const versions = [version1, version2, version3, version4];
110
+ const latest = Version.GetLatestWithMajor(versions, 4);
111
+ expect(latest).toBeUndefined();
112
+ });
113
+ it('Gets the latest major regardless of stage', () => {
114
+ const version1 = new Version(2, 2, 3, VersionStage.ALPHA);
115
+ const version2 = new Version(0, 2, 3, VersionStage.BETA);
116
+ const version3 = new Version(1, 2, 4, VersionStage.ALPHA);
117
+ const version4 = new Version(0, 3, 4, VersionStage.BETA);
118
+ const versions = [version1, version2, version3, version4];
119
+ const latest = Version.GetLatestWithMajor(versions, 0);
120
+ expect(latest).toEqual(version4);
121
+ });
122
+ });
123
+ describe('Get the latest major/minor', () => {
124
+ it('Get the latest major/minor combo', () => {
125
+ const version1 = new Version(1, 2, 3, VersionStage.RELEASED);
126
+ const version2 = new Version(0, 2, 3, VersionStage.RELEASED);
127
+ const version3 = new Version(1, 2, 4, VersionStage.RELEASED);
128
+ const version4 = new Version(0, 3, 4, VersionStage.RELEASED);
129
+ const versions = [version1, version2, version3, version4];
130
+ const latest = Version.GetLatestWithMajorMinor(versions, 1, 2);
131
+ expect(latest).toEqual(version3);
132
+ });
133
+ it('Returns undefined if there are no major/minor combos', () => {
134
+ const version1 = new Version(1, 2, 3, VersionStage.RELEASED);
135
+ const version2 = new Version(0, 2, 3, VersionStage.RELEASED);
136
+ const version3 = new Version(1, 2, 4, VersionStage.RELEASED);
137
+ const version4 = new Version(0, 3, 4, VersionStage.RELEASED);
138
+ const versions = [version1, version2, version3, version4];
139
+ const latest = Version.GetLatestWithMajorMinor(versions, 1, 3);
140
+ expect(latest).toBeUndefined();
141
+ });
142
+ it('Get the latest major/minor combo regardless of stage', () => {
143
+ const version1 = new Version(1, 2, 2, VersionStage.RELEASED);
144
+ const version2 = new Version(1, 2, 3, VersionStage.BETA);
145
+ const version3 = new Version(1, 2, 4, VersionStage.ALPHA);
146
+ const versions = [version1, version2, version3];
147
+ const latest = Version.GetLatestWithMajorMinor(versions, 1, 2);
148
+ expect(latest).toEqual(version3);
149
+ });
150
+ });
151
+ describe('Version from string', () => {
152
+ it('Forms the version from string', () => {
153
+ const version = Version.FromString('1.2.3');
154
+ expect(version.major).toEqual(1);
155
+ expect(version.minor).toEqual(2);
156
+ expect(version.patch).toEqual(3);
157
+ expect(version.label).toBeUndefined();
158
+ expect(version.stage).toEqual(VersionStage.RELEASED);
159
+ });
160
+ it('Gets the alpha stage from the string', () => {
161
+ const version = Version.FromString('1.2.3-alpha');
162
+ expect(version.major).toEqual(1);
163
+ expect(version.minor).toEqual(2);
164
+ expect(version.patch).toEqual(3);
165
+ expect(version.label).toBeUndefined();
166
+ expect(version.stage).toEqual(VersionStage.ALPHA);
167
+ });
168
+ it('Gets the alpha stage and label from the string', () => {
169
+ const version = Version.FromString('1.2.3-alpha-your-mom');
170
+ expect(version.major).toEqual(1);
171
+ expect(version.minor).toEqual(2);
172
+ expect(version.patch).toEqual(3);
173
+ expect(version.label).toEqual('your-mom');
174
+ expect(version.stage).toEqual(VersionStage.ALPHA);
175
+ });
176
+ it('Gets the beta stage from the string', () => {
177
+ const version = Version.FromString('1.2.3-beta');
178
+ expect(version.major).toEqual(1);
179
+ expect(version.minor).toEqual(2);
180
+ expect(version.patch).toEqual(3);
181
+ expect(version.label).toBeUndefined();
182
+ expect(version.stage).toEqual(VersionStage.BETA);
183
+ });
184
+ it('Gets the beta stage and label from the string', () => {
185
+ const version = Version.FromString('1.2.3-beta-your-mom');
186
+ expect(version.major).toEqual(1);
187
+ expect(version.minor).toEqual(2);
188
+ expect(version.patch).toEqual(3);
189
+ expect(version.label).toEqual('your-mom');
190
+ expect(version.stage).toEqual(VersionStage.BETA);
191
+ });
192
+ it('Gets the label for a released stage from the string', () => {
193
+ const version = Version.FromString('1.2.3-yo');
194
+ expect(version.major).toEqual(1);
195
+ expect(version.minor).toEqual(2);
196
+ expect(version.patch).toEqual(3);
197
+ expect(version.label).toEqual('yo');
198
+ expect(version.stage).toEqual(VersionStage.RELEASED);
199
+ });
200
+ it('Forms the version from string with a hyphenated label', () => {
201
+ const version = Version.FromString('1.2.3-your-mom');
202
+ expect(version.major).toEqual(1);
203
+ expect(version.minor).toEqual(2);
204
+ expect(version.patch).toEqual(3);
205
+ expect(version.label).toEqual('your-mom');
206
+ expect(version.stage).toEqual(VersionStage.RELEASED);
207
+ });
208
+ it('Throws if there are not enough parts', () => {
209
+ expect.assertions(1);
210
+ try {
211
+ Version.FromString('1.2');
212
+ }
213
+ catch (e) {
214
+ expect(e).not.toBeUndefined();
215
+ }
216
+ });
217
+ it('Throws if there are too many parts', () => {
218
+ expect.assertions(1);
219
+ try {
220
+ Version.FromString('1.2.3.4');
221
+ }
222
+ catch (e) {
223
+ expect(e).not.toBeUndefined();
224
+ }
225
+ });
226
+ it('Throws if major is not a number', () => {
227
+ expect.assertions(1);
228
+ try {
229
+ Version.FromString('boo.2.3');
230
+ }
231
+ catch (e) {
232
+ expect(e).not.toBeUndefined();
233
+ }
234
+ });
235
+ it('Throws if minor is not a number', () => {
236
+ expect.assertions(1);
237
+ try {
238
+ Version.FromString('1.boo.3');
239
+ }
240
+ catch (e) {
241
+ expect(e).not.toBeUndefined();
242
+ }
243
+ });
244
+ it('Throws if patch is not a number', () => {
245
+ expect.assertions(1);
246
+ try {
247
+ Version.FromString('1.2.boo');
248
+ }
249
+ catch (e) {
250
+ expect(e).not.toBeUndefined();
251
+ }
252
+ });
253
+ });
254
+ describe('Testing are equal', () => {
255
+ it('Returns true if equal', () => {
256
+ const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
257
+ const v2 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
258
+ expect(Version.AreEqual(v1, v2)).toEqual(true);
259
+ });
260
+ it('Returns false if the majors are different', () => {
261
+ const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
262
+ const v2 = new Version(2, 2, 3, VersionStage.ALPHA, 'yo');
263
+ expect(Version.AreEqual(v1, v2)).toEqual(false);
264
+ });
265
+ it('Returns false if the minors are different', () => {
266
+ const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
267
+ const v2 = new Version(1, 1, 3, VersionStage.ALPHA, 'yo');
268
+ expect(Version.AreEqual(v1, v2)).toEqual(false);
269
+ });
270
+ it('Returns false if the patches are different', () => {
271
+ const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
272
+ const v2 = new Version(1, 2, 2, VersionStage.ALPHA, 'yo');
273
+ expect(Version.AreEqual(v1, v2)).toEqual(false);
274
+ });
275
+ it('Returns false if the stages are different', () => {
276
+ const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
277
+ const v2 = new Version(1, 2, 3, VersionStage.BETA, 'yo');
278
+ expect(Version.AreEqual(v1, v2)).toEqual(false);
279
+ });
280
+ it('Returns false if the labels are different', () => {
281
+ const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
282
+ const v2 = new Version(1, 2, 3, VersionStage.ALPHA);
283
+ expect(Version.AreEqual(v1, v2)).toEqual(false);
284
+ });
285
+ });
286
+ describe('Testing for a newer version', () => {
287
+ it('Returns true if the major version is larger', () => {
288
+ const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
289
+ const v2 = new Version(2, 2, 3, VersionStage.BETA);
290
+ expect(Version.IsNewerVersion(v1, v2)).toEqual(true);
291
+ });
292
+ it('Returns true if the minor version is larger', () => {
293
+ const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
294
+ const v2 = new Version(1, 3, 3, VersionStage.BETA);
295
+ expect(Version.IsNewerVersion(v1, v2)).toEqual(true);
296
+ });
297
+ it('Returns true if the patch version is larger', () => {
298
+ const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
299
+ const v2 = new Version(1, 2, 4, VersionStage.BETA);
300
+ expect(Version.IsNewerVersion(v1, v2)).toEqual(true);
301
+ });
302
+ it('Returns false if equal', () => {
303
+ const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');
304
+ const v2 = new Version(1, 2, 3, VersionStage.BETA);
305
+ expect(Version.IsNewerVersion(v1, v2)).toEqual(false);
306
+ });
307
+ });
308
+ //# sourceMappingURL=Version.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Version.test.js","sourceRoot":"","sources":["../../../src/ValueObjects/Version.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Version, VersionStage } from './Version';\r\n\r\ntest('Initialization', () => {\r\n const version = new Version(1, 2, 3, VersionStage.BETA, 'yo');\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.stage).toEqual(VersionStage.BETA);\r\n expect(version.label).toEqual('yo');\r\n});\r\n\r\ntest('Without a label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.ALPHA);\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.stage).toEqual(VersionStage.ALPHA);\r\n expect(version.label).toBeUndefined();\r\n});\r\n\r\ndescribe('Version strings', () => {\r\n it('Shows alpha after the version', () => {\r\n const version = new Version(1, 2, 3, VersionStage.ALPHA);\r\n expect(version.displayString).toEqual('1.2.3-alpha');\r\n });\r\n\r\n it('Appends the label after alpha', () => {\r\n const version = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n expect(version.displayString).toEqual('1.2.3-alpha-yo');\r\n });\r\n\r\n it('Shows beta after the version', () => {\r\n const version = new Version(1, 2, 3, VersionStage.BETA);\r\n expect(version.displayString).toEqual('1.2.3-beta');\r\n });\r\n\r\n it('Appends the label after beta', () => {\r\n const version = new Version(1, 2, 3, VersionStage.BETA, 'yo');\r\n expect(version.displayString).toEqual('1.2.3-beta-yo');\r\n });\r\n\r\n it('Does not show a release string', () => {\r\n const version = new Version(1, 2, 3, VersionStage.RELEASED);\r\n expect(version.displayString).toEqual('1.2.3');\r\n });\r\n\r\n it('Appends the label after version for release', () => {\r\n const version = new Version(1, 2, 3, VersionStage.RELEASED, 'yo');\r\n expect(version.displayString).toEqual('1.2.3-yo');\r\n });\r\n});\r\n\r\ndescribe('Version strings', () => {\r\n it('Returns the stripped string for a release without label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.RELEASED);\r\n expect(version.baseVersionString).toEqual('1.2.3');\r\n });\r\n\r\n it('Returns the stripped string for a release with a label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.RELEASED, 'yo');\r\n expect(version.baseVersionString).toEqual('1.2.3');\r\n });\r\n\r\n it('Returns the stripped string for an alpha without label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.ALPHA);\r\n expect(version.baseVersionString).toEqual('1.2.3');\r\n });\r\n\r\n it('Returns the stripped string for an alpha with a label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n expect(version.baseVersionString).toEqual('1.2.3');\r\n });\r\n\r\n it('Returns the stripped string for a beta without label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.BETA);\r\n expect(version.baseVersionString).toEqual('1.2.3');\r\n });\r\n\r\n it('Returns the stripped string for a beta with a label', () => {\r\n const version = new Version(1, 2, 3, VersionStage.BETA, 'yo');\r\n expect(version.baseVersionString).toEqual('1.2.3');\r\n });\r\n});\r\n\r\ndescribe('Getting the latest from a list', () => {\r\n it('Gets the latest from list', () => {\r\n const version1 = new Version(1, 2, 3, VersionStage.RELEASED);\r\n const version2 = new Version(0, 2, 3, VersionStage.RELEASED);\r\n const version3 = new Version(1, 2, 4, VersionStage.RELEASED);\r\n const version4 = new Version(0, 0, 4, VersionStage.RELEASED);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatest(versions);\r\n\r\n expect(latest).toEqual(version3);\r\n });\r\n\r\n it('Returns the latest regardless of the stage', () => {\r\n const version1 = new Version(1, 2, 3, VersionStage.ALPHA);\r\n const version2 = new Version(0, 2, 3, VersionStage.BETA);\r\n const version3 = new Version(1, 2, 4, VersionStage.ALPHA);\r\n const version4 = new Version(0, 0, 4, VersionStage.BETA);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatest(versions);\r\n\r\n expect(latest).toEqual(version3);\r\n });\r\n\r\n it('Returns undefined if the list is empty', () => {\r\n const latest = Version.GetLatest([]);\r\n expect(latest).toBeUndefined();\r\n });\r\n});\r\n\r\ndescribe('Getting the latest major', () => {\r\n it('Gets the latest major', () => {\r\n const version1 = new Version(2, 2, 3, VersionStage.RELEASED);\r\n const version2 = new Version(0, 2, 3, VersionStage.RELEASED);\r\n const version3 = new Version(1, 2, 4, VersionStage.RELEASED);\r\n const version4 = new Version(0, 3, 4, VersionStage.RELEASED);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatestWithMajor(versions, 0);\r\n\r\n expect(latest).toEqual(version4);\r\n });\r\n\r\n it('Returns undefined if there are no majors that match', () => {\r\n const version1 = new Version(2, 2, 3, VersionStage.RELEASED);\r\n const version2 = new Version(0, 2, 3, VersionStage.RELEASED);\r\n const version3 = new Version(1, 2, 4, VersionStage.RELEASED);\r\n const version4 = new Version(0, 3, 4, VersionStage.RELEASED);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatestWithMajor(versions, 4);\r\n\r\n expect(latest).toBeUndefined();\r\n });\r\n\r\n it('Gets the latest major regardless of stage', () => {\r\n const version1 = new Version(2, 2, 3, VersionStage.ALPHA);\r\n const version2 = new Version(0, 2, 3, VersionStage.BETA);\r\n const version3 = new Version(1, 2, 4, VersionStage.ALPHA);\r\n const version4 = new Version(0, 3, 4, VersionStage.BETA);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatestWithMajor(versions, 0);\r\n\r\n expect(latest).toEqual(version4);\r\n });\r\n});\r\n\r\ndescribe('Get the latest major/minor', () => {\r\n it('Get the latest major/minor combo', () => {\r\n const version1 = new Version(1, 2, 3, VersionStage.RELEASED);\r\n const version2 = new Version(0, 2, 3, VersionStage.RELEASED);\r\n const version3 = new Version(1, 2, 4, VersionStage.RELEASED);\r\n const version4 = new Version(0, 3, 4, VersionStage.RELEASED);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatestWithMajorMinor(versions, 1, 2);\r\n\r\n expect(latest).toEqual(version3);\r\n });\r\n\r\n it('Returns undefined if there are no major/minor combos', () => {\r\n const version1 = new Version(1, 2, 3, VersionStage.RELEASED);\r\n const version2 = new Version(0, 2, 3, VersionStage.RELEASED);\r\n const version3 = new Version(1, 2, 4, VersionStage.RELEASED);\r\n const version4 = new Version(0, 3, 4, VersionStage.RELEASED);\r\n const versions = [version1, version2, version3, version4];\r\n\r\n const latest = Version.GetLatestWithMajorMinor(versions, 1, 3);\r\n\r\n expect(latest).toBeUndefined();\r\n });\r\n\r\n it('Get the latest major/minor combo regardless of stage', () => {\r\n const version1 = new Version(1, 2, 2, VersionStage.RELEASED);\r\n const version2 = new Version(1, 2, 3, VersionStage.BETA);\r\n const version3 = new Version(1, 2, 4, VersionStage.ALPHA);\r\n const versions = [version1, version2, version3];\r\n\r\n const latest = Version.GetLatestWithMajorMinor(versions, 1, 2);\r\n\r\n expect(latest).toEqual(version3);\r\n });\r\n});\r\n\r\ndescribe('Version from string', () => {\r\n it('Forms the version from string', () => {\r\n const version = Version.FromString('1.2.3');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toBeUndefined();\r\n expect(version.stage).toEqual(VersionStage.RELEASED);\r\n });\r\n\r\n it('Gets the alpha stage from the string', () => {\r\n const version = Version.FromString('1.2.3-alpha');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toBeUndefined();\r\n expect(version.stage).toEqual(VersionStage.ALPHA);\r\n });\r\n\r\n it('Gets the alpha stage and label from the string', () => {\r\n const version = Version.FromString('1.2.3-alpha-your-mom');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toEqual('your-mom');\r\n expect(version.stage).toEqual(VersionStage.ALPHA);\r\n });\r\n\r\n it('Gets the beta stage from the string', () => {\r\n const version = Version.FromString('1.2.3-beta');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toBeUndefined();\r\n expect(version.stage).toEqual(VersionStage.BETA);\r\n });\r\n\r\n it('Gets the beta stage and label from the string', () => {\r\n const version = Version.FromString('1.2.3-beta-your-mom');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toEqual('your-mom');\r\n expect(version.stage).toEqual(VersionStage.BETA);\r\n });\r\n\r\n it('Gets the label for a released stage from the string', () => {\r\n const version = Version.FromString('1.2.3-yo');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toEqual('yo');\r\n expect(version.stage).toEqual(VersionStage.RELEASED);\r\n });\r\n\r\n it('Forms the version from string with a hyphenated label', () => {\r\n const version = Version.FromString('1.2.3-your-mom');\r\n\r\n expect(version.major).toEqual(1);\r\n expect(version.minor).toEqual(2);\r\n expect(version.patch).toEqual(3);\r\n expect(version.label).toEqual('your-mom');\r\n expect(version.stage).toEqual(VersionStage.RELEASED);\r\n });\r\n\r\n it('Throws if there are not enough parts', () => {\r\n expect.assertions(1);\r\n\r\n try {\r\n Version.FromString('1.2');\r\n } catch (e) {\r\n expect(e).not.toBeUndefined();\r\n }\r\n });\r\n\r\n it('Throws if there are too many parts', () => {\r\n expect.assertions(1);\r\n try {\r\n Version.FromString('1.2.3.4');\r\n } catch (e) {\r\n expect(e).not.toBeUndefined();\r\n }\r\n });\r\n\r\n it('Throws if major is not a number', () => {\r\n expect.assertions(1);\r\n try {\r\n Version.FromString('boo.2.3');\r\n } catch (e) {\r\n expect(e).not.toBeUndefined();\r\n }\r\n });\r\n\r\n it('Throws if minor is not a number', () => {\r\n expect.assertions(1);\r\n try {\r\n Version.FromString('1.boo.3');\r\n } catch (e) {\r\n expect(e).not.toBeUndefined();\r\n }\r\n });\r\n\r\n it('Throws if patch is not a number', () => {\r\n expect.assertions(1);\r\n try {\r\n Version.FromString('1.2.boo');\r\n } catch (e) {\r\n expect(e).not.toBeUndefined();\r\n }\r\n });\r\n});\r\n\r\ndescribe('Testing are equal', () => {\r\n it('Returns true if equal', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n expect(Version.AreEqual(v1, v2)).toEqual(true);\r\n });\r\n\r\n it('Returns false if the majors are different', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(2, 2, 3, VersionStage.ALPHA, 'yo');\r\n expect(Version.AreEqual(v1, v2)).toEqual(false);\r\n });\r\n\r\n it('Returns false if the minors are different', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 1, 3, VersionStage.ALPHA, 'yo');\r\n expect(Version.AreEqual(v1, v2)).toEqual(false);\r\n });\r\n\r\n it('Returns false if the patches are different', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 2, 2, VersionStage.ALPHA, 'yo');\r\n expect(Version.AreEqual(v1, v2)).toEqual(false);\r\n });\r\n\r\n it('Returns false if the stages are different', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 2, 3, VersionStage.BETA, 'yo');\r\n expect(Version.AreEqual(v1, v2)).toEqual(false);\r\n });\r\n\r\n it('Returns false if the labels are different', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 2, 3, VersionStage.ALPHA);\r\n expect(Version.AreEqual(v1, v2)).toEqual(false);\r\n });\r\n});\r\n\r\ndescribe('Testing for a newer version', () => {\r\n it('Returns true if the major version is larger', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(2, 2, 3, VersionStage.BETA);\r\n expect(Version.IsNewerVersion(v1, v2)).toEqual(true);\r\n });\r\n\r\n it('Returns true if the minor version is larger', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 3, 3, VersionStage.BETA);\r\n expect(Version.IsNewerVersion(v1, v2)).toEqual(true);\r\n });\r\n\r\n it('Returns true if the patch version is larger', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 2, 4, VersionStage.BETA);\r\n expect(Version.IsNewerVersion(v1, v2)).toEqual(true);\r\n });\r\n\r\n it('Returns false if equal', () => {\r\n const v1 = new Version(1, 2, 3, VersionStage.ALPHA, 'yo');\r\n const v2 = new Version(1, 2, 3, VersionStage.BETA);\r\n expect(Version.IsNewerVersion(v1, v2)).toEqual(false);\r\n });\r\n});\r\n"]}
@@ -8,4 +8,5 @@ export * from "./Quaternion";
8
8
  export * from "./Rectangle";
9
9
  export * from "./Vector2";
10
10
  export * from "./Vector3";
11
+ export * from "./Version";
11
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ValueObjects/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC","sourcesContent":["export * from \"./Angle\";\r\nexport * from \"./Color\";\r\nexport * from \"./LineSegment2D\";\r\nexport * from \"./Matrix\";\r\nexport * from \"./ParametricLine\";\r\nexport * from \"./ParametricPlane\";\r\nexport * from \"./Quaternion\";\r\nexport * from \"./Rectangle\";\r\nexport * from \"./Vector2\";\r\nexport * from \"./Vector3\";\r\n\r\n\r\n\r\n\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ValueObjects/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC","sourcesContent":["export * from \"./Angle\";\r\nexport * from \"./Color\";\r\nexport * from \"./LineSegment2D\";\r\nexport * from \"./Matrix\";\r\nexport * from \"./ParametricLine\";\r\nexport * from \"./ParametricPlane\";\r\nexport * from \"./Quaternion\";\r\nexport * from \"./Rectangle\";\r\nexport * from \"./Vector2\";\r\nexport * from \"./Vector3\";\r\nexport * from \"./Version\";\r\n"]}
@@ -0,0 +1,23 @@
1
+ export declare enum VersionStage {
2
+ RELEASED = "released",
3
+ BETA = "beta",
4
+ ALPHA = "alpha"
5
+ }
6
+ export declare class Version {
7
+ static GetLatest(versions: Version[]): Version | undefined;
8
+ static GetLatestWithMajor(versions: Version[], major: number): Version | undefined;
9
+ static GetLatestWithMajorMinor(versions: Version[], major: number, minor: number): Version | undefined;
10
+ static FromString(versionString: string): Version;
11
+ private static stringToStage;
12
+ static AreEqual(v1: Version, v2: Version): boolean;
13
+ static IsNewerVersion(a: Version, b: Version): boolean;
14
+ readonly major: number;
15
+ readonly minor: number;
16
+ readonly patch: number;
17
+ readonly stage: VersionStage;
18
+ readonly label?: string;
19
+ readonly displayString: string;
20
+ readonly baseVersionString: string;
21
+ constructor(major: number, minor: number, patch: number, stage: VersionStage, label?: string);
22
+ }
23
+ //# sourceMappingURL=Version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Version.d.ts","sourceRoot":"","sources":["../../../src/ValueObjects/Version.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACtB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,qBAAa,OAAO;IAClB,MAAM,CAAC,SAAS,CACd,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,GAAG,SAAS;IAyBtB,MAAM,CAAC,kBAAkB,CACvB,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,GAAG,SAAS;IAuBtB,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,GAAG,SAAS;IAoBtB,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAyDjD,OAAO,CAAC,MAAM,CAAC,aAAa;IAU5B,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO;IASlD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IAQtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;gBAEvB,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM;CAsB7F"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Version.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Version.test.d.ts","sourceRoot":"","sources":["../../../src/ValueObjects/Version.test.ts"],"names":[],"mappings":""}
@@ -8,4 +8,5 @@ export * from "./Quaternion";
8
8
  export * from "./Rectangle";
9
9
  export * from "./Vector2";
10
10
  export * from "./Vector3";
11
+ export * from "./Version";
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ValueObjects/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ValueObjects/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vived/core",
3
- "version": "1.2.4",
3
+ "version": "1.3.0",
4
4
  "description": "Core Components for VIVED Apps and Hosts",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",