Skip to content

Commit 824d778

Browse files
committed
refactor(calendar): extract CalVerToken type alias
1 parent 37a535c commit 824d778

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

src/versioning-strategies/calendar.ts

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ const DEFAULT_DATE_FORMAT = 'YYYY.0M.0D';
136136
type BumpType = 'major' | 'minor' | 'micro';
137137

138138
function determineBumpType(
139-
tokens: CalVerSegment['type'][],
139+
tokens: CalVerToken[],
140140
hasBreaking: boolean,
141141
hasFeatures: boolean
142142
): BumpType {
@@ -158,20 +158,22 @@ interface ParsedCalVer {
158158
build?: string;
159159
}
160160

161+
type CalVerToken =
162+
| 'YYYY'
163+
| 'YY'
164+
| '0Y'
165+
| 'MM'
166+
| '0M'
167+
| 'WW'
168+
| '0W'
169+
| 'DD'
170+
| '0D'
171+
| 'MAJOR'
172+
| 'MINOR'
173+
| 'MICRO';
174+
161175
interface CalVerSegment {
162-
type:
163-
| 'YYYY'
164-
| 'YY'
165-
| '0Y'
166-
| 'MM'
167-
| '0M'
168-
| 'WW'
169-
| '0W'
170-
| 'DD'
171-
| '0D'
172-
| 'MAJOR'
173-
| 'MINOR'
174-
| 'MICRO';
176+
type: CalVerToken;
175177
value: number;
176178
originalString: string;
177179
}
@@ -227,7 +229,7 @@ class CalendarVersionUpdate implements VersionUpdater {
227229

228230
private parseAndValidate(
229231
version: Version,
230-
tokens: CalVerSegment['type'][]
232+
tokens: CalVerToken[]
231233
): ParsedCalVer {
232234
const parsed = parseVersionString(version.toString(), this.format);
233235
if (!parsed) {
@@ -248,7 +250,7 @@ class CalendarVersionUpdate implements VersionUpdater {
248250
}
249251

250252
private buildNewSegments(
251-
tokens: CalVerSegment['type'][],
253+
tokens: CalVerToken[],
252254
oldSegments: CalVerSegment[]
253255
): CalVerSegment[] {
254256
const state: SegmentProcessingState = {
@@ -267,7 +269,7 @@ class CalendarVersionUpdate implements VersionUpdater {
267269
}
268270

269271
private processDateSegment(
270-
tokenType: CalVerSegment['type'],
272+
tokenType: CalVerToken,
271273
oldSegment: CalVerSegment | undefined,
272274
state: SegmentProcessingState
273275
): CalVerSegment {
@@ -288,7 +290,7 @@ class CalendarVersionUpdate implements VersionUpdater {
288290
}
289291

290292
private processSemanticSegment(
291-
tokenType: CalVerSegment['type'],
293+
tokenType: CalVerToken,
292294
oldSegment: CalVerSegment | undefined,
293295
state: SegmentProcessingState
294296
): CalVerSegment {
@@ -305,7 +307,7 @@ class CalendarVersionUpdate implements VersionUpdater {
305307
}
306308

307309
private computeValueSameDate(
308-
tokenType: CalVerSegment['type'],
310+
tokenType: CalVerToken,
309311
oldValue: number,
310312
state: SegmentProcessingState
311313
): number {
@@ -322,7 +324,7 @@ class CalendarVersionUpdate implements VersionUpdater {
322324
return oldValue;
323325
}
324326

325-
private isTargetSegmentForBump(tokenType: CalVerSegment['type']): boolean {
327+
private isTargetSegmentForBump(tokenType: CalVerToken): boolean {
326328
return tokenType.toLowerCase() === this.bumpType;
327329
}
328330
}
@@ -349,7 +351,7 @@ function isDateSegment(
349351

350352
function extractDateFromSegments(
351353
segments: CalVerSegment[],
352-
tokens: CalVerSegment['type'][]
354+
tokens: CalVerToken[]
353355
): Date | null {
354356
const values = extractDateValues(segments, tokens);
355357

@@ -369,7 +371,7 @@ interface DateValues {
369371

370372
function extractDateValues(
371373
segments: CalVerSegment[],
372-
tokens: CalVerSegment['type'][]
374+
tokens: CalVerToken[]
373375
): DateValues {
374376
const values: DateValues = {year: null, month: null, day: null, week: null};
375377

@@ -460,7 +462,7 @@ const SEGMENT_FORMATTERS: Record<string, SegmentFormatter> = {
460462
'0D': parts => parts.day.toString().padStart(2, '0'),
461463
};
462464

463-
function formatSegment(type: CalVerSegment['type'], date: Date): string {
465+
function formatSegment(type: CalVerToken, date: Date): string {
464466
const formatter = SEGMENT_FORMATTERS[type];
465467
return formatter ? formatter(getDateParts(date)) : '';
466468
}
@@ -487,9 +489,9 @@ const PLACEHOLDER_PATTERN = new RegExp(
487489
'g'
488490
);
489491

490-
function parseFormat(format: string): CalVerSegment['type'][] {
492+
function parseFormat(format: string): CalVerToken[] {
491493
return [...format.matchAll(PLACEHOLDER_PATTERN)].map(
492-
m => m[0] as CalVerSegment['type']
494+
m => m[0] as CalVerToken
493495
);
494496
}
495497

0 commit comments

Comments
 (0)