each-package
Advanced tools
@@ -1,2 +0,2 @@ | ||
| declare const _default: (argv: string[], name: string) => undefined; | ||
| declare const _default: (argv: string[], name: string) => void; | ||
| export default _default; |
@@ -1,2 +0,2 @@ | ||
| declare const _default: (argv: string[], name: string) => undefined; | ||
| declare const _default: (argv: string[], name: string) => void; | ||
| export default _default; |
@@ -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): 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":";;;;+BAgDA;;;eAAA;;;iEAhDiB;yDACF;oEACK;2DACH;yBACuC;0DACxC;8DACA;;;;;;AAEhB,IAAMA,aAAa;AACnB,IAAMC,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaC,YAAG,CAACC,aAAa,CAAC;AAIlG,SAASC;IACP,IAAMC,cAAcN,aAAI,CAACO,OAAO,CAACR,WAAW,MAAM,MAAM;IACxD,IAAMS,cAAcC,KAAKC,KAAK,CAACC,WAAE,CAACC,YAAY,CAACN,aAAa;IAC5D,OAAOE,YAAYK,OAAO;AAC5B;AAEA,SAASC,SAASC,IAAY;IAC5B,IAAMF,UAAUR;IAChBW,QAAQC,GAAG,CAAC,AAAC,GAAWJ,OAATE,MAAK,MAAY,OAARF;IACxBG,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC,AAAC,UAoBXF,OApBoBA,MAAK,u8BAqBzBA,OADAA,MAAK,2DAELA,OADAA,MAAK,6DACA,OAALA,MAAK;AACT;IAEA,WAAe,SAACG,MAAgBH;IAC9B,IAAMI,UAAUC,IAAAA,sBAAO,EAACF,MAAM;QAC5BG,OAAO;YAAEC,OAAO;YAAKC,aAAa;YAAKC,aAAa;YAAKC,gBAAgB;YAAMC,UAAU;YAAKC,WAAW;YAAKC,QAAQ;YAAMC,SAAS;YAAKC,QAAQ;YAAKC,MAAM;YAAKC,aAAa;YAAKnB,SAAS;YAAKoB,MAAM;QAAI;QAC5MC,SAAS;YAAC;YAAe;YAAkB;YAAY;YAAa;YAAU;YAAW;YAAQ;YAAe;YAAW;SAAO;QAClIC,SAAS;YAAEb,OAAOc;YAAUb,aAAaa;YAAUJ,aAAa;QAAK;QACrEK,WAAW;IACb;IAEA,IAAIlB,QAAQN,OAAO,EAAE;QACnBG,QAAQC,GAAG,CAACZ;QACZiC,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAInB,QAAQc,IAAI,EAAE;QAChBnB,SAASC;QACTuB,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAMC,OAAOpB,QAAQqB,CAAC;IACtB,IAAID,KAAKE,MAAM,KAAK,GAAG;QACrBzB,QAAQC,GAAG,CAAC,AAAC,mCAAuC,OAALF,MAAK;QACpDuB,IAAAA,mBAAI,EAACxC;QACL;IACF;IAEAqB,QAAQuB,KAAK,GAAG,WAAW,qBAAqB;IAChDC,IAAAA,gBAAG,EAACJ,IAAI,CAAC,EAAE,EAAEA,KAAKK,KAAK,CAAC,IAAIzB,SAAwB,SAAC0B,KAAiBC;QACpE,IAAID,OAAO,CAACA,IAAIC,OAAO,EAAE;YACvB9B,QAAQC,GAAG,CAAC4B,IAAIE,OAAO;YACvBT,IAAAA,mBAAI,EAACxC;YACL;QACF;QACA,IAAI+C,KAAKC,UAAUD,IAAIC,OAAO;QAC9B,IAAME,SAASF,QAAQG,MAAM,CAAC,SAACC;mBAAW,CAAC,CAACA,OAAOC,KAAK;;QAExD,IAAI,CAAChC,QAAQS,MAAM,EAAE;YACnB,IAAI,CAACwB,wBAAa,EAAE;gBAClBpC,QAAQC,GAAG,CAAC;gBACZ6B,QAAQO,OAAO,CAAC,SAACC;oBACftC,QAAQC,GAAG,CAAC,AAAC,GAA8CqC,OAA5CA,IAAIH,KAAK,GAAGI,kBAAO,CAACC,KAAK,GAAGD,kBAAO,CAACE,IAAI,EAAC,KAAcH,OAAXA,IAAItD,IAAI,EAAmD,OAAhDsD,IAAIH,KAAK,GAAG,AAAC,WAA4B,OAAlBG,IAAIH,KAAK,CAACJ,OAAO,IAAK;gBACrH;gBACA/B,QAAQC,GAAG,CAAC;gBACZD,QAAQC,GAAG,CAAC,AAAC,GAAUyC,OAAR3C,MAAK,KAAyB,OAAtB2C,IAAAA,0BAAe,EAACnB;gBACvCvB,QAAQC,GAAG,CAAC,AAAC,GAAkB6B,OAAhBS,kBAAO,CAACE,IAAI,EAAC,KAAkC,OAA/BX,QAAQL,MAAM,GAAGO,OAAOP,MAAM,EAAC;gBAC9D,IAAIO,OAAOP,MAAM,EAAEzB,QAAQC,GAAG,CAAC,AAAC,GAAmB+B,OAAjBO,kBAAO,CAACC,KAAK,EAAC,KAAiB,OAAdR,OAAOP,MAAM,EAAC;YACnE;QACF;QACAH,IAAAA,mBAAI,EAACO,OAAOG,OAAOP,MAAM,GAAG3C,aAAa;IAC3C;AACF"} | ||
| {"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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"} |
@@ -5,3 +5,3 @@ import type { EachCallback, EachOptions, EachResult } from './types.js'; | ||
| export default function eachPackage(command: string, args: string[], options: EachOptions): Promise<EachResult[]>; | ||
| export default function eachPackage(command: string, args: string[], callback: EachCallback): undefined; | ||
| export default function eachPackage(command: string, args: string[], options: EachOptions, callback: EachCallback): undefined; | ||
| export default function eachPackage(command: string, args: string[], callback: EachCallback): void; | ||
| export default function eachPackage(command: string, args: string[], options: EachOptions, callback: EachCallback): void; |
@@ -5,3 +5,3 @@ import type { EachCallback, EachOptions, EachResult } from './types.js'; | ||
| export default function eachPackage(command: string, args: string[], options: EachOptions): Promise<EachResult[]>; | ||
| export default function eachPackage(command: string, args: string[], callback: EachCallback): undefined; | ||
| export default function eachPackage(command: string, args: string[], options: EachOptions, callback: EachCallback): undefined; | ||
| export default function eachPackage(command: string, args: string[], callback: EachCallback): void; | ||
| export default function eachPackage(command: string, args: string[], options: EachOptions, callback: EachCallback): void; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/index.ts"],"sourcesContent":["import type { EachCallback, EachError, EachOptions, EachResult } from './types.ts';\nimport worker from './worker.ts';\n\nexport * from './types.ts';\n\nexport default function eachPackage(command: string, args: string[]): Promise<EachResult[]>;\nexport default function eachPackage(command: string, args: string[], options: EachOptions): Promise<EachResult[]>;\n\nexport default function eachPackage(command: string, args: string[], callback: EachCallback): undefined;\nexport default function eachPackage(command: string, args: string[], options: EachOptions, callback: EachCallback): undefined;\n\nexport default function eachPackage(command: string, args: string[], options?: EachOptions | EachCallback, callback?: EachCallback): undefined | Promise<EachResult[]> {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n if (typeof callback === 'function') return worker(command, args, options, callback);\n return new Promise((resolve, reject) =>\n worker(command, args, options, (err?: EachError, results?: EachResult[]): undefined => {\n err ? reject(err) : resolve(results);\n })\n );\n}\n"],"names":["eachPackage","command","args","options","callback","worker","Promise","resolve","reject","err","results"],"mappings":";;;;+BAWA;;;eAAwBA;;;+DAVL;qBAEL;;;;;;;;;;;;;;;;;;;AAQC,SAASA,YAAYC,OAAe,EAAEC,IAAc,EAAEC,OAAoC,EAAEC,QAAuB;IAChI,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOC,IAAAA,iBAAM,EAACJ,SAASC,MAAMC,SAASC;IAC1E,OAAO,IAAIE,QAAQ,SAACC,SAASC;eAC3BH,IAAAA,iBAAM,EAACJ,SAASC,MAAMC,SAAS,SAACM,KAAiBC;YAC/CD,MAAMD,OAAOC,OAAOF,QAAQG;QAC9B;;AAEJ"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/index.ts"],"sourcesContent":["import type { EachCallback, EachError, EachOptions, EachResult } from './types.ts';\nimport worker from './worker.ts';\n\nexport * from './types.ts';\n\nexport default function eachPackage(command: string, args: string[]): Promise<EachResult[]>;\nexport default function eachPackage(command: string, args: string[], options: EachOptions): Promise<EachResult[]>;\n\nexport default function eachPackage(command: string, args: string[], callback: EachCallback): void;\nexport default function eachPackage(command: string, args: string[], options: EachOptions, callback: EachCallback): void;\n\nexport default function eachPackage(command: string, args: string[], options?: EachOptions | EachCallback, callback?: EachCallback): void | Promise<EachResult[]> {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n if (typeof callback === 'function') return worker(command, args, options, callback);\n return new Promise((resolve, reject) =>\n worker(command, args, options as EachOptions, (err?: EachError, results?: EachResult[]): void => {\n err ? reject(err) : resolve(results);\n })\n );\n}\n"],"names":["eachPackage","command","args","options","callback","worker","Promise","resolve","reject","err","results"],"mappings":";;;;+BAWA;;;eAAwBA;;;+DAVL;qBAEL;;;;;;;;;;;;;;;;;;;AAQC,SAASA,YAAYC,OAAe,EAAEC,IAAc,EAAEC,OAAoC,EAAEC,QAAuB;IAChI,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOC,IAAAA,iBAAM,EAACJ,SAASC,MAAMC,SAASC;IAC1E,OAAO,IAAIE,QAAQ,SAACC,SAASC;eAC3BH,IAAAA,iBAAM,EAACJ,SAASC,MAAMC,SAAwB,SAACM,KAAiBC;YAC9DD,MAAMD,OAAOC,OAAOF,QAAQG;QAC9B;;AAEJ"} |
@@ -11,3 +11,3 @@ import { type Entry } from 'fs-iterator'; | ||
| import type { EachOptions } from '../types.js'; | ||
| export type Callback = (err?: Error, result?: PackageEntry[][] | DependencyGraph<PackageEntry>) => undefined; | ||
| export default function packageLayers(options: EachOptions, callback: Callback): undefined; | ||
| export type Callback = (err?: Error, result?: PackageEntry[][] | DependencyGraph<PackageEntry>) => void; | ||
| export default function packageLayers(options: EachOptions, callback: Callback): void; |
@@ -11,3 +11,3 @@ import { type Entry } from 'fs-iterator'; | ||
| import type { EachOptions } from '../types.js'; | ||
| export type Callback = (err?: Error, result?: PackageEntry[][] | DependencyGraph<PackageEntry>) => undefined; | ||
| export default function packageLayers(options: EachOptions, callback: Callback): undefined; | ||
| export type Callback = (err?: Error, result?: PackageEntry[][] | DependencyGraph<PackageEntry>) => void; | ||
| export default function packageLayers(options: EachOptions, callback: Callback): void; |
@@ -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 path from 'path';\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, result?: PackageEntry[][] | DependencyGraph<PackageEntry>) => undefined;\n\nconst defaultIgnores = 'node_modules,.git';\n\nexport default function packageLayers(options: EachOptions, callback: Callback): 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\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): undefined => {\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) {\n const sorted = entries.sort((a, b) => path.dirname(a.path).localeCompare(path.dirname(b.path))) as PackageEntry[];\n return callback(null, [sorted]);\n }\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) {\n cycles.forEach((c) => {\n console.log(`Skipping cycle: ${c.join(' -> ')}`);\n });\n }\n if (duplicates && duplicates.length) {\n duplicates.forEach((d) => {\n console.log(`Skipping duplicates: ${JSON.stringify(d.values.map((x) => x.path))}`);\n });\n }\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, { 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","sorted","sort","a","b","dirname","localeCompare","nodes","dependencies","i","length","j","e","deps","optionalDependencies","graph","Graph","from","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 path from 'path';\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, result?: PackageEntry[][] | 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) {\n const sorted = entries.sort((a, b) => path.dirname(a.path).localeCompare(path.dirname(b.path))) as PackageEntry[];\n return callback(null, [sorted]);\n }\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) {\n cycles.forEach((c) => {\n console.log(`Skipping cycle: ${c.join(' -> ')}`);\n });\n }\n if (duplicates && duplicates.length) {\n duplicates.forEach((d) => {\n console.log(`Skipping duplicates: ${JSON.stringify(d.values.map((x) => x.path))}`);\n });\n }\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, { 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","sorted","sort","a","b","dirname","localeCompare","nodes","dependencies","i","length","j","e","deps","optionalDependencies","graph","Graph","from","cycles","duplicates","c","join","d","stringify","values","map","x","cyclicPackages","ci","cj","String","cyclicName","key","depList","di","splice"],"mappings":"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"} |
@@ -26,2 +26,2 @@ import type { SpawnOptions, SpawnResult } from 'cross-spawn-cb'; | ||
| } | ||
| export type EachCallback = (err?: EachError, results?: EachResult[]) => undefined; | ||
| export type EachCallback = (err?: EachError, results?: EachResult[]) => void; |
@@ -26,2 +26,2 @@ import type { SpawnOptions, SpawnResult } from 'cross-spawn-cb'; | ||
| } | ||
| export type EachCallback = (err?: EachError, results?: EachResult[]) => undefined; | ||
| export type EachCallback = (err?: EachError, results?: EachResult[]) => void; |
| import type { EachCallback, EachOptions } from './types.js'; | ||
| export default function worker(command: string, args: string[], options: EachOptions, callback: EachCallback): undefined; | ||
| export default function worker(command: string, args: string[], options: EachOptions, callback: EachCallback): void; |
| import type { EachCallback, EachOptions } from './types.js'; | ||
| export default function worker(command: string, args: string[], options: EachOptions, callback: EachCallback): undefined; | ||
| export default function worker(command: string, args: string[], options: EachOptions, callback: EachCallback): void; |
@@ -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 { 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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"} | ||
| {"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): 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 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): void => {\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): void => {\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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"} |
@@ -1,2 +0,2 @@ | ||
| declare const _default: (argv: string[], name: string) => undefined; | ||
| declare const _default: (argv: string[], name: string) => void; | ||
| export default _default; |
@@ -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): 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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"} | ||
| {"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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"} |
@@ -5,3 +5,3 @@ import type { EachCallback, EachOptions, EachResult } from './types.js'; | ||
| export default function eachPackage(command: string, args: string[], options: EachOptions): Promise<EachResult[]>; | ||
| export default function eachPackage(command: string, args: string[], callback: EachCallback): undefined; | ||
| export default function eachPackage(command: string, args: string[], options: EachOptions, callback: EachCallback): undefined; | ||
| export default function eachPackage(command: string, args: string[], callback: EachCallback): void; | ||
| export default function eachPackage(command: string, args: string[], options: EachOptions, callback: EachCallback): void; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/index.ts"],"sourcesContent":["import type { EachCallback, EachError, EachOptions, EachResult } from './types.ts';\nimport worker from './worker.ts';\n\nexport * from './types.ts';\n\nexport default function eachPackage(command: string, args: string[]): Promise<EachResult[]>;\nexport default function eachPackage(command: string, args: string[], options: EachOptions): Promise<EachResult[]>;\n\nexport default function eachPackage(command: string, args: string[], callback: EachCallback): undefined;\nexport default function eachPackage(command: string, args: string[], options: EachOptions, callback: EachCallback): undefined;\n\nexport default function eachPackage(command: string, args: string[], options?: EachOptions | EachCallback, callback?: EachCallback): undefined | Promise<EachResult[]> {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n if (typeof callback === 'function') return worker(command, args, options, callback);\n return new Promise((resolve, reject) =>\n worker(command, args, options, (err?: EachError, results?: EachResult[]): undefined => {\n err ? reject(err) : resolve(results);\n })\n );\n}\n"],"names":["worker","eachPackage","command","args","options","callback","Promise","resolve","reject","err","results"],"mappings":"AACA,OAAOA,YAAY,cAAc;AAEjC,cAAc,aAAa;AAQ3B,eAAe,SAASC,YAAYC,OAAe,EAAEC,IAAc,EAAEC,OAAoC,EAAEC,QAAuB;IAChI,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOL,OAAOE,SAASC,MAAMC,SAASC;IAC1E,OAAO,IAAIC,QAAQ,CAACC,SAASC,SAC3BR,OAAOE,SAASC,MAAMC,SAAS,CAACK,KAAiBC;YAC/CD,MAAMD,OAAOC,OAAOF,QAAQG;QAC9B;AAEJ"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/index.ts"],"sourcesContent":["import type { EachCallback, EachError, EachOptions, EachResult } from './types.ts';\nimport worker from './worker.ts';\n\nexport * from './types.ts';\n\nexport default function eachPackage(command: string, args: string[]): Promise<EachResult[]>;\nexport default function eachPackage(command: string, args: string[], options: EachOptions): Promise<EachResult[]>;\n\nexport default function eachPackage(command: string, args: string[], callback: EachCallback): void;\nexport default function eachPackage(command: string, args: string[], options: EachOptions, callback: EachCallback): void;\n\nexport default function eachPackage(command: string, args: string[], options?: EachOptions | EachCallback, callback?: EachCallback): void | Promise<EachResult[]> {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n if (typeof callback === 'function') return worker(command, args, options, callback);\n return new Promise((resolve, reject) =>\n worker(command, args, options as EachOptions, (err?: EachError, results?: EachResult[]): void => {\n err ? reject(err) : resolve(results);\n })\n );\n}\n"],"names":["worker","eachPackage","command","args","options","callback","Promise","resolve","reject","err","results"],"mappings":"AACA,OAAOA,YAAY,cAAc;AAEjC,cAAc,aAAa;AAQ3B,eAAe,SAASC,YAAYC,OAAe,EAAEC,IAAc,EAAEC,OAAoC,EAAEC,QAAuB;IAChI,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOL,OAAOE,SAASC,MAAMC,SAASC;IAC1E,OAAO,IAAIC,QAAQ,CAACC,SAASC,SAC3BR,OAAOE,SAASC,MAAMC,SAAwB,CAACK,KAAiBC;YAC9DD,MAAMD,OAAOC,OAAOF,QAAQG;QAC9B;AAEJ"} |
@@ -11,3 +11,3 @@ import { type Entry } from 'fs-iterator'; | ||
| import type { EachOptions } from '../types.js'; | ||
| export type Callback = (err?: Error, result?: PackageEntry[][] | DependencyGraph<PackageEntry>) => undefined; | ||
| export default function packageLayers(options: EachOptions, callback: Callback): undefined; | ||
| export type Callback = (err?: Error, result?: PackageEntry[][] | DependencyGraph<PackageEntry>) => void; | ||
| export default function packageLayers(options: EachOptions, callback: Callback): void; |
@@ -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 path from 'path';\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, result?: PackageEntry[][] | DependencyGraph<PackageEntry>) => undefined;\n\nconst defaultIgnores = 'node_modules,.git';\n\nexport default function packageLayers(options: EachOptions, callback: Callback): 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\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): undefined => {\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) {\n const sorted = entries.sort((a, b) => path.dirname(a.path).localeCompare(path.dirname(b.path))) as PackageEntry[];\n return callback(null, [sorted]);\n }\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) {\n cycles.forEach((c) => {\n console.log(`Skipping cycle: ${c.join(' -> ')}`);\n });\n }\n if (duplicates && duplicates.length) {\n duplicates.forEach((d) => {\n console.log(`Skipping duplicates: ${JSON.stringify(d.values.map((x) => x.path))}`);\n });\n }\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, { nodes, dependencies });\n }\n );\n}\n"],"names":["fs","Iterator","path","removeBOM","match","Graph","defaultIgnores","packageLayers","options","callback","depth","Infinity","cwd","process","ignores","ignore","matcher","exclude","iterator","filter","entry","stats","isDirectory","realStats","basename","isFile","root","lstat","entries","forEach","cb","readFile","fullPath","err","contents","pkg","JSON","parse","private","name","undefined","package","push","_err","console","log","concurrency","callbacks","topological","sorted","sort","a","b","dirname","localeCompare","nodes","dependencies","i","length","j","e","deps","optionalDependencies","graph","from","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 path from 'path';\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, result?: PackageEntry[][] | 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) {\n const sorted = entries.sort((a, b) => path.dirname(a.path).localeCompare(path.dirname(b.path))) as PackageEntry[];\n return callback(null, [sorted]);\n }\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) {\n cycles.forEach((c) => {\n console.log(`Skipping cycle: ${c.join(' -> ')}`);\n });\n }\n if (duplicates && duplicates.length) {\n duplicates.forEach((d) => {\n console.log(`Skipping duplicates: ${JSON.stringify(d.values.map((x) => x.path))}`);\n });\n }\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, { nodes, dependencies });\n }\n );\n}\n"],"names":["fs","Iterator","path","removeBOM","match","Graph","defaultIgnores","packageLayers","options","callback","depth","Infinity","cwd","process","ignores","ignore","matcher","exclude","iterator","filter","entry","stats","isDirectory","realStats","basename","isFile","root","lstat","entries","forEach","cb","readFile","fullPath","err","contents","pkg","JSON","parse","private","name","undefined","package","push","_err","console","log","concurrency","callbacks","topological","sorted","sort","a","b","dirname","localeCompare","nodes","dependencies","i","length","j","e","deps","optionalDependencies","graph","from","cycles","duplicates","c","join","d","stringify","values","map","x","cyclicPackages","ci","cj","String","cyclicName","key","depList","di","splice"],"mappings":"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"} |
@@ -26,2 +26,2 @@ import type { SpawnOptions, SpawnResult } from 'cross-spawn-cb'; | ||
| } | ||
| export type EachCallback = (err?: EachError, results?: EachResult[]) => undefined; | ||
| export type EachCallback = (err?: EachError, results?: EachResult[]) => void; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/types.ts"],"sourcesContent":["import type { SpawnOptions, SpawnResult } from 'cross-spawn-cb';\n\nexport interface EachResult {\n command: string;\n args: string[];\n path: string;\n version?: string;\n result?: SpawnResult;\n error?: Error;\n}\n\nexport interface EachError extends Error {\n results?: EachResult[];\n}\n\nexport interface EachOptions extends SpawnOptions {\n concurrency?: number;\n depth?: number;\n expanded?: boolean;\n failDependents?: boolean;\n ignore?: string;\n interactive?: boolean;\n private?: boolean;\n root?: boolean;\n silent?: boolean;\n streaming?: boolean;\n topological?: boolean;\n}\n\nexport type EachCallback = (err?: EachError, results?: EachResult[]) => undefined;\n"],"names":[],"mappings":"AA6BA,WAAkF"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/monorepo/each-package/src/types.ts"],"sourcesContent":["import type { SpawnOptions, SpawnResult } from 'cross-spawn-cb';\n\nexport interface EachResult {\n command: string;\n args: string[];\n path: string;\n version?: string;\n result?: SpawnResult;\n error?: Error;\n}\n\nexport interface EachError extends Error {\n results?: EachResult[];\n}\n\nexport interface EachOptions extends SpawnOptions {\n concurrency?: number;\n depth?: number;\n expanded?: boolean;\n failDependents?: boolean;\n ignore?: string;\n interactive?: boolean;\n private?: boolean;\n root?: boolean;\n silent?: boolean;\n streaming?: boolean;\n topological?: boolean;\n}\n\nexport type EachCallback = (err?: EachError, results?: EachResult[]) => void;\n"],"names":[],"mappings":"AA6BA,WAA6E"} |
| import type { EachCallback, EachOptions } from './types.js'; | ||
| export default function worker(command: string, args: string[], options: EachOptions, callback: EachCallback): undefined; | ||
| export default function worker(command: string, args: string[], options: EachOptions, callback: EachCallback): void; |
@@ -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 { 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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"} | ||
| {"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): 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 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): void => {\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): void => {\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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"} |
+18
-18
| { | ||
| "name": "each-package", | ||
| "version": "1.4.11", | ||
| "version": "1.4.12", | ||
| "description": "Run commands in each package folder starting with cwd skipping node_modules folders", | ||
@@ -43,23 +43,23 @@ "keywords": [ | ||
| "dependencies": { | ||
| "cross-spawn-cb": "^2.4.12", | ||
| "exit-compat": "^1.0.1", | ||
| "fs-iterator": "^6.1.10", | ||
| "getopts-compat": "^2.2.6", | ||
| "queue-cb": "^1.6.1", | ||
| "cross-spawn-cb": "^3.0.0", | ||
| "exit-compat": "^1.0.0", | ||
| "fs-iterator": "^7.0.0", | ||
| "getopts-compat": "^2.2.5", | ||
| "queue-cb": "^1.0.0", | ||
| "remove-bom-buffer": "^3.0.0", | ||
| "spawn-streaming": "^1.1.13", | ||
| "spawn-term": "^3.3.2", | ||
| "test-match": "^1.1.2", | ||
| "topological-scheduler": "^0.1.0", | ||
| "topological-sort-group": "^4.0.0" | ||
| "spawn-streaming": "^1.1.15", | ||
| "spawn-term": "^3.3.5", | ||
| "test-match": "^1.0.0", | ||
| "topological-scheduler": "^1.0.0", | ||
| "topological-sort-group": "^4.0.2" | ||
| }, | ||
| "devDependencies": { | ||
| "@types/mocha": "^10.0.10", | ||
| "@types/node": "^25.0.1", | ||
| "@types/mocha": "*", | ||
| "@types/node": "*", | ||
| "cr": "^0.1.0", | ||
| "is-version": "^1.0.7", | ||
| "node-version-use": "^2.1.5", | ||
| "pinkie-promise": "^2.0.1", | ||
| "ts-dev-stack": "^1.21.3", | ||
| "tsds-config": "^0.2.1" | ||
| "is-version": "^1.0.9", | ||
| "node-version-use": "*", | ||
| "pinkie-promise": "*", | ||
| "ts-dev-stack": "*", | ||
| "tsds-config": "*" | ||
| }, | ||
@@ -66,0 +66,0 @@ "engines": { |
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
98967
-0.24%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated
Updated
Updated
Updated
Updated
Updated
Updated
Updated