Archived
Private
Public Access
1
0
This repository has been archived on 2026-02-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ProjectBackup/node/TestCli/index.js
2022-09-04 12:45:01 +02:00

158 lines
4.3 KiB
JavaScript

#!/usr/bin/env node
// /*
// /$$$$$$$$ /$$$$$$ / $$$$$$$ / $$$$$$$$ / $$$$$$ / $$ / $$ / $$$$$$ / $$$$$$$ / $$
// | $$_____/|_ $$_/| $$__ $$| $$_____/ /$$__ $$| $$ | $$|_ $$_/| $$__ $$|__/
// | $$ | $$ | $$ \ $$| $$ | $$ \__/| $$ | $$ | $$ | $$ \ $$ /$$ /$$$$$$
// | $$$$$ | $$ | $$$$$$$/| $$$$$ | $$$$$$ | $$$$$$$$ | $$ | $$$$$$$/| $$ /$$__ $$
// | $$__/ | $$ | $$__ $$| $$__/ \____ $$| $$__ $$ | $$ | $$____/ | $$| $$ \ $$
// | $$ | $$ | $$ \ $$| $$ /$$ \ $$| $$ | $$ | $$ | $$ | $$| $$ | $$
// | $$ /$$$$$$| $$ | $$| $$$$$$$$| $$$$$$/| $$ | $$ /$$$$$$| $$ /$$ | $$| $$$$$$/
// |__/ |______/|__/ |__/|________/ \______/ |__/ |__/|______/|__/|__/ |__/ \______/
// */
import chalk from 'chalk';
import inquirer from 'inquirer';
import gradient from 'gradient-string';
import chalkAnimation from 'chalk-animation';
import figlet from 'figlet';
import { createSpinner } from 'nanospinner';
let playerName;
const sleep = (ms = 2000) => new Promise((r) => setTimeout(r, ms));
async function welcome() {
const rainbowTitle = chalkAnimation.rainbow(
'Who Wants To Be A JavaScript Millionaire? \n'
);
await sleep();
rainbowTitle.stop();
console.log(`
${chalk.bgBlue('HOW TO PLAY')}
I am a process on your computer.
If you get any question wrong I will be ${chalk.bgRed('killed')}
So get all the questions right...
`);
}
async function handleAnswer(isCorrect) {
const spinner = createSpinner('Checking answer...').start();
await sleep();
if (isCorrect) {
spinner.success({ text: `Nice work ${playerName}. That's a legit answer` });
} else {
spinner.error({ text: `💀💀💀 Game over, you lose ${playerName}!` });
process.exit(1);
}
}
async function askName() {
const answers = await inquirer.prompt({
name: 'player_name',
type: 'input',
message: 'What is your name?',
default() {
return 'Player';
},
});
playerName = answers.player_name;
}
function winner() {
console.clear();
figlet(`Congrats , ${playerName} !\n $ 1 , 0 0 0 , 0 0 0`, (err, data) => {
console.log(gradient.pastel.multiline(data) + '\n');
console.log(
chalk.green(
`Programming isn't about what you know; it's about making the command line look cool`
)
);
process.exit(0);
});
}
async function question1() {
const answers = await inquirer.prompt({
name: 'question_1',
type: 'list',
message: 'JavaScript was created in 10 days then released on\n',
choices: [
'May 23rd, 1995',
'Nov 24th, 1995',
'Dec 4th, 1995',
'Dec 17, 1996',
],
});
return handleAnswer(answers.question_1 === 'Dec 4th, 1995');
}
async function question2() {
const answers = await inquirer.prompt({
name: 'question_2',
type: 'list',
message: 'What is x? var x = 1_1 + "1" + Number(1)\n',
choices: ['4', '"4"', '"1111"', '69420'],
});
return handleAnswer(answers.question_2 === '"1111"');
}
async function question3() {
const answers = await inquirer.prompt({
name: 'question_3',
type: 'list',
message: `What is the first element in the array? ['🐏', '🦙', '🐍'].length = 0\n`,
choices: ['0', '🐏', '🐍', 'undefined'],
});
return handleAnswer(answers.question_3 === 'undefined');
}
async function question4() {
const answers = await inquirer.prompt({
name: 'question_4',
type: 'list',
message: 'Which of the following is NOT a primitive type?\n',
choices: [
'boolean',
'number',
'null',
'object', // Correct
],
});
return handleAnswer(answers.question_4 === 'object');
}
async function question5() {
const answers = await inquirer.prompt({
name: 'question_5',
type: 'list',
message:
'JS is a high-level single-threaded, garbage-collected,\n' +
'interpreted(or just-in-time compiled), prototype-based,\n' +
'multi-paradigm, dynamic language with a ____ event loop\n',
choices: ['multi-threaded', 'non-blocking', 'synchronous', 'promise-based'],
});
return handleAnswer(answers.question_5 === 'non-blocking');
}
// Run it with top-level await
console.clear();
await welcome();
await askName();
await question1();
await question2();
await question3();
await question4();
await question5();
winner();