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

# Directory Structure

```
├── .cursor
│   └── mcp.json
├── .gitignore
├── console-spy-mcp.js
├── cs-mcp-server.js
├── mcp-tools.js
├── node_modules
│   ├── .bin
│   │   ├── mime
│   │   └── supergateway
│   ├── .package-lock.json
│   ├── @modelcontextprotocol
│   │   └── sdk
│   │       ├── dist
│   │       │   ├── cjs
│   │       │   │   ├── cli.d.ts
│   │       │   │   ├── cli.d.ts.map
│   │       │   │   ├── cli.js
│   │       │   │   ├── cli.js.map
│   │       │   │   ├── client
│   │       │   │   │   ├── auth.d.ts
│   │       │   │   │   ├── auth.d.ts.map
│   │       │   │   │   ├── auth.js
│   │       │   │   │   ├── auth.js.map
│   │       │   │   │   ├── index.d.ts
│   │       │   │   │   ├── index.d.ts.map
│   │       │   │   │   ├── index.js
│   │       │   │   │   ├── index.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
│   │       │   │   │   ├── websocket.d.ts
│   │       │   │   │   ├── websocket.d.ts.map
│   │       │   │   │   ├── websocket.js
│   │       │   │   │   └── websocket.js.map
│   │       │   │   ├── inMemory.d.ts
│   │       │   │   ├── inMemory.d.ts.map
│   │       │   │   ├── inMemory.js
│   │       │   │   ├── inMemory.js.map
│   │       │   │   ├── package.json
│   │       │   │   ├── server
│   │       │   │   │   ├── auth
│   │       │   │   │   │   ├── clients.d.ts
│   │       │   │   │   │   ├── clients.d.ts.map
│   │       │   │   │   │   ├── clients.js
│   │       │   │   │   │   ├── clients.js.map
│   │       │   │   │   │   ├── errors.d.ts
│   │       │   │   │   │   ├── errors.d.ts.map
│   │       │   │   │   │   ├── errors.js
│   │       │   │   │   │   ├── errors.js.map
│   │       │   │   │   │   ├── handlers
│   │       │   │   │   │   │   ├── authorize.d.ts
│   │       │   │   │   │   │   ├── authorize.d.ts.map
│   │       │   │   │   │   │   ├── authorize.js
│   │       │   │   │   │   │   ├── authorize.js.map
│   │       │   │   │   │   │   ├── metadata.d.ts
│   │       │   │   │   │   │   ├── metadata.d.ts.map
│   │       │   │   │   │   │   ├── metadata.js
│   │       │   │   │   │   │   ├── metadata.js.map
│   │       │   │   │   │   │   ├── register.d.ts
│   │       │   │   │   │   │   ├── register.d.ts.map
│   │       │   │   │   │   │   ├── register.js
│   │       │   │   │   │   │   ├── register.js.map
│   │       │   │   │   │   │   ├── revoke.d.ts
│   │       │   │   │   │   │   ├── revoke.d.ts.map
│   │       │   │   │   │   │   ├── revoke.js
│   │       │   │   │   │   │   ├── revoke.js.map
│   │       │   │   │   │   │   ├── token.d.ts
│   │       │   │   │   │   │   ├── token.d.ts.map
│   │       │   │   │   │   │   ├── token.js
│   │       │   │   │   │   │   └── token.js.map
│   │       │   │   │   │   ├── middleware
│   │       │   │   │   │   │   ├── allowedMethods.d.ts
│   │       │   │   │   │   │   ├── allowedMethods.d.ts.map
│   │       │   │   │   │   │   ├── allowedMethods.js
│   │       │   │   │   │   │   ├── allowedMethods.js.map
│   │       │   │   │   │   │   ├── bearerAuth.d.ts
│   │       │   │   │   │   │   ├── bearerAuth.d.ts.map
│   │       │   │   │   │   │   ├── bearerAuth.js
│   │       │   │   │   │   │   ├── bearerAuth.js.map
│   │       │   │   │   │   │   ├── clientAuth.d.ts
│   │       │   │   │   │   │   ├── clientAuth.d.ts.map
│   │       │   │   │   │   │   ├── clientAuth.js
│   │       │   │   │   │   │   └── clientAuth.js.map
│   │       │   │   │   │   ├── provider.d.ts
│   │       │   │   │   │   ├── provider.d.ts.map
│   │       │   │   │   │   ├── provider.js
│   │       │   │   │   │   ├── provider.js.map
│   │       │   │   │   │   ├── router.d.ts
│   │       │   │   │   │   ├── router.d.ts.map
│   │       │   │   │   │   ├── router.js
│   │       │   │   │   │   ├── router.js.map
│   │       │   │   │   │   ├── types.d.ts
│   │       │   │   │   │   ├── types.d.ts.map
│   │       │   │   │   │   ├── types.js
│   │       │   │   │   │   └── types.js.map
│   │       │   │   │   ├── completable.d.ts
│   │       │   │   │   ├── completable.d.ts.map
│   │       │   │   │   ├── completable.js
│   │       │   │   │   ├── completable.js.map
│   │       │   │   │   ├── index.d.ts
│   │       │   │   │   ├── index.d.ts.map
│   │       │   │   │   ├── index.js
│   │       │   │   │   ├── index.js.map
│   │       │   │   │   ├── mcp.d.ts
│   │       │   │   │   ├── mcp.d.ts.map
│   │       │   │   │   ├── mcp.js
│   │       │   │   │   ├── mcp.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
│   │       │   │   ├── shared
│   │       │   │   │   ├── auth.d.ts
│   │       │   │   │   ├── auth.d.ts.map
│   │       │   │   │   ├── auth.js
│   │       │   │   │   ├── auth.js.map
│   │       │   │   │   ├── protocol.d.ts
│   │       │   │   │   ├── protocol.d.ts.map
│   │       │   │   │   ├── protocol.js
│   │       │   │   │   ├── protocol.js.map
│   │       │   │   │   ├── stdio.d.ts
│   │       │   │   │   ├── stdio.d.ts.map
│   │       │   │   │   ├── stdio.js
│   │       │   │   │   ├── stdio.js.map
│   │       │   │   │   ├── transport.d.ts
│   │       │   │   │   ├── transport.d.ts.map
│   │       │   │   │   ├── transport.js
│   │       │   │   │   ├── transport.js.map
│   │       │   │   │   ├── uriTemplate.d.ts
│   │       │   │   │   ├── uriTemplate.d.ts.map
│   │       │   │   │   ├── uriTemplate.js
│   │       │   │   │   └── uriTemplate.js.map
│   │       │   │   ├── types.d.ts
│   │       │   │   ├── types.d.ts.map
│   │       │   │   ├── types.js
│   │       │   │   └── types.js.map
│   │       │   └── esm
│   │       │       ├── cli.d.ts
│   │       │       ├── cli.d.ts.map
│   │       │       ├── cli.js
│   │       │       ├── cli.js.map
│   │       │       ├── client
│   │       │       │   ├── auth.d.ts
│   │       │       │   ├── auth.d.ts.map
│   │       │       │   ├── auth.js
│   │       │       │   ├── auth.js.map
│   │       │       │   ├── index.d.ts
│   │       │       │   ├── index.d.ts.map
│   │       │       │   ├── index.js
│   │       │       │   ├── index.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
│   │       │       │   ├── websocket.d.ts
│   │       │       │   ├── websocket.d.ts.map
│   │       │       │   ├── websocket.js
│   │       │       │   └── websocket.js.map
│   │       │       ├── inMemory.d.ts
│   │       │       ├── inMemory.d.ts.map
│   │       │       ├── inMemory.js
│   │       │       ├── inMemory.js.map
│   │       │       ├── package.json
│   │       │       ├── server
│   │       │       │   ├── auth
│   │       │       │   │   ├── clients.d.ts
│   │       │       │   │   ├── clients.d.ts.map
│   │       │       │   │   ├── clients.js
│   │       │       │   │   ├── clients.js.map
│   │       │       │   │   ├── errors.d.ts
│   │       │       │   │   ├── errors.d.ts.map
│   │       │       │   │   ├── errors.js
│   │       │       │   │   ├── errors.js.map
│   │       │       │   │   ├── handlers
│   │       │       │   │   │   ├── authorize.d.ts
│   │       │       │   │   │   ├── authorize.d.ts.map
│   │       │       │   │   │   ├── authorize.js
│   │       │       │   │   │   ├── authorize.js.map
│   │       │       │   │   │   ├── metadata.d.ts
│   │       │       │   │   │   ├── metadata.d.ts.map
│   │       │       │   │   │   ├── metadata.js
│   │       │       │   │   │   ├── metadata.js.map
│   │       │       │   │   │   ├── register.d.ts
│   │       │       │   │   │   ├── register.d.ts.map
│   │       │       │   │   │   ├── register.js
│   │       │       │   │   │   ├── register.js.map
│   │       │       │   │   │   ├── revoke.d.ts
│   │       │       │   │   │   ├── revoke.d.ts.map
│   │       │       │   │   │   ├── revoke.js
│   │       │       │   │   │   ├── revoke.js.map
│   │       │       │   │   │   ├── token.d.ts
│   │       │       │   │   │   ├── token.d.ts.map
│   │       │       │   │   │   ├── token.js
│   │       │       │   │   │   └── token.js.map
│   │       │       │   │   ├── middleware
│   │       │       │   │   │   ├── allowedMethods.d.ts
│   │       │       │   │   │   ├── allowedMethods.d.ts.map
│   │       │       │   │   │   ├── allowedMethods.js
│   │       │       │   │   │   ├── allowedMethods.js.map
│   │       │       │   │   │   ├── bearerAuth.d.ts
│   │       │       │   │   │   ├── bearerAuth.d.ts.map
│   │       │       │   │   │   ├── bearerAuth.js
│   │       │       │   │   │   ├── bearerAuth.js.map
│   │       │       │   │   │   ├── clientAuth.d.ts
│   │       │       │   │   │   ├── clientAuth.d.ts.map
│   │       │       │   │   │   ├── clientAuth.js
│   │       │       │   │   │   └── clientAuth.js.map
│   │       │       │   │   ├── provider.d.ts
│   │       │       │   │   ├── provider.d.ts.map
│   │       │       │   │   ├── provider.js
│   │       │       │   │   ├── provider.js.map
│   │       │       │   │   ├── router.d.ts
│   │       │       │   │   ├── router.d.ts.map
│   │       │       │   │   ├── router.js
│   │       │       │   │   ├── router.js.map
│   │       │       │   │   ├── types.d.ts
│   │       │       │   │   ├── types.d.ts.map
│   │       │       │   │   ├── types.js
│   │       │       │   │   └── types.js.map
│   │       │       │   ├── completable.d.ts
│   │       │       │   ├── completable.d.ts.map
│   │       │       │   ├── completable.js
│   │       │       │   ├── completable.js.map
│   │       │       │   ├── index.d.ts
│   │       │       │   ├── index.d.ts.map
│   │       │       │   ├── index.js
│   │       │       │   ├── index.js.map
│   │       │       │   ├── mcp.d.ts
│   │       │       │   ├── mcp.d.ts.map
│   │       │       │   ├── mcp.js
│   │       │       │   ├── mcp.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
│   │       │       ├── shared
│   │       │       │   ├── auth.d.ts
│   │       │       │   ├── auth.d.ts.map
│   │       │       │   ├── auth.js
│   │       │       │   ├── auth.js.map
│   │       │       │   ├── protocol.d.ts
│   │       │       │   ├── protocol.d.ts.map
│   │       │       │   ├── protocol.js
│   │       │       │   ├── protocol.js.map
│   │       │       │   ├── stdio.d.ts
│   │       │       │   ├── stdio.d.ts.map
│   │       │       │   ├── stdio.js
│   │       │       │   ├── stdio.js.map
│   │       │       │   ├── transport.d.ts
│   │       │       │   ├── transport.d.ts.map
│   │       │       │   ├── transport.js
│   │       │       │   ├── transport.js.map
│   │       │       │   ├── uriTemplate.d.ts
│   │       │       │   ├── uriTemplate.d.ts.map
│   │       │       │   ├── uriTemplate.js
│   │       │       │   └── uriTemplate.js.map
│   │       │       ├── types.d.ts
│   │       │       ├── types.d.ts.map
│   │       │       ├── types.js
│   │       │       └── types.js.map
│   │       ├── LICENSE
│   │       ├── node_modules
│   │       │   ├── accepts
│   │       │   │   ├── HISTORY.md
│   │       │   │   ├── index.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── package.json
│   │       │   │   └── README.md
│   │       │   ├── body-parser
│   │       │   │   ├── HISTORY.md
│   │       │   │   ├── index.js
│   │       │   │   ├── lib
│   │       │   │   │   ├── read.js
│   │       │   │   │   └── types
│   │       │   │   │       ├── json.js
│   │       │   │   │       ├── raw.js
│   │       │   │   │       ├── text.js
│   │       │   │   │       └── urlencoded.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── node_modules
│   │       │   │   │   ├── debug
│   │       │   │   │   │   ├── LICENSE
│   │       │   │   │   │   ├── package.json
│   │       │   │   │   │   ├── README.md
│   │       │   │   │   │   └── src
│   │       │   │   │   │       ├── browser.js
│   │       │   │   │   │       ├── common.js
│   │       │   │   │   │       ├── index.js
│   │       │   │   │   │       └── node.js
│   │       │   │   │   ├── iconv-lite
│   │       │   │   │   │   ├── 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
│   │       │   │   │   │   │   ├── extend-node.js
│   │       │   │   │   │   │   ├── index.d.ts
│   │       │   │   │   │   │   ├── index.js
│   │       │   │   │   │   │   └── streams.js
│   │       │   │   │   │   ├── LICENSE
│   │       │   │   │   │   ├── package.json
│   │       │   │   │   │   └── README.md
│   │       │   │   │   ├── ms
│   │       │   │   │   │   ├── index.js
│   │       │   │   │   │   ├── license.md
│   │       │   │   │   │   ├── package.json
│   │       │   │   │   │   └── readme.md
│   │       │   │   │   └── qs
│   │       │   │   │       ├── .editorconfig
│   │       │   │   │       ├── .eslintrc
│   │       │   │   │       ├── .github
│   │       │   │   │       │   └── FUNDING.yml
│   │       │   │   │       ├── .nycrc
│   │       │   │   │       ├── CHANGELOG.md
│   │       │   │   │       ├── dist
│   │       │   │   │       │   └── qs.js
│   │       │   │   │       ├── lib
│   │       │   │   │       │   ├── formats.js
│   │       │   │   │       │   ├── index.js
│   │       │   │   │       │   ├── parse.js
│   │       │   │   │       │   ├── stringify.js
│   │       │   │   │       │   └── utils.js
│   │       │   │   │       ├── LICENSE.md
│   │       │   │   │       ├── package.json
│   │       │   │   │       ├── README.md
│   │       │   │   │       └── test
│   │       │   │   │           ├── empty-keys-cases.js
│   │       │   │   │           ├── parse.js
│   │       │   │   │           ├── stringify.js
│   │       │   │   │           └── utils.js
│   │       │   │   ├── package.json
│   │       │   │   ├── README.md
│   │       │   │   └── SECURITY.md
│   │       │   ├── content-disposition
│   │       │   │   ├── HISTORY.md
│   │       │   │   ├── index.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── package.json
│   │       │   │   └── README.md
│   │       │   ├── cookie-signature
│   │       │   │   ├── History.md
│   │       │   │   ├── index.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── package.json
│   │       │   │   └── Readme.md
│   │       │   ├── debug
│   │       │   │   ├── LICENSE
│   │       │   │   ├── package.json
│   │       │   │   ├── README.md
│   │       │   │   └── src
│   │       │   │       ├── browser.js
│   │       │   │       ├── common.js
│   │       │   │       ├── index.js
│   │       │   │       └── node.js
│   │       │   ├── express
│   │       │   │   ├── History.md
│   │       │   │   ├── index.js
│   │       │   │   ├── lib
│   │       │   │   │   ├── application.js
│   │       │   │   │   ├── express.js
│   │       │   │   │   ├── request.js
│   │       │   │   │   ├── response.js
│   │       │   │   │   ├── utils.js
│   │       │   │   │   └── view.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── package.json
│   │       │   │   └── Readme.md
│   │       │   ├── finalhandler
│   │       │   │   ├── HISTORY.md
│   │       │   │   ├── index.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── node_modules
│   │       │   │   │   ├── debug
│   │       │   │   │   │   ├── LICENSE
│   │       │   │   │   │   ├── package.json
│   │       │   │   │   │   ├── README.md
│   │       │   │   │   │   └── src
│   │       │   │   │   │       ├── browser.js
│   │       │   │   │   │       ├── common.js
│   │       │   │   │   │       ├── index.js
│   │       │   │   │   │       └── node.js
│   │       │   │   │   └── ms
│   │       │   │   │       ├── index.js
│   │       │   │   │       ├── license.md
│   │       │   │   │       ├── package.json
│   │       │   │   │       └── readme.md
│   │       │   │   ├── package.json
│   │       │   │   └── README.md
│   │       │   ├── fresh
│   │       │   │   ├── HISTORY.md
│   │       │   │   ├── index.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── package.json
│   │       │   │   └── README.md
│   │       │   ├── media-typer
│   │       │   │   ├── HISTORY.md
│   │       │   │   ├── index.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── package.json
│   │       │   │   └── README.md
│   │       │   ├── merge-descriptors
│   │       │   │   ├── index.d.ts
│   │       │   │   ├── index.js
│   │       │   │   ├── license
│   │       │   │   ├── package.json
│   │       │   │   └── readme.md
│   │       │   ├── mime-db
│   │       │   │   ├── db.json
│   │       │   │   ├── HISTORY.md
│   │       │   │   ├── index.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── package.json
│   │       │   │   └── README.md
│   │       │   ├── mime-types
│   │       │   │   ├── HISTORY.md
│   │       │   │   ├── index.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── mimeScore.js
│   │       │   │   ├── package.json
│   │       │   │   └── README.md
│   │       │   ├── ms
│   │       │   │   ├── index.js
│   │       │   │   ├── license.md
│   │       │   │   ├── package.json
│   │       │   │   └── readme.md
│   │       │   ├── negotiator
│   │       │   │   ├── HISTORY.md
│   │       │   │   ├── index.js
│   │       │   │   ├── lib
│   │       │   │   │   ├── charset.js
│   │       │   │   │   ├── encoding.js
│   │       │   │   │   ├── language.js
│   │       │   │   │   └── mediaType.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── package.json
│   │       │   │   └── README.md
│   │       │   ├── raw-body
│   │       │   │   ├── HISTORY.md
│   │       │   │   ├── index.d.ts
│   │       │   │   ├── index.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── package.json
│   │       │   │   ├── README.md
│   │       │   │   └── SECURITY.md
│   │       │   ├── send
│   │       │   │   ├── HISTORY.md
│   │       │   │   ├── index.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── node_modules
│   │       │   │   │   ├── fresh
│   │       │   │   │   │   ├── HISTORY.md
│   │       │   │   │   │   ├── index.js
│   │       │   │   │   │   ├── LICENSE
│   │       │   │   │   │   ├── package.json
│   │       │   │   │   │   └── README.md
│   │       │   │   │   ├── mime-db
│   │       │   │   │   │   ├── db.json
│   │       │   │   │   │   ├── HISTORY.md
│   │       │   │   │   │   ├── index.js
│   │       │   │   │   │   ├── LICENSE
│   │       │   │   │   │   ├── package.json
│   │       │   │   │   │   └── README.md
│   │       │   │   │   ├── mime-types
│   │       │   │   │   │   ├── HISTORY.md
│   │       │   │   │   │   ├── index.js
│   │       │   │   │   │   ├── LICENSE
│   │       │   │   │   │   ├── package.json
│   │       │   │   │   │   └── README.md
│   │       │   │   │   └── ms
│   │       │   │   │       ├── index.js
│   │       │   │   │       ├── license.md
│   │       │   │   │       ├── package.json
│   │       │   │   │       └── readme.md
│   │       │   │   ├── package.json
│   │       │   │   ├── README.md
│   │       │   │   └── SECURITY.md
│   │       │   ├── serve-static
│   │       │   │   ├── HISTORY.md
│   │       │   │   ├── index.js
│   │       │   │   ├── LICENSE
│   │       │   │   ├── package.json
│   │       │   │   └── README.md
│   │       │   └── type-is
│   │       │       ├── HISTORY.md
│   │       │       ├── index.js
│   │       │       ├── LICENSE
│   │       │       ├── package.json
│   │       │       └── README.md
│   │       ├── package.json
│   │       └── README.md
│   ├── accepts
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── ansi-regex
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── license
│   │   ├── package.json
│   │   └── readme.md
│   ├── ansi-styles
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── license
│   │   ├── package.json
│   │   └── readme.md
│   ├── array-flatten
│   │   ├── array-flatten.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── body-parser
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── lib
│   │   │   ├── read.js
│   │   │   └── types
│   │   │       ├── json.js
│   │   │       ├── raw.js
│   │   │       ├── text.js
│   │   │       └── urlencoded.js
│   │   ├── LICENSE
│   │   ├── node_modules
│   │   │   └── iconv-lite
│   │   │       ├── 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
│   │   │       │   └── utf7.js
│   │   │       ├── lib
│   │   │       │   ├── bom-handling.js
│   │   │       │   ├── extend-node.js
│   │   │       │   ├── index.d.ts
│   │   │       │   ├── index.js
│   │   │       │   └── streams.js
│   │   │       ├── LICENSE
│   │   │       ├── package.json
│   │   │       └── README.md
│   │   ├── package.json
│   │   ├── README.md
│   │   └── SECURITY.md
│   ├── boolbase
│   │   ├── index.js
│   │   ├── package.json
│   │   └── README.md
│   ├── bytes
│   │   ├── History.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── Readme.md
│   ├── call-bind-apply-helpers
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── actualApply.d.ts
│   │   ├── actualApply.js
│   │   ├── applyBind.d.ts
│   │   ├── applyBind.js
│   │   ├── CHANGELOG.md
│   │   ├── functionApply.d.ts
│   │   ├── functionApply.js
│   │   ├── functionCall.d.ts
│   │   ├── functionCall.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── reflectApply.d.ts
│   │   ├── reflectApply.js
│   │   ├── test
│   │   │   └── index.js
│   │   └── tsconfig.json
│   ├── call-bound
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── test
│   │   │   └── index.js
│   │   └── tsconfig.json
│   ├── cheerio
│   │   ├── dist
│   │   │   ├── browser
│   │   │   │   ├── api
│   │   │   │   │   ├── attributes.d.ts
│   │   │   │   │   ├── attributes.d.ts.map
│   │   │   │   │   ├── attributes.js
│   │   │   │   │   ├── attributes.js.map
│   │   │   │   │   ├── css.d.ts
│   │   │   │   │   ├── css.d.ts.map
│   │   │   │   │   ├── css.js
│   │   │   │   │   ├── css.js.map
│   │   │   │   │   ├── extract.d.ts
│   │   │   │   │   ├── extract.d.ts.map
│   │   │   │   │   ├── extract.js
│   │   │   │   │   ├── extract.js.map
│   │   │   │   │   ├── forms.d.ts
│   │   │   │   │   ├── forms.d.ts.map
│   │   │   │   │   ├── forms.js
│   │   │   │   │   ├── forms.js.map
│   │   │   │   │   ├── manipulation.d.ts
│   │   │   │   │   ├── manipulation.d.ts.map
│   │   │   │   │   ├── manipulation.js
│   │   │   │   │   ├── manipulation.js.map
│   │   │   │   │   ├── traversing.d.ts
│   │   │   │   │   ├── traversing.d.ts.map
│   │   │   │   │   ├── traversing.js
│   │   │   │   │   └── traversing.js.map
│   │   │   │   ├── cheerio.d.ts
│   │   │   │   ├── cheerio.d.ts.map
│   │   │   │   ├── cheerio.js
│   │   │   │   ├── cheerio.js.map
│   │   │   │   ├── index-browser.d.mts.map
│   │   │   │   ├── index-browser.mjs.map
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.js
│   │   │   │   ├── load-parse.d.ts
│   │   │   │   ├── load-parse.d.ts.map
│   │   │   │   ├── load-parse.js
│   │   │   │   ├── load-parse.js.map
│   │   │   │   ├── load.d.ts
│   │   │   │   ├── load.d.ts.map
│   │   │   │   ├── load.js
│   │   │   │   ├── load.js.map
│   │   │   │   ├── options.d.ts
│   │   │   │   ├── options.d.ts.map
│   │   │   │   ├── options.js
│   │   │   │   ├── options.js.map
│   │   │   │   ├── package.json
│   │   │   │   ├── parse.d.ts
│   │   │   │   ├── parse.d.ts.map
│   │   │   │   ├── parse.js
│   │   │   │   ├── parse.js.map
│   │   │   │   ├── parsers
│   │   │   │   │   ├── parse5-adapter.d.ts
│   │   │   │   │   ├── parse5-adapter.d.ts.map
│   │   │   │   │   ├── parse5-adapter.js
│   │   │   │   │   └── parse5-adapter.js.map
│   │   │   │   ├── slim.d.ts
│   │   │   │   ├── slim.d.ts.map
│   │   │   │   ├── slim.js
│   │   │   │   ├── slim.js.map
│   │   │   │   ├── static.d.ts
│   │   │   │   ├── static.d.ts.map
│   │   │   │   ├── static.js
│   │   │   │   ├── static.js.map
│   │   │   │   ├── types.d.ts
│   │   │   │   ├── types.d.ts.map
│   │   │   │   ├── types.js
│   │   │   │   ├── types.js.map
│   │   │   │   ├── utils.d.ts
│   │   │   │   ├── utils.d.ts.map
│   │   │   │   ├── utils.js
│   │   │   │   └── utils.js.map
│   │   │   ├── commonjs
│   │   │   │   ├── api
│   │   │   │   │   ├── attributes.d.ts
│   │   │   │   │   ├── attributes.d.ts.map
│   │   │   │   │   ├── attributes.js
│   │   │   │   │   ├── attributes.js.map
│   │   │   │   │   ├── css.d.ts
│   │   │   │   │   ├── css.d.ts.map
│   │   │   │   │   ├── css.js
│   │   │   │   │   ├── css.js.map
│   │   │   │   │   ├── extract.d.ts
│   │   │   │   │   ├── extract.d.ts.map
│   │   │   │   │   ├── extract.js
│   │   │   │   │   ├── extract.js.map
│   │   │   │   │   ├── forms.d.ts
│   │   │   │   │   ├── forms.d.ts.map
│   │   │   │   │   ├── forms.js
│   │   │   │   │   ├── forms.js.map
│   │   │   │   │   ├── manipulation.d.ts
│   │   │   │   │   ├── manipulation.d.ts.map
│   │   │   │   │   ├── manipulation.js
│   │   │   │   │   ├── manipulation.js.map
│   │   │   │   │   ├── traversing.d.ts
│   │   │   │   │   ├── traversing.d.ts.map
│   │   │   │   │   ├── traversing.js
│   │   │   │   │   └── traversing.js.map
│   │   │   │   ├── cheerio.d.ts
│   │   │   │   ├── cheerio.d.ts.map
│   │   │   │   ├── cheerio.js
│   │   │   │   ├── cheerio.js.map
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   ├── index.js.map
│   │   │   │   ├── load-parse.d.ts
│   │   │   │   ├── load-parse.d.ts.map
│   │   │   │   ├── load-parse.js
│   │   │   │   ├── load-parse.js.map
│   │   │   │   ├── load.d.ts
│   │   │   │   ├── load.d.ts.map
│   │   │   │   ├── load.js
│   │   │   │   ├── load.js.map
│   │   │   │   ├── options.d.ts
│   │   │   │   ├── options.d.ts.map
│   │   │   │   ├── options.js
│   │   │   │   ├── options.js.map
│   │   │   │   ├── package.json
│   │   │   │   ├── parse.d.ts
│   │   │   │   ├── parse.d.ts.map
│   │   │   │   ├── parse.js
│   │   │   │   ├── parse.js.map
│   │   │   │   ├── parsers
│   │   │   │   │   ├── parse5-adapter.d.ts
│   │   │   │   │   ├── parse5-adapter.d.ts.map
│   │   │   │   │   ├── parse5-adapter.js
│   │   │   │   │   └── parse5-adapter.js.map
│   │   │   │   ├── slim.d.ts
│   │   │   │   ├── slim.d.ts.map
│   │   │   │   ├── slim.js
│   │   │   │   ├── slim.js.map
│   │   │   │   ├── static.d.ts
│   │   │   │   ├── static.d.ts.map
│   │   │   │   ├── static.js
│   │   │   │   ├── static.js.map
│   │   │   │   ├── types.d.ts
│   │   │   │   ├── types.d.ts.map
│   │   │   │   ├── types.js
│   │   │   │   ├── types.js.map
│   │   │   │   ├── utils.d.ts
│   │   │   │   ├── utils.d.ts.map
│   │   │   │   ├── utils.js
│   │   │   │   └── utils.js.map
│   │   │   └── esm
│   │   │       ├── api
│   │   │       │   ├── attributes.d.ts
│   │   │       │   ├── attributes.d.ts.map
│   │   │       │   ├── attributes.js
│   │   │       │   ├── attributes.js.map
│   │   │       │   ├── css.d.ts
│   │   │       │   ├── css.d.ts.map
│   │   │       │   ├── css.js
│   │   │       │   ├── css.js.map
│   │   │       │   ├── extract.d.ts
│   │   │       │   ├── extract.d.ts.map
│   │   │       │   ├── extract.js
│   │   │       │   ├── extract.js.map
│   │   │       │   ├── forms.d.ts
│   │   │       │   ├── forms.d.ts.map
│   │   │       │   ├── forms.js
│   │   │       │   ├── forms.js.map
│   │   │       │   ├── manipulation.d.ts
│   │   │       │   ├── manipulation.d.ts.map
│   │   │       │   ├── manipulation.js
│   │   │       │   ├── manipulation.js.map
│   │   │       │   ├── traversing.d.ts
│   │   │       │   ├── traversing.d.ts.map
│   │   │       │   ├── traversing.js
│   │   │       │   └── traversing.js.map
│   │   │       ├── cheerio.d.ts
│   │   │       ├── cheerio.d.ts.map
│   │   │       ├── cheerio.js
│   │   │       ├── cheerio.js.map
│   │   │       ├── index.d.ts
│   │   │       ├── index.d.ts.map
│   │   │       ├── index.js
│   │   │       ├── index.js.map
│   │   │       ├── load-parse.d.ts
│   │   │       ├── load-parse.d.ts.map
│   │   │       ├── load-parse.js
│   │   │       ├── load-parse.js.map
│   │   │       ├── load.d.ts
│   │   │       ├── load.d.ts.map
│   │   │       ├── load.js
│   │   │       ├── load.js.map
│   │   │       ├── options.d.ts
│   │   │       ├── options.d.ts.map
│   │   │       ├── options.js
│   │   │       ├── options.js.map
│   │   │       ├── package.json
│   │   │       ├── parse.d.ts
│   │   │       ├── parse.d.ts.map
│   │   │       ├── parse.js
│   │   │       ├── parse.js.map
│   │   │       ├── parsers
│   │   │       │   ├── parse5-adapter.d.ts
│   │   │       │   ├── parse5-adapter.d.ts.map
│   │   │       │   ├── parse5-adapter.js
│   │   │       │   └── parse5-adapter.js.map
│   │   │       ├── slim.d.ts
│   │   │       ├── slim.d.ts.map
│   │   │       ├── slim.js
│   │   │       ├── slim.js.map
│   │   │       ├── static.d.ts
│   │   │       ├── static.d.ts.map
│   │   │       ├── static.js
│   │   │       ├── static.js.map
│   │   │       ├── types.d.ts
│   │   │       ├── types.d.ts.map
│   │   │       ├── types.js
│   │   │       ├── types.js.map
│   │   │       ├── utils.d.ts
│   │   │       ├── utils.d.ts.map
│   │   │       ├── utils.js
│   │   │       └── utils.js.map
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── Readme.md
│   │   └── src
│   │       ├── __fixtures__
│   │       │   └── fixtures.ts
│   │       ├── __tests__
│   │       │   ├── deprecated.spec.ts
│   │       │   └── xml.spec.ts
│   │       ├── api
│   │       │   ├── attributes.spec.ts
│   │       │   ├── attributes.ts
│   │       │   ├── css.spec.ts
│   │       │   ├── css.ts
│   │       │   ├── extract.spec.ts
│   │       │   ├── extract.ts
│   │       │   ├── forms.spec.ts
│   │       │   ├── forms.ts
│   │       │   ├── manipulation.spec.ts
│   │       │   ├── manipulation.ts
│   │       │   ├── traversing.spec.ts
│   │       │   └── traversing.ts
│   │       ├── cheerio.spec.ts
│   │       ├── cheerio.ts
│   │       ├── index-browser.mts
│   │       ├── index.spec.ts
│   │       ├── index.ts
│   │       ├── load-parse.ts
│   │       ├── load.spec.ts
│   │       ├── load.ts
│   │       ├── options.ts
│   │       ├── parse.spec.ts
│   │       ├── parse.ts
│   │       ├── parsers
│   │       │   └── parse5-adapter.ts
│   │       ├── slim.ts
│   │       ├── static.spec.ts
│   │       ├── static.ts
│   │       ├── types.ts
│   │       ├── utils.spec.ts
│   │       └── utils.ts
│   ├── cheerio-select
│   │   ├── lib
│   │   │   ├── esm
│   │   │   │   ├── helpers.d.ts
│   │   │   │   ├── helpers.d.ts.map
│   │   │   │   ├── helpers.js
│   │   │   │   ├── helpers.js.map
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   ├── index.js.map
│   │   │   │   ├── package.json
│   │   │   │   ├── positionals.d.ts
│   │   │   │   ├── positionals.d.ts.map
│   │   │   │   ├── positionals.js
│   │   │   │   └── positionals.js.map
│   │   │   ├── helpers.d.ts
│   │   │   ├── helpers.d.ts.map
│   │   │   ├── helpers.js
│   │   │   ├── helpers.js.map
│   │   │   ├── index.d.ts
│   │   │   ├── index.d.ts.map
│   │   │   ├── index.js
│   │   │   ├── index.js.map
│   │   │   ├── positionals.d.ts
│   │   │   ├── positionals.d.ts.map
│   │   │   ├── positionals.js
│   │   │   └── positionals.js.map
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── cliui
│   │   ├── build
│   │   │   ├── index.cjs
│   │   │   ├── index.d.cts
│   │   │   └── lib
│   │   │       ├── index.js
│   │   │       └── string-utils.js
│   │   ├── CHANGELOG.md
│   │   ├── index.mjs
│   │   ├── LICENSE.txt
│   │   ├── package.json
│   │   └── README.md
│   ├── color-convert
│   │   ├── CHANGELOG.md
│   │   ├── conversions.js
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── route.js
│   ├── color-name
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── content-disposition
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── content-type
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── cookie
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── SECURITY.md
│   ├── cookie-signature
│   │   ├── .npmignore
│   │   ├── History.md
│   │   ├── index.js
│   │   ├── package.json
│   │   └── Readme.md
│   ├── cors
│   │   ├── CONTRIBUTING.md
│   │   ├── HISTORY.md
│   │   ├── lib
│   │   │   └── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── css-select
│   │   ├── lib
│   │   │   ├── attributes.d.ts
│   │   │   ├── attributes.d.ts.map
│   │   │   ├── attributes.js
│   │   │   ├── attributes.js.map
│   │   │   ├── compile.d.ts
│   │   │   ├── compile.d.ts.map
│   │   │   ├── compile.js
│   │   │   ├── compile.js.map
│   │   │   ├── esm
│   │   │   │   ├── attributes.d.ts
│   │   │   │   ├── attributes.d.ts.map
│   │   │   │   ├── attributes.js
│   │   │   │   ├── attributes.js.map
│   │   │   │   ├── compile.d.ts
│   │   │   │   ├── compile.d.ts.map
│   │   │   │   ├── compile.js
│   │   │   │   ├── compile.js.map
│   │   │   │   ├── general.d.ts
│   │   │   │   ├── general.d.ts.map
│   │   │   │   ├── general.js
│   │   │   │   ├── general.js.map
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   ├── index.js.map
│   │   │   │   ├── package.json
│   │   │   │   ├── pseudo-selectors
│   │   │   │   │   ├── aliases.d.ts
│   │   │   │   │   ├── aliases.d.ts.map
│   │   │   │   │   ├── aliases.js
│   │   │   │   │   ├── aliases.js.map
│   │   │   │   │   ├── filters.d.ts
│   │   │   │   │   ├── filters.d.ts.map
│   │   │   │   │   ├── filters.js
│   │   │   │   │   ├── filters.js.map
│   │   │   │   │   ├── index.d.ts
│   │   │   │   │   ├── index.d.ts.map
│   │   │   │   │   ├── index.js
│   │   │   │   │   ├── index.js.map
│   │   │   │   │   ├── pseudos.d.ts
│   │   │   │   │   ├── pseudos.d.ts.map
│   │   │   │   │   ├── pseudos.js
│   │   │   │   │   ├── pseudos.js.map
│   │   │   │   │   ├── subselects.d.ts
│   │   │   │   │   ├── subselects.d.ts.map
│   │   │   │   │   ├── subselects.js
│   │   │   │   │   └── subselects.js.map
│   │   │   │   ├── sort.d.ts
│   │   │   │   ├── sort.d.ts.map
│   │   │   │   ├── sort.js
│   │   │   │   ├── sort.js.map
│   │   │   │   ├── types.d.ts
│   │   │   │   ├── types.d.ts.map
│   │   │   │   ├── types.js
│   │   │   │   └── types.js.map
│   │   │   ├── general.d.ts
│   │   │   ├── general.d.ts.map
│   │   │   ├── general.js
│   │   │   ├── general.js.map
│   │   │   ├── index.d.ts
│   │   │   ├── index.d.ts.map
│   │   │   ├── index.js
│   │   │   ├── index.js.map
│   │   │   ├── pseudo-selectors
│   │   │   │   ├── aliases.d.ts
│   │   │   │   ├── aliases.d.ts.map
│   │   │   │   ├── aliases.js
│   │   │   │   ├── aliases.js.map
│   │   │   │   ├── filters.d.ts
│   │   │   │   ├── filters.d.ts.map
│   │   │   │   ├── filters.js
│   │   │   │   ├── filters.js.map
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   ├── index.js.map
│   │   │   │   ├── pseudos.d.ts
│   │   │   │   ├── pseudos.d.ts.map
│   │   │   │   ├── pseudos.js
│   │   │   │   ├── pseudos.js.map
│   │   │   │   ├── subselects.d.ts
│   │   │   │   ├── subselects.d.ts.map
│   │   │   │   ├── subselects.js
│   │   │   │   └── subselects.js.map
│   │   │   ├── sort.d.ts
│   │   │   ├── sort.d.ts.map
│   │   │   ├── sort.js
│   │   │   ├── sort.js.map
│   │   │   ├── types.d.ts
│   │   │   ├── types.d.ts.map
│   │   │   ├── types.js
│   │   │   └── types.js.map
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── css-what
│   │   ├── lib
│   │   │   ├── commonjs
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   ├── parse.d.ts
│   │   │   │   ├── parse.d.ts.map
│   │   │   │   ├── parse.js
│   │   │   │   ├── stringify.d.ts
│   │   │   │   ├── stringify.d.ts.map
│   │   │   │   ├── stringify.js
│   │   │   │   ├── types.d.ts
│   │   │   │   ├── types.d.ts.map
│   │   │   │   └── types.js
│   │   │   └── es
│   │   │       ├── index.d.ts
│   │   │       ├── index.d.ts.map
│   │   │       ├── index.js
│   │   │       ├── parse.d.ts
│   │   │       ├── parse.d.ts.map
│   │   │       ├── parse.js
│   │   │       ├── stringify.d.ts
│   │   │       ├── stringify.d.ts.map
│   │   │       ├── stringify.js
│   │   │       ├── types.d.ts
│   │   │       ├── types.d.ts.map
│   │   │       └── types.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── readme.md
│   ├── debug
│   │   ├── .coveralls.yml
│   │   ├── .eslintrc
│   │   ├── .npmignore
│   │   ├── .travis.yml
│   │   ├── CHANGELOG.md
│   │   ├── component.json
│   │   ├── karma.conf.js
│   │   ├── LICENSE
│   │   ├── Makefile
│   │   ├── node.js
│   │   ├── package.json
│   │   ├── README.md
│   │   └── src
│   │       ├── browser.js
│   │       ├── debug.js
│   │       ├── index.js
│   │       ├── inspector-log.js
│   │       └── node.js
│   ├── depd
│   │   ├── History.md
│   │   ├── index.js
│   │   ├── lib
│   │   │   └── browser
│   │   │       └── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── Readme.md
│   ├── destroy
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── dom-serializer
│   │   ├── lib
│   │   │   ├── esm
│   │   │   │   ├── foreignNames.d.ts
│   │   │   │   ├── foreignNames.d.ts.map
│   │   │   │   ├── foreignNames.js
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── foreignNames.d.ts
│   │   │   ├── foreignNames.d.ts.map
│   │   │   ├── foreignNames.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.d.ts.map
│   │   │   └── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── domelementtype
│   │   ├── lib
│   │   │   ├── esm
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── index.d.ts
│   │   │   ├── index.d.ts.map
│   │   │   └── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── readme.md
│   ├── domhandler
│   │   ├── lib
│   │   │   ├── esm
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   ├── node.d.ts
│   │   │   │   ├── node.d.ts.map
│   │   │   │   ├── node.js
│   │   │   │   └── package.json
│   │   │   ├── index.d.ts
│   │   │   ├── index.d.ts.map
│   │   │   ├── index.js
│   │   │   ├── node.d.ts
│   │   │   ├── node.d.ts.map
│   │   │   └── node.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── readme.md
│   ├── domutils
│   │   ├── lib
│   │   │   ├── esm
│   │   │   │   ├── feeds.d.ts
│   │   │   │   ├── feeds.d.ts.map
│   │   │   │   ├── feeds.js
│   │   │   │   ├── feeds.js.map
│   │   │   │   ├── helpers.d.ts
│   │   │   │   ├── helpers.d.ts.map
│   │   │   │   ├── helpers.js
│   │   │   │   ├── helpers.js.map
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   ├── index.js.map
│   │   │   │   ├── legacy.d.ts
│   │   │   │   ├── legacy.d.ts.map
│   │   │   │   ├── legacy.js
│   │   │   │   ├── legacy.js.map
│   │   │   │   ├── manipulation.d.ts
│   │   │   │   ├── manipulation.d.ts.map
│   │   │   │   ├── manipulation.js
│   │   │   │   ├── manipulation.js.map
│   │   │   │   ├── package.json
│   │   │   │   ├── querying.d.ts
│   │   │   │   ├── querying.d.ts.map
│   │   │   │   ├── querying.js
│   │   │   │   ├── querying.js.map
│   │   │   │   ├── stringify.d.ts
│   │   │   │   ├── stringify.d.ts.map
│   │   │   │   ├── stringify.js
│   │   │   │   ├── stringify.js.map
│   │   │   │   ├── traversal.d.ts
│   │   │   │   ├── traversal.d.ts.map
│   │   │   │   ├── traversal.js
│   │   │   │   └── traversal.js.map
│   │   │   ├── feeds.d.ts
│   │   │   ├── feeds.d.ts.map
│   │   │   ├── feeds.js
│   │   │   ├── feeds.js.map
│   │   │   ├── helpers.d.ts
│   │   │   ├── helpers.d.ts.map
│   │   │   ├── helpers.js
│   │   │   ├── helpers.js.map
│   │   │   ├── index.d.ts
│   │   │   ├── index.d.ts.map
│   │   │   ├── index.js
│   │   │   ├── index.js.map
│   │   │   ├── legacy.d.ts
│   │   │   ├── legacy.d.ts.map
│   │   │   ├── legacy.js
│   │   │   ├── legacy.js.map
│   │   │   ├── manipulation.d.ts
│   │   │   ├── manipulation.d.ts.map
│   │   │   ├── manipulation.js
│   │   │   ├── manipulation.js.map
│   │   │   ├── querying.d.ts
│   │   │   ├── querying.d.ts.map
│   │   │   ├── querying.js
│   │   │   ├── querying.js.map
│   │   │   ├── stringify.d.ts
│   │   │   ├── stringify.d.ts.map
│   │   │   ├── stringify.js
│   │   │   ├── stringify.js.map
│   │   │   ├── traversal.d.ts
│   │   │   ├── traversal.d.ts.map
│   │   │   ├── traversal.js
│   │   │   └── traversal.js.map
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── readme.md
│   ├── dunder-proto
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── get.d.ts
│   │   ├── get.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── set.d.ts
│   │   ├── set.js
│   │   ├── test
│   │   │   ├── get.js
│   │   │   ├── index.js
│   │   │   └── set.js
│   │   └── tsconfig.json
│   ├── ee-first
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── emoji-regex
│   │   ├── es2015
│   │   │   ├── index.js
│   │   │   └── text.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE-MIT.txt
│   │   ├── package.json
│   │   ├── README.md
│   │   └── text.js
│   ├── encodeurl
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── encoding-sniffer
│   │   ├── dist
│   │   │   ├── commonjs
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   ├── index.js.map
│   │   │   │   ├── package.json
│   │   │   │   ├── sniffer.d.ts
│   │   │   │   ├── sniffer.d.ts.map
│   │   │   │   ├── sniffer.js
│   │   │   │   └── sniffer.js.map
│   │   │   └── esm
│   │   │       ├── index.d.ts
│   │   │       ├── index.d.ts.map
│   │   │       ├── index.js
│   │   │       ├── index.js.map
│   │   │       ├── package.json
│   │   │       ├── sniffer.d.ts
│   │   │       ├── sniffer.d.ts.map
│   │   │       ├── sniffer.js
│   │   │       └── sniffer.js.map
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── entities
│   │   ├── lib
│   │   │   ├── decode_codepoint.d.ts
│   │   │   ├── decode_codepoint.d.ts.map
│   │   │   ├── decode_codepoint.js
│   │   │   ├── decode_codepoint.js.map
│   │   │   ├── decode.d.ts
│   │   │   ├── decode.d.ts.map
│   │   │   ├── decode.js
│   │   │   ├── decode.js.map
│   │   │   ├── encode.d.ts
│   │   │   ├── encode.d.ts.map
│   │   │   ├── encode.js
│   │   │   ├── encode.js.map
│   │   │   ├── escape.d.ts
│   │   │   ├── escape.d.ts.map
│   │   │   ├── escape.js
│   │   │   ├── escape.js.map
│   │   │   ├── esm
│   │   │   │   ├── decode_codepoint.d.ts
│   │   │   │   ├── decode_codepoint.d.ts.map
│   │   │   │   ├── decode_codepoint.js
│   │   │   │   ├── decode_codepoint.js.map
│   │   │   │   ├── decode.d.ts
│   │   │   │   ├── decode.d.ts.map
│   │   │   │   ├── decode.js
│   │   │   │   ├── decode.js.map
│   │   │   │   ├── encode.d.ts
│   │   │   │   ├── encode.d.ts.map
│   │   │   │   ├── encode.js
│   │   │   │   ├── encode.js.map
│   │   │   │   ├── escape.d.ts
│   │   │   │   ├── escape.d.ts.map
│   │   │   │   ├── escape.js
│   │   │   │   ├── escape.js.map
│   │   │   │   ├── generated
│   │   │   │   │   ├── decode-data-html.d.ts
│   │   │   │   │   ├── decode-data-html.d.ts.map
│   │   │   │   │   ├── decode-data-html.js
│   │   │   │   │   ├── decode-data-html.js.map
│   │   │   │   │   ├── decode-data-xml.d.ts
│   │   │   │   │   ├── decode-data-xml.d.ts.map
│   │   │   │   │   ├── decode-data-xml.js
│   │   │   │   │   ├── decode-data-xml.js.map
│   │   │   │   │   ├── encode-html.d.ts
│   │   │   │   │   ├── encode-html.d.ts.map
│   │   │   │   │   ├── encode-html.js
│   │   │   │   │   └── encode-html.js.map
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   ├── index.js.map
│   │   │   │   └── package.json
│   │   │   ├── generated
│   │   │   │   ├── decode-data-html.d.ts
│   │   │   │   ├── decode-data-html.d.ts.map
│   │   │   │   ├── decode-data-html.js
│   │   │   │   ├── decode-data-html.js.map
│   │   │   │   ├── decode-data-xml.d.ts
│   │   │   │   ├── decode-data-xml.d.ts.map
│   │   │   │   ├── decode-data-xml.js
│   │   │   │   ├── decode-data-xml.js.map
│   │   │   │   ├── encode-html.d.ts
│   │   │   │   ├── encode-html.d.ts.map
│   │   │   │   ├── encode-html.js
│   │   │   │   └── encode-html.js.map
│   │   │   ├── index.d.ts
│   │   │   ├── index.d.ts.map
│   │   │   ├── index.js
│   │   │   └── index.js.map
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── readme.md
│   ├── es-define-property
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── test
│   │   │   └── index.js
│   │   └── tsconfig.json
│   ├── es-errors
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── CHANGELOG.md
│   │   ├── eval.d.ts
│   │   ├── eval.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── range.d.ts
│   │   ├── range.js
│   │   ├── README.md
│   │   ├── ref.d.ts
│   │   ├── ref.js
│   │   ├── syntax.d.ts
│   │   ├── syntax.js
│   │   ├── test
│   │   │   └── index.js
│   │   ├── tsconfig.json
│   │   ├── type.d.ts
│   │   ├── type.js
│   │   ├── uri.d.ts
│   │   └── uri.js
│   ├── es-object-atoms
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── CHANGELOG.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── isObject.d.ts
│   │   ├── isObject.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── RequireObjectCoercible.d.ts
│   │   ├── RequireObjectCoercible.js
│   │   ├── test
│   │   │   └── index.js
│   │   ├── ToObject.d.ts
│   │   ├── ToObject.js
│   │   └── tsconfig.json
│   ├── escalade
│   │   ├── dist
│   │   │   ├── index.js
│   │   │   └── index.mjs
│   │   ├── index.d.mts
│   │   ├── index.d.ts
│   │   ├── license
│   │   ├── package.json
│   │   ├── readme.md
│   │   └── sync
│   │       ├── index.d.mts
│   │       ├── index.d.ts
│   │       ├── index.js
│   │       └── index.mjs
│   ├── escape-html
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── Readme.md
│   ├── etag
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── eventsource
│   │   ├── dist
│   │   │   ├── index.cjs
│   │   │   ├── index.cjs.map
│   │   │   ├── index.d.cts
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   └── index.js.map
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── src
│   │       ├── errors.ts
│   │       ├── EventSource.ts
│   │       ├── index.ts
│   │       └── types.ts
│   ├── eventsource-parser
│   │   ├── dist
│   │   │   ├── index.cjs
│   │   │   ├── index.cjs.map
│   │   │   ├── index.d.cts
│   │   │   ├── index.d.ts
│   │   │   ├── index.esm.js
│   │   │   ├── index.esm.js.map
│   │   │   ├── index.js
│   │   │   ├── index.js.map
│   │   │   ├── stats.html
│   │   │   ├── stream.cjs
│   │   │   ├── stream.cjs.map
│   │   │   ├── stream.d.cts
│   │   │   ├── stream.d.ts
│   │   │   ├── stream.esm.js
│   │   │   ├── stream.esm.js.map
│   │   │   ├── stream.js
│   │   │   └── stream.js.map
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── src
│   │   │   ├── errors.ts
│   │   │   ├── index.ts
│   │   │   ├── parse.ts
│   │   │   ├── stream.ts
│   │   │   └── types.ts
│   │   └── stream.js
│   ├── express
│   │   ├── History.md
│   │   ├── index.js
│   │   ├── lib
│   │   │   ├── application.js
│   │   │   ├── express.js
│   │   │   ├── middleware
│   │   │   │   ├── init.js
│   │   │   │   └── query.js
│   │   │   ├── request.js
│   │   │   ├── response.js
│   │   │   ├── router
│   │   │   │   ├── index.js
│   │   │   │   ├── layer.js
│   │   │   │   └── route.js
│   │   │   ├── utils.js
│   │   │   └── view.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── Readme.md
│   ├── express-rate-limit
│   │   ├── dist
│   │   │   ├── index.cjs
│   │   │   ├── index.d.cts
│   │   │   ├── index.d.mts
│   │   │   ├── index.d.ts
│   │   │   └── index.mjs
│   │   ├── license.md
│   │   ├── package.json
│   │   ├── readme.md
│   │   └── tsconfig.json
│   ├── finalhandler
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── SECURITY.md
│   ├── forwarded
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── fresh
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── 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
│   ├── get-caller-file
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── index.js.map
│   │   ├── LICENSE.md
│   │   ├── package.json
│   │   └── README.md
│   ├── get-intrinsic
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── test
│   │       └── GetIntrinsic.js
│   ├── get-proto
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── Object.getPrototypeOf.d.ts
│   │   ├── Object.getPrototypeOf.js
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── Reflect.getPrototypeOf.d.ts
│   │   ├── Reflect.getPrototypeOf.js
│   │   ├── test
│   │   │   └── index.js
│   │   └── tsconfig.json
│   ├── gopd
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── CHANGELOG.md
│   │   ├── gOPD.d.ts
│   │   ├── gOPD.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── test
│   │   │   └── index.js
│   │   └── tsconfig.json
│   ├── has-symbols
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── shams.d.ts
│   │   ├── shams.js
│   │   ├── test
│   │   │   ├── index.js
│   │   │   ├── shams
│   │   │   │   ├── core-js.js
│   │   │   │   └── get-own-property-symbols.js
│   │   │   └── tests.js
│   │   └── tsconfig.json
│   ├── hasown
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── tsconfig.json
│   ├── htmlparser2
│   │   ├── lib
│   │   │   ├── esm
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   ├── index.js.map
│   │   │   │   ├── package.json
│   │   │   │   ├── Parser.d.ts
│   │   │   │   ├── Parser.d.ts.map
│   │   │   │   ├── Parser.js
│   │   │   │   ├── Parser.js.map
│   │   │   │   ├── Tokenizer.d.ts
│   │   │   │   ├── Tokenizer.d.ts.map
│   │   │   │   ├── Tokenizer.js
│   │   │   │   ├── Tokenizer.js.map
│   │   │   │   ├── WritableStream.d.ts
│   │   │   │   ├── WritableStream.d.ts.map
│   │   │   │   ├── WritableStream.js
│   │   │   │   └── WritableStream.js.map
│   │   │   ├── index.d.ts
│   │   │   ├── index.d.ts.map
│   │   │   ├── index.js
│   │   │   ├── index.js.map
│   │   │   ├── Parser.d.ts
│   │   │   ├── Parser.d.ts.map
│   │   │   ├── Parser.js
│   │   │   ├── Parser.js.map
│   │   │   ├── Tokenizer.d.ts
│   │   │   ├── Tokenizer.d.ts.map
│   │   │   ├── Tokenizer.js
│   │   │   ├── Tokenizer.js.map
│   │   │   ├── WritableStream.d.ts
│   │   │   ├── WritableStream.d.ts.map
│   │   │   ├── WritableStream.js
│   │   │   └── WritableStream.js.map
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── 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
│   ├── inherits
│   │   ├── inherits_browser.js
│   │   ├── inherits.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── ipaddr.js
│   │   ├── ipaddr.min.js
│   │   ├── lib
│   │   │   ├── ipaddr.js
│   │   │   └── ipaddr.js.d.ts
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── is-fullwidth-code-point
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── license
│   │   ├── package.json
│   │   └── readme.md
│   ├── is-promise
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── index.mjs
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── readme.md
│   ├── math-intrinsics
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── abs.d.ts
│   │   ├── abs.js
│   │   ├── CHANGELOG.md
│   │   ├── constants
│   │   │   ├── maxArrayLength.d.ts
│   │   │   ├── maxArrayLength.js
│   │   │   ├── maxSafeInteger.d.ts
│   │   │   ├── maxSafeInteger.js
│   │   │   ├── maxValue.d.ts
│   │   │   └── maxValue.js
│   │   ├── floor.d.ts
│   │   ├── floor.js
│   │   ├── isFinite.d.ts
│   │   ├── isFinite.js
│   │   ├── isInteger.d.ts
│   │   ├── isInteger.js
│   │   ├── isNaN.d.ts
│   │   ├── isNaN.js
│   │   ├── isNegativeZero.d.ts
│   │   ├── isNegativeZero.js
│   │   ├── LICENSE
│   │   ├── max.d.ts
│   │   ├── max.js
│   │   ├── min.d.ts
│   │   ├── min.js
│   │   ├── mod.d.ts
│   │   ├── mod.js
│   │   ├── package.json
│   │   ├── pow.d.ts
│   │   ├── pow.js
│   │   ├── README.md
│   │   ├── round.d.ts
│   │   ├── round.js
│   │   ├── sign.d.ts
│   │   ├── sign.js
│   │   ├── test
│   │   │   └── index.js
│   │   └── tsconfig.json
│   ├── media-typer
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── merge-descriptors
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── methods
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── mime
│   │   ├── .npmignore
│   │   ├── CHANGELOG.md
│   │   ├── cli.js
│   │   ├── LICENSE
│   │   ├── mime.js
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── src
│   │   │   ├── build.js
│   │   │   └── test.js
│   │   └── types.json
│   ├── mime-db
│   │   ├── db.json
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── mime-types
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── ms
│   │   ├── index.js
│   │   ├── license.md
│   │   ├── package.json
│   │   └── readme.md
│   ├── negotiator
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── lib
│   │   │   ├── charset.js
│   │   │   ├── encoding.js
│   │   │   ├── language.js
│   │   │   └── mediaType.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── nth-check
│   │   ├── lib
│   │   │   ├── compile.d.ts
│   │   │   ├── compile.d.ts.map
│   │   │   ├── compile.js
│   │   │   ├── compile.js.map
│   │   │   ├── esm
│   │   │   │   ├── compile.d.ts
│   │   │   │   ├── compile.d.ts.map
│   │   │   │   ├── compile.js
│   │   │   │   ├── compile.js.map
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.d.ts.map
│   │   │   │   ├── index.js
│   │   │   │   ├── index.js.map
│   │   │   │   ├── package.json
│   │   │   │   ├── parse.d.ts
│   │   │   │   ├── parse.d.ts.map
│   │   │   │   ├── parse.js
│   │   │   │   └── parse.js.map
│   │   │   ├── index.d.ts
│   │   │   ├── index.d.ts.map
│   │   │   ├── index.js
│   │   │   ├── index.js.map
│   │   │   ├── parse.d.ts
│   │   │   ├── parse.d.ts.map
│   │   │   ├── parse.js
│   │   │   └── parse.js.map
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── object-assign
│   │   ├── index.js
│   │   ├── license
│   │   ├── package.json
│   │   └── readme.md
│   ├── object-inspect
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── example
│   │   │   ├── all.js
│   │   │   ├── circular.js
│   │   │   ├── fn.js
│   │   │   └── inspect.js
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package-support.json
│   │   ├── package.json
│   │   ├── readme.markdown
│   │   ├── test
│   │   │   ├── bigint.js
│   │   │   ├── browser
│   │   │   │   └── dom.js
│   │   │   ├── circular.js
│   │   │   ├── deep.js
│   │   │   ├── element.js
│   │   │   ├── err.js
│   │   │   ├── fakes.js
│   │   │   ├── fn.js
│   │   │   ├── global.js
│   │   │   ├── has.js
│   │   │   ├── holes.js
│   │   │   ├── indent-option.js
│   │   │   ├── inspect.js
│   │   │   ├── lowbyte.js
│   │   │   ├── number.js
│   │   │   ├── quoteStyle.js
│   │   │   ├── toStringTag.js
│   │   │   ├── undef.js
│   │   │   └── values.js
│   │   ├── test-core-js.js
│   │   └── util.inspect.js
│   ├── on-finished
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── once
│   │   ├── LICENSE
│   │   ├── once.js
│   │   ├── package.json
│   │   └── README.md
│   ├── parse5
│   │   ├── dist
│   │   │   ├── cjs
│   │   │   │   ├── common
│   │   │   │   │   ├── doctype.d.ts
│   │   │   │   │   ├── doctype.js
│   │   │   │   │   ├── error-codes.d.ts
│   │   │   │   │   ├── error-codes.js
│   │   │   │   │   ├── foreign-content.d.ts
│   │   │   │   │   ├── foreign-content.js
│   │   │   │   │   ├── html.d.ts
│   │   │   │   │   ├── html.js
│   │   │   │   │   ├── token.d.ts
│   │   │   │   │   ├── token.js
│   │   │   │   │   ├── unicode.d.ts
│   │   │   │   │   └── unicode.js
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.js
│   │   │   │   ├── package.json
│   │   │   │   ├── parser
│   │   │   │   │   ├── formatting-element-list.d.ts
│   │   │   │   │   ├── formatting-element-list.js
│   │   │   │   │   ├── index.d.ts
│   │   │   │   │   ├── index.js
│   │   │   │   │   ├── open-element-stack.d.ts
│   │   │   │   │   └── open-element-stack.js
│   │   │   │   ├── serializer
│   │   │   │   │   ├── index.d.ts
│   │   │   │   │   └── index.js
│   │   │   │   ├── tokenizer
│   │   │   │   │   ├── index.d.ts
│   │   │   │   │   ├── index.js
│   │   │   │   │   ├── preprocessor.d.ts
│   │   │   │   │   └── preprocessor.js
│   │   │   │   └── tree-adapters
│   │   │   │       ├── default.d.ts
│   │   │   │       ├── default.js
│   │   │   │       ├── interface.d.ts
│   │   │   │       └── interface.js
│   │   │   ├── common
│   │   │   │   ├── doctype.d.ts
│   │   │   │   ├── doctype.js
│   │   │   │   ├── error-codes.d.ts
│   │   │   │   ├── error-codes.js
│   │   │   │   ├── foreign-content.d.ts
│   │   │   │   ├── foreign-content.js
│   │   │   │   ├── html.d.ts
│   │   │   │   ├── html.js
│   │   │   │   ├── token.d.ts
│   │   │   │   ├── token.js
│   │   │   │   ├── unicode.d.ts
│   │   │   │   └── unicode.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── parser
│   │   │   │   ├── formatting-element-list.d.ts
│   │   │   │   ├── formatting-element-list.js
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.js
│   │   │   │   ├── open-element-stack.d.ts
│   │   │   │   └── open-element-stack.js
│   │   │   ├── serializer
│   │   │   │   ├── index.d.ts
│   │   │   │   └── index.js
│   │   │   ├── tokenizer
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.js
│   │   │   │   ├── preprocessor.d.ts
│   │   │   │   └── preprocessor.js
│   │   │   └── tree-adapters
│   │   │       ├── default.d.ts
│   │   │       ├── default.js
│   │   │       ├── interface.d.ts
│   │   │       └── interface.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── parse5-htmlparser2-tree-adapter
│   │   ├── dist
│   │   │   ├── cjs
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── parse5-parser-stream
│   │   ├── dist
│   │   │   ├── cjs
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── parseurl
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── path-to-regexp
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── Readme.md
│   ├── pkce-challenge
│   │   ├── dist
│   │   │   ├── index.browser.d.ts
│   │   │   ├── index.browser.js
│   │   │   ├── index.node.d.ts
│   │   │   └── index.node.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── proxy-addr
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── qs
│   │   ├── .editorconfig
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── dist
│   │   │   └── qs.js
│   │   ├── lib
│   │   │   ├── formats.js
│   │   │   ├── index.js
│   │   │   ├── parse.js
│   │   │   ├── stringify.js
│   │   │   └── utils.js
│   │   ├── LICENSE.md
│   │   ├── package.json
│   │   ├── README.md
│   │   └── test
│   │       ├── empty-keys-cases.js
│   │       ├── parse.js
│   │       ├── stringify.js
│   │       └── utils.js
│   ├── range-parser
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── raw-body
│   │   ├── HISTORY.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── node_modules
│   │   │   └── iconv-lite
│   │   │       ├── 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
│   │   │       │   └── utf7.js
│   │   │       ├── lib
│   │   │       │   ├── bom-handling.js
│   │   │       │   ├── extend-node.js
│   │   │       │   ├── index.d.ts
│   │   │       │   ├── index.js
│   │   │       │   └── streams.js
│   │   │       ├── LICENSE
│   │   │       ├── package.json
│   │   │       └── README.md
│   │   ├── package.json
│   │   ├── README.md
│   │   └── SECURITY.md
│   ├── require-directory
│   │   ├── .jshintrc
│   │   ├── .npmignore
│   │   ├── .travis.yml
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.markdown
│   ├── router
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── lib
│   │   │   ├── layer.js
│   │   │   └── route.js
│   │   ├── LICENSE
│   │   ├── node_modules
│   │   │   └── path-to-regexp
│   │   │       ├── dist
│   │   │       │   ├── index.d.ts
│   │   │       │   ├── index.js
│   │   │       │   └── index.js.map
│   │   │       ├── LICENSE
│   │   │       ├── package.json
│   │   │       └── Readme.md
│   │   ├── package.json
│   │   ├── README.md
│   │   └── SECURITY.md
│   ├── safe-buffer
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── safer-buffer
│   │   ├── dangerous.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── Porting-Buffer.md
│   │   ├── Readme.md
│   │   ├── safer.js
│   │   └── tests.js
│   ├── send
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── node_modules
│   │   │   ├── encodeurl
│   │   │   │   ├── HISTORY.md
│   │   │   │   ├── index.js
│   │   │   │   ├── LICENSE
│   │   │   │   ├── package.json
│   │   │   │   └── README.md
│   │   │   └── ms
│   │   │       ├── index.js
│   │   │       ├── license.md
│   │   │       ├── package.json
│   │   │       └── readme.md
│   │   ├── package.json
│   │   ├── README.md
│   │   └── SECURITY.md
│   ├── serve-static
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── setprototypeof
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── test
│   │       └── index.js
│   ├── side-channel
│   │   ├── .editorconfig
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── test
│   │   │   └── index.js
│   │   └── tsconfig.json
│   ├── side-channel-list
│   │   ├── .editorconfig
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── list.d.ts
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── test
│   │   │   └── index.js
│   │   └── tsconfig.json
│   ├── side-channel-map
│   │   ├── .editorconfig
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── test
│   │   │   └── index.js
│   │   └── tsconfig.json
│   ├── side-channel-weakmap
│   │   ├── .editorconfig
│   │   ├── .eslintrc
│   │   ├── .github
│   │   │   └── FUNDING.yml
│   │   ├── .nycrc
│   │   ├── CHANGELOG.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── test
│   │   │   └── index.js
│   │   └── tsconfig.json
│   ├── statuses
│   │   ├── codes.json
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── string-width
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── license
│   │   ├── package.json
│   │   └── readme.md
│   ├── strip-ansi
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── license
│   │   ├── package.json
│   │   └── readme.md
│   ├── supergateway
│   │   ├── dist
│   │   │   └── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── src
│   │   │   └── index.ts
│   │   ├── supergateway.png
│   │   └── tsconfig.json
│   ├── toidentifier
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── type-is
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── undici
│   │   ├── docs
│   │   │   └── docs
│   │   │       ├── api
│   │   │       │   ├── Agent.md
│   │   │       │   ├── api-lifecycle.md
│   │   │       │   ├── BalancedPool.md
│   │   │       │   ├── CacheStorage.md
│   │   │       │   ├── Client.md
│   │   │       │   ├── Connector.md
│   │   │       │   ├── ContentType.md
│   │   │       │   ├── Cookies.md
│   │   │       │   ├── Debug.md
│   │   │       │   ├── DiagnosticsChannel.md
│   │   │       │   ├── Dispatcher.md
│   │   │       │   ├── DispatchInterceptor.md
│   │   │       │   ├── EnvHttpProxyAgent.md
│   │   │       │   ├── Errors.md
│   │   │       │   ├── EventSource.md
│   │   │       │   ├── Fetch.md
│   │   │       │   ├── MockAgent.md
│   │   │       │   ├── MockClient.md
│   │   │       │   ├── MockErrors.md
│   │   │       │   ├── MockPool.md
│   │   │       │   ├── Pool.md
│   │   │       │   ├── PoolStats.md
│   │   │       │   ├── ProxyAgent.md
│   │   │       │   ├── RedirectHandler.md
│   │   │       │   ├── RetryAgent.md
│   │   │       │   ├── RetryHandler.md
│   │   │       │   ├── Util.md
│   │   │       │   └── WebSocket.md
│   │   │       └── best-practices
│   │   │           ├── client-certificate.md
│   │   │           ├── mocking-request.md
│   │   │           ├── proxy.md
│   │   │           └── writing-tests.md
│   │   ├── index-fetch.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── lib
│   │   │   ├── api
│   │   │   │   ├── abort-signal.js
│   │   │   │   ├── api-connect.js
│   │   │   │   ├── api-pipeline.js
│   │   │   │   ├── api-request.js
│   │   │   │   ├── api-stream.js
│   │   │   │   ├── api-upgrade.js
│   │   │   │   ├── index.js
│   │   │   │   ├── readable.js
│   │   │   │   └── util.js
│   │   │   ├── core
│   │   │   │   ├── connect.js
│   │   │   │   ├── constants.js
│   │   │   │   ├── diagnostics.js
│   │   │   │   ├── errors.js
│   │   │   │   ├── request.js
│   │   │   │   ├── symbols.js
│   │   │   │   ├── tree.js
│   │   │   │   └── util.js
│   │   │   ├── dispatcher
│   │   │   │   ├── agent.js
│   │   │   │   ├── balanced-pool.js
│   │   │   │   ├── client-h1.js
│   │   │   │   ├── client-h2.js
│   │   │   │   ├── client.js
│   │   │   │   ├── dispatcher-base.js
│   │   │   │   ├── dispatcher.js
│   │   │   │   ├── env-http-proxy-agent.js
│   │   │   │   ├── fixed-queue.js
│   │   │   │   ├── pool-base.js
│   │   │   │   ├── pool-stats.js
│   │   │   │   ├── pool.js
│   │   │   │   ├── proxy-agent.js
│   │   │   │   └── retry-agent.js
│   │   │   ├── global.js
│   │   │   ├── handler
│   │   │   │   ├── decorator-handler.js
│   │   │   │   ├── redirect-handler.js
│   │   │   │   └── retry-handler.js
│   │   │   ├── interceptor
│   │   │   │   ├── dns.js
│   │   │   │   ├── dump.js
│   │   │   │   ├── redirect-interceptor.js
│   │   │   │   ├── redirect.js
│   │   │   │   ├── response-error.js
│   │   │   │   └── retry.js
│   │   │   ├── llhttp
│   │   │   │   ├── .gitkeep
│   │   │   │   ├── constants.js
│   │   │   │   ├── llhttp_simd-wasm.js
│   │   │   │   ├── llhttp-wasm.js
│   │   │   │   └── utils.js
│   │   │   ├── mock
│   │   │   │   ├── mock-agent.js
│   │   │   │   ├── mock-client.js
│   │   │   │   ├── mock-errors.js
│   │   │   │   ├── mock-interceptor.js
│   │   │   │   ├── mock-pool.js
│   │   │   │   ├── mock-symbols.js
│   │   │   │   ├── mock-utils.js
│   │   │   │   ├── pending-interceptors-formatter.js
│   │   │   │   └── pluralizer.js
│   │   │   ├── util
│   │   │   │   └── timers.js
│   │   │   └── web
│   │   │       ├── cache
│   │   │       │   ├── cache.js
│   │   │       │   ├── cachestorage.js
│   │   │       │   ├── symbols.js
│   │   │       │   └── util.js
│   │   │       ├── cookies
│   │   │       │   ├── constants.js
│   │   │       │   ├── index.js
│   │   │       │   ├── parse.js
│   │   │       │   └── util.js
│   │   │       ├── eventsource
│   │   │       │   ├── eventsource-stream.js
│   │   │       │   ├── eventsource.js
│   │   │       │   └── util.js
│   │   │       ├── fetch
│   │   │       │   ├── body.js
│   │   │       │   ├── constants.js
│   │   │       │   ├── data-url.js
│   │   │       │   ├── dispatcher-weakref.js
│   │   │       │   ├── file.js
│   │   │       │   ├── formdata-parser.js
│   │   │       │   ├── formdata.js
│   │   │       │   ├── global.js
│   │   │       │   ├── headers.js
│   │   │       │   ├── index.js
│   │   │       │   ├── LICENSE
│   │   │       │   ├── request.js
│   │   │       │   ├── response.js
│   │   │       │   ├── symbols.js
│   │   │       │   ├── util.js
│   │   │       │   └── webidl.js
│   │   │       ├── fileapi
│   │   │       │   ├── encoding.js
│   │   │       │   ├── filereader.js
│   │   │       │   ├── progressevent.js
│   │   │       │   ├── symbols.js
│   │   │       │   └── util.js
│   │   │       └── websocket
│   │   │           ├── connection.js
│   │   │           ├── constants.js
│   │   │           ├── events.js
│   │   │           ├── frame.js
│   │   │           ├── permessage-deflate.js
│   │   │           ├── receiver.js
│   │   │           ├── sender.js
│   │   │           ├── symbols.js
│   │   │           ├── util.js
│   │   │           └── websocket.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── scripts
│   │   │   └── strip-comments.js
│   │   └── 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
│   │       ├── mock-agent.d.ts
│   │       ├── mock-client.d.ts
│   │       ├── mock-errors.d.ts
│   │       ├── mock-interceptor.d.ts
│   │       ├── mock-pool.d.ts
│   │       ├── 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
│   ├── utils-merge
│   │   ├── .npmignore
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── vary
│   │   ├── HISTORY.md
│   │   ├── index.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── whatwg-encoding
│   │   ├── lib
│   │   │   ├── labels-to-names.json
│   │   │   ├── supported-names.json
│   │   │   └── whatwg-encoding.js
│   │   ├── LICENSE.txt
│   │   ├── package.json
│   │   └── README.md
│   ├── whatwg-mimetype
│   │   ├── lib
│   │   │   ├── mime-type-parameters.js
│   │   │   ├── mime-type.js
│   │   │   ├── parser.js
│   │   │   ├── serializer.js
│   │   │   └── utils.js
│   │   ├── LICENSE.txt
│   │   ├── package.json
│   │   └── README.md
│   ├── wrap-ansi
│   │   ├── index.js
│   │   ├── license
│   │   ├── package.json
│   │   └── readme.md
│   ├── wrappy
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── README.md
│   │   └── wrappy.js
│   ├── y18n
│   │   ├── build
│   │   │   ├── index.cjs
│   │   │   └── lib
│   │   │       ├── cjs.js
│   │   │       ├── index.js
│   │   │       └── platform-shims
│   │   │           └── node.js
│   │   ├── CHANGELOG.md
│   │   ├── index.mjs
│   │   ├── LICENSE
│   │   ├── package.json
│   │   └── README.md
│   ├── yargs
│   │   ├── browser.d.ts
│   │   ├── browser.mjs
│   │   ├── build
│   │   │   ├── index.cjs
│   │   │   └── lib
│   │   │       ├── argsert.js
│   │   │       ├── command.js
│   │   │       ├── completion-templates.js
│   │   │       ├── completion.js
│   │   │       ├── middleware.js
│   │   │       ├── parse-command.js
│   │   │       ├── typings
│   │   │       │   ├── common-types.js
│   │   │       │   └── yargs-parser-types.js
│   │   │       ├── usage.js
│   │   │       ├── utils
│   │   │       │   ├── apply-extends.js
│   │   │       │   ├── is-promise.js
│   │   │       │   ├── levenshtein.js
│   │   │       │   ├── maybe-async-result.js
│   │   │       │   ├── obj-filter.js
│   │   │       │   ├── process-argv.js
│   │   │       │   ├── set-blocking.js
│   │   │       │   └── which-module.js
│   │   │       ├── validation.js
│   │   │       ├── yargs-factory.js
│   │   │       └── yerror.js
│   │   ├── helpers
│   │   │   ├── helpers.mjs
│   │   │   ├── index.js
│   │   │   └── package.json
│   │   ├── index.cjs
│   │   ├── index.mjs
│   │   ├── lib
│   │   │   └── platform-shims
│   │   │       ├── browser.mjs
│   │   │       └── esm.mjs
│   │   ├── LICENSE
│   │   ├── locales
│   │   │   ├── be.json
│   │   │   ├── cs.json
│   │   │   ├── de.json
│   │   │   ├── en.json
│   │   │   ├── es.json
│   │   │   ├── fi.json
│   │   │   ├── fr.json
│   │   │   ├── hi.json
│   │   │   ├── hu.json
│   │   │   ├── id.json
│   │   │   ├── it.json
│   │   │   ├── ja.json
│   │   │   ├── ko.json
│   │   │   ├── nb.json
│   │   │   ├── nl.json
│   │   │   ├── nn.json
│   │   │   ├── pirate.json
│   │   │   ├── pl.json
│   │   │   ├── pt_BR.json
│   │   │   ├── pt.json
│   │   │   ├── ru.json
│   │   │   ├── th.json
│   │   │   ├── tr.json
│   │   │   ├── uk_UA.json
│   │   │   ├── uz.json
│   │   │   ├── zh_CN.json
│   │   │   └── zh_TW.json
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── yargs
│   │   └── yargs.mjs
│   ├── yargs-parser
│   │   ├── browser.js
│   │   ├── build
│   │   │   ├── index.cjs
│   │   │   └── lib
│   │   │       ├── index.js
│   │   │       ├── string-utils.js
│   │   │       ├── tokenize-arg-string.js
│   │   │       ├── yargs-parser-types.js
│   │   │       └── yargs-parser.js
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE.txt
│   │   ├── package.json
│   │   └── README.md
│   ├── 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
│   └── zod-to-json-schema
│       ├── .github
│       │   ├── CR_logotype-full-color.png
│       │   └── FUNDING.yml
│       ├── .prettierrc.json
│       ├── changelog.md
│       ├── contributing.md
│       ├── createIndex.ts
│       ├── dist
│       │   ├── cjs
│       │   │   ├── errorMessages.js
│       │   │   ├── index.js
│       │   │   ├── Options.js
│       │   │   ├── package.json
│       │   │   ├── parseDef.js
│       │   │   ├── parsers
│       │   │   │   ├── any.js
│       │   │   │   ├── array.js
│       │   │   │   ├── bigint.js
│       │   │   │   ├── boolean.js
│       │   │   │   ├── branded.js
│       │   │   │   ├── catch.js
│       │   │   │   ├── date.js
│       │   │   │   ├── default.js
│       │   │   │   ├── effects.js
│       │   │   │   ├── enum.js
│       │   │   │   ├── intersection.js
│       │   │   │   ├── literal.js
│       │   │   │   ├── map.js
│       │   │   │   ├── nativeEnum.js
│       │   │   │   ├── never.js
│       │   │   │   ├── null.js
│       │   │   │   ├── nullable.js
│       │   │   │   ├── number.js
│       │   │   │   ├── object.js
│       │   │   │   ├── optional.js
│       │   │   │   ├── pipeline.js
│       │   │   │   ├── promise.js
│       │   │   │   ├── readonly.js
│       │   │   │   ├── record.js
│       │   │   │   ├── set.js
│       │   │   │   ├── string.js
│       │   │   │   ├── tuple.js
│       │   │   │   ├── undefined.js
│       │   │   │   ├── union.js
│       │   │   │   └── unknown.js
│       │   │   ├── parseTypes.js
│       │   │   ├── Refs.js
│       │   │   ├── selectParser.js
│       │   │   └── zodToJsonSchema.js
│       │   ├── esm
│       │   │   ├── errorMessages.js
│       │   │   ├── index.js
│       │   │   ├── Options.js
│       │   │   ├── package.json
│       │   │   ├── parseDef.js
│       │   │   ├── parsers
│       │   │   │   ├── any.js
│       │   │   │   ├── array.js
│       │   │   │   ├── bigint.js
│       │   │   │   ├── boolean.js
│       │   │   │   ├── branded.js
│       │   │   │   ├── catch.js
│       │   │   │   ├── date.js
│       │   │   │   ├── default.js
│       │   │   │   ├── effects.js
│       │   │   │   ├── enum.js
│       │   │   │   ├── intersection.js
│       │   │   │   ├── literal.js
│       │   │   │   ├── map.js
│       │   │   │   ├── nativeEnum.js
│       │   │   │   ├── never.js
│       │   │   │   ├── null.js
│       │   │   │   ├── nullable.js
│       │   │   │   ├── number.js
│       │   │   │   ├── object.js
│       │   │   │   ├── optional.js
│       │   │   │   ├── pipeline.js
│       │   │   │   ├── promise.js
│       │   │   │   ├── readonly.js
│       │   │   │   ├── record.js
│       │   │   │   ├── set.js
│       │   │   │   ├── string.js
│       │   │   │   ├── tuple.js
│       │   │   │   ├── undefined.js
│       │   │   │   ├── union.js
│       │   │   │   └── unknown.js
│       │   │   ├── parseTypes.js
│       │   │   ├── Refs.js
│       │   │   ├── selectParser.js
│       │   │   └── zodToJsonSchema.js
│       │   └── types
│       │       ├── errorMessages.d.ts
│       │       ├── index.d.ts
│       │       ├── Options.d.ts
│       │       ├── parseDef.d.ts
│       │       ├── parsers
│       │       │   ├── any.d.ts
│       │       │   ├── array.d.ts
│       │       │   ├── bigint.d.ts
│       │       │   ├── boolean.d.ts
│       │       │   ├── branded.d.ts
│       │       │   ├── catch.d.ts
│       │       │   ├── date.d.ts
│       │       │   ├── default.d.ts
│       │       │   ├── effects.d.ts
│       │       │   ├── enum.d.ts
│       │       │   ├── intersection.d.ts
│       │       │   ├── literal.d.ts
│       │       │   ├── map.d.ts
│       │       │   ├── nativeEnum.d.ts
│       │       │   ├── never.d.ts
│       │       │   ├── null.d.ts
│       │       │   ├── nullable.d.ts
│       │       │   ├── number.d.ts
│       │       │   ├── object.d.ts
│       │       │   ├── optional.d.ts
│       │       │   ├── pipeline.d.ts
│       │       │   ├── promise.d.ts
│       │       │   ├── readonly.d.ts
│       │       │   ├── record.d.ts
│       │       │   ├── set.d.ts
│       │       │   ├── string.d.ts
│       │       │   ├── tuple.d.ts
│       │       │   ├── undefined.d.ts
│       │       │   ├── union.d.ts
│       │       │   └── unknown.d.ts
│       │       ├── parseTypes.d.ts
│       │       ├── Refs.d.ts
│       │       ├── selectParser.d.ts
│       │       └── zodToJsonSchema.d.ts
│       ├── dist-test
│       │   ├── cjs
│       │   │   ├── index.js
│       │   │   ├── node_modules
│       │   │   │   ├── .package-lock.json
│       │   │   │   └── 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
│       │   ├── esm
│       │   │   ├── index.js
│       │   │   ├── node_modules
│       │   │   │   ├── .package-lock.json
│       │   │   │   └── 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
│       │   ├── package.json
│       │   └── types
│       │       ├── index.ts
│       │       ├── node_modules
│       │       │   ├── .package-lock.json
│       │       │   └── 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
│       ├── LICENSE
│       ├── package.json
│       ├── postcjs.ts
│       ├── postesm.ts
│       ├── README.md
│       └── SECURITY.md
├── package-lock.json
├── package.json
├── README.md
├── run-mcp.sh
├── seo-mcp-server.js
├── seo-requirements.js
└── src
    ├── analyzers
    │   ├── html-analyzer.js
    │   └── keyword-analyzer.js
    ├── formatters
    │   └── text-formatter.js
    ├── server.js
    └── utils
        └── file-utils.js
```

