MCPcopy Create free account
hub / github.com/freecodexyz/free-code / getRecentReleaseNoteGroups

Function getRecentReleaseNoteGroups

src/utils/releaseNotes.ts:228–265  ·  view source on GitHub ↗
(
  currentVersion: string,
  previousVersion: string | null | undefined,
  changelogContent: string = getStoredChangelogFromMemory(),
  maxVersions: number = Number.POSITIVE_INFINITY,
)

Source from the content-addressed store, hash-verified

226}
227
228export function getRecentReleaseNoteGroups(
229 currentVersion: string,
230 previousVersion: string | null | undefined,
231 changelogContent: string = getStoredChangelogFromMemory(),
232 maxVersions: number = Number.POSITIVE_INFINITY,
233): Array<[string, string[]]> {
234 try {
235 const releaseNotes = parseChangelog(changelogContent)
236
237 // Strip SHA/build metadata from both versions to compare only the base semver.
238 const baseCurrentVersion = coerce(currentVersion)
239 const basePreviousVersion = previousVersion ? coerce(previousVersion) : null
240
241 if (!baseCurrentVersion) {
242 return []
243 }
244
245 if (
246 basePreviousVersion &&
247 !gt(baseCurrentVersion.version, basePreviousVersion.version)
248 ) {
249 return []
250 }
251
252 return Object.entries(releaseNotes)
253 .filter(
254 ([version]) =>
255 !basePreviousVersion || gt(version, basePreviousVersion.version),
256 )
257 .sort(([versionA], [versionB]) => (gt(versionA, versionB) ? -1 : 1))
258 .slice(0, maxVersions)
259 .map(([version, notes]) => [version, notes.filter(Boolean)] as [string, string[]])
260 .filter(([, notes]) => notes.length > 0)
261 } catch (error) {
262 logError(toError(error))
263 return []
264 }
265}
266
267/**
268 * Gets all release notes as an array of [version, notes] arrays.

Callers 2

getRecentReleaseNotesFunction · 0.85
callFunction · 0.85

Calls 6

parseChangelogFunction · 0.85
gtFunction · 0.85
toErrorFunction · 0.85
entriesMethod · 0.80
logErrorFunction · 0.70

Tested by

no test coverage detected