{"version":3,"file":"_randomFormatTime.mjs","names":[],"sources":["../../src/internal/_randomFormatTime.ts"],"sourcesContent":["import { _randomInteger } from \"./_randomInteger\";\nimport {\n  _ILengthProps,\n  _RANDOM_LENGTH_ERROR,\n  _randomLengthPick,\n  _randomLengthWindow,\n} from \"./_randomStringLength\";\nimport { __randomDigits } from \"./private/__randomComposition\";\n\nexport const _randomFormatTime = (props?: _ILengthProps): string => {\n  const clock = (): string =>\n    new Date(\n      _randomInteger({ type: \"integer\", minimum: 0, maximum: DAY }),\n    ).toISOString();\n  if (props?.minLength === undefined && props?.maxLength === undefined)\n    return clock().substring(11);\n  // `HH:MM:SS` carries a mandatory offset — one character as `Z`, six as\n  // `+HH:MM` — and an optional fraction of one to nine digits between them.\n  // Together they express 9 and every length from 11 through 24; 10 is the one\n  // gap, because a fraction needs both a dot and a digit.\n  const window = _randomLengthWindow(props, {\n    minimum: CLOCK + 1,\n    maximum: CLOCK + 1 + FRACTION_MAX + OFFSET,\n    spread: 6,\n  });\n  let length: number = _randomLengthPick(window);\n  if (length === CLOCK + 2)\n    length = window.high >= CLOCK + 3 ? CLOCK + 3 : CLOCK + 1;\n  if (length < window.low || length > window.high)\n    throw new Error(_RANDOM_LENGTH_ERROR);\n  const base: string = clock().substring(11, 11 + CLOCK);\n  if (length === CLOCK + 1) return `${base}Z`;\n  // Nine fraction digits cap the `Z` form at 19 characters, so anything longer\n  // spends the extra five on a numeric offset instead.\n  return length <= CLOCK + 2 + FRACTION_MAX\n    ? `${base}.${__randomDigits(length - CLOCK - 2)}Z`\n    : `${base}.${__randomDigits(length - CLOCK - 1 - OFFSET)}${offset()}`;\n};\n\nconst DAY = 86_400_000;\nconst CLOCK = \"00:00:00\".length;\nconst OFFSET = \"+00:00\".length;\nconst FRACTION_MAX = 9;\n\nconst offset = (): string =>\n  `${_randomInteger({ type: \"integer\", minimum: 0, maximum: 1 }) === 0 ? \"+\" : \"-\"}${pad(\n    _randomInteger({ type: \"integer\", minimum: 0, maximum: 23 }),\n  )}:${pad(_randomInteger({ type: \"integer\", minimum: 0, maximum: 59 }))}`;\n\nconst pad = (value: number): string => String(value).padStart(2, \"0\");\n"],"mappings":";;;;AASA,MAAa,qBAAqB,UAAkC;CAClE,MAAM,cACJ,IAAI,KACF,eAAe;EAAE,MAAM;EAAW,SAAS;EAAG,SAAS;CAAI,CAAC,CAC9D,CAAC,CAAC,YAAY;CAChB,IAAI,OAAO,cAAc,KAAA,KAAa,OAAO,cAAc,KAAA,GACzD,OAAO,MAAM,CAAC,CAAC,UAAU,EAAE;CAK7B,MAAM,SAAS,oBAAoB,OAAO;EACxC,SAAS,QAAQ;EACjB,SAAS,QAAQ,IAAI,eAAe;EACpC,QAAQ;CACV,CAAC;CACD,IAAI,SAAiB,kBAAkB,MAAM;CAC7C,IAAI,WAAW,QAAQ,GACrB,SAAS,OAAO,QAAQ,QAAQ,IAAI,QAAQ,IAAI,QAAQ;CAC1D,IAAI,SAAS,OAAO,OAAO,SAAS,OAAO,MACzC,MAAM,IAAI,MAAM,oBAAoB;CACtC,MAAM,OAAe,MAAM,CAAC,CAAC,UAAU,IAAI,KAAK,KAAK;CACrD,IAAI,WAAW,QAAQ,GAAG,OAAO,GAAG,KAAK;CAGzC,OAAO,UAAU,QAAQ,IAAI,eACzB,GAAG,KAAK,GAAG,eAAe,SAAS,QAAQ,CAAC,EAAE,KAC9C,GAAG,KAAK,GAAG,eAAe,SAAS,QAAQ,IAAI,MAAM,IAAI,OAAO;AACtE;AAEA,MAAM,MAAM;AACZ,MAAM,QAAQ;AACd,MAAM,SAAS;AACf,MAAM,eAAe;AAErB,MAAM,eACJ,GAAG,eAAe;CAAE,MAAM;CAAW,SAAS;CAAG,SAAS;AAAE,CAAC,MAAM,IAAI,MAAM,MAAM,IACjF,eAAe;CAAE,MAAM;CAAW,SAAS;CAAG,SAAS;AAAG,CAAC,CAC7D,EAAE,GAAG,IAAI,eAAe;CAAE,MAAM;CAAW,SAAS;CAAG,SAAS;AAAG,CAAC,CAAC;AAEvE,MAAM,OAAO,UAA0B,OAAO,KAAK,CAAC,CAAC,SAAS,GAAG,GAAG"}