@codluv/versionguard 0.3.0 → 0.4.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.
Files changed (42) hide show
  1. package/dist/calver.d.ts +65 -22
  2. package/dist/calver.d.ts.map +1 -1
  3. package/dist/chunks/{index-BrZJDWya.js → index-B3R60bYJ.js} +451 -151
  4. package/dist/chunks/index-B3R60bYJ.js.map +1 -0
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +248 -25
  7. package/dist/cli.js.map +1 -1
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/feedback/index.d.ts +1 -1
  10. package/dist/feedback/index.d.ts.map +1 -1
  11. package/dist/fix/index.d.ts +6 -1
  12. package/dist/fix/index.d.ts.map +1 -1
  13. package/dist/guard.d.ts +45 -1
  14. package/dist/guard.d.ts.map +1 -1
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +14 -13
  18. package/dist/init-wizard.d.ts +49 -0
  19. package/dist/init-wizard.d.ts.map +1 -0
  20. package/dist/project.d.ts +23 -2
  21. package/dist/project.d.ts.map +1 -1
  22. package/dist/sources/git-tag.d.ts +29 -0
  23. package/dist/sources/git-tag.d.ts.map +1 -1
  24. package/dist/sources/json.d.ts +31 -0
  25. package/dist/sources/json.d.ts.map +1 -1
  26. package/dist/sources/regex.d.ts +30 -0
  27. package/dist/sources/regex.d.ts.map +1 -1
  28. package/dist/sources/resolve.d.ts +27 -8
  29. package/dist/sources/resolve.d.ts.map +1 -1
  30. package/dist/sources/toml.d.ts +36 -1
  31. package/dist/sources/toml.d.ts.map +1 -1
  32. package/dist/sources/utils.d.ts +73 -0
  33. package/dist/sources/utils.d.ts.map +1 -0
  34. package/dist/sources/version-file.d.ts +28 -1
  35. package/dist/sources/version-file.d.ts.map +1 -1
  36. package/dist/sources/yaml.d.ts +29 -0
  37. package/dist/sources/yaml.d.ts.map +1 -1
  38. package/dist/tag/index.d.ts.map +1 -1
  39. package/dist/types.d.ts +89 -4
  40. package/dist/types.d.ts.map +1 -1
  41. package/package.json +2 -1
  42. package/dist/chunks/index-BrZJDWya.js.map +0 -1
package/dist/calver.d.ts CHANGED
@@ -1,9 +1,43 @@
1
1
  /**
2
2
  * Calendar version parsing, formatting, and comparison helpers.
3
3
  *
4
+ * @remarks
5
+ * Supports the full calver.org specification with all standard tokens:
6
+ * Year (`YYYY`, `YY`, `0Y`), Month (`MM`, `M`, `0M`), Week (`WW`, `0W`),
7
+ * Day (`DD`, `D`, `0D`), and Counter (`MICRO`/`PATCH`).
8
+ *
9
+ * `MICRO` is the CalVer-standard name for the counter segment.
10
+ * `PATCH` is accepted as a SemVer-familiar alias and behaves identically.
11
+ *
4
12
  * @packageDocumentation
5
13
  */
6
- import type { CalVer, CalVerFormat, ValidationResult } from './types';
14
+ import type { CalVer, CalVerFormat, SchemeRules, ValidationResult } from './types';
15
+ /**
16
+ * Validates that a CalVer format string is composed of valid tokens
17
+ * and follows structural rules.
18
+ *
19
+ * @remarks
20
+ * Structural rules enforced:
21
+ * - Must have at least 2 segments
22
+ * - First segment must be a year token
23
+ * - Week tokens and Month/Day tokens are mutually exclusive
24
+ * - Counter (MICRO/PATCH) can only appear as the last segment
25
+ *
26
+ * @param formatStr - Format string to validate.
27
+ * @returns `true` when the format is valid.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { isValidCalVerFormat } from 'versionguard';
32
+ *
33
+ * isValidCalVerFormat('YYYY.MM.MICRO'); // true
34
+ * isValidCalVerFormat('INVALID'); // false
35
+ * ```
36
+ *
37
+ * @public
38
+ * @since 0.3.0
39
+ */
40
+ export declare function isValidCalVerFormat(formatStr: string): formatStr is CalVerFormat;
7
41
  /**
8
42
  * Parsed token layout for a supported CalVer format string.
9
43
  *
@@ -15,11 +49,19 @@ export interface ParsedCalVerFormat {
15
49
  /**
16
50
  * Year token captured from the format string.
17
51
  */
