{"version":3,"sources":["../src/modules/number/index.ts","../src/modules/string/index.ts","../src/modules/date/index.ts","../src/dummy.ts"],"sourcesContent":["interface IntOptions {\r\n  min?: number;\r\n  max?: number;\r\n  multipleOf?: number;\r\n}\r\n\r\ninterface FloatOptions extends IntOptions {\r\n  precision?: number;\r\n}\r\n\r\nexport class NumberModule {\r\n  private static getRandomInt(min: number, max: number): number {\r\n    return Math.floor(Math.random() * (max - min + 1)) + min;\r\n  }\r\n\r\n  private static getRandomFloat(min: number, max: number, precision: number): number {\r\n    const factor = Math.pow(10, precision);\r\n    return Math.round((Math.random() * (max - min) + min) * factor) / factor;\r\n  }\r\n\r\n  int(options: number | IntOptions = {}): number {\r\n    const {\r\n      min = 0,\r\n      max = Number.MAX_SAFE_INTEGER,\r\n      multipleOf = 1,\r\n    } = typeof options === 'number' ? { max: options } : options;\r\n\r\n    let result = NumberModule.getRandomInt(min, max);\r\n\r\n    if (multipleOf) {\r\n      result = Math.floor(result / multipleOf) * multipleOf;\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  float(options: number | FloatOptions = {}): number {\r\n    const {\r\n      min = 0,\r\n      max = Number.MAX_SAFE_INTEGER,\r\n      multipleOf = 1,\r\n      precision = 2,\r\n    } = typeof options === 'number' ? { max: options } : options;\r\n\r\n    let result = NumberModule.getRandomFloat(min, max, precision);\r\n\r\n    if (multipleOf) {\r\n      result = Math.floor(result / multipleOf) * multipleOf;\r\n    }\r\n\r\n    return Number(result.toFixed(precision));\r\n  }\r\n}\r\n","type Casing = 'upper' | 'lower' | 'mixed';\r\n\r\ninterface BaseOptions {\r\n  length?: number | { min: number; max: number };\r\n  exclude?: ReadonlyArray<string> | string;\r\n}\r\n\r\ninterface CasingOptions extends BaseOptions {\r\n  casing?: Casing;\r\n}\r\n\r\ninterface NumericOptions extends BaseOptions {\r\n  allowLeadingZeros?: boolean;\r\n}\r\n\r\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\r\nconst numbers = '0123456789';\r\n\r\nconst getRandomLength = (length: number | { min: number; max: number }): number => {\r\n  return typeof length === 'number' ? length : Math.floor(Math.random() * (length.max - length.min + 1)) + length.min;\r\n};\r\n\r\nconst getAvailableChars = (source: string, exclude: Set<string>, casing: Casing = 'mixed'): string[] => {\r\n  let availableChars = source.split('').filter((char) => !exclude.has(char));\r\n  if (casing !== 'mixed') {\r\n    availableChars = availableChars.filter((char) =>\r\n      casing === 'lower' ? char >= 'a' && char <= 'z' : char >= 'A' && char <= 'Z',\r\n    );\r\n  }\r\n  return availableChars;\r\n};\r\n\r\nconst generateString = (availableChars: string[], length: number): string => {\r\n  return Array.from({ length }, () => availableChars[Math.floor(Math.random() * availableChars.length)]).join('');\r\n};\r\n\r\nexport class StringModule {\r\n  alpha(options: number | CasingOptions = {}): string {\r\n    const {\r\n      length = 10,\r\n      exclude = new Set<string>(),\r\n      casing = 'mixed',\r\n    } = typeof options === 'number' ? { length: options } : options;\r\n    const excludeSet = new Set(typeof exclude === 'string' ? exclude.split('') : exclude);\r\n    const availableChars = getAvailableChars(chars, excludeSet, casing);\r\n    return generateString(availableChars, getRandomLength(length));\r\n  }\r\n\r\n  alphanumeric(options: number | CasingOptions = {}): string {\r\n    const {\r\n      length = 10,\r\n      exclude = new Set<string>(),\r\n      casing = 'mixed',\r\n    } = typeof options === 'number' ? { length: options } : options;\r\n    const excludeSet = new Set(typeof exclude === 'string' ? exclude.split('') : exclude);\r\n    const availableChars = getAvailableChars(chars + numbers, excludeSet, casing);\r\n    return generateString(availableChars, getRandomLength(length));\r\n  }\r\n\r\n  numeric(options: number | NumericOptions = {}): string {\r\n    const {\r\n      length = 10,\r\n      exclude = new Set(),\r\n      allowLeadingZeros = true,\r\n    } = typeof options === 'number' ? { length: options } : options;\r\n    const excludeSet = new Set(typeof exclude === 'string' ? exclude.split('') : exclude);\r\n    const availableDigits = numbers.split('').filter((digit) => !excludeSet.has(digit));\r\n\r\n    let result = '';\r\n    for (let i = 0; i < getRandomLength(length); i++) {\r\n      if (i === 0 && !allowLeadingZeros) {\r\n        const nonZeroDigits = availableDigits.filter((digit) => digit !== '0');\r\n        result += nonZeroDigits[Math.floor(Math.random() * nonZeroDigits.length)];\r\n      } else {\r\n        result += availableDigits[Math.floor(Math.random() * availableDigits.length)];\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n\r\n  uuid(): string {\r\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n      const r = (Math.random() * 16) | 0;\r\n      const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n      return v.toString(16);\r\n    });\r\n  }\r\n}\r\n","interface BetweenOptions {\r\n  from: string | Date | number;\r\n  to: string | Date | number;\r\n}\r\n\r\nexport class DateModule {\r\n  private static getRandomTimeInRange(from: number, to: number): number {\r\n    if (from > to) throw new Error(\"'from' date must be earlier than 'to' date.\");\r\n    return from + Math.random() * (to - from);\r\n  }\r\n\r\n  private static toTimestamp(date: string | Date | number): number {\r\n    const time = new Date(date).getTime();\r\n    if (isNaN(time)) throw new Error('Invalid date input.');\r\n    return time;\r\n  }\r\n\r\n  past(): Date {\r\n    return new Date(DateModule.getRandomTimeInRange(0, Date.now()));\r\n  }\r\n\r\n  future(): Date {\r\n    return new Date(DateModule.getRandomTimeInRange(Date.now(), Number.MAX_SAFE_INTEGER));\r\n  }\r\n\r\n  anytime(): Date {\r\n    return new Date(DateModule.getRandomTimeInRange(-Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER));\r\n  }\r\n\r\n  between(options: BetweenOptions): Date {\r\n    const fromTime = DateModule.toTimestamp(options.from);\r\n    const toTime = DateModule.toTimestamp(options.to);\r\n    return new Date(DateModule.getRandomTimeInRange(fromTime, toTime));\r\n  }\r\n}\r\n","import { NumberModule } from './modules/number';\r\nimport { StringModule } from './modules/string';\r\nimport { DateModule } from './modules/date';\r\n\r\nclass Dummy {\r\n  readonly string: StringModule = new StringModule();\r\n  readonly number: NumberModule = new NumberModule();\r\n  readonly date: DateModule = new DateModule();\r\n}\r\n\r\nconst dummy = new Dummy();\r\nexport { dummy };\r\n"],"mappings":"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","names":["NumberModule","min","max","precision","factor","options","multipleOf","result","chars","numbers","getRandomLength","length","getAvailableChars","source","exclude","casing","availableChars","char","generateString","StringModule","options","excludeSet","allowLeadingZeros","availableDigits","digit","result","i","nonZeroDigits","c","r","DateModule","from","to","date","time","options","fromTime","toTime","Dummy","StringModule","NumberModule","DateModule","dummy"]}