Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

each-package

Package Overview
Dependencies
Maintainers
1
Versions
237
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

each-package - npm Package Compare versions

Comparing version
1.4.8
to
1.4.9
+12
-27
dist/cjs/cli.js

@@ -15,5 +15,5 @@ "use strict";

var _path = /*#__PURE__*/ _interop_require_default(require("path"));
var _spawnterm = require("spawn-term");
var _url = /*#__PURE__*/ _interop_require_default(require("url"));
var _indexts = /*#__PURE__*/ _interop_require_default(require("./index.js"));
var _loadSpawnTermts = /*#__PURE__*/ _interop_require_default(require("./lib/loadSpawnTerm.js"));
function _interop_require_default(obj) {

@@ -101,31 +101,16 @@ return obj && obj.__esModule ? obj : {

if (!options.silent) {
// Load spawn-term to get figures/formatArguments for output formatting
(0, _loadSpawnTermts.default)(function(_loadErr, mod) {
var _ref = mod || {
createSession: undefined,
figures: {
tick: '✓',
cross: '✗'
},
formatArguments: function(x) {
return x;
}
}, createSession = _ref.createSession, figures = _ref.figures, formatArguments = _ref.formatArguments;
if (!createSession) {
console.log('\n======================');
results.forEach(function(res) {
console.log("".concat(res.error ? figures.cross : figures.tick, " ").concat(res.path).concat(res.error ? " Error: ".concat(res.error.message) : ''));
});
console.log('\n----------------------');
console.log("".concat(name, " ").concat(formatArguments(args)));
console.log("".concat(figures.tick, " ").concat(results.length - errors.length, " succeeded"));
if (errors.length) console.log("".concat(figures.cross, " ").concat(errors.length, " failed"));
}
(0, _exit.default)(err || errors.length ? ERROR_CODE : 0);
});
} else {
(0, _exit.default)(err || errors.length ? ERROR_CODE : 0);
if (!_spawnterm.createSession) {
console.log('\n======================');
results.forEach(function(res) {
console.log("".concat(res.error ? _spawnterm.figures.cross : _spawnterm.figures.tick, " ").concat(res.path).concat(res.error ? " Error: ".concat(res.error.message) : ''));
});
console.log('\n----------------------');
console.log("".concat(name, " ").concat((0, _spawnterm.formatArguments)(args)));
console.log("".concat(_spawnterm.figures.tick, " ").concat(results.length - errors.length, " succeeded"));
if (errors.length) console.log("".concat(_spawnterm.figures.cross, " ").concat(errors.length, " failed"));
}
}
(0, _exit.default)(err || errors.length ? ERROR_CODE : 0);
});
};
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }

@@ -1,1 +0,1 @@

