Atlas Report

lib · 820 tests · 1325 ranges · 1169 concepts · density 0.3808

Concept facts

474 code concepts · 607 test concepts · 88 joint concepts

707 tests introduced at test concepts · 113 tests introduced at joint concepts · 86 concepts introduce multiple tests

Shape

single-test 3% · narrow 9% · shared 12% · broad 76% · uncovered 0%

Open strata mosaic

Subsystems

Showing the 12 largest of 16 communities. Open the complete map.

lib 968 concepts

yargs.mjs|title=yargs dsl tests positional allows an implied argument to be specified|occurrence=1 1 test · 3525 LOC · 18 files · introduces 1 test · 0 LOC · 0 files
yargs.mjs|title=yargs dsl tests positional allows a choices array to be specified|occurrence=1 1 test · 3518 LOC · 18 files · introduces 1 test · 0 LOC · 0 files

lib 81 concepts

lib 7 concepts

argsert.mjs|title=Argsert warns if too many arguments are provided|occurrence=1 1 test · 106 LOC · 3 files · introduces 1 test · 0 LOC · 0 files
argsert.ts ×1 791 tests · 97 LOC · 3 files · introduces 1 test · 1 LOC · 1 file

lib 3 concepts

argsert.ts ×3 797 tests · 92 LOC · 3 files · introduces 0 tests · 6 LOC · 1 file
parse-command.ts ×1 792 tests · 90 LOC · 3 files · introduces 0 tests · 4 LOC · 1 file
argsert.ts ×4 802 tests · 58 LOC · 3 files · introduces 0 tests · 27 LOC · 1 file

lib 3 concepts

middleware.mjs|title=middleware runs all middleware before reaching the handler|occurrence=1 2 tests · 3169 LOC · 18 files · introduces 1 test · 0 LOC · 0 files
yargs.mjs|title=yargs dsl tests command runs all middleware before reaching the handler|occurrence=1 2 tests · 3140 LOC · 18 files · introduces 1 test · 0 LOC · 0 files

lib 2 concepts

command.ts ×1 1 test · 2816 LOC · 18 files · introduces 1 test · 2 LOC · 1 file
command.ts ×1 1 test · 2815 LOC · 18 files · introduces 1 test · 1 LOC · 1 file

Hubs

Substrate hubs are foundational concepts whose intent includes at least 90% of all collected tests. The percentage is breadth, not a quality score.

Open hubs

Substrate hubs

ConceptIntent share
yerror.ts ×2
809 tests · 4 LOC · 1 file · introduces 0 tests · 4 LOC · 1 file
99%
parse-command.ts ×2
804 tests · 14 LOC · 1 file · introduces 0 tests · 14 LOC · 1 file
98%
argsert.ts ×3
803 tests · 31 LOC · 3 files · introduces 0 tests · 13 LOC · 1 file
98%
argsert.ts ×4
802 tests · 58 LOC · 3 files · introduces 0 tests · 27 LOC · 1 file
98%
parse-command.ts ×1
802 tests · 20 LOC · 1 file · introduces 1 test · 6 LOC · 1 file
98%
parse-command.ts ×3
801 tests · 83 LOC · 3 files · introduces 0 tests · 19 LOC · 2 files
98%
argsert.ts ×1
801 tests · 61 LOC · 3 files · introduces 0 tests · 3 LOC · 1 file
98%
parse-command.ts ×1
798 tests · 88 LOC · 3 files · introduces 0 tests · 5 LOC · 1 file
97%
process-argv.ts ×5
797 tests · 13 LOC · 1 file · introduces 3 tests · 13 LOC · 1 file
97%
argsert.ts ×3
797 tests · 92 LOC · 3 files · introduces 0 tests · 6 LOC · 1 file
97%

Load-bearing concepts

ConceptTest packages
yerror.ts ×2
809 tests · 4 LOC · 1 file · introduces 0 tests · 4 LOC · 1 file
10 packages
parse-command.ts ×2
804 tests · 14 LOC · 1 file · introduces 0 tests · 14 LOC · 1 file
10 packages
argsert.ts ×3
803 tests · 31 LOC · 3 files · introduces 0 tests · 13 LOC · 1 file
10 packages
argsert.ts ×4
802 tests · 58 LOC · 3 files · introduces 0 tests · 27 LOC · 1 file
10 packages
parse-command.ts ×1
802 tests · 20 LOC · 1 file · introduces 1 test · 6 LOC · 1 file
10 packages
argsert.ts ×1
801 tests · 61 LOC · 3 files · introduces 0 tests · 3 LOC · 1 file
10 packages
parse-command.ts ×3
801 tests · 83 LOC · 3 files · introduces 0 tests · 19 LOC · 2 files
10 packages
parse-command.ts ×1
798 tests · 88 LOC · 3 files · introduces 0 tests · 5 LOC · 1 file
10 packages
argsert.ts ×3
797 tests · 92 LOC · 3 files · introduces 0 tests · 6 LOC · 1 file
10 packages
process-argv.ts ×5
797 tests · 13 LOC · 1 file · introduces 3 tests · 13 LOC · 1 file
10 packages

