#
tokens: 49336/50000 13/15 files (page 1/2)
lines: off (toggle) GitHub
raw markdown copy
This is page 1 of 2. Use http://codebase.md/jacck/mcp-reasoner?page={x} to view the full context.

# Directory Structure

```
├── .gitignore
├── dist
│   ├── index.d.ts
│   ├── index.js
│   ├── reasoner.d.ts
│   ├── reasoner.js
│   ├── state.d.ts
│   ├── state.js
│   ├── strategies
│   │   ├── base.d.ts
│   │   ├── base.js
│   │   ├── beam-search.d.ts
│   │   ├── beam-search.js
│   │   ├── factory.d.ts
│   │   ├── factory.js
│   │   ├── mcts.d.ts
│   │   └── mcts.js
│   ├── types.d.ts
│   └── types.js
├── LICENSE
├── node_modules
│   ├── .bin
│   │   ├── resolve
│   │   ├── resolve.cmd
│   │   ├── resolve.ps1
│   │   ├── shjs
│   │   ├── shjs.cmd
│   │   ├── shjs.ps1
│   │   ├── shx
│   │   ├── shx.cmd
│   │   ├── shx.ps1
│   │   ├── tsc
│   │   ├── tsc.cmd
│   │   ├── tsc.ps1
│   │   ├── tsserver
│   │   ├── tsserver.cmd
│   │   └── tsserver.ps1
│   ├── .package-lock.json
│   ├── @modelcontextprotocol
│   │   └── sdk
│   │       ├── dist
│   │       │   ├── cli.d.ts
│   │       │   ├── cli.d.ts.map
│   │       │   ├── cli.js
│   │       │   ├── cli.js.map
│   │       │   ├── client
│   │       │   │   ├── index.d.ts
│   │       │   │   ├── index.d.ts.map
│   │       │   │   ├── index.js
│   │       │   │   ├── index.js.map
│   │       │   │   ├── index.test.d.ts
│   │       │   │   ├── index.test.d.ts.map
│   │       │   │   ├── index.test.js
│   │       │   │   ├── index.test.js.map
│   │       │   │   ├── sse.d.ts
│   │       │   │   ├── sse.d.ts.map
│   │       │   │   ├── sse.js
│   │       │   │   ├── sse.js.map
│   │       │   │   ├── stdio.d.ts
│   │       │   │   ├── stdio.d.ts.map
│   │       │   │   ├── stdio.js
│   │       │   │   ├── stdio.js.map
│   │       │   │   ├── stdio.test.d.ts
│   │       │   │   ├── stdio.test.d.ts.map
│   │       │   │   ├── stdio.test.js
│   │       │   │   ├── stdio.test.js.map
│   │       │   │   ├── websocket.d.ts
│   │       │   │   ├── websocket.d.ts.map
│   │       │   │   ├── websocket.js
│   │       │   │   └── websocket.js.map
│   │       │   ├── inMemory.d.ts
│   │       │   ├── inMemory.d.ts.map
│   │       │   ├── inMemory.js
│   │       │   ├── inMemory.js.map
│   │       │   ├── inMemory.test.d.ts
│   │       │   ├── inMemory.test.d.ts.map
│   │       │   ├── inMemory.test.js
│   │       │   ├── inMemory.test.js.map
│   │       │   ├── server
│   │       │   │   ├── index.d.ts
│   │       │   │   ├── index.d.ts.map
│   │       │   │   ├── index.js
│   │       │   │   ├── index.js.map
│   │       │   │   ├── index.test.d.ts
│   │       │   │   ├── index.test.d.ts.map
│   │       │   │   ├── index.test.js
│   │       │   │   ├── index.test.js.map
│   │       │   │   ├── sse.d.ts
│   │       │   │   ├── sse.d.ts.map
│   │       │   │   ├── sse.js
│   │       │   │   ├── sse.js.map
│   │       │   │   ├── stdio.d.ts
│   │       │   │   ├── stdio.d.ts.map
│   │       │   │   ├── stdio.js
│   │       │   │   ├── stdio.js.map
│   │       │   │   ├── stdio.test.d.ts
│   │       │   │   ├── stdio.test.d.ts.map
│   │       │   │   ├── stdio.test.js
│   │       │   │   └── stdio.test.js.map
│   │       │   ├── shared
│   │       │   │   ├── protocol.d.ts
│   │       │   │   ├── protocol.d.ts.map
│   │       │   │   ├── protocol.js
│   │       │   │   ├── protocol.js.map
│   │       │   │   ├── stdio.d.ts
│   │       │   │   ├── stdio.d.ts.map
│   │       │   │   ├── stdio.js
│   │       │   │   ├── stdio.js.map
│   │       │   │   ├── stdio.test.d.ts
│   │       │   │   ├── stdio.test.d.ts.map
│   │       │   │   ├── stdio.test.js
│   │       │   │   ├── stdio.test.js.map
│   │       │   │   ├── transport.d.ts
│   │       │   │   ├── transport.d.ts.map
│   │       │   │   ├── transport.js
│   │       │   │   └── transport.js.map
│   │       │   ├── types.d.ts
│   │       │   ├── types.d.ts.map
│   │       │   ├── types.js
│   │       │   └── types.js.map
│   │       ├── LICENSE
│   │       ├── package.json
│   │       └── README.md
│   ├── @types
│   │   └── node
│   │       ├── assert
│   │       │   └── strict.d.ts
│   │       ├── assert.d.ts
│   │       ├── async_hooks.d.ts
│   │       ├── buffer.buffer.d.ts
│   │       ├── buffer.d.ts
│   │       ├── child_process.d.ts
│   │       ├── cluster.d.ts
│   │       ├── compatibility
│   │       │   ├── disposable.d.ts
│   │       │   ├── index.d.ts
│   │       │   ├── indexable.d.ts
│   │       │   └── iterators.d.ts
│   │       ├── console.d.ts
│   │       ├── constants.d.ts
│   │       ├── crypto.d.ts
│   │       ├── dgram.d.ts
│   │       ├── diagnostics_channel.d.ts
│   │       ├── dns
│   │       │   └── promises.d.ts
│   │       ├── dns.d.ts
│   │       ├── dom-events.d.ts
│   │       ├── domain.d.ts
│   │       ├── events.d.ts
│   │       ├── fs
│   │       │   └── promises.d.ts
│   │       ├── fs.d.ts
│   │       ├── globals.d.ts
│   │       ├── globals.typedarray.d.ts
│   │       ├── http.d.ts
│   │       ├── http2.d.ts
│   │       ├── https.d.ts
│   │       ├── index.d.ts
│   │       ├── inspector.d.ts
│   │       ├── LICENSE
│   │       ├── module.d.ts
│   │       ├── net.d.ts
│   │       ├── os.d.ts
│   │       ├── package.json
│   │       ├── path.d.ts
│   │       ├── perf_hooks.d.ts
│   │       ├── process.d.ts
│   │       ├── punycode.d.ts
│   │       ├── querystring.d.ts
│   │       ├── readline
│   │       │   └── promises.d.ts
│   │       ├── readline.d.ts
│   │       ├── README.md
│   │       ├── repl.d.ts
│   │       ├── sea.d.ts
│   │       ├── stream
│   │       │   ├── consumers.d.ts
│   │       │   ├── promises.d.ts
│   │       │   └── web.d.ts
│   │       ├── stream.d.ts
│   │       ├── string_decoder.d.ts
│   │       ├── test.d.ts
│   │       ├── timers
│   │       │   └── promises.d.ts
│   │       ├── timers.d.ts
│   │       ├── tls.d.ts
│   │       ├── trace_events.d.ts
│   │       ├── ts5.6
│   │       │   ├── buffer.buffer.d.ts
│   │       │   ├── globals.typedarray.d.ts
│   │       │   └── index.d.ts
│   │       ├── tty.d.ts
│   │       ├── url.d.ts
│   │       ├── util.d.ts
│   │       ├── v8.d.ts
│   │       ├── vm.d.ts
│   │       ├── wasi.d.ts
│   │       ├── worker_threads.d.ts
│   │       └── zlib.d.ts
│   ├── balanced-match
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── index.js
│   │   ├── LICENSE.md
│   │   ├── package.json
│   │   └── README.md
│   ├── brace-expansion
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── bytes
│   │   ├── History.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── Readme.md
│   ├── chalk
│   │   ├── license
│   │   ├── package.json
│   │   ├── readme.md
│   │   └── source
│   │       ├── index.d.ts
│   │       ├── index.js
│   │       ├── utilities.js
│   │       └── vendor
│   │           ├── ansi-styles
│   │           │   ├── index.d.ts
│   │           │   └── index.js
│   │           └── supports-color
│   │               ├── browser.d.ts
│   │               ├── browser.js
│   │               ├── index.d.ts
│   │               └── index.js
│   ├── concat-map
│   │   ├── .travis.yml
│   │   ├── example
│   │   │   └── map.js
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.markdown
│   │   └── test
│   │       └── map.js
│   ├── content-type
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── depd
│   │   ├── History.md
│   │   ├── index.js
│   │   ├── lib
│   │   │   └── browser
│   │   │       └── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── Readme.md
│   ├── fs.realpath
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── old.js
│   │   ├── package.json
│   │   └── README.md
│   ├── function-bind
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   ├── FUNDING.yml
│   │   │   └── SECURITY.md
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── implementation.js
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── test
│   │       ├── .eslintrc
│   │       └── index.js
│   ├── glob
│   │   ├── common.js
│   │   ├── glob.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── sync.js
│   ├── hasown
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── tsconfig.json
│   ├── http-errors
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── iconv-lite
│   │   ├── .github
│   │   │   └── dependabot.yml
│   │   ├── .idea
│   │   │   ├── codeStyles
│   │   │   │   ├── codeStyleConfig.xml
│   │   │   │   └── Project.xml
│   │   │   ├── iconv-lite.iml
│   │   │   ├── inspectionProfiles
│   │   │   │   └── Project_Default.xml
│   │   │   ├── modules.xml
│   │   │   └── vcs.xml
│   │   ├── Changelog.md
│   │   ├── encodings
│   │   │   ├── dbcs-codec.js
│   │   │   ├── dbcs-data.js
│   │   │   ├── index.js
│   │   │   ├── internal.js
│   │   │   ├── sbcs-codec.js
│   │   │   ├── sbcs-data-generated.js
│   │   │   ├── sbcs-data.js
│   │   │   ├── tables
│   │   │   │   ├── big5-added.json
│   │   │   │   ├── cp936.json
│   │   │   │   ├── cp949.json
│   │   │   │   ├── cp950.json
│   │   │   │   ├── eucjp.json
│   │   │   │   ├── gb18030-ranges.json
│   │   │   │   ├── gbk-added.json
│   │   │   │   └── shiftjis.json
│   │   │   ├── utf16.js
│   │   │   ├── utf32.js
│   │   │   └── utf7.js
│   │   ├── lib
│   │   │   ├── bom-handling.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   └── streams.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── inflight
│   │   ├── inflight.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── inherits
│   │   ├── inherits_browser.js
│   │   ├── inherits.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── interpret
│   │   ├── CHANGELOG
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── mjs-stub.js
│   │   ├── package.json
│   │   └── README.md
│   ├── is-core-module
│   │   ├── .eslintrc
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── core.json
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── test
│   │       └── index.js
│   ├── minimatch
│   │   ├── LICENSE
│   │   ├── minimatch.js
│   │   ├── package.json
│   │   └── README.md
│   ├── minimist
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── example
│   │   │   └── parse.js
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── test
│   │       ├── all_bool.js
│   │       ├── bool.js
│   │       ├── dash.js
│   │       ├── default_bool.js
│   │       ├── dotted.js
│   │       ├── kv_short.js
│   │       ├── long.js
│   │       ├── num.js
│   │       ├── parse_modified.js
│   │       ├── parse.js
│   │       ├── proto.js
│   │       ├── short.js
│   │       ├── stop_early.js
│   │       ├── unknown.js
│   │       └── whitespace.js
│   ├── once
│   │   ├── LICENSE
│   │   ├── once.js
│   │   ├── package.json
│   │   └── README.md
│   ├── path-is-absolute
│   │   ├── index.js
│   │   ├── license
│   │   ├── package.json
│   │   └── readme.md
│   ├── path-parse
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── raw-body
│   │   ├── HISTORY.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── SECURITY.md
│   ├── rechoir
│   │   ├── .npmignore
│   │   ├── .travis.yml
│   │   ├── CHANGELOG
│   │   ├── index.js
│   │   ├── lib
│   │   │   ├── extension.js
│   │   │   ├── normalize.js
│   │   │   └── register.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── resolve
│   │   ├── .editorconfig
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── async.js
│   │   ├── bin
│   │   │   └── resolve
│   │   ├── example
│   │   │   ├── async.js
│   │   │   └── sync.js
│   │   ├── index.js
│   │   ├── lib
│   │   │   ├── async.js
│   │   │   ├── caller.js
│   │   │   ├── core.js
│   │   │   ├── core.json
│   │   │   ├── homedir.js
│   │   │   ├── is-core.js
│   │   │   ├── node-modules-paths.js
│   │   │   ├── normalize-options.js
│   │   │   └── sync.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── readme.markdown
│   │   ├── SECURITY.md
│   │   ├── sync.js
│   │   └── test
│   │       ├── core.js
│   │       ├── dotdot
│   │       │   ├── abc
│   │       │   │   └── index.js
│   │       │   └── index.js
│   │       ├── dotdot.js
│   │       ├── faulty_basedir.js
│   │       ├── filter_sync.js
│   │       ├── filter.js
│   │       ├── home_paths_sync.js
│   │       ├── home_paths.js
│   │       ├── list-exports
│   │       │   ├── .eslintignore
│   │       │   ├── .eslintrc
│   │       │   ├── .github
│   │       │   │   ├── FUNDING.yml
│   │       │   │   └── workflows
│   │       │   │       ├── conditions.yml
│   │       │   │       ├── fixtures.yml
│   │       │   │       ├── ls-engines.yml
│   │       │   │       ├── node-pretest.yml
│   │       │   │       ├── node.yml
│   │       │   │       ├── rebase.yml
│   │       │   │       └── require-allow-edits.yml
│   │       │   ├── LICENSE
│   │       │   ├── package.json
│   │       │   ├── packages
│   │       │   │   ├── list-exports
│   │       │   │   │   ├── .eslintrc
│   │       │   │   │   ├── index.js
│   │       │   │   │   ├── package.json
│   │       │   │   │   └── README.md
│   │       │   │   ├── ls-exports
│   │       │   │   │   ├── .eslintrc
│   │       │   │   │   ├── bin
│   │       │   │   │   │   └── ls-exports
│   │       │   │   │   ├── exportsTable.js
│   │       │   │   │   ├── getPackageJSONPath.js
│   │       │   │   │   ├── package.json
│   │       │   │   │   ├── README.md
│   │       │   │   │   └── table.js
│   │       │   │   └── tests
│   │       │   │       ├── .eslintignore
│   │       │   │       ├── .eslintrc
│   │       │   │       ├── conditions-expected.js
│   │       │   │       ├── conditions.js
│   │       │   │       ├── fixtures
│   │       │   │       │   ├── es-abstract
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── 2015
│   │       │   │       │   │       │   ├── AbstractEqualityComparison.js
│   │       │   │       │   │       │   ├── AbstractRelationalComparison.js
│   │       │   │       │   │       │   ├── AdvanceStringIndex.js
│   │       │   │       │   │       │   ├── ArrayCreate.js
│   │       │   │       │   │       │   ├── ArraySetLength.js
│   │       │   │       │   │       │   ├── ArraySpeciesCreate.js
│   │       │   │       │   │       │   ├── Call.js
│   │       │   │       │   │       │   ├── CanonicalNumericIndexString.js
│   │       │   │       │   │       │   ├── CompletePropertyDescriptor.js
│   │       │   │       │   │       │   ├── CreateDataProperty.js
│   │       │   │       │   │       │   ├── CreateDataPropertyOrThrow.js
│   │       │   │       │   │       │   ├── CreateHTML.js
│   │       │   │       │   │       │   ├── CreateIterResultObject.js
│   │       │   │       │   │       │   ├── CreateListFromArrayLike.js
│   │       │   │       │   │       │   ├── CreateMethodProperty.js
│   │       │   │       │   │       │   ├── DateFromTime.js
│   │       │   │       │   │       │   ├── Day.js
│   │       │   │       │   │       │   ├── DayFromYear.js
│   │       │   │       │   │       │   ├── DaysInYear.js
│   │       │   │       │   │       │   ├── DayWithinYear.js
│   │       │   │       │   │       │   ├── DefinePropertyOrThrow.js
│   │       │   │       │   │       │   ├── DeletePropertyOrThrow.js
│   │       │   │       │   │       │   ├── EnumerableOwnNames.js
│   │       │   │       │   │       │   ├── FromPropertyDescriptor.js
│   │       │   │       │   │       │   ├── Get.js
│   │       │   │       │   │       │   ├── GetIterator.js
│   │       │   │       │   │       │   ├── GetMethod.js
│   │       │   │       │   │       │   ├── GetOwnPropertyKeys.js
│   │       │   │       │   │       │   ├── GetPrototypeFromConstructor.js
│   │       │   │       │   │       │   ├── GetSubstitution.js
│   │       │   │       │   │       │   ├── GetV.js
│   │       │   │       │   │       │   ├── HasOwnProperty.js
│   │       │   │       │   │       │   ├── HasProperty.js
│   │       │   │       │   │       │   ├── HourFromTime.js
│   │       │   │       │   │       │   ├── InLeapYear.js
│   │       │   │       │   │       │   ├── InstanceofOperator.js
│   │       │   │       │   │       │   ├── Invoke.js
│   │       │   │       │   │       │   ├── IsAccessorDescriptor.js
│   │       │   │       │   │       │   ├── IsArray.js
│   │       │   │       │   │       │   ├── IsCallable.js
│   │       │   │       │   │       │   ├── IsConcatSpreadable.js
│   │       │   │       │   │       │   ├── IsConstructor.js
│   │       │   │       │   │       │   ├── IsDataDescriptor.js
│   │       │   │       │   │       │   ├── IsExtensible.js
│   │       │   │       │   │       │   ├── IsGenericDescriptor.js
│   │       │   │       │   │       │   ├── IsInteger.js
│   │       │   │       │   │       │   ├── IsPromise.js
│   │       │   │       │   │       │   ├── IsPropertyDescriptor.js
│   │       │   │       │   │       │   ├── IsPropertyKey.js
│   │       │   │       │   │       │   ├── IsRegExp.js
│   │       │   │       │   │       │   ├── IteratorClose.js
│   │       │   │       │   │       │   ├── IteratorComplete.js
│   │       │   │       │   │       │   ├── IteratorNext.js
│   │       │   │       │   │       │   ├── IteratorStep.js
│   │       │   │       │   │       │   ├── IteratorValue.js
│   │       │   │       │   │       │   ├── MakeDate.js
│   │       │   │       │   │       │   ├── MakeDay.js
│   │       │   │       │   │       │   ├── MakeTime.js
│   │       │   │       │   │       │   ├── MinFromTime.js
│   │       │   │       │   │       │   ├── modulo.js
│   │       │   │       │   │       │   ├── MonthFromTime.js
│   │       │   │       │   │       │   ├── msFromTime.js
│   │       │   │       │   │       │   ├── ObjectCreate.js
│   │       │   │       │   │       │   ├── OrdinaryDefineOwnProperty.js
│   │       │   │       │   │       │   ├── OrdinaryGetOwnProperty.js
│   │       │   │       │   │       │   ├── OrdinaryHasInstance.js
│   │       │   │       │   │       │   ├── OrdinaryHasProperty.js
│   │       │   │       │   │       │   ├── RegExpExec.js
│   │       │   │       │   │       │   ├── RequireObjectCoercible.js
│   │       │   │       │   │       │   ├── SameValue.js
│   │       │   │       │   │       │   ├── SameValueZero.js
│   │       │   │       │   │       │   ├── SecFromTime.js
│   │       │   │       │   │       │   ├── Set.js
│   │       │   │       │   │       │   ├── SetFunctionName.js
│   │       │   │       │   │       │   ├── SetIntegrityLevel.js
│   │       │   │       │   │       │   ├── SpeciesConstructor.js
│   │       │   │       │   │       │   ├── StrictEqualityComparison.js
│   │       │   │       │   │       │   ├── SymbolDescriptiveString.js
│   │       │   │       │   │       │   ├── TestIntegrityLevel.js
│   │       │   │       │   │       │   ├── thisBooleanValue.js
│   │       │   │       │   │       │   ├── thisNumberValue.js
│   │       │   │       │   │       │   ├── thisStringValue.js
│   │       │   │       │   │       │   ├── thisTimeValue.js
│   │       │   │       │   │       │   ├── TimeClip.js
│   │       │   │       │   │       │   ├── TimeFromYear.js
│   │       │   │       │   │       │   ├── TimeWithinDay.js
│   │       │   │       │   │       │   ├── ToBoolean.js
│   │       │   │       │   │       │   ├── ToDateString.js
│   │       │   │       │   │       │   ├── ToInt16.js
│   │       │   │       │   │       │   ├── ToInt32.js
│   │       │   │       │   │       │   ├── ToInt8.js
│   │       │   │       │   │       │   ├── ToInteger.js
│   │       │   │       │   │       │   ├── ToLength.js
│   │       │   │       │   │       │   ├── ToNumber.js
│   │       │   │       │   │       │   ├── ToObject.js
│   │       │   │       │   │       │   ├── ToPrimitive.js
│   │       │   │       │   │       │   ├── ToPropertyDescriptor.js
│   │       │   │       │   │       │   ├── ToPropertyKey.js
│   │       │   │       │   │       │   ├── ToString.js
│   │       │   │       │   │       │   ├── ToUint16.js
│   │       │   │       │   │       │   ├── ToUint32.js
│   │       │   │       │   │       │   ├── ToUint8.js
│   │       │   │       │   │       │   ├── ToUint8Clamp.js
│   │       │   │       │   │       │   ├── Type.js
│   │       │   │       │   │       │   ├── ValidateAndApplyPropertyDescriptor.js
│   │       │   │       │   │       │   ├── WeekDay.js
│   │       │   │       │   │       │   └── YearFromTime.js
│   │       │   │       │   │       ├── 2016
│   │       │   │       │   │       │   ├── AbstractEqualityComparison.js
│   │       │   │       │   │       │   ├── AbstractRelationalComparison.js
│   │       │   │       │   │       │   ├── AdvanceStringIndex.js
│   │       │   │       │   │       │   ├── ArrayCreate.js
│   │       │   │       │   │       │   ├── ArraySetLength.js
│   │       │   │       │   │       │   ├── ArraySpeciesCreate.js
│   │       │   │       │   │       │   ├── Call.js
│   │       │   │       │   │       │   ├── CanonicalNumericIndexString.js
│   │       │   │       │   │       │   ├── CompletePropertyDescriptor.js
│   │       │   │       │   │       │   ├── CreateDataProperty.js
│   │       │   │       │   │       │   ├── CreateDataPropertyOrThrow.js
│   │       │   │       │   │       │   ├── CreateHTML.js
│   │       │   │       │   │       │   ├── CreateIterResultObject.js
│   │       │   │       │   │       │   ├── CreateListFromArrayLike.js
│   │       │   │       │   │       │   ├── CreateMethodProperty.js
│   │       │   │       │   │       │   ├── DateFromTime.js
│   │       │   │       │   │       │   ├── Day.js
│   │       │   │       │   │       │   ├── DayFromYear.js
│   │       │   │       │   │       │   ├── DaysInYear.js
│   │       │   │       │   │       │   ├── DayWithinYear.js
│   │       │   │       │   │       │   ├── DefinePropertyOrThrow.js
│   │       │   │       │   │       │   ├── DeletePropertyOrThrow.js
│   │       │   │       │   │       │   ├── EnumerableOwnNames.js
│   │       │   │       │   │       │   ├── FromPropertyDescriptor.js
│   │       │   │       │   │       │   ├── Get.js
│   │       │   │       │   │       │   ├── GetIterator.js
│   │       │   │       │   │       │   ├── GetMethod.js
│   │       │   │       │   │       │   ├── GetOwnPropertyKeys.js
│   │       │   │       │   │       │   ├── GetPrototypeFromConstructor.js
│   │       │   │       │   │       │   ├── GetSubstitution.js
│   │       │   │       │   │       │   ├── GetV.js
│   │       │   │       │   │       │   ├── HasOwnProperty.js
│   │       │   │       │   │       │   ├── HasProperty.js
│   │       │   │       │   │       │   ├── HourFromTime.js
│   │       │   │       │   │       │   ├── InLeapYear.js
│   │       │   │       │   │       │   ├── InstanceofOperator.js
│   │       │   │       │   │       │   ├── Invoke.js
│   │       │   │       │   │       │   ├── IsAccessorDescriptor.js
│   │       │   │       │   │       │   ├── IsArray.js
│   │       │   │       │   │       │   ├── IsCallable.js
│   │       │   │       │   │       │   ├── IsConcatSpreadable.js
│   │       │   │       │   │       │   ├── IsConstructor.js
│   │       │   │       │   │       │   ├── IsDataDescriptor.js
│   │       │   │       │   │       │   ├── IsExtensible.js
│   │       │   │       │   │       │   ├── IsGenericDescriptor.js
│   │       │   │       │   │       │   ├── IsInteger.js
│   │       │   │       │   │       │   ├── IsPromise.js
│   │       │   │       │   │       │   ├── IsPropertyDescriptor.js
│   │       │   │       │   │       │   ├── IsPropertyKey.js
│   │       │   │       │   │       │   ├── IsRegExp.js
│   │       │   │       │   │       │   ├── IterableToArrayLike.js
│   │       │   │       │   │       │   ├── IteratorClose.js
│   │       │   │       │   │       │   ├── IteratorComplete.js
│   │       │   │       │   │       │   ├── IteratorNext.js
│   │       │   │       │   │       │   ├── IteratorStep.js
│   │       │   │       │   │       │   ├── IteratorValue.js
│   │       │   │       │   │       │   ├── MakeDate.js
│   │       │   │       │   │       │   ├── MakeDay.js
│   │       │   │       │   │       │   ├── MakeTime.js
│   │       │   │       │   │       │   ├── MinFromTime.js
│   │       │   │       │   │       │   ├── modulo.js
│   │       │   │       │   │       │   ├── MonthFromTime.js
│   │       │   │       │   │       │   ├── msFromTime.js
│   │       │   │       │   │       │   ├── ObjectCreate.js
│   │       │   │       │   │       │   ├── OrdinaryDefineOwnProperty.js
│   │       │   │       │   │       │   ├── OrdinaryGetOwnProperty.js
│   │       │   │       │   │       │   ├── OrdinaryGetPrototypeOf.js
│   │       │   │       │   │       │   ├── OrdinaryHasInstance.js
│   │       │   │       │   │       │   ├── OrdinaryHasProperty.js
│   │       │   │       │   │       │   ├── OrdinarySetPrototypeOf.js
│   │       │   │       │   │       │   ├── RegExpExec.js
│   │       │   │       │   │       │   ├── RequireObjectCoercible.js
│   │       │   │       │   │       │   ├── SameValue.js
│   │       │   │       │   │       │   ├── SameValueNonNumber.js
│   │       │   │       │   │       │   ├── SameValueZero.js
│   │       │   │       │   │       │   ├── SecFromTime.js
│   │       │   │       │   │       │   ├── Set.js
│   │       │   │       │   │       │   ├── SetFunctionName.js
│   │       │   │       │   │       │   ├── SetIntegrityLevel.js
│   │       │   │       │   │       │   ├── SpeciesConstructor.js
│   │       │   │       │   │       │   ├── StrictEqualityComparison.js
│   │       │   │       │   │       │   ├── SymbolDescriptiveString.js
│   │       │   │       │   │       │   ├── TestIntegrityLevel.js
│   │       │   │       │   │       │   ├── thisBooleanValue.js
│   │       │   │       │   │       │   ├── thisNumberValue.js
│   │       │   │       │   │       │   ├── thisStringValue.js
│   │       │   │       │   │       │   ├── thisTimeValue.js
│   │       │   │       │   │       │   ├── TimeClip.js
│   │       │   │       │   │       │   ├── TimeFromYear.js
│   │       │   │       │   │       │   ├── TimeWithinDay.js
│   │       │   │       │   │       │   ├── ToBoolean.js
│   │       │   │       │   │       │   ├── ToDateString.js
│   │       │   │       │   │       │   ├── ToInt16.js
│   │       │   │       │   │       │   ├── ToInt32.js
│   │       │   │       │   │       │   ├── ToInt8.js
│   │       │   │       │   │       │   ├── ToInteger.js
│   │       │   │       │   │       │   ├── ToLength.js
│   │       │   │       │   │       │   ├── ToNumber.js
│   │       │   │       │   │       │   ├── ToObject.js
│   │       │   │       │   │       │   ├── ToPrimitive.js
│   │       │   │       │   │       │   ├── ToPropertyDescriptor.js
│   │       │   │       │   │       │   ├── ToPropertyKey.js
│   │       │   │       │   │       │   ├── ToString.js
│   │       │   │       │   │       │   ├── ToUint16.js
│   │       │   │       │   │       │   ├── ToUint32.js
│   │       │   │       │   │       │   ├── ToUint8.js
│   │       │   │       │   │       │   ├── ToUint8Clamp.js
│   │       │   │       │   │       │   ├── Type.js
│   │       │   │       │   │       │   ├── ValidateAndApplyPropertyDescriptor.js
│   │       │   │       │   │       │   ├── WeekDay.js
│   │       │   │       │   │       │   └── YearFromTime.js
│   │       │   │       │   │       ├── 2017
│   │       │   │       │   │       │   ├── AbstractEqualityComparison.js
│   │       │   │       │   │       │   ├── AbstractRelationalComparison.js
│   │       │   │       │   │       │   ├── AdvanceStringIndex.js
│   │       │   │       │   │       │   ├── ArrayCreate.js
│   │       │   │       │   │       │   ├── ArraySetLength.js
│   │       │   │       │   │       │   ├── ArraySpeciesCreate.js
│   │       │   │       │   │       │   ├── Call.js
│   │       │   │       │   │       │   ├── CanonicalNumericIndexString.js
│   │       │   │       │   │       │   ├── CompletePropertyDescriptor.js
│   │       │   │       │   │       │   ├── CreateDataProperty.js
│   │       │   │       │   │       │   ├── CreateDataPropertyOrThrow.js
│   │       │   │       │   │       │   ├── CreateHTML.js
│   │       │   │       │   │       │   ├── CreateIterResultObject.js
│   │       │   │       │   │       │   ├── CreateListFromArrayLike.js
│   │       │   │       │   │       │   ├── CreateMethodProperty.js
│   │       │   │       │   │       │   ├── DateFromTime.js
│   │       │   │       │   │       │   ├── Day.js
│   │       │   │       │   │       │   ├── DayFromYear.js
│   │       │   │       │   │       │   ├── DaysInYear.js
│   │       │   │       │   │       │   ├── DayWithinYear.js
│   │       │   │       │   │       │   ├── DefinePropertyOrThrow.js
│   │       │   │       │   │       │   ├── DeletePropertyOrThrow.js
│   │       │   │       │   │       │   ├── EnumerableOwnProperties.js
│   │       │   │       │   │       │   ├── FromPropertyDescriptor.js
│   │       │   │       │   │       │   ├── Get.js
│   │       │   │       │   │       │   ├── GetIterator.js
│   │       │   │       │   │       │   ├── GetMethod.js
│   │       │   │       │   │       │   ├── GetOwnPropertyKeys.js
│   │       │   │       │   │       │   ├── GetPrototypeFromConstructor.js
│   │       │   │       │   │       │   ├── GetSubstitution.js
│   │       │   │       │   │       │   ├── GetV.js
│   │       │   │       │   │       │   ├── HasOwnProperty.js
│   │       │   │       │   │       │   ├── HasProperty.js
│   │       │   │       │   │       │   ├── HourFromTime.js
│   │       │   │       │   │       │   ├── InLeapYear.js
│   │       │   │       │   │       │   ├── InstanceofOperator.js
│   │       │   │       │   │       │   ├── Invoke.js
│   │       │   │       │   │       │   ├── IsAccessorDescriptor.js
│   │       │   │       │   │       │   ├── IsArray.js
│   │       │   │       │   │       │   ├── IsCallable.js
│   │       │   │       │   │       │   ├── IsConcatSpreadable.js
│   │       │   │       │   │       │   ├── IsConstructor.js
│   │       │   │       │   │       │   ├── IsDataDescriptor.js
│   │       │   │       │   │       │   ├── IsExtensible.js
│   │       │   │       │   │       │   ├── IsGenericDescriptor.js
│   │       │   │       │   │       │   ├── IsInteger.js
│   │       │   │       │   │       │   ├── IsPromise.js
│   │       │   │       │   │       │   ├── IsPropertyDescriptor.js
│   │       │   │       │   │       │   ├── IsPropertyKey.js
│   │       │   │       │   │       │   ├── IsRegExp.js
│   │       │   │       │   │       │   ├── IterableToList.js
│   │       │   │       │   │       │   ├── IteratorClose.js
│   │       │   │       │   │       │   ├── IteratorComplete.js
│   │       │   │       │   │       │   ├── IteratorNext.js
│   │       │   │       │   │       │   ├── IteratorStep.js
│   │       │   │       │   │       │   ├── IteratorValue.js
│   │       │   │       │   │       │   ├── MakeDate.js
│   │       │   │       │   │       │   ├── MakeDay.js
│   │       │   │       │   │       │   ├── MakeTime.js
│   │       │   │       │   │       │   ├── MinFromTime.js
│   │       │   │       │   │       │   ├── modulo.js
│   │       │   │       │   │       │   ├── MonthFromTime.js
│   │       │   │       │   │       │   ├── msFromTime.js
│   │       │   │       │   │       │   ├── ObjectCreate.js
│   │       │   │       │   │       │   ├── OrdinaryDefineOwnProperty.js
│   │       │   │       │   │       │   ├── OrdinaryGetOwnProperty.js
│   │       │   │       │   │       │   ├── OrdinaryGetPrototypeOf.js
│   │       │   │       │   │       │   ├── OrdinaryHasInstance.js
│   │       │   │       │   │       │   ├── OrdinaryHasProperty.js
│   │       │   │       │   │       │   ├── OrdinarySetPrototypeOf.js
│   │       │   │       │   │       │   ├── RegExpExec.js
│   │       │   │       │   │       │   ├── RequireObjectCoercible.js
│   │       │   │       │   │       │   ├── SameValue.js
│   │       │   │       │   │       │   ├── SameValueNonNumber.js
│   │       │   │       │   │       │   ├── SameValueZero.js
│   │       │   │       │   │       │   ├── SecFromTime.js
│   │       │   │       │   │       │   ├── Set.js
│   │       │   │       │   │       │   ├── SetFunctionName.js
│   │       │   │       │   │       │   ├── SetIntegrityLevel.js
│   │       │   │       │   │       │   ├── SpeciesConstructor.js
│   │       │   │       │   │       │   ├── StrictEqualityComparison.js
│   │       │   │       │   │       │   ├── SymbolDescriptiveString.js
│   │       │   │       │   │       │   ├── TestIntegrityLevel.js
│   │       │   │       │   │       │   ├── thisBooleanValue.js
│   │       │   │       │   │       │   ├── thisNumberValue.js
│   │       │   │       │   │       │   ├── thisStringValue.js
│   │       │   │       │   │       │   ├── thisTimeValue.js
│   │       │   │       │   │       │   ├── TimeClip.js
│   │       │   │       │   │       │   ├── TimeFromYear.js
│   │       │   │       │   │       │   ├── TimeWithinDay.js
│   │       │   │       │   │       │   ├── ToBoolean.js
│   │       │   │       │   │       │   ├── ToDateString.js
│   │       │   │       │   │       │   ├── ToIndex.js
│   │       │   │       │   │       │   ├── ToInt16.js
│   │       │   │       │   │       │   ├── ToInt32.js
│   │       │   │       │   │       │   ├── ToInt8.js
│   │       │   │       │   │       │   ├── ToInteger.js
│   │       │   │       │   │       │   ├── ToLength.js
│   │       │   │       │   │       │   ├── ToNumber.js
│   │       │   │       │   │       │   ├── ToObject.js
│   │       │   │       │   │       │   ├── ToPrimitive.js
│   │       │   │       │   │       │   ├── ToPropertyDescriptor.js
│   │       │   │       │   │       │   ├── ToPropertyKey.js
│   │       │   │       │   │       │   ├── ToString.js
│   │       │   │       │   │       │   ├── ToUint16.js
│   │       │   │       │   │       │   ├── ToUint32.js
│   │       │   │       │   │       │   ├── ToUint8.js
│   │       │   │       │   │       │   ├── ToUint8Clamp.js
│   │       │   │       │   │       │   ├── Type.js
│   │       │   │       │   │       │   ├── ValidateAndApplyPropertyDescriptor.js
│   │       │   │       │   │       │   ├── WeekDay.js
│   │       │   │       │   │       │   └── YearFromTime.js
│   │       │   │       │   │       ├── 2018
│   │       │   │       │   │       │   ├── AbstractEqualityComparison.js
│   │       │   │       │   │       │   ├── AbstractRelationalComparison.js
│   │       │   │       │   │       │   ├── AdvanceStringIndex.js
│   │       │   │       │   │       │   ├── ArrayCreate.js
│   │       │   │       │   │       │   ├── ArraySetLength.js
│   │       │   │       │   │       │   ├── ArraySpeciesCreate.js
│   │       │   │       │   │       │   ├── Call.js
│   │       │   │       │   │       │   ├── CanonicalNumericIndexString.js
│   │       │   │       │   │       │   ├── CompletePropertyDescriptor.js
│   │       │   │       │   │       │   ├── CopyDataProperties.js
│   │       │   │       │   │       │   ├── CreateDataProperty.js
│   │       │   │       │   │       │   ├── CreateDataPropertyOrThrow.js
│   │       │   │       │   │       │   ├── CreateHTML.js
│   │       │   │       │   │       │   ├── CreateIterResultObject.js
│   │       │   │       │   │       │   ├── CreateListFromArrayLike.js
│   │       │   │       │   │       │   ├── CreateMethodProperty.js
│   │       │   │       │   │       │   ├── DateFromTime.js
│   │       │   │       │   │       │   ├── DateString.js
│   │       │   │       │   │       │   ├── Day.js
│   │       │   │       │   │       │   ├── DayFromYear.js
│   │       │   │       │   │       │   ├── DaysInYear.js
│   │       │   │       │   │       │   ├── DayWithinYear.js
│   │       │   │       │   │       │   ├── DefinePropertyOrThrow.js
│   │       │   │       │   │       │   ├── DeletePropertyOrThrow.js
│   │       │   │       │   │       │   ├── EnumerableOwnPropertyNames.js
│   │       │   │       │   │       │   ├── FromPropertyDescriptor.js
│   │       │   │       │   │       │   ├── Get.js
│   │       │   │       │   │       │   ├── GetIterator.js
│   │       │   │       │   │       │   ├── GetMethod.js
│   │       │   │       │   │       │   ├── GetOwnPropertyKeys.js
│   │       │   │       │   │       │   ├── GetPrototypeFromConstructor.js
│   │       │   │       │   │       │   ├── GetSubstitution.js
│   │       │   │       │   │       │   ├── GetV.js
│   │       │   │       │   │       │   ├── HasOwnProperty.js
│   │       │   │       │   │       │   ├── HasProperty.js
│   │       │   │       │   │       │   ├── HourFromTime.js
│   │       │   │       │   │       │   ├── InLeapYear.js
│   │       │   │       │   │       │   ├── InstanceofOperator.js
│   │       │   │       │   │       │   ├── Invoke.js
│   │       │   │       │   │       │   ├── IsAccessorDescriptor.js
│   │       │   │       │   │       │   ├── IsArray.js
│   │       │   │       │   │       │   ├── IsCallable.js
│   │       │   │       │   │       │   ├── IsConcatSpreadable.js
│   │       │   │       │   │       │   ├── IsConstructor.js
│   │       │   │       │   │       │   ├── IsDataDescriptor.js
│   │       │   │       │   │       │   ├── IsExtensible.js
│   │       │   │       │   │       │   ├── IsGenericDescriptor.js
│   │       │   │       │   │       │   ├── IsInteger.js
│   │       │   │       │   │       │   ├── IsPromise.js
│   │       │   │       │   │       │   ├── IsPropertyKey.js
│   │       │   │       │   │       │   ├── IsRegExp.js
│   │       │   │       │   │       │   ├── IsStringPrefix.js
│   │       │   │       │   │       │   ├── IterableToList.js
│   │       │   │       │   │       │   ├── IteratorClose.js
│   │       │   │       │   │       │   ├── IteratorComplete.js
│   │       │   │       │   │       │   ├── IteratorNext.js
│   │       │   │       │   │       │   ├── IteratorStep.js
│   │       │   │       │   │       │   ├── IteratorValue.js
│   │       │   │       │   │       │   ├── MakeDate.js
│   │       │   │       │   │       │   ├── MakeDay.js
│   │       │   │       │   │       │   ├── MakeTime.js
│   │       │   │       │   │       │   ├── MinFromTime.js
│   │       │   │       │   │       │   ├── modulo.js
│   │       │   │       │   │       │   ├── MonthFromTime.js
│   │       │   │       │   │       │   ├── msFromTime.js
│   │       │   │       │   │       │   ├── NumberToString.js
│   │       │   │       │   │       │   ├── ObjectCreate.js
│   │       │   │       │   │       │   ├── OrdinaryDefineOwnProperty.js
│   │       │   │       │   │       │   ├── OrdinaryGetOwnProperty.js
│   │       │   │       │   │       │   ├── OrdinaryGetPrototypeOf.js
│   │       │   │       │   │       │   ├── OrdinaryHasInstance.js
│   │       │   │       │   │       │   ├── OrdinaryHasProperty.js
│   │       │   │       │   │       │   ├── OrdinarySetPrototypeOf.js
│   │       │   │       │   │       │   ├── PromiseResolve.js
│   │       │   │       │   │       │   ├── RegExpExec.js
│   │       │   │       │   │       │   ├── RequireObjectCoercible.js
│   │       │   │       │   │       │   ├── SameValue.js
│   │       │   │       │   │       │   ├── SameValueNonNumber.js
│   │       │   │       │   │       │   ├── SameValueZero.js
│   │       │   │       │   │       │   ├── SecFromTime.js
│   │       │   │       │   │       │   ├── Set.js
│   │       │   │       │   │       │   ├── SetFunctionName.js
│   │       │   │       │   │       │   ├── SetIntegrityLevel.js
│   │       │   │       │   │       │   ├── SpeciesConstructor.js
│   │       │   │       │   │       │   ├── StrictEqualityComparison.js
│   │       │   │       │   │       │   ├── SymbolDescriptiveString.js
│   │       │   │       │   │       │   ├── TestIntegrityLevel.js
│   │       │   │       │   │       │   ├── thisBooleanValue.js
│   │       │   │       │   │       │   ├── thisNumberValue.js
│   │       │   │       │   │       │   ├── thisStringValue.js
│   │       │   │       │   │       │   ├── thisSymbolValue.js
│   │       │   │       │   │       │   ├── thisTimeValue.js
│   │       │   │       │   │       │   ├── TimeClip.js
│   │       │   │       │   │       │   ├── TimeFromYear.js
│   │       │   │       │   │       │   ├── TimeString.js
│   │       │   │       │   │       │   ├── TimeWithinDay.js
│   │       │   │       │   │       │   ├── ToBoolean.js
│   │       │   │       │   │       │   ├── ToDateString.js
│   │       │   │       │   │       │   ├── ToIndex.js
│   │       │   │       │   │       │   ├── ToInt16.js
│   │       │   │       │   │       │   ├── ToInt32.js
│   │       │   │       │   │       │   ├── ToInt8.js
│   │       │   │       │   │       │   ├── ToInteger.js
│   │       │   │       │   │       │   ├── ToLength.js
│   │       │   │       │   │       │   ├── ToNumber.js
│   │       │   │       │   │       │   ├── ToObject.js
│   │       │   │       │   │       │   ├── ToPrimitive.js
│   │       │   │       │   │       │   ├── ToPropertyDescriptor.js
│   │       │   │       │   │       │   ├── ToPropertyKey.js
│   │       │   │       │   │       │   ├── ToString.js
│   │       │   │       │   │       │   ├── ToUint16.js
│   │       │   │       │   │       │   ├── ToUint32.js
│   │       │   │       │   │       │   ├── ToUint8.js
│   │       │   │       │   │       │   ├── ToUint8Clamp.js
│   │       │   │       │   │       │   ├── Type.js
│   │       │   │       │   │       │   ├── ValidateAndApplyPropertyDescriptor.js
│   │       │   │       │   │       │   ├── WeekDay.js
│   │       │   │       │   │       │   └── YearFromTime.js
│   │       │   │       │   │       ├── 2019
│   │       │   │       │   │       │   ├── AbstractEqualityComparison.js
│   │       │   │       │   │       │   ├── AbstractRelationalComparison.js
│   │       │   │       │   │       │   ├── AddEntriesFromIterable.js
│   │       │   │       │   │       │   ├── AdvanceStringIndex.js
│   │       │   │       │   │       │   ├── ArrayCreate.js
│   │       │   │       │   │       │   ├── ArraySetLength.js
│   │       │   │       │   │       │   ├── ArraySpeciesCreate.js
│   │       │   │       │   │       │   ├── Call.js
│   │       │   │       │   │       │   ├── CanonicalNumericIndexString.js
│   │       │   │       │   │       │   ├── CompletePropertyDescriptor.js
│   │       │   │       │   │       │   ├── CopyDataProperties.js
│   │       │   │       │   │       │   ├── CreateDataProperty.js
│   │       │   │       │   │       │   ├── CreateDataPropertyOrThrow.js
│   │       │   │       │   │       │   ├── CreateHTML.js
│   │       │   │       │   │       │   ├── CreateIterResultObject.js
│   │       │   │       │   │       │   ├── CreateListFromArrayLike.js
│   │       │   │       │   │       │   ├── CreateMethodProperty.js
│   │       │   │       │   │       │   ├── DateFromTime.js
│   │       │   │       │   │       │   ├── DateString.js
│   │       │   │       │   │       │   ├── Day.js
│   │       │   │       │   │       │   ├── DayFromYear.js
│   │       │   │       │   │       │   ├── DaysInYear.js
│   │       │   │       │   │       │   ├── DayWithinYear.js
│   │       │   │       │   │       │   ├── DefinePropertyOrThrow.js
│   │       │   │       │   │       │   ├── DeletePropertyOrThrow.js
│   │       │   │       │   │       │   ├── EnumerableOwnPropertyNames.js
│   │       │   │       │   │       │   ├── FlattenIntoArray.js
│   │       │   │       │   │       │   ├── FromPropertyDescriptor.js
│   │       │   │       │   │       │   ├── Get.js
│   │       │   │       │   │       │   ├── GetIterator.js
│   │       │   │       │   │       │   ├── GetMethod.js
│   │       │   │       │   │       │   ├── GetOwnPropertyKeys.js
│   │       │   │       │   │       │   ├── GetPrototypeFromConstructor.js
│   │       │   │       │   │       │   ├── GetSubstitution.js
│   │       │   │       │   │       │   ├── GetV.js
│   │       │   │       │   │       │   ├── HasOwnProperty.js
│   │       │   │       │   │       │   ├── HasProperty.js
│   │       │   │       │   │       │   ├── HourFromTime.js
│   │       │   │       │   │       │   ├── InLeapYear.js
│   │       │   │       │   │       │   ├── InstanceofOperator.js
│   │       │   │       │   │       │   ├── Invoke.js
│   │       │   │       │   │       │   ├── IsAccessorDescriptor.js
│   │       │   │       │   │       │   ├── IsArray.js
│   │       │   │       │   │       │   ├── IsCallable.js
│   │       │   │       │   │       │   ├── IsConcatSpreadable.js
│   │       │   │       │   │       │   ├── IsConstructor.js
│   │       │   │       │   │       │   ├── IsDataDescriptor.js
│   │       │   │       │   │       │   ├── IsExtensible.js
│   │       │   │       │   │       │   ├── IsGenericDescriptor.js
│   │       │   │       │   │       │   ├── IsInteger.js
│   │       │   │       │   │       │   ├── IsPromise.js
│   │       │   │       │   │       │   ├── IsPropertyKey.js
│   │       │   │       │   │       │   ├── IsRegExp.js
│   │       │   │       │   │       │   ├── IsStringPrefix.js
│   │       │   │       │   │       │   ├── IterableToList.js
│   │       │   │       │   │       │   ├── IteratorClose.js
│   │       │   │       │   │       │   ├── IteratorComplete.js
│   │       │   │       │   │       │   ├── IteratorNext.js
│   │       │   │       │   │       │   ├── IteratorStep.js
│   │       │   │       │   │       │   ├── IteratorValue.js
│   │       │   │       │   │       │   ├── MakeDate.js
│   │       │   │       │   │       │   ├── MakeDay.js
│   │       │   │       │   │       │   ├── MakeTime.js
│   │       │   │       │   │       │   ├── MinFromTime.js
│   │       │   │       │   │       │   ├── modulo.js
│   │       │   │       │   │       │   ├── MonthFromTime.js
│   │       │   │       │   │       │   ├── msFromTime.js
│   │       │   │       │   │       │   ├── NumberToString.js
│   │       │   │       │   │       │   ├── ObjectCreate.js
│   │       │   │       │   │       │   ├── OrdinaryDefineOwnProperty.js
│   │       │   │       │   │       │   ├── OrdinaryGetOwnProperty.js
│   │       │   │       │   │       │   ├── OrdinaryGetPrototypeOf.js
│   │       │   │       │   │       │   ├── OrdinaryHasInstance.js
│   │       │   │       │   │       │   ├── OrdinaryHasProperty.js
│   │       │   │       │   │       │   ├── OrdinarySetPrototypeOf.js
│   │       │   │       │   │       │   ├── PromiseResolve.js
│   │       │   │       │   │       │   ├── RegExpExec.js
│   │       │   │       │   │       │   ├── RequireObjectCoercible.js
│   │       │   │       │   │       │   ├── SameValue.js
│   │       │   │       │   │       │   ├── SameValueNonNumber.js
│   │       │   │       │   │       │   ├── SameValueZero.js
│   │       │   │       │   │       │   ├── SecFromTime.js
│   │       │   │       │   │       │   ├── Set.js
│   │       │   │       │   │       │   ├── SetFunctionName.js
│   │       │   │       │   │       │   ├── SetIntegrityLevel.js
│   │       │   │       │   │       │   ├── SpeciesConstructor.js
│   │       │   │       │   │       │   ├── StrictEqualityComparison.js
│   │       │   │       │   │       │   ├── SymbolDescriptiveString.js
│   │       │   │       │   │       │   ├── TestIntegrityLevel.js
│   │       │   │       │   │       │   ├── thisBooleanValue.js
│   │       │   │       │   │       │   ├── thisNumberValue.js
│   │       │   │       │   │       │   ├── thisStringValue.js
│   │       │   │       │   │       │   ├── thisSymbolValue.js
│   │       │   │       │   │       │   ├── thisTimeValue.js
│   │       │   │       │   │       │   ├── TimeClip.js
│   │       │   │       │   │       │   ├── TimeFromYear.js
│   │       │   │       │   │       │   ├── TimeString.js
│   │       │   │       │   │       │   ├── TimeWithinDay.js
│   │       │   │       │   │       │   ├── ToBoolean.js
│   │       │   │       │   │       │   ├── ToDateString.js
│   │       │   │       │   │       │   ├── ToIndex.js
│   │       │   │       │   │       │   ├── ToInt16.js
│   │       │   │       │   │       │   ├── ToInt32.js
│   │       │   │       │   │       │   ├── ToInt8.js
│   │       │   │       │   │       │   ├── ToInteger.js
│   │       │   │       │   │       │   ├── ToLength.js
│   │       │   │       │   │       │   ├── ToNumber.js
│   │       │   │       │   │       │   ├── ToObject.js
│   │       │   │       │   │       │   ├── ToPrimitive.js
│   │       │   │       │   │       │   ├── ToPropertyDescriptor.js
│   │       │   │       │   │       │   ├── ToPropertyKey.js
│   │       │   │       │   │       │   ├── ToString.js
│   │       │   │       │   │       │   ├── ToUint16.js
│   │       │   │       │   │       │   ├── ToUint32.js
│   │       │   │       │   │       │   ├── ToUint8.js
│   │       │   │       │   │       │   ├── ToUint8Clamp.js
│   │       │   │       │   │       │   ├── TrimString.js
│   │       │   │       │   │       │   ├── Type.js
│   │       │   │       │   │       │   ├── ValidateAndApplyPropertyDescriptor.js
│   │       │   │       │   │       │   ├── WeekDay.js
│   │       │   │       │   │       │   └── YearFromTime.js
│   │       │   │       │   │       ├── 5
│   │       │   │       │   │       │   ├── AbstractEqualityComparison.js
│   │       │   │       │   │       │   ├── AbstractRelationalComparison.js
│   │       │   │       │   │       │   ├── CheckObjectCoercible.js
│   │       │   │       │   │       │   ├── DateFromTime.js
│   │       │   │       │   │       │   ├── Day.js
│   │       │   │       │   │       │   ├── DayFromYear.js
│   │       │   │       │   │       │   ├── DaysInYear.js
│   │       │   │       │   │       │   ├── DayWithinYear.js
│   │       │   │       │   │       │   ├── FromPropertyDescriptor.js
│   │       │   │       │   │       │   ├── HourFromTime.js
│   │       │   │       │   │       │   ├── InLeapYear.js
│   │       │   │       │   │       │   ├── IsAccessorDescriptor.js
│   │       │   │       │   │       │   ├── IsCallable.js
│   │       │   │       │   │       │   ├── IsDataDescriptor.js
│   │       │   │       │   │       │   ├── IsGenericDescriptor.js
│   │       │   │       │   │       │   ├── IsPropertyDescriptor.js
│   │       │   │       │   │       │   ├── MakeDate.js
│   │       │   │       │   │       │   ├── MakeDay.js
│   │       │   │       │   │       │   ├── MakeTime.js
│   │       │   │       │   │       │   ├── MinFromTime.js
│   │       │   │       │   │       │   ├── modulo.js
│   │       │   │       │   │       │   ├── MonthFromTime.js
│   │       │   │       │   │       │   ├── msFromTime.js
│   │       │   │       │   │       │   ├── SameValue.js
│   │       │   │       │   │       │   ├── SecFromTime.js
│   │       │   │       │   │       │   ├── StrictEqualityComparison.js
│   │       │   │       │   │       │   ├── TimeClip.js
│   │       │   │       │   │       │   ├── TimeFromYear.js
│   │       │   │       │   │       │   ├── TimeWithinDay.js
│   │       │   │       │   │       │   ├── ToBoolean.js
│   │       │   │       │   │       │   ├── ToInt32.js
│   │       │   │       │   │       │   ├── ToInteger.js
│   │       │   │       │   │       │   ├── ToNumber.js
│   │       │   │       │   │       │   ├── ToObject.js
│   │       │   │       │   │       │   ├── ToPrimitive.js
│   │       │   │       │   │       │   ├── ToPropertyDescriptor.js
│   │       │   │       │   │       │   ├── ToString.js
│   │       │   │       │   │       │   ├── ToUint16.js
│   │       │   │       │   │       │   ├── ToUint32.js
│   │       │   │       │   │       │   ├── Type.js
│   │       │   │       │   │       │   ├── WeekDay.js
│   │       │   │       │   │       │   └── YearFromTime.js
│   │       │   │       │   │       ├── CHANGELOG.md
│   │       │   │       │   │       ├── es2015.js
│   │       │   │       │   │       ├── es2016.js
│   │       │   │       │   │       ├── es2017.js
│   │       │   │       │   │       ├── es2018.js
│   │       │   │       │   │       ├── es2019.js
│   │       │   │       │   │       ├── es5.js
│   │       │   │       │   │       ├── es6.js
│   │       │   │       │   │       ├── es7.js
│   │       │   │       │   │       ├── GetIntrinsic.js
│   │       │   │       │   │       ├── helpers
│   │       │   │       │   │       │   ├── assertRecord.js
│   │       │   │       │   │       │   ├── assign.js
│   │       │   │       │   │       │   ├── callBind.js
│   │       │   │       │   │       │   ├── callBound.js
│   │       │   │       │   │       │   ├── DefineOwnProperty.js
│   │       │   │       │   │       │   ├── every.js
│   │       │   │       │   │       │   ├── forEach.js
│   │       │   │       │   │       │   ├── getInferredName.js
│   │       │   │       │   │       │   ├── getIteratorMethod.js
│   │       │   │       │   │       │   ├── getOwnPropertyDescriptor.js
│   │       │   │       │   │       │   ├── getProto.js
│   │       │   │       │   │       │   ├── getSymbolDescription.js
│   │       │   │       │   │       │   ├── isFinite.js
│   │       │   │       │   │       │   ├── isNaN.js
│   │       │   │       │   │       │   ├── isPrefixOf.js
│   │       │   │       │   │       │   ├── isPrimitive.js
│   │       │   │       │   │       │   ├── isPropertyDescriptor.js
│   │       │   │       │   │       │   ├── isSamePropertyDescriptor.js
│   │       │   │       │   │       │   ├── maxSafeInteger.js
│   │       │   │       │   │       │   ├── mod.js
│   │       │   │       │   │       │   ├── OwnPropertyKeys.js
│   │       │   │       │   │       │   ├── padTimeComponent.js
│   │       │   │       │   │       │   ├── regexTester.js
│   │       │   │       │   │       │   ├── setProto.js
│   │       │   │       │   │       │   ├── sign.js
│   │       │   │       │   │       │   └── timeConstants.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── LICENSE
│   │       │   │       │   │       ├── operations
│   │       │   │       │   │       │   ├── .eslintrc
│   │       │   │       │   │       │   ├── 2015.js
│   │       │   │       │   │       │   ├── 2016.js
│   │       │   │       │   │       │   ├── 2017.js
│   │       │   │       │   │       │   ├── 2018.js
│   │       │   │       │   │       │   └── 2019.js
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       ├── README.md
│   │       │   │       │   │       └── test
│   │       │   │       │   │           ├── diffOps.js
│   │       │   │       │   │           ├── es2015.js
│   │       │   │       │   │           ├── es2016.js
│   │       │   │       │   │           ├── es2017.js
│   │       │   │       │   │           ├── es2018.js
│   │       │   │       │   │           ├── es2019.js
│   │       │   │       │   │           ├── es5.js
│   │       │   │       │   │           ├── es6.js
│   │       │   │       │   │           ├── es7.js
│   │       │   │       │   │           ├── GetIntrinsic.js
│   │       │   │       │   │           ├── helpers
│   │       │   │       │   │           │   ├── assertRecord.js
│   │       │   │       │   │           │   ├── defineProperty.js
│   │       │   │       │   │           │   ├── getSymbolDescription.js
│   │       │   │       │   │           │   ├── OwnPropertyKeys.js
│   │       │   │       │   │           │   ├── runManifestTest.js
│   │       │   │       │   │           │   └── values.js
│   │       │   │       │   │           ├── index.js
│   │       │   │       │   │           └── tests.js
│   │       │   │       │   ├── ex-conditions
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── default.js
│   │       │   │       │   │       ├── dinr.js
│   │       │   │       │   │       ├── dirn.js
│   │       │   │       │   │       ├── dnir.js
│   │       │   │       │   │       ├── dnri.js
│   │       │   │       │   │       ├── drin.js
│   │       │   │       │   │       ├── drni.js
│   │       │   │       │   │       ├── fallback.js
│   │       │   │       │   │       ├── gen.js
│   │       │   │       │   │       ├── idnr.js
│   │       │   │       │   │       ├── idrn.js
│   │       │   │       │   │       ├── import.mjs
│   │       │   │       │   │       ├── indr.js
│   │       │   │       │   │       ├── inrd.js
│   │       │   │       │   │       ├── irdn.js
│   │       │   │       │   │       ├── irnd.js
│   │       │   │       │   │       ├── main.js
│   │       │   │       │   │       ├── ndir.js
│   │       │   │       │   │       ├── ndri.js
│   │       │   │       │   │       ├── nidr.js
│   │       │   │       │   │       ├── nird.js
│   │       │   │       │   │       ├── node.js
│   │       │   │       │   │       ├── nrdi.js
│   │       │   │       │   │       ├── nrid.js
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       ├── rdin.js
│   │       │   │       │   │       ├── rdni.js
│   │       │   │       │   │       ├── require.js
│   │       │   │       │   │       ├── ridn.js
│   │       │   │       │   │       ├── rind.js
│   │       │   │       │   │       ├── rndi.js
│   │       │   │       │   │       └── rnid.js
│   │       │   │       │   ├── ex-conditions-in-folder
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── cjs
│   │       │   │       │   │       │   ├── index.js
│   │       │   │       │   │       │   └── utils.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── mjs
│   │       │   │       │   │       │   ├── index.mjs
│   │       │   │       │   │       │   └── utils.mjs
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-exports-string
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── dir
│   │       │   │       │   │       │   ├── extra.js
│   │       │   │       │   │       │   ├── extra.mjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── file.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-exports-TL-object
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── dir
│   │       │   │       │   │       │   ├── extra.js
│   │       │   │       │   │       │   ├── extra.mjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── file.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-folder-mapped
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── expected-without-conditions.json
│   │       │   │       │   │   │   ├── expected.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── mapped
│   │       │   │       │   │       │   ├── in-mapped-only.js
│   │       │   │       │   │       │   └── shared.js
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       └── unmapped
│   │       │   │       │   │           ├── in-unmapped-only.js
│   │       │   │       │   │           └── shared.js
│   │       │   │       │   ├── ex-main-dot-slash
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── dir
│   │       │   │       │   │       │   ├── extra.js
│   │       │   │       │   │       │   ├── extra.mjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── file.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-main-dotless
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── dir
│   │       │   │       │   │       │   ├── extra.js
│   │       │   │       │   │       │   ├── extra.mjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── file.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-main-dotted
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── dir
│   │       │   │       │   │       │   ├── extra.js
│   │       │   │       │   │       │   ├── extra.mjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── file.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-main-exports-dot-object
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── dir
│   │       │   │       │   │       │   ├── extra.js
│   │       │   │       │   │       │   ├── extra.mjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── file.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-main-exports-multi-object
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── dir
│   │       │   │       │   │       │   ├── extra.js
│   │       │   │       │   │       │   ├── extra.mjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── file.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-main-exports-string
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── dir
│   │       │   │       │   │       │   ├── extra.js
│   │       │   │       │   │       │   ├── extra.mjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── file.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-main-exports-TL-object
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── dir
│   │       │   │       │   │       │   ├── extra.js
│   │       │   │       │   │       │   ├── extra.mjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── file.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-main-implicit
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── dir
│   │       │   │       │   │       │   ├── extra.js
│   │       │   │       │   │       │   ├── extra.mjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── file.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-no-exports-with-root-type-commonjs
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── cjs.cjs
│   │       │   │       │   │       ├── esm.mjs
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-no-exports-with-root-type-module
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── cjs.cjs
│   │       │   │       │   │       ├── esm.mjs
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-node-modules
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   ├── expected-without-conditions.json
│   │       │   │       │   │   ├── expected.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── default.js
│   │       │   │       │   │       ├── dep.js
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-nonexistent-dir
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   ├── expected-without-conditions.json
│   │       │   │       │   │   ├── expected.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── ex-private
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── dir
│   │       │   │       │   │       │   ├── extra.js
│   │       │   │       │   │       │   ├── extra.mjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── file.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       └── package.json
│   │       │   │       │   ├── flatted-1
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── cjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── esm
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── LICENSE
│   │       │   │       │   │       ├── min.js
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       ├── README.md
│   │       │   │       │   │       └── types.d.ts
│   │       │   │       │   ├── flatted-2
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── .github
│   │       │   │       │   │       │   └── FUNDING.yml
│   │       │   │       │   │       ├── cjs
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── esm
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── LICENSE
│   │       │   │       │   │       ├── min.js
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       ├── README.md
│   │       │   │       │   │       ├── SPECS.md
│   │       │   │       │   │       └── types.d.ts
│   │       │   │       │   ├── flatted-3
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── .github
│   │       │   │       │   │       │   └── FUNDING.yml
│   │       │   │       │   │       ├── cjs
│   │       │   │       │   │       │   ├── index.js
│   │       │   │       │   │       │   └── package.json
│   │       │   │       │   │       ├── es.js
│   │       │   │       │   │       ├── esm
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── LICENSE
│   │       │   │       │   │       ├── min.js
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       ├── README.md
│   │       │   │       │   │       ├── SPECS.md
│   │       │   │       │   │       └── types.d.ts
│   │       │   │       │   ├── has-package-exports
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   ├── expected-without-conditions.json
│   │       │   │       │   │   ├── expected.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── .eslintignore
│   │       │   │       │   │       ├── .eslintrc
│   │       │   │       │   │       ├── .nycrc
│   │       │   │       │   │       ├── browser.js
│   │       │   │       │   │       ├── CHANGELOG.md
│   │       │   │       │   │       ├── conditional.js
│   │       │   │       │   │       ├── LICENSE
│   │       │   │       │   │       ├── no.js
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       ├── pattern.js
│   │       │   │       │   │       ├── README.md
│   │       │   │       │   │       ├── test
│   │       │   │       │   │       │   └── index.js
│   │       │   │       │   │       └── yes.js
│   │       │   │       │   ├── is-promise-2.1.0
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── .travis.yml
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── LICENSE
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       └── readme.md
│   │       │   │       │   ├── is-promise-2.2.0
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   ├── expected.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── LICENSE
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       └── readme.md
│   │       │   │       │   ├── is-promise-2.2.1
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       ├── LICENSE
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       └── readme.md
│   │       │   │       │   ├── is-promise-2.2.2
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       ├── LICENSE
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       └── readme.md
│   │       │   │       │   ├── list-exports
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   ├── expected-without-conditions.json
│   │       │   │       │   │   └── expected.json
│   │       │   │       │   ├── ls-exports
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── expected-without-conditions.json
│   │       │   │       │   ├── preact
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── compat
│   │       │   │       │   │       │   ├── package.json
│   │       │   │       │   │       │   ├── server.js
│   │       │   │       │   │       │   └── src
│   │       │   │       │   │       │       ├── Children.js
│   │       │   │       │   │       │       ├── events.js
│   │       │   │       │   │       │       ├── forwardRef.js
│   │       │   │       │   │       │       ├── index.d.ts
│   │       │   │       │   │       │       ├── index.js
│   │       │   │       │   │       │       ├── internal.d.ts
│   │       │   │       │   │       │       ├── memo.js
│   │       │   │       │   │       │       ├── portals.js
│   │       │   │       │   │       │       ├── PureComponent.js
│   │       │   │       │   │       │       ├── render.js
│   │       │   │       │   │       │       ├── suspense-list.d.ts
│   │       │   │       │   │       │       ├── suspense-list.js
│   │       │   │       │   │       │       ├── suspense.d.ts
│   │       │   │       │   │       │       ├── suspense.js
│   │       │   │       │   │       │       └── util.js
│   │       │   │       │   │       ├── debug
│   │       │   │       │   │       │   ├── package.json
│   │       │   │       │   │       │   └── src
│   │       │   │       │   │       │       ├── check-props.js
│   │       │   │       │   │       │       ├── component-stack.js
│   │       │   │       │   │       │       ├── constants.js
│   │       │   │       │   │       │       ├── debug.js
│   │       │   │       │   │       │       ├── index.js
│   │       │   │       │   │       │       └── internal.d.ts
│   │       │   │       │   │       ├── devtools
│   │       │   │       │   │       │   ├── package.json
│   │       │   │       │   │       │   └── src
│   │       │   │       │   │       │       ├── devtools.js
│   │       │   │       │   │       │       └── index.js
│   │       │   │       │   │       ├── hooks
│   │       │   │       │   │       │   ├── package.json
│   │       │   │       │   │       │   └── src
│   │       │   │       │   │       │       ├── index.d.ts
│   │       │   │       │   │       │       ├── index.js
│   │       │   │       │   │       │       └── internal.d.ts
│   │       │   │       │   │       ├── LICENSE
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       ├── README.md
│   │       │   │       │   │       ├── src
│   │       │   │       │   │       │   ├── clone-element.js
│   │       │   │       │   │       │   ├── component.js
│   │       │   │       │   │       │   ├── constants.js
│   │       │   │       │   │       │   ├── create-context.js
│   │       │   │       │   │       │   ├── create-element.js
│   │       │   │       │   │       │   ├── diff
│   │       │   │       │   │       │   │   ├── catch-error.js
│   │       │   │       │   │       │   │   ├── children.js
│   │       │   │       │   │       │   │   ├── index.js
│   │       │   │       │   │       │   │   └── props.js
│   │       │   │       │   │       │   ├── index.d.ts
│   │       │   │       │   │       │   ├── index.js
│   │       │   │       │   │       │   ├── internal.d.ts
│   │       │   │       │   │       │   ├── jsx.d.ts
│   │       │   │       │   │       │   ├── options.js
│   │       │   │       │   │       │   ├── render.js
│   │       │   │       │   │       │   └── util.js
│   │       │   │       │   │       └── test-utils
│   │       │   │       │   │           ├── package.json
│   │       │   │       │   │           └── src
│   │       │   │       │   │               ├── index.d.ts
│   │       │   │       │   │               └── index.js
│   │       │   │       │   ├── resolve-1
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── .eslintignore
│   │       │   │       │   │       ├── .eslintrc
│   │       │   │       │   │       ├── .travis.yml
│   │       │   │       │   │       ├── example
│   │       │   │       │   │       │   ├── async.js
│   │       │   │       │   │       │   └── sync.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── lib
│   │       │   │       │   │       │   ├── async.js
│   │       │   │       │   │       │   ├── caller.js
│   │       │   │       │   │       │   ├── core.js
│   │       │   │       │   │       │   ├── core.json
│   │       │   │       │   │       │   ├── is-core.js
│   │       │   │       │   │       │   ├── node-modules-paths.js
│   │       │   │       │   │       │   ├── normalize-options.js
│   │       │   │       │   │       │   └── sync.js
│   │       │   │       │   │       ├── LICENSE
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       ├── readme.markdown
│   │       │   │       │   │       └── test
│   │       │   │       │   │           ├── .eslintrc
│   │       │   │       │   │           ├── core.js
│   │       │   │       │   │           ├── dotdot
│   │       │   │       │   │           │   ├── abc
│   │       │   │       │   │           │   │   └── index.js
│   │       │   │       │   │           │   └── index.js
│   │       │   │       │   │           ├── dotdot.js
│   │       │   │       │   │           ├── faulty_basedir.js
│   │       │   │       │   │           ├── filter_sync.js
│   │       │   │       │   │           ├── filter.js
│   │       │   │       │   │           ├── mock_sync.js
│   │       │   │       │   │           ├── mock.js
│   │       │   │       │   │           ├── module_dir
│   │       │   │       │   │           │   ├── xmodules
│   │       │   │       │   │           │   │   └── aaa
│   │       │   │       │   │           │   │       └── index.js
│   │       │   │       │   │           │   ├── ymodules
│   │       │   │       │   │           │   │   └── aaa
│   │       │   │       │   │           │   │       └── index.js
│   │       │   │       │   │           │   └── zmodules
│   │       │   │       │   │           │       └── bbb
│   │       │   │       │   │           │           ├── main.js
│   │       │   │       │   │           │           └── package.json
│   │       │   │       │   │           ├── module_dir.js
│   │       │   │       │   │           ├── node_path
│   │       │   │       │   │           │   ├── x
│   │       │   │       │   │           │   │   ├── aaa
│   │       │   │       │   │           │   │   │   └── index.js
│   │       │   │       │   │           │   │   └── ccc
│   │       │   │       │   │           │   │       └── index.js
│   │       │   │       │   │           │   └── y
│   │       │   │       │   │           │       ├── bbb
│   │       │   │       │   │           │       │   └── index.js
│   │       │   │       │   │           │       └── ccc
│   │       │   │       │   │           │           └── index.js
│   │       │   │       │   │           ├── node_path.js
│   │       │   │       │   │           ├── node-modules-paths.js
│   │       │   │       │   │           ├── nonstring.js
│   │       │   │       │   │           ├── pathfilter
│   │       │   │       │   │           │   └── deep_ref
│   │       │   │       │   │           │       └── main.js
│   │       │   │       │   │           ├── pathfilter.js
│   │       │   │       │   │           ├── precedence
│   │       │   │       │   │           │   ├── aaa
│   │       │   │       │   │           │   │   ├── index.js
│   │       │   │       │   │           │   │   └── main.js
│   │       │   │       │   │           │   ├── aaa.js
│   │       │   │       │   │           │   ├── bbb
│   │       │   │       │   │           │   │   └── main.js
│   │       │   │       │   │           │   └── bbb.js
│   │       │   │       │   │           ├── precedence.js
│   │       │   │       │   │           ├── resolver
│   │       │   │       │   │           │   ├── baz
│   │       │   │       │   │           │   │   ├── doom.js
│   │       │   │       │   │           │   │   ├── package.json
│   │       │   │       │   │           │   │   └── quux.js
│   │       │   │       │   │           │   ├── browser_field
│   │       │   │       │   │           │   │   ├── a.js
│   │       │   │       │   │           │   │   ├── b.js
│   │       │   │       │   │           │   │   └── package.json
│   │       │   │       │   │           │   ├── cup.coffee
│   │       │   │       │   │           │   ├── dot_main
│   │       │   │       │   │           │   │   ├── index.js
│   │       │   │       │   │           │   │   └── package.json
│   │       │   │       │   │           │   ├── dot_slash_main
│   │       │   │       │   │           │   │   ├── index.js
│   │       │   │       │   │           │   │   └── package.json
│   │       │   │       │   │           │   ├── foo.js
│   │       │   │       │   │           │   ├── incorrect_main
│   │       │   │       │   │           │   │   ├── index.js
│   │       │   │       │   │           │   │   └── package.json
│   │       │   │       │   │           │   ├── invalid_main
│   │       │   │       │   │           │   │   └── package.json
│   │       │   │       │   │           │   ├── mug.coffee
│   │       │   │       │   │           │   ├── mug.js
│   │       │   │       │   │           │   ├── multirepo
│   │       │   │       │   │           │   │   ├── lerna.json
│   │       │   │       │   │           │   │   ├── package.json
│   │       │   │       │   │           │   │   └── packages
│   │       │   │       │   │           │   │       ├── package-a
│   │       │   │       │   │           │   │       │   ├── index.js
│   │       │   │       │   │           │   │       │   └── package.json
│   │       │   │       │   │           │   │       └── package-b
│   │       │   │       │   │           │   │           ├── index.js
│   │       │   │       │   │           │   │           └── package.json
│   │       │   │       │   │           │   ├── nested_symlinks
│   │       │   │       │   │           │   │   └── mylib
│   │       │   │       │   │           │   │       ├── async.js
│   │       │   │       │   │           │   │       ├── package.json
│   │       │   │       │   │           │   │       └── sync.js
│   │       │   │       │   │           │   ├── other_path
│   │       │   │       │   │           │   │   ├── lib
│   │       │   │       │   │           │   │   │   └── other-lib.js
│   │       │   │       │   │           │   │   └── root.js
│   │       │   │       │   │           │   ├── quux
│   │       │   │       │   │           │   │   └── foo
│   │       │   │       │   │           │   │       └── index.js
│   │       │   │       │   │           │   ├── same_names
│   │       │   │       │   │           │   │   ├── foo
│   │       │   │       │   │           │   │   │   └── index.js
│   │       │   │       │   │           │   │   └── foo.js
│   │       │   │       │   │           │   ├── symlinked
│   │       │   │       │   │           │   │   ├── _
│   │       │   │       │   │           │   │   │   ├── node_modules
│   │       │   │       │   │           │   │   │   │   └── foo.js
│   │       │   │       │   │           │   │   │   └── symlink_target
│   │       │   │       │   │           │   │   │       └── .gitkeep
│   │       │   │       │   │           │   │   └── package
│   │       │   │       │   │           │   │       ├── bar.js
│   │       │   │       │   │           │   │       └── package.json
│   │       │   │       │   │           │   └── without_basedir
│   │       │   │       │   │           │       └── main.js
│   │       │   │       │   │           ├── resolver_sync.js
│   │       │   │       │   │           ├── resolver.js
│   │       │   │       │   │           ├── shadowed_core
│   │       │   │       │   │           │   └── node_modules
│   │       │   │       │   │           │       └── util
│   │       │   │       │   │           │           └── index.js
│   │       │   │       │   │           ├── shadowed_core.js
│   │       │   │       │   │           ├── subdirs.js
│   │       │   │       │   │           └── symlinks.js
│   │       │   │       │   ├── resolve-2
│   │       │   │       │   │   ├── expected
│   │       │   │       │   │   │   ├── broken-dir-slash-conditions.json
│   │       │   │       │   │   │   ├── broken.json
│   │       │   │       │   │   │   ├── conditions.json
│   │       │   │       │   │   │   ├── experimental.json
│   │       │   │       │   │   │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │   │   │   ├── pattern-trailers.json
│   │       │   │       │   │   │   ├── patterns.json
│   │       │   │       │   │   │   └── pre-exports.json
│   │       │   │       │   │   └── project
│   │       │   │       │   │       ├── .eslintignore
│   │       │   │       │   │       ├── .eslintrc
│   │       │   │       │   │       ├── .github
│   │       │   │       │   │       │   └── FUNDING.yml
│   │       │   │       │   │       ├── .travis.yml
│   │       │   │       │   │       ├── example
│   │       │   │       │   │       │   ├── async.js
│   │       │   │       │   │       │   └── sync.js
│   │       │   │       │   │       ├── index.js
│   │       │   │       │   │       ├── index.mjs
│   │       │   │       │   │       ├── lib
│   │       │   │       │   │       │   ├── async.js
│   │       │   │       │   │       │   ├── caller.js
│   │       │   │       │   │       │   ├── core.js
│   │       │   │       │   │       │   ├── core.json
│   │       │   │       │   │       │   ├── is-core.js
│   │       │   │       │   │       │   ├── node-modules-paths.js
│   │       │   │       │   │       │   ├── normalize-options.js
│   │       │   │       │   │       │   └── sync.js
│   │       │   │       │   │       ├── LICENSE
│   │       │   │       │   │       ├── package.json
│   │       │   │       │   │       ├── readme.markdown
│   │       │   │       │   │       └── test
│   │       │   │       │   │           ├── core.js
│   │       │   │       │   │           ├── dotdot
│   │       │   │       │   │           │   ├── abc
│   │       │   │       │   │           │   │   └── index.js
│   │       │   │       │   │           │   └── index.js
│   │       │   │       │   │           ├── dotdot.js
│   │       │   │       │   │           ├── faulty_basedir.js
│   │       │   │       │   │           ├── filter_sync.js
│   │       │   │       │   │           ├── filter.js
│   │       │   │       │   │           ├── mock_sync.js
│   │       │   │       │   │           ├── mock.js
│   │       │   │       │   │           ├── module_dir
│   │       │   │       │   │           │   ├── xmodules
│   │       │   │       │   │           │   │   └── aaa
│   │       │   │       │   │           │   │       └── index.js
│   │       │   │       │   │           │   ├── ymodules
│   │       │   │       │   │           │   │   └── aaa
│   │       │   │       │   │           │   │       └── index.js
│   │       │   │       │   │           │   └── zmodules
│   │       │   │       │   │           │       └── bbb
│   │       │   │       │   │           │           ├── main.js
│   │       │   │       │   │           │           └── package.json
│   │       │   │       │   │           ├── module_dir.js
│   │       │   │       │   │           ├── node_path
│   │       │   │       │   │           │   ├── x
│   │       │   │       │   │           │   │   ├── aaa
│   │       │   │       │   │           │   │   │   └── index.js
│   │       │   │       │   │           │   │   └── ccc
│   │       │   │       │   │           │   │       └── index.js
│   │       │   │       │   │           │   └── y
│   │       │   │       │   │           │       ├── bbb
│   │       │   │       │   │           │       │   └── index.js
│   │       │   │       │   │           │       └── ccc
│   │       │   │       │   │           │           └── index.js
│   │       │   │       │   │           ├── node_path.js
│   │       │   │       │   │           ├── node-modules-paths.js
│   │       │   │       │   │           ├── nonstring.js
│   │       │   │       │   │           ├── pathfilter
│   │       │   │       │   │           │   └── deep_ref
│   │       │   │       │   │           │       └── main.js
│   │       │   │       │   │           ├── pathfilter_sync.js
│   │       │   │       │   │           ├── pathfilter.js
│   │       │   │       │   │           ├── precedence
│   │       │   │       │   │           │   ├── aaa
│   │       │   │       │   │           │   │   ├── index.js
│   │       │   │       │   │           │   │   └── main.js
│   │       │   │       │   │           │   ├── aaa.js
│   │       │   │       │   │           │   ├── bbb
│   │       │   │       │   │           │   │   └── main.js
│   │       │   │       │   │           │   └── bbb.js
│   │       │   │       │   │           ├── precedence.js
│   │       │   │       │   │           ├── resolver
│   │       │   │       │   │           │   ├── baz
│   │       │   │       │   │           │   │   ├── doom.js
│   │       │   │       │   │           │   │   ├── package.json
│   │       │   │       │   │           │   │   └── quux.js
│   │       │   │       │   │           │   ├── browser_field
│   │       │   │       │   │           │   │   ├── a.js
│   │       │   │       │   │           │   │   ├── b.js
│   │       │   │       │   │           │   │   └── package.json
│   │       │   │       │   │           │   ├── cup.coffee
│   │       │   │       │   │           │   ├── dot_main
│   │       │   │       │   │           │   │   ├── index.js
│   │       │   │       │   │           │   │   └── package.json
│   │       │   │       │   │           │   ├── dot_slash_main
│   │       │   │       │   │           │   │   ├── index.js
│   │       │   │       │   │           │   │   └── package.json
│   │       │   │       │   │           │   ├── foo.js
│   │       │   │       │   │           │   ├── incorrect_main
│   │       │   │       │   │           │   │   ├── index.js
│   │       │   │       │   │           │   │   └── package.json
│   │       │   │       │   │           │   ├── invalid_main
│   │       │   │       │   │           │   │   └── package.json
│   │       │   │       │   │           │   ├── mug.coffee
│   │       │   │       │   │           │   ├── mug.js
│   │       │   │       │   │           │   ├── multirepo
│   │       │   │       │   │           │   │   ├── lerna.json
│   │       │   │       │   │           │   │   ├── package.json
│   │       │   │       │   │           │   │   └── packages
│   │       │   │       │   │           │   │       ├── package-a
│   │       │   │       │   │           │   │       │   ├── index.js
│   │       │   │       │   │           │   │       │   └── package.json
│   │       │   │       │   │           │   │       └── package-b
│   │       │   │       │   │           │   │           ├── index.js
│   │       │   │       │   │           │   │           └── package.json
│   │       │   │       │   │           │   ├── nested_symlinks
│   │       │   │       │   │           │   │   └── mylib
│   │       │   │       │   │           │   │       ├── async.js
│   │       │   │       │   │           │   │       ├── package.json
│   │       │   │       │   │           │   │       └── sync.js
│   │       │   │       │   │           │   ├── other_path
│   │       │   │       │   │           │   │   ├── lib
│   │       │   │       │   │           │   │   │   └── other-lib.js
│   │       │   │       │   │           │   │   └── root.js
│   │       │   │       │   │           │   ├── quux
│   │       │   │       │   │           │   │   └── foo
│   │       │   │       │   │           │   │       └── index.js
│   │       │   │       │   │           │   ├── same_names
│   │       │   │       │   │           │   │   ├── foo
│   │       │   │       │   │           │   │   │   └── index.js
│   │       │   │       │   │           │   │   └── foo.js
│   │       │   │       │   │           │   ├── symlinked
│   │       │   │       │   │           │   │   ├── _
│   │       │   │       │   │           │   │   │   └── symlink_target
│   │       │   │       │   │           │   │   │       └── .gitkeep
│   │       │   │       │   │           │   │   └── package
│   │       │   │       │   │           │   │       ├── bar.js
│   │       │   │       │   │           │   │       └── package.json
│   │       │   │       │   │           │   └── without_basedir
│   │       │   │       │   │           │       └── main.js
│   │       │   │       │   │           ├── resolver_sync.js
│   │       │   │       │   │           ├── resolver.js
│   │       │   │       │   │           ├── shadowed_core.js
│   │       │   │       │   │           ├── subdirs.js
│   │       │   │       │   │           └── symlinks.js
│   │       │   │       │   └── single-spa-layout
│   │       │   │       │       ├── expected
│   │       │   │       │       │   ├── broken-dir-slash-conditions.json
│   │       │   │       │       │   ├── broken.json
│   │       │   │       │       │   ├── conditions.json
│   │       │   │       │       │   ├── experimental.json
│   │       │   │       │       │   ├── pattern-trailers-no-dir-slash.json
│   │       │   │       │       │   ├── pattern-trailers.json
│   │       │   │       │       │   ├── patterns.json
│   │       │   │       │       │   └── pre-exports.json
│   │       │   │       │       └── project
│   │       │   │       │           ├── LICENSE
│   │       │   │       │           ├── package.json
│   │       │   │       │           └── README.md
│   │       │   │       ├── index.js
│   │       │   │       └── package.json
│   │       │   ├── README.md
│   │       │   └── since.js
│   │       ├── mock_sync.js
│   │       ├── mock.js
│   │       ├── module_dir
│   │       │   ├── xmodules
│   │       │   │   └── aaa
│   │       │   │       └── index.js
│   │       │   ├── ymodules
│   │       │   │   └── aaa
│   │       │   │       └── index.js
│   │       │   └── zmodules
│   │       │       └── bbb
│   │       │           ├── main.js
│   │       │           └── package.json
│   │       ├── module_dir.js
│   │       ├── node_path
│   │       │   ├── x
│   │       │   │   ├── aaa
│   │       │   │   │   └── index.js
│   │       │   │   └── ccc
│   │       │   │       └── index.js
│   │       │   └── y
│   │       │       ├── bbb
│   │       │       │   └── index.js
│   │       │       └── ccc
│   │       │           └── index.js
│   │       ├── node_path.js
│   │       ├── node-modules-paths.js
│   │       ├── nonstring.js
│   │       ├── pathfilter
│   │       │   └── deep_ref
│   │       │       └── main.js
│   │       ├── pathfilter.js
│   │       ├── precedence
│   │       │   ├── aaa
│   │       │   │   ├── index.js
│   │       │   │   └── main.js
│   │       │   ├── aaa.js
│   │       │   ├── bbb
│   │       │   │   └── main.js
│   │       │   └── bbb.js
│   │       ├── precedence.js
│   │       ├── resolver
│   │       │   ├── baz
│   │       │   │   ├── doom.js
│   │       │   │   ├── package.json
│   │       │   │   └── quux.js
│   │       │   ├── browser_field
│   │       │   │   ├── a.js
│   │       │   │   ├── b.js
│   │       │   │   └── package.json
│   │       │   ├── cup.coffee
│   │       │   ├── dot_main
│   │       │   │   ├── index.js
│   │       │   │   └── package.json
│   │       │   ├── dot_slash_main
│   │       │   │   ├── index.js
│   │       │   │   └── package.json
│   │       │   ├── false_main
│   │       │   │   ├── index.js
│   │       │   │   └── package.json
│   │       │   ├── foo.js
│   │       │   ├── incorrect_main
│   │       │   │   ├── index.js
│   │       │   │   └── package.json
│   │       │   ├── invalid_main
│   │       │   │   └── package.json
│   │       │   ├── mug.coffee
│   │       │   ├── mug.js
│   │       │   ├── multirepo
│   │       │   │   ├── lerna.json
│   │       │   │   ├── package.json
│   │       │   │   └── packages
│   │       │   │       ├── package-a
│   │       │   │       │   ├── index.js
│   │       │   │       │   └── package.json
│   │       │   │       └── package-b
│   │       │   │           ├── index.js
│   │       │   │           └── package.json
│   │       │   ├── nested_symlinks
│   │       │   │   └── mylib
│   │       │   │       ├── async.js
│   │       │   │       ├── package.json
│   │       │   │       └── sync.js
│   │       │   ├── other_path
│   │       │   │   ├── lib
│   │       │   │   │   └── other-lib.js
│   │       │   │   └── root.js
│   │       │   ├── quux
│   │       │   │   └── foo
│   │       │   │       └── index.js
│   │       │   ├── same_names
│   │       │   │   ├── foo
│   │       │   │   │   └── index.js
│   │       │   │   └── foo.js
│   │       │   ├── symlinked
│   │       │   │   ├── _
│   │       │   │   │   ├── node_modules
│   │       │   │   │   │   └── foo.js
│   │       │   │   │   └── symlink_target
│   │       │   │   │       └── .gitkeep
│   │       │   │   └── package
│   │       │   │       ├── bar.js
│   │       │   │       └── package.json
│   │       │   └── without_basedir
│   │       │       └── main.js
│   │       ├── resolver_sync.js
│   │       ├── resolver.js
│   │       ├── shadowed_core
│   │       │   └── node_modules
│   │       │       └── util
│   │       │           └── index.js
│   │       ├── shadowed_core.js
│   │       ├── subdirs.js
│   │       └── symlinks.js
│   ├── safer-buffer
│   │   ├── dangerous.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── Porting-Buffer.md
│   │   ├── Readme.md
│   │   ├── safer.js
│   │   └── tests.js
│   ├── setprototypeof
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── test
│   │       └── index.js
│   ├── shelljs
│   │   ├── bin
│   │   │   └── shjs
│   │   ├── CHANGELOG.md
│   │   ├── commands.js
│   │   ├── global.js
│   │   ├── LICENSE
│   │   ├── make.js
│   │   ├── package.json
│   │   ├── plugin.js
│   │   ├── README.md
│   │   ├── shell.js
│   │   └── src
│   │       ├── cat.js
│   │       ├── cd.js
│   │       ├── chmod.js
│   │       ├── common.js
│   │       ├── cp.js
│   │       ├── dirs.js
│   │       ├── echo.js
│   │       ├── error.js
│   │       ├── exec-child.js
│   │       ├── exec.js
│   │       ├── find.js
│   │       ├── grep.js
│   │       ├── head.js
│   │       ├── ln.js
│   │       ├── ls.js
│   │       ├── mkdir.js
│   │       ├── mv.js
│   │       ├── popd.js
│   │       ├── pushd.js
│   │       ├── pwd.js
│   │       ├── rm.js
│   │       ├── sed.js
│   │       ├── set.js
│   │       ├── sort.js
│   │       ├── tail.js
│   │       ├── tempdir.js
│   │       ├── test.js
│   │       ├── to.js
│   │       ├── toEnd.js
│   │       ├── touch.js
│   │       ├── uniq.js
│   │       └── which.js
│   ├── shx
│   │   ├── CHANGELOG.md
│   │   ├── lib
│   │   │   ├── cli.js
│   │   │   ├── config.js
│   │   │   ├── help.js
│   │   │   ├── plugin-true-false.js
│   │   │   ├── printCmdRet.js
│   │   │   └── shx.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── statuses
│   │   ├── codes.json
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── supports-preserve-symlinks-flag
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── browser.js
│   │   ├── CHANGELOG.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── test
│   │       └── index.js
│   ├── toidentifier
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── typescript
│   │   ├── bin
│   │   │   ├── tsc
│   │   │   └── tsserver
│   │   ├── lib
│   │   │   ├── _tsc.js
│   │   │   ├── _tsserver.js
│   │   │   ├── _typingsInstaller.js
│   │   │   ├── cancellationToken.js
│   │   │   ├── cs
│   │   │   │   └── diagnosticMessages.generated.json
│   │   │   ├── de
│   │   │   │   └── diagnosticMessages.generated.json
│   │   │   ├── es
│   │   │   │   └── diagnosticMessages.generated.json
│   │   │   ├── fr
│   │   │   │   └── diagnosticMessages.generated.json
│   │   │   ├── it
│   │   │   │   └── diagnosticMessages.generated.json
│   │   │   ├── ja
│   │   │   │   └── diagnosticMessages.generated.json
│   │   │   ├── ko
│   │   │   │   └── diagnosticMessages.generated.json
│   │   │   ├── lib.d.ts
│   │   │   ├── lib.decorators.d.ts
│   │   │   ├── lib.decorators.legacy.d.ts
│   │   │   ├── lib.dom.asynciterable.d.ts
│   │   │   ├── lib.dom.d.ts
│   │   │   ├── lib.dom.iterable.d.ts
│   │   │   ├── lib.es2015.collection.d.ts
│   │   │   ├── lib.es2015.core.d.ts
│   │   │   ├── lib.es2015.d.ts
│   │   │   ├── lib.es2015.generator.d.ts
│   │   │   ├── lib.es2015.iterable.d.ts
│   │   │   ├── lib.es2015.promise.d.ts
│   │   │   ├── lib.es2015.proxy.d.ts
│   │   │   ├── lib.es2015.reflect.d.ts
│   │   │   ├── lib.es2015.symbol.d.ts
│   │   │   ├── lib.es2015.symbol.wellknown.d.ts
│   │   │   ├── lib.es2016.array.include.d.ts
│   │   │   ├── lib.es2016.d.ts
│   │   │   ├── lib.es2016.full.d.ts
│   │   │   ├── lib.es2016.intl.d.ts
│   │   │   ├── lib.es2017.arraybuffer.d.ts
│   │   │   ├── lib.es2017.d.ts
│   │   │   ├── lib.es2017.date.d.ts
│   │   │   ├── lib.es2017.full.d.ts
│   │   │   ├── lib.es2017.intl.d.ts
│   │   │   ├── lib.es2017.object.d.ts
│   │   │   ├── lib.es2017.sharedmemory.d.ts
│   │   │   ├── lib.es2017.string.d.ts
│   │   │   ├── lib.es2017.typedarrays.d.ts
│   │   │   ├── lib.es2018.asyncgenerator.d.ts
│   │   │   ├── lib.es2018.asynciterable.d.ts
│   │   │   ├── lib.es2018.d.ts
│   │   │   ├── lib.es2018.full.d.ts
│   │   │   ├── lib.es2018.intl.d.ts
│   │   │   ├── lib.es2018.promise.d.ts
│   │   │   ├── lib.es2018.regexp.d.ts
│   │   │   ├── lib.es2019.array.d.ts
│   │   │   ├── lib.es2019.d.ts
│   │   │   ├── lib.es2019.full.d.ts
│   │   │   ├── lib.es2019.intl.d.ts
│   │   │   ├── lib.es2019.object.d.ts
│   │   │   ├── lib.es2019.string.d.ts
│   │   │   ├── lib.es2019.symbol.d.ts
│   │   │   ├── lib.es2020.bigint.d.ts
│   │   │   ├── lib.es2020.d.ts
│   │   │   ├── lib.es2020.date.d.ts
│   │   │   ├── lib.es2020.full.d.ts
│   │   │   ├── lib.es2020.intl.d.ts
│   │   │   ├── lib.es2020.number.d.ts
│   │   │   ├── lib.es2020.promise.d.ts
│   │   │   ├── lib.es2020.sharedmemory.d.ts
│   │   │   ├── lib.es2020.string.d.ts
│   │   │   ├── lib.es2020.symbol.wellknown.d.ts
│   │   │   ├── lib.es2021.d.ts
│   │   │   ├── lib.es2021.full.d.ts
│   │   │   ├── lib.es2021.intl.d.ts
│   │   │   ├── lib.es2021.promise.d.ts
│   │   │   ├── lib.es2021.string.d.ts
│   │   │   ├── lib.es2021.weakref.d.ts
│   │   │   ├── lib.es2022.array.d.ts
│   │   │   ├── lib.es2022.d.ts
│   │   │   ├── lib.es2022.error.d.ts
│   │   │   ├── lib.es2022.full.d.ts
│   │   │   ├── lib.es2022.intl.d.ts
│   │   │   ├── lib.es2022.object.d.ts
│   │   │   ├── lib.es2022.regexp.d.ts
│   │   │   ├── lib.es2022.string.d.ts
│   │   │   ├── lib.es2023.array.d.ts
│   │   │   ├── lib.es2023.collection.d.ts
│   │   │   ├── lib.es2023.d.ts
│   │   │   ├── lib.es2023.full.d.ts
│   │   │   ├── lib.es2023.intl.d.ts
│   │   │   ├── lib.es2024.arraybuffer.d.ts
│   │   │   ├── lib.es2024.collection.d.ts
│   │   │   ├── lib.es2024.d.ts
│   │   │   ├── lib.es2024.full.d.ts
│   │   │   ├── lib.es2024.object.d.ts
│   │   │   ├── lib.es2024.promise.d.ts
│   │   │   ├── lib.es2024.regexp.d.ts
│   │   │   ├── lib.es2024.sharedmemory.d.ts
│   │   │   ├── lib.es2024.string.d.ts
│   │   │   ├── lib.es5.d.ts
│   │   │   ├── lib.es6.d.ts
│   │   │   ├── lib.esnext.array.d.ts
│   │   │   ├── lib.esnext.collection.d.ts
│   │   │   ├── lib.esnext.d.ts
│   │   │   ├── lib.esnext.decorators.d.ts
│   │   │   ├── lib.esnext.disposable.d.ts
│   │   │   ├── lib.esnext.full.d.ts
│   │   │   ├── lib.esnext.intl.d.ts
│   │   │   ├── lib.esnext.iterator.d.ts
│   │   │   ├── lib.scripthost.d.ts
│   │   │   ├── lib.webworker.asynciterable.d.ts
│   │   │   ├── lib.webworker.d.ts
│   │   │   ├── lib.webworker.importscripts.d.ts
│   │   │   ├── lib.webworker.iterable.d.ts
│   │   │   ├── pl
│   │   │   │   └── diagnosticMessages.generated.json
│   │   │   ├── pt-br
│   │   │   │   └── diagnosticMessages.generated.json
│   │   │   ├── ru
│   │   │   │   └── diagnosticMessages.generated.json
│   │   │   ├── tr
│   │   │   │   └── diagnosticMessages.generated.json
│   │   │   ├── tsc.js
│   │   │   ├── tsserver.js
│   │   │   ├── tsserverlibrary.d.ts
│   │   │   ├── tsserverlibrary.js
│   │   │   ├── typescript.d.ts
│   │   │   ├── typescript.js
│   │   │   ├── typesMap.json
│   │   │   ├── typingsInstaller.js
│   │   │   ├── watchGuard.js
│   │   │   ├── zh-cn
│   │   │   │   └── diagnosticMessages.generated.json
│   │   │   └── zh-tw
│   │   │       └── diagnosticMessages.generated.json
│   │   ├── LICENSE.txt
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── SECURITY.md
│   │   └── ThirdPartyNoticeText.txt
│   ├── undici-types
│   │   ├── agent.d.ts
│   │   ├── api.d.ts
│   │   ├── balanced-pool.d.ts
│   │   ├── cache.d.ts
│   │   ├── client.d.ts
│   │   ├── connector.d.ts
│   │   ├── content-type.d.ts
│   │   ├── cookies.d.ts
│   │   ├── diagnostics-channel.d.ts
│   │   ├── dispatcher.d.ts
│   │   ├── env-http-proxy-agent.d.ts
│   │   ├── errors.d.ts
│   │   ├── eventsource.d.ts
│   │   ├── fetch.d.ts
│   │   ├── file.d.ts
│   │   ├── filereader.d.ts
│   │   ├── formdata.d.ts
│   │   ├── global-dispatcher.d.ts
│   │   ├── global-origin.d.ts
│   │   ├── handlers.d.ts
│   │   ├── header.d.ts
│   │   ├── index.d.ts
│   │   ├── interceptors.d.ts
│   │   ├── LICENSE
│   │   ├── mock-agent.d.ts
│   │   ├── mock-client.d.ts
│   │   ├── mock-errors.d.ts
│   │   ├── mock-interceptor.d.ts
│   │   ├── mock-pool.d.ts
│   │   ├── package.json
│   │   ├── patch.d.ts
│   │   ├── pool-stats.d.ts
│   │   ├── pool.d.ts
│   │   ├── proxy-agent.d.ts
│   │   ├── readable.d.ts
│   │   ├── README.md
│   │   ├── retry-agent.d.ts
│   │   ├── retry-handler.d.ts
│   │   ├── util.d.ts
│   │   ├── webidl.d.ts
│   │   └── websocket.d.ts
│   ├── unpipe
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── wrappy
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── wrappy.js
│   └── zod
│       ├── index.d.ts
│       ├── lib
│       │   ├── __tests__
│       │   │   ├── Mocker.d.ts
│       │   │   └── Mocker.js
│       │   ├── benchmarks
│       │   │   ├── datetime.d.ts
│       │   │   ├── datetime.js
│       │   │   ├── discriminatedUnion.d.ts
│       │   │   ├── discriminatedUnion.js
│       │   │   ├── index.d.ts
│       │   │   ├── index.js
│       │   │   ├── ipv4.d.ts
│       │   │   ├── ipv4.js
│       │   │   ├── object.d.ts
│       │   │   ├── object.js
│       │   │   ├── primitives.d.ts
│       │   │   ├── primitives.js
│       │   │   ├── realworld.d.ts
│       │   │   ├── realworld.js
│       │   │   ├── string.d.ts
│       │   │   ├── string.js
│       │   │   ├── union.d.ts
│       │   │   └── union.js
│       │   ├── errors.d.ts
│       │   ├── errors.js
│       │   ├── external.d.ts
│       │   ├── external.js
│       │   ├── helpers
│       │   │   ├── enumUtil.d.ts
│       │   │   ├── enumUtil.js
│       │   │   ├── errorUtil.d.ts
│       │   │   ├── errorUtil.js
│       │   │   ├── parseUtil.d.ts
│       │   │   ├── parseUtil.js
│       │   │   ├── partialUtil.d.ts
│       │   │   ├── partialUtil.js
│       │   │   ├── typeAliases.d.ts
│       │   │   ├── typeAliases.js
│       │   │   ├── util.d.ts
│       │   │   └── util.js
│       │   ├── index.d.ts
│       │   ├── index.js
│       │   ├── index.mjs
│       │   ├── index.umd.js
│       │   ├── locales
│       │   │   ├── en.d.ts
│       │   │   └── en.js
│       │   ├── standard-schema.d.ts
│       │   ├── standard-schema.js
│       │   ├── types.d.ts
│       │   ├── types.js
│       │   ├── ZodError.d.ts
│       │   └── ZodError.js
│       ├── LICENSE
│       ├── package.json
│       └── README.md
├── package-lock.json
├── package.json
├── README.md
├── src
│   ├── index.ts
│   ├── reasoner.ts
│   ├── state.ts
│   ├── strategies
│   │   ├── base.ts
│   │   ├── beam-search.ts
│   │   ├── experiments
│   │   │   ├── mcts-002-alpha.ts
│   │   │   └── mcts-002alt-alpha.ts
│   │   ├── factory.ts
│   │   └── mcts.ts
│   ├── types
│   │   └── modelcontextprotocol.d.ts
│   └── types.ts
└── tsconfig.json
```

