#
tokens: 1137/50000 4/47 files (page 1/3)
lines: off (toggle) GitHub
raw markdown copy
This is page 1 of 3. Use http://codebase.md/sylphlab/pdf-reader-mcp?page={x} to view the full context.

# Directory Structure

```
├── .dockerignore
├── .eslintcache
├── .gitattributes
├── .github
│   ├── dependabot.yml
│   └── workflows
│       └── ci.yml
├── .gitignore
├── .husky
│   └── pre-commit
├── .prettierrc.cjs
├── .roo
│   └── mcp.json
├── CHANGELOG.md
├── commitlint.config.cjs
├── CONTRIBUTING.md
├── Dockerfile
├── docs
│   ├── .vitepress
│   │   └── config.mts
│   ├── api
│   │   └── README.md
│   ├── changelog.md
│   ├── comparison
│   │   └── index.md
│   ├── contributing.md
│   ├── design
│   │   └── index.md
│   ├── guide
│   │   ├── getting-started.md
│   │   ├── index.md
│   │   └── installation.md
│   ├── index.md
│   ├── license.md
│   ├── performance
│   │   └── index.md
│   ├── performance.md
│   ├── principles.md
│   ├── public
│   │   └── logo.svg
│   └── testing.md
├── eslint.config.js
├── LICENSE
├── memory-bank
│   ├── activeContext.md
│   ├── productContext.md
│   ├── progress.md
│   ├── projectbrief.md
│   ├── systemPatterns.md
│   └── techContext.md
├── package.json
├── PLAN.md
├── pnpm-lock.yaml
├── README.md
├── src
│   ├── handlers
│   │   ├── index.ts
│   │   └── readPdf.ts
│   ├── index.ts
│   └── utils
│       └── pathUtils.ts
├── test
│   ├── benchmark
│   │   └── readPdf.bench.ts
│   ├── fixtures
│   │   └── sample.pdf
│   ├── handlers
│   │   └── readPdf.test.ts
│   └── pathUtils.test.ts
├── tsconfig.eslint.json
├── tsconfig.json
└── vitest.config.ts
```

# Files

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

```
node_modules/
build/
build/
*.log
coverage/
.env*

# VitePress
docs/.vitepress/dist
docs/.vitepress/cache

# Test Reports
test-report.junit.xml
```

--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------

```
# Git files
.git
.gitignore

# Node modules
node_modules

# Build artifacts (we only need the build output in the final stage)
build

# Docker files
Dockerfile
.dockerignore

# Documentation / Other
README.md
memory-bank
.vscode
```

--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------

```
# Auto detect text files and perform LF normalization
* text=auto eol=lf

# Explicitly declare text files we want to always normalize to LF
*.cjs text eol=lf
*.js text eol=lf
*.ts text eol=lf
*.json text eol=lf
*.md text eol=lf
*.yaml text eol=lf
*.yml text eol=lf

# Lockfiles should always use LF
package-lock.json text eol=lf
pnpm-lock.yaml text eol=lf

# Ensure specific files are treated as binary (if needed)
# *.png binary
# *.jpg binary
```

--------------------------------------------------------------------------------
/.prettierrc.cjs:
--------------------------------------------------------------------------------

```
// .prettierrc.js
module.exports = {
  printWidth: 100, // Specify the line length that the printer will wrap on.
  tabWidth: 2, // Specify the number of spaces per indentation-level.
  useTabs: false, // Indent lines with tabs instead of spaces.
  semi: true, // Print semicolons at the ends of statements.
  singleQuote: true, // Use single quotes instead of double quotes.
  quoteProps: 'as-needed', // Change when properties in objects are quoted.
  jsxSingleQuote: false, // Use single quotes instead of double quotes in JSX.
  trailingComma: 'es5', // Print trailing commas wherever possible in multi-line comma-separated syntactic structures. (A single-line array, for example, never gets trailing commas.)
  bracketSpacing: true, // Print spaces between brackets in object literals.
  bracketSameLine: false, // Put the > of a multi-line HTML (HTML, JSX, Vue, Angular) element at the end of the last line instead of being alone on the next line (does not apply to self closing elements).
  arrowParens: 'always', // Include parentheses around a sole arrow function parameter.
  endOfLine: 'lf', // Ensure consistent line endings
};

```
Page 1/3FirstPrevNextLast