{"version":3,"file":"index.cjs","names":[],"sources":["../src/yargs/log-level.yargs.ts","../src/yargs/cwd.yargs.ts","../src/yargs/dry.yargs.ts","../src/yargs/force.yargs.ts","../src/yargs/collect-workspace-packages.yargs.ts","../src/yargs/default-yargs.function.ts","../src/yargs/yargs-builder.class.ts"],"sourcesContent":["import type { NormalizedLogLevelOption } from '@alexaegis/logging';\nimport { isLogLevelEnumKey, isLogLevelEnumValue, LogLevel } from '@alexaegis/logging';\nimport type { Argv, MiddlewareFunction } from 'yargs';\n\nexport const yargsForLogLevelOption = <T>(yargs: Argv<T>): Argv<T & NormalizedLogLevelOption> => {\n\tconst logLevelYargs = yargs\n\t\t.option('logLevel', {\n\t\t\talias: 'll',\n\t\t\tchoices: Object.values(LogLevel),\n\t\t\tdescription: 'Minimum logLevel',\n\t\t\tdefault: LogLevel.INFO,\n\t\t\tcoerce: (value: string): LogLevel => {\n\t\t\t\tconst i = Number.parseInt(value, 10);\n\t\t\t\tif (!Number.isNaN(i) && isLogLevelEnumValue(i)) {\n\t\t\t\t\treturn i;\n\t\t\t\t} else if (isLogLevelEnumKey(value)) {\n\t\t\t\t\treturn LogLevel[value];\n\t\t\t\t} else {\n\t\t\t\t\treturn LogLevel.INFO;\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\t\t.option('quiet', {\n\t\t\talias: ['q', 'silent'],\n\t\t\tdescription: 'Turn off logging',\n\t\t\tboolean: true,\n\t\t\tconflicts: ['verbose'],\n\t\t})\n\t\t.option('verbose', {\n\t\t\talias: 'v',\n\t\t\tdescription: 'Turn on (almost) all logging',\n\t\t\tboolean: true,\n\t\t\tconflicts: ['silent'],\n\t\t});\n\t// Middleware looks like is not typed well in @types/yargs\n\treturn logLevelYargs.middleware(((args: Awaited<typeof logLevelYargs.argv>) => {\n\t\tif (args.quiet) {\n\t\t\treturn { logLevel: LogLevel.OFF };\n\t\t} else if (args.verbose) {\n\t\t\treturn { logLevel: LogLevel.TRACE };\n\t\t} else {\n\t\t\treturn undefined;\n\t\t}\n\t}) as MiddlewareFunction);\n};\n","import type { NormalizedCwdOption } from '@alexaegis/fs';\nimport type { Argv } from 'yargs';\n\nexport const yargsForCwdOption = <T>(yargs: Argv<T>): Argv<T & NormalizedCwdOption> => {\n\treturn yargs.option('cwd', {\n\t\tstring: true,\n\t\tdefault: process.cwd(),\n\t\tdescription:\n\t\t\t'Override the working-directy, with this you can pretend that the ' +\n\t\t\t'command was called in another directory',\n\t});\n};\n","import type { NormalizedDryOption } from '@alexaegis/common';\nimport type { Argv } from 'yargs';\n\nexport const yargsForDryOption = <T>(yargs: Argv<T>): Argv<T & NormalizedDryOption> => {\n\treturn yargs.option('dry', {\n\t\tboolean: true,\n\t\tdefault: false,\n\t\tdescription: \"Don't actually do anything just log\",\n\t});\n};\n","import type { NormalizedForceOption } from '@alexaegis/common';\nimport type { Argv } from 'yargs';\n\nexport const yargsForForceOption = <T>(yargs: Argv<T>): Argv<T & NormalizedForceOption> => {\n\treturn yargs.option('force', {\n\t\tboolean: true,\n\t\tdefault: false,\n\t\tdescription:\n\t\t\t'Disables many safety checks. It can write forcefully, ' +\n\t\t\t'even if that could result in data-loss!',\n\t});\n};\n","import type { LoggerOption } from '@alexaegis/logging';\nimport type { CollectWorkspacePackagesOptions } from '@alexaegis/workspace-tools';\nimport type { Argv } from 'yargs';\nimport { yargsForCwdOption } from './cwd.yargs.js';\nimport { yargsForDryOption } from './dry.yargs.js';\nimport { yargsForForceOption } from './force.yargs.js';\n\nexport const yargsForCollectWorkspacePackagesOptions = <T>(\n\tyargs: Argv<T>,\n): Argv<T & Omit<CollectWorkspacePackagesOptions, keyof LoggerOption>> => {\n\treturn yargsForDryOption(yargsForForceOption(yargsForCwdOption(yargs)))\n\t\t.option('skipWorkspaceRoot', {\n\t\t\tboolean: true,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Don't act on the root of the workspace\",\n\t\t})\n\t\t.option('onlyWorkspaceRoot', {\n\t\t\tboolean: true,\n\t\t\tdefault: false,\n\t\t\tdescription: 'Only act on to the root of the workspace.',\n\t\t})\n\t\t.option('dependencyCriteria', {\n\t\t\tdefault: [],\n\t\t\tarray: true,\n\t\t\tstring: true,\n\t\t\tdescription:\n\t\t\t\t'Only act on packages that have these dependencies or devDependencies listed ' +\n\t\t\t\t'in their package.json file. Empty means no such filtering is applied.',\n\t\t});\n};\n","import type { PackageJson } from '@alexaegis/workspace-tools';\nimport type { Argv } from 'yargs';\n\n/**\n *  Automatically fills version, epiloge, help and completion\n */\nexport const defaultYargsFromPackageJson =\n\t(packageJson?: PackageJson) =>\n\t<T>(yarguments: Argv<T>) => {\n\t\tlet yargs: Argv<T> = yarguments.help().completion();\n\n\t\tif (packageJson) {\n\t\t\tif (packageJson.version) {\n\t\t\t\tyargs = yargs.version(packageJson.version);\n\t\t\t}\n\n\t\t\tlet repositoryUrl: string | undefined;\n\n\t\t\tif (typeof packageJson.repository === 'string') {\n\t\t\t\trepositoryUrl = packageJson.repository;\n\t\t\t} else if (packageJson.repository && typeof packageJson.repository.url === 'string') {\n\t\t\t\trepositoryUrl = packageJson.repository.url;\n\t\t\t}\n\n\t\t\tif (packageJson.name && packageJson.version && repositoryUrl) {\n\t\t\t\tyargs = yargs.epilogue(\n\t\t\t\t\t`${packageJson.name}@${packageJson.version} see project at ${repositoryUrl}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn yargs;\n\t};\n","import type { PackageJson } from '@alexaegis/workspace-tools';\nimport type { Argv } from 'yargs';\nimport yargs from 'yargs';\nimport { defaultYargsFromPackageJson } from '../index.js';\n\nexport type YargsMutator<T, R> = (yargs: Argv<T>) => Argv<T & R>;\n\nexport class YargsBuilder<T> {\n\tprivate mutators: YargsMutator<object, T>[] = [];\n\n\tstatic empty(): YargsBuilder<object> {\n\t\treturn new YargsBuilder();\n\t}\n\n\t/**\n\t * Creates a YargsBuilder with some default options:\n\t * - enables help\n\t * - adds metadata found in packageJson for\n\t *   - version\n\t *   - epilogue showing the repository url\n\t *\n\t * It does not add any options\n\t */\n\tstatic withDefaults<T extends PackageJson>(packageJson?: T): YargsBuilder<object> {\n\t\treturn new YargsBuilder().add(defaultYargsFromPackageJson(packageJson));\n\t}\n\n\tadd<R>(mutator: YargsMutator<T, R>): YargsBuilder<T & R> {\n\t\tif (typeof mutator === 'function') {\n\t\t\tthis.mutators.push(mutator as YargsMutator<object, T & R>);\n\t\t}\n\n\t\treturn this as YargsBuilder<T & R>;\n\t}\n\n\t/***\n\t * usage: pass\n\t */\n\tbuild(\n\t\targs: string | readonly string[] | undefined = process.argv.splice(2),\n\t\tcwd?: string | undefined,\n\t): Argv<T> {\n\t\tlet y = yargs(args, cwd) as Argv<T>;\n\t\tfor (const mutator of this.mutators) {\n\t\t\ty = mutator(y) as Argv<T>;\n\t\t}\n\t\treturn y;\n\t}\n}\n"],"mappings":"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"}