UNPKG

typia

Version:

Superfast runtime validators with only one line

45 lines (44 loc) 1.6 kB
import { _randomInteger } from "./_randomInteger.mjs"; import { _RANDOM_LENGTH_ERROR, _randomLengthPick, _randomLengthWindow } from "./_randomStringLength.mjs"; import { __randomDigits } from "./private/__randomComposition.mjs"; //#region src/internal/_randomFormatTime.ts const _randomFormatTime = (props) => { const clock = () => new Date(_randomInteger({ type: "integer", minimum: 0, maximum: DAY })).toISOString(); if (props?.minLength === void 0 && props?.maxLength === void 0) return clock().substring(11); const window = _randomLengthWindow(props, { minimum: CLOCK + 1, maximum: CLOCK + 1 + FRACTION_MAX + OFFSET, spread: 6 }); let length = _randomLengthPick(window); if (length === CLOCK + 2) length = window.high >= CLOCK + 3 ? CLOCK + 3 : CLOCK + 1; if (length < window.low || length > window.high) throw new Error(_RANDOM_LENGTH_ERROR); const base = clock().substring(11, 11 + CLOCK); if (length === CLOCK + 1) return `${base}Z`; return length <= CLOCK + 2 + FRACTION_MAX ? `${base}.${__randomDigits(length - CLOCK - 2)}Z` : `${base}.${__randomDigits(length - CLOCK - 1 - OFFSET)}${offset()}`; }; const DAY = 864e5; const CLOCK = 8; const OFFSET = 6; const FRACTION_MAX = 9; const offset = () => `${_randomInteger({ type: "integer", minimum: 0, maximum: 1 }) === 0 ? "+" : "-"}${pad(_randomInteger({ type: "integer", minimum: 0, maximum: 23 }))}:${pad(_randomInteger({ type: "integer", minimum: 0, maximum: 59 }))}`; const pad = (value) => String(value).padStart(2, "0"); //#endregion export { _randomFormatTime }; //# sourceMappingURL=_randomFormatTime.mjs.map