@dev-build-deploy/version-it
Version:
Version Management Library
148 lines (147 loc) • 4.72 kB
TypeScript
import { IVersion } from "./interfaces";
import { Modifier } from "./modifiers";
/**
* CalVer formats
* @type CalVerFormat
* @member YYYY Year (e.g. 2022)
* @member YY Year (e.g. 22)
* @member 0Y Year (e.g. 22)
* @member MM Month (e.g. 1)
* @member 0M Month (e.g. 01)
* @member WW Week (e.g. 1)
* @member 0W Week (e.g. 01)
* @member DD Day (e.g. 1)
* @member 0D Day (e.g. 01)
* @member MAJOR Major version
* @member MINOR Minor version
* @member MICRO Micro version
*/
type CalVerFormat = "YYYY" | "YY" | "0Y" | "MM" | "0M" | "WW" | "0W" | "DD" | "0D" | "MAJOR" | "MINOR" | "MICRO";
/**
* CalVer increments
* @type CalVerIncrement
* @member calendar Increments the calendar (i.e. YYYY, MM, WW, DD)
* @member major Increments the major version
* @member minor Increments the minor version
* @member micro Increments the micro version
* @member modifier Increments the modifier
*/
export type CalVerIncrement = "CALENDAR" | "MAJOR" | "MINOR" | "MICRO" | "MODIFIER";
/**
* CalVer format
* @interface IFormat
* @member regex Regex used to parse the CalVer
* @member major Major version format
* @member minor Minor version format
* @member micro Micro version format
*/
export interface IFormat {
regex: RegExp;
major: CalVerFormat;
minor: CalVerFormat;
micro?: CalVerFormat;
}
/**
* A simple CalVer implementation
* @interface ICalVer
* @member major Major version
* @member minor Minor version
* @member micro Micro version
* @member modifiers Modifiers
* @member prefix Prefix
*/
export interface ICalVer {
prefix?: string;
major: number;
minor: number;
micro?: number;
modifiers: Modifier[];
}
/**
* A simple CalVer implementation
* @class CalVer
* @member major Major version
* @member minor Minor version
* @member micro Micro version
* @member modifier Modifier
* @method toString Returns the CalVer as a string
* @method increment Increments the CalVer by the provided type
*/
export declare class CalVer implements IVersion<CalVer, CalVerIncrement>, ICalVer {
prefix?: string;
major: number;
minor: number;
micro?: number;
modifiers: Modifier[];
format: IFormat;
constructor(format: string | IFormat, version?: Partial<ICalVer>, prefix?: string);
/**
* Creates a CalVer object from a string
* @param format CalVer formatting
* @param versin Version string
* @param prefix Prefix associated with the version
* @returns CalVer or null if the version string is invalid
*/
static fromString(format: string | IFormat, version: string, prefix?: string): CalVer | null;
/**
* Updates versions associated with calendar items (i.e. YYYY, MM, WW, DD)
* in the provided CalVer format.
* @param format The CalVer format
* @returns The updated version based on the current date.
*/
private updateCalendar;
/**
* Returns a string, where the value is formatted correctly based on the provided format.
* @param value Value to format
* @param format CalVer format to use
* @returns Formatted value
*/
private formatVersionCore;
/**
* Returns the CalVer as a string
* @returns CalVer as a string
*/
toString(): string;
/**
* Increments the CalVer by the provided type;
* - "CALENDAR": Increments the calendar (i.e. YYYY, MM, WW, DD)
* - "MAJOR": Increments the major version
* - "MINOR": Increments the minor version
* - "MICRO": Increments the micro version
* - "MODIFIER": Increments the modifier
* @param type Type of increment
* @param modifier Modifier to increment
* @returns Incremented CalVer
*/
increment(type: CalVerIncrement, modifier?: string): CalVer;
/**
* Confirms that the provided format is identical to the current format
* @param other Other format to compare against
* @returns True if the formats are identical, false otherwise
*/
private isFormatIdentical;
isEqualTo(other: CalVer): boolean;
isGreaterThan(other: CalVer): boolean;
isLessThan(other: CalVer): boolean;
/**
* Returns 0 when current version is equal to the provided version,
* 1 when current version is greater than the provided version,
* and -1 when current version is less than the provided version.
*
* Resulting in the following ordering (taking `YYYY.0M.MICRO` as an example):
*
* 2022.03.1
* 2022.03.2
* 2022.11.1
* 2022.11.1-alpha.1
* 2022.11.1-alpha.2
* 2022.11.1-beta.1
* 2022.11.2
* 2023.01.1
*
* @param other CalVer to compare to
* @returns
*/
compareTo(other: CalVer): number;
}
export {};