This is page 1 of 3. Use http://codebase.md/sylphlab/pdf-reader-mcp?lines=true&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: -------------------------------------------------------------------------------- ``` 1 | node_modules/ 2 | build/ 3 | build/ 4 | *.log 5 | coverage/ 6 | .env* 7 | 8 | # VitePress 9 | docs/.vitepress/dist 10 | docs/.vitepress/cache 11 | 12 | # Test Reports 13 | test-report.junit.xml ``` -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- ``` 1 | # Git files 2 | .git 3 | .gitignore 4 | 5 | # Node modules 6 | node_modules 7 | 8 | # Build artifacts (we only need the build output in the final stage) 9 | build 10 | 11 | # Docker files 12 | Dockerfile 13 | .dockerignore 14 | 15 | # Documentation / Other 16 | README.md 17 | memory-bank 18 | .vscode ``` -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- ``` 1 | # Auto detect text files and perform LF normalization 2 | * text=auto eol=lf 3 | 4 | # Explicitly declare text files we want to always normalize to LF 5 | *.cjs text eol=lf 6 | *.js text eol=lf 7 | *.ts text eol=lf 8 | *.json text eol=lf 9 | *.md text eol=lf 10 | *.yaml text eol=lf 11 | *.yml text eol=lf 12 | 13 | # Lockfiles should always use LF 14 | package-lock.json text eol=lf 15 | pnpm-lock.yaml text eol=lf 16 | 17 | # Ensure specific files are treated as binary (if needed) 18 | # *.png binary 19 | # *.jpg binary ``` -------------------------------------------------------------------------------- /.prettierrc.cjs: -------------------------------------------------------------------------------- ``` 1 | // .prettierrc.js 2 | module.exports = { 3 | printWidth: 100, // Specify the line length that the printer will wrap on. 4 | tabWidth: 2, // Specify the number of spaces per indentation-level. 5 | useTabs: false, // Indent lines with tabs instead of spaces. 6 | semi: true, // Print semicolons at the ends of statements. 7 | singleQuote: true, // Use single quotes instead of double quotes. 8 | quoteProps: 'as-needed', // Change when properties in objects are quoted. 9 | jsxSingleQuote: false, // Use single quotes instead of double quotes in JSX. 10 | trailingComma: 'es5', // Print trailing commas wherever possible in multi-line comma-separated syntactic structures. (A single-line array, for example, never gets trailing commas.) 11 | bracketSpacing: true, // Print spaces between brackets in object literals. 12 | 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). 13 | arrowParens: 'always', // Include parentheses around a sole arrow function parameter. 14 | endOfLine: 'lf', // Ensure consistent line endings 15 | }; 16 | ```