Files
cypress/cli/lib/logger.ts
T
Bill Glesias 3481d1acaf chore: refactor cypress/cli to TypeScript (#32063)
* migrate cli scripts to TypeScript

* convert all javascript source files in the CLI to TypeScript

rebase into first

* chore: refactor all tests to TypeScript

rebase into second

* add npmignore for cli for typescript files

* update build process

* fix publically available exports

* Fix cy-in-cy tests

* add ts-expect-error to failing files

* fix projectConfigIpc failures as there are now multiple installs of tsx

* fix after-pack hook

* fix binary script

* chore: update publish binary to account for CLI being an ESModule compiled down to CommonJS

* does this work?

* fix the verify spec by making the listr2 renderer silent as it behaves differently since the refactor and is printing non deterministic outputs into our tests that do not have a large impact on the area we are testing and mostly served to actually test the renders of the listr2 framework itself

* empty commit

* additional refactor to code to remove strange any typing and exporting

* bump cache and build binaries

* fix CLI exports to keep backwards compatibility

* fix unit-tests

* turn on mac jobs

* fix group name rename in CLI

* remove babel deps from cli and explicitly install typescript

* address feedback from code review

* dont just falsy check results and instead explicitly check for null or undefined

* add ts-expect-error

* additional pass on cleaning up dynamic require / import from global lib references

* annotate ts-expect-errors with reason for why error is expected

* add rest of ts-expect-error comments

* removing hardcoded branch to publish binary chore/migrate_cli_to_typescript
2025-09-02 17:52:45 -04:00

63 lines
1.3 KiB
TypeScript

import chalk from 'chalk'
let logs: string[] = []
const logLevel = (): string => {
return (process.env.npm_config_loglevel || 'notice')
}
const error = (...messages: any[]): void => {
logs.push(messages.join(' '))
console.log(chalk.red(...messages)) // eslint-disable-line no-console
}
const warn = (...messages: any[]): void => {
if (logLevel() === 'silent') return
logs.push(messages.join(' '))
console.log(chalk.yellow(...messages)) // eslint-disable-line no-console
}
const log = (...messages: any[]): void => {
if (logLevel() === 'silent' || logLevel() === 'warn') return
logs.push(messages.join(' '))
console.log(...messages) // eslint-disable-line no-console
}
const always = (...messages: any[]): void => {
logs.push(messages.join(' '))
console.log(...messages) // eslint-disable-line no-console
}
// splits long text into lines and calls log()
// on each one to allow easy unit testing for specific message
const logLines = (text: string): void => {
const lines = text.split('\n')
for (const line of lines) {
log(line)
}
}
const print = (): string => {
return logs.join('\n')
}
const reset = (): void => {
logs = []
}
const loggerModule = {
log,
warn,
error,
always,
logLines,
print,
reset,
logLevel,
}
export default loggerModule