# Files

--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------

```
node_modules/
dist/
```

--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------

```markdown
# MCP Reasoner
A reasoning implementation for Claude Desktop that lets you use both Beam Search and Monte Carlo Tree Search (MCTS). tbh this started as a way to see if we could make Claude even better at complex problem-solving... turns out we definitely can.

### Current Version:
**v2.0.0**

#### What's New:

> Added 2 Experimental Reasoning Algorithms:
>
>     - `mcts-002-alpha`
>
>         - Uses the A* Search Method along with an early *alpha* implementation of a Policy Simulation Layer
>
>         - Also includes an early *alpha* implementation of Adaptive Exploration Simulator & Outcome Based Reasoning Simulator
>
>     *NOTE* the implementation of these alpha simulators is not complete and is subject to change
>
>     - `mcts-002alt-alpha`
>
>         - Uses the Bidirectional Search Method along with an early *alpha* implementation of a Policy Simulation Layer
>
>         - Also includes an early *alpha* implementation of Adaptive Exploration Simulator & Outcome Based Reasoning Simulator
>
>     *NOTE* the implementation of these alpha simulators is not complete and is subject to change


What happened to `mcts-001-alpha` and `mcts-001alt-alpha`?
> Quite simply: It was useless and near similar to the base `mcts` method. After initial testing the results yielded in basic thought processes was near similar showing that simply adding policy simulation may not have an effect.

So why add Polciy Simulation Layer now?
> Well i think its important to incorporate Policy AND Search in tandem as that is how most of the algorithms implement them.

#### Previous Versions:
**v1.1.0**

> Added model control over search parameters:
>
> beamWidth - lets Claude adjust how many paths to track (1-10)
>
> numSimulations - fine-tune MCTS simulation count (1-150)

## Features
- Two search strategies that you can switch between:
   - Beam search (good for straightforward stuff)
   - MCTS (when stuff gets complex) with alpha variations (see above)
- Tracks how good different reasoning paths are
- Maps out all the different ways Claude thinks through problems
- Analyzes how the reasoning process went
- Follows the MCP protocol (obviously)

## Installation
```
git clone https://github.com/frgmt0/mcp-reasoner.git 