{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/cli.ts"],"sourcesContent":["import exit from 'exit';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport path from 'path';\nimport url from 'url';\nimport run from './index.ts';\nimport loadSpawnTerm from './lib/loadSpawnTerm.ts';\n\nconst ERROR_CODE = 5;\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\nimport type { EachError, EachOptions, EachResult } from './types.ts';\n\nfunction getVersion(): string {\n const packagePath = path.resolve(__dirname, '..', '..', 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8'));\n return packageJson.version;\n}\n\nfunction showHelp(name: string): void {\n const version = getVersion();\n console.log(`${name} v${version}`);\n console.log('');\n console.log(`Usage: ${name} [options] <command> [args...]\n\nRun commands in each package folder within a monorepo.\n\nOptions:\n -d, --depth <n> Maximum depth to search for packages (default: Infinity)\n -c, --concurrency <n> Number of packages to process in parallel (default: Infinity)\n -t, --topological Process packages in topological order based on dependencies\n -fd, --fail-dependents Skip packages whose dependencies failed (use with -t)\n -e, --expanded Use expanded terminal UI for output\n -s, --streaming Stream output as it happens\n -si, --silent Suppress output\n -p, --private Include private packages\n -i, --ignore <pattern> Ignore packages matching pattern (default: node_modules,.git)\n -r, --root Include the root package\n -I, --interactive Enable interactive mode (default: true)\n -v, --version Show version number\n -h, --help Show this help message\n\nExamples:\n ${name} npm install Run 'npm install' in each package\n ${name} -t npm test Run 'npm test' in topological order\n ${name} -c 4 npm build Run 'npm build' with concurrency of 4`);\n}\n\nexport default (argv: string[], name: string): undefined => {\n const options = getopts(argv, {\n alias: { depth: 'd', concurrency: 'c', topological: 't', failDependents: 'fd', expanded: 'e', streaming: 's', silent: 'si', private: 'p', ignore: 'i', root: 'r', interactive: 'I', version: 'v', help: 'h' },\n boolean: ['topological', 'failDependents', 'expanded', 'streaming', 'silent', 'private', 'root', 'interactive', 'version', 'help'],\n default: { depth: Infinity, concurrency: Infinity, interactive: true },\n stopEarly: true,\n });\n\n if (options.version) {\n console.log(getVersion());\n exit(0);\n return;\n }\n\n if (options.help) {\n showHelp(name);\n exit(0);\n return;\n }\n\n const args = options._;\n if (args.length === 0) {\n console.log(`Missing command. Example usage: ${name} [command]`);\n exit(ERROR_CODE);\n return;\n }\n\n options.stdio = 'inherit'; // pass through stdio\n run(args[0], args.slice(1), options as EachOptions, (err?: EachError, results?: EachResult[]): undefined => {\n if (err && !err.results) {\n console.log(err.message);\n exit(ERROR_CODE);\n return;\n }\n if (err) results = err.results;\n const errors = results.filter((result) => !!result.error);\n\n if (!options.silent) {\n // Load spawn-term to get figures/formatArguments for output formatting\n loadSpawnTerm((_loadErr, mod) => {\n const { createSession, figures, formatArguments } = mod || { createSession: undefined, figures: { tick: '✓', cross: '✗' }, formatArguments: (x: string[]) => x };\n if (!createSession) {\n console.log('\\n======================');\n results.forEach((res) => {\n console.log(`${res.error ? figures.cross : figures.tick} ${res.path}${res.error ? ` Error: ${res.error.message}` : ''}`);\n });\n console.log('\\n----------------------');\n console.log(`${name} ${formatArguments(args)}`);\n console.log(`${figures.tick} ${results.length - errors.length} succeeded`);\n if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);\n }\n exit(err || errors.length ? ERROR_CODE : 0);\n });\n } else {\n exit(err || errors.length ? ERROR_CODE : 0);\n }\n });\n};\n"],"names":["ERROR_CODE","__dirname","path","dirname","__filename","url","fileURLToPath","getVersion","packagePath","resolve","packageJson","JSON","parse","fs","readFileSync","version","showHelp","name","console","log","argv","options","getopts","alias","depth","concurrency","topological","failDependents","expanded","streaming","silent","private","ignore","root","interactive","help","boolean","default","Infinity","stopEarly","exit","args","_","length","stdio","run","slice","err","results","message","errors","filter","result","error","loadSpawnTerm","_loadErr","mod","createSession","undefined","figures","tick","cross","formatArguments","x","forEach","res"],"mappings":"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"}
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/cli.ts"],"sourcesContent":["import exit from 'exit';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport path from 'path';\nimport { createSession, figures, formatArguments } from 'spawn-term';\nimport url from 'url';\nimport run from './index.ts';\n\nconst ERROR_CODE = 5;\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\nimport type { EachError, EachOptions, EachResult } from './types.ts';\n\nfunction getVersion(): string {\n const packagePath = path.resolve(__dirname, '..', '..', 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8'));\n return packageJson.version;\n}\n\nfunction showHelp(name: string): void {\n const version = getVersion();\n console.log(`${name} v${version}`);\n console.log('');\n console.log(`Usage: ${name} [options] <command> [args...]\n\nRun commands in each package folder within a monorepo.\n\nOptions:\n -d, --depth <n> Maximum depth to search for packages (default: Infinity)\n -c, --concurrency <n> Number of packages to process in parallel (default: Infinity)\n -t, --topological Process packages in topological order based on dependencies\n -fd, --fail-dependents Skip packages whose dependencies failed (use with -t)\n -e, --expanded Use expanded terminal UI for output\n -s, --streaming Stream output as it happens\n -si, --silent Suppress output\n -p, --private Include private packages\n -i, --ignore <pattern> Ignore packages matching pattern (default: node_modules,.git)\n -r, --root Include the root package\n -I, --interactive Enable interactive mode (default: true)\n -v, --version Show version number\n -h, --help Show this help message\n\nExamples:\n ${name} npm install Run 'npm install' in each package\n ${name} -t npm test Run 'npm test' in topological order\n ${name} -c 4 npm build Run 'npm build' with concurrency of 4`);\n}\n\nexport default (argv: string[], name: string): undefined => {\n const options = getopts(argv, {\n alias: { depth: 'd', concurrency: 'c', topological: 't', failDependents: 'fd', expanded: 'e', streaming: 's', silent: 'si', private: 'p', ignore: 'i', root: 'r', interactive: 'I', version: 'v', help: 'h' },\n boolean: ['topological', 'failDependents', 'expanded', 'streaming', 'silent', 'private', 'root', 'interactive', 'version', 'help'],\n default: { depth: Infinity, concurrency: Infinity, interactive: true },\n stopEarly: true,\n });\n\n if (options.version) {\n console.log(getVersion());\n exit(0);\n return;\n }\n\n if (options.help) {\n showHelp(name);\n exit(0);\n return;\n }\n\n const args = options._;\n if (args.length === 0) {\n console.log(`Missing command. Example usage: ${name} [command]`);\n exit(ERROR_CODE);\n return;\n }\n\n options.stdio = 'inherit'; // pass through stdio\n run(args[0], args.slice(1), options as EachOptions, (err?: EachError, results?: EachResult[]): undefined => {\n if (err && !err.results) {\n console.log(err.message);\n exit(ERROR_CODE);\n return;\n }\n if (err) results = err.results;\n const errors = results.filter((result) => !!result.error);\n\n if (!options.silent) {\n if (!createSession) {\n console.log('\\n======================');\n results.forEach((res) => {\n console.log(`${res.error ? figures.cross : figures.tick} ${res.path}${res.error ? ` Error: ${res.error.message}` : ''}`);\n });\n console.log('\\n----------------------');\n console.log(`${name} ${formatArguments(args)}`);\n console.log(`${figures.tick} ${results.length - errors.length} succeeded`);\n if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);\n }\n }\n exit(err || errors.length ? ERROR_CODE : 0);\n });\n};\n"],"names":["ERROR_CODE","__dirname","path","dirname","__filename","url","fileURLToPath","getVersion","packagePath","resolve","packageJson","JSON","parse","fs","readFileSync","version","showHelp","name","console","log","argv","options","getopts","alias","depth","concurrency","topological","failDependents","expanded","streaming","silent","private","ignore","root","interactive","help","boolean","default","Infinity","stopEarly","exit","args","_","length","stdio","run","slice","err","results","message","errors","filter","result","error","createSession","forEach","res","figures","cross","tick","formatArguments"],"mappings":"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"}

@@ -14,4 +14,4 @@ "use strict";

var _spawnstreaming = /*#__PURE__*/ _interop_require_default(require("spawn-streaming"));
var _spawnterm = require("spawn-term");
var _topologicalscheduler = /*#__PURE__*/ _interop_require_default(require("topological-scheduler"));
var _loadSpawnTermts = /*#__PURE__*/ _interop_require_default(require("./lib/loadSpawnTerm.js"));
var _packageLayersts = /*#__PURE__*/ _interop_require_default(require("./lib/packageLayers.js"));

@@ -76,116 +76,111 @@ function _define_property(obj, key, value) {

function worker(command, args, options, callback) {
// Load spawn-term lazily
(0, _loadSpawnTermts.default)(function(loadErr, mod) {
if (loadErr) return callback(loadErr);
var createSession = mod.createSession;
var depth = typeof options.depth === 'undefined' ? Infinity : options.depth;
if (depth !== Infinity) depth++; // depth is relative to first level of packages
var concurrency = typeof options.concurrency === 'undefined' ? 1 : options.concurrency;
(0, _packageLayersts.default)(options, function(err, result) {
if (err) return callback(err);
// Create session once for all processes (only when interactive is explicitly enabled, e.g. by CLI)
var interactive = !!options.interactive;
var quotedArgs = args.map(function(arg) {
return /\s/.test(arg) ? '"'.concat(arg, '"') : arg;
});
var session = createSession && !options.streaming && interactive ? createSession({
header: "".concat(process.cwd(), "> ").concat(command, " ").concat(quotedArgs.join(' ')),
showStatusBar: true,
interactive: interactive
}) : null;
// Show command header when not using terminal session (unless silent)
if (!session && !options.silent) {
console.log("$ ".concat(command, " ").concat(quotedArgs.join(' ')));
var depth = typeof options.depth === 'undefined' ? Infinity : options.depth;
if (depth !== Infinity) depth++; // depth is relative to first level of packages
var concurrency = typeof options.concurrency === 'undefined' ? 1 : options.concurrency;
(0, _packageLayersts.default)(options, function(err, result) {
if (err) return callback(err);
// Create session once for all processes (only when interactive is explicitly enabled, e.g. by CLI)
var interactive = !!options.interactive;
var quotedArgs = args.map(function(arg) {
return /\s/.test(arg) ? '"'.concat(arg, '"') : arg;
});
var session = _spawnterm.createSession && !options.streaming && interactive ? (0, _spawnterm.createSession)({
header: "".concat(process.cwd(), "> ").concat(command, " ").concat(quotedArgs.join(' ')),
showStatusBar: true,
interactive: interactive
}) : null;
// Show command header when not using terminal session (unless silent)
if (!session && !options.silent) {
console.log("$ ".concat(command, " ").concat(quotedArgs.join(' ')));
}
var results = [];
var finalize = function(err) {
if (err) err.results = results;
if (session) {
session.waitAndClose(function() {
err ? callback(err) : callback(null, results);
});
} else {
err ? callback(err) : callback(null, results);
}
var results = [];
var finalize = function(err) {
if (err) err.results = results;
if (session) {
session.waitAndClose(function() {
err ? callback(err) : callback(null, results);
});
} else {
err ? callback(err) : callback(null, results);
};
// Non-topological mode: layers is PackageEntry[][]
if (Array.isArray(result)) {
var layers = result;
var processLayers = function(layers, done) {
if (layers.length === 0) {
done();
return;
}
};
// Non-topological mode: layers is PackageEntry[][]
if (Array.isArray(result)) {
var layers = result;
var processLayers = function(layers, done) {
if (layers.length === 0) {
done();
return;
}
var layerEntries = layers.shift();
var queue = new _queuecb.default(concurrency);
layerEntries.forEach(function(entry) {
queue.defer(function(cb) {
var spawnOptions = _object_spread_props(_object_spread({}, options), {
cwd: _path.default.dirname(entry.fullPath)
var layerEntries = layers.shift();
var queue = new _queuecb.default(concurrency);
layerEntries.forEach(function(entry) {
queue.defer(function(cb) {
var spawnOptions = _object_spread_props(_object_spread({}, options), {
cwd: _path.default.dirname(entry.fullPath)
});
var prefix = _path.default.dirname(entry.path);
var next = function(err, res) {
if (err && err.message.indexOf('ExperimentalWarning') >= 0) {
res = err;
err = null;
}
results.push({
path: prefix,
command: command,
args: args,
error: err,
result: res
});
var prefix = _path.default.dirname(entry.path);
var next = function(err, res) {
if (err && err.message.indexOf('ExperimentalWarning') >= 0) {
res = err;
err = null;
}
results.push({
path: prefix,
command: command,
args: args,
error: err,
result: res
});
cb();
};
if (session) session.spawn(command, args, spawnOptions, {
group: prefix,
expanded: options.expanded
}, next);
else (0, _spawnstreaming.default)(command, args, spawnOptions, {
prefix: prefix
}, next);
});
cb();
};
if (session) session.spawn(command, args, spawnOptions, {
group: prefix,
expanded: options.expanded
}, next);
else (0, _spawnstreaming.default)(command, args, spawnOptions, {
prefix: prefix
}, next);
});
queue.await(function(err) {
return err ? done(err) : processLayers(layers, done);
});
};
processLayers(layers, finalize);
return;
}
// Topological mode: use topological-scheduler
var graph = result;
(0, _topologicalscheduler.default)(graph, function(entry, _id, cb) {
var spawnOptions = _object_spread_props(_object_spread({}, options), {
cwd: _path.default.dirname(entry.fullPath)
});
var prefix = _path.default.dirname(entry.path);
var next = function(err, res) {
if (err && err.message.indexOf('ExperimentalWarning') >= 0) {
res = err;
err = null;
}
results.push({
path: prefix,
command: command,
args: args,
error: err,
result: res
});
cb(err, res);
};
if (session) session.spawn(command, args, spawnOptions, {
group: prefix,
expanded: options.expanded
}, next);
else (0, _spawnstreaming.default)(command, args, spawnOptions, {
prefix: prefix
}, next);
}, {
concurrency: concurrency,
failDependents: options.failDependents
}, function(err) {
finalize(err);
queue.await(function(err) {
return err ? done(err) : processLayers(layers, done);
});
};
processLayers(layers, finalize);
return;
}
// Topological mode: use topological-scheduler
var graph = result;
(0, _topologicalscheduler.default)(graph, function(entry, _id, cb) {
var spawnOptions = _object_spread_props(_object_spread({}, options), {
cwd: _path.default.dirname(entry.fullPath)
});
var prefix = _path.default.dirname(entry.path);
var next = function(err, res) {
if (err && err.message.indexOf('ExperimentalWarning') >= 0) {
res = err;
err = null;
}
results.push({
path: prefix,
command: command,
args: args,
error: err,
result: res
});
cb(err, res);
};
if (session) session.spawn(command, args, spawnOptions, {
group: prefix,
expanded: options.expanded
}, next);
else (0, _spawnstreaming.default)(command, args, spawnOptions, {
prefix: prefix
}, next);
}, {
concurrency: concurrency,
failDependents: options.failDependents
}, function(err) {
finalize(err);
});

@@ -192,0 +187,0 @@ });

@@ -1,1 +0,1 @@

{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/worker.ts"],"sourcesContent":["import type { SpawnResult } from 'cross-spawn-cb';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport spawnStreaming from 'spawn-streaming';\nimport schedule, { type DependencyGraph } from 'topological-scheduler';\nimport loadSpawnTerm from './lib/loadSpawnTerm.ts';\nimport packageLayers, { type PackageEntry } from './lib/packageLayers.ts';\n\nimport type { EachCallback, EachError, EachOptions, EachResult } from './types.ts';\n\nexport default function worker(command: string, args: string[], options: EachOptions, callback: EachCallback): undefined {\n // Load spawn-term lazily\n loadSpawnTerm((loadErr, mod) => {\n if (loadErr) return callback(loadErr);\n const createSession = mod.createSession;\n\n let depth = typeof options.depth === 'undefined' ? Infinity : options.depth;\n if (depth !== Infinity) depth++; // depth is relative to first level of packages\n const concurrency = typeof options.concurrency === 'undefined' ? 1 : options.concurrency;\n\n packageLayers(options, (err, result) => {\n if (err) return callback(err);\n\n // Create session once for all processes (only when interactive is explicitly enabled, e.g. by CLI)\n const interactive = !!options.interactive;\n const quotedArgs = args.map((arg) => (/\\s/.test(arg) ? `\"${arg}\"` : arg));\n const session = createSession && !options.streaming && interactive ? createSession({ header: `${process.cwd()}> ${command} ${quotedArgs.join(' ')}`, showStatusBar: true, interactive }) : null;\n\n // Show command header when not using terminal session (unless silent)\n if (!session && !options.silent) {\n console.log(`$ ${command} ${quotedArgs.join(' ')}`);\n }\n\n const results: EachResult[] = [];\n\n const finalize = (err?: Error): void => {\n if (err) (err as EachError).results = results;\n if (session) {\n session.waitAndClose(() => {\n err ? callback(err) : callback(null, results);\n });\n } else {\n err ? callback(err) : callback(null, results);\n }\n };\n\n // Non-topological mode: layers is PackageEntry[][]\n if (Array.isArray(result)) {\n const layers = result as PackageEntry[][];\n const processLayers = (layers: PackageEntry[][], done: (err?: Error) => void): void => {\n if (layers.length === 0) {\n done();\n return;\n }\n const layerEntries = layers.shift();\n\n const queue = new Queue(concurrency);\n layerEntries.forEach((entry) => {\n queue.defer((cb: () => void) => {\n const spawnOptions = { ...options, cwd: path.dirname(entry.fullPath) };\n const prefix = path.dirname(entry.path);\n\n const next = (err?: Error, res?: SpawnResult): undefined => {\n if (err && err.message.indexOf('ExperimentalWarning') >= 0) {\n res = err as unknown as SpawnResult;\n err = null;\n }\n\n results.push({ path: prefix, command, args, error: err, result: res });\n cb();\n };\n\n if (session) session.spawn(command, args, spawnOptions, { group: prefix, expanded: options.expanded }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n });\n });\n\n queue.await((err: Error) => (err ? done(err) : processLayers(layers, done)));\n };\n\n processLayers(layers, finalize);\n return;\n }\n\n // Topological mode: use topological-scheduler\n const graph = result as DependencyGraph<PackageEntry>;\n\n schedule(\n graph,\n (entry, _id, cb) => {\n const spawnOptions = { ...options, cwd: path.dirname(entry.fullPath) };\n const prefix = path.dirname(entry.path);\n\n const next = (err?: Error, res?: SpawnResult): undefined => {\n if (err && err.message.indexOf('ExperimentalWarning') >= 0) {\n res = err as unknown as SpawnResult;\n err = null;\n }\n\n results.push({ path: prefix, command, args, error: err, result: res });\n cb(err, res);\n };\n\n if (session) session.spawn(command, args, spawnOptions, { group: prefix, expanded: options.expanded }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n },\n { concurrency, failDependents: options.failDependents },\n (err) => {\n finalize(err);\n }\n );\n });\n });\n}\n"],"names":["worker","command","args","options","callback","loadSpawnTerm","loadErr","mod","createSession","depth","Infinity","concurrency","packageLayers","err","result","interactive","quotedArgs","map","arg","test","session","streaming","header","process","cwd","join","showStatusBar","silent","console","log","results","finalize","waitAndClose","Array","isArray","layers","processLayers","done","length","layerEntries","shift","queue","Queue","forEach","entry","defer","cb","spawnOptions","path","dirname","fullPath","prefix","next","res","message","indexOf","push","error","spawn","group","expanded","spawnStreaming","await","graph","schedule","_id","failDependents"],"mappings":"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"}
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/worker.ts"],"sourcesContent":["import type { SpawnResult } from 'cross-spawn-cb';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport spawnStreaming from 'spawn-streaming';\nimport { createSession } from 'spawn-term';\nimport schedule, { type DependencyGraph } from 'topological-scheduler';\nimport packageLayers, { type PackageEntry } from './lib/packageLayers.ts';\n\nimport type { EachCallback, EachError, EachOptions, EachResult } from './types.ts';\n\nexport default function worker(command: string, args: string[], options: EachOptions, callback: EachCallback): undefined {\n let depth = typeof options.depth === 'undefined' ? Infinity : options.depth;\n if (depth !== Infinity) depth++; // depth is relative to first level of packages\n const concurrency = typeof options.concurrency === 'undefined' ? 1 : options.concurrency;\n\n packageLayers(options, (err, result) => {\n if (err) return callback(err);\n\n // Create session once for all processes (only when interactive is explicitly enabled, e.g. by CLI)\n const interactive = !!options.interactive;\n const quotedArgs = args.map((arg) => (/\\s/.test(arg) ? `\"${arg}\"` : arg));\n const session = createSession && !options.streaming && interactive ? createSession({ header: `${process.cwd()}> ${command} ${quotedArgs.join(' ')}`, showStatusBar: true, interactive }) : null;\n\n // Show command header when not using terminal session (unless silent)\n if (!session && !options.silent) {\n console.log(`$ ${command} ${quotedArgs.join(' ')}`);\n }\n\n const results: EachResult[] = [];\n\n const finalize = (err?: Error): void => {\n if (err) (err as EachError).results = results;\n if (session) {\n session.waitAndClose(() => {\n err ? callback(err) : callback(null, results);\n });\n } else {\n err ? callback(err) : callback(null, results);\n }\n };\n\n // Non-topological mode: layers is PackageEntry[][]\n if (Array.isArray(result)) {\n const layers = result as PackageEntry[][];\n const processLayers = (layers: PackageEntry[][], done: (err?: Error) => void): void => {\n if (layers.length === 0) {\n done();\n return;\n }\n const layerEntries = layers.shift();\n\n const queue = new Queue(concurrency);\n layerEntries.forEach((entry) => {\n queue.defer((cb: () => void) => {\n const spawnOptions = { ...options, cwd: path.dirname(entry.fullPath) };\n const prefix = path.dirname(entry.path);\n\n const next = (err?: Error, res?: SpawnResult): undefined => {\n if (err && err.message.indexOf('ExperimentalWarning') >= 0) {\n res = err as unknown as SpawnResult;\n err = null;\n }\n\n results.push({ path: prefix, command, args, error: err, result: res });\n cb();\n };\n\n if (session) session.spawn(command, args, spawnOptions, { group: prefix, expanded: options.expanded }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n });\n });\n\n queue.await((err: Error) => (err ? done(err) : processLayers(layers, done)));\n };\n\n processLayers(layers, finalize);\n return;\n }\n\n // Topological mode: use topological-scheduler\n const graph = result as DependencyGraph<PackageEntry>;\n\n schedule(\n graph,\n (entry, _id, cb) => {\n const spawnOptions = { ...options, cwd: path.dirname(entry.fullPath) };\n const prefix = path.dirname(entry.path);\n\n const next = (err?: Error, res?: SpawnResult): undefined => {\n if (err && err.message.indexOf('ExperimentalWarning') >= 0) {\n res = err as unknown as SpawnResult;\n err = null;\n }\n\n results.push({ path: prefix, command, args, error: err, result: res });\n cb(err, res);\n };\n\n if (session) session.spawn(command, args, spawnOptions, { group: prefix, expanded: options.expanded }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n },\n { concurrency, failDependents: options.failDependents },\n (err) => {\n finalize(err);\n }\n );\n });\n}\n"],"names":["worker","command","args","options","callback","depth","Infinity","concurrency","packageLayers","err","result","interactive","quotedArgs","map","arg","test","session","createSession","streaming","header","process","cwd","join","showStatusBar","silent","console","log","results","finalize","waitAndClose","Array","isArray","layers","processLayers","done","length","layerEntries","shift","queue","Queue","forEach","entry","defer","cb","spawnOptions","path","dirname","fullPath","prefix","next","res","message","indexOf","push","error","spawn","group","expanded","spawnStreaming","await","graph","schedule","_id","failDependents"],"mappings":"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"}

@@ -5,5 +5,5 @@ import exit from 'exit';

import path from 'path';
import { createSession, figures, formatArguments } from 'spawn-term';
import url from 'url';
import run from './index.js';
import loadSpawnTerm from './lib/loadSpawnTerm.js';
const ERROR_CODE = 5;

@@ -106,28 +106,15 @@ const __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));

if (!options.silent) {
// Load spawn-term to get figures/formatArguments for output formatting
loadSpawnTerm((_loadErr, mod)=>{
const { createSession, figures, formatArguments } = mod || {
createSession: undefined,
figures: {
tick: '✓',
cross: '✗'
},
formatArguments: (x)=>x
};
if (!createSession) {
console.log('\n======================');
results.forEach((res)=>{
console.log(`${res.error ? figures.cross : figures.tick} ${res.path}${res.error ? ` Error: ${res.error.message}` : ''}`);
});
console.log('\n----------------------');
console.log(`${name} ${formatArguments(args)}`);
console.log(`${figures.tick} ${results.length - errors.length} succeeded`);
if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);
}
exit(err || errors.length ? ERROR_CODE : 0);
});
} else {
exit(err || errors.length ? ERROR_CODE : 0);
if (!createSession) {
console.log('\n======================');
results.forEach((res)=>{
console.log(`${res.error ? figures.cross : figures.tick} ${res.path}${res.error ? ` Error: ${res.error.message}` : ''}`);
});
console.log('\n----------------------');
console.log(`${name} ${formatArguments(args)}`);
console.log(`${figures.tick} ${results.length - errors.length} succeeded`);
if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);
}
}
exit(err || errors.length ? ERROR_CODE : 0);
});
});

@@ -1,1 +0,1 @@

{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/cli.ts"],"sourcesContent":["import exit from 'exit';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport path from 'path';\nimport url from 'url';\nimport run from './index.ts';\nimport loadSpawnTerm from './lib/loadSpawnTerm.ts';\n\nconst ERROR_CODE = 5;\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\nimport type { EachError, EachOptions, EachResult } from './types.ts';\n\nfunction getVersion(): string {\n const packagePath = path.resolve(__dirname, '..', '..', 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8'));\n return packageJson.version;\n}\n\nfunction showHelp(name: string): void {\n const version = getVersion();\n console.log(`${name} v${version}`);\n console.log('');\n console.log(`Usage: ${name} [options] <command> [args...]\n\nRun commands in each package folder within a monorepo.\n\nOptions:\n -d, --depth <n> Maximum depth to search for packages (default: Infinity)\n -c, --concurrency <n> Number of packages to process in parallel (default: Infinity)\n -t, --topological Process packages in topological order based on dependencies\n -fd, --fail-dependents Skip packages whose dependencies failed (use with -t)\n -e, --expanded Use expanded terminal UI for output\n -s, --streaming Stream output as it happens\n -si, --silent Suppress output\n -p, --private Include private packages\n -i, --ignore <pattern> Ignore packages matching pattern (default: node_modules,.git)\n -r, --root Include the root package\n -I, --interactive Enable interactive mode (default: true)\n -v, --version Show version number\n -h, --help Show this help message\n\nExamples:\n ${name} npm install Run 'npm install' in each package\n ${name} -t npm test Run 'npm test' in topological order\n ${name} -c 4 npm build Run 'npm build' with concurrency of 4`);\n}\n\nexport default (argv: string[], name: string): undefined => {\n const options = getopts(argv, {\n alias: { depth: 'd', concurrency: 'c', topological: 't', failDependents: 'fd', expanded: 'e', streaming: 's', silent: 'si', private: 'p', ignore: 'i', root: 'r', interactive: 'I', version: 'v', help: 'h' },\n boolean: ['topological', 'failDependents', 'expanded', 'streaming', 'silent', 'private', 'root', 'interactive', 'version', 'help'],\n default: { depth: Infinity, concurrency: Infinity, interactive: true },\n stopEarly: true,\n });\n\n if (options.version) {\n console.log(getVersion());\n exit(0);\n return;\n }\n\n if (options.help) {\n showHelp(name);\n exit(0);\n return;\n }\n\n const args = options._;\n if (args.length === 0) {\n console.log(`Missing command. Example usage: ${name} [command]`);\n exit(ERROR_CODE);\n return;\n }\n\n options.stdio = 'inherit'; // pass through stdio\n run(args[0], args.slice(1), options as EachOptions, (err?: EachError, results?: EachResult[]): undefined => {\n if (err && !err.results) {\n console.log(err.message);\n exit(ERROR_CODE);\n return;\n }\n if (err) results = err.results;\n const errors = results.filter((result) => !!result.error);\n\n if (!options.silent) {\n // Load spawn-term to get figures/formatArguments for output formatting\n loadSpawnTerm((_loadErr, mod) => {\n const { createSession, figures, formatArguments } = mod || { createSession: undefined, figures: { tick: '✓', cross: '✗' }, formatArguments: (x: string[]) => x };\n if (!createSession) {\n console.log('\\n======================');\n results.forEach((res) => {\n console.log(`${res.error ? figures.cross : figures.tick} ${res.path}${res.error ? ` Error: ${res.error.message}` : ''}`);\n });\n console.log('\\n----------------------');\n console.log(`${name} ${formatArguments(args)}`);\n console.log(`${figures.tick} ${results.length - errors.length} succeeded`);\n if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);\n }\n exit(err || errors.length ? ERROR_CODE : 0);\n });\n } else {\n exit(err || errors.length ? ERROR_CODE : 0);\n }\n });\n};\n"],"names":["exit","fs","getopts","path","url","run","loadSpawnTerm","ERROR_CODE","__dirname","dirname","__filename","fileURLToPath","getVersion","packagePath","resolve","packageJson","JSON","parse","readFileSync","version","showHelp","name","console","log","argv","options","alias","depth","concurrency","topological","failDependents","expanded","streaming","silent","private","ignore","root","interactive","help","boolean","default","Infinity","stopEarly","args","_","length","stdio","slice","err","results","message","errors","filter","result","error","_loadErr","mod","createSession","figures","formatArguments","undefined","tick","cross","x","forEach","res"],"mappings":"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"}
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/cli.ts"],"sourcesContent":["import exit from 'exit';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport path from 'path';\nimport { createSession, figures, formatArguments } from 'spawn-term';\nimport url from 'url';\nimport run from './index.ts';\n\nconst ERROR_CODE = 5;\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\nimport type { EachError, EachOptions, EachResult } from './types.ts';\n\nfunction getVersion(): string {\n const packagePath = path.resolve(__dirname, '..', '..', 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8'));\n return packageJson.version;\n}\n\nfunction showHelp(name: string): void {\n const version = getVersion();\n console.log(`${name} v${version}`);\n console.log('');\n console.log(`Usage: ${name} [options] <command> [args...]\n\nRun commands in each package folder within a monorepo.\n\nOptions:\n -d, --depth <n> Maximum depth to search for packages (default: Infinity)\n -c, --concurrency <n> Number of packages to process in parallel (default: Infinity)\n -t, --topological Process packages in topological order based on dependencies\n -fd, --fail-dependents Skip packages whose dependencies failed (use with -t)\n -e, --expanded Use expanded terminal UI for output\n -s, --streaming Stream output as it happens\n -si, --silent Suppress output\n -p, --private Include private packages\n -i, --ignore <pattern> Ignore packages matching pattern (default: node_modules,.git)\n -r, --root Include the root package\n -I, --interactive Enable interactive mode (default: true)\n -v, --version Show version number\n -h, --help Show this help message\n\nExamples:\n ${name} npm install Run 'npm install' in each package\n ${name} -t npm test Run 'npm test' in topological order\n ${name} -c 4 npm build Run 'npm build' with concurrency of 4`);\n}\n\nexport default (argv: string[], name: string): undefined => {\n const options = getopts(argv, {\n alias: { depth: 'd', concurrency: 'c', topological: 't', failDependents: 'fd', expanded: 'e', streaming: 's', silent: 'si', private: 'p', ignore: 'i', root: 'r', interactive: 'I', version: 'v', help: 'h' },\n boolean: ['topological', 'failDependents', 'expanded', 'streaming', 'silent', 'private', 'root', 'interactive', 'version', 'help'],\n default: { depth: Infinity, concurrency: Infinity, interactive: true },\n stopEarly: true,\n });\n\n if (options.version) {\n console.log(getVersion());\n exit(0);\n return;\n }\n\n if (options.help) {\n showHelp(name);\n exit(0);\n return;\n }\n\n const args = options._;\n if (args.length === 0) {\n console.log(`Missing command. Example usage: ${name} [command]`);\n exit(ERROR_CODE);\n return;\n }\n\n options.stdio = 'inherit'; // pass through stdio\n run(args[0], args.slice(1), options as EachOptions, (err?: EachError, results?: EachResult[]): undefined => {\n if (err && !err.results) {\n console.log(err.message);\n exit(ERROR_CODE);\n return;\n }\n if (err) results = err.results;\n const errors = results.filter((result) => !!result.error);\n\n if (!options.silent) {\n if (!createSession) {\n console.log('\\n======================');\n results.forEach((res) => {\n console.log(`${res.error ? figures.cross : figures.tick} ${res.path}${res.error ? ` Error: ${res.error.message}` : ''}`);\n });\n console.log('\\n----------------------');\n console.log(`${name} ${formatArguments(args)}`);\n console.log(`${figures.tick} ${results.length - errors.length} succeeded`);\n if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);\n }\n }\n exit(err || errors.length ? ERROR_CODE : 0);\n });\n};\n"],"names":["exit","fs","getopts","path","createSession","figures","formatArguments","url","run","ERROR_CODE","__dirname","dirname","__filename","fileURLToPath","getVersion","packagePath","resolve","packageJson","JSON","parse","readFileSync","version","showHelp","name","console","log","argv","options","alias","depth","concurrency","topological","failDependents","expanded","streaming","silent","private","ignore","root","interactive","help","boolean","default","Infinity","stopEarly","args","_","length","stdio","slice","err","results","message","errors","filter","result","error","forEach","res","cross","tick"],"mappings":"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"}
import path from 'path';
import Queue from 'queue-cb';
import spawnStreaming from 'spawn-streaming';
import { createSession } from 'spawn-term';
import schedule from 'topological-scheduler';
import loadSpawnTerm from './lib/loadSpawnTerm.js';
import packageLayers from './lib/packageLayers.js';
export default function worker(command, args, options, callback) {
// Load spawn-term lazily
loadSpawnTerm((loadErr, mod)=>{
if (loadErr) return callback(loadErr);
const createSession = mod.createSession;
let depth = typeof options.depth === 'undefined' ? Infinity : options.depth;
if (depth !== Infinity) depth++; // depth is relative to first level of packages
const concurrency = typeof options.concurrency === 'undefined' ? 1 : options.concurrency;
packageLayers(options, (err, result)=>{
if (err) return callback(err);
// Create session once for all processes (only when interactive is explicitly enabled, e.g. by CLI)
const interactive = !!options.interactive;
const quotedArgs = args.map((arg)=>/\s/.test(arg) ? `"${arg}"` : arg);
const session = createSession && !options.streaming && interactive ? createSession({
header: `${process.cwd()}> ${command} ${quotedArgs.join(' ')}`,
showStatusBar: true,
interactive
}) : null;
// Show command header when not using terminal session (unless silent)
if (!session && !options.silent) {
console.log(`$ ${command} ${quotedArgs.join(' ')}`);
let depth = typeof options.depth === 'undefined' ? Infinity : options.depth;
if (depth !== Infinity) depth++; // depth is relative to first level of packages
const concurrency = typeof options.concurrency === 'undefined' ? 1 : options.concurrency;
packageLayers(options, (err, result)=>{
if (err) return callback(err);
// Create session once for all processes (only when interactive is explicitly enabled, e.g. by CLI)
const interactive = !!options.interactive;
const quotedArgs = args.map((arg)=>/\s/.test(arg) ? `"${arg}"` : arg);
const session = createSession && !options.streaming && interactive ? createSession({
header: `${process.cwd()}> ${command} ${quotedArgs.join(' ')}`,
showStatusBar: true,
interactive
}) : null;
// Show command header when not using terminal session (unless silent)
if (!session && !options.silent) {
console.log(`$ ${command} ${quotedArgs.join(' ')}`);
}
const results = [];
const finalize = (err)=>{
if (err) err.results = results;
if (session) {
session.waitAndClose(()=>{
err ? callback(err) : callback(null, results);
});
} else {
err ? callback(err) : callback(null, results);
}
const results = [];
const finalize = (err)=>{
if (err) err.results = results;
if (session) {
session.waitAndClose(()=>{
err ? callback(err) : callback(null, results);
};
// Non-topological mode: layers is PackageEntry[][]
if (Array.isArray(result)) {
const layers = result;
const processLayers = (layers, done)=>{
if (layers.length === 0) {
done();
return;
}
const layerEntries = layers.shift();
const queue = new Queue(concurrency);
layerEntries.forEach((entry)=>{
queue.defer((cb)=>{
const spawnOptions = {
...options,
cwd: path.dirname(entry.fullPath)
};
const prefix = path.dirname(entry.path);
const next = (err, res)=>{
if (err && err.message.indexOf('ExperimentalWarning') >= 0) {
res = err;
err = null;
}
results.push({
path: prefix,
command,
args,
error: err,
result: res
});
cb();
};
if (session) session.spawn(command, args, spawnOptions, {
group: prefix,
expanded: options.expanded
}, next);
else spawnStreaming(command, args, spawnOptions, {
prefix
}, next);
});
} else {
err ? callback(err) : callback(null, results);
});
queue.await((err)=>err ? done(err) : processLayers(layers, done));
};
processLayers(layers, finalize);
return;
}
// Topological mode: use topological-scheduler
const graph = result;
schedule(graph, (entry, _id, cb)=>{
const spawnOptions = {
...options,
cwd: path.dirname(entry.fullPath)
};
const prefix = path.dirname(entry.path);
const next = (err, res)=>{
if (err && err.message.indexOf('ExperimentalWarning') >= 0) {
res = err;
err = null;
}
results.push({
path: prefix,
command,
args,
error: err,
result: res
});
cb(err, res);
};
// Non-topological mode: layers is PackageEntry[][]
if (Array.isArray(result)) {
const layers = result;
const processLayers = (layers, done)=>{
if (layers.length === 0) {
done();
return;
}
const layerEntries = layers.shift();
const queue = new Queue(concurrency);
layerEntries.forEach((entry)=>{
queue.defer((cb)=>{
const spawnOptions = {
...options,
cwd: path.dirname(entry.fullPath)
};
const prefix = path.dirname(entry.path);
const next = (err, res)=>{
if (err && err.message.indexOf('ExperimentalWarning') >= 0) {
res = err;
err = null;
}
results.push({
path: prefix,
command,
args,
error: err,
result: res
});
cb();
};
if (session) session.spawn(command, args, spawnOptions, {
group: prefix,
expanded: options.expanded
}, next);
else spawnStreaming(command, args, spawnOptions, {
prefix
}, next);
});
});
queue.await((err)=>err ? done(err) : processLayers(layers, done));
};
processLayers(layers, finalize);
return;
}
// Topological mode: use topological-scheduler
const graph = result;
schedule(graph, (entry, _id, cb)=>{
const spawnOptions = {
...options,
cwd: path.dirname(entry.fullPath)
};
const prefix = path.dirname(entry.path);
const next = (err, res)=>{
if (err && err.message.indexOf('ExperimentalWarning') >= 0) {
res = err;
err = null;
}
results.push({
path: prefix,
command,
args,
error: err,
result: res
});
cb(err, res);
};
if (session) session.spawn(command, args, spawnOptions, {
group: prefix,
expanded: options.expanded
}, next);
else spawnStreaming(command, args, spawnOptions, {
prefix
}, next);
}, {
concurrency,
failDependents: options.failDependents
}, (err)=>{
finalize(err);
});
if (session) session.spawn(command, args, spawnOptions, {
group: prefix,
expanded: options.expanded
}, next);
else spawnStreaming(command, args, spawnOptions, {
prefix
}, next);
}, {
concurrency,
failDependents: options.failDependents
}, (err)=>{
finalize(err);
});
});
}

@@ -1,1 +0,1 @@

{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/worker.ts"],"sourcesContent":["import type { SpawnResult } from 'cross-spawn-cb';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport spawnStreaming from 'spawn-streaming';\nimport schedule, { type DependencyGraph } from 'topological-scheduler';\nimport loadSpawnTerm from './lib/loadSpawnTerm.ts';\nimport packageLayers, { type PackageEntry } from './lib/packageLayers.ts';\n\nimport type { EachCallback, EachError, EachOptions, EachResult } from './types.ts';\n\nexport default function worker(command: string, args: string[], options: EachOptions, callback: EachCallback): undefined {\n // Load spawn-term lazily\n loadSpawnTerm((loadErr, mod) => {\n if (loadErr) return callback(loadErr);\n const createSession = mod.createSession;\n\n let depth = typeof options.depth === 'undefined' ? Infinity : options.depth;\n if (depth !== Infinity) depth++; // depth is relative to first level of packages\n const concurrency = typeof options.concurrency === 'undefined' ? 1 : options.concurrency;\n\n packageLayers(options, (err, result) => {\n if (err) return callback(err);\n\n // Create session once for all processes (only when interactive is explicitly enabled, e.g. by CLI)\n const interactive = !!options.interactive;\n const quotedArgs = args.map((arg) => (/\\s/.test(arg) ? `\"${arg}\"` : arg));\n const session = createSession && !options.streaming && interactive ? createSession({ header: `${process.cwd()}> ${command} ${quotedArgs.join(' ')}`, showStatusBar: true, interactive }) : null;\n\n // Show command header when not using terminal session (unless silent)\n if (!session && !options.silent) {\n console.log(`$ ${command} ${quotedArgs.join(' ')}`);\n }\n\n const results: EachResult[] = [];\n\n const finalize = (err?: Error): void => {\n if (err) (err as EachError).results = results;\n if (session) {\n session.waitAndClose(() => {\n err ? callback(err) : callback(null, results);\n });\n } else {\n err ? callback(err) : callback(null, results);\n }\n };\n\n // Non-topological mode: layers is PackageEntry[][]\n if (Array.isArray(result)) {\n const layers = result as PackageEntry[][];\n const processLayers = (layers: PackageEntry[][], done: (err?: Error) => void): void => {\n if (layers.length === 0) {\n done();\n return;\n }\n const layerEntries = layers.shift();\n\n const queue = new Queue(concurrency);\n layerEntries.forEach((entry) => {\n queue.defer((cb: () => void) => {\n const spawnOptions = { ...options, cwd: path.dirname(entry.fullPath) };\n const prefix = path.dirname(entry.path);\n\n const next = (err?: Error, res?: SpawnResult): undefined => {\n if (err && err.message.indexOf('ExperimentalWarning') >= 0) {\n res = err as unknown as SpawnResult;\n err = null;\n }\n\n results.push({ path: prefix, command, args, error: err, result: res });\n cb();\n };\n\n if (session) session.spawn(command, args, spawnOptions, { group: prefix, expanded: options.expanded }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n });\n });\n\n queue.await((err: Error) => (err ? done(err) : processLayers(layers, done)));\n };\n\n processLayers(layers, finalize);\n return;\n }\n\n // Topological mode: use topological-scheduler\n const graph = result as DependencyGraph<PackageEntry>;\n\n schedule(\n graph,\n (entry, _id, cb) => {\n const spawnOptions = { ...options, cwd: path.dirname(entry.fullPath) };\n const prefix = path.dirname(entry.path);\n\n const next = (err?: Error, res?: SpawnResult): undefined => {\n if (err && err.message.indexOf('ExperimentalWarning') >= 0) {\n res = err as unknown as SpawnResult;\n err = null;\n }\n\n results.push({ path: prefix, command, args, error: err, result: res });\n cb(err, res);\n };\n\n if (session) session.spawn(command, args, spawnOptions, { group: prefix, expanded: options.expanded }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n },\n { concurrency, failDependents: options.failDependents },\n (err) => {\n finalize(err);\n }\n );\n });\n });\n}\n"],"names":["path","Queue","spawnStreaming","schedule","loadSpawnTerm","packageLayers","worker","command","args","options","callback","loadErr","mod","createSession","depth","Infinity","concurrency","err","result","interactive","quotedArgs","map","arg","test","session","streaming","header","process","cwd","join","showStatusBar","silent","console","log","results","finalize","waitAndClose","Array","isArray","layers","processLayers","done","length","layerEntries","shift","queue","forEach","entry","defer","cb","spawnOptions","dirname","fullPath","prefix","next","res","message","indexOf","push","error","spawn","group","expanded","await","graph","_id","failDependents"],"mappings":"AACA,OAAOA,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,oBAAoB,kBAAkB;AAC7C,OAAOC,cAAwC,wBAAwB;AACvE,OAAOC,mBAAmB,yBAAyB;AACnD,OAAOC,mBAA0C,yBAAyB;AAI1E,eAAe,SAASC,OAAOC,OAAe,EAAEC,IAAc,EAAEC,OAAoB,EAAEC,QAAsB;IAC1G,yBAAyB;IACzBN,cAAc,CAACO,SAASC;QACtB,IAAID,SAAS,OAAOD,SAASC;QAC7B,MAAME,gBAAgBD,IAAIC,aAAa;QAEvC,IAAIC,QAAQ,OAAOL,QAAQK,KAAK,KAAK,cAAcC,WAAWN,QAAQK,KAAK;QAC3E,IAAIA,UAAUC,UAAUD,SAAS,+CAA+C;QAChF,MAAME,cAAc,OAAOP,QAAQO,WAAW,KAAK,cAAc,IAAIP,QAAQO,WAAW;QAExFX,cAAcI,SAAS,CAACQ,KAAKC;YAC3B,IAAID,KAAK,OAAOP,SAASO;YAEzB,mGAAmG;YACnG,MAAME,cAAc,CAAC,CAACV,QAAQU,WAAW;YACzC,MAAMC,aAAaZ,KAAKa,GAAG,CAAC,CAACC,MAAS,KAAKC,IAAI,CAACD,OAAO,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,GAAGA;YACpE,MAAME,UAAUX,iBAAiB,CAACJ,QAAQgB,SAAS,IAAIN,cAAcN,cAAc;gBAAEa,QAAQ,GAAGC,QAAQC,GAAG,GAAG,EAAE,EAAErB,QAAQ,CAAC,EAAEa,WAAWS,IAAI,CAAC,MAAM;gBAAEC,eAAe;gBAAMX;YAAY,KAAK;YAE3L,sEAAsE;YACtE,IAAI,CAACK,WAAW,CAACf,QAAQsB,MAAM,EAAE;gBAC/BC,QAAQC,GAAG,CAAC,CAAC,EAAE,EAAE1B,QAAQ,CAAC,EAAEa,WAAWS,IAAI,CAAC,MAAM;YACpD;YAEA,MAAMK,UAAwB,EAAE;YAEhC,MAAMC,WAAW,CAAClB;gBAChB,IAAIA,KAAK,AAACA,IAAkBiB,OAAO,GAAGA;gBACtC,IAAIV,SAAS;oBACXA,QAAQY,YAAY,CAAC;wBACnBnB,MAAMP,SAASO,OAAOP,SAAS,MAAMwB;oBACvC;gBACF,OAAO;oBACLjB,MAAMP,SAASO,OAAOP,SAAS,MAAMwB;gBACvC;YACF;YAEA,mDAAmD;YACnD,IAAIG,MAAMC,OAAO,CAACpB,SAAS;gBACzB,MAAMqB,SAASrB;gBACf,MAAMsB,gBAAgB,CAACD,QAA0BE;oBAC/C,IAAIF,OAAOG,MAAM,KAAK,GAAG;wBACvBD;wBACA;oBACF;oBACA,MAAME,eAAeJ,OAAOK,KAAK;oBAEjC,MAAMC,QAAQ,IAAI5C,MAAMe;oBACxB2B,aAAaG,OAAO,CAAC,CAACC;wBACpBF,MAAMG,KAAK,CAAC,CAACC;4BACX,MAAMC,eAAe;gCAAE,GAAGzC,OAAO;gCAAEmB,KAAK5B,KAAKmD,OAAO,CAACJ,MAAMK,QAAQ;4BAAE;4BACrE,MAAMC,SAASrD,KAAKmD,OAAO,CAACJ,MAAM/C,IAAI;4BAEtC,MAAMsD,OAAO,CAACrC,KAAasC;gCACzB,IAAItC,OAAOA,IAAIuC,OAAO,CAACC,OAAO,CAAC,0BAA0B,GAAG;oCAC1DF,MAAMtC;oCACNA,MAAM;gCACR;gCAEAiB,QAAQwB,IAAI,CAAC;oCAAE1D,MAAMqD;oCAAQ9C;oCAASC;oCAAMmD,OAAO1C;oCAAKC,QAAQqC;gCAAI;gCACpEN;4BACF;4BAEA,IAAIzB,SAASA,QAAQoC,KAAK,CAACrD,SAASC,MAAM0C,cAAc;gCAAEW,OAAOR;gCAAQS,UAAUrD,QAAQqD,QAAQ;4BAAC,GAAGR;iCAClGpD,eAAeK,SAASC,MAAM0C,cAAc;gCAAEG;4BAAO,GAAGC;wBAC/D;oBACF;oBAEAT,MAAMkB,KAAK,CAAC,CAAC9C,MAAgBA,MAAMwB,KAAKxB,OAAOuB,cAAcD,QAAQE;gBACvE;gBAEAD,cAAcD,QAAQJ;gBACtB;YACF;YAEA,8CAA8C;YAC9C,MAAM6B,QAAQ9C;YAEdf,SACE6D,OACA,CAACjB,OAAOkB,KAAKhB;gBACX,MAAMC,eAAe;oBAAE,GAAGzC,OAAO;oBAAEmB,KAAK5B,KAAKmD,OAAO,CAACJ,MAAMK,QAAQ;gBAAE;gBACrE,MAAMC,SAASrD,KAAKmD,OAAO,CAACJ,MAAM/C,IAAI;gBAEtC,MAAMsD,OAAO,CAACrC,KAAasC;oBACzB,IAAItC,OAAOA,IAAIuC,OAAO,CAACC,OAAO,CAAC,0BAA0B,GAAG;wBAC1DF,MAAMtC;wBACNA,MAAM;oBACR;oBAEAiB,QAAQwB,IAAI,CAAC;wBAAE1D,MAAMqD;wBAAQ9C;wBAASC;wBAAMmD,OAAO1C;wBAAKC,QAAQqC;oBAAI;oBACpEN,GAAGhC,KAAKsC;gBACV;gBAEA,IAAI/B,SAASA,QAAQoC,KAAK,CAACrD,SAASC,MAAM0C,cAAc;oBAAEW,OAAOR;oBAAQS,UAAUrD,QAAQqD,QAAQ;gBAAC,GAAGR;qBAClGpD,eAAeK,SAASC,MAAM0C,cAAc;oBAAEG;gBAAO,GAAGC;YAC/D,GACA;gBAAEtC;gBAAakD,gBAAgBzD,QAAQyD,cAAc;YAAC,GACtD,CAACjD;gBACCkB,SAASlB;YACX;QAEJ;IACF;AACF"}
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/worker.ts"],"sourcesContent":["import type { SpawnResult } from 'cross-spawn-cb';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport spawnStreaming from 'spawn-streaming';\nimport { createSession } from 'spawn-term';\nimport schedule, { type DependencyGraph } from 'topological-scheduler';\nimport packageLayers, { type PackageEntry } from './lib/packageLayers.ts';\n\nimport type { EachCallback, EachError, EachOptions, EachResult } from './types.ts';\n\nexport default function worker(command: string, args: string[], options: EachOptions, callback: EachCallback): undefined {\n let depth = typeof options.depth === 'undefined' ? Infinity : options.depth;\n if (depth !== Infinity) depth++; // depth is relative to first level of packages\n const concurrency = typeof options.concurrency === 'undefined' ? 1 : options.concurrency;\n\n packageLayers(options, (err, result) => {\n if (err) return callback(err);\n\n // Create session once for all processes (only when interactive is explicitly enabled, e.g. by CLI)\n const interactive = !!options.interactive;\n const quotedArgs = args.map((arg) => (/\\s/.test(arg) ? `\"${arg}\"` : arg));\n const session = createSession && !options.streaming && interactive ? createSession({ header: `${process.cwd()}> ${command} ${quotedArgs.join(' ')}`, showStatusBar: true, interactive }) : null;\n\n // Show command header when not using terminal session (unless silent)\n if (!session && !options.silent) {\n console.log(`$ ${command} ${quotedArgs.join(' ')}`);\n }\n\n const results: EachResult[] = [];\n\n const finalize = (err?: Error): void => {\n if (err) (err as EachError).results = results;\n if (session) {\n session.waitAndClose(() => {\n err ? callback(err) : callback(null, results);\n });\n } else {\n err ? callback(err) : callback(null, results);\n }\n };\n\n // Non-topological mode: layers is PackageEntry[][]\n if (Array.isArray(result)) {\n const layers = result as PackageEntry[][];\n const processLayers = (layers: PackageEntry[][], done: (err?: Error) => void): void => {\n if (layers.length === 0) {\n done();\n return;\n }\n const layerEntries = layers.shift();\n\n const queue = new Queue(concurrency);\n layerEntries.forEach((entry) => {\n queue.defer((cb: () => void) => {\n const spawnOptions = { ...options, cwd: path.dirname(entry.fullPath) };\n const prefix = path.dirname(entry.path);\n\n const next = (err?: Error, res?: SpawnResult): undefined => {\n if (err && err.message.indexOf('ExperimentalWarning') >= 0) {\n res = err as unknown as SpawnResult;\n err = null;\n }\n\n results.push({ path: prefix, command, args, error: err, result: res });\n cb();\n };\n\n if (session) session.spawn(command, args, spawnOptions, { group: prefix, expanded: options.expanded }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n });\n });\n\n queue.await((err: Error) => (err ? done(err) : processLayers(layers, done)));\n };\n\n processLayers(layers, finalize);\n return;\n }\n\n // Topological mode: use topological-scheduler\n const graph = result as DependencyGraph<PackageEntry>;\n\n schedule(\n graph,\n (entry, _id, cb) => {\n const spawnOptions = { ...options, cwd: path.dirname(entry.fullPath) };\n const prefix = path.dirname(entry.path);\n\n const next = (err?: Error, res?: SpawnResult): undefined => {\n if (err && err.message.indexOf('ExperimentalWarning') >= 0) {\n res = err as unknown as SpawnResult;\n err = null;\n }\n\n results.push({ path: prefix, command, args, error: err, result: res });\n cb(err, res);\n };\n\n if (session) session.spawn(command, args, spawnOptions, { group: prefix, expanded: options.expanded }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n },\n { concurrency, failDependents: options.failDependents },\n (err) => {\n finalize(err);\n }\n );\n });\n}\n"],"names":["path","Queue","spawnStreaming","createSession","schedule","packageLayers","worker","command","args","options","callback","depth","Infinity","concurrency","err","result","interactive","quotedArgs","map","arg","test","session","streaming","header","process","cwd","join","showStatusBar","silent","console","log","results","finalize","waitAndClose","Array","isArray","layers","processLayers","done","length","layerEntries","shift","queue","forEach","entry","defer","cb","spawnOptions","dirname","fullPath","prefix","next","res","message","indexOf","push","error","spawn","group","expanded","await","graph","_id","failDependents"],"mappings":"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"}
{
"name": "each-package",
"version": "1.4.8",
"version": "1.4.9",
"description": "Run commands in each package folder starting with cwd skipping node_modules folders",

@@ -47,6 +47,6 @@ "keywords": [

"getopts-compat": "^2.2.6",
"install-module-linked": "^1.3.10",
"queue-cb": "^1.6.1",
"remove-bom-buffer": "^3.0.0",
"spawn-streaming": "^1.1.13",
"spawn-term": "^3.3.2",
"test-match": "^1.1.1",

@@ -58,6 +58,6 @@ "topological-scheduler": "^0.1.0",

"@types/mocha": "^10.0.10",
"@types/node": "^24.10.2",
"@types/node": "^25.0.0",
"cr": "^0.1.0",
"is-version": "^1.0.7",
"node-version-use": "^1.9.9",
"node-version-use": "^2.0.0",
"pinkie-promise": "^2.0.1",

@@ -64,0 +64,0 @@ "ts-dev-stack": "^1.21.2",

type CreateSessionFn = ((options?: {
header?: string;
showStatusBar?: boolean;
interactive?: boolean;
}) => {
spawn: (command: string, args: string[], options: unknown, termOptions: unknown, callback: (err?: Error, res?: unknown) => void) => void;
close: () => void;
waitAndClose: (callback?: () => void) => void;
}) | undefined;
interface SpawnTermModule {
createSession: CreateSessionFn;
figures: {
tick: string;
cross: string;
};
formatArguments: (args: string[]) => string[];
}
export default function loadSpawnTerm(callback: (err: Error | null, result: SpawnTermModule) => void): void;
export {};
type CreateSessionFn = ((options?: {
header?: string;
showStatusBar?: boolean;
interactive?: boolean;
}) => {
spawn: (command: string, args: string[], options: unknown, termOptions: unknown, callback: (err?: Error, res?: unknown) => void) => void;
close: () => void;
waitAndClose: (callback?: () => void) => void;
}) | undefined;
interface SpawnTermModule {
createSession: CreateSessionFn;
figures: {
tick: string;
cross: string;
};
formatArguments: (args: string[]) => string[];
}
export default function loadSpawnTerm(callback: (err: Error | null, result: SpawnTermModule) => void): void;
export {};
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return loadSpawnTerm;
}
});
var _installmodulelinked = /*#__PURE__*/ _interop_require_default(require("install-module-linked"));
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
var _url = /*#__PURE__*/ _interop_require_default(require("url"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== "function") return null;
var cacheBabelInterop = new WeakMap();
var cacheNodeInterop = new WeakMap();
return (_getRequireWildcardCache = function(nodeInterop) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
})(nodeInterop);
}
function _interop_require_wildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache(nodeInterop);
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {
__proto__: null
};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
var _dirname = _path.default.dirname(typeof __dirname !== 'undefined' ? __dirname : _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()));
var nodeModules = _path.default.join(_dirname, '..', '..', '..', 'node_modules');
var moduleName = 'spawn-term';
var cached;
function loadModule(moduleName, callback) {
if (typeof require === 'undefined') {
Promise.resolve(moduleName).then(function(p) {
return /*#__PURE__*/ _interop_require_wildcard(require(p));
}).then(function(mod) {
var _mod_createSession, _mod_figures, _mod_formatArguments;
callback(null, {
createSession: (_mod_createSession = mod === null || mod === void 0 ? void 0 : mod.createSession) !== null && _mod_createSession !== void 0 ? _mod_createSession : undefined,
figures: (_mod_figures = mod === null || mod === void 0 ? void 0 : mod.figures) !== null && _mod_figures !== void 0 ? _mod_figures : {
tick: '✓',
cross: '✗'
},
formatArguments: (_mod_formatArguments = mod === null || mod === void 0 ? void 0 : mod.formatArguments) !== null && _mod_formatArguments !== void 0 ? _mod_formatArguments : function(args) {
return args;
}
});
}).catch(callback);
} else {
try {
callback(null, require(moduleName));
} catch (err) {
callback(err, null);
}
}
}
function loadSpawnTerm(callback) {
if (cached !== undefined) {
callback(null, cached);
return;
}
(0, _installmodulelinked.default)(moduleName, nodeModules, {}, function(err) {
if (err) return callback(err, null);
loadModule(moduleName, function(err, _cached) {
if (err) return callback(err, null);
cached = _cached;
callback(null, cached);
});
});
}
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/lib/loadSpawnTerm.ts"],"sourcesContent":["import installModule from 'install-module-linked';\nimport path from 'path';\nimport url from 'url';\n\nconst _dirname = path.dirname(typeof __dirname !== 'undefined' ? __dirname : url.fileURLToPath(import.meta.url));\nconst nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules');\nconst moduleName = 'spawn-term';\n\ntype CreateSessionFn =\n | ((options?: { header?: string; showStatusBar?: boolean; interactive?: boolean }) => {\n spawn: (command: string, args: string[], options: unknown, termOptions: unknown, callback: (err?: Error, res?: unknown) => void) => void;\n close: () => void;\n waitAndClose: (callback?: () => void) => void;\n })\n | undefined;\n\ninterface SpawnTermModule {\n createSession: CreateSessionFn;\n figures: { tick: string; cross: string };\n formatArguments: (args: string[]) => string[];\n}\n\nlet cached: SpawnTermModule | undefined;\n\nfunction loadModule(moduleName, callback) {\n if (typeof require === 'undefined') {\n import(moduleName)\n .then((mod) => {\n callback(null, {\n createSession: mod?.createSession ?? undefined,\n figures: mod?.figures ?? { tick: '✓', cross: '✗' },\n formatArguments: mod?.formatArguments ?? ((args: string[]) => args),\n });\n })\n .catch(callback);\n } else {\n try {\n callback(null, require(moduleName));\n } catch (err) {\n callback(err, null);\n }\n }\n}\n\nexport default function loadSpawnTerm(callback: (err: Error | null, result: SpawnTermModule) => void): void {\n if (cached !== undefined) {\n callback(null, cached);\n return;\n }\n installModule(moduleName, nodeModules, {}, (err) => {\n if (err) return callback(err, null);\n loadModule(moduleName, (err, _cached: SpawnTermModule) => {\n if (err) return callback(err, null);\n cached = _cached;\n callback(null, cached);\n });\n });\n}\n"],"names":["loadSpawnTerm","_dirname","path","dirname","__dirname","url","fileURLToPath","nodeModules","join","moduleName","cached","loadModule","callback","require","then","mod","createSession","undefined","figures","tick","cross","formatArguments","args","catch","err","installModule","_cached"],"mappings":";;;;+BA4CA;;;eAAwBA;;;0EA5CE;2DACT;0DACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhB,IAAMC,WAAWC,aAAI,CAACC,OAAO,CAAC,OAAOC,cAAc,cAAcA,YAAYC,YAAG,CAACC,aAAa,CAAC;AAC/F,IAAMC,cAAcL,aAAI,CAACM,IAAI,CAACP,UAAU,MAAM,MAAM,MAAM;AAC1D,IAAMQ,aAAa;AAgBnB,IAAIC;AAEJ,SAASC,WAAWF,UAAU,EAAEG,QAAQ;IACtC,IAAI,OAAOC,YAAY,aAAa;QAClC,gBAAOJ;2DAAP;WACGK,IAAI,CAAC,SAACC;gBAEYA,oBACNA,cACQA;YAHnBH,SAAS,MAAM;gBACbI,eAAeD,CAAAA,qBAAAA,gBAAAA,0BAAAA,IAAKC,aAAa,cAAlBD,gCAAAA,qBAAsBE;gBACrCC,SAASH,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKG,OAAO,cAAZH,0BAAAA,eAAgB;oBAAEI,MAAM;oBAAKC,OAAO;gBAAI;gBACjDC,iBAAiBN,CAAAA,uBAAAA,gBAAAA,0BAAAA,IAAKM,eAAe,cAApBN,kCAAAA,uBAAyB,SAACO;2BAAmBA;;YAChE;QACF,GACCC,KAAK,CAACX;IACX,OAAO;QACL,IAAI;YACFA,SAAS,MAAMC,QAAQJ;QACzB,EAAE,OAAOe,KAAK;YACZZ,SAASY,KAAK;QAChB;IACF;AACF;AAEe,SAASxB,cAAcY,QAA8D;IAClG,IAAIF,WAAWO,WAAW;QACxBL,SAAS,MAAMF;QACf;IACF;IACAe,IAAAA,4BAAa,EAAChB,YAAYF,aAAa,CAAC,GAAG,SAACiB;QAC1C,IAAIA,KAAK,OAAOZ,SAASY,KAAK;QAC9Bb,WAAWF,YAAY,SAACe,KAAKE;YAC3B,IAAIF,KAAK,OAAOZ,SAASY,KAAK;YAC9Bd,SAASgB;YACTd,SAAS,MAAMF;QACjB;IACF;AACF"}
type CreateSessionFn = ((options?: {
header?: string;
showStatusBar?: boolean;
interactive?: boolean;
}) => {
spawn: (command: string, args: string[], options: unknown, termOptions: unknown, callback: (err?: Error, res?: unknown) => void) => void;
close: () => void;
waitAndClose: (callback?: () => void) => void;
}) | undefined;
interface SpawnTermModule {
createSession: CreateSessionFn;
figures: {
tick: string;
cross: string;
};
formatArguments: (args: string[]) => string[];
}
export default function loadSpawnTerm(callback: (err: Error | null, result: SpawnTermModule) => void): void;
export {};
import installModule from 'install-module-linked';
import path from 'path';
import url from 'url';
const _dirname = path.dirname(typeof __dirname !== 'undefined' ? __dirname : url.fileURLToPath(import.meta.url));
const nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules');
const moduleName = 'spawn-term';
let cached;
function loadModule(moduleName, callback) {
if (typeof require === 'undefined') {
import(moduleName).then((mod)=>{
var _mod_createSession, _mod_figures, _mod_formatArguments;
callback(null, {
createSession: (_mod_createSession = mod === null || mod === void 0 ? void 0 : mod.createSession) !== null && _mod_createSession !== void 0 ? _mod_createSession : undefined,
figures: (_mod_figures = mod === null || mod === void 0 ? void 0 : mod.figures) !== null && _mod_figures !== void 0 ? _mod_figures : {
tick: '✓',
cross: '✗'
},
formatArguments: (_mod_formatArguments = mod === null || mod === void 0 ? void 0 : mod.formatArguments) !== null && _mod_formatArguments !== void 0 ? _mod_formatArguments : (args)=>args
});
}).catch(callback);
} else {
try {
callback(null, require(moduleName));
} catch (err) {
callback(err, null);
}
}
}
export default function loadSpawnTerm(callback) {
if (cached !== undefined) {
callback(null, cached);
return;
}
installModule(moduleName, nodeModules, {}, (err)=>{
if (err) return callback(err, null);
loadModule(moduleName, (err, _cached)=>{
if (err) return callback(err, null);
cached = _cached;
callback(null, cached);
});
});
}
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/lib/loadSpawnTerm.ts"],"sourcesContent":["import installModule from 'install-module-linked';\nimport path from 'path';\nimport url from 'url';\n\nconst _dirname = path.dirname(typeof __dirname !== 'undefined' ? __dirname : url.fileURLToPath(import.meta.url));\nconst nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules');\nconst moduleName = 'spawn-term';\n\ntype CreateSessionFn =\n | ((options?: { header?: string; showStatusBar?: boolean; interactive?: boolean }) => {\n spawn: (command: string, args: string[], options: unknown, termOptions: unknown, callback: (err?: Error, res?: unknown) => void) => void;\n close: () => void;\n waitAndClose: (callback?: () => void) => void;\n })\n | undefined;\n\ninterface SpawnTermModule {\n createSession: CreateSessionFn;\n figures: { tick: string; cross: string };\n formatArguments: (args: string[]) => string[];\n}\n\nlet cached: SpawnTermModule | undefined;\n\nfunction loadModule(moduleName, callback) {\n if (typeof require === 'undefined') {\n import(moduleName)\n .then((mod) => {\n callback(null, {\n createSession: mod?.createSession ?? undefined,\n figures: mod?.figures ?? { tick: '✓', cross: '✗' },\n formatArguments: mod?.formatArguments ?? ((args: string[]) => args),\n });\n })\n .catch(callback);\n } else {\n try {\n callback(null, require(moduleName));\n } catch (err) {\n callback(err, null);\n }\n }\n}\n\nexport default function loadSpawnTerm(callback: (err: Error | null, result: SpawnTermModule) => void): void {\n if (cached !== undefined) {\n callback(null, cached);\n return;\n }\n installModule(moduleName, nodeModules, {}, (err) => {\n if (err) return callback(err, null);\n loadModule(moduleName, (err, _cached: SpawnTermModule) => {\n if (err) return callback(err, null);\n cached = _cached;\n callback(null, cached);\n });\n });\n}\n"],"names":["installModule","path","url","_dirname","dirname","__dirname","fileURLToPath","nodeModules","join","moduleName","cached","loadModule","callback","require","then","mod","createSession","undefined","figures","tick","cross","formatArguments","args","catch","err","loadSpawnTerm","_cached"],"mappings":"AAAA,OAAOA,mBAAmB,wBAAwB;AAClD,OAAOC,UAAU,OAAO;AACxB,OAAOC,SAAS,MAAM;AAEtB,MAAMC,WAAWF,KAAKG,OAAO,CAAC,OAAOC,cAAc,cAAcA,YAAYH,IAAII,aAAa,CAAC,YAAYJ,GAAG;AAC9G,MAAMK,cAAcN,KAAKO,IAAI,CAACL,UAAU,MAAM,MAAM,MAAM;AAC1D,MAAMM,aAAa;AAgBnB,IAAIC;AAEJ,SAASC,WAAWF,UAAU,EAAEG,QAAQ;IACtC,IAAI,OAAOC,YAAY,aAAa;QAClC,MAAM,CAACJ,YACJK,IAAI,CAAC,CAACC;gBAEYA,oBACNA,cACQA;YAHnBH,SAAS,MAAM;gBACbI,eAAeD,CAAAA,qBAAAA,gBAAAA,0BAAAA,IAAKC,aAAa,cAAlBD,gCAAAA,qBAAsBE;gBACrCC,SAASH,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKG,OAAO,cAAZH,0BAAAA,eAAgB;oBAAEI,MAAM;oBAAKC,OAAO;gBAAI;gBACjDC,iBAAiBN,CAAAA,uBAAAA,gBAAAA,0BAAAA,IAAKM,eAAe,cAApBN,kCAAAA,uBAAyB,CAACO,OAAmBA;YAChE;QACF,GACCC,KAAK,CAACX;IACX,OAAO;QACL,IAAI;YACFA,SAAS,MAAMC,QAAQJ;QACzB,EAAE,OAAOe,KAAK;YACZZ,SAASY,KAAK;QAChB;IACF;AACF;AAEA,eAAe,SAASC,cAAcb,QAA8D;IAClG,IAAIF,WAAWO,WAAW;QACxBL,SAAS,MAAMF;QACf;IACF;IACAV,cAAcS,YAAYF,aAAa,CAAC,GAAG,CAACiB;QAC1C,IAAIA,KAAK,OAAOZ,SAASY,KAAK;QAC9Bb,WAAWF,YAAY,CAACe,KAAKE;YAC3B,IAAIF,KAAK,OAAOZ,SAASY,KAAK;YAC9Bd,SAASgB;YACTd,SAAS,MAAMF;QACjB;IACF;AACF"}