Socket
Socket
Sign inDemoInstall

@oclif/plugin-plugins

Package Overview
Dependencies
Maintainers
3
Versions
275
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@oclif/plugin-plugins - npm Package Compare versions

Comparing version 5.1.3 to 5.2.0

12

lib/commands/plugins/index.js
import { Command, Flags } from '@oclif/core';
import chalk from 'chalk';
import { dim } from 'ansis';
// @ts-expect-error because object-treeify does not have types: https://github.com/blackflux/object-treeify/issues/1077

@@ -69,17 +69,17 @@ import treeify from 'object-treeify';

return;
this.log(chalk.dim('\nUninstalled JIT Plugins:'));
this.log(dim('\nUninstalled JIT Plugins:'));
for (const { name, version } of jitPlugins) {
this.log(`${this.plugins.friendlyName(name)} ${chalk.dim(version)}`);
this.log(`${this.plugins.friendlyName(name)} ${dim(version)}`);
}
}
formatPlugin(plugin) {
let output = `${this.plugins.friendlyName(plugin.name)} ${chalk.dim(plugin.version)}`;
let output = `${this.plugins.friendlyName(plugin.name)} ${dim(plugin.version)}`;
if (plugin.type !== 'user')
output += chalk.dim(` (${plugin.type})`);
output += dim(` (${plugin.type})`);
if (plugin.type === 'link')
output += ` ${plugin.root}`;
else if (plugin.tag && plugin.tag !== 'latest')
output += chalk.dim(` (${String(plugin.tag)})`);
output += dim(` (${String(plugin.tag)})`);
return output;
}
}

@@ -12,3 +12,3 @@ import { Command, Plugin } from '@oclif/core';

static args: {
plugin: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
plugin: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
};

@@ -19,4 +19,4 @@ static description: string;

static flags: {
help: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<void>;
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
help: import("@oclif/core/interfaces").BooleanFlag<void>;
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
};

@@ -23,0 +23,0 @@ static strict: boolean;

import { Args, Command, Flags } from '@oclif/core';
import chalk from 'chalk';
import { bold, dim } from 'ansis';
import { readFile } from 'node:fs/promises';

@@ -80,3 +80,3 @@ import { dirname, join, sep } from 'node:path';

const from = plugin.pjson.dependencies?.[dep];
const versionMsg = chalk.dim(from ? `${from} => ${version}` : version);
const versionMsg = dim(from ? `${from} => ${version}` : version);
const msg = verbose ? `${dep} ${versionMsg} ${pkgPath}` : `${dep} ${versionMsg}`;

@@ -87,3 +87,3 @@ dependencies[msg] = null;