OR clone the original:

git clone https://github.com/Jacck/mcp-reasoner.git

cd mcp-reasoner
npm install
npm run build
```

## Configuration
Add to Claude Desktop config:
```
{
  "mcpServers": {
    "mcp-reasoner": {
      "command": "node",
      "args": ["path/to/mcp-reasoner/dist/index.js"],
    }
  }
}
```

## Testing

[More Testing Coming Soon]

## Benchmarks

[Benchmarking will be added soon]

Key Benchmarks to test against:

- MATH500

- GPQA-Diamond

- GMSK8

- Maybe Polyglot &/or SWE-Bench

## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

```

--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------

```json
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ES2020",
    "moduleResolution": "node",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "declaration": true,
    "resolveJsonModule": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "dist"]
}

```

--------------------------------------------------------------------------------
/src/types/modelcontextprotocol.d.ts:
--------------------------------------------------------------------------------

```typescript
declare module '@modelcontextprotocol/sdk/server/index.js' {
  export class Server {
    constructor(info: { name: string; version: string }, config: { capabilities: { tools: {} } });
    setRequestHandler(schema: any, handler: (request: any) => Promise<any>): void;
    connect(transport: any): Promise<void>;
  }
}

declare module '@modelcontextprotocol/sdk/server/stdio.js' {
  export class StdioServerTransport {
    constructor();
  }
}

declare module '@modelcontextprotocol/sdk/types.js' {
  export interface Tool {
    name: string;
    description: string;
    inputSchema: {
      type: string;
      properties: Record<string, any>;
      required: string[];
    };
  }

  export const CallToolRequestSchema: {
    params: {
      name: string;
      arguments: any;
    };
  };

  export const ListToolsRequestSchema: {
    params: any;
  };
}
```

