fix(core): update
This commit is contained in:
		
							
								
								
									
										19
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								test/test.ts
									
									
									
									
									
								
							@@ -1,13 +1,9 @@
 | 
				
			|||||||
import { expect, tap } from '@pushrocks/tapbundle';
 | 
					import { expect, tap } from '@pushrocks/tapbundle';
 | 
				
			||||||
import * as smartversion from '../ts/index';
 | 
					import * as smartversion from '../ts/index';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let localSmartVersion: smartversion.SmartVersion;
 | 
					 | 
				
			||||||
tap.test('should create a valid SmartVersion', async () => {
 | 
					tap.test('should create a valid SmartVersion', async () => {
 | 
				
			||||||
  localSmartVersion = new smartversion.SmartVersion('3.2.1');
 | 
					  const localSmartVersion = new smartversion.SmartVersion('3.2.1');
 | 
				
			||||||
  expect(localSmartVersion).to.be.instanceof(smartversion.SmartVersion);
 | 
					  expect(localSmartVersion).to.be.instanceof(smartversion.SmartVersion);
 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
tap.test('should correctly classify greater and less than', async () => {
 | 
					 | 
				
			||||||
  // tslint:disable-next-line:no-unused-expression
 | 
					  // tslint:disable-next-line:no-unused-expression
 | 
				
			||||||
  expect(localSmartVersion.greaterThanString('4.0.0')).to.be.false;
 | 
					  expect(localSmartVersion.greaterThanString('4.0.0')).to.be.false;
 | 
				
			||||||
  // tslint:disable-next-line:no-unused-expression
 | 
					  // tslint:disable-next-line:no-unused-expression
 | 
				
			||||||
@@ -18,4 +14,17 @@ tap.test('should correctly classify greater and less than', async () => {
 | 
				
			|||||||
  expect(localSmartVersion.lessThanString('v3.0.0')).to.be.false;
 | 
					  expect(localSmartVersion.lessThanString('v3.0.0')).to.be.false;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tap.test('should create a valid SmartVersion', async () => {
 | 
				
			||||||
 | 
					  const localSmartVersion = smartversion.SmartVersion.fromFuzzyString('4');
 | 
				
			||||||
 | 
					  expect(localSmartVersion).to.be.instanceof(smartversion.SmartVersion);
 | 
				
			||||||
 | 
					  console.log(localSmartVersion.versionString);
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tap.test('should create a valid SmartVersion', async () => {
 | 
				
			||||||
 | 
					  const localSmartVersion = smartversion.SmartVersion.fromFuzzyString('4.x');
 | 
				
			||||||
 | 
					  const bestMatch = localSmartVersion.getBestMatch(['4.0.1', '4.7.5', '4.3.0']);
 | 
				
			||||||
 | 
					  console.log(bestMatch);
 | 
				
			||||||
 | 
					  expect(bestMatch).to.equal('4.7.5');
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tap.start();
 | 
					tap.start();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										32
									
								
								ts/index.ts
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								ts/index.ts
									
									
									
									
									
								
							@@ -1,9 +1,12 @@
 | 
				
			|||||||
import * as plugins from './smartversion.plugins';
 | 
					import * as plugins from './smartversion.plugins';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { SemVer } from 'semver';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export class SmartVersion {
 | 
					export class SmartVersion {
 | 
				
			||||||
  public semver: SemVer;
 | 
					  public static fromFuzzyString(fuzzyString): SmartVersion {
 | 
				
			||||||
 | 
					    return new SmartVersion(plugins.semver.minVersion(fuzzyString).version, fuzzyString);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public originalVersionString: string;
 | 
				
			||||||
 | 
					  public semver: plugins.semver.SemVer;
 | 
				
			||||||
  public versionString: string;
 | 
					  public versionString: string;
 | 
				
			||||||
  public update = {
 | 
					  public update = {
 | 
				
			||||||
    patch: () => {
 | 
					    patch: () => {
 | 
				
			||||||
@@ -17,7 +20,8 @@ export class SmartVersion {
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor(semVerStringArg: string) {
 | 
					  constructor(semVerStringArg: string, originalStringArg?: string) {
 | 
				
			||||||
 | 
					    this.originalVersionString = originalStringArg;
 | 
				
			||||||
    this.semver = new plugins.semver.SemVer(semVerStringArg);
 | 
					    this.semver = new plugins.semver.SemVer(semVerStringArg);
 | 
				
			||||||
    this.versionString = this.semver.version;
 | 
					    this.versionString = this.semver.version;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -55,4 +59,24 @@ export class SmartVersion {
 | 
				
			|||||||
  public lessThanString(versionStringArg) {
 | 
					  public lessThanString(versionStringArg) {
 | 
				
			||||||
    return plugins.semver.lt(this.versionString, versionStringArg);
 | 
					    return plugins.semver.lt(this.versionString, versionStringArg);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * tries to get the best match from a range of available versions
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public getBestMatch(availableVersions: string[]): string {
 | 
				
			||||||
 | 
					    let bestMatchingVersion: string;
 | 
				
			||||||
 | 
					    for (const versionArg of availableVersions) {
 | 
				
			||||||
 | 
					      if (!plugins.semver.satisfies(versionArg, this.originalVersionString)) {
 | 
				
			||||||
 | 
					        continue;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if(!bestMatchingVersion) {
 | 
				
			||||||
 | 
					        bestMatchingVersion = versionArg;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        if (plugins.semver.lt(bestMatchingVersion, versionArg)) {
 | 
				
			||||||
 | 
					          bestMatchingVersion = versionArg;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return bestMatchingVersion;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user