{"_id":"@briansunter/nib-images","_rev":"9-9b35ef44d957d49775454c184212db90","name":"@briansunter/nib-images","dist-tags":{"latest":"0.8.0"},"versions":{"0.1.0":{"name":"@briansunter/nib-images","version":"0.1.0","_id":"@briansunter/nib-images@0.1.0","maintainers":[{"name":"briansunter","email":"raggedy_quad.1j@icloud.com"}],"homepage":"https://github.com/briansunter/nib#readme","bugs":{"url":"https://github.com/briansunter/nib/issues"},"dist":{"shasum":"2ffa1c4a62fca18b5cce6987b1aec7d8149a9dc7","tarball":"https://registry.npmjs.org/@briansunter/nib-images/-/nib-images-0.1.0.tgz","fileCount":23,"integrity":"sha512-cZy2Ko0dP0q61j0X1Tgv8vudzcjowd6fvzchFVgYoLQr3obDdbzawUi4mefPgguVwuocuhs436doxRgtVZV12g==","signatures":[{"sig":"MEUCIQCZ40/wdiRlAbD0QIbDqkd1cBZfDX9x6S/JohdkHQbyTQIgC4JU7LD6Amwi8FFNDoA+pDk/DqjA5YgpFhzGVhTMEkA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41326},"type":"module","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugin":{"types":"./dist/plugin.d.ts","import":"./dist/plugin.js"}},"gitHead":"518d055aed5a41af2ca1c428f3c155b2ee520e08","scripts":{"test":"vitest run","build":"vite build --config vite.config.ts && tsc --project tsconfig.build.json && node scripts/postbuild-types.mjs","benchmark":"node scripts/benchmark.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"briansunter","email":"raggedy_quad.1j@icloud.com"},"repository":{"url":"git+https://github.com/briansunter/nib.git","type":"git"},"_npmVersion":"11.16.0","description":"Static, responsive image optimization for Nib.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.35.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"@briansunter/nib":"file:../.."},"peerDependencies":{"react":"^19.2.0","@briansunter/nib":">=0.8.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nib-images_0.1.0_1784449584867_0.3116922819407997","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@briansunter/nib-images","version":"0.2.0","_id":"@briansunter/nib-images@0.2.0","maintainers":[{"name":"briansunter","email":"raggedy_quad.1j@icloud.com"}],"homepage":"https://github.com/briansunter/nib#readme","bugs":{"url":"https://github.com/briansunter/nib/issues"},"dist":{"shasum":"b78bd0845f88101045d6d27e4d726a58d4ed621d","tarball":"https://registry.npmjs.org/@briansunter/nib-images/-/nib-images-0.2.0.tgz","fileCount":22,"integrity":"sha512-gx87e+LuDJD523YkngHAOYL0/48iHWp9ZhQwLc4WiFn62ptpxZveh1MUVEZ92fn653anRHAiqzusz7mC0N1dLA==","signatures":[{"sig":"MEUCIF4brVMQrE0qdYWPrd9xMd/Lq+c9ldp+eOvoD6ODXZ0MAiEA/z/qqZSsbveGT+l3Nh553rr575tU8ETdBFDtt0NeySs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@briansunter%2fnib-images@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":44242},"type":"module","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugin":{"types":"./dist/plugin.d.ts","import":"./dist/plugin.js"}},"gitHead":"2c3c33e2682d40adcac43c7b7c8e73ef66765766","scripts":{"test":"vitest run","build":"vite build --config vite.config.ts && tsc --project tsconfig.build.json && node scripts/postbuild-types.mjs","benchmark":"bun scripts/benchmark.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f2d6ad08-183d-4a57-b2e5-001897a3440e"}},"repository":{"url":"git+https://github.com/briansunter/nib.git","type":"git"},"_npmVersion":"11.5.1","description":"Static, responsive image optimization for Nib.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.35.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"@briansunter/nib":"file:../.."},"peerDependencies":{"react":"^19.2.0","@briansunter/nib":">=0.8.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nib-images_0.2.0_1784454156688_0.828102787761404","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@briansunter/nib-images","version":"0.3.0","_id":"@briansunter/nib-images@0.3.0","maintainers":[{"name":"briansunter","email":"raggedy_quad.1j@icloud.com"}],"homepage":"https://github.com/briansunter/nib#readme","bugs":{"url":"https://github.com/briansunter/nib/issues"},"dist":{"shasum":"f0f0dc001ab9dec96d7c33452ebe6ee1c0563b5a","tarball":"https://registry.npmjs.org/@briansunter/nib-images/-/nib-images-0.3.0.tgz","fileCount":22,"integrity":"sha512-iNtwUh6MdzGGPX2JbhPH1S8tgOdgw5Dsb/Mu8AlZN4CKJtmWap7EVlmAThLxjKyrE924pZqq7fS77eaDyO9u4A==","signatures":[{"sig":"MEYCIQDgdbFb27KGYMpDtbA9y8eSxmENKuiU2Nw6b/+WzE7b2AIhALYgIxTYSA0kb78DByxS+P1bT2ijoi1hYfNADI/rg6cC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@briansunter%2fnib-images@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":46667},"type":"module","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugin":{"types":"./dist/plugin.d.ts","import":"./dist/plugin.js"}},"gitHead":"a827bc4dbc39be122c7e88cacb8a9cc9c1046890","scripts":{"test":"vitest run","build":"vite build --config vite.config.ts && tsc --project tsconfig.build.json && node scripts/postbuild-types.mjs","benchmark":"bun scripts/benchmark.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f2d6ad08-183d-4a57-b2e5-001897a3440e"}},"repository":{"url":"git+https://github.com/briansunter/nib.git","type":"git"},"_npmVersion":"11.5.1","description":"Static, responsive image optimization for Nib.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.35.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"@briansunter/nib":"file:../.."},"peerDependencies":{"react":"^19.2.0","@briansunter/nib":">=0.8.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nib-images_0.3.0_1784503625898_0.22061024209187874","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@briansunter/nib-images","version":"0.4.0","_id":"@briansunter/nib-images@0.4.0","maintainers":[{"name":"briansunter","email":"raggedy_quad.1j@icloud.com"}],"homepage":"https://github.com/briansunter/nib#readme","bugs":{"url":"https://github.com/briansunter/nib/issues"},"dist":{"shasum":"69195a0a6b8082ca7601656d2002630d79ee4da7","tarball":"https://registry.npmjs.org/@briansunter/nib-images/-/nib-images-0.4.0.tgz","fileCount":23,"integrity":"sha512-0K8U/8SbCazMETBdKZfcq5RvCpmUWxNYOJ/TnY40G3TCk7GG1KSwVI343k1xGdymd9dkL/asn3aBiGga4VF3GQ==","signatures":[{"sig":"MEUCIG5U/+i+XE1Z7V+pmrfKg/EBWaGcyNqCB1ZGQoTq6rF0AiEA6Ivq2XmZS5R57c83hgNj5JBGIDtNE61N1D2wh86FxWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@briansunter%2fnib-images@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":57005},"type":"module","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugin":{"types":"./dist/plugin.d.ts","import":"./dist/plugin.js"}},"gitHead":"4a4cca026c308bec22c3c871e3a4fa4148027da8","scripts":{"test":"vitest run","build":"vite build --config vite.config.ts && tsc --project tsconfig.build.json && node scripts/postbuild-types.mjs","benchmark":"bun scripts/benchmark.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f2d6ad08-183d-4a57-b2e5-001897a3440e"}},"repository":{"url":"git+https://github.com/briansunter/nib.git","type":"git"},"_npmVersion":"11.5.1","description":"Static, responsive image optimization for Nib.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.35.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"@briansunter/nib":"file:../.."},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@briansunter/nib":">=0.8.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nib-images_0.4.0_1784515494463_0.7139144565327529","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@briansunter/nib-images","version":"0.5.0","_id":"@briansunter/nib-images@0.5.0","maintainers":[{"name":"briansunter","email":"raggedy_quad.1j@icloud.com"}],"homepage":"https://github.com/briansunter/nib#readme","bugs":{"url":"https://github.com/briansunter/nib/issues"},"dist":{"shasum":"5da14a1bf66bbeec6eec2b5ed024983054532a92","tarball":"https://registry.npmjs.org/@briansunter/nib-images/-/nib-images-0.5.0.tgz","fileCount":23,"integrity":"sha512-zsuTJtZO64BbR6vU32ErvWcoWhlRQOa+z9mibWA+gwf4Lgd/FIZ1YZKN2mDgFbD9ul1UbzH72PzgcyVuui7tRw==","signatures":[{"sig":"MEQCIE+06DhcdV31fY+8c8ZLDk3pBdsBQ8GfIo/YPQ56uCotAiA5Haz4PnEM8UMYuJZOSZ7bBTL/YSSHrJmz4UbidH7C0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@briansunter%2fnib-images@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":263539},"type":"module","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugin":{"types":"./dist/plugin.d.ts","import":"./dist/plugin.js"}},"gitHead":"1c0b45d30ecddb74194e335a8a4bc481d9df0c1a","scripts":{"test":"vitest run","build":"vite build --config vite.config.ts && tsc --project tsconfig.build.json && node scripts/postbuild-types.mjs","benchmark":"bun scripts/benchmark.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f2d6ad08-183d-4a57-b2e5-001897a3440e"}},"repository":{"url":"git+https://github.com/briansunter/nib.git","type":"git"},"_npmVersion":"11.5.1","description":"Static, responsive image optimization for Nib.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.35.0","parse5":"^8.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"@briansunter/nib":"file:../.."},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@briansunter/nib":">=0.8.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nib-images_0.5.0_1785265123130_0.90748822945307","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@briansunter/nib-images","version":"0.5.1","license":"UNLICENSED","_id":"@briansunter/nib-images@0.5.1","maintainers":[{"name":"briansunter","email":"raggedy_quad.1j@icloud.com"}],"homepage":"https://github.com/briansunter/nib#readme","bugs":{"url":"https://github.com/briansunter/nib/issues"},"dist":{"shasum":"63b433d703b845bf12fe2cad31599f8e10baaa74","tarball":"https://registry.npmjs.org/@briansunter/nib-images/-/nib-images-0.5.1.tgz","fileCount":25,"integrity":"sha512-tVT55mnBphM5EzufVy+8Rwcm3efOgEWR6TIlaIatQUjn0tEnuDnmwqvX1oFq60rJUYcdTnEH7YrRBJOrX/+JXg==","signatures":[{"sig":"MEUCIArU4zRB9KDpK3uz9h2i8x4Lv6jsApAdwaXntty+ndGFAiEAhVN3t0z6izpCewcKE0qmNIRViXPn5MnlFwhKp1k+Njc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@briansunter%2fnib-images@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":264952},"type":"module","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugin":{"types":"./dist/plugin.d.ts","import":"./dist/plugin.js"}},"gitHead":"8f8d12c6bf37ccdc9c841d5a1d9dc3d13108d9d1","scripts":{"test":"vitest run","build":"vite build --config vite.config.ts && tsc --project tsconfig.build.json && node scripts/postbuild-types.mjs","benchmark":"bun scripts/benchmark.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f2d6ad08-183d-4a57-b2e5-001897a3440e"}},"repository":{"url":"git+https://github.com/briansunter/nib.git","type":"git"},"_npmVersion":"11.5.1","description":"Static, responsive image optimization for Nib.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.35.0","parse5":"^8.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"@briansunter/nib":"file:../.."},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@briansunter/nib":">=0.8.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nib-images_0.5.1_1785268395112_0.4494578746941498","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@briansunter/nib-images","version":"0.6.0","license":"UNLICENSED","_id":"@briansunter/nib-images@0.6.0","maintainers":[{"name":"briansunter","email":"raggedy_quad.1j@icloud.com"}],"homepage":"https://github.com/briansunter/nib#readme","bugs":{"url":"https://github.com/briansunter/nib/issues"},"dist":{"shasum":"20450215fcc80cdba14945024ca579be4b48d370","tarball":"https://registry.npmjs.org/@briansunter/nib-images/-/nib-images-0.6.0.tgz","fileCount":25,"integrity":"sha512-5hXZi+Y2CEcRRTQRZ6M1tyhDqgLb8m1EKgd0+nlg/XFJii1Wi4/H5FD/j6Za87TSrP3JKUxKfN5WPOqnBwv3tA==","signatures":[{"sig":"MEYCIQDyGZceCOlF/MjePrM0udL1pch5RnNjKX7P9Trm8O6F4AIhANP2t8QqO91m0JNj22gVyiSyfPwNyCzmLZXUM0DAS4Zi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@briansunter%2fnib-images@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":267138},"type":"module","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugin":{"types":"./dist/plugin.d.ts","import":"./dist/plugin.js"}},"gitHead":"43fdb132f0c7a474450dbcf1391168a0396483f8","scripts":{"test":"vitest run","build":"vite build --config vite.config.ts && tsc --project tsconfig.build.json && node scripts/postbuild-types.mjs","benchmark":"bun scripts/benchmark.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f2d6ad08-183d-4a57-b2e5-001897a3440e"}},"repository":{"url":"git+https://github.com/briansunter/nib.git","type":"git"},"_npmVersion":"11.5.1","description":"Static, responsive image optimization for Nib.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.35.0","parse5":"^8.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"@briansunter/nib":"file:../.."},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@briansunter/nib":">=0.8.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nib-images_0.6.0_1785281746670_0.07753373493294724","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@briansunter/nib-images","version":"0.7.0","license":"UNLICENSED","_id":"@briansunter/nib-images@0.7.0","maintainers":[{"name":"briansunter","email":"raggedy_quad.1j@icloud.com"}],"homepage":"https://github.com/briansunter/nib#readme","bugs":{"url":"https://github.com/briansunter/nib/issues"},"dist":{"shasum":"94a5b947488e5c0d520c9bd2a6dc691fb6f02726","tarball":"https://registry.npmjs.org/@briansunter/nib-images/-/nib-images-0.7.0.tgz","fileCount":26,"integrity":"sha512-sdrY/TibKEa+GGm1TptW90qrfJCnBJEQ+iI5U2fgubKp82cenzV3y9Q16MLZrKraFphuLkXbR62jezp76DPxjg==","signatures":[{"sig":"MEUCIEMicZTvUiDoPmx/8iasIRbrXdQ5YuBlIduO2TcBVbafAiEAhmBs2fNNv8gpHsYUVCbnYBLbdIRi7jlJDWZcKiAR6oI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@briansunter%2fnib-images@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":271028},"type":"module","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugin":{"types":"./dist/plugin.d.ts","import":"./dist/plugin.js"}},"gitHead":"bfda6518ea3960d2e3996f8a60edeb3353a290b1","scripts":{"test":"vitest run","build":"vite build --config vite.config.ts && tsc --project tsconfig.build.json && node scripts/postbuild-types.mjs","benchmark":"bun scripts/benchmark.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f2d6ad08-183d-4a57-b2e5-001897a3440e"}},"repository":{"url":"git+https://github.com/briansunter/nib.git","type":"git"},"_npmVersion":"11.5.1","description":"Static, responsive image optimization for Nib.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.35.0","parse5":"^8.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"@briansunter/nib":"file:../.."},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0","@briansunter/nib":">=0.8.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nib-images_0.7.0_1785309735610_0.8096390855123756","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@briansunter/nib-images","version":"0.8.0","description":"Static, responsive image optimization for Nib.","license":"UNLICENSED","repository":{"type":"git","url":"git+https://github.com/briansunter/nib.git"},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./plugin":{"types":"./dist/plugin.d.ts","import":"./dist/plugin.js"},"./content":{"types":"./dist/content.d.ts","import":"./dist/content.js"}},"sideEffects":false,"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"engines":{"node":"^20.19.0 || >=22.12.0"},"peerDependencies":{"@briansunter/nib":">=0.15.0 <1.0.0","react":"^19.2.0","react-dom":"^19.2.0"},"dependencies":{"parse5":"^8.0.1","sharp":"^0.35.0"},"devDependencies":{"@briansunter/nib":"^0.20.0"},"scripts":{"build":"vite build --config vite.config.ts && tsc --project tsconfig.build.json && node scripts/postbuild-types.mjs","benchmark":"bun scripts/benchmark.mjs","typecheck":"tsc --noEmit","test":"vitest run"},"_id":"@briansunter/nib-images@0.8.0","gitHead":"fab2b0342205928e7562659a8274f3032317f9dc","bugs":{"url":"https://github.com/briansunter/nib/issues"},"homepage":"https://github.com/briansunter/nib#readme","_nodeVersion":"24.18.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-TldpNGm11S+Khw2LjunRvwGdjO23QRESntaZw1GQXiqXfGAZiDfti5es+h6wJ749MKBMRMAsUbc2LhxxJ5/+Pw==","shasum":"bec15abf55c2ba5d2de1c179486dc7738a7bcfa5","tarball":"https://registry.npmjs.org/@briansunter/nib-images/-/nib-images-0.8.0.tgz","fileCount":28,"unpackedSize":280500,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@briansunter%2fnib-images@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICPFKsfNSwjx5KMmuj42iXi9SGpuNJCShUtKn0npaiOTAiEAuhtSasxOTdiY6l/jEIzd2/mZP6scR20GeENuexjjRm0="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f2d6ad08-183d-4a57-b2e5-001897a3440e"}},"directories":{},"maintainers":[{"name":"briansunter","email":"raggedy_quad.1j@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nib-images_0.8.0_1786598142342_0.6823762515090297"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-19T08:26:24.608Z","modified":"2026-08-13T05:15:42.794Z","0.1.0":"2026-07-19T08:26:24.994Z","0.2.0":"2026-07-19T09:42:36.822Z","0.3.0":"2026-07-19T23:27:06.026Z","0.4.0":"2026-07-20T02:44:54.593Z","0.5.0":"2026-07-28T18:58:43.290Z","0.5.1":"2026-07-28T19:53:15.259Z","0.6.0":"2026-07-28T23:35:46.792Z","0.7.0":"2026-07-29T07:22:15.762Z","0.8.0":"2026-08-13T05:15:42.510Z"},"bugs":{"url":"https://github.com/briansunter/nib/issues"},"license":"UNLICENSED","homepage":"https://github.com/briansunter/nib#readme","repository":{"type":"git","url":"git+https://github.com/briansunter/nib.git"},"description":"Static, responsive image optimization for Nib.","maintainers":[{"name":"briansunter","email":"raggedy_quad.1j@icloud.com"}],"readme":"# Nib Images\n\n`@briansunter/nib-images` is the optional static image optimizer for Nib.\nInstall it alongside `@briansunter/nib`, add `images()` to `nib.config.ts`, and\nimport local files with `?nib-image`. It produces static responsive `<picture>`\nmarkup; it does not add browser JavaScript.\n\n```ts\nimport { defineConfig } from '@briansunter/nib'\nimport { images } from '@briansunter/nib-images/plugin'\n\nexport default defineConfig({\n  plugins: [images()],\n})\n```\n\n```tsx\nimport { Image } from '@briansunter/nib-images'\nimport hero from './hero.jpg?nib-image'\n\nexport default function Page() {\n  return <Image src={hero} alt=\"Mountain trail\" layout=\"full\" priority />\n}\n```\n\nFor manual markup or client-enhancement data, call `useImage()` once in a\nserver-rendered component and reuse the returned resolver inside loops:\n\n```tsx\nimport { useImage } from '@briansunter/nib-images'\nimport photo from './photo.jpg?nib-image'\n\nexport function PhotoLink() {\n  const getImage = useImage()\n  const image = getImage({ src: photo, widths: [320, 640, 960] })\n  return <a href={image.src} data-srcset={image.srcSet}>View photo</a>\n}\n```\n\nThe result contains the fallback `src`, optional `srcSet` and `sizes`, display\ndimensions, modern-format `<source>` data, and a `passthrough` flag. Calling the\nresolver registers exactly the transforms that `Image` would register; encoding\nstill happens in the build finalizer. `useImage()` requires the renderer\nprovider installed by `images()` and is static-only, not a browser image API.\n\n## Resolve configured content images\n\nJSON collections and Markdown frontmatter often store the public URL already\nused by authored HTML. The server-only `/content` entry resolves those URLs to\nthe same `ImageSource` accepted by `Image` and `useImage`, without a\nconsumer-owned eager `import.meta.glob` catalog:\n\n```tsx\nimport { Image } from '@briansunter/nib-images'\nimport { resolveContentImage } from '@briansunter/nib-images/content'\n\nexport function ProjectCover({ cover }: { cover: string }) {\n  const source = resolveContentImage(cover)\n  return source\n    ? <Image src={source} alt=\"\" width={640} />\n    : <img src={cover} alt=\"\" />\n}\n```\n\n`resolveContentImage()` is generated from the existing `images({ content })`\nconfiguration. It accepts the authored public path, such as\n`/site-assets/projects/demo.jpg`, and returns `undefined` for an unknown or\ninvalid path. URL-encoded filenames are decoded safely. Missing configured\ndirectories produce an empty catalog; ambiguous duplicate public paths and\nfilenames containing URL separators such as `?`, `#`, or `\\` fail the build\nwith both source locations. Unreadable or corrupt candidates emit a warning\nand are omitted, preserving the existing unoptimized content fallback.\n\nEncoded path separators (`%2F` and `%5C`), NUL bytes, and double-encoded or\notherwise residual `%` sequences are rejected instead of being treated as an\nalias for another file.\n\nThe entry is synchronous because its static metadata catalog is generated in\nthe server Vite graph. Like `Image`, it cannot be imported by an enhancement,\nisland, or other browser-target module. Nested symlink entries are not followed\nby the catalog scan, and every configured content directory must resolve under\n`allowedSourceRoots` (the project root by default). The same boundary applies\nto development fallback responses and production copies. In development,\nnested file creation, updates, and deletion invalidate the generated module so\nthe server graph rebuilds the catalog.\n\nThe component entry is free of Sharp and Node imports. The `/plugin` entry owns\nmetadata inspection, development middleware, content-addressed caching, and\nbounded parallel transforms. `Image` is static-only and cannot be imported by\na browser-target module. Development watches imported sources and re-inspects changed\nbytes through HMR; unchanged content keeps its cache key and revalidates with\n`304` instead of being encoded again.\n\n`images()` validates options immediately, before Nib starts a Vite graph or\ncreates a renderer. The build-only package entry is the only supported plugin\nauthoring path; its internal benchmark utilities are not published as an import.\n\nThe content-addressed transform cache targets 10,000 images and 1 GiB by\ndefault. Every transform used by the current build or development session is\nprotected, so a larger active working set may exceed those soft limits instead\nof being evicted and recreated on the next build. Warm builds validate the\nencoded byte count and filesystem identity recorded alongside each SHA-256\ndigest, avoiding a full read of every unchanged image. Use checksum verification\nwhen the cache resides on untrusted or externally mutable storage, or tune the\ndeterministic least-recently-used cap:\n\n```ts\nimages({\n  cache: {\n    maxBytes: 2 * 1024 * 1024 * 1024,\n    maxEntries: 20_000,\n    verification: 'checksum',\n  },\n})\n```\n\nRendered `<img>` elements expose only objective source metadata for consumer\nstyling: `data-nib-orientation` (`landscape`, `portrait`, or `square`) plus\n`--nib-image-source-width`, `--nib-image-source-height`, and\n`--nib-image-source-aspect`. Orientation compares the intrinsic width and\nheight directly. Nib does not choose a visual comfort width or other\nsite-specific sizing policy.\n\nRendered content images can opt into the same optimizer without importing each\nfile in a component. Configure a project-relative source directory and its\npublic URL prefix; only matching `<img>` references in the completed HTML are\nrewritten, and the source catalog still owns metadata and cache identity.\nIn development, the same configured image roots are served at their authored\npublic paths (including a configured base path), so content-image pages do not\nfall back to broken source URLs before the production rewrite runs. Symlinks\nthat escape the configured directory are rejected.\n\nUse `data-nib-width` when the image's layout slot is smaller than its source\nfile. It controls the emitted intrinsic `width`/`height`; `data-nib-widths`\nremains the responsive candidate ladder and is capped at roughly 2x the\ndisplay width. If `data-nib-width` is omitted, the existing behavior uses the\nlargest `data-nib-widths` value for both.\n\nFor component images, an explicit `widths` array is the complete authored\ncandidate ladder: Nib filters it to usable source/layout bounds but does not\nsilently append the intrinsic or display width. When every authored width is\noutside those bounds, Nib emits one bounded fallback candidate.\n\n```ts\nimages({\n  content: [{\n    publicPath: '/media/',\n    directory: 'src/assets/media',\n    widths: [320, 640, 1280],\n    sizes: '(min-width: 900px) 860px, 100vw',\n  }],\n})\n```\n\n```html\n<img\n  src=\"/media/photo.jpg\"\n  alt=\"A small gallery photo\"\n  width=\"504\"\n  data-nib-width=\"504\"\n  data-nib-widths=\"240, 320, 480, 640, 960\"\n  sizes=\"(min-width: 1072px) 31.5rem, (min-width: 640px) calc(50vw - 2rem), calc(50vw - 1.25rem)\"\n>\n```\n\n`@briansunter/nib-images` is a separate Bun workspace package. It is built and\ntested from the repository root, but Release Please versions and publishes it\nindependently from `@briansunter/nib` when files in this package change.\n","readmeFilename":"README.md"}