UNPKG

@prismicio/mock

Version:

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

84 lines (83 loc) 2.42 kB
var __defProp = Object.defineProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField = (obj, key, value) => { __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; import { lorem, loremWords } from "./lorem.js"; import { PRNG } from "./PRNG.js"; 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); class Faker { constructor(seed) { __publicField(this, "seed"); __publicField(this, "prng"); this.seed = seed; this.prng = new PRNG(seed.toString()); } random() { return this.prng.next(); } boolean() { return this.random() >= 0.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, loremWords.length)) { return lorem(`${length}w`, wordOffset); } word() { return this.randomElement(loremWords); } lorem(length, wordOffset = this.range(0, loremWords.length)) { return 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())); } } export { Faker, createFaker }; //# sourceMappingURL=createFaker.js.map