typia
Version:
Superfast runtime validators with only one line
20 lines (19 loc) • 829 B
JavaScript
import RandExp from "randexp";
//#region src/internal/_randomPattern.ts
const _randomPattern = (regex, props) => {
const r = new RandExp(regex);
const min = props?.minLength;
const max = props?.maxLength;
if (max !== void 0) r.max = max;
else if (min !== void 0 && min * 2 > r.max) r.max = min * 2;
const bounded = min !== void 0 || max !== void 0;
const limit = bounded ? 1024 : 10;
for (let i = 0; i < limit; ++i) {
const str = r.gen();
if (regex.test(str) && (min === void 0 || str.length >= min) && (max === void 0 || str.length <= max)) return str;
}
throw new Error(bounded ? "unable to generate a random string matching the pattern within the length range." : "unable to generate a random string matching the pattern.");
};
//#endregion
export { _randomPattern };
//# sourceMappingURL=_randomPattern.mjs.map