--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------

```json
{
  "name": "mcp-reasoner",
  "version": "2.0.0",
  "description": "MCP Reasoner with multiple reasoning strategies including Beam Search and Monte Carlo Tree Search",
  "type": "module",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "scripts": {
    "build": "tsc",
    "start": "node dist/index.js",
    "clean": "shx rm -rf dist",
    "prebuild": "npm run clean",
    "test": "jest",
    "lint": "eslint src --ext .ts",
    "format": "prettier --write \"src/**/*.ts\"",
    "prepare": "npm run build"
  },
  "dependencies": {
    "@modelcontextprotocol/sdk": "*",
    "chalk": "^5.3.0",
    "uuid": "^9.0.0"
  },
  "devDependencies": {
    "@types/jest": "^29.5.0",
    "@types/node": "^20.0.0",
    "@types/uuid": "^10.0.0",
    "@typescript-eslint/eslint-plugin": "^6.0.0",
    "@typescript-eslint/parser": "^6.0.0",
    "eslint": "^8.0.0",
    "jest": "^29.5.0",
    "prettier": "^3.0.0",
    "shx": "^0.3.4",
    "ts-jest": "^29.1.0",
    "typescript": "^5.0.0"
  },
  "keywords": [
    "mcp",
    "reasoning",
    "beam-search",
    "monte-carlo-tree-search",
    "ai",
    "search"
  ],
  "author": "",
  "license": "MIT",
  "engines": {
    "node": ">=16.0.0"
  }
}

```

