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 }; ```