unified-args
Advanced tools
Comparing version 8.1.0 to 9.0.0
@@ -1,2 +0,5 @@ | ||
'use strict' | ||
module.exports = require('./lib') | ||
/** | ||
* @typedef {import('./lib/index.js').Options} Options | ||
*/ | ||
export {args} from './lib/index.js' |
100
lib/index.js
@@ -1,19 +0,19 @@ | ||
'use strict' | ||
/** | ||
* @typedef {import('unified-engine').Options} EngineOptions | ||
* @typedef {import('unified-engine').Context} EngineContext | ||
* @typedef {import('unified-engine').Callback} EngineCallback | ||
* @typedef {import('./options.js').Options} Options | ||
*/ | ||
var stream = require('stream') | ||
var engine = require('unified-engine') | ||
var chalk = require('chalk') | ||
var chokidar = require('chokidar') | ||
var options = require('./options') | ||
import stream from 'stream' | ||
import chalk from 'chalk' | ||
import chokidar from 'chokidar' | ||
import {engine} from 'unified-engine' | ||
import {options} from './options.js' | ||
module.exports = start | ||
var noop = Function.prototype | ||
// Fake TTY stream. | ||
var ttyStream = new stream.Readable() | ||
ttyStream.isTTY = true | ||
const ttyStream = Object.assign(new stream.Readable(), {isTTY: true}) | ||
// Exit, lazily, with the correct exit status code. | ||
var exitStatus = 0 | ||
let exitStatus = 0 | ||
@@ -25,9 +25,17 @@ process.on('exit', onexit) | ||
// Start the CLI. | ||
function start(cliConfig) { | ||
var config | ||
var output | ||
var watcher | ||
/** | ||
* Start the CLI. | ||
* | ||
* @param {Options} cliConfig | ||
*/ | ||
export function args(cliConfig) { | ||
/** @type {EngineOptions & {help: boolean, helpMessage: string, watch: boolean, version: boolean}} */ | ||
let config | ||
/** @type {chokidar.FSWatcher|undefined} */ | ||
let watcher | ||
/** @type {boolean|string|undefined} */ | ||
let output | ||
try { | ||
// @ts-expect-error: Close enough. | ||
config = options(process.argv.slice(2), cliConfig) | ||
@@ -91,11 +99,15 @@ } catch (error) { | ||
// Handle complete run. | ||
function done(err, code, context) { | ||
if (err) { | ||
/** | ||
* Handle complete run. | ||
* | ||
* @type {EngineCallback} | ||
*/ | ||
function done(error, code, context) { | ||
if (error) { | ||
clean() | ||
fail(err) | ||
fail(error) | ||
} else { | ||
exitStatus = code | ||
exitStatus = code || 0 | ||
if (config.watch && !watcher) { | ||
if (config.watch && !watcher && context) { | ||
subscribe(context) | ||
@@ -110,21 +122,26 @@ } | ||
watcher.close() | ||
watcher = null | ||
watcher = undefined | ||
} | ||
} | ||
// Subscribe a chokidar watcher to all processed files. | ||
/** | ||
* Subscribe a chokidar watcher to all processed files. | ||
* | ||
* @param {EngineContext} context | ||
*/ | ||
function subscribe(context) { | ||
watcher = chokidar | ||
// @ts-expect-error: `fileSet` is available. | ||
.watch(context.fileSet.origins, {cwd: config.cwd, ignoreInitial: true}) | ||
.on('error', done) | ||
.on('change', onchange) | ||
.on('change', (filePath) => { | ||
config.files = [filePath] | ||
engine(config, done) | ||
}) | ||
process.on('SIGINT', onsigint) | ||
function onchange(filePath) { | ||
config.files = [filePath] | ||
engine(config, done) | ||
} | ||
/** | ||
* Handle a SIGINT. | ||
*/ | ||
function onsigint() { | ||
@@ -146,7 +163,12 @@ // Hide the `^C` in terminal. | ||
// Print an error, optionally with stack. | ||
function fail(err, pretty) { | ||
var message = | ||
(pretty ? String(err).trim() : err.stack) || | ||
/* istanbul ignore next - Old versions of Node */ err | ||
/** | ||
* Print an error, optionally with stack. | ||
* | ||
* @param {Error} error | ||
* @param {boolean} [pretty=false] | ||
*/ | ||
function fail(error, pretty) { | ||
// Old versions of Node | ||
/* c8 ignore next 1 */ | ||
const message = String((pretty ? error : error.stack) || error) | ||
@@ -163,1 +185,3 @@ exitStatus = 1 | ||
} | ||
function noop() {} |
@@ -1,42 +0,80 @@ | ||
'use strict' | ||
/** | ||
* @typedef {import('unified-engine').Options} EngineOptions | ||
* @typedef {import('./schema.js').Option} Option | ||
* | ||
* @typedef {Required< | ||
* Pick< | ||
* EngineOptions, | ||
* | 'cwd' | ||
* | 'extensions' | ||
* | 'ignoreName' | ||
* | 'packageField' | ||
* | 'pluginPrefix' | ||
* | 'processor' | ||
* | 'rcName' | ||
* > | ||
* >} RequiredEngineOptions | ||
* | ||
* @typedef ArgsOptionsFields | ||
* @property {string} name | ||
* Name of executable | ||
* @property {string} description | ||
* Description of executable | ||
* @property {string} version | ||
* Version (semver) of executable | ||
* | ||
* @typedef {RequiredEngineOptions & ArgsOptionsFields} Options | ||
*/ | ||
var table = require('text-table') | ||
var camelcase = require('camelcase') | ||
var minimist = require('minimist') | ||
var json5 = require('json5') | ||
var fault = require('fault') | ||
var schema = require('./schema') | ||
import table from 'text-table' | ||
import camelcase from 'camelcase' | ||
import minimist from 'minimist' | ||
import json5 from 'json5' | ||
import {fault} from 'fault' | ||
import {schema} from './schema.js' | ||
module.exports = options | ||
const own = {}.hasOwnProperty | ||
// Schema for `minimist`. | ||
var minischema = { | ||
/** | ||
* Schema for `minimist`. | ||
*/ | ||
const minischema = { | ||
unknown: handleUnknownArgument, | ||
/** @type {Record<string, string|boolean|null>} */ | ||
default: {}, | ||
/** @type {Record<string, string>} */ | ||
alias: {}, | ||
/** @type {string[]} */ | ||
string: [], | ||
/** @type {string[]} */ | ||
boolean: [] | ||
} | ||
schema.forEach(addEach) | ||
let index = -1 | ||
while (++index < schema.length) { | ||
addEach(schema[index]) | ||
} | ||
// Parse CLI options. | ||
function options(flags, configuration) { | ||
var extension = configuration.extensions[0] | ||
var name = configuration.name | ||
var config = toCamelCase(minimist(flags, minischema)) | ||
var help | ||
var ext | ||
var report | ||
/** | ||
* Parse CLI options. | ||
* | ||
* @param {string[]} flags | ||
* @param {Options} configuration | ||
*/ | ||
export function options(flags, configuration) { | ||
const extension = configuration.extensions[0] | ||
const name = configuration.name | ||
const config = toCamelCase(minimist(flags, minischema)) | ||
let index = -1 | ||
schema.forEach(function (option) { | ||
while (++index < schema.length) { | ||
const option = schema[index] | ||
if (option.type === 'string' && config[option.long] === '') { | ||
throw fault('Missing value:%s', inspect(option).join(' ')) | ||
} | ||
}) | ||
} | ||
ext = commaSeparated(config.ext) | ||
report = reporter(config.report) | ||
help = [ | ||
const ext = commaSeparated(/** @type {string} */ (config.ext)) | ||
const report = reporter(/** @type {string} */ (config.report)) | ||
const help = [ | ||
inspectAll(schema), | ||
@@ -58,3 +96,2 @@ '', | ||
helpMessage: help, | ||
// “hidden” feature, makes testing easier. | ||
cwd: configuration.cwd, | ||
@@ -78,11 +115,15 @@ processor: configuration.processor, | ||
detectConfig: config.config, | ||
settings: settings(config.setting), | ||
settings: /** @type {Record<string, unknown>} */ ( | ||
settings(/** @type {string} */ (config.setting)) | ||
), | ||
ignoreName: configuration.ignoreName, | ||
ignorePath: config.ignorePath, | ||
ignorePathResolveFrom: config.ignorePathResolveFrom, | ||
ignorePatterns: commaSeparated(config.ignorePattern), | ||
ignorePatterns: commaSeparated( | ||
/** @type {string} */ (config.ignorePattern) | ||
), | ||
silentlyIgnore: config.silentlyIgnore, | ||
detectIgnore: config.ignore, | ||
pluginPrefix: configuration.pluginPrefix, | ||
plugins: plugins(config.use), | ||
plugins: plugins(/** @type {string} */ (config.use)), | ||
reporter: report[0], | ||
@@ -97,8 +138,11 @@ reporterOptions: report[1], | ||
/** | ||
* @param {Option} option | ||
*/ | ||
function addEach(option) { | ||
var value = option.default | ||
const value = option.default | ||
minischema.default[option.long] = value === undefined ? null : value | ||
if (option.type in minischema) { | ||
if (option.type && option.type in minischema) { | ||
minischema[option.type].push(option.long) | ||
@@ -112,16 +156,28 @@ } | ||
// Parse `extensions`. | ||
/** | ||
* Parse `extensions`. | ||
* | ||
* @param {string[]|string|null|undefined} value | ||
* @returns {string[]} | ||
*/ | ||
function commaSeparated(value) { | ||
return flatten(normalize(value).map(splitList)) | ||
return flatten(normalize(value).map((d) => splitList(d))) | ||
} | ||
// Parse `plugins`. | ||
/** | ||
* Parse `plugins`. | ||
* | ||
* @param {string[]|string|null|undefined} value | ||
* @returns {Record<string, Record<string, unknown>|undefined>} | ||
*/ | ||
function plugins(value) { | ||
var result = {} | ||
const normalized = normalize(value).map((d) => splitOptions(d)) | ||
let index = -1 | ||
/** @type {Record<string, Record<string, unknown>|undefined>} */ | ||
const result = {} | ||
normalize(value) | ||
.map(splitOptions) | ||
.forEach(function (value) { | ||
result[value[0]] = value[1] ? parseConfig(value[1], {}) : null | ||
}) | ||
while (++index < normalized.length) { | ||
const value = normalized[index] | ||
result[value[0]] = value[1] ? parseConfig(value[1], {}) : undefined | ||
} | ||
@@ -131,9 +187,19 @@ return result | ||
// Parse `reporter`: only one is accepted. | ||
/** | ||
* Parse `reporter`: only one is accepted. | ||
* | ||
* @param {string[]|string|null|undefined} value | ||
* @returns {[string|undefined, Record<string, unknown>|undefined]} | ||
*/ | ||
function reporter(value) { | ||
var all = normalize(value) | ||
.map(splitOptions) | ||
.map(function (value) { | ||
return [value[0], value[1] ? parseConfig(value[1], {}) : null] | ||
}) | ||
const all = normalize(value) | ||
.map((d) => splitOptions(d)) | ||
.map( | ||
/** | ||
* @returns {[string, Record<string, unknown>|undefined]} | ||
*/ | ||
(value) => { | ||
return [value[0], value[1] ? parseConfig(value[1], {}) : undefined] | ||
} | ||
) | ||
@@ -143,9 +209,17 @@ return all[all.length - 1] || [] | ||
// Parse `settings`. | ||
/** | ||
* Parse `settings`. | ||
* | ||
* @param {string[]|string|null|undefined} value | ||
* @returns {Record<string, unknown>} | ||
*/ | ||
function settings(value) { | ||
var cache = {} | ||
const normalized = normalize(value) | ||
let index = -1 | ||
/** @type {Record<string, unknown>} */ | ||
const cache = {} | ||
normalize(value).forEach(function (value) { | ||
parseConfig(value, cache) | ||
}) | ||
while (++index < normalized.length) { | ||
parseConfig(normalized[index], cache) | ||
} | ||
@@ -155,18 +229,30 @@ return cache | ||
// Parse configuration. | ||
function parseConfig(flags, cache) { | ||
var flag | ||
var message | ||
/** | ||
* Parse configuration. | ||
* | ||
* @param {string} value | ||
* @param {Record<string, unknown>} cache | ||
* @returns {Record<string, unknown>} | ||
*/ | ||
function parseConfig(value, cache) { | ||
/** @type {Record<string, unknown>} */ | ||
let flags | ||
/** @type {string} */ | ||
let flag | ||
try { | ||
flags = toCamelCase(parseJSON(flags)) | ||
flags = toCamelCase(parseJSON(value)) | ||
} catch (error) { | ||
// Fix position | ||
message = error.message.replace(/at(?= position)/, 'around') | ||
throw fault('Cannot parse `%s` as JSON: %s', flags, message) | ||
throw fault( | ||
'Cannot parse `%s` as JSON: %s', | ||
value, | ||
// Fix position | ||
error.message.replace(/at(?= position)/, 'around') | ||
) | ||
} | ||
for (flag in flags) { | ||
cache[flag] = flags[flag] | ||
if (own.call(flags, flag)) { | ||
cache[flag] = flags[flag] | ||
} | ||
} | ||
@@ -177,51 +263,60 @@ | ||
// Handle an unknown flag. | ||
/** | ||
* Handle an unknown flag. | ||
* | ||
* @param {string} flag | ||
* @returns {boolean} | ||
*/ | ||
function handleUnknownArgument(flag) { | ||
// Glob. | ||
if (flag.charAt(0) !== '-') { | ||
return | ||
} | ||
// Not a glob. | ||
if (flag.charAt(0) === '-') { | ||
// Long options, always unknown. | ||
if (flag.charAt(1) === '-') { | ||
throw fault( | ||
'Unknown option `%s`, expected:\n%s', | ||
flag, | ||
inspectAll(schema) | ||
) | ||
} | ||
// Long options, always unknown. | ||
if (flag.charAt(1) === '-') { | ||
throw fault('Unknown option `%s`, expected:\n%s', flag, inspectAll(schema)) | ||
} | ||
// Short options, can be grouped. | ||
const found = flag.slice(1).split('') | ||
const known = schema.filter((d) => d.short) | ||
const knownKeys = new Set(known.map((d) => d.short)) | ||
let index = -1 | ||
// Short options, can be grouped. | ||
flag.slice(1).split('').forEach(each) | ||
function each(key) { | ||
var length = schema.length | ||
var index = -1 | ||
var option | ||
while (++index < length) { | ||
option = schema[index] | ||
if (option.short === key) { | ||
return | ||
while (++index < found.length) { | ||
const key = found[index] | ||
if (!knownKeys.has(key)) { | ||
throw fault( | ||
'Unknown short option `-%s`, expected:\n%s', | ||
key, | ||
inspectAll(known) | ||
) | ||
} | ||
} | ||
throw fault( | ||
'Unknown short option `-%s`, expected:\n%s', | ||
key, | ||
inspectAll(schema.filter(short)) | ||
) | ||
} | ||
function short(option) { | ||
return option.short | ||
} | ||
return true | ||
} | ||
// Inspect all `options`. | ||
/** | ||
* Inspect all `options`. | ||
* | ||
* @param {Option[]} options | ||
* @returns {string} | ||
*/ | ||
function inspectAll(options) { | ||
return table(options.map(inspect)) | ||
return table(options.map((d) => inspect(d))) | ||
} | ||
// Inspect one `option`. | ||
/** | ||
* Inspect one `option`. | ||
* | ||
* @param {Option} option | ||
* @returns {string[]} | ||
*/ | ||
function inspect(option) { | ||
var description = option.description | ||
var long = option.long | ||
let description = option.description | ||
let long = option.long | ||
@@ -241,3 +336,8 @@ if (option.default === true || option.truelike) { | ||
// Normalize `value`. | ||
/** | ||
* Normalize `value`. | ||
* | ||
* @param {string[]|string|null|undefined} value | ||
* @returns {string[]} | ||
*/ | ||
function normalize(value) { | ||
@@ -252,10 +352,21 @@ if (!value) { | ||
return flatten(value.map(normalize)) | ||
return flatten(value.map((d) => normalize(d))) | ||
} | ||
// Flatten `values`. | ||
/** | ||
* Flatten `values`. | ||
* | ||
* @param {string|string[]|string[][]} values | ||
* @returns {string[]} | ||
*/ | ||
function flatten(values) { | ||
// @ts-expect-error: TS is wrong. | ||
// eslint-disable-next-line prefer-spread | ||
return [].concat.apply([], values) | ||
} | ||
/** | ||
* @param {string} value | ||
* @returns {string[]} | ||
*/ | ||
function splitOptions(value) { | ||
@@ -265,2 +376,6 @@ return value.split('=') | ||
/** | ||
* @param {string} value | ||
* @returns {string[]} | ||
*/ | ||
function splitList(value) { | ||
@@ -270,16 +385,25 @@ return value.split(',') | ||
// Transform the keys on an object to camel-case, recursivly. | ||
/** | ||
* Transform the keys on an object to camel-case, recursivly. | ||
* | ||
* @param {Record<string, unknown>} object | ||
* @returns {Record<string, unknown>} | ||
*/ | ||
function toCamelCase(object) { | ||
var result = {} | ||
var value | ||
var key | ||
/** @type {Record<string, unknown>} */ | ||
const result = {} | ||
/** @type {string} */ | ||
let key | ||
for (key in object) { | ||
value = object[key] | ||
if (own.call(object, key)) { | ||
let value = object[key] | ||
if (value && typeof value === 'object' && !('length' in value)) { | ||
value = toCamelCase(value) | ||
if (value && typeof value === 'object' && !Array.isArray(value)) { | ||
// @ts-expect-error: looks like an object. | ||
value = toCamelCase(value) | ||
} | ||
result[camelcase(key)] = value | ||
} | ||
result[camelcase(key)] = value | ||
} | ||
@@ -290,5 +414,10 @@ | ||
// Parse a (lazy?) JSON config. | ||
/** | ||
* Parse a (lazy?) JSON config. | ||
* | ||
* @param {string} value | ||
* @returns {Record<string, unknown>} | ||
*/ | ||
function parseJSON(value) { | ||
return json5.parse('{' + value + '}') | ||
} |
{ | ||
"name": "unified-args", | ||
"version": "8.1.0", | ||
"version": "9.0.0", | ||
"description": "Create CLIs for unified processors", | ||
@@ -24,41 +24,48 @@ "license": "MIT", | ||
], | ||
"sideEffects": false, | ||
"type": "module", | ||
"main": "index.js", | ||
"types": "index.d.ts", | ||
"files": [ | ||
"index.js", | ||
"types/index.d.ts", | ||
"lib/" | ||
"lib/", | ||
"index.d.ts", | ||
"index.js" | ||
], | ||
"types": "types/index.d.ts", | ||
"dependencies": { | ||
"camelcase": "^5.0.0", | ||
"chalk": "^3.0.0", | ||
"@types/text-table": "^0.2.2", | ||
"camelcase": "^6.0.0", | ||
"chalk": "^4.0.0", | ||
"chokidar": "^3.0.0", | ||
"fault": "^1.0.2", | ||
"fault": "^2.0.0", | ||
"json5": "^2.0.0", | ||
"minimist": "^1.2.0", | ||
"text-table": "^0.2.0", | ||
"unified-engine": "^8.0.0" | ||
"unified-engine": "^9.0.0" | ||
}, | ||
"devDependencies": { | ||
"bail": "^1.0.0", | ||
"dtslint": "^3.0.0", | ||
"execa": "^4.0.0", | ||
"figures": "^3.0.0", | ||
"nyc": "^15.0.0", | ||
"@types/tape": "^4.13.1", | ||
"@types/touch": "^3.1.2", | ||
"bail": "^2.0.0", | ||
"c8": "^7.0.0", | ||
"execa": "^5.0.0", | ||
"prettier": "^2.0.0", | ||
"remark": "^12.0.0", | ||
"remark-cli": "^8.0.0", | ||
"remark-preset-wooorm": "^7.0.0", | ||
"strip-ansi": "^6.0.0", | ||
"remark": "^13.0.0", | ||
"remark-cli": "^9.0.0", | ||
"remark-preset-wooorm": "^8.0.0", | ||
"rimraf": "^3.0.0", | ||
"strip-ansi": "^7.0.0", | ||
"tape": "^5.0.0", | ||
"touch": "^3.0.0", | ||
"type-coverage": "^2.0.0", | ||
"typescript": "^4.0.0", | ||
"unified": "^9.0.0", | ||
"vfile-reporter-json": "^2.0.0", | ||
"xo": "^0.32.0" | ||
"vfile-reporter-json": "^3.0.0", | ||
"xo": "^0.39.0" | ||
}, | ||
"scripts": { | ||
"format": "remark . -qfo && prettier --write \"**/*.{js,ts}\" && xo --fix --ignore types", | ||
"test-api": "node test", | ||
"test-coverage": "nyc --reporter lcov tape test/index.js", | ||
"test-types": "dtslint types", | ||
"test": "npm run format && npm run test-coverage && npm run test-types" | ||
"build": "rimraf \"lib/**/*.d.ts\" \"test/**/*.d.ts\" && tsc && type-coverage", | ||
"format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix", | ||
"test-api": "node --conditions development test/index.js", | ||
"test-coverage": "c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 --reporter lcov node --conditions development test/index.js", | ||
"test": "npm run build && npm run format && npm run test-coverage" | ||
}, | ||
@@ -74,30 +81,15 @@ "prettier": { | ||
"xo": { | ||
"prettier": true, | ||
"esnext": false, | ||
"rules": { | ||
"unicorn/no-fn-reference-in-iterator": "off", | ||
"unicorn/string-content": "off", | ||
"guard-for-in": "off" | ||
}, | ||
"ignores": [ | ||
"**/*.ts" | ||
] | ||
"prettier": true | ||
}, | ||
"nyc": { | ||
"check-coverage": true, | ||
"lines": 100, | ||
"functions": 100, | ||
"branches": 100 | ||
}, | ||
"remarkConfig": { | ||
"plugins": [ | ||
"preset-wooorm", | ||
[ | ||
"toc", | ||
{ | ||
"heading": "contents" | ||
} | ||
] | ||
"preset-wooorm" | ||
] | ||
}, | ||
"typeCoverage": { | ||
"atLeast": 100, | ||
"detail": true, | ||
"strict": true, | ||
"ignoreCatch": true | ||
} | ||
} |
121
readme.md
@@ -21,2 +21,5 @@ # unified-args | ||
This package is [ESM only](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c): | ||
Node 12+ is needed to use it and it must be `import`ed instead of `require`d. | ||
[npm][]: | ||
@@ -38,21 +41,17 @@ | ||
#!/usr/bin/env node | ||
'use strict' | ||
import {args} from 'unified-args' | ||
import extensions from 'markdown-extensions' | ||
import {remark} from 'remark' | ||
var start = require('unified-args') | ||
var extensions = require('markdown-extensions') | ||
var remark = require('remark') | ||
var pack = require('remark/package.json') | ||
var name = pack.name | ||
start({ | ||
args({ | ||
processor: remark, | ||
name: name, | ||
description: pack.description, | ||
version: pack.version, | ||
pluginPrefix: name, | ||
extensions: extensions, | ||
packageField: name + 'Config', | ||
rcName: '.' + name + 'rc', | ||
ignoreName: '.' + name + 'ignore' | ||
name: 'remark', | ||
description: | ||
'Markdown processor powered by plugins part of the unified collective', | ||
version: '14.0.0', | ||
pluginPrefix: 'remark', | ||
extensions, | ||
packageField: 'remarkConfig', | ||
rcName: '.remarkrc', | ||
ignoreName: '.remarkignore' | ||
}) | ||
@@ -64,3 +63,3 @@ ``` | ||
* [API](#api) | ||
* [`start(configuration)`](#startconfiguration) | ||
* [`args(configuration)`](#argsconfiguration) | ||
* [CLI](#cli) | ||
@@ -99,4 +98,7 @@ * [`--help`](#--help) | ||
### `start(configuration)` | ||
This package exports the following identifiers: `args`. | ||
There is no default export. | ||
### `args(configuration)` | ||
Create a CLI for a [**unified**][unified] processor. | ||
@@ -367,2 +369,3 @@ | ||
cli input.txt --use 'toc=max-depth:3' | ||
cli input.txt --use ./plugin.js | ||
``` | ||
@@ -493,4 +496,2 @@ | ||
###### Note | ||
The [`quiet`][quiet], [`silent`][silent], and [`color`][color] options may not | ||
@@ -626,5 +627,5 @@ work with the used reporter. | ||
[build-badge]: https://img.shields.io/travis/unifiedjs/unified-args.svg | ||
[build-badge]: https://github.com/unifiedjs/unified-args/workflows/main/badge.svg | ||
[build]: https://travis-ci.org/unifiedjs/unified-args | ||
[build]: https://github.com/unifiedjs/unified-args/actions | ||
@@ -645,5 +646,5 @@ [coverage-badge]: https://img.shields.io/codecov/c/github/unifiedjs/unified-args.svg | ||
[chat-badge]: https://img.shields.io/badge/chat-spectrum-7b16ff.svg | ||
[chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg | ||
[chat]: https://spectrum.chat/unified | ||
[chat]: https://github.com/unifiedjs/unified/discussions | ||
@@ -654,7 +655,7 @@ [npm]: https://docs.npmjs.com/cli/install | ||
[contributing]: https://github.com/unifiedjs/.github/blob/master/contributing.md | ||
[contributing]: https://github.com/unifiedjs/.github/blob/HEAD/contributing.md | ||
[support]: https://github.com/unifiedjs/.github/blob/master/support.md | ||
[support]: https://github.com/unifiedjs/.github/blob/HEAD/support.md | ||
[coc]: https://github.com/unifiedjs/.github/blob/master/code-of-conduct.md | ||
[coc]: https://github.com/unifiedjs/.github/blob/HEAD/code-of-conduct.md | ||
@@ -679,67 +680,67 @@ [license]: license | ||
[config-file]: https://github.com/unifiedjs/unified-engine/blob/master/doc/configure.md | ||
[config-file]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/configure.md | ||
[ignore-file]: https://github.com/unifiedjs/unified-engine/blob/master/doc/ignore.md | ||
[ignore-file]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/ignore.md | ||
[description]: https://github.com/unifiedjs/unified#description | ||
[engine-processor]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsprocessor | ||
[engine-processor]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsprocessor | ||
[engine-files]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsfiles | ||
[engine-files]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsfiles | ||
[engine-output]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsoutput | ||
[engine-output]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsoutput | ||
[engine-rc-path]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsrcpath | ||
[engine-rc-path]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsrcpath | ||
[engine-rc-name]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsrcname | ||
[engine-rc-name]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsrcname | ||
[engine-package-field]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionspackagefield | ||
[engine-package-field]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionspackagefield | ||
[engine-ignore-name]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsignorename | ||
[engine-ignore-name]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsignorename | ||
[engine-ignore-path]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsignorepath | ||
[engine-ignore-path]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsignorepath | ||
[engine-ignore-path-resolve-from]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsignorepathresolvefrom | ||
[engine-ignore-path-resolve-from]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsignorepathresolvefrom | ||
[engine-ignore-patterns]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsignorepatterns | ||
[engine-ignore-patterns]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsignorepatterns | ||
[engine-silently-ignore]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionssilentlyignore | ||
[engine-silently-ignore]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionssilentlyignore | ||
[engine-reporter]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsreporter | ||
[engine-reporter]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsreporter | ||
[engine-reporter-options]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsreporteroptions | ||
[engine-reporter-options]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsreporteroptions | ||
[engine-settings]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionssettings | ||
[engine-settings]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionssettings | ||
[engine-plugins]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsplugins | ||
[engine-plugins]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsplugins | ||
[engine-plugin-prefix]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionspluginprefix | ||
[engine-plugin-prefix]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionspluginprefix | ||
[engine-extensions]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsextensions | ||
[engine-extensions]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsextensions | ||
[engine-tree]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionstree | ||
[engine-tree]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionstree | ||
[engine-tree-in]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionstreein | ||
[engine-tree-in]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionstreein | ||
[engine-tree-out]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionstreeout | ||
[engine-tree-out]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionstreeout | ||
[engine-inspect]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsinspect | ||
[engine-inspect]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsinspect | ||
[engine-quiet]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsquiet | ||
[engine-quiet]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsquiet | ||
[engine-silent]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsilent | ||
[engine-silent]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsilent | ||
[engine-frail]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsfrail | ||
[engine-frail]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsfrail | ||
[engine-file-path]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsfilepath | ||
[engine-file-path]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsfilepath | ||
[engine-out]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsout | ||
[engine-out]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsout | ||
[engine-color]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionscolor | ||
[engine-color]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionscolor | ||
[engine-detect-config]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsdetectconfig | ||
[engine-detect-config]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsdetectconfig | ||
[engine-detect-ignore]: https://github.com/unifiedjs/unified-engine/blob/master/doc/options.md#optionsdetectignore | ||
[engine-detect-ignore]: https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/options.md#optionsdetectignore | ||
[configured]: #startconfiguration | ||
[configured]: #argsconfiguration | ||
@@ -746,0 +747,0 @@ [usage]: #use |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
44460
11
800
772
Yes
9
18
1
+ Added@types/text-table@^0.2.2
+ Added@types/concat-stream@2.0.3(transitive)
+ Added@types/debug@4.1.12(transitive)
+ Added@types/is-empty@1.2.3(transitive)
+ Added@types/js-yaml@4.0.9(transitive)
+ Added@types/ms@0.7.34(transitive)
+ Added@types/node@17.0.45(transitive)
+ Added@types/supports-color@8.1.3(transitive)
+ Added@types/text-table@0.2.5(transitive)
+ Addedansi-regex@6.1.0(transitive)
+ Addedargparse@2.0.1(transitive)
+ Addedbuiltins@4.1.0(transitive)
+ Addedcamelcase@6.3.0(transitive)
+ Addedchalk@4.1.2(transitive)
+ Addedeastasianwidth@0.2.0(transitive)
+ Addedemoji-regex@9.2.2(transitive)
+ Addedfault@2.0.1(transitive)
+ Addedimport-meta-resolve@1.1.1(transitive)
+ Addedis-plain-obj@4.1.0(transitive)
+ Addedjs-yaml@4.1.0(transitive)
+ Addedlines-and-columns@2.0.4(transitive)
+ Addedload-plugin@4.0.1(transitive)
+ Addedparse-json@6.0.2(transitive)
+ Addedsemver@7.6.3(transitive)
+ Addedstring-width@5.1.2(transitive)
+ Addedstrip-ansi@7.1.0(transitive)
+ Addedsupports-color@9.4.0(transitive)
+ Addedto-vfile@7.2.4(transitive)
+ Addedtrough@2.2.0(transitive)
+ Addedunified-engine@9.1.1(transitive)
+ Addedunist-util-inspect@7.0.2(transitive)
+ Addedunist-util-stringify-position@3.0.3(transitive)
+ Addedvfile@5.3.7(transitive)
+ Addedvfile-message@3.1.4(transitive)
+ Addedvfile-reporter@7.0.5(transitive)
+ Addedvfile-sort@3.0.1(transitive)
+ Addedvfile-statistics@2.0.1(transitive)
- Removedansi-regex@5.0.1(transitive)
- Removedargparse@1.0.10(transitive)
- Removedcamelcase@5.3.1(transitive)
- Removedchalk@3.0.0(transitive)
- Removedemoji-regex@8.0.0(transitive)
- Removedescape-string-regexp@1.0.5(transitive)
- Removedesprima@4.0.1(transitive)
- Removedfault@1.0.4(transitive)
- Removedfigures@3.2.0(transitive)
- Removedhas-flag@3.0.0(transitive)
- Removedis-fullwidth-code-point@3.0.0(transitive)
- Removedis-plain-obj@2.1.0(transitive)
- Removedjs-yaml@3.14.1(transitive)
- Removedlines-and-columns@1.2.4(transitive)
- Removedload-plugin@3.0.0(transitive)
- Removedparse-json@5.2.0(transitive)
- Removedrepeat-string@1.6.1(transitive)
- Removedresolve-from@5.0.0(transitive)
- Removedsprintf-js@1.0.3(transitive)
- Removedstring-width@4.2.3(transitive)
- Removedstrip-ansi@6.0.1(transitive)
- Removedsupports-color@6.1.0(transitive)
- Removedto-vfile@6.1.0(transitive)
- Removedtrough@1.0.5(transitive)
- Removedunified-engine@8.2.0(transitive)
- Removedunist-util-inspect@5.0.1(transitive)
- Removedunist-util-stringify-position@2.0.3(transitive)
- Removedvfile@4.2.1(transitive)
- Removedvfile-message@2.0.4(transitive)
- Removedvfile-reporter@6.0.2(transitive)
- Removedvfile-sort@2.2.2(transitive)
- Removedvfile-statistics@1.1.4(transitive)
Updatedcamelcase@^6.0.0
Updatedchalk@^4.0.0
Updatedfault@^2.0.0
Updatedunified-engine@^9.0.0