typia
Version:
Superfast runtime validators with only one line
35 lines (34 loc) • 1.17 kB
JavaScript
import { _randomInteger } from "./_randomInteger.mjs";
import { _randomLengthPick, _randomLengthWindow } from "./_randomStringLength.mjs";
import { __randomNumeric } from "./private/__randomComposition.mjs";
//#region src/internal/_randomFormatDuration.ts
const _randomFormatDuration = (props) => {
if (props?.minLength === void 0 && props?.maxLength === void 0) {
const period = durate([
["Y", random(0, 100)],
["M", random(0, 12)],
["D", random(0, 31)]
]);
const time = durate([
["H", random(0, 24)],
["M", random(0, 60)],
["S", random(0, 60)]
]);
if (period.length + time.length === 0) return "PT0S";
return `P${period}${time.length ? "T" : ""}${time}`;
}
return `P${__randomNumeric(_randomLengthPick(_randomLengthWindow(props, {
minimum: MINIMUM,
spread: 6
})) - MINIMUM + 1)}Y`;
};
const MINIMUM = 3;
const durate = (elements) => elements.filter(([_unit, value]) => value !== 0).map(([unit, value]) => `${value}${unit}`).join("");
const random = (minimum, maximum) => _randomInteger({
type: "integer",
minimum,
maximum
});
//#endregion
export { _randomFormatDuration };
//# sourceMappingURL=_randomFormatDuration.mjs.map