/** * 随机生成值的库 * * @example * ```javascript * import random from '@antv/dw-random'; * * const name = random.name(); * ``` * * with your own seed * ```javascript * import { Random } from '@antv/dw-random'; * const random = new Random(200); * console.log(random.phone()); * ``` * extend * ```javascript * import { Random } from '@antv/dw-random'; * Random.mixin({ * user() { * return { * name: this.cname(), * aget: this.integer({ max: 50, min: 25 }) * } * } * }) * ``` * * @packageDocumentation */ /** * @public */ export declare type AnyFunc = (...args: any[]) => any; /** * 基础(bool int float regexp)生产器 * basic generator for bool int float regexp * @public */ export declare class BasicRandom { /** * extends class's prototype * @param options - methods * * @example * ```javascript * BasiceRandom.mixin({ * percent() { * return `${this.float({ min: 0, max: 100, fixed: 2 })}%`; * }, * }); * * const R = new Random(); * R.percent(); // '10.12%' * R.n(R.percent, 2) // ['12.10%', '25.22%'] * ``` */ static mixin(options: MixinOptions): void; /** * random的逻辑 生成 0-1之内的数字 可以使用 `Math.random` */ random: RandomFunc; /** * MersenneTwister 的 seed */ private readonly seed?; /** * MersenneTwister */ private mt?; constructor(seed?: number); constructor(seed?: RandomFunc); /** * 生成一个 `boolean` 数据 * @param options - 生产bool值的配置 */ boolean(options?: BooleanOptions): boolean; /** * 生成一个 `int` 数据 * @param options - */ integer(options?: Interval): number; /** * 生产float / double数据 * * @param options - */ float(options?: FloatOptions): number; /** * 生成自然数 * @param options - */ natural(options?: Interval): number; /** * 从给定的数组中随机返回一个 * @param array - 数组 * */ pickone(array: T[]): T; /** * 从给定的数组中随机返回`count`个 * @param array - 数组 * @param count - 数目 */ pickset(array: T[], count?: number): T[]; /** * 打乱数组元素顺序 * @param array - 数组 * @beta */ shuffle(array: T[]): T[]; /** * 批量生成指定的数据 * @param generator - 生产数据的逻辑 * @param length - 生产数据的长度 * @param params - `generator`的参数 * * @example * ```javascript * const R = new Random(); * R.n(R.natural, 10, { min: 0, max: 100 }); // 十个 0-100 的数字 * ``` */ n(generator: T, length?: number, ...params: Parameters): ReturnType[]; /** * 通过正则表达式生成数据 * * @example * ```javascript * new Random().randexp('\\d{4}-\\d{8}'); * ``` * * @param source - 正则表达式 * @param flag - 正则表达式的flag `i` */ randexp(source: string | RegExp, flag?: string): string; } /** * 生成boolean值的配置 * @public */ export declare interface BooleanOptions { /** true的可能性 0-100 */ likelihood?: number; } /** @public */ export declare interface CCharacterOptions { pool?: string; } /** * 地点生成器 * * @beta */ export declare class ChAddressRandom extends BasicRandom { /** * 生成一个国家中文名字 */ country(): string; /** * 返回一个省份名称 */ province(): string; /** * 生成一个市 */ city(): string; /** * 生成一个区(县) */ district(): string; /** * 返回一个路名 */ road(): string; /** * 返回一个地址 */ address(): string; /** 生成一个邮政编码 */ postcode(): string; } /** * 生成单个char的参数配置 * @public */ export declare interface CharacterOptions { pool?: string; numeric?: boolean; symbols?: boolean; lower?: boolean; upper?: boolean; } /** @public */ export declare interface CLastNameOptions extends Person { length?: number; } /** * ColorRandom的database类型 * @public */ export declare interface ColorDB { colorKeywords: string[]; } /** * 颜色生成器 * @public */ export declare class ColorRandom extends BasicRandom { database: ColorDB; /** * 返回 红-绿-蓝 模式的颜色 */ rgb(options?: RGBOptions): string; /** * 返回 红-绿-蓝-阿尔法 模式的演示 */ rgba(optios?: RGBAOptions): string; /** * 返回 色相-饱和度-明度 模式的颜色 */ hsl(options?: HSLOptions): string; /** * 返回 色相-饱和度-明度-阿尔法 的颜色 */ hsla(options?: HSLAOptions): string; /** * 返回一个 {@link https://developer.mozilla.org/en-US/docs/Web/CSS/color_value | Color Keyword} */ colorname(): string; /** * 返回16进制颜色值 * @param options - 配置 */ hexcolor(options?: HexColorOptions): string; /** * 返回十进制颜色值 * @param options - 配置 */ decimalcolor(options?: RGBBaseOptions): number; } /** @public */ export declare interface CoordinatesOptions { maxLat?: number; minLat?: number; maxLong?: number; minLong?: number; fixed?: number; } /** @public */ export declare interface CWordOption extends CCharacterOptions { length?: number; } /** @public */ export declare interface CZodiacOptions { locale?: string; } /** * Random 的数据库 * @public */ declare type Database = TextDB & WebDB & ColorDB & DateTimeDB; /** @public DateTimeRandom的database类型 */ export declare interface DateTimeDB { weekday: { [index: string]: any[][]; }; month: { [index: string]: any[][]; }; } /** @public */ export declare interface DateTimeOptions extends Interval { /** 日期格式 {@link https://date-fns.org/v2.0.1/docs/format | keyword} */ format?: string; } /** * 日期生成器 * @public */ export declare class DateTimeRandom extends BasicRandom { /** * 日期类的数据 */ database: DateTimeDB; /** * 生成格式为 yyyy-MM-dd 格式的日期 {@link https://tools.ietf.org/html/rfc3339#section-5.6 | full-date} * @param options - 时间区间 */ date(options?: Interval): string; /** * 生成格式为 fulltime 格式的日期 {@link https://tools.ietf.org/html/rfc3339#section-5.6 | full-time} * @param options - 时间区间 */ time(options?: TimeOptions): string; /** * 生成格式为 full-data T fulltime 格式的日期 {@link https://tools.ietf.org/html/rfc3339#section-5.6 | date-time} * * @remarks * {@link https://date-fns.org/v2.0.1/docs/format | format标识符} * @param options - 时间区间 */ datetime(options?: DateTimeOptions): string; /** * 返回一个时间戳(ms) * @param options - 配置 */ timestamp(options: Interval): number; /** * 返回星期 * 默认返回英文的 * * @example * ```javascript * new DateTimeRandom().weekday({ locale: 'zh-CN' }) // 星期一 * new DateTimeRandom().weekday({ abbr: true }) // Mon. * ``` * @param options - 配置 * @beta */ weekday(options?: WeekDayOptions): string; /** * 返回月份 * 默认返回英文的 * * @param options - 配置 * @beta */ month(options?: MonthOptions): string; } declare const _default: Random; export default _default; /** @public */ export declare interface DomainOptions { tld?: string; } /** @public */ export declare interface EmailOptions { domain?: string; length?: number; } /** * 生成float的参数配置 * @public */ export declare interface FloatOptions extends Interval { /** * 小数位数 */ fixed?: number; } /** * @public */ export declare interface HexColorOptions extends RGBOptions { /** 是否带 `#` */ prefix?: boolean; } /** * @public */ export declare interface HSLAOptions extends HSLBaseOPtions { casing?: 'lower' | 'upper'; minA: number; maxA: number; } /** * HSL颜色的基础配置 * @public */ export declare interface HSLBaseOPtions { minH?: number; maxH?: number; minS?: number; maxS?: number; minL?: number; maxL?: number; } /** * @public */ export declare interface HSLOptions extends HSLBaseOPtions { casing?: 'lower' | 'upper'; } /** * 值区间定义 * @public */ export declare interface Interval { /** * 最小值 */ min?: number; /** * 最大值 */ max?: number; } /** * 经纬度生成器 * @public */ export declare class LocationRandom extends BasicRandom { /** * 返回一个随机纬度 * @param options - 配置 */ latitude(options?: FloatOptions): number; /** * 返回一个随机经度 * @param options - 配置 */ longtitude(options?: FloatOptions): number; /** * 返回一个随机经纬度 * @param options - 配置 */ coordinates(options?: CoordinatesOptions): string; } /** * @public */ export declare interface MixinOptions { [name: string]: AnyFunc; } /** @public */ export declare interface MonthOptions { locale?: string; abbr?: boolean; } /** @public */ export declare interface ParagraphOptions { /** 段落中包含的句子 */ sentence?: number; } /** @public */ export declare interface Person { /** 性别 */ gender?: 'male' | 'female'; } /** @public */ export declare interface PhoneOptions { /** 是否是手机号码 */ mobile?: boolean; /** 是否格式化 */ formatted?: boolean; } /** * 所有Random的合集 * @public */ export declare class Random extends BasicRandom { database: Database; } /** * 所有Random的合集 * @public * @remarks {@link BasicRandom} {@link TextRandom} {@link WebRandom} {@link ColorRandom} {@link ChAddressRandom} */ export declare interface Random extends TextRandom, WebRandom, ColorRandom, LocationRandom, DateTimeRandom, ChAddressRandom { /** * 所有database的合并 */ database: Database; } /** @public */ export declare type RandomFunc = () => number; /** * RGBA的配置 * @public */ export declare interface RGBAOptions extends RGBBaseOptions { casing?: 'lower' | 'upper'; minA: number; maxA: number; } /** * RGB颜色的基础配置 * @public */ export declare interface RGBBaseOptions { grayscale?: boolean; min?: number; max?: number; minR?: number; maxR?: number; minG?: number; maxG?: number; minB?: number; maxB?: number; } /** * @public */ export declare interface RGBOptions extends RGBBaseOptions { /** 大写小模式 */ casing?: 'lower' | 'upper'; } /** @public */ export declare interface SentenceOptions { /** 句子中单词的数量 */ words?: number; punctuation?: boolean | string; } /** * 生成字符串的参数配置 * @public */ export declare interface StringOptions extends CharacterOptions { length?: number; } /** * 生成2-3易读音节 * @internal */ export declare interface SyllableOptions { capitalize?: boolean; length?: number; } /** * TextRandom的database类型 * @public */ export declare interface TextDB { character: { lower: string; upper: string; number: string; symbol: string; }; cCharacter: { chars: string; }; syllable: { consonants: string; vowels: string; }; sentence: { punctuations: string; }; hexs: string; cfirst: string[]; clast: any; firstNames: { male: string[]; female: string[]; }; lastNames: string[]; cZodiac: { [lang: string]: string[]; }; } /** * 基本的字符串生产器 * @beta */ export declare class TextRandom extends BasicRandom { database: TextDB; /** * 生产随机的字符 * * @param options - */ character(options?: CharacterOptions): string; /** * 生成随机的字符串 * * @param options - * * @public */ string(options?: StringOptions): string; /** * 生成音节 * @param options - 生成音节的配置 * @internal */ syllable(options?: SyllableOptions): string; /** * 生成一个单词 * @param options - 配置 */ word(options?: WordOptions): string; /** * 返回一个句子 * @param options - 配置 */ sentence(options?: SentenceOptions): string; /** * 生成一个段落 * @param options - 段落配置 */ paragraph(options?: ParagraphOptions): string; /** * 返回英文名称 * * @param options - 配置 */ name(options?: Person): string; /** * 返回英文名称的姓氏 */ lastname(): string; /** * 返回英文名字 * @param options - 配置 */ firstname(options?: Person): string; /** * 返回一个中文名称 * @param options - 配置 */ cname(options?: Person): string; /** * 返回一个中文姓氏 */ cfirstname(): string; /** * 返回中文名字 * @param options - 配置 */ clastname(options?: CLastNameOptions): string; /** * 返回一个中文字 */ ccharacter(options?: CCharacterOptions): string; /** * 返回一个中文词 * @param options - 配置 */ cword(options?: CWordOption): string; /** * 返回一个中文句子 * @param options - 配置 */ csentence(options?: Interval): string; /** * 返回一个中文段落 * @param options - 配置 */ cparagraph(options?: Interval): string; /** * 生成一个电话号码 * @param options - 配置 */ phone(options?: PhoneOptions): string; /** * 生成一个生肖 * @param options - 配置 * * @example * ```javascript * const R = new TextRandom(); * const cZodiacCn = R.cZodiac(); // '鼠', '牛', '虎'... * const cZodiacEn = R.cZodiac({ locale: 'en-US' }); // 'Rat','OX','Tiger'... * ``` */ cZodiac(options?: CZodiacOptions): string; } /** @public */ export declare interface TimeOptions extends Interval { /** 是否需要time offset */ short?: boolean; } /** @public */ export declare interface UrlOptions extends DomainOptions { protocol?: string; domain?: string; domainPrefix?: string; path?: string; extensions?: string[]; } /** * WebRandom 的database类型 * @public */ export declare interface WebDB { tld: string[]; } /** * Web类的生成器 * @public */ export declare class WebRandom extends TextRandom { database: WebDB & TextDB; /** * 返回一个url * @param options - 配置 */ url(options?: UrlOptions): string; /** * 返回一个domain * @param options - 配置 */ domain(options?: DomainOptions): string; /** * 返回ipv4 */ ipv4(): string; /** * 返回ipv6 */ ipv6(): string; /** * 返回一个email * @param options - 配置 */ email(options?: EmailOptions): string; /** * 返回一个top-level domain {@link https://en.wikipedia.org/wiki/Top-level_domain | TLD} * @remarks 返回database.tlds的一个 */ tld(): string; } /** @public */ export declare interface WeekDayOptions { locale?: string; abbr?: boolean; } /** * @public */ export declare interface WordOptions { syllables?: number; /** 是否大写第一个字母 */ capitalize?: boolean; /** 单词长度 */ length?: number; } export { }