{"_id":"@febbyrg/pdf-decomposer","_rev":"26-eb569040451630e182d8cddaa9e1fa99","name":"@febbyrg/pdf-decomposer","dist-tags":{"latest":"1.6.3"},"versions":{"1.0.0":{"name":"@febbyrg/pdf-decomposer","version":"1.0.0","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.0.0","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"1bccf7e9af984c21ffe17efc07ca8b01c0e63720","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.0.0.tgz","fileCount":147,"integrity":"sha512-G7i1hDitxGfzD6voqLbCWk2s9qHkbCurgIiWJXNI1uog6Y6iaz9sdeSQhmwDcWHHWkgho1Ag2BqsZQk+CWaJ1w==","signatures":[{"sig":"MEQCIDbyPfKz8TjLnAuMYSbzJneUi3WI2DElgpNl6JkO3RD2AiAFgZ+Y+LD+cP/vSv3dzYrSlBHpbEJ+D6In9kX/bA3GZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":536209},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"c2eb6068cd7b0e26bc19e45993ed1bf13b99dfb8","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","release":"npm version patch && npm publish","version":"npm run build && git add -A dist","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:major":"npm version major && npm publish","release:minor":"npm version minor && npm publish","prepublishOnly":"npm run build && npm test && npm run lint","test:screenshot":"npx ts-node scripts/test-screenshot.ts"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.0.0_1756723176429_0.8703243239984855","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@febbyrg/pdf-decomposer","version":"1.0.1","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.0.1","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"c8af447d538a90a9c316ed3eb108461c091bd1ff","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.0.1.tgz","fileCount":147,"integrity":"sha512-n3BtI8SdKZdfDI7M/+6MbEiULr433uaqpdL46rDeKR6uYhIIKms0+Xjw5oO2gXfWu6GZ4J12QrW/ihL3hLkM0g==","signatures":[{"sig":"MEUCIQD2inb+TCt65+5KH1a3q72m5pSUvF0lCkjZMK63gkFcTwIgbJ6VJXxPvMk97p0yu3gU0Sp7F+vKdZUc3cU4Ehchh4A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":536469},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"c1e20f76376b29637772c4352ee35703b73b0e13","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","release":"npm version patch && npm publish","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","build:watch":"tsc --watch","postversion":"git push && git push --tags","publish:npm":"npm publish --registry=https://registry.npmjs.org/","publish:both":"npm run publish:npm && npm run publish:github","release:major":"npm version major && npm publish","release:minor":"npm version minor && npm publish","prepublishOnly":"npm run build && npm test && npm run lint","publish:github":"npm publish --registry=https://npm.pkg.github.com/","test:screenshot":"npx ts-node scripts/test-screenshot.ts"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.0.1_1756727022623_0.6124198647305223","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@febbyrg/pdf-decomposer","version":"1.0.2","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.0.2","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"4f2e95f511f290543e4e8879a20ff2c39f90fd25","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.0.2.tgz","fileCount":147,"integrity":"sha512-B3wmXa4/tUlXuLvAg7huSBSWYPyor4ItE+ohabj+7gQDNCUwZcZlkq+Umxv2kvhdXkTGraQd4xR4FMhVoDMotA==","signatures":[{"sig":"MEYCIQCI/KHT2dxiwTwcqW9WK/Tfiy3qxr40k1RGOhaoLPT54gIhAJfqyauRv8qkToP77HkvPIPV0chxxA4Z1UK+h8JJfIx6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":558022},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"ef799bb563d939fb1664078e44798b19adf67277","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","release":"npm version patch && npm publish","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","build:watch":"tsc --watch","postversion":"git push && git push --tags","publish:npm":"npm config set @febbyrg:registry https://registry.npmjs.org/ && npm publish --access=public","publish:both":"npm run publish:npm && npm run publish:github","setup:verify":"./scripts/setup-publishing.sh","release:major":"npm version major && npm publish","release:minor":"npm version minor && npm publish","prepublishOnly":"npm run build && npm test && npm run lint","publish:github":"npm config set @febbyrg:registry https://npm.pkg.github.com/ && npm publish --access=public","test:screenshot":"npx ts-node scripts/test-screenshot.ts","setup:publishing":"./scripts/setup-publishing.sh"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.0.2_1758616718764_0.5431580273758512","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@febbyrg/pdf-decomposer","version":"1.0.3","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.0.3","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"dc20505fc5051d372c2b98e4e9201bd62d800942","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.0.3.tgz","fileCount":147,"integrity":"sha512-KGCuJSo5Z2pmPTfkY8QgwWvXfXvYVzjefd/cnlHcJJaBd8QAj1aqECPJHNQD/lcsm5S3mThMXmmSWvhfkszR/w==","signatures":[{"sig":"MEUCIQCgK8U1sQ8DK3H/lh7eVPmZobXDJFt4AufAQPXR20bcIgIgPTZ5Dk/OYdH22Sg7yrmtjt8zhIIdAv8eJhxHX3VNQtU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":560202},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"eaf34f23fe0d539512f8321231ba90534f7cefdd","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","release":"npm version patch && npm publish","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","build:watch":"tsc --watch","postversion":"git push && git push --tags","publish:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public && git checkout .npmrc","publish:both":"npm run publish:npm && npm run publish:github","setup:verify":"./scripts/setup-publishing.sh","release:major":"npm version major && npm publish","release:minor":"npm version minor && npm publish","prepublishOnly":"npm run build && npm test && npm run lint","publish:github":"cp .npmrc.github .npmrc && npm publish --access=public && git checkout .npmrc","test:screenshot":"npx ts-node scripts/test-screenshot.ts","setup:publishing":"./scripts/setup-publishing.sh"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.0.3_1758626836429_0.2813639298623791","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@febbyrg/pdf-decomposer","version":"1.0.4","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.0.4","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"b7182c88f609038afda202999b9b12425f0d7ea0","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.0.4.tgz","fileCount":147,"integrity":"sha512-5zdJdGhtrrlCAch20RNkxlRp4yk2iOGWz4KkaQFDtp3pRiMupT93W3vMMV/bmis4+d9IEMmmN6fGt1d1P3u0bg==","signatures":[{"sig":"MEUCIEgjYnzyJnJT7LPVxt+jX62h06cyr9Us9UPhl880aR89AiEA0K8QmgIrOUR7cgIzVUFFDfFtnBRxU2G7HDHXPrToqUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":573349},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"733633164f7b079cb2d387836f57dade32c94609","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","release":"npm version patch && npm publish","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","build:watch":"tsc --watch","postversion":"git push && git push --tags","publish:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","publish:both":"npm run publish:npm && npm run publish:github","setup:verify":"./scripts/setup-publishing.sh","release:major":"npm version major && npm publish","release:minor":"npm version minor && npm publish","prepublishOnly":"npm run build && npm test && npm run lint","publish:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:screenshot":"npx ts-node scripts/test-screenshot.ts","setup:publishing":"./scripts/setup-publishing.sh"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.0.4_1758709181258_0.6273371697348049","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@febbyrg/pdf-decomposer","version":"1.0.5","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.0.5","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"e73bc4bb1ebcba1d6693afe5ecbe5263940db480","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.0.5.tgz","fileCount":147,"integrity":"sha512-egAF2NqJIRvaqo1qNZdWremh5ORG4bOde7kov09uct0ENBBdmCZ+FBHBiHZZa949I2wj3PB8b+DrSJPNEtTU8Q==","signatures":[{"sig":"MEUCIHzxlIY4Gn5kzHt+1oGmql9Yk+bmPH/WK4agdElT3uEHAiEA8bs38mGNcth3cOpXUfWX7UJZPYznJKMNTRfNxxm5I2A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":615216},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"a83a5af27e7104b2a9a3ea289f19e885d15e5375","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","release":"npm version patch && npm publish","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","build:watch":"tsc --watch","postversion":"git push && git push --tags","publish:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","publish:both":"npm run publish:npm && npm run publish:github","setup:verify":"./scripts/setup-publishing.sh","release:major":"npm version major && npm publish","release:minor":"npm version minor && npm publish","prepublishOnly":"npm run build && npm test && npm run lint","publish:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:screenshot":"npx ts-node scripts/test-screenshot.ts","setup:publishing":"./scripts/setup-publishing.sh"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.0.5_1759124414161_0.6280388668306642","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@febbyrg/pdf-decomposer","version":"1.0.6","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.0.6","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"e839ff03eac01f74081a29352e37432485d3dfa6","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.0.6.tgz","fileCount":147,"integrity":"sha512-OYsml+KR57lN4DVmyGKEhGcb3RpcCTGETqtTn7fUe+L6y2eKhXwWU4wqCqY6uiEaChST1wHPxGgPE9DfvV1jHA==","signatures":[{"sig":"MEYCIQCbAbRS0n0SRQjnMH20DgKctuoZ69E2yqOkatZ7Sa/lbAIhAID9kytPjRghSTLIIVKj4yjrura+Rh3/JGjSqXfliI2T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":627295},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"004316cc2cc6b5c52e8464e90fad0550ce2ff8dd","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","release":"npm version patch && npm publish","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","build:watch":"tsc --watch","postversion":"git push && git push --tags","publish:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","publish:both":"npm run publish:npm && npm run publish:github","setup:verify":"./scripts/setup-publishing.sh","release:major":"npm version major && npm publish","release:minor":"npm version minor && npm publish","prepublishOnly":"npm run build && npm test && npm run lint","publish:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:screenshot":"npx ts-node scripts/test-screenshot.ts","setup:publishing":"./scripts/setup-publishing.sh"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.0.6_1765959209813_0.30605037069310703","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@febbyrg/pdf-decomposer","version":"1.0.7","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.0.7","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"258c02126f5aa24a343f50a4bc3f3864e900c707","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.0.7.tgz","fileCount":147,"integrity":"sha512-FSlUBg/6G1z05a0XPFVAVJ1VHPkUNtz0mauNp9opA8fW/6inPULPJuqhZRrBAlejug+37aVo6bL72rXG72l2gQ==","signatures":[{"sig":"MEQCICaAq5K5jVs0MqPQusdM0yErqKicEjB/Vk2SWIndg7z3AiACKcVkDEmBoDw4K8BTye1L1FAmTSdkPSIUWcwuYcHjZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":664059},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"0296e7fbd86bfe7d068645f67708dab57b2e0b6e","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","publish":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","build:watch":"tsc --watch","postversion":"git push && git push --tags","publish:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","publish:both":"npm run publish:npm && npm run publish:github","publish:major":"./scripts/publish.sh major","publish:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","publish:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:screenshot":"npx ts-node scripts/test-screenshot.ts"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.0.7_1768894888557_0.8373093710686133","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@febbyrg/pdf-decomposer","version":"1.0.8","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.0.8","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"6b0d7bf6ba80f093a16eb4565f426dc90b5abb6f","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.0.8.tgz","fileCount":147,"integrity":"sha512-SkM8KP2TEliK69KBKTEPW5uRdMyJ+1ntvfcrfuV1awWiwdnuH6bohN+YIhAolJGDr1K3a3zSBZFmABIb5l8zng==","signatures":[{"sig":"MEQCIEnesUrVN6kTFPCZXI+cm7vSdm7WWwZpX8HZ8+MScDAPAiAglE8Nfm3+XtFlBxzPWqlQNVSWwWmWnTYqldTg9mGRwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":663844},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"e57d364f0e0c14e10b09c0949e5710b426222a0c","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","publish":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","build:watch":"tsc --watch","postversion":"git push && git push --tags","publish:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","publish:both":"npm run publish:npm && npm run publish:github","publish:major":"./scripts/publish.sh major","publish:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","publish:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:screenshot":"npx ts-node scripts/test-screenshot.ts"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.0.8_1768896056400_0.4049232797035971","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@febbyrg/pdf-decomposer","version":"1.0.9","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.0.9","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"96a93ef025f769d6a1ef89345b804cf08aca70a5","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.0.9.tgz","fileCount":147,"integrity":"sha512-gUnznbIH7305XZGy9RPsT6wpUPhTafh733XNERbMVGyj4HLqHirjbDOG6Sw/8CSYOwNSOxjyKHje46kSNlSCrw==","signatures":[{"sig":"MEUCICGQSMwcFwSDgG5gegYK8FOHjksQnc6v+fRWJoWBWDNTAiEA7QwXyQexZQD3gwazO7CLvuYSDPjzUBejQOqenkrzG1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":663199},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"775f8a0c061485140d84d832ab111fe5f59dd74a","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","publish":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","build:watch":"tsc --watch","postversion":"git push && git push --tags","publish:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","publish:both":"npm run publish:npm && npm run publish:github","publish:major":"./scripts/publish.sh major","publish:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","publish:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:screenshot":"npx ts-node scripts/test-screenshot.ts"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.0.9_1768896974241_0.9088884363975915","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@febbyrg/pdf-decomposer","version":"1.0.10","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.0.10","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"f604ac15b2589b53ab3677638fc9fb84eb92b060","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.0.10.tgz","fileCount":147,"integrity":"sha512-2ImuKRKtKja1frzn1uppjSkRwTQGhQEhy2daZgseuGPd3h+puYVEOAUg7th8hbeQBGeBFu3n40sFZ5h8iI5+uA==","signatures":[{"sig":"MEYCIQCxy13FmSUveBvIWjj3t+fiB6vqFEBvHEyMFI9EGo5AowIhAKLISkIAxFCFp7hsTmfggr2xlqZWjyLYY4ZtNHqdFyAd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":669599},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"637606e557bd35afe290972561f5b13806400719","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","publish":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","build:watch":"tsc --watch","postversion":"git push && git push --tags","publish:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","publish:both":"npm run publish:npm && npm run publish:github","publish:major":"./scripts/publish.sh major","publish:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","publish:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:screenshot":"npx ts-node scripts/test-screenshot.ts"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.0.10_1776042426037_0.01601169991282525","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@febbyrg/pdf-decomposer","version":"1.0.11","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.0.11","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"f7a3bf4d67e225b8bbd36ba63783b7a2267ae91f","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.0.11.tgz","fileCount":147,"integrity":"sha512-/+uynP6E8YyTweZlOX2opNTWrB5GG8VoSETJe6OHGwce2g6dMIwSX+DBma62EvAZwqefdCpzkv/JImAXB6f3kA==","signatures":[{"sig":"MEUCIAfynQzSNfnSu83Hh9DJ3S21ol1/P370WRtPGAZE/E1OAiEA3S6hCD7xsSdUEYO4JNp9+VuzYVLRneNFYGkWulsKdcY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":669835},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"bb70da0bde22f9b7f4b3a5302a34b244d1e38cd3","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","publish":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","build:watch":"tsc --watch","postversion":"git push && git push --tags","publish:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","publish:both":"npm run publish:npm && npm run publish:github","publish:major":"./scripts/publish.sh major","publish:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","publish:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:screenshot":"npx ts-node scripts/test-screenshot.ts"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"10.8.2","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"20.19.5","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.0.11_1776661371310_0.5683390173262564","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@febbyrg/pdf-decomposer","version":"1.1.0","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.1.0","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"0bf59706862e19df28fe5f0a1a4dda55f43c984e","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.1.0.tgz","fileCount":159,"integrity":"sha512-22ysRNpyMBiDNlHNpfpDXJz21rN2XlsR8cYf98JiXhUhtFB7AXhusMsDQWsQU9B7nxkYZmn5MmGk2cTiz2J52g==","signatures":[{"sig":"MEYCIQCw1zxsvYDPj2+vTSQHMOBeZKayj4HSpIXS6xaK21FzAAIhAPOY77AZ5i6QJlhE1iPiS28lAyA7CQ2sh70XwluSJIA3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":746928},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"ea8dd1619014078a6a4d58b700f3774ff0d78c8f","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","publish":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","build:watch":"tsc --watch","postversion":"git push && git push --tags","publish:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","publish:both":"npm run publish:npm && npm run publish:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","publish:major":"./scripts/publish.sh major","publish:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","publish:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","test:screenshot":"npx ts-node scripts/test-screenshot.ts"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"10.8.2","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"20.19.5","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.1.0_1779334679384_0.46521912375822705","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@febbyrg/pdf-decomposer","version":"1.1.1","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.1.1","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"6a09d9305f76286dada73bfe0fe3b4c2fd653bae","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.1.1.tgz","fileCount":159,"integrity":"sha512-+vvg/hxxD8Q13P/G+WOzvs1STMbxuRE15QNqD/I8VEQQl9ByJbqrJw2Dn7BRrIDkkZxrQiUy5hKDmiILADRIaQ==","signatures":[{"sig":"MEYCIQCDtU1xEvF6CoDx4/qnNnBp5cCjGbIMUQ3aTy0Dt6P+SAIhAIIQW7Xwb6+17TstS+CD5A/phkx91/WkIewKHnsSPq01","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":751169},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"4ae70fbab4f7c8751469c20fcac3033d6ccdae7e","scripts":{"lint":"eslint .","test":"npx ts-node scripts/test.ts","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","release":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","release:both":"npm run release:npm && npm run release:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","release:major":"./scripts/publish.sh major","release:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","test:screenshot":"npx ts-node scripts/test-screenshot.ts"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","puppeteer":"^24.0.0","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.1.1_1781762499259_0.5502057244654424","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@febbyrg/pdf-decomposer","version":"1.2.0","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.2.0","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"2f35d712de9e9ae686b5ef3dc5a5293c8fe96a43","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.2.0.tgz","fileCount":175,"integrity":"sha512-BEh5944a4GUmGbBC1hrYKTHJIogW3wSlpC7SF7Lcaju792NLtJaOzXRxxGh4A6lnjofOtXdyjOGEqsdGRL+cew==","signatures":[{"sig":"MEUCIBj3z5V6CtS7SWbQk5Qtr3OLksivUfYeNd4/M+pPJkHjAiEAm9pXCPl363d7G/1ah6gY09nUNAtoqvqxPWhcs7kBc6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":760910},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"34c04ee93c99f220c3088cee1e7f9af73ddb8dee","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","release":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test:harness && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","test:watch":"vitest","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","release:both":"npm run release:npm && npm run release:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","test:harness":"npx ts-node scripts/test.ts","release:major":"./scripts/publish.sh major","release:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","test:screenshot":"npx ts-node scripts/test-screenshot.ts"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"10.9.8","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"22.23.1","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^4.1.9","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.2.0_1782987392944_0.018216082073624795","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@febbyrg/pdf-decomposer","version":"1.3.0","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.3.0","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"68591e592d1c80b3ccbc968ae4f790f7619bc6e7","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.3.0.tgz","fileCount":175,"integrity":"sha512-bQJe2EFQ3KalfnReLPI4BYQ+FjepzAx8Y4QqOYxL7kJAAPeayF2gZLgNyvcWjxzXZPupnR36gKyDjgALWedi5A==","signatures":[{"sig":"MEQCIF7L5oM3Da77lr1EjJCWz3gBaE3YGlFMhKW1i76GzTSlAiAyCAmGat8eXzwKaysL3/4cF7SniOj97uDt1KcIVPZ8Pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":761637},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"8b610850a98434c55bd9b1ff2a9e0996a62937c1","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","release":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test:harness && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","test:watch":"vitest","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","release:both":"npm run release:npm && npm run release:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","test:harness":"npx ts-node scripts/test.ts","release:major":"./scripts/publish.sh major","release:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","test:screenshot":"npx ts-node scripts/test-screenshot.ts"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","puppeteer":"^24.0.0","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^0.34.6","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.3.0_1783332202080_0.8611164822769168","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@febbyrg/pdf-decomposer","version":"1.3.1","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.3.1","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"572f5c0809514e1c28f2c115b4c13cedcfe98bb0","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.3.1.tgz","fileCount":175,"integrity":"sha512-i5rEo/kIo0wQhmkNlsZojyMglf4ogD/goKuPgiT7DKYnMn9FSp+Ohc+Gasmk2xLxD61DRISbDH6NqbERkCRTrQ==","signatures":[{"sig":"MEUCIA9dkCIldrZJo8gGBoREkqOJyF4W7rfIYtZ/URU8/3QrAiEAkdYR9ROop3DnDmJmL12kPl2So6+4kksDoZuVChox7Z4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":764964},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"610b82945c64227d0536242ab4129065636f4ea5","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","release":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test:harness && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","test:watch":"vitest","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","release:both":"npm run release:npm && npm run release:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","test:harness":"npx ts-node scripts/test.ts","release:major":"./scripts/publish.sh major","release:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","test:screenshot":"npx ts-node scripts/test-screenshot.ts"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","puppeteer":"^24.0.0","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^0.34.6","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.3.1_1783507687594_0.49677682173312876","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@febbyrg/pdf-decomposer","version":"1.4.0","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.4.0","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"5fda87f3f651ce5876d17720746bb5bc4d656e10","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.4.0.tgz","fileCount":207,"integrity":"sha512-aFZ8vZLHtJ0Rm3n85dI2Ds1G2Hr+qPFXuNW/tHJOxexHboDLDH9UeZK5ogTYB3N6SDzpA6ycrqqMDu2UpDOlAQ==","signatures":[{"sig":"MEUCICnPqDG9DHutW5y/y3c09nClKjiCDy+YSdM6/eTAUVz5AiEA93DQ1ayoImxCVkksrxTgLBjRWncFCvGbgtWuujqoxII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":773709},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"3a4b5cd1970af39395d36d94df307c7813315999","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","prepare":"npm run build && npm run ensure:canvas","release":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test:harness && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","test:watch":"vitest","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","pretest:data":"npm run ensure:canvas","release:both":"npm run release:npm && npm run release:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","test:harness":"npx ts-node scripts/test.ts","ensure:canvas":"node scripts/rebuild-canvas-dev.js","release:major":"./scripts/publish.sh major","release:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","pretest:details":"npm run ensure:canvas","pretest:harness":"npm run ensure:canvas","test:screenshot":"npx ts-node scripts/test-screenshot.ts","pretest:puppeteer":"npm run ensure:canvas","pretest:screenshot":"npm run ensure:canvas"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","puppeteer":"^24.0.0","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^0.34.6","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.4.0_1783595882931_0.8619873862158163","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@febbyrg/pdf-decomposer","version":"1.5.0","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.5.0","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"91d6be31ff0d2e9ef3189ea6153dee504c58a58d","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.5.0.tgz","fileCount":227,"integrity":"sha512-Mp5WyK9QGUU+YoIBWjY4PzjWAyE7BqIin2uvLcSw4M7RSJGJQHgr3C3oXWIYa1EiJa2fOvABOOHu+XeBDOi+WQ==","signatures":[{"sig":"MEYCIQCiqNR3xhJy16rMWNZpzMvWz38MVihGdXB4GlYqo5DDmAIhANZawguS0cv8K1TVn9nXT+Ef6MZ8S7A1mHFqH5wBHmzT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":844533},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"6bc632795877e475084f3b5f49807ec97e774e94","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","prepare":"npm run build && npm run ensure:canvas","release":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test:harness && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","test:watch":"vitest","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","pretest:data":"npm run ensure:canvas","release:both":"npm run release:npm && npm run release:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","test:harness":"npx ts-node scripts/test.ts","ensure:canvas":"node scripts/rebuild-canvas-dev.js","release:major":"./scripts/publish.sh major","release:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","pretest:details":"npm run ensure:canvas","pretest:harness":"npm run ensure:canvas","test:screenshot":"npx ts-node scripts/test-screenshot.ts","pretest:puppeteer":"npm run ensure:canvas","pretest:screenshot":"npm run ensure:canvas"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"10.9.8","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"22.23.1","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","pdf-lib":"^1.17.1","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^0.34.6","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.5.0_1783674685738_0.07114448364429204","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@febbyrg/pdf-decomposer","version":"1.5.1","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.5.1","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"74b3e23fcd7c72d02caf3b9c527e431a0bdba5f5","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.5.1.tgz","fileCount":227,"integrity":"sha512-3pJZGzw6Wk1Ytr9+LyeA0XlRdshtLBamoZsJ7AA1e+0Xi/1dmATXOJBevZ7loKqyU4ZV8bfB1sMAKKLTz6wh1w==","signatures":[{"sig":"MEYCIQCB1IahS+5aecT0Pn7A8CdcnzR783bFXjiZ66vGm21nfwIhANH3G5+dFRBZyS6GWASZwVOIzIiG/BxHYGMC1xbdjU7z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":845344},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"062a27643f39586f6862631a5d3aca7f27389f80","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","prepare":"npm run build && npm run ensure:canvas","release":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test:harness && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","test:watch":"vitest","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","pretest:data":"npm run ensure:canvas","release:both":"npm run release:npm && npm run release:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","test:harness":"npx ts-node scripts/test.ts","ensure:canvas":"node scripts/rebuild-canvas-dev.js","release:major":"./scripts/publish.sh major","release:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","pretest:details":"npm run ensure:canvas","pretest:harness":"npm run ensure:canvas","test:screenshot":"npx ts-node scripts/test-screenshot.ts","pretest:puppeteer":"npm run ensure:canvas","pretest:screenshot":"npm run ensure:canvas"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","puppeteer":"^24.0.0","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^0.34.6","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.5.1_1783681387919_0.3773864499712096","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@febbyrg/pdf-decomposer","version":"1.5.2","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.5.2","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"3b6e9288341cdcada2f87b45f57c79add57bff49","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.5.2.tgz","fileCount":231,"integrity":"sha512-WepsM760Q0fBKAAmOnNmus9h+YOEy60piZ+1J+RTkvzYa0QvrV42nsaRk6j2bhW+IeUVTsyumfbxY5uZ0qzh+A==","signatures":[{"sig":"MEUCIDAm1oKQqiXJrVKoZPCoeA0sstefPpMSvThIbMRi9fWaAiEAkjkwAUnQ8qm7qX46d+8AVkV0utJ9Bs24QwtYqD+sD6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":857486},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"f395b8f47759446da55dda8c2c869269245d7c78","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","prepare":"npm run build && npm run ensure:canvas","release":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test:harness && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","test:watch":"vitest","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","pretest:data":"npm run ensure:canvas","release:both":"npm run release:npm && npm run release:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","test:harness":"npx ts-node scripts/test.ts","ensure:canvas":"node scripts/rebuild-canvas-dev.js","release:major":"./scripts/publish.sh major","release:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","pretest:details":"npm run ensure:canvas","pretest:harness":"npm run ensure:canvas","test:screenshot":"npx ts-node scripts/test-screenshot.ts","pretest:puppeteer":"npm run ensure:canvas","pretest:screenshot":"npm run ensure:canvas"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","puppeteer":"^24.0.0","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^0.34.6","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.5.2_1784284942401_0.7349889728319232","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"@febbyrg/pdf-decomposer","version":"1.5.3","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.5.3","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"f42706c4d4a1ee36ba14d404297248bc92aece20","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.5.3.tgz","fileCount":231,"integrity":"sha512-hxXP3YHNvjPIwJyS/8ge1EYvrlMGRpONd+VE6Faoppil4x/5FdzY279KMVZn71dnt/WLR/kPAgRaKQ6XMazvtw==","signatures":[{"sig":"MEYCIQCmuy87KyvY9dUt9ct+/iaDFsUvJjQKo/YYtpiepsLDYAIhAKyPbkRNwPwquH082pXMU4fo+MwFAXcyBGs8pNlOuooJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":861025},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"813e8196f0241f20319bc939b2ae233a6c6e9abf","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","prepare":"npm run build && npm run ensure:canvas","release":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test:harness && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","test:watch":"vitest","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","pretest:data":"npm run ensure:canvas","release:both":"npm run release:npm && npm run release:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","test:harness":"npx ts-node scripts/test.ts","ensure:canvas":"node scripts/rebuild-canvas-dev.js","release:major":"./scripts/publish.sh major","release:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","pretest:details":"npm run ensure:canvas","pretest:harness":"npm run ensure:canvas","test:screenshot":"npx ts-node scripts/test-screenshot.ts","pretest:puppeteer":"npm run ensure:canvas","pretest:screenshot":"npm run ensure:canvas"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","puppeteer":"^24.0.0","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^0.34.6","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.5.3_1784289699729_0.9095278239935272","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@febbyrg/pdf-decomposer","version":"1.6.0","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.6.0","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"b2b839e858a839ef2ea784d3ee7075e97431b581","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.6.0.tgz","fileCount":235,"integrity":"sha512-IpnM/bJ5qQaejwk0/exn8E6j+X64fn28f/xKzBY7AwoRMFA4xJ+Fj1SqeWDzJwb0I7Zh8UUMySrZ4xQ0U+5jjw==","signatures":[{"sig":"MEQCIFZO6V3acbGWv5F8ilZe8Z59U+zDRAaI774t5/dwHwRhAiBOIR81OxErruBJejOCOYK4+mY/RCCqV7TuVUmlpNYaKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":880973},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"cee3656bd96b48616602d83cb0aec8bbd2737387","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","prepare":"npm run build && npm run ensure:canvas","release":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test:harness && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","test:watch":"vitest","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","pretest:data":"npm run ensure:canvas","release:both":"npm run release:npm && npm run release:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","test:harness":"npx ts-node scripts/test.ts","ensure:canvas":"node scripts/rebuild-canvas-dev.js","release:major":"./scripts/publish.sh major","release:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","pretest:details":"npm run ensure:canvas","pretest:harness":"npm run ensure:canvas","test:screenshot":"npx ts-node scripts/test-screenshot.ts","pretest:puppeteer":"npm run ensure:canvas","pretest:screenshot":"npm run ensure:canvas"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","puppeteer":"^24.0.0","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^0.34.6","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.6.0_1784614535981_0.9400027692339903","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@febbyrg/pdf-decomposer","version":"1.6.1","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.6.1","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"2ddc971d04a9e2f9d08b8de27594468feb95febb","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.6.1.tgz","fileCount":239,"integrity":"sha512-OAfC3HkZfdUje/f925xH22SHJxh22ORXGz2l4b89zDFZDoNe+prIu5cs00FD7OxJGtBs8DJTLoLc+xxL2RUY4g==","signatures":[{"sig":"MEUCIQDZc6yG0Zift7FrHeEHZuG4G/U+Nc5xvunUL3enwZ6xDwIgHzLbc2MC6YeRqhJyxEevZJ0MFVpsDU9513ZovoLGC7E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":890996},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"cad37187d957545b346971172ab0a3d9853377f0","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","prepare":"npm run build && npm run ensure:canvas","release":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test:harness && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","test:watch":"vitest","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","pretest:data":"npm run ensure:canvas","release:both":"npm run release:npm && npm run release:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","test:harness":"npx ts-node scripts/test.ts","ensure:canvas":"node scripts/rebuild-canvas-dev.js","release:major":"./scripts/publish.sh major","release:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","pretest:details":"npm run ensure:canvas","pretest:harness":"npm run ensure:canvas","test:screenshot":"npx ts-node scripts/test-screenshot.ts","pretest:puppeteer":"npm run ensure:canvas","pretest:screenshot":"npm run ensure:canvas"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","puppeteer":"^24.0.0","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^0.34.6","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.6.1_1784618879053_0.14125257130540336","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"@febbyrg/pdf-decomposer","version":"1.6.2","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","_id":"@febbyrg/pdf-decomposer@1.6.2","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"dist":{"shasum":"a79974c52ce63034ba185ca2aed256e8ddb955d7","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.6.2.tgz","fileCount":239,"integrity":"sha512-HquGoCoXUi45ZTKRnbYr0tfsTQWTPNnlmVJDDnn8FE8wipaNV60q2mnv4jyjKmsLBnhOkz0bxYxdXJ1KGKgpBw==","signatures":[{"sig":"MEUCIQDkQNpnMsJFCthzNz+u/OrnpQnkRXtQ0iTJJj+zSJxweAIgQodgn7AvDSLt+0Ja1QlAu00cjqG6Ra70MIskUxVHfw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":893335},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"cda2cbd3ac11e2720e53979a96440f36b8638a3c","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","prepare":"npm run build && npm run ensure:canvas","release":"./scripts/publish.sh patch","version":"npm run build","lint:fix":"eslint . --fix","test:all":"npm run test:harness && npm run test:screenshot && npm run test:data && npm run test:slice","test:data":"npx ts-node scripts/test-pdf-data.ts","preversion":"npm run lint && npm test","test:slice":"npx ts-node scripts/test-slice.ts","test:watch":"vitest","build:watch":"tsc --watch","postversion":"git push && git push --tags","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","pretest:data":"npm run ensure:canvas","release:both":"npm run release:npm && npm run release:github","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","test:harness":"npx ts-node scripts/test.ts","ensure:canvas":"node scripts/rebuild-canvas-dev.js","release:major":"./scripts/publish.sh major","release:minor":"./scripts/publish.sh minor","prepublishOnly":"npm run build && npm test && npm run lint","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","pretest:details":"npm run ensure:canvas","pretest:harness":"npm run ensure:canvas","test:screenshot":"npx ts-node scripts/test-screenshot.ts","pretest:puppeteer":"npm run ensure:canvas","pretest:screenshot":"npm run ensure:canvas"},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"repository":{"url":"git+https://github.com/febbyRG/pdf-decomposer.git","type":"git"},"_npmVersion":"8.19.4","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","directories":{},"_nodeVersion":"16.20.2","dependencies":{"md5":"^2.3.0","uuid":"^9.0.0","canvas":"^2.11.2","pdf-lib":"^1.17.1","puppeteer":"^24.0.0","param-case":"^3.0.4","pdfjs-dist":"3.2.146","change-case":"^4.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.0.0","vitest":"^0.34.6","ts-node":"^10.9.2","@types/md5":"^2.3.5","typescript":"^4.9.0","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pdf-decomposer_1.6.2_1784621746230_0.37125457669744266","host":"s3://npm-registry-packages-npm-production"}},"1.6.3":{"name":"@febbyrg/pdf-decomposer","version":"1.6.3","description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.js","types":"./dist/index.d.ts"}},"engines":{"node":">=16.0.0"},"scripts":{"build":"tsc","build:watch":"tsc --watch","prepare":"npm run build && npm run ensure:canvas","ensure:canvas":"node scripts/rebuild-canvas-dev.js","prepublishOnly":"npm run build && npm test && npm run lint","preversion":"npm run lint && npm test","version":"npm run build","postversion":"git push && git push --tags","test":"vitest run","test:watch":"vitest","pretest:harness":"npm run ensure:canvas","test:harness":"npx ts-node scripts/test.ts","pretest:screenshot":"npm run ensure:canvas","test:screenshot":"npx ts-node scripts/test-screenshot.ts","pretest:data":"npm run ensure:canvas","test:data":"npx ts-node scripts/test-pdf-data.ts","test:slice":"npx ts-node scripts/test-slice.ts","pretest:details":"npm run ensure:canvas","test:details":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-details.ts","pretest:puppeteer":"npm run ensure:canvas","test:puppeteer":"node --max-old-space-size=8192 --expose-gc -r ts-node/register scripts/test-puppeteer.ts","test:all":"npm run test:harness && npm run test:screenshot && npm run test:data && npm run test:slice","lint":"eslint .","lint:fix":"eslint . --fix","clean":"rm -rf dist","release":"./scripts/publish.sh patch","release:minor":"./scripts/publish.sh minor","release:major":"./scripts/publish.sh major","release:npm":"cp .npmrc.npmjs .npmrc && npm publish --access=public","release:github":"cp .npmrc.github .npmrc && npm publish --access=public","release:both":"npm run release:npm && npm run release:github"},"repository":{"type":"git","url":"git+https://github.com/febbyRG/pdf-decomposer.git"},"keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"homepage":"https://github.com/febbyRG/pdf-decomposer#readme","dependencies":{"change-case":"^4.1.2","md5":"^2.3.0","param-case":"^3.0.4","pdf-lib":"^1.17.1","pdfjs-dist":"3.2.146","uuid":"^9.0.0","canvas":"^2.11.2","puppeteer":"^24.0.0"},"optionalDependencies":{"canvas":"^2.11.2","puppeteer":"^24.0.0"},"devDependencies":{"@types/md5":"^2.3.5","@types/node":"^16.0.0","@types/uuid":"^9.0.0","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","eslint":"^8.0.0","ts-node":"^10.9.2","typescript":"^4.9.0","vitest":"^0.34.6"},"publishConfig":{"access":"public"},"gitHead":"94fe32858b845ee7578dc5a7e9e6608eca8ed463","_id":"@febbyrg/pdf-decomposer@1.6.3","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-EPQqp+4cCf7yGM1yZmSsRSIdpuyPqmrwC7lwJ/C8rvMw8b6uHyjpSbOTHMcy0Jd6Hbposuw7s+lsHEufrZ5vOQ==","shasum":"b0a45b55e932f268499b137a45987f8ca19713ea","tarball":"https://registry.npmjs.org/@febbyrg/pdf-decomposer/-/pdf-decomposer-1.6.3.tgz","fileCount":239,"unpackedSize":900488,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCQLZBKndhtCyAJA5Sde1koDoRZPkuo/RvDVzQ33YoNOQIgZRo55fPTryH1PvlnFhd7JK4twAcj6BFY/0SAQAUSuv8="}]},"_npmUser":{"name":"febbyrg","email":"febby.rachmat@gmail.com"},"directories":{},"maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pdf-decomposer_1.6.3_1784685547082_0.5231050214314477"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-01T10:39:36.359Z","modified":"2026-07-22T01:59:07.366Z","1.0.0":"2025-09-01T10:39:36.647Z","1.0.1":"2025-09-01T11:43:42.796Z","1.0.2":"2025-09-23T08:38:39.000Z","1.0.3":"2025-09-23T11:27:16.652Z","1.0.4":"2025-09-24T10:19:42.294Z","1.0.5":"2025-09-29T05:40:14.361Z","1.0.6":"2025-12-17T08:13:29.971Z","1.0.7":"2026-01-20T07:41:28.729Z","1.0.8":"2026-01-20T08:00:56.585Z","1.0.9":"2026-01-20T08:16:14.395Z","1.0.10":"2026-04-13T01:07:06.242Z","1.0.11":"2026-04-20T05:02:51.479Z","1.1.0":"2026-05-21T03:37:59.556Z","1.1.1":"2026-06-18T06:01:39.409Z","1.2.0":"2026-07-02T10:16:33.129Z","1.3.0":"2026-07-06T10:03:22.231Z","1.3.1":"2026-07-08T10:48:07.772Z","1.4.0":"2026-07-09T11:18:03.092Z","1.5.0":"2026-07-10T09:11:25.979Z","1.5.1":"2026-07-10T11:03:08.054Z","1.5.2":"2026-07-17T10:42:22.521Z","1.5.3":"2026-07-17T12:01:39.910Z","1.6.0":"2026-07-21T06:15:36.184Z","1.6.1":"2026-07-21T07:27:59.217Z","1.6.2":"2026-07-21T08:15:46.394Z","1.6.3":"2026-07-22T01:59:07.233Z"},"bugs":{"url":"https://github.com/febbyRG/pdf-decomposer/issues"},"author":{"name":"Febby Rachmat G","email":"febby.rachmat@gmail.com"},"license":"SEE LICENSE IN LICENSE","homepage":"https://github.com/febbyRG/pdf-decomposer#readme","keywords":["pdf","parser","typescript","json","browser","angular","react","vue","image-extraction","pdf-to-json","pdf-text-extraction","pdf-processing","nodejs","universal","pdf-decomposer","content-extraction","screenshot-generation","pdf-slicing"],"repository":{"type":"git","url":"git+https://github.com/febbyRG/pdf-decomposer.git"},"description":"A powerful PDF text and image extraction library with universal browser and Node.js support (Dual Licensed: Free for non-commercial, Paid for commercial use)","maintainers":[{"name":"febbyrg","email":"febby.rachmat@gmail.com"}],"readme":"# PDF-Decomposer\n\n[![NPM Version](https://img.shields.io/npm/v/@febbyrg/pdf-decomposer.svg)](https://www.npmjs.com/package/@febbyrg/pdf-decomposer)\n[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)\n[![Dual License](https://img.shields.io/badge/license-Dual%20License-orange.svg)](LICENSE)\n\nA powerful TypeScript library for comprehensive PDF processing and content extraction. Optimized for production use with universal browser and Node.js support.\n\n## Core Features\n\n### PDF Decomposer Class\n\n- **Load Once, Use Many Times** - Initialize PDF once, perform multiple operations\n- **Progress Tracking** - Observable pattern with real-time progress callbacks\n- **Error Handling** - Comprehensive error reporting with page-level context\n- **Memory Efficient** - Built-in memory management and cleanup\n- **Universal Support** - Works in Node.js 16+ and all modern browsers\n- **Pluggable Renderer** - Default node-canvas/browser canvas, with optional Puppeteer renderer for very large PDFs on Node.js\n\n### Main Operations\n\n#### 1. Content Decomposition (`decompose()`)\n\nExtract structured text with positioning and formatting:\n\n- Smart element composition with `elementComposer`\n- Content area cleaning with `cleanComposer`\n- Page-level composition with `pageComposer`\n- Two-page-spread splitting with `spreadHandling` (see Spread Splitting below)\n- Image extraction from embedded PDF objects\n- Link extraction from PDF annotations and text patterns\n- Smart URL detection with comprehensive email and domain pattern matching\n\n#### 2. Screenshot Generation (`screenshot()`)\n\n- High-quality page rendering to PNG/JPEG\n- Configurable resolution and quality\n- Batch processing with progress tracking\n- File output or base64 data URLs\n- `half: 'left' | 'right'` renders one half of a physical page (spread documents, Node only)\n\n#### 3. PDF Data Generation (`data()`)\n\n- pwa-admin compatible data structure\n- Interactive area mapping with normalized coordinates\n- Widget ID generation following epub conventions\n- Article relationship management\n- `skipScreenshots` option for memory-constrained environments\n- `spreadHandling` forwards to decompose: entries then describe logical pages (combine with `skipScreenshots: true`, see Spread Splitting)\n\n#### 4. PDF Slicing (`slice()`)\n\n- Extract specific page ranges\n- Generate new PDF documents\n- Replace internal document structure\n- Preserve all metadata and formatting\n\n### Advanced Content Processing\n\n#### Element Composer\n\n- Groups scattered text elements into coherent paragraphs\n- Font-size based header element recognition (h1, h2, h3, etc.)\n- Smart span merging for headers with same font-size/family but different colors\n- Content consolidation for multiple heading tags\n- Preserves reading order and text flow\n- Smart font and spacing analysis\n- Preservation invariant: reading order is a permutation of the input, never a filter. Every meaningful text run reaches the output, whatever the column layout\n- Implemented as pure, unit-tested modules under `src/core/composer/` (overlap merge, reading order, text types, drop caps, column detection)\n\n#### Page Composer\n\n- Merges continuous content across consecutive pages\n- Spread-mate attachment: the two halves of one physical spread page merge into one article when one half is the article text and the other its full-page artwork (caption-level text only, no display title, never an ad). Composed groups keep every member's physical identity in `metadata.composedFromSpreads`\n- Document-agnostic continuity: a page pair merges only when there is real evidence (the current page's main body ends mid-sentence, the next page begins mid-sentence or opens with a discourse connective, both pages carry the same rare running-head kicker, or a \"continued on/from page N\" marker links them)\n- Resource trailers (\"More information ...\") and page furniture never count as continuation evidence\n- Detects article boundaries and section breaks (a display heading in the title region or a section-marker word starts a new article, even when a small hero caption precedes the title in reading order)\n- Never merges a cover, advertisement, or full-page screenshot into a neighbour\n\n#### Clean Composer\n\n- Filters out headers, footers, and page numbers (the removed running-head text is preserved in `metadata.runningHeadText` for the page composer's continuity signal)\n- Content area detection with configurable margins. Images of any size survive when they overlap the content area (a QR code in a corner is content, not furniture)\n- Image size validation and filtering\n- Control character removal\n- Collapses covers and full-page advertisements to a single screenshot, while keeping text-heavy pages (including articles over a full-bleed background image) decomposed. Legal fine print (tiny-font trademark/disclaimer lines) does not count as article substance, so ads with long disclaimers still collapse\n\n#### Spread Splitting (`spreadHandling: 'auto' | 'split' | 'off'`)\n\nFor PDFs exported as two-page spreads (each physical page holds two magazine pages side by side):\n\n- `'auto'` (recommended for pipelines): decides once per document from content evidence, then splits every landscape page into two logical pages. Evidence = an empty vertical gutter (elements do not cross the page midline) plus adjacent folio pairs (e.g. 736|737 printed on the two halves). Aspect ratio alone is deliberately NOT trusted: an A4 spread and a single A4 landscape page look identical geometrically. Portrait documents pass through untouched.\n- `'split'`: skips detection and splits every landscape page (escape hatch when auto misjudges a document).\n- `'off'` (default): current behaviour, no splitting.\n- Any other value is treated as `'off'` with a warning (fail-safe for values arriving from environment variables).\n\nWhen splitting is active:\n\n- Runs after raw extraction and before element composition, so every downstream stage (composers, cleaning, consumers) sees normal single-page geometry, and per-page percentage margins apply to the logical page instead of the double-width spread\n- Output pages are renumbered into a logical reading sequence (`pageIndex`/`pageNumber` no longer map 1:1 to PDF pages) and each carries `metadata.spread = { sourcePageIndex, sourcePageNumber, half }` with its physical identity\n- Cover/ad screenshot collapse renders the physical page and crops the correct half automatically\n- `screenshot({ half: 'left' | 'right' })` rasterizes one half of a physical page, for generating per-logical-page screenshots (Node only)\n- Elements spanning the gutter (panoramic photos) go to the half holding the larger share of their width, with the bounding box clamped to the page bounds\n\n#### Image Extraction\n\n- Universal browser-compatible processing\n- Multiple format support (RGB, RGBA, Grayscale)\n- Auto-scaling for memory safety\n- Duplicate detection and removal\n- Split-crop reunification: one printed artwork sliced into stacked XObject crops (a common InDesign export artifact) comes back as a single element. Same-column adjacency nominates candidates; a pixel-seam comparison confirms the crops depict one continuous picture before compositing (Node only; browser builds pass the crops through unchanged)\n\n#### Link Extraction (`extractLinks: true`)\n\n- PDF Annotations: Extract interactive link annotations with URLs and destinations\n- Text Pattern Matching: Detect URLs in text content (e.g., \"GIA.edu/jewelryservices\")\n- Email Detection: Find email addresses in document text with automatic mailto: prefix\n- Smart URL Recognition: Enhanced regex patterns for domain+path detection\n- Link Types: Support for external URLs, internal PDF destinations, and email links\n- No Duplicates: Intelligent handling prevents text/link element duplication\n- Position Data: Accurate bounding box coordinates for each link\n- Link Attributes: Rich metadata including link type, context text, and extraction method\n\n### Performance and Memory\n\n- Memory Manager - Adaptive cleanup and monitoring\n- Progress Callbacks - Real-time operation tracking\n- Background Processing - Non-blocking operations\n- Batch Processing - Efficient multi-page handling\n\n### Logging\n\nThe library logs through a level-gated logger and stays quiet by default (warnings and errors only). Raise the level when diagnosing:\n\n```bash\nLOG_LEVEL=info node your-script.js    # or LOG_LEVEL=debug\n```\n\n## Installation\n\n```bash\nnpm install @febbyrg/pdf-decomposer\n\n# For Node.js with canvas support (optional)\nnpm install canvas\n\n# For browser usage\nnpm install pdfjs-dist\n```\n\n## Quick Start\n\n### Class-Based API (Recommended)\n\n```typescript\nimport { PdfDecomposer } from '@febbyrg/pdf-decomposer'\n\n// Load PDF once, use many times\nconst pdf = new PdfDecomposer(buffer) // Buffer, ArrayBuffer, or Uint8Array\nawait pdf.initialize()\n\n// Multiple operations on same PDF\nconst pages = await pdf.decompose({\n  elementComposer: true, // Group text into paragraphs\n  pageComposer: true, // Merge continuous content across pages\n  cleanComposer: true, // Clean headers/footers\n  extractImages: true, // Extract embedded images\n  extractLinks: true // Extract links and annotations from PDF\n})\n\n// Enhanced MinifyOptions with Element Attributes\nconst styledPages = await pdf.decompose({\n  elementComposer: true,\n  minify: true,\n  minifyOptions: {\n    format: 'html', // data field contains formatted HTML\n    elementAttributes: true // Include styling information\n  }\n})\n\nconst screenshots = await pdf.screenshot({\n  imageWidth: 1024,\n  imageQuality: 90\n})\n\nconst pdfData = await pdf.data({\n  // pwa-admin compatible format\n  imageWidth: 1024,\n  elementComposer: true\n})\n\nconst sliced = await pdf.slice({\n  // Extract first 5 pages\n  numberPages: 5\n})\n\n// Access PDF properties\nconsole.log(`Pages: \\${pdf.numPages}`)\nconsole.log(`Fingerprint: \\${pdf.fingerprint}`)\n\n// Optional but recommended for long-running consumers: release pdf.js worker\n// state and (if used) the custom renderer. Required when using PuppeteerRenderer.\nawait pdf.dispose()\n```\n### Factory Method (One-liner)\n\n```typescript\nimport { PdfDecomposer } from '@febbyrg/pdf-decomposer'\n\n// Create and initialize in one step\nconst pdf = await PdfDecomposer.create(buffer)\nconst pages = await pdf.decompose({ elementComposer: true })\n```\n\n### Progress Tracking\n\n```typescript\nconst pdf = new PdfDecomposer(buffer)\n\n// Subscribe to progress updates\npdf.subscribe((state) => {\n  console.log(`\\${state.progress}% - \\${state.message}`)\n})\n\nawait pdf.initialize()\nconst result = await pdf.decompose({\n  startPage: 1,\n  endPage: 10,\n  elementComposer: true\n})\n```\n\n### Browser Environment (Angular, React, Vue)\n\n```typescript\nimport { PdfDecomposer } from '@febbyrg/pdf-decomposer'\n\n// In browser - use File API\nasync function processPdfFile(file: File) {\n  const arrayBuffer = await file.arrayBuffer()\n  const pdf = new PdfDecomposer(arrayBuffer)\n  await pdf.initialize()\n\n  return await pdf.decompose({\n    elementComposer: true,\n    extractImages: true\n  })\n}\n\n// Configure PDF.js worker (once per app)\nimport { PdfWorkerConfig } from '@febbyrg/pdf-decomposer'\nPdfWorkerConfig.configure() // Auto-configures worker URL\n```\n\n### Advanced Usage Examples\n\n#### Content Processing Pipeline\n\n```typescript\nconst pdf = new PdfDecomposer(buffer)\nawait pdf.initialize()\n\n// Step 1: Extract raw content with advanced processing\nconst pages = await pdf.decompose({\n  startPage: 1,\n  endPage: 10,\n  elementComposer: true,\n  pageComposer: true,\n  cleanComposer: true,\n  extractImages: true,\n  minify: true,\n  cleanComposerOptions: {\n    topMarginPercent: 0.15,\n    bottomMarginPercent: 0.1,\n    minTextHeight: 8,\n    removeControlCharacters: true\n  }\n})\n\n// Step 2: Generate interactive data for web apps\nconst interactiveData = await pdf.data({\n  startPage: 1,\n  endPage: 10,\n  imageWidth: 1024,\n  elementComposer: true\n})\n\n// Step 3: Create high-quality screenshots\nconst screenshots = await pdf.screenshot({\n  startPage: 1,\n  endPage: 10,\n  imageWidth: 1200,\n  imageQuality: 95\n})\n```\n\n#### PDF Slicing and Processing\n\n```typescript\nconst pdf = new PdfDecomposer(buffer)\nawait pdf.initialize()\n\nconsole.log(`Original PDF: \\${pdf.numPages} pages`)\n\n// Slice to first 5 pages (modifies internal PDF)\nconst sliceResult = await pdf.slice({\n  numberPages: 5\n})\n\nconsole.log(`Sliced PDF: \\${pdf.numPages} pages`) // Now shows 5\nconsole.log(`Saved \\${sliceResult.fileSize} bytes`)\n\n// Process the sliced PDF\nconst pages = await pdf.decompose({\n  elementComposer: true\n})\n```\n\n#### Link Extraction\n\n```typescript\nconst pdf = new PdfDecomposer(buffer)\nawait pdf.initialize()\n\n// Extract links from PDF content\nconst pagesWithLinks = await pdf.decompose({\n  extractLinks: true,\n  elementComposer: true\n})\n\n// Process found links\npagesWithLinks.pages.forEach((page, pageIndex) => {\n  const linkElements = page.elements.filter((el) => el.type === 'link')\n\n  linkElements.forEach((link) => {\n    console.log(`Page \\${pageIndex + 1}: Found \\${link.attributes.linkType}`)\n    console.log(`  URL: \\${link.data}`)\n    console.log(`  Position: [\\${link.boundingBox.left}, \\${link.boundingBox.top}]`)\n\n    if (link.attributes.text) {\n      console.log(`  Context: \"\\${link.attributes.text}\"`)\n    }\n  })\n})\n```\n\n## API Reference\n\n### PdfDecomposer Class\n\n#### Constructor\n\n```typescript\nnew PdfDecomposer(input: Buffer | ArrayBuffer | Uint8Array)\n```\n\n#### Static Methods\n\n```typescript\n// Factory method - create and initialize in one step\nstatic async create(input: Buffer | ArrayBuffer | Uint8Array): Promise<PdfDecomposer>\n```\n\n#### Instance Methods\n\n```typescript\n// Initialize PDF (required before other operations)\nasync initialize(): Promise<void>\n\n// Extract content and structure\nasync decompose(options?: PdfDecomposerOptions): Promise<DecomposeResult>\n\n// Generate page screenshots\nasync screenshot(options?: ScreenshotOptions): Promise<ScreenshotResult>\n\n// Generate pwa-admin compatible data structure\nasync data(options?: DataOptions): Promise<DataResult>\n\n// Slice PDF to specific page range\nasync slice(options?: SliceOptions): Promise<SliceResult>\n\n// Subscribe to progress updates\nsubscribe(callback: (state: PdfDecomposerState) => void): void\n\n// Get PDF and page fingerprints for caching\nasync getFingerprints(): Promise<{ pdfHash: string; pageHashes: string[]; total: number }>\n```\n\n#### Properties\n\n```typescript\nreadonly numPages: number           // Total number of pages\nreadonly fingerprint: string        // PDF fingerprint for caching\nreadonly initialized: boolean       // Initialization status\n```\n\n### Options Interfaces\n\n#### PdfDecomposerOptions\n\n```typescript\ninterface PdfDecomposerOptions {\n  startPage?: number // First page (1-indexed, default: 1)\n  endPage?: number // Last page (1-indexed, default: all)\n  outputDir?: string // Output directory for files\n  elementComposer?: boolean // Group text into paragraphs\n  pageComposer?: boolean // Merge continuous content across pages\n  extractImages?: boolean // Extract embedded images\n  extractLinks?: boolean // Extract links and annotations from PDF\n  minify?: boolean // Compact output format\n  cleanComposer?: boolean // Remove headers/footers\n  cleanComposerOptions?: PdfCleanComposerOptions\n  minifyOptions?: {\n    format?: 'plain' | 'html' // Data field format\n    elementAttributes?: boolean // Include slim element attributes\n  }\n}\n```\n\n#### ScreenshotOptions\n\n```typescript\ninterface ScreenshotOptions {\n  startPage?: number // First page (1-indexed)\n  endPage?: number // Last page (1-indexed)\n  outputDir?: string // Output directory for image files\n  imageWidth?: number // Image width (default: 1200)\n  imageQuality?: number // JPEG quality 1-100 (default: 90)\n}\n```\n\n#### DataOptions\n\n```typescript\ninterface DataOptions {\n  startPage?: number // First page (1-indexed)\n  endPage?: number // Last page (1-indexed)\n  outputDir?: string // Output directory\n  extractImages?: boolean // Extract embedded images\n  extractLinks?: boolean // Extract links and annotations\n  elementComposer?: boolean // Group elements into paragraphs\n  cleanComposer?: boolean // Clean content area\n  imageWidth?: number // Screenshot width (default: 1024)\n  imageQuality?: number // Screenshot quality (default: 90)\n}\n```\n\n#### SliceOptions\n\n```typescript\ninterface SliceOptions {\n  numberPages?: number // Number of pages from start\n  startPage?: number // Starting page (1-indexed, default: 1)\n  endPage?: number // Ending page (1-indexed)\n}\n```\n\n#### PdfCleanComposerOptions\n\n```typescript\ninterface PdfCleanComposerOptions {\n  topMarginPercent?: number // Exclude top % for headers (default: 0.1)\n  bottomMarginPercent?: number // Exclude bottom % for footers (default: 0.1)\n  sideMarginPercent?: number // Exclude side % (default: 0.05)\n  minTextHeight?: number // Minimum text height (default: 8)\n  minTextWidth?: number // Minimum text width (default: 10)\n  minTextLength?: number // Minimum text length (default: 3)\n  removeControlCharacters?: boolean // Remove non-printable chars (default: true)\n  removeIsolatedCharacters?: boolean // Remove isolated chars (default: true)\n  minImageWidth?: number // Minimum image width (default: 50)\n  minImageHeight?: number // Minimum image height (default: 50)\n  minImageArea?: number // Minimum image area (default: 2500)\n  coverPageDetection?: boolean // Detect cover pages (default: true)\n  coverPageThreshold?: number // Single/aggregate image coverage that marks a full-page visual (default: 0.8)\n  coverPageScreenshotQuality?: number // JPEG quality for page/cover screenshots, 1-100 (default: 95)\n  coverPageScreenshotWidth?: number // Target width (px) for page/cover screenshots when rendered via a renderer (default: 1024)\n  heroImageCoverageThreshold?: number // Hero-image coverage that flags a full-page ad even when it carries scattered text (default: 0.55)\n  significantTextBlockThreshold?: number // Longest continuous text block that marks a page as real content and keeps it decomposed (default: 300)\n  adMaxTextChars?: number // Max total text for a hero-image ad; above this the page is treated as content (default: 600)\n  maxScreenshotsPerDocument?: number // Max pages converted to a full-page screenshot per document (default: 10)\n}\n```\n\n> When `cleanComposer` converts a full-page-image or cover page into a single screenshot, that page is rasterized through the `renderer` configured on `PdfDecomposer` (e.g. `PuppeteerRenderer`) when one is set, and through node-canvas otherwise. `coverPageScreenshotWidth` only applies to the renderer path. The renderer is applied automatically. It is not something you pass in `cleanComposerOptions`.\n\n> Full-page detection keys on the **longest continuous text block**, not total text. A page with at least one long paragraph (>= `significantTextBlockThreshold`) is treated as real content and stays decomposed, even when a full-bleed background image covers the whole page. Covers and full-page advertisements (a dominant image with only short scattered text) are collapsed to a single screenshot. Tune `heroImageCoverageThreshold` / `significantTextBlockThreshold` / `adMaxTextChars` if a specific publication needs a different balance.\n\n> Screenshot conversions are capped at `maxScreenshotsPerDocument` per document (default 10, originally a node-canvas memory guard). Pages past the cap stay decomposed even when the ad/cover heuristics match, so raise it for ad-heavy magazines. With a pluggable renderer (e.g. `PuppeteerRenderer`) it can safely be set to the page count.\n\n### Result Interfaces\n\n#### DecomposeResult\n\n```typescript\ninterface DecomposeResult {\n  pages: PdfPageContent[]\n}\n\ninterface PdfPageContent {\n  pageIndex: number // 0-based page index\n  pageNumber: number // 1-based page number\n  width: number // Page width in points\n  height: number // Page height in points\n  title: string // Page title\n  elements: PdfElement[] // Extracted elements\n  metadata?: {\n    composedFromPages?: number[] // Original page indices (for pageComposer)\n    [key: string]: any\n  }\n}\n```\n\n#### ScreenshotResult\n\n```typescript\ninterface ScreenshotResult {\n  totalPages: number\n  screenshots: ScreenshotPageResult[]\n}\n\ninterface ScreenshotPageResult {\n  pageNumber: number // 1-based page number\n  width: number // Image width in pixels\n  height: number // Image height in pixels\n  screenshot: string // Base64 data URL\n  filePath?: string // File path if outputDir provided\n  error?: string // Error message if failed\n}\n```\n\n#### DataResult\n\n```typescript\ninterface DataResult {\n  data: PdfData[]\n}\n\ninterface PdfData {\n  id: string // Unique page identifier\n  index: number // 0-based page index\n  image: string // Page screenshot URL\n  thumbnail: string // Thumbnail URL\n  areas: PdfArea[] // Interactive areas\n}\n\ninterface PdfArea {\n  id: string // Unique area identifier\n  coords: number[] // [x1, y1, x2, y2] normalized 0-1\n  articleId: number // Associated article ID\n  widgetId: string // Widget identifier (P: or T:)\n}\n```\n\n#### SliceResult\n\n```typescript\ninterface SliceResult {\n  pdfBytes: Uint8Array // Sliced PDF data\n  originalPageCount: number // Original page count\n  slicedPageCount: number // Sliced page count\n  pageRange: {\n    startPage: number\n    endPage: number\n  }\n  fileSize: number // Size in bytes\n}\n```\n\n## Testing and Development\n\n### Run Tests\n\n```bash\nnpm test                    # Unit tests (Vitest): composer modules + ad / merge heuristics (77 tests)\nnpm run test:watch          # Vitest in watch mode\nnpm run test:harness        # End-to-end decompose harness over a sample PDF\nnpm run test:screenshot     # Screenshot generation tests\nnpm run test:data           # PDF data generation tests\n```\n\n### Build and Development\n\n```bash\nnpm run build              # Build TypeScript to dist/\nnpm run build:watch        # Watch mode for development\nnpm run lint               # ESLint validation\n```\n\n## Environment Support\n\n| Feature               | Node.js | Browser | Notes                                                           |\n| --------------------- | ------- | ------- | --------------------------------------------------------------- |\n| Text Extraction       | Yes     | Yes     | Full support both environments                                  |\n| Image Extraction      | Yes     | Yes     | Universal canvas-based processing                               |\n| Screenshots           | Yes     | Yes     | Node uses canvas (default) or Puppeteer (opt-in); browser canvas |\n| PDF Slicing           | Yes     | Yes     | Uses pdf-lib in both environments                               |\n| Progress Tracking     | Yes     | Yes     | Observable pattern with callbacks                               |\n| Memory Management     | Yes     | Limited | Advanced in Node.js, basic in browser                           |\n| File Output           | Yes     | No      | Browser returns data URLs/blobs                                 |\n| Element Composer      | Yes     | Yes     | Smart text grouping                                             |\n| Page Composer         | Yes     | Yes     | Cross-page content merging                                      |\n| Clean Composer        | Yes     | Yes     | Header/footer removal                                           |\n| `dispose()` lifecycle | Yes     | Yes     | Releases pdf.js + custom renderer resources                     |\n\n### Browser Compatibility\n\n- Chrome 60+\n- Firefox 55+\n- Safari 11+\n- Edge 79+\n- Mobile browsers (iOS Safari, Chrome Mobile)\n\n### Node.js Requirements\n\n- Node.js 16+ required\n- `canvas` optional for the default Node screenshot path\n- `puppeteer` optional for the [`PuppeteerRenderer`](#pluggable-renderer-nodejs-large-pdfs) (large PDFs on Node)\n- TypeScript 4.9+ for development\n\n## Production Usage Examples\n\n### Memory Optimization\n\n```typescript\nconst pdf = new PdfDecomposer(buffer)\nawait pdf.initialize()\n\n// Process in smaller batches for large PDFs\nconst totalPages = pdf.numPages\nconst batchSize = 10\n\nfor (let start = 1; start <= totalPages; start += batchSize) {\n  const end = Math.min(start + batchSize - 1, totalPages)\n\n  const batch = await pdf.decompose({\n    startPage: start,\n    endPage: end,\n    elementComposer: true\n  })\n\n  // Process batch results...\n}\n```\n\n**Built-in Memory Limits (v1.0.6+):**\n- MAX_SAFE_PIXELS: 2M pixels per image\n- MAX_DIMENSION: 2000px max width/height\n- MAX_IMAGES_PER_PAGE: 20 images\n- Canvas size limits: 1200x1600 for screenshots\n- Sequential processing to reduce peak memory\n- Use `skipScreenshots: true` in `data()` to skip page image generation\n\n### Pluggable Renderer (Node.js, large PDFs)\n\nThe default Node.js screenshot path uses `node-canvas`. For very large PDFs (100+ pages, hundreds of MB) the underlying `Context2d::GetImageData` can hit `v8::ArrayBuffer::New` OOM regardless of `--max-old-space-size`. This is a documented limitation of the node-canvas + pdf.js + V8 ArrayBuffer allocator interaction. See [docs/NODE_CANVAS_OOM_VS_PUPPETEER.md](docs/NODE_CANVAS_OOM_VS_PUPPETEER.md) for the full write-up.\n\nThe library exposes an optional `renderer` constructor option that swaps the per-page rasterization path without changing any other behavior. Browser usage is unaffected. Text/image/link extraction still runs on the Node-side pdf.js. Every page→image step follows the renderer: `screenshot()`, the page images `data()` produces, and the cover/page-screenshot conversion that `cleanComposer` performs on full-page-image pages. When no renderer is set, all of these fall back to node-canvas. This consistency matters for large CMYK-heavy PDFs, where the `cleanComposer` cover/page conversion would otherwise still hit the node-canvas OOM even when a renderer was configured (fixed in 1.1.1).\n\n```typescript\nimport { PdfDecomposer, PuppeteerRenderer } from '@febbyrg/pdf-decomposer'\n\n// Install puppeteer separately (downloads Chromium, ~300MB):\n//   npm install puppeteer\nconst renderer = new PuppeteerRenderer()\n\nconst pdf = new PdfDecomposer(buffer, { renderer })\nawait pdf.initialize()\n\nconst screenshots = await pdf.screenshot({ imageWidth: 1024 })\n// `data()` also routes through the renderer when generating page images:\nconst data = await pdf.data({ imageWidth: 1024 })\n\n// IMPORTANT: dispose closes Chromium, the temp HTTP server, and pdf.js doc.\nawait pdf.dispose()\n```\n\n`PuppeteerRenderer` renders pages inside a headless Chromium browser using the same `document.createElement('canvas')` + pdf.js pipeline that the in-browser path uses. Chromium handles canvas memory natively, so the OOM at `Context2d::GetImageData` is bypassed entirely.\n\nHow PDF bytes reach Chromium: the renderer spawns a tiny localhost HTTP server (bound to `127.0.0.1` on a random ephemeral port) that serves the PDF and pdf.js worker. Chromium fetches them via standard browser XHR: no CDP-bound binary blobs, no JSON serialization of 100+ MB payloads. The server lifecycle is tied to `initialize()` / `dispose()`.\n\n#### Trade-offs\n\n- Cold-start adds ~1500–2500 ms per `PdfDecomposer` lifetime (one-time, not per page).\n- Requires Chromium on disk (~300 MB), already present in environments that use Puppeteer for other tasks (e.g. cloud-run-jobs).\n- Text/image extraction still runs on the Node-side pdf.js. Only page rasterization (screenshots and the `cleanComposer` cover/page conversion) uses the renderer.\n- `dispose()` becomes mandatory: without it, the Chromium subprocess and HTTP server leak.\n\n#### When to use\n\n- Cloud Functions handling PDFs ≥ 50 pages / ≥ 100 MB where the default path hits the documented node-canvas OOM.\n- Local batch jobs against very large PDFs.\n- Any environment where flexpdf-class stability is required server-side.\n\n#### When **not** to use\n\n- Small PDFs where the default node-canvas path comfortably fits in memory (cold-start overhead isn't worth it).\n- Browser environments (the browser already gives the same memory model).\n- Disk-constrained images that can't afford the extra ~300 MB Chromium.\n\n#### Reference\n\n- [docs/NODE_CANVAS_OOM_VS_PUPPETEER.md](docs/NODE_CANVAS_OOM_VS_PUPPETEER.md): root cause, design rationale, references to upstream issues.\n- [`PdfPageRenderer`](src/types/renderer.types.ts): interface for writing custom renderers.\n\n### Error Handling\n\n```typescript\nconst pdf = new PdfDecomposer(buffer)\n\npdf.subscribe((state) => {\n  console.log(`Progress: \\${state.progress}%`)\n})\n\ntry {\n  await pdf.initialize()\n  const result = await pdf.decompose()\n} catch (error) {\n  if (error.name === 'InvalidPdfError') {\n    console.error('Invalid PDF format:', error.message)\n  } else if (error.name === 'MemoryError') {\n    console.error('Memory limit exceeded:', error.message)\n  } else {\n    console.error('Processing failed:', error.message)\n  }\n}\n```\n\n### Caching Strategy\n\n```typescript\nconst pdf = new PdfDecomposer(buffer)\nawait pdf.initialize()\n\n// Use fingerprint for caching\nconst fingerprints = await pdf.getFingerprints()\nconst cacheKey = `pdf_\\${fingerprints.pdfHash}`\n\n// Check cache before processing\nconst cached = cache.get(cacheKey)\nif (!cached) {\n  const result = await pdf.decompose()\n  cache.set(cacheKey, result, { ttl: 3600 }) // 1 hour\n}\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Development Guidelines\n\n- Use TypeScript for all new code\n- Add tests for new features\n- Update README for API changes\n- Follow existing code style\n- Test in both Node.js and browser environments\n\n## Publishing\n\n### Setup for Publishing\n\n```bash\n# Initial setup (run once)\nnpm run setup:publishing\n\n# Verify configuration\nnpm run setup:verify\n```\n\n### Publishing Commands\n\n```bash\n# Publish to NPM only\nnpm run release:npm\n\n# Publish to GitHub Packages only\nnpm run release:github\n\n# Publish to both registries\nnpm run release:both\n\n# Version bump + publish (patch/minor/major)\nnpm run release:minor\n```\n\n## License\n\nPDF-Decomposer is dual-licensed:\n\n### Non-Commercial Use (Free)\n\n- Personal projects\n- Educational use\n- Research purposes\n- Open source projects\n\n### Commercial Use (Paid License Required)\n\n- Commercial applications\n- Revenue-generating products\n- Enterprise software\n- Distribution in commercial products\n\nFor commercial licensing, contact [febby.rachmat@gmail.com](mailto:febby.rachmat@gmail.com)\n\nSee [LICENSE](LICENSE) file for complete terms.\n\n## Links\n\n- [NPM Package](https://www.npmjs.com/package/@febbyrg/pdf-decomposer)\n- [GitHub Repository](https://github.com/febbyRG/pdf-decomposer)\n- [Issues](https://github.com/febbyRG/pdf-decomposer/issues)\n- [Releases](https://github.com/febbyRG/pdf-decomposer/releases)\n","readmeFilename":"README.md"}