{"version":3,"sources":["utils/versions.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EAAE,iBAAiB,EAC9B,MAAM,eAAe,CAAC;AASvB,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAuB5B;AAED,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,UAAU,EAAE,GACvB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAU9B","file":"versions.d.ts","sourcesContent":["import path from 'path';\nimport pLocate from 'p-locate';\nimport semver from 'semver';\n\nimport {\n  IWorkspace, IWorkspaceVersion,\n} from '../interfaces';\nimport {\n  analyzeCommitsSinceRef,\n  getFirstCommitByWorkspaceFolder,\n  getTags,\n  isRefInHistory,\n} from './git';\n\n\nexport async function getNextVersion(\n  tags: string[],\n  workspace: IWorkspace,\n): Promise<IWorkspaceVersion> {\n  const wName = workspace.getName();\n  const folderName = workspace.dir.replace(process.cwd() + path.sep, '');\n  let ref = '';\n  let currentVersion;\n\n  if (tags.length === 0) {\n    ref = await getFirstCommitByWorkspaceFolder(folderName);\n    currentVersion = workspace.getVersion();\n  } else {\n    ref = await pLocate(tags, async (t: string): Promise<boolean> => {\n      const result = await isRefInHistory(t);\n      return result;\n    }, { preserveOrder: true });\n    currentVersion = ref.replace(`${wName}-`, '');\n  }\n\n  const releaseType = await analyzeCommitsSinceRef(ref, folderName);\n  const next = semver.inc(currentVersion, releaseType as semver.ReleaseType);\n\n  return {\n    [wName]: next,\n  };\n}\n\nexport async function getNextVersionsByWorkspaces(\n  workspaces: IWorkspace[],\n): Promise<IWorkspaceVersion[]> {\n  const tags = await getTags({ isRevert: true });\n\n  const promises = workspaces.map(async (workspace: IWorkspace): Promise<IWorkspaceVersion> => {\n    const name = workspace.getName();\n    const workspaceTags = tags.filter((tag: string) => tag.startsWith(name));\n    return getNextVersion(workspaceTags, workspace);\n  });\n\n  return Promise.all(promises);\n}\n"]}