# Files

--------------------------------------------------------------------------------
/src/analyzers/html-analyzer.js:
--------------------------------------------------------------------------------

```javascript
// src/analyzers/html-analyzer.js
import * as cheerio from 'cheerio';
import { detectTargetKeywords } from './keyword-analyzer.js';
import fs from 'fs/promises';
import path from 'path';

export function analyzeHtml(html, pageIdentifier) {
  const $ = cheerio.load(html);
  const issues = [];
  const recommendations = [];

  // Basic SEO checks
  const title = $('title').text();
  const metaDescription = $('meta[name="description"]').attr('content');
  const h1Count = $('h1').length;
  const h2Count = $('h2').length;
  const h3Count = $('h3').length;

  // Check for robots meta tag
  const robotsContent = $('meta[name="robots"]').attr('content');
  const hasNoIndex = robotsContent && robotsContent.includes('noindex');
  const hasNoFollow = robotsContent && robotsContent.includes('nofollow');

  // Check for canonical URL
  const canonicalUrl = $('link[rel="canonical"]').attr('href');

  // Check for social media tags
  const ogTitle = $('meta[property="og:title"]').attr('content');
  const ogDescription = $('meta[property="og:description"]').attr('content');
  const ogImage = $('meta[property="og:image"]').attr('content');
  const twitterCard = $('meta[name="twitter:card"]').attr('content');
  const twitterTitle = $('meta[name="twitter:title"]').attr('content');
  const twitterDescription = $('meta[name="twitter:description"]').attr(
    'content'
  );
  const twitterImage = $('meta[name="twitter:image"]').attr('content');

  // Detect potential target keywords
  const keywordAnalysis = detectTargetKeywords(html, title, metaDescription);

  // Check for React-specific elements
  const hasReactRoot =
    $('#root').length > 0 ||
    $('#app').length > 0 ||
    $('[data-reactroot]').length > 0;

  // Check for empty divs that might be React mounting points
  const emptyRootDivs = $('div:empty').length;
  const hasReactScripts =
    $('script').filter((i, el) => {
      const src = $(el).attr('src') || '';
      return (
        src.includes('react') || src.includes('bundle') || src.includes('chunk')
      );
    }).length > 0;

  // More confidently determine if it's a React app
  const isReactApp = hasReactRoot || (emptyRootDivs > 0 && hasReactScripts);

  // Calculate analysis confidence score
  let confidenceScore = 100;

  // If it's a React app, add a specific warning about client-side rendering
  if (isReactApp) {
    // Reduce confidence score for React apps
    confidenceScore = 40;

    issues.push({
      severity: 'critical',
      message:
        '⚠️ WARNING: This is a client-side rendered React app - this analysis is INCOMPLETE',
      impact: 100,
      area: 'Analysis Limitations',
    });

    issues.push({
      severity: 'critical',
      message:
        'Client-side rendered React apps hide content from this analyzer',
      impact: 95,
      area: 'Framework',
    });

    recommendations.push({
      text: 'Switch to server-side rendering for better SEO',
      impact: 95,
      reason:
        'This analysis only sees your initial HTML, not the content rendered by React',
      implementation:
        'Migrate to Next.js, Gatsby, or implement server-side rendering in your current setup',
    });

    recommendations.push({
      text: 'For accurate analysis, view your page source and analyze what search engines actually see',
      impact: 90,
      reason:
        'What you see in the browser is different from what search engines see',
      implementation:
        'Right-click your page and select "View Page Source" to see what search engines see',
    });
  }

  // Check title - HIGH IMPACT
  if (!title) {
    issues.push({
      severity: 'high',
      message: 'Missing page title',
      impact: 90,
      area: 'Meta Tags',
    });
    recommendations.push({
      text: 'Add a descriptive page title',
      impact: 90,
      reason:
        'Title tags are a critical ranking factor and appear in search results',
      implementation: '<title>Your Primary Keyword - Your Brand Name</title>',
    });
  } else if (title.length < 30) {
    issues.push({
      severity: 'medium',
      message: `Title is too short (${title.length} chars) - aim for 50-60 characters`,
      impact: 75,
      area: 'Meta Tags',
    });
    recommendations.push({
      text: 'Expand your title to be more descriptive',
      impact: 75,
      reason:
        'Short titles miss opportunities to include keywords and attract clicks',
      implementation: `<title>${title} | Add More Keywords and Brand</title>`,
    });
  } else if (title.length > 60) {
    issues.push({
      severity: 'medium',
      message: `Title length (${title.length} chars) exceeds recommended maximum of 60 characters`,
      impact: 70,
      area: 'Meta Tags',
    });
    recommendations.push({
      text: 'Shorten title to under 60 characters',
      impact: 70,
      reason: 'Long titles get truncated in search results',
      implementation: `<title>${title.substring(0, 57)}...</title>`,
    });
  }

  // Check meta description
  if (!metaDescription) {
    issues.push({
      severity: 'high',
      message: 'Missing meta description',
      impact: 80,
      area: 'Meta Tags',
    });
    recommendations.push({
      text: 'Add a descriptive meta description',
      impact: 80,
      reason:
        'Meta descriptions appear in search results and affect click-through rates',
      implementation:
        '<meta name="description" content="A compelling description of your page that includes target keywords and encourages clicks.">',
    });
  } else if (metaDescription.length < 50 || metaDescription.length > 160) {
    issues.push({
      severity: 'medium',
      message: `Meta description length (${metaDescription.length} chars) outside recommended range (50-160)`,
      impact: 60,
      area: 'Meta Tags',
    });
    recommendations.push({
      text: 'Adjust meta description to be between 50-160 characters',
      impact: 60,
      reason:
        'Descriptions outside this range may be truncated or considered thin content',
      implementation:
        metaDescription.length < 50
          ? 'Expand your meta description to be more descriptive and include target keywords'
          : 'Shorten your meta description to ensure it displays properly in search results',
    });
  }

  // Check robots meta tag
  if (hasNoIndex) {
    issues.push({
      severity: 'critical',
      message:
        'Page has noindex directive - it will not appear in search results',
      impact: 100,
      area: 'Indexability',
    });
    recommendations.push({
      text: 'Remove noindex directive if you want this page to be indexed',
      impact: 100,
      reason:
        'The noindex directive explicitly tells search engines not to include this page in search results',
      implementation:
        'Change to <meta name="robots" content="index,follow"> or remove the tag entirely',
    });
  }

  if (hasNoFollow) {
    issues.push({
      severity: 'high',
      message:
        'Page has nofollow directive - search engines will not follow links',
      impact: 85,
      area: 'Indexability',
    });
    recommendations.push({
      text: 'Remove nofollow directive if you want link equity to flow through this page',
      impact: 85,
      reason:
        'The nofollow directive prevents search engines from following links on this page',
      implementation:
        'Change to <meta name="robots" content="index,follow"> or remove the tag entirely',
    });
  }

  // Check headings
  if (h1Count === 0) {
    issues.push({
      severity: 'high',
      message: 'No H1 heading found',
      impact: 85,
      area: 'Content Structure',
    });
    recommendations.push({
      text: 'Add an H1 heading to your page',
      impact: 85,
      reason:
        'H1 headings help search engines understand the main topic of your page',
      implementation: '<h1>Your Primary Keyword/Topic</h1>',
    });
  } else if (h1Count > 1) {
    issues.push({
      severity: 'medium',
      message: `Multiple H1 headings found (${h1Count})`,
      impact: 65,
      area: 'Content Structure',
    });
    recommendations.push({
      text: 'Use only one H1 heading per page',
      impact: 65,
      reason:
        'Multiple H1s can confuse search engines about the main topic of your page',
      implementation: 'Keep the most important H1 and change others to H2',
    });
  }

  // Check for heading hierarchy
  if (h1Count === 0 && h2Count > 0) {
    issues.push({
      severity: 'medium',
      message: 'H2 headings found without an H1 heading',
      impact: 70,
      area: 'Content Structure',
    });
    recommendations.push({
      text: 'Add an H1 heading before using H2 headings',
      impact: 70,
      reason:
        'Proper heading hierarchy helps search engines understand your content structure',
      implementation: 'Add an H1 heading at the top of your content',
    });
  }

  // Check for social media tags
  if (!ogTitle && !twitterTitle) {
    issues.push({
      severity: 'medium',
      message: 'Missing social media title tags (Open Graph and Twitter)',
      impact: 60,
      area: 'Social Sharing',
    });
    recommendations.push({
      text: 'Add Open Graph and Twitter Card meta tags',
      impact: 60,
      reason:
        'Social media tags improve how your content appears when shared on social platforms',
      implementation: `<meta property="og:title" content="${
        title || 'Your Title'
      }">
