UNPKG

@prismicio/mock

Version:

Generate mock Prismic documents, fields, Slices, and models for development and testing environments

1 lines 4.07 kB
{"version":3,"file":"createFaker.cjs","names":["PRNG","loremWords","lorem"],"sources":["../../src/lib/createFaker.ts"],"sourcesContent":["import type { Seed } from \"../types\"\nimport { lorem, loremWords } from \"./lorem\"\nimport { PRNG } from \"./PRNG\"\n\nexport const createFaker = (seed: Seed): Faker => {\n\treturn new Faker(seed)\n}\n\nconst DAY_MS = 1000 * 60 * 60 * 24\nconst YEAR_MS = DAY_MS * 365\nconst YEAR_2022_MS = 52 * (YEAR_MS + DAY_MS / 4)\n\nexport class Faker {\n\tseed: Seed\n\n\tprivate prng: PRNG\n\n\tconstructor(seed: Seed) {\n\t\tthis.seed = seed\n\n\t\tthis.prng = new PRNG(seed.toString())\n\t}\n\n\trandom(): number {\n\t\treturn this.prng.next()\n\t}\n\n\tboolean(): boolean {\n\t\treturn this.random() >= 0.5\n\t}\n\n\trandomElement<T>(elements: readonly T[]): T {\n\t\treturn elements[this.range(0, elements.length)]\n\t}\n\n\trandomElements<T>(elements: readonly T[]): T[] {\n\t\tconst alwaysInclude = this.randomElement(elements)\n\n\t\treturn elements.filter((element) => element === alwaysInclude || this.boolean())\n\t}\n\n\trange(min: number, max: number): number {\n\t\treturn Math.floor(this.rangeFloat(Math.ceil(min), Math.floor(max)))\n\t}\n\n\trangeFloat(min: number, max: number): number {\n\t\treturn this.random() * (max - min) + min\n\t}\n\n\twords(length: number, wordOffset = this.range(0, loremWords.length)): string {\n\t\treturn lorem(`${length}w`, wordOffset)\n\t}\n\n\tword(): string {\n\t\treturn this.randomElement(loremWords)\n\t}\n\n\tlorem(\n\t\tlength: Parameters<typeof lorem>[0],\n\t\twordOffset = this.range(0, loremWords.length),\n\t): string {\n\t\treturn lorem(length, wordOffset)\n\t}\n\n\turl(): string {\n\t\treturn `https://${this.word()}.example`\n\t}\n\n\thexColor(): string {\n\t\treturn `#${this.hash(6)}`\n\t}\n\n\thash(length: number): string {\n\t\tlet hash = \"\"\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst chars = this.boolean() ? \"abcdef\" : \"0123456789\"\n\n\t\t\thash += chars[this.range(0, chars.length)]\n\t\t}\n\n\t\treturn hash\n\t}\n\n\tdate(): Date {\n\t\treturn new Date(YEAR_2022_MS + this.range(-YEAR_MS * 3, YEAR_MS * 3))\n\t}\n\n\tdateAfter(date: Date): Date {\n\t\tconst timestamp = date.getTime()\n\n\t\treturn new Date(this.range(timestamp, timestamp + YEAR_MS * 3))\n\t}\n\n\tdateBefore(date: Date): Date {\n\t\tconst timestamp = date.getTime()\n\n\t\treturn new Date(this.range(timestamp - YEAR_MS * 3, timestamp))\n\t}\n\n\tdateBetween(min: Date, max: Date): Date {\n\t\treturn new Date(this.range(min.getTime(), max.getTime()))\n\t}\n}\n"],"mappings":";;;AAIA,MAAa,eAAe,SAAsB;AACjD,QAAO,IAAI,MAAM,KAAK;;AAGvB,MAAM,SAAS,MAAO,KAAK,KAAK;AAChC,MAAM,UAAU,SAAS;AACzB,MAAM,eAAe,MAAM,UAAU,SAAS;AAE9C,IAAa,QAAb,MAAmB;CAClB;CAEA;CAEA,YAAY,MAAY;AACvB,OAAK,OAAO;AAEZ,OAAK,OAAO,IAAIA,aAAAA,KAAK,KAAK,UAAU,CAAC;;CAGtC,SAAiB;AAChB,SAAO,KAAK,KAAK,MAAM;;CAGxB,UAAmB;AAClB,SAAO,KAAK,QAAQ,IAAI;;CAGzB,cAAiB,UAA2B;AAC3C,SAAO,SAAS,KAAK,MAAM,GAAG,SAAS,OAAO;;CAG/C,eAAkB,UAA6B;EAC9C,MAAM,gBAAgB,KAAK,cAAc,SAAS;AAElD,SAAO,SAAS,QAAQ,YAAY,YAAY,iBAAiB,KAAK,SAAS,CAAC;;CAGjF,MAAM,KAAa,KAAqB;AACvC,SAAO,KAAK,MAAM,KAAK,WAAW,KAAK,KAAK,IAAI,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC;;CAGpE,WAAW,KAAa,KAAqB;AAC5C,SAAO,KAAK,QAAQ,IAAI,MAAM,OAAO;;CAGtC,MAAM,QAAgB,aAAa,KAAK,MAAM,GAAGC,cAAAA,WAAW,OAAO,EAAU;AAC5E,SAAOC,cAAAA,MAAM,GAAG,OAAO,IAAI,WAAW;;CAGvC,OAAe;AACd,SAAO,KAAK,cAAcD,cAAAA,WAAW;;CAGtC,MACC,QACA,aAAa,KAAK,MAAM,GAAGA,cAAAA,WAAW,OAAO,EACpC;AACT,SAAOC,cAAAA,MAAM,QAAQ,WAAW;;CAGjC,MAAc;AACb,SAAO,WAAW,KAAK,MAAM,CAAC;;CAG/B,WAAmB;AAClB,SAAO,IAAI,KAAK,KAAK,EAAE;;CAGxB,KAAK,QAAwB;EAC5B,IAAI,OAAO;AAEX,OAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,KAAK;GAChC,MAAM,QAAQ,KAAK,SAAS,GAAG,WAAW;AAE1C,WAAQ,MAAM,KAAK,MAAM,GAAG,MAAM,OAAO;;AAG1C,SAAO;;CAGR,OAAa;AACZ,SAAO,IAAI,KAAK,eAAe,KAAK,MAAM,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;;CAGtE,UAAU,MAAkB;EAC3B,MAAM,YAAY,KAAK,SAAS;AAEhC,SAAO,IAAI,KAAK,KAAK,MAAM,WAAW,YAAY,UAAU,EAAE,CAAC;;CAGhE,WAAW,MAAkB;EAC5B,MAAM,YAAY,KAAK,SAAS;AAEhC,SAAO,IAAI,KAAK,KAAK,MAAM,YAAY,UAAU,GAAG,UAAU,CAAC;;CAGhE,YAAY,KAAW,KAAiB;AACvC,SAAO,IAAI,KAAK,KAAK,MAAM,IAAI,SAAS,EAAE,IAAI,SAAS,CAAC,CAAC"}