18
- year: 'YYYY' | 'YY';
52
+ year: 'YYYY' | 'YY' | '0Y';
53
+ /**
54
+ * Month token captured from the format string when present.
55
+ *
56
+ * @defaultValue undefined
57
+ */
58
+ month?: 'MM' | 'M' | '0M';
19
59
  /**
20
- * Month token captured from the format string.
60
+ * Week token captured from the format string when present.
61
+ *
62
+ * @defaultValue undefined
21
63
  */
22
- month: 'MM' | 'M' | '0M';
64
+ week?: 'WW' | '0W';
23
65
  /**
24
66
  * Day token captured from the format string when present.
25
67
  *
@@ -27,18 +69,19 @@ export interface ParsedCalVerFormat {
27
69
  */
28
70
  day?: 'DD' | 'D' | '0D';
29
71
  /**
30
- * Patch token captured from the format string when present.
72
+ * Counter token captured from the format string when present.
73
+ * Both `MICRO` and `PATCH` map to the same numeric counter.
31
74
  *
32
75
  * @defaultValue undefined
33
76
  */
34
- patch?: 'PATCH';
77
+ counter?: 'MICRO' | 'PATCH';
35
78
  }
36
79
  /**
37
80
  * Breaks a CalVer format string into its component tokens.
38
81
  *
39
82
  * @remarks
40
83
  * This helper is used internally by parsing, formatting, and version generation helpers
41
- * to decide which date parts or patch counters are present in a given CalVer layout.
84
+ * to decide which date parts or counters are present in a given CalVer layout.
42
85
  *
43
86
  * @param calverFormat - Format string to inspect.
44
87
  * @returns The parsed token definition for the requested format.
@@ -47,8 +90,8 @@ export interface ParsedCalVerFormat {
47
90
  * ```ts
48
91
  * import { parseFormat } from 'versionguard';
49
92
  *
50
- * parseFormat('YYYY.MM.PATCH');
51
- * // => { year: 'YYYY', month: 'MM', patch: 'PATCH' }
93
+ * parseFormat('YYYY.MM.MICRO');
94
+ * // => { year: 'YYYY', month: 'MM', counter: 'MICRO' }
52
95
  * ```
53
96
  *
54
97
  * @public
@@ -92,7 +135,7 @@ export declare function getRegexForFormat(calverFormat: CalVerFormat): RegExp;
92
135
  * ```ts
93
136
  * import { parse } from 'versionguard';
94
137
  *
95
- * parse('2026.03.21', 'YYYY.0M.0D')?.month;
138
+ * parse('2026.3.0', 'YYYY.M.MICRO')?.month;
96
139
  * // => 3
97
140
  * ```
98
141
  *
@@ -117,14 +160,14 @@ export declare function parse(version: string, calverFormat: CalVerFormat): CalV
117
160
  * ```ts
118
161
  * import { validate } from 'versionguard';
119
162
  *
120
- * validate('2026.03.21', 'YYYY.0M.0D', false).valid;
163
+ * validate('2026.3.0', 'YYYY.M.MICRO', false).valid;
121
164
  * // => true
122
165
  * ```
123
166
  *
124
167
  * @public
125
168
  * @since 0.1.0
126
169
  */
