UNPKG

@prismicio/mock

Version:

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

77 lines (76 loc) 2.08 kB
const require_lorem = require("./lorem.cjs"); const require_PRNG = require("./PRNG.cjs"); //#region src/lib/createFaker.ts const createFaker = (seed) => { return new Faker(seed); }; const DAY_MS = 1e3 * 60 * 60 * 24; const YEAR_MS = DAY_MS * 365; const YEAR_2022_MS = 52 * (YEAR_MS + DAY_MS / 4); var Faker = class { seed; prng; constructor(seed) { this.seed = seed; this.prng = new require_PRNG.PRNG(seed.toString()); } random() { return this.prng.next(); } boolean() { return this.random() >= .5; } randomElement(elements) { return elements[this.range(0, elements.length)]; } randomElements(elements) { const alwaysInclude = this.randomElement(elements); return elements.filter((element) => element === alwaysInclude || this.boolean()); } range(min, max) { return Math.floor(this.rangeFloat(Math.ceil(min), Math.floor(max))); } rangeFloat(min, max) { return this.random() * (max - min) + min; } words(length, wordOffset = this.range(0, require_lorem.loremWords.length)) { return require_lorem.lorem(`${length}w`, wordOffset); } word() { return this.randomElement(require_lorem.loremWords); } lorem(length, wordOffset = this.range(0, require_lorem.loremWords.length)) { return require_lorem.lorem(length, wordOffset); } url() { return `https://${this.word()}.example`; } hexColor() { return `#${this.hash(6)}`; } hash(length) { let hash = ""; for (let i = 0; i < length; i++) { const chars = this.boolean() ? "abcdef" : "0123456789"; hash += chars[this.range(0, chars.length)]; } return hash; } date() { return new Date(YEAR_2022_MS + this.range(-YEAR_MS * 3, YEAR_MS * 3)); } dateAfter(date) { const timestamp = date.getTime(); return new Date(this.range(timestamp, timestamp + YEAR_MS * 3)); } dateBefore(date) { const timestamp = date.getTime(); return new Date(this.range(timestamp - YEAR_MS * 3, timestamp)); } dateBetween(min, max) { return new Date(this.range(min.getTime(), max.getTime())); } }; //#endregion exports.createFaker = createFaker; //# sourceMappingURL=createFaker.cjs.map