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.5.2
to
1.5.3
+1
-1
bin/cli.js
#!/usr/bin/env node
// biome-ignore lint/security/noGlobalEval: dual esm and cjs
if (typeof require === 'undefined') eval("import('../dist/esm/cli.js').then((cli) => cli.default(process.argv.slice(2), 'ep')).catch((err) => { console.log(err); process.exit(-1); });");
if (typeof require === 'undefined') eval("import('../dist/esm/cli.js').then((cli) => cli.default(process.argv.slice(2), 'ep')).catch((err) => { console.error(err); process.exit(-1); });");
else require('../dist/cjs/cli.js')(process.argv.slice(2), 'ep');

@@ -14,2 +14,3 @@ "use strict";

var _getoptscompat = /*#__PURE__*/ _interop_require_default(require("getopts-compat"));
var _os = /*#__PURE__*/ _interop_require_default(require("os"));
var _path = /*#__PURE__*/ _interop_require_default(require("path"));

@@ -24,2 +25,4 @@ var _spawnterm = require("spawn-term");

}
var _ref;
var _os_cpus;
var ERROR_CODE = 5;

@@ -36,4 +39,5 @@ var __dirname = _path.default.dirname(typeof __filename !== 'undefined' ? __filename : _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()));

console.log('');
console.log("Usage: ".concat(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 ").concat(name, " npm install Run 'npm install' in each package\n ").concat(name, " -t npm test Run 'npm test' in topological order\n ").concat(name, " -c 4 npm build Run 'npm build' with concurrency of 4"));
console.log("Usage: ".concat(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: cpu)\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 ").concat(name, " npm install Run 'npm install' in each package\n ").concat(name, " -t npm test Run 'npm test' in topological order\n ").concat(name, " -c 4 npm build Run 'npm build' with concurrency of 4"));
}
var concurrency = Math.min(64, Math.max(8, ((_ref = (_os_cpus = _os.default.cpus()) === null || _os_cpus === void 0 ? void 0 : _os_cpus.length) !== null && _ref !== void 0 ? _ref : 4) * 8));
var _default = function(argv, name) {

@@ -70,3 +74,3 @@ var options = (0, _getoptscompat.default)(argv, {

depth: Infinity,
concurrency: Infinity,
concurrency: concurrency,
interactive: true

@@ -73,0 +77,0 @@ },

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

{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/cli.ts"],"sourcesContent":["import exit from 'exit-compat';\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): void => {\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[]): void => {\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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"}
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/cli.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport os from 'os';\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: cpu)\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\nconst concurrency = Math.min(64, Math.max(8, (os.cpus()?.length ?? 4) * 8));\n\nexport default (argv: string[], name: string): void => {\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, 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[]): void => {\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":["os","ERROR_CODE","__dirname","path","dirname","__filename","url","fileURLToPath","getVersion","packagePath","resolve","packageJson","JSON","parse","fs","readFileSync","version","showHelp","name","console","log","concurrency","Math","min","max","cpus","length","argv","options","getopts","alias","depth","topological","failDependents","expanded","streaming","silent","private","ignore","root","interactive","help","boolean","default","Infinity","stopEarly","exit","args","_","stdio","run","slice","err","results","message","errors","filter","result","error","createSession","forEach","res","figures","cross","tick","formatArguments"],"mappings":"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"}

@@ -13,2 +13,3 @@ "use strict";

var _fsiterator = /*#__PURE__*/ _interop_require_default(require("fs-iterator"));
var _os = /*#__PURE__*/ _interop_require_default(require("os"));
var _removebombuffer = /*#__PURE__*/ _interop_require_default(require("remove-bom-buffer"));

@@ -50,2 +51,5 @@ var _testmatch = /*#__PURE__*/ _interop_require_default(require("test-match"));

}
var _ref;
var _os_cpus;
var concurrency = Math.min(64, Math.max(8, ((_ref = (_os_cpus = _os.default.cpus()) === null || _os_cpus === void 0 ? void 0 : _os_cpus.length) !== null && _ref !== void 0 ? _ref : 4) * 8));
var defaultIgnores = 'node_modules,.git';

@@ -97,3 +101,3 @@ function packageLayers(options, callback) {

}, {
concurrency: Infinity,
concurrency: options.concurrency || concurrency,
callbacks: true

@@ -100,0 +104,0 @@ }, function(err) {

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

{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/lib/packageLayers.ts"],"sourcesContent":["import fs from 'fs';\nimport Iterator, { type Entry } from 'fs-iterator';\nimport removeBOM from 'remove-bom-buffer';\nimport match from 'test-match';\nimport Graph, { type DependencyGraph } from 'topological-sort-group';\n\nexport interface PackageEntry extends Entry {\n package: { name: string; dependencies: object; optionalDependencies: object };\n}\n\nimport type { EachOptions } from '../types.ts';\n\nexport type Callback = (err: Error | null, entries?: PackageEntry[], graph?: DependencyGraph<PackageEntry>) => void;\n\nconst defaultIgnores = 'node_modules,.git';\n\nexport default function packageLayers(options: EachOptions, callback: Callback): void {\n let depth = typeof options.depth === 'undefined' ? Infinity : options.depth;\n if (depth !== Infinity) depth++; // depth is relative to first level of packages\n\n const cwd = options.cwd || process.cwd();\n\n const ignores = options.ignore ? options.ignore : defaultIgnores;\n const matcher = match({ exclude: ignores });\n\n const iterator = new Iterator(cwd as string, {\n filter: function filter(entry) {\n if (entry.stats.isDirectory() || entry.realStats?.isDirectory()) return entry.basename[0] !== '.' && matcher(entry.basename);\n if (entry.stats.isFile()) {\n // Only include package.json files\n if (entry.basename !== 'package.json') return false;\n // Exclude root package.json unless --root flag is set\n if (!options.root && entry.path === 'package.json') return false;\n return true;\n }\n return false;\n },\n depth,\n lstat: true,\n });\n const entries: PackageEntry[] = [];\n iterator.forEach(\n (entry: PackageEntry, cb): void => {\n if (!entry.stats.isFile()) {\n cb();\n return;\n }\n fs.readFile(entry.fullPath, 'utf8', (err, contents) => {\n if (err) return cb(err);\n try {\n const pkg = JSON.parse(removeBOM(contents));\n if (pkg.private && !options.private) return cb();\n if (pkg.name === undefined) return cb(); // skip packages without names\n entry.package = pkg;\n entries.push(entry);\n cb();\n } catch (_err) {\n console.log(`Failed to parse JSON for ${entry.path}`);\n cb();\n }\n });\n },\n { concurrency: Infinity, callbacks: true },\n (err) => {\n if (err) return callback(err);\n\n // full graph at one layer, sorted by relative path\n if (!options.topological) return callback(null, entries);\n\n // Build nodes map\n const nodes: Record<string, PackageEntry> = {};\n const dependencies: Record<string, string[]> = {};\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n nodes[entry.package.name] = entry;\n dependencies[entry.package.name] = [];\n }\n\n // Build dependencies from package.json dependencies and optionalDependencies\n for (let j = 0; j < entries.length; j++) {\n const e = entries[j];\n const deps = { ...(e.package.dependencies || {}), ...(e.package.optionalDependencies || {}) };\n for (const name in deps) {\n if (nodes[name]) {\n // This package depends on another package in the graph\n dependencies[e.package.name].push(name);\n }\n }\n }\n\n // Use Graph for cycle detection\n const graph = Graph.from<PackageEntry>({ nodes, dependencies });\n const { cycles, duplicates } = graph.sort();\n\n if (cycles && cycles.length) cycles.forEach((c) => console.log(`Skipping cycle: ${c.join(' -> ')}`));\n if (duplicates && duplicates.length) duplicates.forEach((d) => console.log(`Skipping duplicates: ${JSON.stringify(d.values.map((x) => x.path))}`));\n\n // Remove cyclic packages from the graph\n if (cycles && cycles.length) {\n const cyclicPackages: Record<string, boolean> = {};\n for (let ci = 0; ci < cycles.length; ci++) {\n const c = cycles[ci];\n for (let cj = 0; cj < c.length; cj++) {\n cyclicPackages[String(c[cj])] = true;\n }\n }\n for (const cyclicName in cyclicPackages) {\n delete nodes[cyclicName];\n delete dependencies[cyclicName];\n }\n // Remove references to cyclic packages from dependencies\n for (const key in dependencies) {\n const depList = dependencies[key];\n for (let di = depList.length - 1; di >= 0; di--) {\n if (cyclicPackages[depList[di]]) depList.splice(di, 1);\n }\n }\n }\n\n return callback(null, entries, { nodes, dependencies });\n }\n );\n}\n"],"names":["packageLayers","defaultIgnores","options","callback","depth","Infinity","cwd","process","ignores","ignore","matcher","match","exclude","iterator","Iterator","filter","entry","stats","isDirectory","realStats","basename","isFile","root","path","lstat","entries","forEach","cb","fs","readFile","fullPath","err","contents","pkg","JSON","parse","removeBOM","private","name","undefined","package","push","_err","console","log","concurrency","callbacks","topological","nodes","dependencies","i","length","j","e","deps","optionalDependencies","graph","Graph","from","sort","cycles","duplicates","c","join","d","stringify","values","map","x","cyclicPackages","ci","cj","String","cyclicName","key","depList","di","splice"],"mappings":"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"}
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/lib/packageLayers.ts"],"sourcesContent":["import fs from 'fs';\nimport Iterator, { type Entry } from 'fs-iterator';\nimport os from 'os';\nimport removeBOM from 'remove-bom-buffer';\nimport match from 'test-match';\nimport Graph, { type DependencyGraph } from 'topological-sort-group';\n\nconst concurrency = Math.min(64, Math.max(8, (os.cpus()?.length ?? 4) * 8));\n\nexport interface PackageEntry extends Entry {\n package: { name: string; dependencies: object; optionalDependencies: object };\n}\n\nimport type { EachOptions } from '../types.ts';\n\nexport type Callback = (err: Error | null, entries?: PackageEntry[], graph?: DependencyGraph<PackageEntry>) => void;\n\nconst defaultIgnores = 'node_modules,.git';\n\nexport default function packageLayers(options: EachOptions, callback: Callback): void {\n let depth = typeof options.depth === 'undefined' ? Infinity : options.depth;\n if (depth !== Infinity) depth++; // depth is relative to first level of packages\n\n const cwd = options.cwd || process.cwd();\n\n const ignores = options.ignore ? options.ignore : defaultIgnores;\n const matcher = match({ exclude: ignores });\n\n const iterator = new Iterator(cwd as string, {\n filter: function filter(entry) {\n if (entry.stats.isDirectory() || entry.realStats?.isDirectory()) return entry.basename[0] !== '.' && matcher(entry.basename);\n if (entry.stats.isFile()) {\n // Only include package.json files\n if (entry.basename !== 'package.json') return false;\n // Exclude root package.json unless --root flag is set\n if (!options.root && entry.path === 'package.json') return false;\n return true;\n }\n return false;\n },\n depth,\n lstat: true,\n });\n const entries: PackageEntry[] = [];\n iterator.forEach(\n (entry: PackageEntry, cb): void => {\n if (!entry.stats.isFile()) {\n cb();\n return;\n }\n fs.readFile(entry.fullPath, 'utf8', (err, contents) => {\n if (err) return cb(err);\n try {\n const pkg = JSON.parse(removeBOM(contents));\n if (pkg.private && !options.private) return cb();\n if (pkg.name === undefined) return cb(); // skip packages without names\n entry.package = pkg;\n entries.push(entry);\n cb();\n } catch (_err) {\n console.log(`Failed to parse JSON for ${entry.path}`);\n cb();\n }\n });\n },\n { concurrency: options.concurrency || concurrency, callbacks: true },\n (err) => {\n if (err) return callback(err);\n\n // full graph at one layer, sorted by relative path\n if (!options.topological) return callback(null, entries);\n\n // Build nodes map\n const nodes: Record<string, PackageEntry> = {};\n const dependencies: Record<string, string[]> = {};\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n nodes[entry.package.name] = entry;\n dependencies[entry.package.name] = [];\n }\n\n // Build dependencies from package.json dependencies and optionalDependencies\n for (let j = 0; j < entries.length; j++) {\n const e = entries[j];\n const deps = { ...(e.package.dependencies || {}), ...(e.package.optionalDependencies || {}) };\n for (const name in deps) {\n if (nodes[name]) {\n // This package depends on another package in the graph\n dependencies[e.package.name].push(name);\n }\n }\n }\n\n // Use Graph for cycle detection\n const graph = Graph.from<PackageEntry>({ nodes, dependencies });\n const { cycles, duplicates } = graph.sort();\n\n if (cycles && cycles.length) cycles.forEach((c) => console.log(`Skipping cycle: ${c.join(' -> ')}`));\n if (duplicates && duplicates.length) duplicates.forEach((d) => console.log(`Skipping duplicates: ${JSON.stringify(d.values.map((x) => x.path))}`));\n\n // Remove cyclic packages from the graph\n if (cycles && cycles.length) {\n const cyclicPackages: Record<string, boolean> = {};\n for (let ci = 0; ci < cycles.length; ci++) {\n const c = cycles[ci];\n for (let cj = 0; cj < c.length; cj++) {\n cyclicPackages[String(c[cj])] = true;\n }\n }\n for (const cyclicName in cyclicPackages) {\n delete nodes[cyclicName];\n delete dependencies[cyclicName];\n }\n // Remove references to cyclic packages from dependencies\n for (const key in dependencies) {\n const depList = dependencies[key];\n for (let di = depList.length - 1; di >= 0; di--) {\n if (cyclicPackages[depList[di]]) depList.splice(di, 1);\n }\n }\n }\n\n return callback(null, entries, { nodes, dependencies });\n }\n );\n}\n"],"names":["packageLayers","os","concurrency","Math","min","max","cpus","length","defaultIgnores","options","callback","depth","Infinity","cwd","process","ignores","ignore","matcher","match","exclude","iterator","Iterator","filter","entry","stats","isDirectory","realStats","basename","isFile","root","path","lstat","entries","forEach","cb","fs","readFile","fullPath","err","contents","pkg","JSON","parse","removeBOM","private","name","undefined","package","push","_err","console","log","callbacks","topological","nodes","dependencies","i","j","e","deps","optionalDependencies","graph","Graph","from","sort","cycles","duplicates","c","join","d","stringify","values","map","x","cyclicPackages","ci","cj","String","cyclicName","key","depList","di","splice"],"mappings":"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"}

@@ -0,4 +1,7 @@

var _ref;
var _os_cpus;
import exit from 'exit-compat';
import fs from 'fs';
import getopts from 'getopts-compat';
import os from 'os';
import path from 'path';

@@ -25,3 +28,3 @@ import { createSession, figures, formatArguments } from 'spawn-term';

-d, --depth <n> Maximum depth to search for packages (default: Infinity)
-c, --concurrency <n> Number of packages to process in parallel (default: Infinity)
-c, --concurrency <n> Number of packages to process in parallel (default: cpu)
-t, --topological Process packages in topological order based on dependencies

@@ -44,2 +47,3 @@ -fd, --fail-dependents Skip packages whose dependencies failed (use with -t)

}
const concurrency = Math.min(64, Math.max(8, ((_ref = (_os_cpus = os.cpus()) === null || _os_cpus === void 0 ? void 0 : _os_cpus.length) !== null && _ref !== void 0 ? _ref : 4) * 8));
export default ((argv, name)=>{

@@ -76,3 +80,3 @@ const options = getopts(argv, {

depth: Infinity,
concurrency: Infinity,
concurrency,
interactive: true

@@ -79,0 +83,0 @@ },

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

{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/cli.ts"],"sourcesContent":["import exit from 'exit-compat';\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): void => {\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[]): void => {\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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"}
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/cli.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport os from 'os';\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: cpu)\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\nconst concurrency = Math.min(64, Math.max(8, (os.cpus()?.length ?? 4) * 8));\n\nexport default (argv: string[], name: string): void => {\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, 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[]): void => {\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":["os","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","concurrency","Math","min","max","cpus","length","argv","options","alias","depth","topological","failDependents","expanded","streaming","silent","private","ignore","root","interactive","help","boolean","default","Infinity","stopEarly","args","_","stdio","slice","err","results","message","errors","filter","result","error","forEach","res","cross","tick"],"mappings":"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"}

@@ -0,6 +1,10 @@

var _ref;
var _os_cpus;
import fs from 'fs';
import Iterator from 'fs-iterator';
import os from 'os';
import removeBOM from 'remove-bom-buffer';
import match from 'test-match';
import Graph from 'topological-sort-group';
const concurrency = Math.min(64, Math.max(8, ((_ref = (_os_cpus = os.cpus()) === null || _os_cpus === void 0 ? void 0 : _os_cpus.length) !== null && _ref !== void 0 ? _ref : 4) * 8));
const defaultIgnores = 'node_modules,.git';

@@ -52,3 +56,3 @@ export default function packageLayers(options, callback) {

}, {
concurrency: Infinity,
concurrency: options.concurrency || concurrency,
callbacks: true

@@ -55,0 +59,0 @@ }, (err)=>{

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

{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/lib/packageLayers.ts"],"sourcesContent":["import fs from 'fs';\nimport Iterator, { type Entry } from 'fs-iterator';\nimport removeBOM from 'remove-bom-buffer';\nimport match from 'test-match';\nimport Graph, { type DependencyGraph } from 'topological-sort-group';\n\nexport interface PackageEntry extends Entry {\n package: { name: string; dependencies: object; optionalDependencies: object };\n}\n\nimport type { EachOptions } from '../types.ts';\n\nexport type Callback = (err: Error | null, entries?: PackageEntry[], graph?: DependencyGraph<PackageEntry>) => void;\n\nconst defaultIgnores = 'node_modules,.git';\n\nexport default function packageLayers(options: EachOptions, callback: Callback): void {\n let depth = typeof options.depth === 'undefined' ? Infinity : options.depth;\n if (depth !== Infinity) depth++; // depth is relative to first level of packages\n\n const cwd = options.cwd || process.cwd();\n\n const ignores = options.ignore ? options.ignore : defaultIgnores;\n const matcher = match({ exclude: ignores });\n\n const iterator = new Iterator(cwd as string, {\n filter: function filter(entry) {\n if (entry.stats.isDirectory() || entry.realStats?.isDirectory()) return entry.basename[0] !== '.' && matcher(entry.basename);\n if (entry.stats.isFile()) {\n // Only include package.json files\n if (entry.basename !== 'package.json') return false;\n // Exclude root package.json unless --root flag is set\n if (!options.root && entry.path === 'package.json') return false;\n return true;\n }\n return false;\n },\n depth,\n lstat: true,\n });\n const entries: PackageEntry[] = [];\n iterator.forEach(\n (entry: PackageEntry, cb): void => {\n if (!entry.stats.isFile()) {\n cb();\n return;\n }\n fs.readFile(entry.fullPath, 'utf8', (err, contents) => {\n if (err) return cb(err);\n try {\n const pkg = JSON.parse(removeBOM(contents));\n if (pkg.private && !options.private) return cb();\n if (pkg.name === undefined) return cb(); // skip packages without names\n entry.package = pkg;\n entries.push(entry);\n cb();\n } catch (_err) {\n console.log(`Failed to parse JSON for ${entry.path}`);\n cb();\n }\n });\n },\n { concurrency: Infinity, callbacks: true },\n (err) => {\n if (err) return callback(err);\n\n // full graph at one layer, sorted by relative path\n if (!options.topological) return callback(null, entries);\n\n // Build nodes map\n const nodes: Record<string, PackageEntry> = {};\n const dependencies: Record<string, string[]> = {};\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n nodes[entry.package.name] = entry;\n dependencies[entry.package.name] = [];\n }\n\n // Build dependencies from package.json dependencies and optionalDependencies\n for (let j = 0; j < entries.length; j++) {\n const e = entries[j];\n const deps = { ...(e.package.dependencies || {}), ...(e.package.optionalDependencies || {}) };\n for (const name in deps) {\n if (nodes[name]) {\n // This package depends on another package in the graph\n dependencies[e.package.name].push(name);\n }\n }\n }\n\n // Use Graph for cycle detection\n const graph = Graph.from<PackageEntry>({ nodes, dependencies });\n const { cycles, duplicates } = graph.sort();\n\n if (cycles && cycles.length) cycles.forEach((c) => console.log(`Skipping cycle: ${c.join(' -> ')}`));\n if (duplicates && duplicates.length) duplicates.forEach((d) => console.log(`Skipping duplicates: ${JSON.stringify(d.values.map((x) => x.path))}`));\n\n // Remove cyclic packages from the graph\n if (cycles && cycles.length) {\n const cyclicPackages: Record<string, boolean> = {};\n for (let ci = 0; ci < cycles.length; ci++) {\n const c = cycles[ci];\n for (let cj = 0; cj < c.length; cj++) {\n cyclicPackages[String(c[cj])] = true;\n }\n }\n for (const cyclicName in cyclicPackages) {\n delete nodes[cyclicName];\n delete dependencies[cyclicName];\n }\n // Remove references to cyclic packages from dependencies\n for (const key in dependencies) {\n const depList = dependencies[key];\n for (let di = depList.length - 1; di >= 0; di--) {\n if (cyclicPackages[depList[di]]) depList.splice(di, 1);\n }\n }\n }\n\n return callback(null, entries, { nodes, dependencies });\n }\n );\n}\n"],"names":["fs","Iterator","removeBOM","match","Graph","defaultIgnores","packageLayers","options","callback","depth","Infinity","cwd","process","ignores","ignore","matcher","exclude","iterator","filter","entry","stats","isDirectory","realStats","basename","isFile","root","path","lstat","entries","forEach","cb","readFile","fullPath","err","contents","pkg","JSON","parse","private","name","undefined","package","push","_err","console","log","concurrency","callbacks","topological","nodes","dependencies","i","length","j","e","deps","optionalDependencies","graph","from","cycles","duplicates","sort","c","join","d","stringify","values","map","x","cyclicPackages","ci","cj","String","cyclicName","key","depList","di","splice"],"mappings":"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"}
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/lib/packageLayers.ts"],"sourcesContent":["import fs from 'fs';\nimport Iterator, { type Entry } from 'fs-iterator';\nimport os from 'os';\nimport removeBOM from 'remove-bom-buffer';\nimport match from 'test-match';\nimport Graph, { type DependencyGraph } from 'topological-sort-group';\n\nconst concurrency = Math.min(64, Math.max(8, (os.cpus()?.length ?? 4) * 8));\n\nexport interface PackageEntry extends Entry {\n package: { name: string; dependencies: object; optionalDependencies: object };\n}\n\nimport type { EachOptions } from '../types.ts';\n\nexport type Callback = (err: Error | null, entries?: PackageEntry[], graph?: DependencyGraph<PackageEntry>) => void;\n\nconst defaultIgnores = 'node_modules,.git';\n\nexport default function packageLayers(options: EachOptions, callback: Callback): void {\n let depth = typeof options.depth === 'undefined' ? Infinity : options.depth;\n if (depth !== Infinity) depth++; // depth is relative to first level of packages\n\n const cwd = options.cwd || process.cwd();\n\n const ignores = options.ignore ? options.ignore : defaultIgnores;\n const matcher = match({ exclude: ignores });\n\n const iterator = new Iterator(cwd as string, {\n filter: function filter(entry) {\n if (entry.stats.isDirectory() || entry.realStats?.isDirectory()) return entry.basename[0] !== '.' && matcher(entry.basename);\n if (entry.stats.isFile()) {\n // Only include package.json files\n if (entry.basename !== 'package.json') return false;\n // Exclude root package.json unless --root flag is set\n if (!options.root && entry.path === 'package.json') return false;\n return true;\n }\n return false;\n },\n depth,\n lstat: true,\n });\n const entries: PackageEntry[] = [];\n iterator.forEach(\n (entry: PackageEntry, cb): void => {\n if (!entry.stats.isFile()) {\n cb();\n return;\n }\n fs.readFile(entry.fullPath, 'utf8', (err, contents) => {\n if (err) return cb(err);\n try {\n const pkg = JSON.parse(removeBOM(contents));\n if (pkg.private && !options.private) return cb();\n if (pkg.name === undefined) return cb(); // skip packages without names\n entry.package = pkg;\n entries.push(entry);\n cb();\n } catch (_err) {\n console.log(`Failed to parse JSON for ${entry.path}`);\n cb();\n }\n });\n },\n { concurrency: options.concurrency || concurrency, callbacks: true },\n (err) => {\n if (err) return callback(err);\n\n // full graph at one layer, sorted by relative path\n if (!options.topological) return callback(null, entries);\n\n // Build nodes map\n const nodes: Record<string, PackageEntry> = {};\n const dependencies: Record<string, string[]> = {};\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n nodes[entry.package.name] = entry;\n dependencies[entry.package.name] = [];\n }\n\n // Build dependencies from package.json dependencies and optionalDependencies\n for (let j = 0; j < entries.length; j++) {\n const e = entries[j];\n const deps = { ...(e.package.dependencies || {}), ...(e.package.optionalDependencies || {}) };\n for (const name in deps) {\n if (nodes[name]) {\n // This package depends on another package in the graph\n dependencies[e.package.name].push(name);\n }\n }\n }\n\n // Use Graph for cycle detection\n const graph = Graph.from<PackageEntry>({ nodes, dependencies });\n const { cycles, duplicates } = graph.sort();\n\n if (cycles && cycles.length) cycles.forEach((c) => console.log(`Skipping cycle: ${c.join(' -> ')}`));\n if (duplicates && duplicates.length) duplicates.forEach((d) => console.log(`Skipping duplicates: ${JSON.stringify(d.values.map((x) => x.path))}`));\n\n // Remove cyclic packages from the graph\n if (cycles && cycles.length) {\n const cyclicPackages: Record<string, boolean> = {};\n for (let ci = 0; ci < cycles.length; ci++) {\n const c = cycles[ci];\n for (let cj = 0; cj < c.length; cj++) {\n cyclicPackages[String(c[cj])] = true;\n }\n }\n for (const cyclicName in cyclicPackages) {\n delete nodes[cyclicName];\n delete dependencies[cyclicName];\n }\n // Remove references to cyclic packages from dependencies\n for (const key in dependencies) {\n const depList = dependencies[key];\n for (let di = depList.length - 1; di >= 0; di--) {\n if (cyclicPackages[depList[di]]) depList.splice(di, 1);\n }\n }\n }\n\n return callback(null, entries, { nodes, dependencies });\n }\n );\n}\n"],"names":["os","fs","Iterator","removeBOM","match","Graph","concurrency","Math","min","max","cpus","length","defaultIgnores","packageLayers","options","callback","depth","Infinity","cwd","process","ignores","ignore","matcher","exclude","iterator","filter","entry","stats","isDirectory","realStats","basename","isFile","root","path","lstat","entries","forEach","cb","readFile","fullPath","err","contents","pkg","JSON","parse","private","name","undefined","package","push","_err","console","log","callbacks","topological","nodes","dependencies","i","j","e","deps","optionalDependencies","graph","from","cycles","duplicates","sort","c","join","d","stringify","values","map","x","cyclicPackages","ci","cj","String","cyclicName","key","depList","di","splice"],"mappings":"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"}
{
"name": "each-package",
"version": "1.5.2",
"version": "1.5.3",
"description": "Run commands in each package folder starting with cwd skipping node_modules folders",

@@ -5,0 +5,0 @@ "keywords": [