127
- export declare function validate(version: string, calverFormat: CalVerFormat, preventFutureDates?: boolean): ValidationResult;
170
+ export declare function validate(version: string, calverFormat: CalVerFormat, preventFutureDates?: boolean, schemeRules?: SchemeRules): ValidationResult;
128
171
  /**
129
172
  * Formats a parsed CalVer object back into a version string.
130
173
  *
@@ -153,8 +196,8 @@ export declare function format(version: CalVer): string;
153
196
  * Creates the current CalVer string for a format.
154
197
  *
155
198
  * @remarks
156
- * This helper derives its values from the provided date and initializes any patch token to `0`.
157
- * It is useful for generating a same-day baseline before incrementing patch-based formats.
199
+ * This helper derives its values from the provided date and initializes any counter to `0`.
200
+ * It is useful for generating a same-day baseline before incrementing counter-based formats.
158
201
  *
159
202
  * @param calverFormat - Format to generate.
160
203
  * @param now - Date used as the source for year, month, and day values.
@@ -164,7 +207,7 @@ export declare function format(version: CalVer): string;
164
207
  * ```ts
165
208
  * import { getCurrentVersion } from 'versionguard';
166
209
  *
167
- * getCurrentVersion('YYYY.MM.PATCH', new Date('2026-03-21T00:00:00Z'));
210
+ * getCurrentVersion('YYYY.M.MICRO', new Date('2026-03-21T00:00:00Z'));
168
211
  * // => '2026.3.0'
169
212
  * ```
170
213
  *
@@ -176,8 +219,8 @@ export declare function getCurrentVersion(calverFormat: CalVerFormat, now?: Date
176
219
  * Compares two CalVer strings using a shared format.
177
220
  *
178
221
  * @remarks
179
- * Comparison is performed component-by-component in year, month, day, then patch order.
180
- * Missing day and patch values are treated as `0` during comparison.
222
+ * Comparison is performed component-by-component in year, month, day, then counter order.
223
+ * Missing day and counter values are treated as `0` during comparison.
181
224
  *
182
225
  * @param a - Left-hand version string.
183
226
  * @param b - Right-hand version string.
@@ -188,7 +231,7 @@ export declare function getCurrentVersion(calverFormat: CalVerFormat, now?: Date
188
231
  * ```ts
189
232
  * import { compare } from 'versionguard';
190
233
  *
191
- * compare('2026.03.2', '2026.03.1', 'YYYY.MM.PATCH');
234
+ * compare('2026.3.2', '2026.3.1', 'YYYY.M.MICRO');
192
235
  * // => 1
193
236
  * ```
194
237
  *
@@ -200,8 +243,8 @@ export declare function compare(a: string, b: string, calverFormat: CalVerFormat
200
243
  * Increments a CalVer string.
201
244
  *
202
245
  * @remarks
203
- * Patch-based formats increment the existing patch number. Formats without a patch token are
204
- * promoted to a patch-based output by appending `.PATCH` semantics with an initial value of `0`.
246
+ * Counter-based formats increment the existing counter. Formats without a counter are
247
+ * promoted to a counter-based output by appending `.MICRO` with an initial value of `0`.
205
248
  *
206
249
  * @param version - Current version string.
207
250
  * @param calverFormat - Format used to parse the current version.
@@ -211,7 +254,7 @@ export declare function compare(a: string, b: string, calverFormat: CalVerFormat
211
254
  * ```ts
212
255
  * import { increment } from 'versionguard';
213
256
  *
214
- * increment('2026.03.1', 'YYYY.MM.PATCH');
257
+ * increment('2026.3.1', 'YYYY.M.MICRO');
215
258
  * // => '2026.3.2'
216
259
  * ```
217
260
  *
@@ -234,7 +277,7 @@ export declare function increment(version: string, calverFormat: CalVerFormat):
234
277
  * ```ts
235
278
  * import { getNextVersions } from 'versionguard';
236
279
  *
237
- * getNextVersions('2026.03.1', 'YYYY.MM.PATCH').length;
280
+ * getNextVersions('2026.3.1', 'YYYY.M.MICRO').length;
238
281
  * // => 2
239
282
  * ```
240
283
  *
@@ -1 +1 @@
1
- {"version":3,"file":"calver.d.ts","sourceRoot":"","sources":["../src/calver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAmB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB;;OAEG;IACH,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAEzB;;;;OAIG;IACH,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAExB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,kBAAkB,CAkB1E;AAuBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAIpE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAmChF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAC1B,kBAAkB,GAAE,OAAc,GACjC,gBAAgB,CA0ElB;AAcD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAa9C;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAkB5F;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CAiBhF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CAsB7E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAE5F"}
1
+ {"version":3,"file":"calver.d.ts","sourceRoot":"","sources":["../src/calver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EAEZ,WAAW,EAEX,gBAAgB,EACjB,MAAM,SAAS,CAAC;AA8BjB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,IAAI,YAAY,CAoBhF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAE3B;;;;OAIG;IACH,KAAK,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAE1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEnB;;;;OAIG;IACH,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAExB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,kBAAkB,CAoB1E;AAyCD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAKpE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAqDhF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAC1B,kBAAkB,GAAE,OAAc,EAClC,WAAW,CAAC,EAAE,WAAW,GACxB,gBAAgB,CA6GlB;AAgBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsB9C;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAY5F;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CAiBhF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CAqB7E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAE5F"}