diff --git a/packages/content/ref/pdf-to-images/.gitignore b/packages/content/ref/pdf-to-images/.gitignore new file mode 100644 index 00000000..03001075 --- /dev/null +++ b/packages/content/ref/pdf-to-images/.gitignore @@ -0,0 +1 @@ +./tests/out \ No newline at end of file diff --git a/packages/content/ref/pdf-to-images/README.md b/packages/content/ref/pdf-to-images/README.md new file mode 100644 index 00000000..c242b8e5 --- /dev/null +++ b/packages/content/ref/pdf-to-images/README.md @@ -0,0 +1,151 @@ +# @polymech/pdf + +## Installation + +1. **Clone the repository (optional):** + ```bash + git clone # Replace with your repository URL + cd # e.g., cd pdf + ``` + +2. **Install dependencies:** + ```bash + npm install + ``` + +3. **Build the project:** + ```bash + npm run build + ``` + +## CLI Usage + +When running from within the cloned project directory after building: + +```bash +npm start -- convert [options] +# or directly execute the built script +node dist/index.js convert [options] +``` + +*(Note: If you publish this package and install it elsewhere, you might execute it differently, potentially using `npx @polymech/pdf convert ...` if a `bin` entry is added to `package.json`)* + +Available command: `convert` - Convert PDF to images + +### Options for `convert` command: + +* `-i, --input `: Input PDF file (required) +* `-o, --output `: Output directory prefix for images (required) +* `--dpi `: DPI for output images (default: 300) +* `--format `: Output image format (choices: 'png', 'jpg', default: 'png') +* `-s, --startPage `: First page to convert (1-based) +* `-e, --endPage `: Last page to convert (1-based, inclusive) + +Example: + +```bash +node dist/index.js convert -i mydocument.pdf -o output/image +``` + +This will generate images like `output/image_1.png`, `output/image_2.png`, etc. + +Another example (using JPG format and 150 DPI): + +```bash +node dist/index.js convert -i report.pdf -o images/report_page --format jpg --dpi 150 +``` + +This generates `images/report_page_1.jpg`, `images/report_page_2.jpg`, etc. + +Example specifying a page range (pages 3 to 5): + +```bash +node dist/index.js convert -i long_doc.pdf -o pages/doc_pg --startPage 3 --endPage 5 +``` + +This generates `pages/doc_pg_3.png`, `pages/doc_pg_4.png`, `pages/doc_pg_5.png`. + +## API Usage + +```typescript +import { convertPdfToImages, ImageFormat, PdfToImageOptions } from './dist/lib/pdf'; // Adjust path based on your project structure +import { readFile } from 'node:fs/promises'; + +async function example() { + try { + const pdfBuffer = await readFile('mydocument.pdf'); + + const options: PdfToImageOptions = { + outputPathPrefix: 'output/image', + dpi: 300, + format: 'png' + }; + + const outputFilePaths = await convertPdfToImages(pdfBuffer, options); + console.log('Generated images:', outputFilePaths); + } catch (error) { + console.error('Error:', error); + } +} + +example(); +``` + +Example using JPG format: + +```typescript +import { convertPdfToImages, PdfToImageOptions } from './dist/lib/pdf'; // Adjust path +import { readFile } from 'node:fs/promises'; +import { Logger } from 'tslog'; // Assuming you want logging + +async function exampleJpg() { + const logger = new Logger(); + try { + const pdfBuffer = await readFile('report.pdf'); + const options: PdfToImageOptions = { + outputPathPrefix: 'images/report_page', + dpi: 150, + format: 'jpg', + }; + const outputFilePaths = await convertPdfToImages(pdfBuffer, options); + logger.info('Generated JPG images:', outputFilePaths); + } catch (error) { + logger.error('Error generating JPGs:', error); + } +} + +exampleJpg(); +``` + +Example with specific page range: + +```typescript +import { convertPdfToImages, PdfToImageOptions } from './dist/lib/pdf'; // Adjust path +import { readFile } from 'node:fs/promises'; + +async function examplePageRange() { + try { + const pdfBuffer = await readFile('long_doc.pdf'); + const options: PdfToImageOptions = { + outputPathPrefix: 'pages/doc_pg', + dpi: 200, + format: 'png', + startPage: 3, + endPage: 5 + }; + const outputFilePaths = await convertPdfToImages(pdfBuffer, options); + console.log('Generated specific pages:', outputFilePaths); + } catch (error) { + console.error('Error generating page range:', error); + } +} + +examplePageRange(); +``` + +### Exports + +* `convertPdfToImages(pdfData: Buffer, options: PdfToImageOptions): Promise`: Converts a PDF buffer to images. +* `ImageFormat`: Type alias for `'png' | 'jpg'`. +* `PdfToImageOptions`: Interface for conversion options (`outputPathPrefix`, `dpi`, `format`, optional `startPage`, optional `endPage`, optional `logger`). +``` \ No newline at end of file diff --git a/packages/content/ref/pdf-to-images/dist/commands/convert.js b/packages/content/ref/pdf-to-images/dist/commands/convert.js index 98df0e7d..4c0e8a02 100644 --- a/packages/content/ref/pdf-to-images/dist/commands/convert.js +++ b/packages/content/ref/pdf-to-images/dist/commands/convert.js @@ -2,8 +2,9 @@ import { Logger } from 'tslog'; import { ConvertCommandSchema } from '../types.js'; import { convertPdfToImages } from '../lib/pdf.js'; import { existsSync } from 'node:fs'; -import { dirname } from 'node:path'; +import { dirname, sep, extname, basename } from 'node:path'; import { mkdir, readFile } from 'node:fs/promises'; +import * as z from 'zod'; export const command = 'convert'; export const desc = 'Convert PDF to images'; export const builder = { @@ -16,7 +17,7 @@ export const builder = { output: { alias: 'o', type: 'string', - description: 'Output directory for images', + description: 'Output directory prefix for images', demandOption: true }, dpi: { @@ -29,6 +30,18 @@ export const builder = { choices: ['png', 'jpg'], default: 'png', description: 'Output image format' + }, + startPage: { + alias: 's', + type: 'number', + description: 'First page to convert (1-based)', + requiresArg: true + }, + endPage: { + alias: 'e', + type: 'number', + description: 'Last page to convert (1-based, inclusive)', + requiresArg: true } }; export async function handler(argv) { @@ -38,20 +51,40 @@ export async function handler(argv) { if (!existsSync(config.input)) { throw new Error(`Input file ${config.input} does not exist`); } - await mkdir(dirname(config.output), { recursive: true }); + // Ensure the full output directory path exists + // config.output is the prefix, e.g., "tests/e5dc/image" + // We need to create the directory part, e.g., "tests/e5dc/" + const outputDir = dirname(config.output); + // Check if output path itself ends with a separator or if the base name contains no extension + // This helps determine if the output path is intended as a directory. + const isOutputDir = config.output.endsWith(sep) || config.output.endsWith('/') || !extname(basename(config.output)); + const dirToCreate = isOutputDir ? config.output : outputDir; + // Check if dirToCreate is not empty and not the root directory before creating + if (dirToCreate && dirToCreate !== '.' && dirToCreate !== '/' && dirToCreate !== sep) { + await mkdir(dirToCreate, { recursive: true }); + logger.info(`Ensured output directory exists: ${dirToCreate}`); + } logger.info(`Converting PDF ${config.input} to images...`); const pdfData = await readFile(config.input); const outputFiles = await convertPdfToImages(pdfData, { outputPathPrefix: config.output, dpi: config.dpi, format: config.format, + startPage: config.startPage, + endPage: config.endPage, logger }); logger.info('Conversion completed successfully'); logger.info(`Generated ${outputFiles.length} images`); } catch (error) { - logger.error('Error during conversion:', error); + if (error instanceof z.ZodError) { + logger.error('Invalid arguments:', error.flatten()); + } + else { + const message = error instanceof Error ? error.message : String(error); + logger.error('Error during conversion:', message, error); + } process.exit(1); } } diff --git a/packages/content/ref/pdf-to-images/dist/index.js b/packages/content/ref/pdf-to-images/dist/index.js index b0b3fbef..cf1608be 100644 --- a/packages/content/ref/pdf-to-images/dist/index.js +++ b/packages/content/ref/pdf-to-images/dist/index.js @@ -1,7 +1,15 @@ import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; +import * as convertCommand from './commands/convert.js'; +const commandModule = { + command: convertCommand.command, + describe: convertCommand.desc, + builder: convertCommand.builder, + handler: convertCommand.handler +}; yargs(hideBin(process.argv)) - .command(require('./commands/convert.js')) + .command(commandModule) .demandCommand(1, 'You need to specify a command') .strict() - .argv; + .help() + .parse(); diff --git a/packages/content/ref/pdf-to-images/dist/lib/pdf.js b/packages/content/ref/pdf-to-images/dist/lib/pdf.js index 1615cf0c..705415ee 100644 --- a/packages/content/ref/pdf-to-images/dist/lib/pdf.js +++ b/packages/content/ref/pdf-to-images/dist/lib/pdf.js @@ -7,17 +7,32 @@ export async function convertPdfToImages(pdfData, options) { try { const doc = mupdf.Document.openDocument(pdfData, 'pdf'); const pageCount = doc.countPages(); - logger.info(`Processing ${pageCount} pages`); - for (let i = 0; i < pageCount; i++) { + // Validate and determine page range (adjusting for 0-based index) + const start = (options.startPage ?? 1) - 1; + const end = (options.endPage ?? pageCount) - 1; + if (start < 0 || start >= pageCount) { + throw new Error(`startPage (${options.startPage}) is out of valid range (1-${pageCount})`); + } + if (end < 0 || end >= pageCount) { + throw new Error(`endPage (${options.endPage}) is out of valid range (1-${pageCount})`); + } + if (start > end) { + // This should also be caught by Zod schema, but good to double-check + throw new Error(`startPage (${options.startPage}) cannot be greater than endPage (${options.endPage})`); + } + const numPagesToProcess = end - start + 1; + logger.info(`Processing pages ${start + 1} to ${end + 1} (${numPagesToProcess} pages) of ${pageCount} total`); + for (let i = start; i <= end; i++) { + const pageNumber = i + 1; // User-facing page number (1-based) const page = doc.loadPage(i); const pixmap = page.toPixmap([1, 0, 0, 1, 0, 0], mupdf.ColorSpace.DeviceRGB, false); - const outputPath = `${options.outputPathPrefix}_${i + 1}.${options.format}`; + const outputPath = `${options.outputPathPrefix}_${pageNumber}.${options.format}`; const imageData = options.format === 'png' ? pixmap.asPNG() - : pixmap.asJPEG(90, false); + : pixmap.asJPEG(100, false); await writeFile(outputPath, imageData); outputFiles.push(outputPath); - logger.info(`Converted page ${i + 1} to ${outputPath}`); + logger.info(`Converted page ${pageNumber} to ${outputPath}`); } return outputFiles; } diff --git a/packages/content/ref/pdf-to-images/dist/types.js b/packages/content/ref/pdf-to-images/dist/types.js index 82dab42d..f49db76c 100644 --- a/packages/content/ref/pdf-to-images/dist/types.js +++ b/packages/content/ref/pdf-to-images/dist/types.js @@ -2,12 +2,29 @@ import { z } from 'zod'; export const ConvertCommandSchema = z.object({ input: z.string(), output: z.string(), - dpi: z.number().default(300), - format: z.enum(['png', 'jpg']).default('png') -}); -export const ConfigSchema = z.object({ - input: z.string().min(1), - output: z.string().min(1), dpi: z.number().int().positive().default(300), - format: z.enum(['png', 'jpg']).default('png') + format: z.enum(['png', 'jpg']).default('png'), + startPage: z.number().int().positive().optional(), + endPage: z.number().int().positive().optional(), + i: z.string().optional(), + o: z.string().optional(), + s: z.number().int().positive().optional(), + e: z.number().int().positive().optional(), + _: z.array(z.union([z.string(), z.number()])).optional(), + $0: z.string().optional() +}).transform((data) => ({ + input: data.input ?? data.i, + output: data.output ?? data.o, + dpi: data.dpi, + format: data.format, + startPage: data.startPage ?? data.s, + endPage: data.endPage ?? data.e +})).refine((data) => { + if (data.startPage !== undefined && data.endPage !== undefined) { + return data.startPage <= data.endPage; + } + return true; +}, { + message: "startPage must be less than or equal to endPage", + path: ["startPage"], }); diff --git a/packages/content/ref/pdf-to-images/package-lock.json b/packages/content/ref/pdf-to-images/package-lock.json index 31228b34..1f11fd85 100644 --- a/packages/content/ref/pdf-to-images/package-lock.json +++ b/packages/content/ref/pdf-to-images/package-lock.json @@ -1,11 +1,11 @@ { - "name": "mu", + "name": "@polymech/pdf", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "mu", + "name": "@polymech/pdf", "version": "1.0.0", "license": "ISC", "dependencies": { @@ -13,18 +13,694 @@ "mupdf": "^1.3.3", "tslog": "^4.9.3", "typescript": "^5.8.2", + "vitest": "^3.1.1", "yargs": "^17.7.2", "zod": "^3.24.2" }, + "bin": { + "pdf-to-images": "dist/index.js" + }, "devDependencies": { "@types/node": "^22.13.10" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz", + "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz", + "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz", + "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz", + "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz", + "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz", + "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz", + "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz", + "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz", + "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz", + "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz", + "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz", + "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz", + "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz", + "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz", + "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", + "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz", + "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz", + "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz", + "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz", + "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "license": "MIT" + }, "node_modules/@types/node": { "version": "22.13.10", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "undici-types": "~6.20.0" @@ -45,6 +721,112 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "license": "MIT" }, + "node_modules/@vitest/expect": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.1.tgz", + "integrity": "sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==", + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.1.tgz", + "integrity": "sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==", + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.1", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.1.tgz", + "integrity": "sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==", + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.1.tgz", + "integrity": "sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==", + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.1.1", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.1.tgz", + "integrity": "sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==", + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.1.tgz", + "integrity": "sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==", + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.1.tgz", + "integrity": "sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==", + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.1", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -69,6 +851,49 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -101,12 +926,84 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, + "node_modules/es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -116,6 +1013,52 @@ "node": ">=6" } }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -134,12 +1077,112 @@ "node": ">=8" } }, + "node_modules/loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/mupdf": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/mupdf/-/mupdf-1.3.3.tgz", "integrity": "sha512-uS/uqQZ1+3zSkaL5ngauT98o5gIIRtQPW54vYTVlqBYS0tho9TrjHr0RmAUJlp/XTJyghNhDUjD7l++EZkMyyA==", "license": "AGPL-3.0-or-later" }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -149,6 +1192,72 @@ "node": ">=0.10.0" } }, + "node_modules/rollup": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", + "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.40.0", + "@rollup/rollup-android-arm64": "4.40.0", + "@rollup/rollup-darwin-arm64": "4.40.0", + "@rollup/rollup-darwin-x64": "4.40.0", + "@rollup/rollup-freebsd-arm64": "4.40.0", + "@rollup/rollup-freebsd-x64": "4.40.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.0", + "@rollup/rollup-linux-arm-musleabihf": "4.40.0", + "@rollup/rollup-linux-arm64-gnu": "4.40.0", + "@rollup/rollup-linux-arm64-musl": "4.40.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-musl": "4.40.0", + "@rollup/rollup-linux-s390x-gnu": "4.40.0", + "@rollup/rollup-linux-x64-gnu": "4.40.0", + "@rollup/rollup-linux-x64-musl": "4.40.0", + "@rollup/rollup-win32-arm64-msvc": "4.40.0", + "@rollup/rollup-win32-ia32-msvc": "4.40.0", + "@rollup/rollup-win32-x64-msvc": "4.40.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "license": "ISC" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "license": "MIT" + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -175,6 +1284,61 @@ "node": ">=8" } }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinypool": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/tslog": { "version": "4.9.3", "resolved": "https://registry.npmjs.org/tslog/-/tslog-4.9.3.tgz", @@ -204,9 +1368,190 @@ "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true, + "devOptional": true, "license": "MIT" }, + "node_modules/vite": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.2.tgz", + "integrity": "sha512-ZSvGOXKGceizRQIZSz7TGJ0pS3QLlVY/9hwxVh17W3re67je1RKYzFHivZ/t0tubU78Vkyb9WnHPENSBCzbckg==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.3", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.12" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.1.tgz", + "integrity": "sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==", + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.0", + "es-module-lexer": "^1.6.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.1.tgz", + "integrity": "sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==", + "license": "MIT", + "dependencies": { + "@vitest/expect": "3.1.1", + "@vitest/mocker": "3.1.1", + "@vitest/pretty-format": "^3.1.1", + "@vitest/runner": "3.1.1", + "@vitest/snapshot": "3.1.1", + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", + "chai": "^5.2.0", + "debug": "^4.4.0", + "expect-type": "^1.2.0", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "std-env": "^3.8.1", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.1.1", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.1.1", + "@vitest/ui": "3.1.1", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/packages/content/ref/pdf-to-images/package.json b/packages/content/ref/pdf-to-images/package.json index fd1b5fce..28a86e2b 100644 --- a/packages/content/ref/pdf-to-images/package.json +++ b/packages/content/ref/pdf-to-images/package.json @@ -1,14 +1,25 @@ { - "name": "mu", + "name": "@polymech/pdf", "version": "1.0.0", "description": "", "main": "dist/index.js", - "scripts": { - "build": "tsc", - "start": "node dist/index.js" + "bin": { + "pdf-to-images": "dist/index.js" }, - "keywords": [], - "author": "", + "scripts": { + "dev": "tsc -p . --watch", + "build": "tsc", + "start": "node dist/index.js", + "test:pdf": "node dist/index.js convert -i tests/e5dc.pdf -o tests/e5dc/ --startPage 3 --endPage 5", + "test:basic": "vitest run" + }, + "keywords": [ + "pdf", + "images", + "convert", + "pdf-to-images" + ], + "author": "Polymech", "license": "ISC", "type": "module", "dependencies": { @@ -16,6 +27,7 @@ "mupdf": "^1.3.3", "tslog": "^4.9.3", "typescript": "^5.8.2", + "vitest": "^3.1.1", "yargs": "^17.7.2", "zod": "^3.24.2" }, diff --git a/packages/content/ref/pdf-to-images/src/commands/convert.ts b/packages/content/ref/pdf-to-images/src/commands/convert.ts index 06ad8b37..f85e5e8d 100644 --- a/packages/content/ref/pdf-to-images/src/commands/convert.ts +++ b/packages/content/ref/pdf-to-images/src/commands/convert.ts @@ -1,16 +1,17 @@ - import { Arguments } from 'yargs'; import { Logger } from 'tslog'; import { ConvertCommandSchema, ConvertCommandConfig } from '../types.js'; import { convertPdfToImages } from '../lib/pdf.js'; import { existsSync } from 'node:fs'; -import { dirname } from 'node:path'; +import { dirname, sep, extname, basename } from 'node:path'; import { mkdir, readFile } from 'node:fs/promises'; +import * as z from 'zod'; +import type { Options } from 'yargs'; export const command = 'convert'; export const desc = 'Convert PDF to images'; -export const builder = { +export const builder: { [key: string]: Options } = { input: { alias: 'i', type: 'string', @@ -20,7 +21,7 @@ export const builder = { output: { alias: 'o', type: 'string', - description: 'Output directory for images', + description: 'Output directory prefix for images', demandOption: true }, dpi: { @@ -30,13 +31,25 @@ export const builder = { }, format: { type: 'string', - choices: ['png', 'jpg'], + choices: ['png', 'jpg'] as const, default: 'png', description: 'Output image format' + }, + startPage: { + alias: 's', + type: 'number', + description: 'First page to convert (1-based)', + requiresArg: true + }, + endPage: { + alias: 'e', + type: 'number', + description: 'Last page to convert (1-based, inclusive)', + requiresArg: true } }; -export async function handler(argv: Arguments): Promise { +export async function handler(argv: Arguments): Promise { const logger = new Logger(); try { @@ -46,7 +59,20 @@ export async function handler(argv: Arguments): Promise { throw new Error(`Input file ${config.input} does not exist`); } - await mkdir(dirname(config.output), { recursive: true }); + // Ensure the full output directory path exists + // config.output is the prefix, e.g., "tests/e5dc/image" + // We need to create the directory part, e.g., "tests/e5dc/" + const outputDir = dirname(config.output); + // Check if output path itself ends with a separator or if the base name contains no extension + // This helps determine if the output path is intended as a directory. + const isOutputDir = config.output.endsWith(sep) || config.output.endsWith('/') || !extname(basename(config.output)); + const dirToCreate = isOutputDir ? config.output : outputDir; + + // Check if dirToCreate is not empty and not the root directory before creating + if (dirToCreate && dirToCreate !== '.' && dirToCreate !== '/' && dirToCreate !== sep) { + await mkdir(dirToCreate, { recursive: true }); + logger.info(`Ensured output directory exists: ${dirToCreate}`); + } logger.info(`Converting PDF ${config.input} to images...`); @@ -55,13 +81,20 @@ export async function handler(argv: Arguments): Promise { outputPathPrefix: config.output, dpi: config.dpi, format: config.format, + startPage: config.startPage, + endPage: config.endPage, logger }); logger.info('Conversion completed successfully'); logger.info(`Generated ${outputFiles.length} images`); } catch (error) { - logger.error('Error during conversion:', error); + if (error instanceof z.ZodError) { + logger.error('Invalid arguments:', error.flatten()); + } else { + const message = error instanceof Error ? error.message : String(error); + logger.error('Error during conversion:', message, error); + } process.exit(1); } } diff --git a/packages/content/ref/pdf-to-images/src/index.ts b/packages/content/ref/pdf-to-images/src/index.ts index 109c6cc9..380d7c7c 100644 --- a/packages/content/ref/pdf-to-images/src/index.ts +++ b/packages/content/ref/pdf-to-images/src/index.ts @@ -1,8 +1,19 @@ import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; +import * as convertCommand from './commands/convert.js'; +import type { CommandModule } from 'yargs'; +import type { ConvertCommandConfig } from './types.js'; + +const commandModule: CommandModule<{}, ConvertCommandConfig> = { + command: convertCommand.command, + describe: convertCommand.desc, + builder: convertCommand.builder, + handler: convertCommand.handler +}; yargs(hideBin(process.argv)) - .command(require('./commands/convert.js')) + .command(commandModule) .demandCommand(1, 'You need to specify a command') .strict() - .argv; + .help() + .parse(); diff --git a/packages/content/ref/pdf-to-images/src/lib/pdf.ts b/packages/content/ref/pdf-to-images/src/lib/pdf.ts index 6b78a510..a8f4e5b5 100644 --- a/packages/content/ref/pdf-to-images/src/lib/pdf.ts +++ b/packages/content/ref/pdf-to-images/src/lib/pdf.ts @@ -8,6 +8,8 @@ export interface PdfToImageOptions { outputPathPrefix: string; dpi: number; format: ImageFormat; + startPage?: number; + endPage?: number; logger?: Logger; } @@ -22,9 +24,26 @@ export async function convertPdfToImages( const doc = mupdf.Document.openDocument(pdfData, 'pdf'); const pageCount = doc.countPages(); - logger.info(`Processing ${pageCount} pages`); + // Validate and determine page range (adjusting for 0-based index) + const start = (options.startPage ?? 1) - 1; + const end = (options.endPage ?? pageCount) - 1; - for (let i = 0; i < pageCount; i++) { + if (start < 0 || start >= pageCount) { + throw new Error(`startPage (${options.startPage}) is out of valid range (1-${pageCount})`); + } + if (end < 0 || end >= pageCount) { + throw new Error(`endPage (${options.endPage}) is out of valid range (1-${pageCount})`); + } + if (start > end) { + // This should also be caught by Zod schema, but good to double-check + throw new Error(`startPage (${options.startPage}) cannot be greater than endPage (${options.endPage})`); + } + + const numPagesToProcess = end - start + 1; + logger.info(`Processing pages ${start + 1} to ${end + 1} (${numPagesToProcess} pages) of ${pageCount} total`); + + for (let i = start; i <= end; i++) { + const pageNumber = i + 1; // User-facing page number (1-based) const page = doc.loadPage(i); const pixmap = page.toPixmap( [1, 0, 0, 1, 0, 0], @@ -32,14 +51,14 @@ export async function convertPdfToImages( false ); - const outputPath = `${options.outputPathPrefix}_${i + 1}.${options.format}`; + const outputPath = `${options.outputPathPrefix}_${pageNumber}.${options.format}`; const imageData = options.format === 'png' ? pixmap.asPNG() - : pixmap.asJPEG(90, false); + : pixmap.asJPEG(100, false); await writeFile(outputPath, imageData); outputFiles.push(outputPath); - logger.info(`Converted page ${i + 1} to ${outputPath}`); + logger.info(`Converted page ${pageNumber} to ${outputPath}`); } return outputFiles; diff --git a/packages/content/ref/pdf-to-images/src/types.ts b/packages/content/ref/pdf-to-images/src/types.ts index 6dc21045..4dcd20c6 100644 --- a/packages/content/ref/pdf-to-images/src/types.ts +++ b/packages/content/ref/pdf-to-images/src/types.ts @@ -1,22 +1,35 @@ - import { z } from 'zod'; import type { ImageFormat } from './lib/pdf.js'; export const ConvertCommandSchema = z.object({ input: z.string(), output: z.string(), - dpi: z.number().default(300), - format: z.enum(['png', 'jpg'] as const).default('png') + dpi: z.number().int().positive().default(300), + format: z.enum(['png', 'jpg']).default('png'), + startPage: z.number().int().positive().optional(), + endPage: z.number().int().positive().optional(), + i: z.string().optional(), + o: z.string().optional(), + s: z.number().int().positive().optional(), + e: z.number().int().positive().optional(), + _: z.array(z.union([z.string(), z.number()])).optional(), + $0: z.string().optional() +}).transform((data) => ({ + input: data.input ?? data.i, + output: data.output ?? data.o, + dpi: data.dpi, + format: data.format, + startPage: data.startPage ?? data.s, + endPage: data.endPage ?? data.e +})).refine((data) => { + if (data.startPage !== undefined && data.endPage !== undefined) { + return data.startPage <= data.endPage; + } + return true; +}, { + message: "startPage must be less than or equal to endPage", + path: ["startPage"], }); export type ConvertCommandConfig = z.infer; -export const ConfigSchema = z.object({ - input: z.string().min(1), - output: z.string().min(1), - dpi: z.number().int().positive().default(300), - format: z.enum(['png', 'jpg']).default('png') -}); - -export type Config = z.infer; - diff --git a/packages/content/ref/pdf-to-images/tests/cli/convert.test.ts b/packages/content/ref/pdf-to-images/tests/cli/convert.test.ts new file mode 100644 index 00000000..c6fac219 --- /dev/null +++ b/packages/content/ref/pdf-to-images/tests/cli/convert.test.ts @@ -0,0 +1,9 @@ +// Test suite for src/commands/convert.ts +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; + +// TODO: Add tests +describe('Convert Command CLI', () => { + it('should be implemented', () => { + expect(true).toBe(true); // Placeholder + }); +}); \ No newline at end of file diff --git a/packages/content/ref/pdf-to-images/tests/e5dc.pdf b/packages/content/ref/pdf-to-images/tests/e5dc.pdf new file mode 100644 index 00000000..9b98d3c6 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc.pdf differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_10.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_10.jpg new file mode 100644 index 00000000..5b7af8ec Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_10.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_100.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_100.jpg new file mode 100644 index 00000000..cbefcd9c Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_100.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_101.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_101.jpg new file mode 100644 index 00000000..1cc98bf0 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_101.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_102.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_102.jpg new file mode 100644 index 00000000..fb9b621f Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_102.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_103.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_103.jpg new file mode 100644 index 00000000..ea2a47ca Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_103.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_104.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_104.jpg new file mode 100644 index 00000000..c2e2f9b7 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_104.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_105.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_105.jpg new file mode 100644 index 00000000..acab87a6 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_105.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_106.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_106.jpg new file mode 100644 index 00000000..06a283f3 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_106.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_107.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_107.jpg new file mode 100644 index 00000000..ceaf636d Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_107.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_108.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_108.jpg new file mode 100644 index 00000000..62561a2c Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_108.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_109.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_109.jpg new file mode 100644 index 00000000..722c8875 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_109.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_11.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_11.jpg new file mode 100644 index 00000000..baac1eac Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_11.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_110.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_110.jpg new file mode 100644 index 00000000..63603650 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_110.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_111.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_111.jpg new file mode 100644 index 00000000..cbd7174f Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_111.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_112.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_112.jpg new file mode 100644 index 00000000..3781ba65 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_112.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_113.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_113.jpg new file mode 100644 index 00000000..adaf6578 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_113.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_114.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_114.jpg new file mode 100644 index 00000000..31fe0d10 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_114.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_115.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_115.jpg new file mode 100644 index 00000000..e36be083 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_115.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_116.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_116.jpg new file mode 100644 index 00000000..e5fee584 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_116.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_117.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_117.jpg new file mode 100644 index 00000000..ae8c2088 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_117.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_118.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_118.jpg new file mode 100644 index 00000000..a5722a3a Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_118.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_119.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_119.jpg new file mode 100644 index 00000000..86792853 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_119.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_12.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_12.jpg new file mode 100644 index 00000000..8cbfbb89 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_12.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_120.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_120.jpg new file mode 100644 index 00000000..db3a6f03 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_120.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_121.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_121.jpg new file mode 100644 index 00000000..32b997c6 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_121.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_122.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_122.jpg new file mode 100644 index 00000000..a522873b Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_122.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_123.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_123.jpg new file mode 100644 index 00000000..5ae74cab Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_123.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_124.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_124.jpg new file mode 100644 index 00000000..e5290803 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_124.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_125.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_125.jpg new file mode 100644 index 00000000..94506155 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_125.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_126.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_126.jpg new file mode 100644 index 00000000..ccbbf741 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_126.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_127.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_127.jpg new file mode 100644 index 00000000..085051dc Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_127.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_128.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_128.jpg new file mode 100644 index 00000000..c2d1c1d9 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_128.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_129.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_129.jpg new file mode 100644 index 00000000..68da5ec4 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_129.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_13.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_13.jpg new file mode 100644 index 00000000..2acce812 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_13.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_130.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_130.jpg new file mode 100644 index 00000000..27403bc9 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_130.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_131.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_131.jpg new file mode 100644 index 00000000..931795db Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_131.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_132.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_132.jpg new file mode 100644 index 00000000..b90a2922 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_132.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_133.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_133.jpg new file mode 100644 index 00000000..9fff7462 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_133.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_134.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_134.jpg new file mode 100644 index 00000000..6e589d8f Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_134.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_135.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_135.jpg new file mode 100644 index 00000000..96327714 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_135.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_136.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_136.jpg new file mode 100644 index 00000000..52f9b07b Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_136.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_137.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_137.jpg new file mode 100644 index 00000000..8908fbcc Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_137.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_138.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_138.jpg new file mode 100644 index 00000000..ebdbaefe Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_138.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_139.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_139.jpg new file mode 100644 index 00000000..8ba5cc54 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_139.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_14.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_14.jpg new file mode 100644 index 00000000..169b8723 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_14.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_140.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_140.jpg new file mode 100644 index 00000000..65ac4b75 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_140.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_141.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_141.jpg new file mode 100644 index 00000000..06cfd8b5 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_141.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_142.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_142.jpg new file mode 100644 index 00000000..19e21deb Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_142.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_143.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_143.jpg new file mode 100644 index 00000000..7dd2093d Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_143.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_144.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_144.jpg new file mode 100644 index 00000000..78f37888 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_144.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_145.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_145.jpg new file mode 100644 index 00000000..58f37682 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_145.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_146.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_146.jpg new file mode 100644 index 00000000..2f466142 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_146.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_147.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_147.jpg new file mode 100644 index 00000000..9dcade8c Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_147.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_148.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_148.jpg new file mode 100644 index 00000000..32c20435 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_148.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_149.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_149.jpg new file mode 100644 index 00000000..e5ec5b3c Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_149.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_15.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_15.jpg new file mode 100644 index 00000000..42749853 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_15.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_150.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_150.jpg new file mode 100644 index 00000000..29eee934 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_150.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_151.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_151.jpg new file mode 100644 index 00000000..208d4749 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_151.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_152.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_152.jpg new file mode 100644 index 00000000..95b3bfb3 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_152.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_153.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_153.jpg new file mode 100644 index 00000000..d876bcc4 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_153.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_154.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_154.jpg new file mode 100644 index 00000000..20b56750 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_154.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_155.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_155.jpg new file mode 100644 index 00000000..4ab349d3 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_155.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_156.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_156.jpg new file mode 100644 index 00000000..72092b3a Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_156.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_157.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_157.jpg new file mode 100644 index 00000000..a8391109 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_157.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_158.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_158.jpg new file mode 100644 index 00000000..a78465e1 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_158.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_159.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_159.jpg new file mode 100644 index 00000000..3dd899b9 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_159.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_16.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_16.jpg new file mode 100644 index 00000000..ae5a3008 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_16.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_160.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_160.jpg new file mode 100644 index 00000000..f98b846d Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_160.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_161.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_161.jpg new file mode 100644 index 00000000..e53aa804 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_161.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_162.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_162.jpg new file mode 100644 index 00000000..20af7868 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_162.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_163.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_163.jpg new file mode 100644 index 00000000..fb3c5817 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_163.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_164.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_164.jpg new file mode 100644 index 00000000..193c0eb0 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_164.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_165.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_165.jpg new file mode 100644 index 00000000..2f05a656 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_165.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_166.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_166.jpg new file mode 100644 index 00000000..c7885389 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_166.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_167.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_167.jpg new file mode 100644 index 00000000..c75c0d7c Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_167.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_168.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_168.jpg new file mode 100644 index 00000000..24cc9534 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_168.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_169.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_169.jpg new file mode 100644 index 00000000..125f6aac Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_169.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_17.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_17.jpg new file mode 100644 index 00000000..553773b0 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_17.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_170.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_170.jpg new file mode 100644 index 00000000..6356ef4f Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_170.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_171.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_171.jpg new file mode 100644 index 00000000..b6a2e1d7 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_171.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_172.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_172.jpg new file mode 100644 index 00000000..55286c5f Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_172.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_173.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_173.jpg new file mode 100644 index 00000000..9f3d916a Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_173.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_174.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_174.jpg new file mode 100644 index 00000000..4c89947a Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_174.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_175.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_175.jpg new file mode 100644 index 00000000..cd59cbc4 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_175.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_176.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_176.jpg new file mode 100644 index 00000000..43edde65 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_176.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_177.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_177.jpg new file mode 100644 index 00000000..7821b56c Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_177.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_178.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_178.jpg new file mode 100644 index 00000000..340cf217 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_178.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_179.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_179.jpg new file mode 100644 index 00000000..b1c56d58 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_179.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_18.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_18.jpg new file mode 100644 index 00000000..5ecaa927 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_18.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_180.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_180.jpg new file mode 100644 index 00000000..06807fa3 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_180.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_181.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_181.jpg new file mode 100644 index 00000000..44fdcfb1 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_181.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_182.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_182.jpg new file mode 100644 index 00000000..e778d8bc Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_182.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_183.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_183.jpg new file mode 100644 index 00000000..74c3fbe9 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_183.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_184.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_184.jpg new file mode 100644 index 00000000..6d4d4d96 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_184.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_185.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_185.jpg new file mode 100644 index 00000000..ee267db6 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_185.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_186.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_186.jpg new file mode 100644 index 00000000..9bf81edb Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_186.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_19.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_19.jpg new file mode 100644 index 00000000..f524b73e Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_19.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_20.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_20.jpg new file mode 100644 index 00000000..2c4536c1 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_20.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_21.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_21.jpg new file mode 100644 index 00000000..b8d7f098 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_21.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_22.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_22.jpg new file mode 100644 index 00000000..9e65509f Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_22.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_23.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_23.jpg new file mode 100644 index 00000000..8ac53f00 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_23.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_24.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_24.jpg new file mode 100644 index 00000000..dd801960 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_24.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_25.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_25.jpg new file mode 100644 index 00000000..828b80d2 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_25.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_26.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_26.jpg new file mode 100644 index 00000000..d56b4c46 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_26.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_27.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_27.jpg new file mode 100644 index 00000000..4d1f8692 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_27.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_28.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_28.jpg new file mode 100644 index 00000000..4f797e60 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_28.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_29.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_29.jpg new file mode 100644 index 00000000..3da92420 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_29.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_3.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_3.jpg new file mode 100644 index 00000000..db7de2bc Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_3.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_30.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_30.jpg new file mode 100644 index 00000000..6d14fccb Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_30.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_31.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_31.jpg new file mode 100644 index 00000000..e78d230f Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_31.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_32.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_32.jpg new file mode 100644 index 00000000..e34a43c8 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_32.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_33.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_33.jpg new file mode 100644 index 00000000..9b4387d3 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_33.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_34.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_34.jpg new file mode 100644 index 00000000..2555e98c Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_34.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_35.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_35.jpg new file mode 100644 index 00000000..ce701999 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_35.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_36.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_36.jpg new file mode 100644 index 00000000..af2ed2b0 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_36.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_37.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_37.jpg new file mode 100644 index 00000000..7b98f870 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_37.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_38.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_38.jpg new file mode 100644 index 00000000..312dbf02 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_38.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_39.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_39.jpg new file mode 100644 index 00000000..eb2a70a5 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_39.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_4.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_4.jpg new file mode 100644 index 00000000..158bfd6d Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_4.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_40.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_40.jpg new file mode 100644 index 00000000..1fce690d Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_40.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_41.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_41.jpg new file mode 100644 index 00000000..3af4bc79 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_41.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_42.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_42.jpg new file mode 100644 index 00000000..5714350f Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_42.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_43.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_43.jpg new file mode 100644 index 00000000..ba67c0d8 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_43.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_44.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_44.jpg new file mode 100644 index 00000000..6c935ba7 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_44.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_45.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_45.jpg new file mode 100644 index 00000000..b8e78dbc Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_45.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_46.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_46.jpg new file mode 100644 index 00000000..28b4bc78 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_46.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_47.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_47.jpg new file mode 100644 index 00000000..72b4c468 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_47.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_48.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_48.jpg new file mode 100644 index 00000000..e721b517 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_48.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_49.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_49.jpg new file mode 100644 index 00000000..8f693577 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_49.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_5.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_5.jpg new file mode 100644 index 00000000..063b91bb Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_5.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_50.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_50.jpg new file mode 100644 index 00000000..c412be0e Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_50.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_51.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_51.jpg new file mode 100644 index 00000000..94b41da4 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_51.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_52.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_52.jpg new file mode 100644 index 00000000..6c2d0feb Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_52.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_53.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_53.jpg new file mode 100644 index 00000000..4d300e22 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_53.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_54.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_54.jpg new file mode 100644 index 00000000..d2b01ca8 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_54.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_55.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_55.jpg new file mode 100644 index 00000000..b0311b39 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_55.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_56.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_56.jpg new file mode 100644 index 00000000..cc73c1ed Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_56.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_57.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_57.jpg new file mode 100644 index 00000000..91c52532 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_57.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_58.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_58.jpg new file mode 100644 index 00000000..4bb208e1 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_58.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_59.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_59.jpg new file mode 100644 index 00000000..bc832e84 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_59.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_6.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_6.jpg new file mode 100644 index 00000000..d5047413 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_6.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_60.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_60.jpg new file mode 100644 index 00000000..9ffc7e9b Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_60.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_61.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_61.jpg new file mode 100644 index 00000000..45b919a6 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_61.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_62.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_62.jpg new file mode 100644 index 00000000..83288259 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_62.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_63.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_63.jpg new file mode 100644 index 00000000..c6b12c8d Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_63.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_64.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_64.jpg new file mode 100644 index 00000000..45a0e7b6 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_64.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_65.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_65.jpg new file mode 100644 index 00000000..afd15a40 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_65.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_66.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_66.jpg new file mode 100644 index 00000000..6136cc80 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_66.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_67.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_67.jpg new file mode 100644 index 00000000..a10a52ed Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_67.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_68.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_68.jpg new file mode 100644 index 00000000..924affa1 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_68.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_69.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_69.jpg new file mode 100644 index 00000000..e12c4570 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_69.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_7.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_7.jpg new file mode 100644 index 00000000..ad717e5c Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_7.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_70.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_70.jpg new file mode 100644 index 00000000..3deec874 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_70.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_71.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_71.jpg new file mode 100644 index 00000000..9de1f1f7 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_71.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_72.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_72.jpg new file mode 100644 index 00000000..527d5f3e Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_72.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_73.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_73.jpg new file mode 100644 index 00000000..1984e24c Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_73.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_74.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_74.jpg new file mode 100644 index 00000000..bddba958 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_74.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_75.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_75.jpg new file mode 100644 index 00000000..9ecf3777 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_75.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_76.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_76.jpg new file mode 100644 index 00000000..bb0850c1 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_76.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_77.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_77.jpg new file mode 100644 index 00000000..1ba19586 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_77.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_78.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_78.jpg new file mode 100644 index 00000000..c01656df Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_78.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_79.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_79.jpg new file mode 100644 index 00000000..a7fde7ef Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_79.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_8.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_8.jpg new file mode 100644 index 00000000..0b6f0bf0 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_8.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_80.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_80.jpg new file mode 100644 index 00000000..5d54c500 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_80.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_81.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_81.jpg new file mode 100644 index 00000000..d1ed76e0 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_81.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_82.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_82.jpg new file mode 100644 index 00000000..870f854f Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_82.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_83.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_83.jpg new file mode 100644 index 00000000..95511a37 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_83.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_84.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_84.jpg new file mode 100644 index 00000000..04959175 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_84.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_85.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_85.jpg new file mode 100644 index 00000000..179727c1 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_85.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_86.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_86.jpg new file mode 100644 index 00000000..50b0ead5 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_86.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_87.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_87.jpg new file mode 100644 index 00000000..e67f2cbb Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_87.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_88.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_88.jpg new file mode 100644 index 00000000..ee4d18df Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_88.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_89.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_89.jpg new file mode 100644 index 00000000..55afa563 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_89.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_9.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_9.jpg new file mode 100644 index 00000000..bf2e3dfd Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_9.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_90.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_90.jpg new file mode 100644 index 00000000..c435ad34 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_90.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_91.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_91.jpg new file mode 100644 index 00000000..9a1787ef Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_91.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_92.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_92.jpg new file mode 100644 index 00000000..dd71c7c7 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_92.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_93.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_93.jpg new file mode 100644 index 00000000..8f4a5c17 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_93.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_94.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_94.jpg new file mode 100644 index 00000000..b26b4b6b Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_94.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_95.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_95.jpg new file mode 100644 index 00000000..539d409a Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_95.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_96.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_96.jpg new file mode 100644 index 00000000..4d858e0f Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_96.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_97.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_97.jpg new file mode 100644 index 00000000..2365b99d Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_97.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_98.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_98.jpg new file mode 100644 index 00000000..54b6cca2 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_98.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/e5dc/_99.jpg b/packages/content/ref/pdf-to-images/tests/e5dc/_99.jpg new file mode 100644 index 00000000..0f205575 Binary files /dev/null and b/packages/content/ref/pdf-to-images/tests/e5dc/_99.jpg differ diff --git a/packages/content/ref/pdf-to-images/tests/lib/pdf.test.ts b/packages/content/ref/pdf-to-images/tests/lib/pdf.test.ts new file mode 100644 index 00000000..1f900576 --- /dev/null +++ b/packages/content/ref/pdf-to-images/tests/lib/pdf.test.ts @@ -0,0 +1,10 @@ +// Test suite for src/lib/pdf.ts +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { convertPdfToImages } from '../../src/lib/pdf'; + +// TODO: Add tests +describe('convertPdfToImages Function', () => { + it('should be implemented', () => { + expect(typeof convertPdfToImages).toBe('function'); // Placeholder + }); +}); \ No newline at end of file