typia
Version:
Superfast runtime validators with only one line
31 lines (25 loc) • 752 B
text/typescript
import type { OpenApi } from "@typia/interface";
import { _randomInteger } from "./_randomInteger";
const DEFAULT_MIN_LENGTH = 5;
const DEFAULT_RANGE = 5;
export const _randomString = (props: OpenApi.IJsonSchema.IString) => {
const minimum: number =
props.minLength ??
Math.min(props.maxLength ?? DEFAULT_MIN_LENGTH, DEFAULT_MIN_LENGTH);
const length: number = _randomInteger({
type: "integer",
minimum,
maximum: props.maxLength ?? minimum + DEFAULT_RANGE,
});
return new Array(length)
.fill(0)
.map(() => ALPHABETS[random()])
.join("");
};
const ALPHABETS = "abcdefghijklmnopqrstuvwxyz";
const random = () =>
_randomInteger({
type: "integer",
minimum: 0,
maximum: ALPHABETS.length - 1,
});