<meta name="twitter:title" content="${title || 'Your Title'}">`,
    });
  }

  if (!ogImage && !twitterImage) {
    issues.push({
      severity: 'medium',
      message: 'Missing social media image tags',
      impact: 55,
      area: 'Social Sharing',
    });
    recommendations.push({
      text: 'Add social media image tags',
      impact: 55,
      reason:
        'Images make your content more appealing when shared on social media',
      implementation: `<meta property="og:image" content="https://yourdomain.com/path/to/image.jpg">
<meta name="twitter:image" content="https://yourdomain.com/path/to/image.jpg">`,
    });
  }

  // Check images
  const imagesWithoutAlt = [];
  $('img').each((i, img) => {
    const alt = $(img).attr('alt');
    const src = $(img).attr('src') || 'unknown image';
    if (!alt && !$(img).attr('role')) {
      imagesWithoutAlt.push(src);
      issues.push({
        severity: 'medium',
        message: `Image missing alt text: ${src}`,
        impact: 60,
        area: 'Accessibility',
      });
    }
  });

  if (imagesWithoutAlt.length > 0) {
    recommendations.push({
      text: 'Add alt text to all images',
      impact: 60,
      reason:
        'Alt text improves accessibility and helps search engines understand image content',
      implementation:
        '<img src="image.jpg" alt="Descriptive text about the image">',
    });
  }

  // Check for schema markup
  const schemas = [];
  $('script[type="application/ld+json"]').each((i, script) => {
    try {
      const schema = JSON.parse($(script).html());
      schemas.push(schema);
    } catch (e) {
      issues.push({
        severity: 'high',
        message: 'Invalid JSON-LD schema',
        impact: 70,
        area: 'Structured Data',
      });
    }
  });

  if (schemas.length === 0) {
    issues.push({
      severity: 'medium',
      message: 'No structured data (schema.org) found',
      impact: 65,
      area: 'Structured Data',
    });
    recommendations.push({
      text: 'Add structured data using JSON-LD',
      impact: 65,
      reason:
        'Structured data helps search engines understand your content and can enable rich results',
      implementation: `<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebPage",
  "name": "${title || 'Page title'}",
  "description": "${metaDescription || 'Page description'}"
}
</script>`,
    });
  }

  // Check for canonical URL
  if (!canonicalUrl) {
    issues.push({
      severity: 'medium',
      message: 'No canonical URL specified',
      impact: 60,
      area: 'Duplicate Content',
    });
    recommendations.push({
      text: 'Add a canonical URL tag',
      impact: 60,
      reason: 'Canonical URLs help prevent duplicate content issues',
      implementation:
        '<link rel="canonical" href="https://yourdomain.com/current-page/">',
    });
  }

  // Check for mobile viewport
  const hasViewport = $('meta[name="viewport"]').length > 0;
  if (!hasViewport) {
    issues.push({
      severity: 'high',
      message: 'Missing viewport meta tag for mobile responsiveness',
      impact: 80,
      area: 'Mobile Optimization',
    });
    recommendations.push({
      text: 'Add a viewport meta tag',
      impact: 80,
      reason: 'Mobile-friendly pages rank better in mobile search results',
      implementation:
        '<meta name="viewport" content="width=device-width, initial-scale=1">',
    });
  }

  // React-specific recommendations
  if (isReactApp) {
    recommendations.push({
      text: 'Use React Helmet to manage meta tags',
      impact: 85,
      reason:
        'React Helmet allows you to manage all your meta tags within your React components',
      implementation:
        'npm install react-helmet, then import and use in your components',
    });

    recommendations.push({
      text: 'Consider pre-rendering or server-side rendering',
      impact: 90,
      reason: 'Client-side rendered React apps often perform poorly for SEO',
      implementation:
        'Migrate to Next.js or use a pre-rendering service like Prerender.io',
    });

    // Add a special recommendation for React apps
    recommendations.push({
      text: 'IMPORTANT: This analysis is incomplete due to client-side rendering',
      impact: 100,
      reason:
        'This tool can only analyze the initial HTML, not the content rendered by React',
      implementation:
        'For a complete analysis, you need to analyze the rendered HTML that search engines see',
    });
  }

  // Sort recommendations by impact
  recommendations.sort((a, b) => b.impact - a.impact);

  return {
    pageIdentifier,
    title,
    metaDescription,
    headingStructure: {
      h1: h1Count,
      h2: h2Count,
      h3: h3Count,
    },
    robotsDirectives: {
      noindex: hasNoIndex,
      nofollow: hasNoFollow,
    },
    socialTags: {
      hasOpenGraph: !!(ogTitle || ogDescription || ogImage),
      hasTwitterCards: !!(
        twitterCard ||
        twitterTitle ||
        twitterDescription ||
        twitterImage
      ),
    },
    hasCanonical: !!canonicalUrl,
    hasViewport: hasViewport,
    schemaCount: schemas.length,
    issues: issues.sort((a, b) => b.impact - a.impact),
    recommendations,
    isReactApp,
    keywordAnalysis,
    confidenceScore, // Add confidence score to the analysis
  };
}

```

