@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
77 lines (76 loc) • 2.08 kB
JavaScript
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