@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
84 lines (83 loc) • 2.56 kB
JavaScript
;
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;
};
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const lorem = require("./lorem.cjs");
const PRNG = require("./PRNG.cjs");
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.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, lorem.loremWords.length)) {
return lorem.lorem(`${length}w`, wordOffset);
}
word() {
return this.randomElement(lorem.loremWords);
}
lorem(length, wordOffset = this.range(0, lorem.loremWords.length)) {
return 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()));
}
}
exports.Faker = Faker;
exports.createFaker = createFaker;
//# sourceMappingURL=createFaker.cjs.map