node-power-user 1.0.2 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/npu +2 -2
- package/dist/cli.js +64 -0
- package/dist/commands/bump.js +40 -0
- package/dist/commands/clean.js +33 -0
- package/dist/commands/global.js +99 -0
- package/dist/commands/outdated.js +100 -0
- package/dist/commands/packages.js +58 -0
- package/dist/commands/sync.js +64 -0
- package/dist/commands/version.js +13 -0
- package/dist/lib/logger.js +56 -0
- package/package.json +13 -12
package/bin/npu
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
const argv = require('yargs').argv;
|
|
3
|
-
const
|
|
3
|
+
const cli = new (require('../dist/cli.js'))(argv);
|
|
4
4
|
(async function() {
|
|
5
5
|
'use strict';
|
|
6
|
-
await
|
|
6
|
+
await cli.process(argv);
|
|
7
7
|
}());
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const jetpack = require('fs-jetpack');
|
|
4
|
+
|
|
5
|
+
// Command Aliases
|
|
6
|
+
const DEFAULT = 'version';
|
|
7
|
+
const ALIASES = {
|
|
8
|
+
bump: ['-b', '--bump'],
|
|
9
|
+
clean: ['-c', '--clean'],
|
|
10
|
+
global: ['-g', '--global'],
|
|
11
|
+
outdated: ['-o', 'out', '--outdated'],
|
|
12
|
+
packages: ['-p', 'pack', '--packages'],
|
|
13
|
+
version: ['-v', '--version'],
|
|
14
|
+
sync: ['-s', '--sync'],
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// Function to resolve command name from aliases
|
|
18
|
+
function resolveCommand(command) {
|
|
19
|
+
console.log('---1 command', command);
|
|
20
|
+
for (const [key, aliases] of Object.entries(ALIASES)) {
|
|
21
|
+
console.log('---2 key, aliases', key, aliases);
|
|
22
|
+
|
|
23
|
+
if (command === key || aliases.includes(command)) {
|
|
24
|
+
console.log('---3');
|
|
25
|
+
return key;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Default to original command if no alias is found
|
|
30
|
+
console.log('---4');
|
|
31
|
+
return command;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Main Function
|
|
35
|
+
function Main() {}
|
|
36
|
+
|
|
37
|
+
Main.prototype.process = async function (options) {
|
|
38
|
+
// Determine the command (use default if not provided)
|
|
39
|
+
console.log('---options', options);
|
|
40
|
+
|
|
41
|
+
const inputCommand = options._[0] || DEFAULT;
|
|
42
|
+
const command = resolveCommand(inputCommand);
|
|
43
|
+
|
|
44
|
+
try {
|
|
45
|
+
// Get the command file path
|
|
46
|
+
const commandFile = path.join(__dirname, 'commands', `${command}.js`);
|
|
47
|
+
|
|
48
|
+
// Check if the command file exists
|
|
49
|
+
if (!jetpack.exists(commandFile)) {
|
|
50
|
+
throw new Error(`Error: Command "${command}" not found.`);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Execute the command
|
|
54
|
+
const Command = require(commandFile);
|
|
55
|
+
await Command(options);
|
|
56
|
+
} catch (e) {
|
|
57
|
+
console.error(`Error executing command "${command}": ${e.message}`);
|
|
58
|
+
|
|
59
|
+
// Exit with error
|
|
60
|
+
throw e;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
module.exports = Main;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const logger = new (require('../lib/logger'))('node-power-user');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const jetpack = require('fs-jetpack');
|
|
5
|
+
const version = require('wonderful-version');
|
|
6
|
+
|
|
7
|
+
// Load package
|
|
8
|
+
const package = jetpack.read(path.join(__dirname, '../../', 'package.json'), 'json');
|
|
9
|
+
const project = jetpack.read(path.join(process.cwd(), 'package.json'), 'json');
|
|
10
|
+
|
|
11
|
+
// Module
|
|
12
|
+
module.exports = async function (options) {
|
|
13
|
+
// Determine bump level
|
|
14
|
+
const ver = project.version;
|
|
15
|
+
let newVer;
|
|
16
|
+
|
|
17
|
+
// Log
|
|
18
|
+
// logger.log(`Current version: ${ver}`, options);
|
|
19
|
+
|
|
20
|
+
// Bump
|
|
21
|
+
if (options.major || options._.includes('major')) {
|
|
22
|
+
newVer = version.increment(ver, 'major');
|
|
23
|
+
} else if (options.minor || options._.includes('minor')) {
|
|
24
|
+
newVer = version.increment(ver, 'minor');
|
|
25
|
+
} else {
|
|
26
|
+
newVer = version.increment(ver, 'patch');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Update package.json
|
|
30
|
+
project.version = newVer;
|
|
31
|
+
|
|
32
|
+
// Write package.json
|
|
33
|
+
jetpack.write(path.join(process.cwd(), 'package.json'), project);
|
|
34
|
+
|
|
35
|
+
// Log
|
|
36
|
+
logger.log(`Bumped version: ${logger.format.bold(ver)} ==> ${logger.format.bold(newVer)}`);
|
|
37
|
+
|
|
38
|
+
// Return new version
|
|
39
|
+
return newVer;
|
|
40
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const logger = new (require('../lib/logger'))('node-power-user');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const jetpack = require('fs-jetpack');
|
|
5
|
+
const { execute } = require('node-powertools');
|
|
6
|
+
|
|
7
|
+
// Load package.json files
|
|
8
|
+
const package = jetpack.read(path.join(__dirname, '../../', 'package.json'), 'json');
|
|
9
|
+
const project = jetpack.read(path.join(process.cwd(), 'package.json'), 'json');
|
|
10
|
+
|
|
11
|
+
// Module
|
|
12
|
+
module.exports = async function (options) {
|
|
13
|
+
// Define cleanup command
|
|
14
|
+
const command = `rm -rf node_modules && rm -rf package-lock.json && npm cache clean --force`;
|
|
15
|
+
|
|
16
|
+
// Log initial state
|
|
17
|
+
logger.log(`Cleaning project: ${logger.format.bold(project.name)} (v${project.version})`);
|
|
18
|
+
|
|
19
|
+
try {
|
|
20
|
+
// Run cleanup commands
|
|
21
|
+
await execute(command, { log: true });
|
|
22
|
+
|
|
23
|
+
// Log success
|
|
24
|
+
logger.log(logger.format.green('Cleanup completed successfully!'));
|
|
25
|
+
|
|
26
|
+
return true;
|
|
27
|
+
} catch (e) {
|
|
28
|
+
// Log failure
|
|
29
|
+
logger.error(`Cleanup failed`, e.stack);
|
|
30
|
+
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const logger = new (require('../lib/logger'))('node-power-user');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const os = require('os');
|
|
5
|
+
const jetpack = require('fs-jetpack');
|
|
6
|
+
const version = require('wonderful-version');
|
|
7
|
+
const { table } = require('table');
|
|
8
|
+
const ProgressBar = require('cli-progress');
|
|
9
|
+
const Npm = require('npm-api');
|
|
10
|
+
const chalk = require('chalk');
|
|
11
|
+
|
|
12
|
+
const npm = new Npm();
|
|
13
|
+
|
|
14
|
+
// Module
|
|
15
|
+
module.exports = async function (options) {
|
|
16
|
+
// Define global modules path
|
|
17
|
+
const parentPath = `/Users/${os.userInfo().username}/.nvm/versions/node`;
|
|
18
|
+
const versions = jetpack.list(parentPath) || [];
|
|
19
|
+
const response = {};
|
|
20
|
+
|
|
21
|
+
// Log start
|
|
22
|
+
logger.log(`Checking global modules for ${logger.format.bold(versions.length)} Node.js versions...`);
|
|
23
|
+
|
|
24
|
+
// Loop through Node.js versions
|
|
25
|
+
for (const ver of versions) {
|
|
26
|
+
try {
|
|
27
|
+
// Quick check if ver starts with a dot
|
|
28
|
+
if (ver.startsWith('.')) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Clean
|
|
33
|
+
const cleaned = version.clean(ver);
|
|
34
|
+
const libPath = path.resolve(parentPath, `v${cleaned}`, 'lib', 'node_modules');
|
|
35
|
+
const modules = jetpack.list(libPath) || [];
|
|
36
|
+
|
|
37
|
+
// Log version being checked
|
|
38
|
+
logger.log(`Checking global modules for Node v${logger.format.bold(cleaned)}...`);
|
|
39
|
+
|
|
40
|
+
// Skip if no global modules found
|
|
41
|
+
if (!modules.length) {
|
|
42
|
+
logger.warn(`No global modules found for Node v${logger.format.bold(cleaned)}.`);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Initialize progress bar
|
|
47
|
+
const progress = new ProgressBar.SingleBar({}, ProgressBar.Presets.shades_classic);
|
|
48
|
+
progress.start(modules.length, 0);
|
|
49
|
+
|
|
50
|
+
// Initialize data
|
|
51
|
+
response[cleaned] = {};
|
|
52
|
+
const data = [['Name', 'Package', 'Latest']];
|
|
53
|
+
|
|
54
|
+
// Loop through modules
|
|
55
|
+
for (const mod of modules) {
|
|
56
|
+
const packagePath = path.resolve(libPath, mod, 'package.json');
|
|
57
|
+
try {
|
|
58
|
+
const packageJson = require(packagePath);
|
|
59
|
+
const packageVersion = packageJson.version;
|
|
60
|
+
|
|
61
|
+
// Fetch the latest version from npm
|
|
62
|
+
let latestVersion = await npm.repo(mod).package().then(pkg => pkg.version).catch(() => '?');
|
|
63
|
+
|
|
64
|
+
// Determine version color-coding
|
|
65
|
+
const isLatest = packageVersion === latestVersion;
|
|
66
|
+
const verb = isLatest ? 'green' : 'red';
|
|
67
|
+
|
|
68
|
+
// Add to response and table data
|
|
69
|
+
data.push([
|
|
70
|
+
mod,
|
|
71
|
+
packageVersion,
|
|
72
|
+
chalk[verb](latestVersion)
|
|
73
|
+
]);
|
|
74
|
+
response[cleaned][mod] = {
|
|
75
|
+
version: packageVersion,
|
|
76
|
+
latest: latestVersion
|
|
77
|
+
};
|
|
78
|
+
} catch (e) {}
|
|
79
|
+
|
|
80
|
+
progress.increment();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Stop progress bar
|
|
84
|
+
progress.stop();
|
|
85
|
+
|
|
86
|
+
// Display results
|
|
87
|
+
console.log(table(data));
|
|
88
|
+
|
|
89
|
+
} catch (e) {
|
|
90
|
+
logger.error(`Error processing Node v${ver}:`, e.stack);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Log completion
|
|
95
|
+
logger.log(logger.format.green('Global module check completed successfully!'));
|
|
96
|
+
|
|
97
|
+
// Return response
|
|
98
|
+
return response;
|
|
99
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const logger = new (require('../lib/logger'))('node-power-user');
|
|
3
|
+
const chalk = require('chalk');
|
|
4
|
+
const { table } = require('table');
|
|
5
|
+
const ProgressBar = require('cli-progress');
|
|
6
|
+
const Npm = require('npm-api');
|
|
7
|
+
const version = require('wonderful-version');
|
|
8
|
+
const jetpack = require('fs-jetpack');
|
|
9
|
+
const path = require('path');
|
|
10
|
+
|
|
11
|
+
const npm = new Npm();
|
|
12
|
+
|
|
13
|
+
// Load package.json
|
|
14
|
+
const projectPath = process.cwd();
|
|
15
|
+
const projectJson = jetpack.read(path.join(projectPath, 'package.json'), 'json') || {};
|
|
16
|
+
|
|
17
|
+
// Module
|
|
18
|
+
module.exports = async function (options) {
|
|
19
|
+
// Combine all dependencies
|
|
20
|
+
const allDependencies = Object.assign(
|
|
21
|
+
{},
|
|
22
|
+
projectJson.dependencies,
|
|
23
|
+
projectJson.devDependencies,
|
|
24
|
+
projectJson.peerDependencies
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
// Check if there are any dependencies
|
|
28
|
+
if (Object.keys(allDependencies).length === 0) {
|
|
29
|
+
logger.warn('No dependencies found in package.json.');
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Log start
|
|
34
|
+
logger.log(`Checking outdated dependencies for ${logger.format.bold(projectJson.name || 'Unknown Project')}...`);
|
|
35
|
+
|
|
36
|
+
// Initialize data table
|
|
37
|
+
const data = [['Name', 'Package', 'Installed', 'Latest']];
|
|
38
|
+
const progress = new ProgressBar.SingleBar({}, ProgressBar.Presets.shades_classic);
|
|
39
|
+
progress.start(Object.keys(allDependencies).length, 0);
|
|
40
|
+
|
|
41
|
+
const response = {};
|
|
42
|
+
|
|
43
|
+
// Loop through dependencies
|
|
44
|
+
for (const dep of Object.keys(allDependencies)) {
|
|
45
|
+
try {
|
|
46
|
+
progress.increment();
|
|
47
|
+
|
|
48
|
+
// Get version info
|
|
49
|
+
const packageVersion = version.clean(allDependencies[dep]); // Version from package.json
|
|
50
|
+
const installedPackagePath = path.join(projectPath, 'node_modules', dep, 'package.json');
|
|
51
|
+
|
|
52
|
+
let installedVersion = '?';
|
|
53
|
+
if (jetpack.exists(installedPackagePath)) {
|
|
54
|
+
const installedJson = jetpack.read(installedPackagePath, 'json');
|
|
55
|
+
installedVersion = installedJson?.version ? version.clean(installedJson.version) : '?';
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Get latest published version
|
|
59
|
+
const latestVersion = await npm.repo(dep).package().then(pkg => version.clean(pkg.version)).catch(() => '?');
|
|
60
|
+
|
|
61
|
+
// Check version statuses
|
|
62
|
+
const isInstalledCurrent = version.is(installedVersion, '==', packageVersion);
|
|
63
|
+
const isUpToDate = version.is(packageVersion, '>=', latestVersion);
|
|
64
|
+
|
|
65
|
+
// Format version colors
|
|
66
|
+
const installedColor = isInstalledCurrent ? 'green' : 'yellow';
|
|
67
|
+
const latestColor = isUpToDate ? 'green' : 'red';
|
|
68
|
+
|
|
69
|
+
// Store response data
|
|
70
|
+
response[dep] = {
|
|
71
|
+
package: packageVersion,
|
|
72
|
+
installed: installedVersion,
|
|
73
|
+
latest: latestVersion,
|
|
74
|
+
isInstalledCurrent,
|
|
75
|
+
isUpToDate
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// Add row to table
|
|
79
|
+
data.push([
|
|
80
|
+
dep,
|
|
81
|
+
packageVersion,
|
|
82
|
+
chalk[installedColor](installedVersion),
|
|
83
|
+
chalk[latestColor](latestVersion)
|
|
84
|
+
]);
|
|
85
|
+
} catch (e) {
|
|
86
|
+
logger.error(`Error checking ${dep}: ${e.message}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Stop progress bar
|
|
91
|
+
progress.stop();
|
|
92
|
+
|
|
93
|
+
// Display table
|
|
94
|
+
console.log(table(data));
|
|
95
|
+
|
|
96
|
+
// Log completion
|
|
97
|
+
logger.log(logger.format.green('Outdated package check completed successfully!'));
|
|
98
|
+
|
|
99
|
+
return response;
|
|
100
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const logger = new (require('../lib/logger'))('node-power-user');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const jetpack = require('fs-jetpack');
|
|
5
|
+
const chalk = require('chalk');
|
|
6
|
+
const { table } = require('table');
|
|
7
|
+
|
|
8
|
+
// Load package.json
|
|
9
|
+
const projectPath = process.cwd();
|
|
10
|
+
const projectJson = jetpack.read(path.join(projectPath, 'package.json'), 'json') || {};
|
|
11
|
+
|
|
12
|
+
// Module
|
|
13
|
+
module.exports = async function (options) {
|
|
14
|
+
// Log start
|
|
15
|
+
logger.log(`Listing dependencies for ${logger.format.bold(projectJson.name || 'Unknown Project')} (v${projectJson.version || '0.0.0'})...`);
|
|
16
|
+
|
|
17
|
+
// Initialize response
|
|
18
|
+
const response = {
|
|
19
|
+
dependencies: {},
|
|
20
|
+
devDependencies: {},
|
|
21
|
+
peerDependencies: {}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// Initialize table data
|
|
25
|
+
const data = [['name', 'Version']];
|
|
26
|
+
|
|
27
|
+
// Helper function to process dependencies
|
|
28
|
+
const processDeps = (deps, type, label) => {
|
|
29
|
+
if (!deps || Object.keys(deps).length === 0) return;
|
|
30
|
+
|
|
31
|
+
// Insert a separator row if the table already has data
|
|
32
|
+
if (data.length > 1) data.push([label, chalk.gray('───────')]);
|
|
33
|
+
|
|
34
|
+
Object.entries(deps).forEach(([pkg, version]) => {
|
|
35
|
+
data.push([pkg, version]);
|
|
36
|
+
response[type][pkg] = version;
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Process dependencies
|
|
41
|
+
processDeps(projectJson.dependencies, 'dependencies', 'Dependencies');
|
|
42
|
+
processDeps(projectJson.devDependencies, 'devDependencies', 'Dev Dependencies');
|
|
43
|
+
processDeps(projectJson.peerDependencies, 'peerDependencies', 'Peer Dependencies');
|
|
44
|
+
|
|
45
|
+
// Check if the table has any data
|
|
46
|
+
if (data.length === 1) {
|
|
47
|
+
logger.warn('No dependencies found in package.json.');
|
|
48
|
+
return response;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Display table
|
|
52
|
+
console.log(table(data));
|
|
53
|
+
|
|
54
|
+
// Log completion
|
|
55
|
+
logger.log(logger.format.green('Package listing completed successfully!'));
|
|
56
|
+
|
|
57
|
+
return response;
|
|
58
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const logger = new (require('../lib/logger'))('node-power-user');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const jetpack = require('fs-jetpack');
|
|
5
|
+
const { execute } = require('node-powertools');
|
|
6
|
+
const inquirer = require('@inquirer/prompts');
|
|
7
|
+
|
|
8
|
+
// Load package.json files
|
|
9
|
+
const package = jetpack.read(path.join(__dirname, '../../', 'package.json'), 'json');
|
|
10
|
+
const project = jetpack.read(path.join(process.cwd(), 'package.json'), 'json');
|
|
11
|
+
|
|
12
|
+
// Module
|
|
13
|
+
module.exports = async function (options) {
|
|
14
|
+
// Collect answers using the new @inquirer/prompts methods
|
|
15
|
+
const message = await ask({
|
|
16
|
+
message: 'Enter a commit message',
|
|
17
|
+
default: 'Update',
|
|
18
|
+
value: options.message,
|
|
19
|
+
multiline: false,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// Define cleanup command
|
|
23
|
+
const command = `git pull && git add . && git commit -m "${message}" && git push origin`;
|
|
24
|
+
|
|
25
|
+
// Log initial state
|
|
26
|
+
logger.log(`Syncing repo...`);
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
// Run cleanup commands
|
|
30
|
+
await execute(command, { log: true });
|
|
31
|
+
|
|
32
|
+
// Log success
|
|
33
|
+
logger.log(logger.format.green('Sync completed successfully!'));
|
|
34
|
+
|
|
35
|
+
return true;
|
|
36
|
+
} catch (e) {
|
|
37
|
+
// Log failure
|
|
38
|
+
logger.error(`Sync failed`, e.stack);
|
|
39
|
+
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
function ask(options) {
|
|
45
|
+
options = options || {};
|
|
46
|
+
|
|
47
|
+
// If a value is provided, return it
|
|
48
|
+
if (typeof options.value !== 'undefined') {
|
|
49
|
+
return options.value;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Check if multuiline is enabled
|
|
53
|
+
if (options.multiline) {
|
|
54
|
+
return inquirer.editor({
|
|
55
|
+
message: options.message,
|
|
56
|
+
default: options.default,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return inquirer.input({
|
|
61
|
+
message: options.message,
|
|
62
|
+
default: options.default,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const logger = new (require('../lib/logger'))('node-power-user');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const jetpack = require('fs-jetpack');
|
|
5
|
+
|
|
6
|
+
// Load package
|
|
7
|
+
const package = jetpack.read(path.join(__dirname, '../../', 'package.json'), 'json');
|
|
8
|
+
const project = jetpack.read(path.join(process.cwd(), 'package.json'), 'json');
|
|
9
|
+
|
|
10
|
+
module.exports = async function (options) {
|
|
11
|
+
// Log version
|
|
12
|
+
console.log(package.version);
|
|
13
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const chalk = require('chalk');
|
|
3
|
+
|
|
4
|
+
// Logger class
|
|
5
|
+
function Logger(name) {
|
|
6
|
+
const self = this;
|
|
7
|
+
|
|
8
|
+
// Properties
|
|
9
|
+
self.name = name;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// Loop through log, error, warn, and info and make methods that log to console with the name and time [xx:xx:xx] name: message
|
|
13
|
+
['log', 'error', 'warn', 'info'].forEach((method) => {
|
|
14
|
+
Logger.prototype[method] = function () {
|
|
15
|
+
// Get time
|
|
16
|
+
const time = new Date().toLocaleTimeString('en-US', {
|
|
17
|
+
hour12: false,
|
|
18
|
+
hour: '2-digit',
|
|
19
|
+
minute: '2-digit',
|
|
20
|
+
second: '2-digit'
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// Determine color based on method
|
|
24
|
+
let color;
|
|
25
|
+
switch (method) {
|
|
26
|
+
case 'warn':
|
|
27
|
+
color = chalk.yellow;
|
|
28
|
+
break;
|
|
29
|
+
case 'error':
|
|
30
|
+
color = chalk.red;
|
|
31
|
+
break;
|
|
32
|
+
default:
|
|
33
|
+
color = (text) => text; // No color
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Convert arguments to array and prepend time and name
|
|
37
|
+
const args = [`[${chalk.magenta(time)}] '${chalk.cyan(this.name)}':`, ...Array.from(arguments).map(arg => {
|
|
38
|
+
return typeof arg === 'string'
|
|
39
|
+
? color(arg)
|
|
40
|
+
: (
|
|
41
|
+
arg instanceof Error
|
|
42
|
+
? color(arg.stack)
|
|
43
|
+
: arg
|
|
44
|
+
);
|
|
45
|
+
})];
|
|
46
|
+
|
|
47
|
+
// Log
|
|
48
|
+
console[method].apply(console, args);
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// Export chalk as color
|
|
53
|
+
Logger.prototype.format = chalk;
|
|
54
|
+
|
|
55
|
+
// Export
|
|
56
|
+
module.exports = Logger;
|
package/package.json
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-power-user",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "Easy tools for every Node.js developer!",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
-
"bin": {
|
|
7
|
-
"npu": "bin/npu",
|
|
8
|
-
"node-power-user": "bin/npu",
|
|
9
|
-
"nodepoweruser": "bin/npu"
|
|
10
|
-
},
|
|
11
6
|
"scripts": {
|
|
12
7
|
"test": "npm run prepare && ./node_modules/mocha/bin/mocha test/ --recursive --timeout=10000",
|
|
13
8
|
"start": "npm run prepare && ./bin/npu",
|
|
@@ -15,6 +10,11 @@
|
|
|
15
10
|
"prepare": "node -e \"require('prepare-package')()\"",
|
|
16
11
|
"prepare:watch": "nodemon -w ./src -e '*' --exec 'npm run prepare'"
|
|
17
12
|
},
|
|
13
|
+
"bin": {
|
|
14
|
+
"npu": "bin/npu",
|
|
15
|
+
"node-power-user": "bin/npu",
|
|
16
|
+
"nodepoweruser": "bin/npu"
|
|
17
|
+
},
|
|
18
18
|
"repository": {
|
|
19
19
|
"type": "git",
|
|
20
20
|
"url": "git+https://github.com/itw-creative-works/node-power-user.git"
|
|
@@ -36,22 +36,23 @@
|
|
|
36
36
|
"replace": {}
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
+
"@inquirer/prompts": "^7.3.1",
|
|
39
40
|
"chalk": "^4.1.2",
|
|
40
41
|
"cli-progress": "^3.12.0",
|
|
41
42
|
"fs-jetpack": "^4.3.1",
|
|
42
43
|
"inquirer": "^8.2.6",
|
|
43
|
-
"itwcw-package-analytics": "^1.0.
|
|
44
|
+
"itwcw-package-analytics": "^1.0.6",
|
|
44
45
|
"json5": "^2.2.3",
|
|
45
46
|
"keychain": "^1.5.0",
|
|
46
47
|
"lodash": "^4.17.21",
|
|
47
|
-
"node-powertools": "^1.
|
|
48
|
+
"node-powertools": "^2.1.5",
|
|
48
49
|
"npm-api": "^1.0.1",
|
|
49
|
-
"
|
|
50
|
-
"
|
|
50
|
+
"table": "^6.9.0",
|
|
51
|
+
"wonderful-version": "^1.3.2",
|
|
51
52
|
"yargs": "^16.2.0"
|
|
52
53
|
},
|
|
53
54
|
"devDependencies": {
|
|
54
55
|
"mocha": "^8.4.0",
|
|
55
|
-
"prepare-package": "^1.1.
|
|
56
|
+
"prepare-package": "^1.1.14"
|
|
56
57
|
}
|
|
57
|
-
}
|
|
58
|
+
}
|