{"version":3,"file":"index.cjs","sources":["../lib/pad.js","../lib/generate.js","../lib/split.js","../lib/validate.js","../lib/parse.js","../lib/format.js"],"sourcesContent":["export function pad2 (value) {\n  return value > 9 ? `${value}` : `0${value}`\n}\n\nexport function pad3 (value) {\n  /* c8 ignore next */\n  return value > 99 ? `${value}` : value > 9 ? `0${value}` : `00${value}`\n}\n","import { pad2, pad3 } from './pad'\n\nexport default function generateBuildNumber (options = {}) {\n  let build = getBuildStamp()\n\n  if (typeof options === 'string') {\n    options = { version: options }\n  }\n  const version = options.version\n  if (version) {\n    const versionSeparator = options.versionSeparator || '.'\n    build = version.trim() + versionSeparator.trim() + build\n  }\n\n  return build\n}\n\nfunction getBuildStamp () {\n  const now = new Date()\n  const year = now.getFullYear() % 100\n  const month = now.getMonth() + 1\n  const day = now.getDate()\n  // Count 2-minute intervals elapsed since midnight:(HH * 60 + MM) / 2\n  const counter = parseInt((now.getHours() * 60 + now.getMinutes()) / 2)\n  // Format the stamp as YYMMDDCCC\n  return `${pad2(year)}${pad2(month)}${pad2(day)}${pad3(counter)}`\n}\n","export default function splitBuildNumber (build) {\n  const parts = /(\\d{2})(\\d{2})(\\d{2})(\\d{3})$/.exec(build.trim())\n  if (!parts) {\n    throw new Error('Build number has to end with \"YYMMDDCCC\".')\n  }\n\n  const year = +parts[1]\n  const month = +parts[2]\n  const day = +parts[3]\n  const counter = +parts[4]\n  if (!(year >= 0 && month >= 1 && month <= 12 && day >= 1 && day <= 31)) {\n    throw new Error('Build number has to contain numbers formatting a date.')\n  }\n\n  return { year, month, day, counter }\n}\n","import splitBuildNumber from './split'\n\nexport default function validateBuildNumber (build) {\n  try {\n    splitBuildNumber(build)\n    return true\n  } catch {\n    return false\n  }\n}\n","import splitBuildNumber from './split'\n\nexport default function parseBuildTime (build) {\n  let { year, month, day, counter } = splitBuildNumber(build)\n\n  // Convert the two-digit year to the full year\n  year += 2000\n  // Prepare the month to be accepted by the Date constructor\n  month -= 1\n  // Convert count of 2-minute intervals to minutes elapsed since midnight\n  counter *= 2\n  const hours = parseInt(counter / 60)\n  const minutes = parseInt(counter % 60)\n\n  return new Date(year, month, day, hours, minutes)\n}\n","import parseBuildTime from './parse'\nimport { pad2 } from './pad'\n\nexport default function formatBuildTime (date) {\n  if (typeof date === 'string') {\n    date = parseBuildTime(date)\n  }\n  const datePart = date.toDateString()\n  const hours = date.getHours()\n  const minutes = date.getMinutes()\n  return `${datePart} ${pad2(hours)}:${pad2(minutes)}`\n}\n"],"names":[],"mappings":";;AAAO,SAAS,IAAI,EAAE,KAAK,EAAE;AAC7B,EAAE,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;AAC5C;AAEO,SAAS,IAAI,EAAE,KAAK,EAAE;AAE7B,EAAE,OAAO,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC;AACxE;;ACLe,SAAS,mBAAmB,EAAE,OAAO,GAAG,EAAE,EAAE;AAC3D,EAAE,IAAI,KAAK,GAAG,aAAa;AAE3B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACnC,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO;AAChC;AACA,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC;AAC1B,EAAE,IAAI,OAAO,EAAE;AACf,IAAI,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI;AACzD,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG;AACvD;AAEA,EAAE,OAAO;AACT;AAEA,SAAS,aAAa,IAAI;AAC1B,EAAE,MAAM,GAAG,GAAG,IAAI,IAAI;AACtB,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG;AACnC,EAAE,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG;AACjC,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO;AAEzB,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;AAEvE,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACjE;;AC1Be,SAAS,gBAAgB,EAAE,KAAK,EAAE;AACjD,EAAE,MAAM,KAAK,GAAG,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjE,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,MAAM,IAAI,KAAK,CAAC,2CAA2C;AAC/D;AAEA,EAAE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,EAAE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,EAAE,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE;AAC1E,IAAI,MAAM,IAAI,KAAK,CAAC,wDAAwD;AAC5E;AAEA,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO;AACpC;;ACbe,SAAS,mBAAmB,EAAE,KAAK,EAAE;AACpD,EAAE,IAAI;AACN,IAAI,gBAAgB,CAAC,KAAK;AAC1B,IAAI,OAAO;AACX,GAAG,CAAC,MAAM;AACV,IAAI,OAAO;AACX;AACA;;ACPe,SAAS,cAAc,EAAE,KAAK,EAAE;AAC/C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,KAAK;AAG5D,EAAE,IAAI,IAAI;AAEV,EAAE,KAAK,IAAI;AAEX,EAAE,OAAO,IAAI;AACb,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,EAAE;AACrC,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,GAAG,EAAE;AAEvC,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO;AAClD;;ACZe,SAAS,eAAe,EAAE,IAAI,EAAE;AAC/C,EAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAChC,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI;AAC9B;AACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY;AACpC,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ;AAC7B,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU;AACjC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD;;;;;;;"}