{"version":3,"sources":["../../src/generate/index.ts"],"sourcesContent":["import type { AlphabateOptions } from './types';\n\ninterface GenerateArrayOptions {\n    min?: number;\n    max?: number;\n}\n\nexport const Generate = {\n    /**\n     * Generate a random alphanumeric string of a given length.\n     * @param len Length of the string (default 4).\n     */\n    alphanum(len: number = 4): string {\n        const chars = \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n        let result = \"\";\n        for (let i = 0; i < len; i++)\n            result += chars[Math.floor(Math.random() * chars.length)];\n        return result;\n    },\n    /**\n     * Generate a MongoDB-style ObjectId.\n     */\n    objectId(): string {\n        return (\n            (Date.now() / 1000 | 0).toString(16) +\n            \"xxxxxxxxxxxxxxxx\".replace(/x/g, () => (Math.random() * 16 | 0).toString(16))\n        );\n    },\n    /**\n     * Generate a random integer in [min, max). Includes min, excludes max.\n     */\n    int(min: number, max: number): number {\n        return Math.floor(Math.random() * (max - min)) + min;\n    },\n    /**\n     * Generate a random float in [min, max).\n     */\n    random(min: number, max: number): number {\n        return Math.random() * (max - min) + min;\n    },\n    /**\n     * Generate an array of random integers.\n     * @param len Length of the array.\n     * @param ops min/max bounds for each integer (default min=0, max=11).\n     */\n    array(len: number, ops: GenerateArrayOptions = {}): number[] {\n        const { min = 0, max = 11 } = ops;\n        return Array.from({ length: len }, () => this.int(min, max));\n    },\n    /**\n     * Generate a random alphabetic string.\n     * @param len Length of the string (default 5).\n     * @param options lowercase/uppercase toggles.\n     */\n    alphabate(len: number = 5, options: AlphabateOptions = {}): string {\n        const op: AlphabateOptions = { lowercase: true, uppercase: true, ...options };\n        const lower = \"abcdefghijklmnopqrstuvwxyz\";\n        const upper = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n        const pool = (op.lowercase ? lower : \"\") + (op.uppercase ? upper : \"\");\n        let result = \"\";\n        for (let i = 0; i < len; i++)\n            result += pool[Math.floor(Math.random() * pool.length)];\n        return result;\n    },\n    /** @returns Current date as \"YYYY-MM-DD\" */\n    currentDate(): string {\n        const t = new Date();\n        return `${t.getFullYear()}-${t.getMonth() + 1}-${t.getDate()}`;\n    },\n    /** @returns Current time as \"HH:mm:ss\" */\n    currentTime(): string {\n        const t = new Date();\n        return [t.getHours(), t.getMinutes(), t.getSeconds()]\n            .map((v) => String(v).padStart(2, \"0\"))\n            .join(\":\");\n    },\n    /** @returns Current datetime as \"YYYY-MM-DD HH:mm:ss\" */\n    currentDateTime(): string {\n        const t = new Date();\n        const time = [t.getHours(), t.getMinutes(), t.getSeconds()]\n            .map((v) => String(v).padStart(2, \"0\"))\n            .join(\":\");\n        return `${t.getFullYear()}-${t.getMonth() + 1}-${t.getDate()} ${time}`;\n    },\n    /**\n     * Generate a list of date strings matching specified days of the week.\n     * @param f From date \"YYYY-MM-DD\"\n     * @param t To date \"YYYY-MM-DD\"\n     * @param days Day indices 0–6 (Sunday=0, Saturday=6)\n     */\n    listOfDateOfDays(f: string, t: string, days: number[]): string[] {\n        const to = new Date(t).toISOString();\n        const cursor = new Date(f);\n        const rs: string[] = [];\n        while (cursor.toISOString() <= to) {\n            if (days.includes(cursor.getDay()))\n                rs.push(cursor.toISOString().slice(0, 10));\n            cursor.setDate(cursor.getDate() + 1);\n        }\n        return rs;\n    },\n    /**\n     * Fast RFC4122 v4 UUID generator.\n     * @author Jeff Ward (jcward.com) — MIT license\n     */\n    uuidv4(): string {\n        const lut: string[] = [];\n        for (let i = 0; i < 256; i++) lut[i] = (i < 16 ? \"0\" : \"\") + i.toString(16);\n        const d0 = Math.random() * 0xffffffff | 0;\n        const d1 = Math.random() * 0xffffffff | 0;\n        const d2 = Math.random() * 0xffffffff | 0;\n        const d3 = Math.random() * 0xffffffff | 0;\n        return (\n            lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 0xff] + lut[d0 >> 24 & 0xff] + \"-\" +\n            lut[d1 & 0xff] + lut[d1 >> 8 & 0xff] + \"-\" +\n            lut[d1 >> 16 & 0x0f | 0x40] + lut[d1 >> 24 & 0xff] + \"-\" +\n            lut[d2 & 0x3f | 0x80] + lut[d2 >> 8 & 0xff] + \"-\" +\n            lut[d2 >> 16 & 0xff] + lut[d2 >> 24 & 0xff] +\n            lut[d3 & 0xff] + lut[d3 >> 8 & 0xff] + lut[d3 >> 16 & 0xff] + lut[d3 >> 24 & 0xff]\n        );\n    },\n};\n"],"mappings":"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","names":[]}