HEX
Server: Apache/2.4.61 (Ubuntu)
System: Linux hosting106 7.0.12-1-pve #1 SMP PREEMPT_DYNAMIC PMX 7.0.12-1 (2026-06-09T21:07Z) x86_64
User: clinicadentalargarate.com (1193)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/share/doc/node-chalk/examples/rainbow.js
'use strict';
const chalk = require('..');

const ignoreChars = /[^!-~]/g;

const delay = milliseconds => new Promise(resolve => setTimeout(resolve, milliseconds));

function rainbow(string, offset) {
	if (!string || string.length === 0) {
		return string;
	}

	const hueStep = 360 / string.replace(ignoreChars, '').length;

	let hue = offset % 360;
	const characters = [];
	for (const character of string) {
		if (character.match(ignoreChars)) {
			characters.push(character);
		} else {
			characters.push(chalk.hsl(hue, 100, 50)(character));
			hue = (hue + hueStep) % 360;
		}
	}

	return characters.join('');
}

async function animateString(string) {
	console.log();
	for (let i = 0; i < 360 * 5; i++) {
		console.log('\u001B[1F\u001B[G', rainbow(string, i));
		await delay(2); // eslint-disable-line no-await-in-loop
	}
}

(async () => {
	console.log();
	await animateString('We hope you enjoy Chalk! <3');
	console.log();
})();