{"_id":"@1001-digital/fine-images","_rev":"8-763a4df2ac31cdfaa9502516761f8ca5","name":"@1001-digital/fine-images","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@1001-digital/fine-images","version":"0.1.0","keywords":["adonisjs","adonis","image-cache","image-resize","sharp","drive","r2","s3","cloudflare","webp"],"license":"MIT","_id":"@1001-digital/fine-images@0.1.0","maintainers":[{"name":"jwahdatehagh","email":"jalil@1001.digital"}],"homepage":"https://github.com/1001-digital/fine-images#readme","bugs":{"url":"https://github.com/1001-digital/fine-images/issues"},"dist":{"shasum":"9a064232bd7863fdf4cbe1ae4b47cece7617e28d","tarball":"https://registry.npmjs.org/@1001-digital/fine-images/-/fine-images-0.1.0.tgz","fileCount":25,"integrity":"sha512-97PU5ZD/244xk2AW36LusBPYVt0yHc5FLHOuxPFc3L52WPvBYLwflIS6y85ow7O3wfpidGNBDadZpuoCIUxLJA==","signatures":[{"sig":"MEUCIQCl3KGAWMTVE/NUJftdFC6fE98H5Kh2nLJys3ubs3cTjwIgLw7azcgrJpvFt8El7qogPfuURke0tCWe0k0f7/2VM8Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27736},"main":"build/index.js","type":"module","_from":"file:1001-digital-fine-images-0.1.0.tgz","types":"./build/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./models/image_cache":"./build/src/models/image_cache.js","./fine_images_provider":"./build/providers/fine_images_provider.js","./services/image_resizer":"./build/services/image_resizer.js"},"scripts":{"build":"pnpm compile","clean":"del-cli build","compile":"pnpm clean && tsc","changeset":"changeset","typecheck":"tsc --noEmit","postcompile":"pnpm copy:templates","copy:templates":"copyfiles \"stubs/**/*.stub\" --up=0 build"},"_npmUser":{"name":"jwahdatehagh","email":"jalil@1001.digital"},"_resolved":"/tmp/d4c75beeed4ee16d77afecd7587432e6/1001-digital-fine-images-0.1.0.tgz","_integrity":"sha512-97PU5ZD/244xk2AW36LusBPYVt0yHc5FLHOuxPFc3L52WPvBYLwflIS6y85ow7O3wfpidGNBDadZpuoCIUxLJA==","repository":{"url":"git+https://github.com/1001-digital/fine-images.git","type":"git"},"_npmVersion":"11.11.0","description":"Image caching + resizing service for AdonisJS v7 — resizes to webp triples, stores on any Drive disk, optional Cloudflare CDN purge.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"luxon":"^3.7.0","sharp":"^0.34.0","del-cli":"^7.0.0","copyfiles":"^2.4.1","typescript":"~5.9.0","@types/node":"^24.0.0","@types/luxon":"^3.7.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@changesets/cli":"^2.30.0","@adonisjs/tsconfig":"^2.0.0","@adonisjs/assembler":"^8.0.0","@changesets/changelog-github":"^0.6.0"},"peerDependencies":{"sharp":"^0.33.0 || ^0.34.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@adonisjs/assembler":"^8.0.0"},"peerDependenciesMeta":{"@adonisjs/assembler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fine-images_0.1.0_1776710991214_0.08900949310350348","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@1001-digital/fine-images","version":"0.1.1","keywords":["adonisjs","adonis","image-cache","image-resize","sharp","drive","r2","s3","cloudflare","webp"],"license":"MIT","_id":"@1001-digital/fine-images@0.1.1","maintainers":[{"name":"jwahdatehagh","email":"jalil@1001.digital"}],"homepage":"https://github.com/1001-digital/fine-images#readme","bugs":{"url":"https://github.com/1001-digital/fine-images/issues"},"dist":{"shasum":"4db2fcdbab59e8305f4eeb13a002f911d54e8154","tarball":"https://registry.npmjs.org/@1001-digital/fine-images/-/fine-images-0.1.1.tgz","fileCount":25,"integrity":"sha512-stye8o0AH7ovDYqg4o9UyDikuGovkdVReaCLnIkCKnxdWMHE6CUqcZHvFJ+gDWakU96VW/YqV2YUQBoHmR9QyA==","signatures":[{"sig":"MEUCIQCwJalCwS9ClwD6vZ7XeUr0ym+jC1Z6L7QLHcaemJVtigIgTk8PK8Fdh6hJ1ADWGLmZmhzmZ9k7s0OdBSKOPyUMPXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28290},"main":"build/index.js","type":"module","_from":"file:1001-digital-fine-images-0.1.1.tgz","types":"./build/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./models/image_cache":"./build/src/models/image_cache.js","./fine_images_provider":"./build/providers/fine_images_provider.js","./services/image_resizer":"./build/services/image_resizer.js"},"scripts":{"build":"pnpm compile","clean":"del-cli build","compile":"pnpm clean && tsc","changeset":"changeset","typecheck":"tsc --noEmit","postcompile":"pnpm copy:templates","copy:templates":"copyfiles \"stubs/**/*.stub\" --up=0 build"},"_npmUser":{"name":"jwahdatehagh","email":"jalil@1001.digital"},"_resolved":"/tmp/d55efeab95c4530ee2fc82428845df28/1001-digital-fine-images-0.1.1.tgz","_integrity":"sha512-stye8o0AH7ovDYqg4o9UyDikuGovkdVReaCLnIkCKnxdWMHE6CUqcZHvFJ+gDWakU96VW/YqV2YUQBoHmR9QyA==","repository":{"url":"git+https://github.com/1001-digital/fine-images.git","type":"git"},"_npmVersion":"11.11.0","description":"Image caching + resizing service for AdonisJS v7 — resizes to webp triples, stores on any Drive disk, optional Cloudflare CDN purge.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"luxon":"^3.7.0","sharp":"^0.34.0","del-cli":"^7.0.0","copyfiles":"^2.4.1","typescript":"~5.9.0","@types/node":"^24.0.0","@types/luxon":"^3.7.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@changesets/cli":"^2.30.0","@adonisjs/tsconfig":"^2.0.0","@adonisjs/assembler":"^8.0.0","@changesets/changelog-github":"^0.6.0"},"peerDependencies":{"sharp":"^0.33.0 || ^0.34.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@adonisjs/assembler":"^8.0.0"},"peerDependenciesMeta":{"@adonisjs/assembler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fine-images_0.1.1_1776715173508_0.48789783057460445","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@1001-digital/fine-images","version":"0.2.0","keywords":["adonisjs","adonis","image-cache","image-resize","sharp","drive","r2","s3","cloudflare","webp"],"license":"MIT","_id":"@1001-digital/fine-images@0.2.0","maintainers":[{"name":"jwahdatehagh","email":"jalil@1001.digital"}],"homepage":"https://github.com/1001-digital/fine-images#readme","bugs":{"url":"https://github.com/1001-digital/fine-images/issues"},"dist":{"shasum":"345028c4cb74d7a2ac2d3cbf28d33feb71698a24","tarball":"https://registry.npmjs.org/@1001-digital/fine-images/-/fine-images-0.2.0.tgz","fileCount":25,"integrity":"sha512-iBJysYmjVrgMoCmYPw0wuElruxB47W/bpA+HJg/ooaRGYIxbhJmREUbedFyK62gWGekGzzNU10ENmv2WHlcHFw==","signatures":[{"sig":"MEUCIQDOQ6Br7V1DYW7MuQ+zNIlAosju4q+7DjYFZEp+BvTqZwIgEbtET21vNx6mEmvubuPv9JUWt7k2dtIKNPt3fkYnpY4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28421},"main":"build/index.js","type":"module","_from":"file:1001-digital-fine-images-0.2.0.tgz","types":"./build/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./models/image_cache":"./build/src/models/image_cache.js","./fine_images_provider":"./build/providers/fine_images_provider.js","./services/image_resizer":"./build/services/image_resizer.js"},"scripts":{"test":"tsx bin/test.ts","build":"pnpm compile","clean":"del-cli build","format":"prettier --write .","compile":"pnpm clean && tsc","changeset":"changeset","typecheck":"tsc --noEmit","postcompile":"pnpm copy:templates","copy:templates":"copyfiles \"stubs/**/*.stub\" --up=0 build"},"_npmUser":{"name":"jwahdatehagh","email":"jalil@1001.digital"},"_resolved":"/tmp/609e9f43f2bfde3838aa8b2c682dfa23/1001-digital-fine-images-0.2.0.tgz","_integrity":"sha512-iBJysYmjVrgMoCmYPw0wuElruxB47W/bpA+HJg/ooaRGYIxbhJmREUbedFyK62gWGekGzzNU10ENmv2WHlcHFw==","repository":{"url":"git+https://github.com/1001-digital/fine-images.git","type":"git"},"_npmVersion":"11.11.0","description":"Image caching + resizing service for AdonisJS v7 — resizes to webp triples, stores on any Drive disk, optional Cloudflare CDN purge.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","luxon":"^3.7.0","sharp":"^0.34.0","del-cli":"^7.0.0","prettier":"^3.0.0","copyfiles":"^2.4.1","typescript":"~5.9.0","@types/node":"^24.0.0","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","@types/luxon":"^3.7.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@changesets/cli":"^2.30.0","@adonisjs/tsconfig":"^2.0.0","@adonisjs/assembler":"^8.0.0","@changesets/changelog-github":"^0.6.0"},"peerDependencies":{"sharp":"^0.33.0 || ^0.34.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@adonisjs/assembler":"^8.0.0"},"peerDependenciesMeta":{"@adonisjs/assembler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fine-images_0.2.0_1776727654703_0.14940635285645132","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@1001-digital/fine-images","version":"0.3.0","keywords":["adonisjs","adonis","image-cache","image-resize","sharp","drive","r2","s3","cloudflare","webp"],"license":"MIT","_id":"@1001-digital/fine-images@0.3.0","maintainers":[{"name":"jwahdatehagh","email":"jalil@1001.digital"}],"homepage":"https://github.com/1001-digital/fine-images#readme","bugs":{"url":"https://github.com/1001-digital/fine-images/issues"},"dist":{"shasum":"334b84359bd4e85166f13643fe39694bfeb637df","tarball":"https://registry.npmjs.org/@1001-digital/fine-images/-/fine-images-0.3.0.tgz","fileCount":25,"integrity":"sha512-fekSGC8xlWzRpU6omqem87ySBXvL2IFcW5ggnSdKPa/TMudqjkwwmYW60f1NGzLATqeFZrzxgNPoa0U8N1M8Ow==","signatures":[{"sig":"MEYCIQC/6W3pSgK6dwV/F4s5T1ioX4wYOVjY2VbjBe81I0YL4gIhAOpBGtfp7xpRqb5eGCJySU36y2h4MIonoc8j0T5ytVjX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28489},"main":"build/index.js","type":"module","_from":"file:1001-digital-fine-images-0.3.0.tgz","types":"./build/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./models/image_cache":"./build/src/models/image_cache.js","./fine_images_provider":"./build/providers/fine_images_provider.js","./services/image_resizer":"./build/services/image_resizer.js"},"scripts":{"test":"tsx bin/test.ts","build":"pnpm compile","clean":"del-cli build","format":"prettier --write .","compile":"pnpm clean && tsc","changeset":"changeset","typecheck":"tsc --noEmit","postcompile":"pnpm copy:templates","copy:templates":"copyfiles \"stubs/**/*.stub\" --up=0 build"},"_npmUser":{"name":"jwahdatehagh","email":"jalil@1001.digital"},"_resolved":"/tmp/19ce6aed612c4ee5cfc57e86f410e553/1001-digital-fine-images-0.3.0.tgz","_integrity":"sha512-fekSGC8xlWzRpU6omqem87ySBXvL2IFcW5ggnSdKPa/TMudqjkwwmYW60f1NGzLATqeFZrzxgNPoa0U8N1M8Ow==","repository":{"url":"git+https://github.com/1001-digital/fine-images.git","type":"git"},"_npmVersion":"11.12.1","description":"Image caching + resizing service for AdonisJS v7 — resizes to webp triples, stores on any Drive disk, optional Cloudflare CDN purge.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","luxon":"^3.7.0","sharp":"^0.34.0","del-cli":"^7.0.0","prettier":"^3.0.0","copyfiles":"^2.4.1","typescript":"~5.9.0","@types/node":"^24.0.0","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","@types/luxon":"^3.7.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@changesets/cli":"^2.30.0","@adonisjs/tsconfig":"^2.0.0","@adonisjs/assembler":"^8.0.0","@changesets/changelog-github":"^0.6.0"},"peerDependencies":{"sharp":"^0.33.0 || ^0.34.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@adonisjs/assembler":"^8.0.0"},"peerDependenciesMeta":{"@adonisjs/assembler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fine-images_0.3.0_1776818647900_0.5939530732944565","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@1001-digital/fine-images","version":"0.4.0","keywords":["adonisjs","adonis","image-cache","image-resize","sharp","drive","r2","s3","cloudflare","webp"],"license":"MIT","_id":"@1001-digital/fine-images@0.4.0","maintainers":[{"name":"jwahdatehagh","email":"jalil@1001.digital"}],"homepage":"https://github.com/1001-digital/fine-images#readme","bugs":{"url":"https://github.com/1001-digital/fine-images/issues"},"dist":{"shasum":"a8f9d49bde8bd212525de390b41b3451925bf383","tarball":"https://registry.npmjs.org/@1001-digital/fine-images/-/fine-images-0.4.0.tgz","fileCount":25,"integrity":"sha512-6MfYqry77gAbAygxjHBNEVK8TUxZq7ScsjO4zkmAnR46NP8U7j/y2ymMd4v7l4oQeqmPWa0Jyp8NZrHOPf0CGw==","signatures":[{"sig":"MEUCICROfT6wZOVroXV7IzyJS6DZSBQKCr26miBEbUEfNWrDAiEA6ZqJXBvlTqhcoRzQE3TdcjManS/qGycD7I+XHuTxkp8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28827},"main":"build/index.js","type":"module","_from":"file:1001-digital-fine-images-0.4.0.tgz","types":"./build/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./models/image_cache":"./build/src/models/image_cache.js","./fine_images_provider":"./build/providers/fine_images_provider.js","./services/image_resizer":"./build/services/image_resizer.js"},"scripts":{"test":"tsx bin/test.ts","build":"pnpm compile","clean":"del-cli build","format":"prettier --write .","compile":"pnpm clean && tsc","changeset":"changeset","typecheck":"tsc --noEmit","postcompile":"pnpm copy:templates","copy:templates":"copyfiles \"stubs/**/*.stub\" --up=0 build"},"_npmUser":{"name":"jwahdatehagh","email":"jalil@1001.digital"},"_resolved":"/tmp/2293feb82157b30fed69b3c3cdeec590/1001-digital-fine-images-0.4.0.tgz","_integrity":"sha512-6MfYqry77gAbAygxjHBNEVK8TUxZq7ScsjO4zkmAnR46NP8U7j/y2ymMd4v7l4oQeqmPWa0Jyp8NZrHOPf0CGw==","repository":{"url":"git+https://github.com/1001-digital/fine-images.git","type":"git"},"_npmVersion":"11.11.0","description":"Image caching + resizing service for AdonisJS v7 — resizes to webp triples, stores on any Drive disk, optional Cloudflare CDN purge.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","luxon":"^3.7.0","sharp":"^0.34.0","del-cli":"^7.0.0","prettier":"^3.0.0","copyfiles":"^2.4.1","typescript":"~5.9.0","@types/node":"^24.0.0","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","@types/luxon":"^3.7.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@changesets/cli":"^2.30.0","@adonisjs/tsconfig":"^2.0.0","@adonisjs/assembler":"^8.0.0","@changesets/changelog-github":"^0.6.0"},"peerDependencies":{"sharp":"^0.33.0 || ^0.34.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@adonisjs/assembler":"^8.0.0"},"peerDependenciesMeta":{"@adonisjs/assembler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fine-images_0.4.0_1776857454634_0.10414607781420626","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@1001-digital/fine-images","version":"0.4.1","keywords":["adonisjs","adonis","image-cache","image-resize","sharp","drive","r2","s3","cloudflare","webp"],"license":"MIT","_id":"@1001-digital/fine-images@0.4.1","maintainers":[{"name":"jwahdatehagh","email":"jalil@1001.digital"}],"homepage":"https://github.com/1001-digital/fine-images#readme","bugs":{"url":"https://github.com/1001-digital/fine-images/issues"},"dist":{"shasum":"304545c5f98b03bd38a523fe1d042d828edd83b6","tarball":"https://registry.npmjs.org/@1001-digital/fine-images/-/fine-images-0.4.1.tgz","fileCount":25,"integrity":"sha512-s+u1zStYZG/8npzaxSPkITc6JOnRsjDAEhZuU9D8r6ttrc8dIwGZsfixmGIOS6vPcew08K4zo2y53q7RF6Yi4Q==","signatures":[{"sig":"MEYCIQDUneGFMTt1gmI0cSTC3akRaNfT/JTxzqjIOLwgFSyNXwIhAMumhybJDJAdgStzKBLyE028XcshZ3BSvISUUNa3RXK6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29868},"main":"build/index.js","type":"module","_from":"file:1001-digital-fine-images-0.4.1.tgz","types":"./build/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./models/image_cache":"./build/src/models/image_cache.js","./fine_images_provider":"./build/providers/fine_images_provider.js","./services/image_resizer":"./build/services/image_resizer.js"},"scripts":{"test":"tsx bin/test.ts","build":"pnpm compile","clean":"del-cli build","format":"prettier --write .","compile":"pnpm clean && tsc","changeset":"changeset","typecheck":"tsc --noEmit","postcompile":"pnpm copy:templates","copy:templates":"copyfiles \"stubs/**/*.stub\" --up=0 build"},"_npmUser":{"name":"jwahdatehagh","email":"jalil@1001.digital"},"_resolved":"/tmp/0b2404b060b461070373032940aa2ca3/1001-digital-fine-images-0.4.1.tgz","_integrity":"sha512-s+u1zStYZG/8npzaxSPkITc6JOnRsjDAEhZuU9D8r6ttrc8dIwGZsfixmGIOS6vPcew08K4zo2y53q7RF6Yi4Q==","repository":{"url":"git+https://github.com/1001-digital/fine-images.git","type":"git"},"_npmVersion":"11.16.0","description":"Image caching + resizing service for AdonisJS v7 — resizes to webp triples, stores on any Drive disk, optional Cloudflare CDN purge.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","luxon":"^3.7.0","sharp":"^0.34.0","del-cli":"^7.0.0","prettier":"^3.0.0","copyfiles":"^2.4.1","typescript":"~5.9.0","@types/node":"^24.0.0","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","@types/luxon":"^3.7.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@changesets/cli":"^2.30.0","@adonisjs/tsconfig":"^2.0.0","@adonisjs/assembler":"^8.0.0","@changesets/changelog-github":"^0.6.0"},"peerDependencies":{"sharp":"^0.33.0 || ^0.34.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@adonisjs/assembler":"^8.0.0"},"peerDependenciesMeta":{"@adonisjs/assembler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fine-images_0.4.1_1785175061922_0.17722114783351772","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@1001-digital/fine-images","version":"0.5.0","keywords":["adonisjs","adonis","image-cache","image-resize","sharp","drive","r2","s3","cloudflare","webp"],"license":"MIT","_id":"@1001-digital/fine-images@0.5.0","maintainers":[{"name":"jwahdatehagh","email":"jalil@1001.digital"}],"homepage":"https://github.com/1001-digital/fine-images#readme","bugs":{"url":"https://github.com/1001-digital/fine-images/issues"},"dist":{"shasum":"75b04bec36d8fb388c463d2f09dda966e5c0c1e8","tarball":"https://registry.npmjs.org/@1001-digital/fine-images/-/fine-images-0.5.0.tgz","fileCount":25,"integrity":"sha512-2HZHPW5lcZNR/UK1zmTg7lwBLOOx3jhHyt6wkO8XHkbj6Us5liHaNQn5/l3tmIPV1Q926q1qugiXRfZ4Gok7ng==","signatures":[{"sig":"MEYCIQD83cpgXI3/dBc09CD5WSSGZ9zSKFQ9tdb7PnMf/r/CyAIhAOnB56wS2x5AKui7S+nsxxCE4cph6o5u2qAaggJZDc21","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30643},"main":"build/index.js","type":"module","_from":"file:1001-digital-fine-images-0.5.0.tgz","types":"./build/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":"./build/index.js","./types":"./build/src/types.js","./services/main":"./build/services/main.js","./models/image_cache":"./build/src/models/image_cache.js","./fine_images_provider":"./build/providers/fine_images_provider.js","./services/image_resizer":"./build/services/image_resizer.js"},"scripts":{"test":"tsx bin/test.ts","build":"pnpm compile","clean":"del-cli build","format":"prettier --write .","compile":"pnpm clean && tsc","changeset":"changeset","typecheck":"tsc --noEmit","postcompile":"pnpm copy:templates","copy:templates":"copyfiles \"stubs/**/*.stub\" --up=0 build"},"_npmUser":{"name":"jwahdatehagh","email":"jalil@1001.digital"},"_resolved":"/tmp/53eb5edfc8d6d57a9a33351c3e906783/1001-digital-fine-images-0.5.0.tgz","_integrity":"sha512-2HZHPW5lcZNR/UK1zmTg7lwBLOOx3jhHyt6wkO8XHkbj6Us5liHaNQn5/l3tmIPV1Q926q1qugiXRfZ4Gok7ng==","repository":{"url":"git+https://github.com/1001-digital/fine-images.git","type":"git"},"_npmVersion":"11.16.0","description":"Image caching + resizing service for AdonisJS v7 — resizes to webp triples, stores on any Drive disk, optional Cloudflare CDN purge.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","luxon":"^3.7.0","sharp":"^0.34.0","del-cli":"^7.0.0","prettier":"^3.0.0","copyfiles":"^2.4.1","typescript":"~5.9.0","@types/node":"^24.0.0","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","@types/luxon":"^3.7.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@changesets/cli":"^2.30.0","@adonisjs/tsconfig":"^2.0.0","@adonisjs/assembler":"^8.0.0","@changesets/changelog-github":"^0.6.0"},"peerDependencies":{"sharp":"^0.33.0 || ^0.34.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@adonisjs/assembler":"^8.0.0"},"peerDependenciesMeta":{"@adonisjs/assembler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fine-images_0.5.0_1785332095701_0.16062729794329078","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@1001-digital/fine-images","description":"Image caching + resizing service for AdonisJS v7 — resizes to webp triples, stores on any Drive disk, optional Cloudflare CDN purge.","version":"0.6.0","license":"MIT","repository":{"type":"git","url":"git+https://github.com/1001-digital/fine-images.git"},"bugs":{"url":"https://github.com/1001-digital/fine-images/issues"},"homepage":"https://github.com/1001-digital/fine-images#readme","keywords":["adonisjs","adonis","image-cache","image-resize","sharp","drive","r2","s3","cloudflare","webp"],"type":"module","engines":{"node":">=22.0.0"},"main":"build/index.js","exports":{".":"./build/index.js","./fine_images_provider":"./build/providers/fine_images_provider.js","./services/main":"./build/services/main.js","./services/image_resizer":"./build/services/image_resizer.js","./models/image_cache":"./build/src/models/image_cache.js","./types":"./build/src/types.js"},"publishConfig":{"access":"public"},"peerDependencies":{"@adonisjs/assembler":"^8.0.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","sharp":"^0.33.0 || ^0.34.0"},"peerDependenciesMeta":{"@adonisjs/assembler":{"optional":true}},"devDependencies":{"@adonisjs/assembler":"^8.0.0","@adonisjs/core":"^7.0.0","@adonisjs/drive":"^4.0.0","@adonisjs/lucid":"^22.0.0","@adonisjs/tsconfig":"^2.0.0","@changesets/changelog-github":"^0.6.0","@changesets/cli":"^2.30.0","@japa/assert":"^4.2.0","@japa/runner":"^5.3.0","@types/luxon":"^3.7.0","@types/node":"^24.0.0","copyfiles":"^2.4.1","del-cli":"^7.0.0","luxon":"^3.7.0","prettier":"^3.0.0","sharp":"^0.34.0","tsx":"^4.21.0","typescript":"~5.9.0"},"scripts":{"clean":"del-cli build","compile":"pnpm clean && tsc","copy:templates":"copyfiles \"stubs/**/*.stub\" --up=0 build","postcompile":"pnpm copy:templates","build":"pnpm compile","typecheck":"tsc --noEmit","format":"prettier --write .","changeset":"changeset","test":"tsx bin/test.ts"},"types":"./build/index.d.ts","_id":"@1001-digital/fine-images@0.6.0","_integrity":"sha512-WlXf1Z+OFfGivv0aP5hbf7U1NFy9mRKp0/lmAOQyGqwFZqEHoByaxmYdFAXH6tz8qtnjfBWA1gZ7xG8Bi8JYAQ==","_resolved":"/tmp/9a501de517c502c1be887c5b3b446e58/1001-digital-fine-images-0.6.0.tgz","_from":"file:1001-digital-fine-images-0.6.0.tgz","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-WlXf1Z+OFfGivv0aP5hbf7U1NFy9mRKp0/lmAOQyGqwFZqEHoByaxmYdFAXH6tz8qtnjfBWA1gZ7xG8Bi8JYAQ==","shasum":"f23c274a96869ee23b94052ec38d1ed184117abd","tarball":"https://registry.npmjs.org/@1001-digital/fine-images/-/fine-images-0.6.0.tgz","fileCount":25,"unpackedSize":31715,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQClNElvvGNLwBJ9rQV9YfYeWg/knTsKIbycFZVY5xy7jwIhAJKHyMsD5CgzRRYGLKb72S6nzPJvhxUW8nU9AVa4rqcz"}]},"_npmUser":{"name":"jwahdatehagh","email":"jalil@1001.digital"},"directories":{},"maintainers":[{"name":"jwahdatehagh","email":"jalil@1001.digital"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fine-images_0.6.0_1785954639865_0.5002964470780391"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T18:49:51.059Z","modified":"2026-08-05T18:30:40.203Z","0.1.0":"2026-04-20T18:49:51.364Z","0.1.1":"2026-04-20T19:59:33.698Z","0.2.0":"2026-04-20T23:27:34.857Z","0.3.0":"2026-04-22T00:44:08.079Z","0.4.0":"2026-04-22T11:30:54.789Z","0.4.1":"2026-07-27T17:57:42.118Z","0.5.0":"2026-07-29T13:34:55.863Z","0.6.0":"2026-08-05T18:30:40.008Z"},"bugs":{"url":"https://github.com/1001-digital/fine-images/issues"},"license":"MIT","homepage":"https://github.com/1001-digital/fine-images#readme","keywords":["adonisjs","adonis","image-cache","image-resize","sharp","drive","r2","s3","cloudflare","webp"],"repository":{"type":"git","url":"git+https://github.com/1001-digital/fine-images.git"},"description":"Image caching + resizing service for AdonisJS v7 — resizes to webp triples, stores on any Drive disk, optional Cloudflare CDN purge.","maintainers":[{"name":"jwahdatehagh","email":"jalil@1001.digital"}],"readme":"# @1001-digital/fine-images\n\nImage caching + resizing for AdonisJS v7.\n\nTakes a source image buffer, resizes it to a set of webp variants (`xs`, `sm`, `md`, `lg`), stores them on any configured [Drive](https://docs.adonisjs.com/guides/drive) disk (R2, S3, local, …), tracks what variants exist in the `image_caches` table, and — optionally — purges the files from Cloudflare's edge cache when they change.\n\nExtracted from internal use by [evm.now](https://evm.now) and [networked.art](https://networked.art) so both consume the same implementation.\n\n## Install\n\n```sh\nnpm install @1001-digital/fine-images sharp\nnode ace configure @1001-digital/fine-images\nnode ace migration:run\n```\n\nThe `configure` step:\n\n- registers the provider in `adonisrc.ts`\n- creates `config/fine_images.ts`\n- publishes a migration for the `image_caches` table into `database/migrations/`\n- adds optional CDN-purge env vars to `.env.example` + `start/env.ts`\n\n## Usage\n\n```ts\nimport fineImages from '@1001-digital/fine-images/services/main'\n\n// Store variants keyed on (scope, key). `scope` is a free-form bucket name;\n// a few prefixes are built-in and can be extended via config.scopePrefixes.\nawait fineImages.put('avatar', profileAddress, buffer)\n\n// Preserve hard-edged graphics without lossy WebP colour bleed.\nawait fineImages.put('token', tokenKey, renderedSvgPng, { lossless: true })\n\n// Raise Sharp's input-pixel guard for a trusted, bounded processing path.\n// The option must be a positive integer; it cannot disable the safety limit.\nawait fineImages.put('token', tokenKey, unusuallyLargeRaster, {\n  limitInputPixels: 300_000_000,\n})\n\nconst url = await fineImages.getUrl('avatar', profileAddress, 'sm')\n\n// Batch fetch URLs for a scope and list of keys — handy for lists.\nconst urls = await fineImages.batchGetUrlsByScope('avatar', profileAddresses)\n\nawait fineImages.delete('avatar', profileAddress)\n```\n\nThe service takes a `Disk` in construction, so it works with whichever Drive disk is configured as default (or named via `config.disk`). Nothing in here is S3-specific.\n\n## Configuration\n\n`config/fine_images.ts`:\n\n```ts\nimport env from '#start/env'\nimport { defineConfig } from '@1001-digital/fine-images'\n\nexport default defineConfig({\n  disk: 'r2',\n  scopePrefixes: {\n    collection: 'collections',\n  },\n  cdnUrl: env.get('R2_CDN_URL'),\n  cloudflare: {\n    zoneId: env.get('CF_ZONE_ID'),\n    apiToken: env.get('CF_API_TOKEN'),\n  },\n})\n```\n\nLeave `cdnUrl`/`cloudflare` unset in dev — purge becomes a no-op.\n\n## Extending the model\n\nThe published Lucid model is a regular model. If you want to add a relation, extend it in your app:\n\n```ts\nimport BaseImageCache from '@1001-digital/fine-images/models/image_cache'\nimport { belongsTo } from '@adonisjs/lucid/orm'\nimport type { BelongsTo } from '@adonisjs/lucid/types/relations'\nimport Asset from '#models/asset'\n\nexport default class ImageCache extends BaseImageCache {\n  @belongsTo(() => Asset, { foreignKey: 'key' })\n  declare asset: BelongsTo<typeof Asset>\n}\n```\n\nFor schema changes (extra columns, different index), write a follow-up migration in your app — the package never reclaims the table.\n\n## Pure resizer\n\nIf you want the sharp toolchain without the caching service (e.g. one-off CLI work), import it directly:\n\n```ts\nimport { resizeImage } from '@1001-digital/fine-images/services/image_resizer'\n\nconst variants = await resizeImage(buffer)\n// → [{ size: 'xs', buffer }, { size: 'sm', buffer }, { size: 'md', buffer }, { size: 'lg', buffer }]\n\nconst losslessVariants = await resizeImage(renderedSvgPng, {\n  lossless: true,\n})\n\nconst largeRasterVariants = await resizeImage(unusuallyLargeRaster, {\n  limitInputPixels: 300_000_000,\n})\n```\n\n## Peer dependencies\n\n- `@adonisjs/core` ^7\n- `@adonisjs/lucid` ^22\n- `@adonisjs/drive` ^4\n- `sharp` ^0.33 || ^0.34\n\n`sharp` is a peer so the consumer controls the native-binary/platform target.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}