just-jokes
Version:
Random Joke and YoMomma Joke Generator Package
77 lines (76 loc) • 2.59 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getYoMommaJokes = exports.getYoMommaJoke = exports.getRandomJokes = exports.getRandomJoke = void 0;
const jokes_json_1 = __importDefault(require("../jokes/jokes.json"));
const yomomma_json_1 = __importDefault(require("../jokes/yomomma.json"));
const YOMOMMA_MAX = yomomma_json_1.default.length;
const RANDOM_MAX = jokes_json_1.default.length;
const MAX_JOKE_COUNT = 50;
const uniqueIndex = (maxNr) => {
const array = [];
for (let i = 0; i < maxNr; i++) {
const random = Math.floor(Math.random() * YOMOMMA_MAX);
array.push(random);
}
return array;
};
const getRandomJoke = () => {
const randomIndex = Math.floor(Math.random() * RANDOM_MAX);
return jokes_json_1.default[randomIndex];
};
exports.getRandomJoke = getRandomJoke;
const getRandomJokes = (numberOfJokes = 1) => {
if (numberOfJokes <= 0) {
throw new Error('Number of jokes must be greater than 0');
}
const randomJokes = [];
const fetchJokes = (count) => {
for (let i = 0; i < count; i++) {
randomJokes.push(getRandomJoke());
}
return randomJokes;
};
if (numberOfJokes > MAX_JOKE_COUNT) {
return fetchJokes(MAX_JOKE_COUNT);
}
return fetchJokes(numberOfJokes);
};
exports.getRandomJokes = getRandomJokes;
const getYoMommaJoke = () => {
const randomIndex = Math.floor(Math.random() * YOMOMMA_MAX);
const joke = yomomma_json_1.default[randomIndex];
return {
id: randomIndex,
type: 'yo-momma',
setup: undefined,
punchline: joke
};
};
exports.getYoMommaJoke = getYoMommaJoke;
const getYoMommaJokes = (numberOfJokes = 1) => {
if (numberOfJokes <= 0) {
throw new Error('Number of jokes must be greater than 0');
}
const fetchJokes = (count) => {
const randomJokes = [];
const jokesArray = uniqueIndex(count);
jokesArray.forEach(jokeIndex => {
const joke = yomomma_json_1.default[jokeIndex];
randomJokes.push({
id: jokeIndex,
type: 'yo-momma',
setup: undefined,
punchline: joke
});
});
return randomJokes;
};
if (numberOfJokes > MAX_JOKE_COUNT) {
return fetchJokes(MAX_JOKE_COUNT);
}
return fetchJokes(numberOfJokes);
};
exports.getYoMommaJokes = getYoMommaJokes;