--------------------------------------------------------------------------------
/src/server.js:
--------------------------------------------------------------------------------

```javascript
// src/server.js
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 fs from 'fs/promises';
import path from 'path';

// Import your analyzer modules
import { analyzeHtml } from './analyzers/html-analyzer.js';
import { detectTargetKeywords } from './analyzers/keyword-analyzer.js';
import { findHtmlFiles } from './utils/file-utils.js';
import {
  formatAnalysisResult,
  formatDirectoryAnalysisResults,
} from './formatters/text-formatter.js';

// Define the SEO tool
const SEO_ANALYZER_TOOL = {
  name: 'analyzeSEO',
  description:
    'ALWAYS USE THIS TOOL FOR SEO ANALYSIS. DO NOT ATTEMPT TO ANALYZE SEO WITHOUT USING THIS TOOL.',
  inputSchema: {
    type: 'object',
    properties: {
      html: {
        type: 'string',
        description: 'HTML content to analyze',
      },
    },
    required: ['html'],
  },
};

// Create the server
const server = new Server(
  {
    name: 'seo-inspector-server',
    version: '1.0.0',
  },
  {
    capabilities: {
      tools: {},
    },
  }
);

// Handle tool listing requests
server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [SEO_ANALYZER_TOOL],
}));

// Handle tool call requests
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  console.error('⭐ TOOL CALL RECEIVED:', request.params.name);

  if (request.params.name === 'analyzeSEO') {
    try {
      console.error('⭐ ARGUMENTS:', JSON.stringify(request.params.arguments));

      // Handle HTML content analysis
      if (request.params.arguments.html) {
        const html = request.params.arguments.html;
        console.error('⭐ HTML content received, length:', html.length);

        try {
          // Use your analyzer module
          console.error('⭐ Calling analyzeHtml...');
          const analysis = analyzeHtml(html, 'Provided HTML');
          console.error('⭐ Analysis complete');

          // Format the response
          console.error('⭐ Formatting response...');
          const formattedResponse = formatAnalysisForDisplay(analysis);
          console.error('⭐ Response formatted');

          console.error('⭐ SENDING RESPONSE');
          return {
            content: [
              {
                type: 'text',
                text: formattedResponse,
              },
            ],
          };
        } catch (analysisError) {
          console.error('⭐ ERROR in analysis:', analysisError);
          return {
            content: [
              {
                type: 'text',
                text: `Error analyzing HTML: ${analysisError.message}\n\n${analysisError.stack}`,
              },
            ],
            isError: true,
          };
        }
      }
      // Handle directory analysis
      else if (request.params.arguments.directoryPath) {
        const directoryPath = request.params.arguments.directoryPath;
        console.error(`⭐ Analyzing directory: ${directoryPath}`);

        try {
          // Use our file utils module
          const htmlFiles = await findHtmlFiles(directoryPath);

          if (htmlFiles.length === 0) {
            return {
              content: [
                {
                  type: 'text',
                  text: `No HTML files found in ${directoryPath}`,
                },
              ],
            };
          }

          // Analyze each HTML file
          const results = [];

          for (const file of htmlFiles) {
            try {
              const content = await fs.readFile(file, 'utf8');
              const relativePath = path.relative(directoryPath, file);

              // Use your analyzer module
              const analysis = analyzeHtml(content, relativePath);
              results.push(analysis);
            } catch (error) {
              console.error(`Error analyzing ${file}:`, error);
            }
          }

          // Use our formatter module
          const formattedResult = formatDirectoryAnalysisResults(
            results,
            directoryPath
          );

          console.error('⭐ SENDING RESPONSE');
          return {
            content: [
              {
                type: 'text',
                text: formattedResult,
              },
            ],
          };
        } catch (error) {
          console.error('⭐ Error analyzing directory:', error);
          return {
            content: [
              {
                type: 'text',
                text: `Error analyzing directory: ${error.message}`,
              },
            ],
            isError: true,
          };
        }
      } else {
        return {
          content: [
            {
              type: 'text',
              text: 'Please provide either HTML content or a directory path to analyze.',
            },
          ],
        };
      }
    } catch (error) {
      console.error('⭐ ERROR:', error);
      return {
        content: [
          {
            type: 'text',
            text: `Error analyzing SEO: ${error.message}`,
          },
        ],
        isError: true,
      };
    }
  }
});

// Format analysis results for display
function formatAnalysisForDisplay(analysis) {
  try {
    console.error('⭐ Starting to format analysis...');

    // Create a more structured, actionable response
    let response = `# SEO ANALYSIS REPORT\n\n`;

    // Add confidence indicator for React apps
    if (analysis.isReactApp) {
      response += `## ⚠️ IMPORTANT LIMITATION WARNING ⚠️
This appears to be a client-side rendered React application. This analysis has a **LOW CONFIDENCE SCORE (${analysis.confidenceScore}%)** because:

1. This tool can only analyze the initial HTML, not the content rendered by React after JavaScript executes
2. Search engines may see different content than what appears in your browser
3. Many SEO elements may be missing from this analysis if they're added by React components

For accurate analysis, you should:
- View your page source (right-click > View Page Source) to see what search engines actually see
- Consider switching to server-side rendering (Next.js, Gatsby) for better SEO
- Use React Helmet to ensure meta tags are present in the initial HTML

**The issues below are based ONLY on the initial HTML, not your rendered React app.**\n\n`;
    }

    response += `## SUMMARY
This analysis identified ${analysis.issues.length} issues with your HTML. 
${
  analysis.issues.filter((i) => i.severity === 'critical').length > 0
    ? `⚠️ CRITICAL: ${
        analysis.issues.filter((i) => i.severity === 'critical').length
      } critical issues require immediate attention.`
    : ''
}
${
  analysis.issues.filter((i) => i.severity === 'high').length > 0
    ? `⚠️ HIGH PRIORITY: ${
        analysis.issues.filter((i) => i.severity === 'high').length
      } high-priority issues require attention.`
    : '✅ No high-priority issues found.'
}
${
  analysis.issues.filter((i) => i.severity === 'medium').length > 0
    ? `⚠️ MEDIUM PRIORITY: ${
        analysis.issues.filter((i) => i.severity === 'medium').length
      } medium-priority issues should be addressed soon.`
    : '✅ No medium-priority issues found.'
}

## PAGE INFORMATION
- Title: "${analysis.title || 'Missing'}" (${
      analysis.title ? analysis.title.length : 0
    } characters)
- Meta Description: "${analysis.metaDescription || 'Missing'}" (${
      analysis.metaDescription ? analysis.metaDescription.length : 0
    } characters)
- Heading Structure: H1: ${analysis.headingStructure.h1}, H2: ${
      analysis.headingStructure.h2
    }, H3: ${analysis.headingStructure.h3}
- Schema Markup: ${
      analysis.schemaCount > 0
        ? `${analysis.schemaCount} schema(s) detected`
        : 'No schema markup found'
    }
- Framework: ${
      analysis.isReactApp
        ? '**React (client-side rendering detected)**'
        : 'Static HTML'
    }
- Robots Directives: ${
      analysis.robotsDirectives?.noindex
        ? '**noindex** (page will not be indexed by search engines)'
        : 'index'
    }, ${
      analysis.robotsDirectives?.nofollow
        ? '**nofollow** (links will not be followed)'
        : 'follow'
    }
- Social Tags: ${
      analysis.socialTags?.hasOpenGraph ? 'Open Graph ✓' : 'Open Graph ✗'
    }, ${
      analysis.socialTags?.hasTwitterCards
        ? 'Twitter Cards ✓'
        : 'Twitter Cards ✗'
    }
- Canonical URL: ${analysis.hasCanonical ? 'Present ✓' : 'Missing ✗'}
- Mobile Viewport: ${analysis.hasViewport ? 'Present ✓' : 'Missing ✗'}

## TARGET KEYWORD ANALYSIS\n`;

    if (analysis.keywordAnalysis) {
      // Always show detected keywords first
      if (
        analysis.keywordAnalysis.keywordSummary &&
        analysis.keywordAnalysis.keywordSummary.primaryPhrase
      ) {
        response += `Primary target keyword phrase appears to be: "${analysis.keywordAnalysis.keywordSummary.primaryPhrase}"\n`;

        if (
          analysis.keywordAnalysis.keywordSummary.secondaryPhrases &&
          analysis.keywordAnalysis.keywordSummary.secondaryPhrases.length > 0
        ) {
          response += `Secondary keyword phrases: ${analysis.keywordAnalysis.keywordSummary.secondaryPhrases
            .map((p) => `"${p}"`)
            .join(', ')}\n`;
        }

        response += `\nTop single-word keywords: ${analysis.keywordAnalysis.keywordSummary.topSingleWords
          .map((w) => `"${w}"`)
          .join(', ')}\n`;

        // Now focus on placement rather than density
        response += `\nKeyword Placement Analysis:\n`;

        const placement = analysis.keywordAnalysis.placementAnalysis;
        if (placement) {
          response += `- Primary keyword "${
            placement.primaryPhrase
          }" in title: ${placement.inTitle ? '✅ Yes' : '❌ No'}\n`;
          response += `- Primary keyword in meta description: ${
            placement.inMetaDescription ? '✅ Yes' : '❌ No'
          }\n`;
          response += `- Primary keyword in H1 heading: ${
            placement.inH1 ? '✅ Yes' : '❌ No'
          }\n`;
          response += `- Primary keyword in H2 headings: ${
            placement.inH2 ? '✅ Yes' : '❌ No'
          }\n`;

          if (placement.missingFrom && placement.missingFrom.length > 0) {
            response += `\n⚠️ Your primary keyword is missing from: ${placement.missingFrom.join(
              ', '
            )}\n`;
          } else {
            response += `\n✅ Great job! Your primary keyword is well-placed in all important elements.\n`;
          }
        }
      } else {
        response += `No clear target keyword phrases detected.\n`;
      }
    } else {
      response += `No keyword analysis available. Consider adding more specific, relevant keywords to your content.\n`;
    }

    // Issues section with severity indicators and impact
    response += `\n## ISSUES (PRIORITIZED BY IMPACT)
`;

    if (analysis.issues && analysis.issues.length > 0) {
      // Group issues by severity
      const criticalIssues = analysis.issues.filter(
        (i) => i.severity === 'critical'
      );
      const highIssues = analysis.issues.filter((i) => i.severity === 'high');
      const mediumIssues = analysis.issues.filter(
        (i) => i.severity === 'medium'
      );
      const lowIssues = analysis.issues.filter((i) => i.severity === 'low');

      // Display critical severity issues first
      if (criticalIssues.length > 0) {
        response += `### ⚠️ CRITICAL ISSUES - FIX IMMEDIATELY:\n`;
        criticalIssues.forEach((issue, i) => {
          response += `${i + 1}. 🔴 ${issue.message} (Impact: ${
            issue.impact
          }/100)\n`;
        });
        response += `\n`;
      }

      // Display high severity issues
      if (highIssues.length > 0) {
        response += `### HIGH PRIORITY ISSUES - FIX SOON:\n`;
        highIssues.forEach((issue, i) => {
          response += `${i + 1}. 🟠 ${issue.message} (Impact: ${
            issue.impact
          }/100)\n`;
        });
        response += `\n`;
      }

      // Display medium severity issues
      if (mediumIssues.length > 0) {
        response += `### MEDIUM PRIORITY ISSUES - ADDRESS WHEN POSSIBLE:\n`;
        mediumIssues.forEach((issue, i) => {
          response += `${i + 1}. 🟡 ${issue.message} (Impact: ${
            issue.impact
          }/100)\n`;
        });
        response += `\n`;
      }

      // Display low severity issues
      if (lowIssues.length > 0) {
        response += `### MINOR ISSUES - CONSIDER FIXING:\n`;
        lowIssues.forEach((issue, i) => {
          response += `${i + 1}. 🔵 ${issue.message} (Impact: ${
            issue.impact
          }/100)\n`;
        });
        response += `\n`;
      }
    } else {
      response += `✅ No issues found. Great job!\n`;
    }

    // Recommendations with clear next steps
    response += `\n## RECOMMENDATIONS (PRIORITIZED BY IMPACT)
`;

    if (analysis.recommendations && analysis.recommendations.length > 0) {
      analysis.recommendations.forEach((rec, i) => {
        response += `### ${i + 1}. ${rec.text} (Impact: ${rec.impact}/100)\n`;
        response += `**Why it matters**: ${rec.reason}\n`;
        response += `**How to implement**: ${rec.implementation}\n\n`;
      });
    } else {
      response += `No specific recommendations. Your page appears to be well-optimized.\n`;
    }

    // Framework-specific notes
    if (analysis.isReactApp) {
      response += `\n## REACT-SPECIFIC SEO CONSIDERATIONS
- **This analysis is based ONLY on the initial HTML, not your rendered React app**
- Client-side rendered React apps often have poor SEO because search engines may not execute JavaScript
- For better SEO with React:
  1. Use Next.js or Gatsby for server-side or static rendering
  2. Use React Helmet to manage meta tags
  3. Consider a pre-rendering service like Prerender.io
  4. Test your site with Google's Mobile-Friendly Test to see what search engines actually see
`;
    }

    // Next steps
    response += `\n## NEXT STEPS
1. Address the critical issues first (if any)
2. Implement the high-impact recommendations
3. Consider a follow-up analysis after changes are made
4. For a complete SEO strategy, also consider:
   - Page speed optimization
   - Mobile responsiveness
   - Backlink strategy
   - Content quality and freshness
`;

    console.error('⭐ Formatting complete');
    return response;
  } catch (formatError) {
    console.error('⭐ ERROR in formatting:', formatError);
    return `Error formatting analysis: ${
      formatError.message
    }\n\nRaw analysis: ${JSON.stringify(analysis, null, 2)}`;
  }
}

// Start the server
async function runServer() {
  const transport = new StdioServerTransport();

  try {
    await server.connect(transport);
    console.error('SEO Inspector MCP Server running on stdio');

    // Keep the process alive without using event listeners
    process.stdin.resume();

    // Handle proper shutdown
    process.on('SIGINT', () => {
      console.error('Server shutting down...');
      process.exit(0);
    });

    process.on('SIGTERM', () => {
      console.error('Server shutting down...');
      process.exit(0);
    });

    // Simple heartbeat log (optional)
    setInterval(() => {
      console.error('Server heartbeat: still running');
    }, 60000); // Log every minute
  } catch (error) {
    console.error('Error connecting transport:', error);
    process.exit(1);
  }
}

runServer().catch((error) => {
  console.error('Fatal error running server:', error);
  process.exit(1);
});

```
Page 2/2FirstPrevNextLast