Largest code-introducing concepts

ConceptIntroduced ranges
yargs-factory.ts ×124
788 tests · 1203 LOC · 18 files · introduces 1 test · 1015 LOC · 10 files
197 ranges
yargs-factory.ts ×35
787 tests · 1896 LOC · 18 files · introduces 0 tests · 577 LOC · 8 files
93 ranges
yargs-factory.ts ×28
262 tests · 1977 LOC · 18 files · introduces 0 tests · 76 LOC · 1 file
28 ranges
usage.ts ×19
417 tests · 2190 LOC · 18 files · introduces 0 tests · 125 LOC · 2 files
20 ranges
completion.ts ×19
78 tests · 2283 LOC · 18 files · introduces 0 tests · 75 LOC · 1 file
19 ranges
usage.ts ×17
416 tests · 2342 LOC · 18 files · introduces 0 tests · 142 LOC · 2 files
18 ranges
command.ts ×12
274 tests · 2250 LOC · 18 files · introduces 0 tests · 95 LOC · 1 file
12 ranges
yargs-factory.ts ×9
709 tests · 1984 LOC · 18 files · introduces 0 tests · 72 LOC · 2 files
10 ranges
command.ts ×8
215 tests · 2444 LOC · 18 files · introduces 0 tests · 55 LOC · 2 files
9 ranges
yargs-factory.ts ×5
692 tests · 2060 LOC · 18 files · introduces 0 tests · 66 LOC · 4 files
8 ranges

Largest test-introducing concepts

ConceptIntroduced tests
yargs-factory.ts ×1
453 tests · 1902 LOC · 18 files · introduces 9 tests · 1 LOC · 1 file
9 tests
validation.mjs|title=validation tests choices fails with one invalid value|occurrence=1, validation.mjs|title=validation tests choices fails with case-insensitive value|occurrence=1, +3
5 tests · 2465 LOC · 18 files · introduces 5 tests · 0 LOC · 0 files
5 tests
yargs.mjs|title=yargs dsl tests config extends handles absolute paths|occurrence=1, yargs.mjs|title=yargs dsl tests config extends does not deep merge objects by default|occurrence=1, +3
7 tests · 2433 LOC · 18 files · introduces 5 tests · 0 LOC · 0 files
5 tests
completion.ts ×1
6 tests · 1931 LOC · 18 files · introduces 4 tests · 22 LOC · 2 files
4 tests
yargs-factory.ts ×1
6 tests · 1909 LOC · 18 files · introduces 4 tests · 1 LOC · 1 file
4 tests
command.mjs|title=Command API accepts function as 3rd argument|occurrence=1, command.mjs|title=Command ignores extra spaces in command string|occurrence=1, +2
12 tests · 2032 LOC · 18 files · introduces 4 tests · 0 LOC · 0 files
4 tests
command.mjs|title=Command API accepts module (with command array) as 1st argument|occurrence=1, command.mjs|title=Command API accepts module (with command array and aliases array) as 1st argument|occurrence=1, +2
4 tests · 2056 LOC · 18 files · introduces 4 tests · 0 LOC · 0 files
4 tests
completion, --get-yargs-completions, …) completes single digit options with two dashes|occurrence=1, completion, --get-yargs-completions, …) completes short options with a single dash when the user did not already enter two dashes|occurrence=1, +2
4 tests · 2579 LOC · 18 files · introduces 4 tests · 0 LOC · 0 files
4 tests
yargs.mjs|title=yargs dsl tests parse parses a quoted string|occurrence=1, yargs.mjs|title=yargs dsl tests parse parses a simple string|occurrence=1, +2
120 tests · 2360 LOC · 18 files · introduces 4 tests · 0 LOC · 0 files
4 tests
process-argv.ts ×5
797 tests · 13 LOC · 1 file · introduces 3 tests · 13 LOC · 1 file
3 tests

Fragile code

62 single-proof ranges.

FileLinesLengthTest
lib/yargs-factory.ts 945-957 13 mocha:v1|namespace=yargs@4153e0f097aeaf43a71a2530db6dda51dff2c544:main|file=test/usage.mjs|title=usage tests version option when an option or alias "version" is set emits warning if version is not disabled|occurrence=1
lib/validation.ts 419-429 11 mocha:v1|namespace=yargs@4153e0f097aeaf43a71a2530db6dda51dff2c544:main|file=test/validation.mjs|title=validation tests conflicts fails if conflicting arguments are provided, and strip-dashed is enabled|occurrence=1
lib/yargs-factory.ts 1518-1527 10 mocha:v1|namespace=yargs@4153e0f097aeaf43a71a2530db6dda51dff2c544:main|file=test/usage.mjs|title=usage tests version option when an option or alias "version" is set emits warning if version is not disabled|occurrence=1
lib/completion.ts 322-329 8 mocha:v1|namespace=yargs@4153e0f097aeaf43a71a2530db6dda51dff2c544:main|file=test/completion.mjs|title=Completion completion() if a callback parameter is provided, completions can be asynchronous|occurrence=1
lib/yargs-factory.ts 1575-1581 7 mocha:v1|namespace=yargs@4153e0f097aeaf43a71a2530db6dda51dff2c544:main|file=test/yargs.mjs|title=yargs dsl tests should use bin name for $0, eliminating path|occurrence=1
lib/yargs-factory.ts 595-600 6 mocha:v1|namespace=yargs@4153e0f097aeaf43a71a2530db6dda51dff2c544:main|file=test/yargs.mjs|title=yargs dsl tests pkgConf combines yargs defaults with package.json values|occurrence=1
lib/yargs-factory.ts 1252-1257 6 mocha:v1|namespace=yargs@4153e0f097aeaf43a71a2530db6dda51dff2c544:main|file=test/usage.mjs|title=usage tests demand options using .demand() using .require() missing argument message given if one command and an argument not on the list are provided|occurrence=1
lib/command.ts 115-119 5 mocha:v1|namespace=yargs@4153e0f097aeaf43a71a2530db6dda51dff2c544:main|file=test/command.mjs|title=Command commandDir derives 'command' string from filename when not exported|occurrence=1
lib/yargs-factory.ts 382-386 5 mocha:v1|namespace=yargs@4153e0f097aeaf43a71a2530db6dda51dff2c544:main|file=test/yargs.mjs|title=yargs dsl tests .coerce() supports object arg (as map of multiple options)|occurrence=1
lib/yargs-factory.ts 1315-1319 5 mocha:v1|namespace=yargs@4153e0f097aeaf43a71a2530db6dda51dff2c544:main|file=test/usage.mjs|title=usage tests async builder shows appropriate usage instructions for nested command|occurrence=1

Surprising connections

Concepts with few tests spanning multiple packages

ConceptPackagesTests
apply-extends.ts ×1
1 test · 2420 LOC · 18 files · introduces 1 test · 4 LOC · 1 file
3 · lib, lib/typings, lib/utils 1
apply-extends.ts ×1
1 test · 1979 LOC · 18 files · introduces 1 test · 2 LOC · 1 file
3 · lib, lib/typings, lib/utils 1
command.mjs|title=Command API accepts array, string as first 2 arguments|occurrence=1
1 test · 2032 LOC · 18 files · introduces 1 test · 0 LOC · 0 files
3 · lib, lib/typings, lib/utils 1
command.mjs|title=Command API accepts module (missing describe, builder function) as 1st argument|occurrence=1
1 test · 2045 LOC · 18 files · introduces 1 test · 0 LOC · 0 files
3 · lib, lib/typings, lib/utils 1
command.mjs|title=Command allows command handler to be invoked repeatedly when help is enabled|occurrence=1
1 test · 3122 LOC · 18 files · introduces 1 test · 0 LOC · 0 files
3 · lib, lib/typings, lib/utils 1
command.mjs|title=Command async builder allows command to be defined in async builder|occurrence=1
1 test · 3271 LOC · 18 files · introduces 1 test · 0 LOC · 0 files
3 · lib, lib/typings, lib/utils 1
command.mjs|title=Command async builder allows deeply nested command to be defined in async builder|occurrence=1
1 test · 3252 LOC · 18 files · introduces 1 test · 0 LOC · 0 files
3 · lib, lib/typings, lib/utils 1
command.mjs|title=Command async builder allows positionals to be configured asynchronously|occurrence=1
1 test · 3442 LOC · 18 files · introduces 1 test · 0 LOC · 0 files
3 · lib, lib/typings, lib/utils 1
command.mjs|title=Command async builder does not print to stdout when parse callback is provided|occurrence=1
1 test · 2969 LOC · 18 files · introduces 1 test · 0 LOC · 0 files
3 · lib, lib/typings, lib/utils 1
command.mjs|title=Command async displays error and appropriate help message when handler fails|occurrence=1
1 test · 3265 LOC · 18 files · introduces 1 test · 0 LOC · 0 files
3 · lib, lib/typings, lib/utils 1