--------------------------------------------------------------------------------
/src/strategies/factory.ts:
--------------------------------------------------------------------------------

```typescript
import { StateManager } from '../state.js';
import { BaseStrategy } from './base.js';
import { BeamSearchStrategy } from './beam-search.js';
import { MonteCarloTreeSearchStrategy } from './mcts.js';
import { MCTS002AlphaStrategy } from './experiments/mcts-002-alpha.js';
import { MCTS002AltAlphaStrategy } from './experiments/mcts-002alt-alpha.js';

export enum ReasoningStrategy {
  BEAM_SEARCH = 'beam_search',
  MCTS = 'mcts',
  MCTS_002_ALPHA = 'mcts_002_alpha',
  MCTS_002_ALT_ALPHA = 'mcts_002_alt_alpha'
}

export class StrategyFactory {
  static createStrategy(
    type: ReasoningStrategy,
    stateManager: StateManager,
    beamWidth?: number,
    numSimulations?: number
  ): BaseStrategy {
    switch (type) {
      case ReasoningStrategy.BEAM_SEARCH:
        return new BeamSearchStrategy(stateManager, beamWidth);
      case ReasoningStrategy.MCTS:
        return new MonteCarloTreeSearchStrategy(stateManager, numSimulations);
      case ReasoningStrategy.MCTS_002_ALPHA:
        return new MCTS002AlphaStrategy(stateManager, numSimulations);
      case ReasoningStrategy.MCTS_002_ALT_ALPHA:
        return new MCTS002AltAlphaStrategy(stateManager, numSimulations);
      default:
        throw new Error(`Unknown strategy type: ${type}`);
    }
  }
}

```

--------------------------------------------------------------------------------
/src/types.ts:
--------------------------------------------------------------------------------

```typescript
export interface ThoughtNode {
  id: string;
  thought: string;
  score: number;
  depth: number;
  children: string[];  // Store child IDs
  parentId?: string;   // Store parent ID
  isComplete: boolean;
}

export interface ReasoningRequest {
  thought: string;
  thoughtNumber: number;
  totalThoughts: number;
  nextThoughtNeeded: boolean;
  parentId?: string;   // For branching thoughts
  strategyType?: string; // Strategy to use for reasoning
  beamWidth?: number;  // Number of top paths to maintain (n-sampling)
  numSimulations?: number; // Number of MCTS simulations to run
}

export interface ReasoningResponse {
  nodeId: string;
  thought: string;
  score: number;
  depth: number;
  isComplete: boolean;
  nextThoughtNeeded: boolean;
  possiblePaths?: number;
  bestScore?: number;
  strategyUsed?: string;
}

export interface ReasoningStats {
  totalNodes: number;
  averageScore: number;
  maxDepth: number;
  branchingFactor: number;
  strategyMetrics?: Record<string, any>;
}

export const CONFIG = {
  beamWidth: 3,     // Keep top 3 paths
  maxDepth: 5,      // Reasonable depth limit
  minScore: 0.5,    // Threshold for path viability
  temperature: 0.7, // For thought diversity
  cacheSize: 1000,  // LRU cache size
  defaultStrategy: 'beam_search', // Default reasoning strategy
  numSimulations: 50 // Default number of MCTS simulations
} as const;

```

--------------------------------------------------------------------------------
/src/state.ts:
--------------------------------------------------------------------------------

```typescript
import { ThoughtNode } from './types.js';

class LRUCache<K, V> {
  private cache = new Map<K, V>();
  private readonly maxSize: number;

  constructor(maxSize: number) {
    this.maxSize = maxSize;
  }

  get(key: K): V | undefined {
    const value = this.cache.get(key);
    if (value) {
      // Refresh by removing and re-adding
      this.cache.delete(key);
      this.cache.set(key, value);
    }
    return value;
  }

  set(key: K, value: V): void {
    // Remove oldest if at capacity
    if (this.cache.size >= this.maxSize) {
      const firstKey = Array.from(this.cache.keys())[0];
      if (firstKey !== undefined) {
        this.cache.delete(firstKey);
      }
    }
    // Add new value
    this.cache.set(key, value);
  }

  clear(): void {
    this.cache.clear();
  }

  size(): number {
    return this.cache.size;
  }

  has(key: K): boolean {
    return this.cache.has(key);
  }
}

export class StateManager {
  private cache: LRUCache<string, ThoughtNode>;
  private nodes = new Map<string, ThoughtNode>();

  constructor(cacheSize: number) {
    this.cache = new LRUCache(cacheSize);
  }

  async getNode(id: string): Promise<ThoughtNode | undefined> {
    // Check cache first
    const cached = this.cache.get(id);
    if (cached) return cached;

    // Check main storage
    const node = this.nodes.get(id);
    if (node) {
      this.cache.set(id, node);
      return node;
    }

    return undefined;
  }

  async saveNode(node: ThoughtNode): Promise<void> {
    this.nodes.set(node.id, node);
    this.cache.set(node.id, node);
  }

  async getChildren(nodeId: string): Promise<ThoughtNode[]> {
    const node = await this.getNode(nodeId);
    if (!node) return [];

    const children = await Promise.all(
      node.children.map(id => this.getNode(id))
    );

    return children.filter((n): n is ThoughtNode => n !== undefined);
  }

  async getPath(nodeId: string): Promise<ThoughtNode[]> {
    const path: ThoughtNode[] = [];
    let currentId = nodeId;

    while (currentId) {
      const node = await this.getNode(currentId);
      if (!node) break;
      
      path.unshift(node);
      currentId = node.parentId || '';
    }

    return path;
  }

  async getAllNodes(): Promise<ThoughtNode[]> {
    return Array.from(this.nodes.values());
  }

  clear(): void {
    this.nodes.clear();
    this.cache.clear();
  }
}

```

--------------------------------------------------------------------------------
/src/strategies/beam-search.ts:
--------------------------------------------------------------------------------

```typescript
import { v4 as uuidv4 } from 'uuid';
import { ThoughtNode, ReasoningRequest, ReasoningResponse, CONFIG } from '../types.js';
import { BaseStrategy } from './base.js';

export class BeamSearchStrategy extends BaseStrategy {
  private beamWidth: number;
  private beams: Map<number, ThoughtNode[]>;

  constructor(stateManager: any, beamWidth: number = CONFIG.beamWidth) {
    super(stateManager);
    this.beamWidth = beamWidth;
    this.beams = new Map();
  }

  public async processThought(request: ReasoningRequest): Promise<ReasoningResponse> {
    const nodeId = uuidv4();
    const parentNode = request.parentId ? 
      await this.getNode(request.parentId) : undefined;

    const node: ThoughtNode = {
      id: nodeId,
      thought: request.thought,
      depth: request.thoughtNumber - 1,
      score: 0,
      children: [],
      parentId: request.parentId,
      isComplete: !request.nextThoughtNeeded
    };

    // Evaluate and score the node
    node.score = this.evaluateThought(node, parentNode);
    await this.saveNode(node);

    // Update parent if exists
    if (parentNode) {
      parentNode.children.push(node.id);
      await this.saveNode(parentNode);
    }

    // Manage beam at current depth
    let currentBeam = this.beams.get(node.depth) || [];
    currentBeam.push(node);
    currentBeam.sort((a, b) => b.score - a.score);
    
    // Prune beam to maintain beam width
    if (currentBeam.length > this.beamWidth) {
      currentBeam = currentBeam.slice(0, this.beamWidth);
    }
    this.beams.set(node.depth, currentBeam);

    // Calculate path statistics
    const currentPath = await this.stateManager.getPath(nodeId);
    const pathScore = currentPath.reduce((acc, n) => acc + n.score, 0) / currentPath.length;

    // Get best path score from all beams
    const bestBeamScore = Math.max(
      ...Array.from(this.beams.values())
        .flat()
        .map(n => n.score)
    );

    return {
      nodeId: node.id,
      thought: node.thought,
      score: node.score,
      depth: node.depth,
      isComplete: node.isComplete,
      nextThoughtNeeded: request.nextThoughtNeeded,
      possiblePaths: this.calculatePossiblePaths(),
      bestScore: Math.max(pathScore, bestBeamScore)
    };
  }

  private calculatePossiblePaths(): number {
    let totalPaths = 0;
    this.beams.forEach((beam, depth) => {
      const nextBeam = this.beams.get(depth + 1);
      if (nextBeam) {
        totalPaths += beam.length * nextBeam.length;
      } else {
        totalPaths += beam.length;
      }
    });
    return totalPaths;
  }

  public async getBestPath(): Promise<ThoughtNode[]> {
    // Find the deepest beam
    const maxDepth = Math.max(...Array.from(this.beams.keys()));
    const deepestBeam = this.beams.get(maxDepth) || [];
    
    if (deepestBeam.length === 0) return [];

    // Get the best scoring node from deepest beam
    const bestNode = deepestBeam.reduce((a, b) => a.score > b.score ? a : b);
    
    // Reconstruct path
    const path = await this.stateManager.getPath(bestNode.id);
    return path;
  }

  public async getMetrics(): Promise<any> {
    const baseMetrics = await super.getMetrics();
    return {
      ...baseMetrics,
      beamWidth: this.beamWidth,
      activeBeams: this.beams.size,
      totalBeamNodes: Array.from(this.beams.values()).flat().length
    };
  }

  public async clear(): Promise<void> {
    await super.clear();
    this.beams.clear();
  }
}

```

--------------------------------------------------------------------------------
/src/strategies/base.ts:
--------------------------------------------------------------------------------

```typescript
import { ThoughtNode, ReasoningRequest, ReasoningResponse } from '../types.js';
import { StateManager } from '../state.js';

export interface StrategyMetrics {
  name: string;
  nodesExplored: number;
  averageScore: number;
  maxDepth: number;
  active?: boolean;
  [key: string]: number | string | boolean | undefined; // Allow additional strategy-specific metrics including booleans
}

export abstract class BaseStrategy {
  protected stateManager: StateManager;

  constructor(stateManager: StateManager) {
    this.stateManager = stateManager;
  }

  abstract processThought(request: ReasoningRequest): Promise<ReasoningResponse>;
  
  protected async getNode(id: string): Promise<ThoughtNode | undefined> {
    return this.stateManager.getNode(id);
  }

  protected async saveNode(node: ThoughtNode): Promise<void> {
    return this.stateManager.saveNode(node);
  }

  protected evaluateThought(node: ThoughtNode, parent?: ThoughtNode): number {
    // Base evaluation logic
    const logicalScore = this.calculateLogicalScore(node, parent);
    const depthPenalty = this.calculateDepthPenalty(node);
    const completionBonus = node.isComplete ? 0.2 : 0;
    
    return (logicalScore + depthPenalty + completionBonus) / 3;
  }

  private calculateLogicalScore(node: ThoughtNode, parent?: ThoughtNode): number {
    let score = 0;
    
    // Length and complexity
    score += Math.min(node.thought.length / 200, 0.3);
    
    // Logical connectors
    if (/\b(therefore|because|if|then|thus|hence|so)\b/i.test(node.thought)) {
      score += 0.2;
    }
    
    // Mathematical/logical expressions
    if (/[+\-*/=<>]/.test(node.thought)) {
      score += 0.2;
    }
    
    // Parent-child coherence
    if (parent) {
      const coherence = this.calculateCoherence(parent.thought, node.thought);
      score += coherence * 0.3;
    }
    
    return score;
  }

  private calculateDepthPenalty(node: ThoughtNode): number {
    return Math.max(0, 1 - (node.depth / 10) * 0.3);
  }

  private calculateCoherence(parentThought: string, childThought: string): number {
    // Simple coherence based on shared terms
    const parentTerms = new Set(parentThought.toLowerCase().split(/\W+/));
    const childTerms = childThought.toLowerCase().split(/\W+/);
    
    const sharedTerms = childTerms.filter(term => parentTerms.has(term)).length;
    return Math.min(sharedTerms / childTerms.length, 1);
  }

  // Required methods for all strategies
  public async getBestPath(): Promise<ThoughtNode[]> {
    const nodes = await this.stateManager.getAllNodes();
    if (nodes.length === 0) return [];

    // Default implementation - find highest scoring complete path
    const completedNodes = nodes.filter(n => n.isComplete)
      .sort((a, b) => b.score - a.score);

    if (completedNodes.length === 0) return [];

    return this.stateManager.getPath(completedNodes[0].id);
  }

  public async getMetrics(): Promise<StrategyMetrics> {
    const nodes = await this.stateManager.getAllNodes();
    
    return {
      name: this.constructor.name,
      nodesExplored: nodes.length,
      averageScore: nodes.length > 0 
        ? nodes.reduce((sum, n) => sum + n.score, 0) / nodes.length 
        : 0,
      maxDepth: nodes.length > 0
        ? Math.max(...nodes.map(n => n.depth))
        : 0
    };
  }

  public async clear(): Promise<void> {
    // Optional cleanup method for strategies
    // Default implementation does nothing
  }
}

```

--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------

```typescript
#!/usr/bin/env node
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
import { Reasoner } from './reasoner.js';
import { ReasoningStrategy } from './strategies/factory.js';

// Initialize server
const server = new Server(
  {
    name: "mcp-reasoner",
    version: "1.0.0",
  },
  {
    capabilities: {
      tools: {},
    },
  }
);

// Initialize reasoner
const reasoner = new Reasoner();

// Process input and ensure correct types
function processInput(input: any) {
  const result = {
    thought: String(input.thought || ""),
    thoughtNumber: Number(input.thoughtNumber || 0),
    totalThoughts: Number(input.totalThoughts || 0),
    nextThoughtNeeded: Boolean(input.nextThoughtNeeded),
    strategyType: input.strategyType as ReasoningStrategy | undefined,
    beamWidth: Number(input.beamWidth || 3),
    numSimulations: Number(input.numSimulations || 50)
  };

  // Validate
  if (!result.thought) {
    throw new Error("thought must be provided");
  }
  if (result.thoughtNumber < 1) {
    throw new Error("thoughtNumber must be >= 1");
  }
  if (result.totalThoughts < 1) {
    throw new Error("totalThoughts must be >= 1");
  }
  if (result.beamWidth < 1 || result.beamWidth > 10) {
    throw new Error("beamWidth must be between 1 and 10");
  }
  if (result.numSimulations < 1 || result.numSimulations > 150) {
    throw new Error("numSimulations must be between 1 and 150");
  }

  return result;
}

// Register the tool
server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [{
    name: "mcp-reasoner",
    description: "Advanced reasoning tool with multiple strategies including Beam Search and Monte Carlo Tree Search",
    inputSchema: {
      type: "object",
      properties: {
        thought: {
          type: "string",
          description: "Current reasoning step"
        },
        thoughtNumber: {
          type: "integer",
          description: "Current step number",
          minimum: 1
        },
        totalThoughts: {
          type: "integer",
          description: "Total expected steps",
          minimum: 1
        },
        nextThoughtNeeded: {
          type: "boolean",
          description: "Whether another step is needed"
        },
        strategyType: {
          type: "string",
          enum: Object.values(ReasoningStrategy),
          description: "Reasoning strategy to use (beam_search or mcts)"
        },
        beamWidth: {
          type: "integer",
          description: "Number of top paths to maintain (n-sampling). Defaults to 3 if not specified",
          minimum: 1,
          maximum: 10
        },
        numSimulations: {
          type: "integer",
          description: "Number of MCTS simulations to run. Defaults to 50 if not specified",
          minimum: 1,
          maximum: 150
        }
      },
      required: ["thought", "thoughtNumber", "totalThoughts", "nextThoughtNeeded"]
    }
  }]
}));

// Handle requests
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name !== "mcp-reasoner") {
    return {
      content: [{
        type: "text",
        text: JSON.stringify({ error: "Unknown tool", success: false })
      }],
      isError: true
    };
  }

  try {
    // Process and validate input
    const step = processInput(request.params.arguments);

    // Process thought with selected strategy
    const response = await reasoner.processThought({
      thought: step.thought,
      thoughtNumber: step.thoughtNumber,
      totalThoughts: step.totalThoughts,
      nextThoughtNeeded: step.nextThoughtNeeded,
      strategyType: step.strategyType,
      beamWidth: step.beamWidth,
      numSimulations: step.numSimulations
    });

    // Get reasoning stats
    const stats = await reasoner.getStats();

    // Return enhanced response
    const result = {
      thoughtNumber: step.thoughtNumber,
      totalThoughts: step.totalThoughts,
      nextThoughtNeeded: step.nextThoughtNeeded,
      thought: step.thought,
      nodeId: response.nodeId,
      score: response.score,
      strategyUsed: response.strategyUsed,
      stats: {
        totalNodes: stats.totalNodes,
        averageScore: stats.averageScore,
        maxDepth: stats.maxDepth,
        branchingFactor: stats.branchingFactor,
        strategyMetrics: stats.strategyMetrics
      }
    };

    return {
      content: [{
        type: "text",
        text: JSON.stringify(result)
      }]
    };
  } catch (error) {
    return {
      content: [{
        type: "text",
        text: JSON.stringify({
          error: error instanceof Error ? error.message : String(error),
          success: false
        })
      }],
      isError: true
    };
  }
});

// Start server
const transport = new StdioServerTransport();
server.connect(transport).catch(error => {
  process.stderr.write(`Error starting server: ${error}\n`);
  process.exit(1);
});

```

--------------------------------------------------------------------------------
/src/reasoner.ts:
--------------------------------------------------------------------------------

```typescript
import { ThoughtNode, ReasoningRequest, ReasoningResponse, ReasoningStats, CONFIG } from './types.js';
import { StateManager } from './state.js';
import { StrategyFactory, ReasoningStrategy } from './strategies/factory.js';
import { BaseStrategy, StrategyMetrics } from './strategies/base.js';

export class Reasoner {
  private stateManager: StateManager;
  private currentStrategy: BaseStrategy;
  private strategies: Map<ReasoningStrategy, BaseStrategy>;

  constructor() {
    this.stateManager = new StateManager(CONFIG.cacheSize);
    
    // Initialize available strategies
    this.strategies = new Map();
    
    // Initialize base strategies
    this.strategies.set(
      ReasoningStrategy.BEAM_SEARCH,
      StrategyFactory.createStrategy(ReasoningStrategy.BEAM_SEARCH, this.stateManager, CONFIG.beamWidth)
    );
    this.strategies.set(
      ReasoningStrategy.MCTS,
      StrategyFactory.createStrategy(ReasoningStrategy.MCTS, this.stateManager, undefined, CONFIG.numSimulations)
    );
    
    // Initialize experimental MCTS strategies
    this.strategies.set(
      ReasoningStrategy.MCTS_002_ALPHA,
      StrategyFactory.createStrategy(ReasoningStrategy.MCTS_002_ALPHA, this.stateManager, undefined, CONFIG.numSimulations)
    );
    this.strategies.set(
      ReasoningStrategy.MCTS_002_ALT_ALPHA,
      StrategyFactory.createStrategy(ReasoningStrategy.MCTS_002_ALT_ALPHA, this.stateManager, undefined, CONFIG.numSimulations)
    );

    // Set default strategy
    const defaultStrategy = CONFIG.defaultStrategy as ReasoningStrategy;
    this.currentStrategy = this.strategies.get(defaultStrategy) ||
      this.strategies.get(ReasoningStrategy.BEAM_SEARCH)!;
  }

  public async processThought(request: ReasoningRequest): Promise<ReasoningResponse> {
    // Switch strategy if requested
    if (request.strategyType && this.strategies.has(request.strategyType as ReasoningStrategy)) {
      const strategyType = request.strategyType as ReasoningStrategy;
      
      // Create new strategy instance with appropriate parameters
      if (strategyType === ReasoningStrategy.BEAM_SEARCH) {
        this.currentStrategy = StrategyFactory.createStrategy(
          strategyType,
          this.stateManager,
          request.beamWidth
        );
      } else {
        // All MCTS variants (base and experimental) use numSimulations
        this.currentStrategy = StrategyFactory.createStrategy(
          strategyType,
          this.stateManager,
          undefined,
          request.numSimulations
        );
      }
      // Update strategy in map
      this.strategies.set(strategyType, this.currentStrategy);
    }

    // Process thought using current strategy
    const response = await this.currentStrategy.processThought(request);

    // Add strategy information to response
    return {
      ...response,
      strategyUsed: this.getCurrentStrategyName()
    };
  }

  public async getStats(): Promise<ReasoningStats> {
    const nodes = await this.stateManager.getAllNodes();
    
    if (nodes.length === 0) {
      return {
        totalNodes: 0,
        averageScore: 0,
        maxDepth: 0,
        branchingFactor: 0,
        strategyMetrics: {}
      };
    }

    const scores = nodes.map(n => n.score);
    const depths = nodes.map(n => n.depth);
    const branchingFactors = nodes.map(n => n.children.length);

    const metrics = await this.getStrategyMetrics();

    return {
      totalNodes: nodes.length,
      averageScore: scores.reduce((a, b) => a + b, 0) / scores.length,
      maxDepth: Math.max(...depths),
      branchingFactor: branchingFactors.reduce((a, b) => a + b, 0) / nodes.length,
      strategyMetrics: metrics
    };
  }

  private async getStrategyMetrics(): Promise<Record<string, StrategyMetrics>> {
    const metrics: Record<string, StrategyMetrics> = {};
    
    for (const [name, strategy] of this.strategies.entries()) {
      metrics[name] = await strategy.getMetrics();
      if (strategy === this.currentStrategy) {
        metrics[name] = {
          ...metrics[name],
          active: true
        };
      }
    }

    return metrics;
  }

  public getCurrentStrategyName(): ReasoningStrategy {
    for (const [name, strategy] of this.strategies.entries()) {
      if (strategy === this.currentStrategy) {
        return name;
      }
    }
    return ReasoningStrategy.BEAM_SEARCH;
  }

  public async getBestPath(): Promise<ThoughtNode[]> {
    return this.currentStrategy.getBestPath();
  }

  public async clear(): Promise<void> {
    await this.stateManager.clear();
    // Clear all strategies
    for (const strategy of this.strategies.values()) {
      await strategy.clear();
    }
  }

  public setStrategy(strategyType: ReasoningStrategy, beamWidth?: number, numSimulations?: number): void {
    if (!this.strategies.has(strategyType)) {
      throw new Error(`Unknown strategy type: ${strategyType}`);
    }
    // Create new strategy instance with appropriate parameters
    if (strategyType === ReasoningStrategy.BEAM_SEARCH) {
      this.currentStrategy = StrategyFactory.createStrategy(strategyType, this.stateManager, beamWidth);
    } else {
      // All MCTS variants (base and experimental) use numSimulations
      this.currentStrategy = StrategyFactory.createStrategy(strategyType, this.stateManager, undefined, numSimulations);
    }
    // Update strategy in map
    this.strategies.set(strategyType, this.currentStrategy);
  }

  public getAvailableStrategies(): ReasoningStrategy[] {
    return Array.from(this.strategies.keys());
  }
}

```

--------------------------------------------------------------------------------
/src/strategies/mcts.ts:
--------------------------------------------------------------------------------

```typescript
import { v4 as uuidv4 } from 'uuid';
import { ThoughtNode, ReasoningRequest, ReasoningResponse, CONFIG } from '../types.js';
import { BaseStrategy } from './base.js';

interface MCTSNode extends ThoughtNode {
  visits: number;
  totalReward: number;
  untriedActions?: string[];
}

export class MonteCarloTreeSearchStrategy extends BaseStrategy {
  private readonly explorationConstant = Math.sqrt(2);
  private readonly simulationDepth = CONFIG.maxDepth;
  private numSimulations: number;
  private root: MCTSNode | null = null;

  constructor(stateManager: any, numSimulations: number = CONFIG.numSimulations) {
    super(stateManager);
    // Ensure numSimulations is within reasonable bounds
    this.numSimulations = Math.max(1, Math.min(150, numSimulations));
  }

  public async processThought(request: ReasoningRequest): Promise<ReasoningResponse> {
    const nodeId = uuidv4();
    const parentNode = request.parentId ? 
      await this.getNode(request.parentId) as MCTSNode : undefined;

    const node: MCTSNode = {
      id: nodeId,
      thought: request.thought,
      depth: request.thoughtNumber - 1,
      score: 0,
      children: [],
      parentId: request.parentId,
      isComplete: !request.nextThoughtNeeded,
      visits: 0,
      totalReward: 0,
      untriedActions: []
    };

    // Initialize node
    node.score = this.evaluateThought(node, parentNode);
    node.visits = 1;
    node.totalReward = node.score;
    await this.saveNode(node);

    // Update parent if exists
    if (parentNode) {
      parentNode.children.push(node.id);
      await this.saveNode(parentNode);
    }

    // If this is a root node, store it
    if (!parentNode) {
      this.root = node;
    }

    // Run MCTS simulations
    if (!node.isComplete) {
      await this.runSimulations(node);
    }

    // Calculate path statistics
    const currentPath = await this.stateManager.getPath(nodeId);
    const pathScore = this.calculatePathScore(currentPath);

    return {
      nodeId: node.id,
      thought: node.thought,
      score: node.score,
      depth: node.depth,
      isComplete: node.isComplete,
      nextThoughtNeeded: request.nextThoughtNeeded,
      possiblePaths: this.calculatePossiblePaths(node),
      bestScore: pathScore
    };
  }

  private async runSimulations(node: MCTSNode): Promise<void> {
    for (let i = 0; i < this.numSimulations; i++) {
      const selectedNode = await this.select(node);
      const expandedNode = await this.expand(selectedNode);
      const reward = await this.simulate(expandedNode);
      await this.backpropagate(expandedNode, reward);
    }
  }

  private async select(node: MCTSNode): Promise<MCTSNode> {
    let current = node;

    while (current.children.length > 0 && !current.untriedActions?.length) {
      const children = await Promise.all(
        current.children.map(id => this.getNode(id))
      ) as MCTSNode[];

      current = this.selectBestUCT(children);
    }

    return current;
  }

  private async expand(node: MCTSNode): Promise<MCTSNode> {
    if (node.isComplete || node.depth >= this.simulationDepth) {
      return node;
    }

    // Create a new thought node as expansion
    const newNode: MCTSNode = {
      id: uuidv4(),
      thought: `Simulated thought at depth ${node.depth + 1}`,
      depth: node.depth + 1,
      score: 0,
      children: [],
      parentId: node.id,
      isComplete: false,
      visits: 1,
      totalReward: 0
    };

    newNode.score = this.evaluateThought(newNode, node);
    await this.saveNode(newNode);

    node.children.push(newNode.id);
    await this.saveNode(node);

    return newNode;
  }

  private async simulate(node: MCTSNode): Promise<number> {
    let current = node;
    let totalScore = current.score;
    let depth = current.depth;

    while (depth < this.simulationDepth && !current.isComplete) {
      const simulatedNode: MCTSNode = {
        id: uuidv4(),
        thought: `Random simulation at depth ${depth + 1}`,
        depth: depth + 1,
        score: 0,
        children: [],
        parentId: current.id,
        isComplete: depth + 1 >= this.simulationDepth,
        visits: 1,
        totalReward: 0
      };

      simulatedNode.score = this.evaluateThought(simulatedNode, current);
      totalScore += simulatedNode.score;
      current = simulatedNode;
      depth++;
    }

    return totalScore / (depth - node.depth + 1);
  }

  private async backpropagate(node: MCTSNode, reward: number): Promise<void> {
    let current: MCTSNode | undefined = node;

    while (current) {
      current.visits++;
      current.totalReward += reward;
      await this.saveNode(current);
      current = current.parentId ? 
        await this.getNode(current.parentId) as MCTSNode : 
        undefined;
    }
  }

  private selectBestUCT(nodes: MCTSNode[]): MCTSNode {
    const totalVisits = nodes.reduce((sum, node) => sum + node.visits, 0);
    
    return nodes.reduce((best, node) => {
      const exploitation = node.totalReward / node.visits;
      const exploration = Math.sqrt(Math.log(totalVisits) / node.visits);
      const uct = exploitation + this.explorationConstant * exploration;
      
      return uct > (best.totalReward / best.visits + 
        this.explorationConstant * Math.sqrt(Math.log(totalVisits) / best.visits)) 
        ? node : best;
    });
  }

  private calculatePathScore(path: ThoughtNode[]): number {
    if (path.length === 0) return 0;
    return path.reduce((acc, node) => acc + node.score, 0) / path.length;
  }

  private calculatePossiblePaths(node: MCTSNode): number {
    return Math.pow(2, this.simulationDepth - node.depth);
  }

  public async getBestPath(): Promise<ThoughtNode[]> {
    if (!this.root) return [];
    
    const bestChild = (await Promise.all(
      this.root.children.map(id => this.getNode(id))
    ) as MCTSNode[])
      .reduce((best, node) => 
        node.visits > best.visits ? node : best
      );

    return this.stateManager.getPath(bestChild.id);
  }

  public async getMetrics(): Promise<any> {
    const baseMetrics = await super.getMetrics();
    return {
      ...baseMetrics,
      simulationDepth: this.simulationDepth,
      numSimulations: this.numSimulations,
      explorationConstant: this.explorationConstant,
      totalSimulations: this.root?.visits || 0
    };
  }

  public async clear(): Promise<void> {
    await super.clear();
    this.root = null;
  }
}

```
Page 1/2FirstPrevNextLast