const tree = {
[chalk.bold.cyan(plugin.name)]: {
[bold.cyan(plugin.name)]: {
[`version ${plugin.version}`]: null,

@@ -122,3 +122,3 @@ ...(plugin.tag ? { [`tag ${plugin.tag}`]: null } : {}),

catch (error) {
this.log(chalk.bold.red('failed'));
this.log(bold.red('failed'));
throw error;

@@ -125,0 +125,0 @@ }

/* eslint-disable no-await-in-loop */
import { Args, Command, Errors, Flags, ux } from '@oclif/core';
import chalk from 'chalk';
import { bold, cyan } from 'ansis';
import validate from 'validate-npm-package-name';

@@ -136,3 +136,3 @@ import { determineLogLevel } from '../../log-level.js';

if (p.type === 'npm') {
ux.action.start(`${this.config.name}: Installing plugin ${chalk.cyan(plugins.friendlyName(p.name) + '@' + p.tag)}`);
ux.action.start(`${this.config.name}: Installing plugin ${cyan(plugins.friendlyName(p.name) + '@' + p.tag)}`);
plugin = await plugins.install(p.name, {

@@ -144,3 +144,3 @@ force: flags.force,

else {
ux.action.start(`${this.config.name}: Installing plugin ${chalk.cyan(p.url)}`);
ux.action.start(`${this.config.name}: Installing plugin ${cyan(p.url)}`);
plugin = await plugins.install(p.url, { force: flags.force });

@@ -150,3 +150,3 @@ }

catch (error) {
ux.action.stop(chalk.bold.red('failed'));
ux.action.stop(bold.red('failed'));
throw error;

@@ -153,0 +153,0 @@ }

import { Command } from '@oclif/core';
export default class PluginsLink extends Command {
static args: {
path: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
path: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
};

@@ -9,7 +9,7 @@ static description: string;

static flags: {
help: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<void>;
install: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
help: import("@oclif/core/interfaces").BooleanFlag<void>;
install: import("@oclif/core/interfaces").BooleanFlag<boolean>;
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
};
run(): Promise<void>;
}
import { Args, Command, Flags, ux } from '@oclif/core';
import chalk from 'chalk';
import { cyan } from 'ansis';
import { determineLogLevel } from '../../log-level.js';

@@ -30,3 +30,3 @@ import Plugins from '../../plugins.js';

});
ux.action.start(`${this.config.name}: Linking plugin ${chalk.cyan(args.path)}`);
ux.action.start(`${this.config.name}: Linking plugin ${cyan(args.path)}`);
await plugins.link(args.path, { install: flags.install });

@@ -33,0 +33,0 @@ ux.action.stop();

import { Command } from '@oclif/core';
export default class Reset extends Command {
static flags: {
hard: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
reinstall: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
hard: import("@oclif/core/interfaces").BooleanFlag<boolean>;
reinstall: import("@oclif/core/interfaces").BooleanFlag<boolean>;
};

@@ -7,0 +7,0 @@ static summary: string;

/* eslint-disable no-await-in-loop */
import { Command, Flags } from '@oclif/core';
import chalk from 'chalk';
import { dim } from 'ansis';
import { rm } from 'node:fs/promises';

@@ -25,3 +25,3 @@ import { join } from 'node:path';

for (const plugin of userPlugins) {
this.log(`- ${plugin.name} ${chalk.dim(this.config.plugins.get(plugin.name)?.version)} ${chalk.dim(`(${plugin.type})`)}`);
this.log(`- ${plugin.name} ${dim(this.config.plugins.get(plugin.name)?.version ?? '')} ${dim(`(${plugin.type})`)}`);
}

@@ -63,3 +63,3 @@ if (flags.hard) {

const newPlugin = await plugins.link(plugin.root, { install: false });
const newVersion = chalk.dim(`-> ${newPlugin.version}`);
const newVersion = dim(`-> ${newPlugin.version}`);
this.log(`✅ Relinked ${plugin.name} ${newVersion}`);

@@ -76,3 +76,3 @@ }

: await plugins.install(plugin.name, { tag: plugin.tag });
const newVersion = chalk.dim(`-> ${newPlugin.version}`);
const newVersion = dim(`-> ${newPlugin.version}`);
const tag = plugin.tag ? `@${plugin.tag}` : plugin.url ? ` (${plugin.url})` : '';

@@ -79,0 +79,0 @@ this.log(`✅ Reinstalled ${plugin.name}${tag} ${newVersion}`);

@@ -5,3 +5,3 @@ import { Command } from '@oclif/core';

static args: {
plugin: import("@oclif/core/lib/interfaces/parser.js").Arg<string | undefined, Record<string, unknown>>;
plugin: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
};

@@ -11,4 +11,4 @@ static description: string;

static flags: {
help: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<void>;
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
help: import("@oclif/core/interfaces").BooleanFlag<void>;
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
};

@@ -15,0 +15,0 @@ static strict: boolean;

/* eslint-disable no-await-in-loop */
import { Args, Command, Flags, ux } from '@oclif/core';
import chalk from 'chalk';
import { bold } from 'ansis';
import { determineLogLevel } from '../../log-level.js';

@@ -55,3 +55,3 @@ import Plugins from '../../plugins.js';

catch (error) {
ux.action.stop(chalk.bold.red('failed'));
ux.action.stop(bold.red('failed'));
throw error;

@@ -58,0 +58,0 @@ }

@@ -5,6 +5,6 @@ import { Command } from '@oclif/core';

static flags: {
help: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<void>;
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
help: import("@oclif/core/interfaces").BooleanFlag<void>;
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
};
run(): Promise<void>;
}

@@ -23,3 +23,3 @@ import { Errors, ux } from '@oclif/core';

if (options.logLevel !== 'notice' && options.logLevel !== 'silent') {
ux.logToStderr(`${options.cwd}: ${bin} ${args.join(' ')}`);
ux.stderr(`${options.cwd}: ${bin} ${args.join(' ')}`);
}

@@ -26,0 +26,0 @@ debug(`${options.cwd}: ${bin} ${args.join(' ')}`);

import { Interfaces } from '@oclif/core';
import { LogLevel } from './log-level.js';
import { NPM } from './npm.js';
type UserPJSON = {
type Plugin = Interfaces.LinkedPlugin | Interfaces.UserPlugin;
type NormalizedUserPJSON = {
dependencies: Record<string, string>;
oclif: {
plugins: Array<Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.PluginTypes.User>;
plugins: Plugin[];
schema: number;

@@ -21,5 +22,5 @@ };

});
add(...plugins: Interfaces.PJSON.PluginTypes[]): Promise<void>;
add(...plugins: Plugin[]): Promise<void>;
friendlyName(name: string): string;
hasPlugin(name: string): Promise<Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.PluginTypes.User | false>;
hasPlugin(name: string): Promise<Plugin | false>;
install(name: string, { force, tag }?: {

@@ -32,5 +33,5 @@ force?: boolean | undefined;

}): Promise<Interfaces.Config>;
list(): Promise<(Interfaces.PJSON.PluginTypes.Link | Interfaces.PJSON.PluginTypes.User)[]>;
list(): Promise<Plugin[]>;
maybeUnfriendlyName(name: string): Promise<string>;
pjson(): Promise<UserPJSON>;
pjson(): Promise<NormalizedUserPJSON>;
remove(name: string): Promise<void>;

@@ -37,0 +38,0 @@ unfriendlyName(name: string): string | undefined;

import { Config, Errors, ux } from '@oclif/core';
import chalk from 'chalk';
import { bold } from 'ansis';
import makeDebug from 'debug';

@@ -27,5 +27,3 @@ import { spawn } from 'node:child_process';

function dedupePlugins(plugins) {
return uniqWith(plugins,
// @ts-expect-error because typescript doesn't think it's possible for a plugin to have the `link` type here
(a, b) => a.name === b.name || (a.type === 'link' && b.type === 'link' && a.root === b.root));
return uniqWith(plugins, (a, b) => a.name === b.name || (a.type === 'link' && b.type === 'link' && a.root === b.root));
}

@@ -43,5 +41,5 @@ function extractIssuesLocation(bugs, repository) {

if (containsWarnings) {
ux.logToStderr(chalk.bold.yellow(`\nThese warnings can only be addressed by the owner(s) of ${plugin.name}.`));
ux.stderr(bold.yellow(`\nThese warnings can only be addressed by the owner(s) of ${plugin.name}.`));
if (plugin.pjson.bugs || plugin.pjson.repository) {
ux.logToStderr(`We suggest that you create an issue at ${extractIssuesLocation(plugin.pjson.bugs, plugin.pjson.repository)} and ask the plugin owners to address them.\n`);
ux.stderr(`We suggest that you create an issue at ${extractIssuesLocation(plugin.pjson.bugs, plugin.pjson.repository)} and ask the plugin owners to address them.\n`);
}

@@ -393,3 +391,2 @@ }

async savePJSON(pjson) {
this.debug(`saving pjson at ${this.pjsonPath}`, JSON.stringify(pjson, null, 2));
await mkdir(dirname(this.pjsonPath), { recursive: true });

@@ -400,8 +397,11 @@ await writeFile(this.pjsonPath, JSON.stringify({ name: this.config.name, ...pjson }, null, 2));

// if the plugin is a simple string, convert it to an object
const normalizePlugins = (input) => dedupePlugins((input ?? []).map((p) => typeof p === 'string'
? {
name: p,
tag: 'latest',
type: 'user',
}
: p));
const normalizePlugins = (input) => {
const normalized = (input ?? []).map((p) => typeof p === 'string'
? {
name: p,
tag: 'latest',
type: 'user',
}
: p);
return dedupePlugins(normalized);
};

@@ -48,3 +48,3 @@ import { Errors, ux } from '@oclif/core';

loggedStderr.push(output);
ux.log(output);
ux.stdout(output);
}

@@ -60,3 +60,3 @@ else

loggedStdout.push(output);
ux.log(output);
ux.stdout(output);
}

@@ -63,0 +63,0 @@ else

@@ -24,3 +24,3 @@ import { Errors, ux } from '@oclif/core';

if (options.logLevel !== 'notice' && options.logLevel !== 'silent') {
ux.logToStderr(`${options.cwd}: ${bin} ${args.join(' ')}`);
ux.stderr(`${options.cwd}: ${bin} ${args.join(' ')}`);
}

@@ -27,0 +27,0 @@ debug(`${options.cwd}: ${bin} ${args.join(' ')}`);

@@ -395,3 +395,3 @@ {

},
"version": "5.1.3"
"version": "5.2.0"
}
{
"name": "@oclif/plugin-plugins",
"description": "plugins plugin for oclif",
"version": "5.1.3",
"version": "5.2.0",
"author": "Salesforce",
"bugs": "https://github.com/oclif/plugin-plugins/issues",
"dependencies": {
"@oclif/core": "^3.26.6",
"chalk": "^5.3.0",
"@oclif/core": "4.0.0-beta.11",
"ansis": "^3.2.0",
"debug": "^4.3.4",

@@ -24,2 +24,3 @@ "npm": "^10.8.0",

"@oclif/prettier-config": "^0.2.1",
"@oclif/test": "^4.0.2",
"@types/chai": "^4.3.11",

@@ -41,5 +42,5 @@ "@types/debug": "^4.1.12",

"husky": "^9",
"lint-staged": "^15.2.2",
"lint-staged": "^15.2.4",
"mocha": "^10.4.0",
"oclif": "^4.10.11",
"oclif": "^4.11.0",
"prettier": "^3.2.5",

@@ -73,3 +74,3 @@ "shx": "^0.3.4",

"aliases": {
"aliasme": "@oclif/plugin-test-esm-1"
"aliasme": "@oclif/plugin-version"
},

@@ -76,0 +77,0 @@ "bin": "mycli",

@@ -121,3 +121,3 @@ # @oclif/plugin-plugins

_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/index.ts)_
_See code: [src/commands/plugins/index.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/index.ts)_

@@ -196,3 +196,3 @@ ## `mycli plugins add PLUGIN`

_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/inspect.ts)_
_See code: [src/commands/plugins/inspect.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/inspect.ts)_

@@ -246,3 +246,3 @@ ## `mycli plugins install PLUGIN`

_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/install.ts)_
_See code: [src/commands/plugins/install.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/install.ts)_

@@ -277,3 +277,3 @@ ## `mycli plugins link PATH`

_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/link.ts)_
_See code: [src/commands/plugins/link.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/link.ts)_

@@ -319,3 +319,3 @@ ## `mycli plugins remove [PLUGIN]`

_See code: [src/commands/plugins/reset.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/reset.ts)_
_See code: [src/commands/plugins/reset.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/reset.ts)_

@@ -348,3 +348,3 @@ ## `mycli plugins uninstall [PLUGIN]`

_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/uninstall.ts)_
_See code: [src/commands/plugins/uninstall.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/uninstall.ts)_

@@ -393,3 +393,3 @@ ## `mycli plugins unlink [PLUGIN]`

_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/v5.1.3/src/commands/plugins/update.ts)_
_See code: [src/commands/plugins/update.ts](https://github.com/oclif/plugin-plugins/blob/v5.2.0/src/commands/plugins/update.ts)_
<!-- commandsstop -->

@@ -396,0 +396,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc