{"_id":"@adaptive-ds/assets-optimizer","_rev":"25-470aeee20b992fe1f7b59dac6065233a","name":"@adaptive-ds/assets-optimizer","dist-tags":{"latest":"0.20.0"},"versions":{"0.1.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.1.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.1.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"2f4efe6884f17c4a735f1b7c1c51c921c0c44fd4","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.1.0.tgz","fileCount":15,"integrity":"sha512-nsUzt/VlGvYhdHntDA6VF1PywZ7kI6ZOB3AGhSD9VeYwL7p+yvb/XNLxKe8JaGXnLPhHBCNWlV1VGF6KQWJfFA==","signatures":[{"sig":"MEQCIGg+39T7IOi2kIl+rw8zr/LRyI7y2MJK7s/WwMQxyOopAiAmXMXVxT3lkOn+cxGutIf3ULb97iq8gZQi/sS+g4suHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119533},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"ebe7aaf58edfd2b4224e220334301a0ed9f78db6","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"david1gp","email":"david1gruppenplan@gmail.com"},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"10.9.4","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"22.21.1","dependencies":{"sharp":"^0.34.5","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.1.0_1776239746984_0.3532606124891051","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.2.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.2.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"c1082f8b6d92a272b68c802e8f2aba1b4758c54b","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.2.0.tgz","fileCount":15,"integrity":"sha512-w6LCNMXohlZZ6p45lx2VjCj+bsiIBndF0YQFf7i4fqSuIHaht0NoA0l+WE7f67FKyM6MEap6AbOgkR6jIfZ/Sg==","signatures":[{"sig":"MEUCIQCphW9IJQV5EYnVkOkUcsfmjsZ0hkAe/53RKPtier3KDAIgaF/hUNfC7uJ9TNSC+91ALW+IqsbiiCi/ZYHyfm3leBM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":121129},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"5f8becc5afaeadc5fcdca22438cf6be164dfb615","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.12.1","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"sharp":"^0.34.5","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.2.0_1776497598174_0.8986559805767294","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@adaptive-ds/assets-optimizer","version":"0.2.1","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.2.1","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"f4c516cf9bb3ba17757176f5fdd5a427f1832f8b","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.2.1.tgz","fileCount":154,"integrity":"sha512-PBdukhl6IjRfBX5KnVWZqRzwqpWK7pX+Us+4RvU9fYLdKwwcwbbTbKX4Kej7Dzfm6Ef7xG83PSlbNmL3WLXzkw==","signatures":[{"sig":"MEUCIDEx/6PyjxsBbV59k0VcRAC0Jq1QHyDNWc7GQMl0GRNDAiEA/Kz14WXTWlMopjar4cWfWTsffTrkCCYD0E7mb1miV0I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181569},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"54f49f85b55ffff4efc3b650fd8b1083fcaaf703","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.12.1","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"sharp":"^0.34.5","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.2.1_1776503922263_0.014990381310715062","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.3.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.3.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"15179b832e71f7a60f0080d359257c7981c40738","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.3.0.tgz","fileCount":167,"integrity":"sha512-QFrD0OYqXFyii6XvJoUBh8CQWjQ7WV14F+X+SC7OjPn4DufH4Utc6o8wKD2yDrhRElXIF9r214il+jqfo2EFlg==","signatures":[{"sig":"MEUCICJfpBruJm42w3tt6zWpXeYO0ZwU4OhqdECGbikstmGhAiEAx3n5K6Sa3KDO5IEciBxrjkx5c5SzEEelUa6ku63jiuo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190084},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"8e52f7e72ea8d3324260b830c71f40ba9d8e53b9","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.12.1","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"sharp":"^0.34.5","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.3.0_1776524549084_0.4041933149917494","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@adaptive-ds/assets-optimizer","version":"0.3.1","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.3.1","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"4bf6700b02095d1fd196e527700f2886daff0031","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.3.1.tgz","fileCount":168,"integrity":"sha512-wn6K+B1T3XQ5Do4st4aG95DfnzDkAWCA8np2Y8ANuXyYePyNLkD+st2BSEO5E4Yqm6CdtCzFIyHi9skm1+VDWw==","signatures":[{"sig":"MEUCIDS3Ert86stNGKSBB5vYAWjHr7vlvsODfWwbAquix26pAiEA0lmi8MLa7Q0NQgIcCasJ1G89GUF/W2eUo0+EuWTbpCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":190156},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"af433ad72a94177b9ee4a94ab1ca0a1298393d91","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.12.1","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"sharp":"^0.34.5","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.3.1_1776524821996_0.404158261642634","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.4.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.4.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"7f933b56023cdee74007716b5772946a66c5ae19","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.4.0.tgz","fileCount":184,"integrity":"sha512-ttTkLDK9I8P8DM4/2Lwk2uCub92wbWHoGc/37De/amkRTtu/4uzzS9/OXZTzQTZHN/lwUxbxu+Feleg5C1s4Kw==","signatures":[{"sig":"MEUCIF+3ooEhKu2356zgpORBMgT/DtS6++1d3W2BYQafUO0XAiEAnADzEZvfkOXdfJBr4P0AYKEGZDSBQ2rdXFwwYMxwKo8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":230931},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"0de890129b9112eb12473c2356a207230701d54e","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.12.1","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"sharp":"^0.34.5","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.4.0_1776576806322_0.5703303732216898","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.5.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.5.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"ee8954798776780f7e5ef43d34d1b4705fdc973d","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.5.0.tgz","fileCount":185,"integrity":"sha512-jESbF0IsAi1iPezDRa02FhAPZ6n85kpLRSA1OPot43hrIzp3wDsBLVVrA6QBsPO/5DTO3mtaOwv9Yj2ws5uJfw==","signatures":[{"sig":"MEUCIEQ0jJuk9y4VfZFa4XjuDRbFG+T6DOGAxACtIu5qUaWkAiEApFWegwDKff2lXRES4BNiBwLb2JhuIfwGbg7EjJjxNFM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":230224},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"3594bc788635c83d6c213e03b66074f85e82e0ba","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.12.1","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"sharp":"^0.34.5","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.5.0_1776578557376_0.528815689751992","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.6.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.6.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"7ee0bd8041ebbb298c4fd7b9c8ef8d0240f9185f","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.6.0.tgz","fileCount":204,"integrity":"sha512-4ZP3yWnlVFds+qW/QNqhLJPhqiE6/iQnJmXphkeKyG6u/4ZYm+0nfyu3qFJigFKVXZ5AnzurLspMSqiUvENsDw==","signatures":[{"sig":"MEYCIQCT4MXx1j7Z6f0fzcw4PXLZVqxurqgTqJ9pOFscOqUN6wIhALkYCNAQ0fct5XKtie3KMy0x/pKBzIWlAr83iPWBMGo8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":268655},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"d8a4d634c323e5c7369d903aa8da79914b20f3f6","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.12.1","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"20.20.2","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.6.0_1776696450426_0.5677055560574242","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@adaptive-ds/assets-optimizer","version":"0.6.1","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.6.1","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"02e190a3ff243502c6f63c4fb04834ec6753d51b","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.6.1.tgz","fileCount":205,"integrity":"sha512-QhDqZDxu4ZitA5D9qWsu3rUVh1zYBkUe2H+v8BaJ4B9272FfRm/xt4jgA9BpytkKJDfLNVDAl0aW6xvvGbeRCQ==","signatures":[{"sig":"MEUCID2xrqqJxfAqr6qmBggsL6EEGJLEX0gHQXOkD0Sk1cp/AiEAsanpm8vwFkfSEygVwF6wTx8rDlGzTGUqV8dEpFHSVhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":268928},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"ae2acea9d3340500bc813b9a3b352ad1378f8d36","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.13.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.14.1","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.6.1_1777295491375_0.8005815656527755","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.7.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.7.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"49ef0e5d2e9ec0f1b31450b25ed913e00f1b980e","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.7.0.tgz","fileCount":206,"integrity":"sha512-0XR/Kc3G4Dx2KBHJZ/bcatHeRtE+jf4htKYD+IKPbM/p19Ek+r2D+FbPRmsM2epYOF4I7RQE28QXCfZqa9zikg==","signatures":[{"sig":"MEYCIQDz5XHVYOyl7Tx2N4eRa4iPrG2wENgmxhP9rOVNIRSbhwIhAJm5w9bNC45oA9ZNvVEFIO3VKKlnd/IEWulqrs0q/A0N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":270196},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"13eb2a59d04ba669d90b24e418b19e58c97278d8","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.15.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.15.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.7.0_1779778000072_0.3863075077521929","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.8.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.8.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"25a2b2843ec3b5f5bf40a7e87b435a87e5348bc7","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.8.0.tgz","fileCount":207,"integrity":"sha512-03F+QODIanZFtI39YsC9Ko58OE2jRHLoyygfojNlcZBlAD8r9P0UBCJ26XovCLAaR3MzYOo/iKj+wiaYx6QjxQ==","signatures":[{"sig":"MEYCIQDJj+oSY+rbGLp6VCFAchFPVzTe5B9Ew6WGvTCZvAgZuwIhALd8+mxLWrfpMJHLrZpP0/Dj5TBWOput6fiM31jTiZ9x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":270850},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"a8a789a8975fe672bc2797bfa2cd4fa7046e3c42","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.16.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.16.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.8.0_1780926686023_0.13266687431208224","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.9.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.9.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"e2d7c146c0620f0539d51f57c2facfc50e62f639","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.9.0.tgz","fileCount":208,"integrity":"sha512-JQbGPs4x0B685DZmbNs+kXpfDFVHTmc9gmJPMrdcge1XGHlhsaxKetne1A7UsRfWeouby56O3e5xpWWabarbUA==","signatures":[{"sig":"MEUCIQDn+BwrE0sBLlHIrmwFfQQ3rmto1/+5JtFnj/aU13U/gQIgZisaT5U0Iq9YFtQcDcfDRrJSgdOALTi7sTt1UTEOSDE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":272880},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"4fe07993b511e2d6aff0fcbb646b10eea0abb54f","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.17.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.16.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.9.0_1781357021034_0.6963160392947911","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.10.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.10.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"165f0a1e5ff5a97f9d9711c4d7662be9fe3aac30","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.10.0.tgz","fileCount":209,"integrity":"sha512-FOSKKZ1FdrQne6tZOqOdz0BUOas2bjWqP/RbgIVZg6RsNLx+aFECn5SNtYr2bChXOodts89WgmgaFk539CeYqg==","signatures":[{"sig":"MEUCIC/ipKIAmczolHG6je7UiOmWvBeHzlS1azUzR6xByIsLAiEA12akkGQ3ipX0eCsUaBkf4usiTTzGNI+o6FxezcC5znk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":273337},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"d9e8e6cd46ad382f317d42c8f9bb6eb58700425d","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.17.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.16.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.10.0_1781428433478_0.8551651811168917","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.11.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.11.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"65a2d5a384f3f1f625df9089573b2ea105239330","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.11.0.tgz","fileCount":219,"integrity":"sha512-IfAhb1G0HnsNWfT6KR6QRYw1wdlGZSSGvm59+HIFY5g7rbqgbjaMGI/k1JmtPjQ9xDDyajNqIDVLp3V7/5M1mA==","signatures":[{"sig":"MEYCIQCZxiZ11sYt5j3mNksn1ixP7ZhBOd7dBb8asuiCayZeMAIhAJZGQQHfBTeAiIfEmSw6QeQTXRX+8FMl+QvIS4j9OUBd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":280156},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"f43a90de5af99173886f268ffd36a8e3d7a21750","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.17.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.16.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.11.0_1781483109686_0.9033197105027193","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.12.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.12.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"02bb78f46a919f9fa48c7f29e4af800093e0ed9f","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.12.0.tgz","fileCount":223,"integrity":"sha512-FOHrbP10vc+pGLmAjY/UQiY5l88nz63zOgR60ZMD70ImVys2Z6tU+AW6i0fI3DFMIEiI247jDcOGEyPPpN5EdQ==","signatures":[{"sig":"MEQCIEzBFuyEkpmeOvfGG9qYJyS3ZyWm8+ZEmNo0wwG7AMseAiAR3vjsn54G/gDBDf9nt4ZfMfEDLG/qoNHZBuFY3IkGCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":281569},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"230b38643e2b49e92c5fb8bc3c85dec8dafa2e45","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.17.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.16.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.12.0_1781670483392_0.2646102461846014","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.13.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.13.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"21047d802d3b0b068d63d2252f7328bf696e04fa","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.13.0.tgz","fileCount":224,"integrity":"sha512-O5+RkFKMfo05JlKK3iExjri7bpTcQdimi7PMj+JutBBvjT0b39QZtYSn531Hc0alp7hOLymOIXSrtCmoAi5dDA==","signatures":[{"sig":"MEYCIQD9QnGC4EJ9YRjJXnJXITJZrU3cP0FZjF0iMVTlOZxY5wIhAIOfsaXjIGHEXXwNYXUvJHsrotJl9hpLXvw5GI4bnr6e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":282465},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"f41696d54655ce4550c2a5f09356457a684878e5","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.17.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.16.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.13.0_1781686706255_0.6915503875129982","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.14.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.14.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"fb5f6dfb02013fd2d7ef7fafca79d8d189e719d4","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.14.0.tgz","fileCount":225,"integrity":"sha512-MfvDo9R1o2YEKS72H7QLO77IzUMVnBASLbGoR+4mS784XG8oOWetAtQVuIn0pq6kcalqgF8DvYqzSzdGW9TteA==","signatures":[{"sig":"MEUCIQD1rBlcQvL9eOrlBGttyppXZdNJpUZ8lO//v7Sp8pWq3AIgEfKUDhgf8EF14a8K6ajKVjhubwvhmPMzPBbSOWNKiHo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":282726},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"a9e47bd7311da106dd763c944280436a8895a404","private":false,"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.17.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.16.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.14.0_1781690637265_0.7922852766062805","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.15.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.15.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"e93246c0ab7c0530bb6c06469b18f167543b6e00","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.15.0.tgz","fileCount":227,"integrity":"sha512-af0S8qAKlBj+vCfILRbVZ8I8BfUX6ECGiGDZzb41wY2jd+DqerBT41WR3WMaaVc6RzU1Btb0XTHn/nG1DHjHJQ==","signatures":[{"sig":"MEUCIQCrD1efcAWPsEtyLKdY9g4THAkayaaPxxQ6qpiFOREFPwIgXSTSXVjoso2vdmj3w1kS50twGqBD6+rF0OqeeFK6Unw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":287439},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"7f1d8ea0ecfefd7ac557b5a3d7588c76315c2d77","private":false,"scripts":{"test":"bun test","build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src test","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.17.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.16.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.15.0_1781765539937_0.14213139324285518","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"@adaptive-ds/assets-optimizer","version":"0.15.1","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.15.1","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"655af6f40caecdd656c015aa9fc65bfa9d2ba9c9","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.15.1.tgz","fileCount":229,"integrity":"sha512-ZA468sjt01i/BjCvR7Ru+pN8iojqxH/qTd6VeOpWd++3QuEhbyPDOAfdlm0NWbHHWpULp0a5BzBaEh4OblAY3A==","signatures":[{"sig":"MEUCIHbXq0tpwVqSXeGteNf1Nk4QZsMLCKeQoMXo4lanOH0iAiEAsDq06LPUXyH9G8pnUVHBzYFRREcvHWAAj9x7XZv6mms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":290404},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"db02ecdb1a6fed7f57ecae9b6ba56ee37dcac47e","private":false,"scripts":{"test":"bun test","build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src test","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.17.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.16.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.15.1_1781790121224_0.5377094613950208","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.16.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.16.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"e482332938450f7333af4bebdf4165744dca74db","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.16.0.tgz","fileCount":231,"integrity":"sha512-RlcUxKwZohueSi5b1lRG0Nv1AqL3U5WEXDUmHLdCOMLS4NrLqRuprYreSbSGuy0uW5mQYoTcHTRksCm5ZAQL1A==","signatures":[{"sig":"MEUCIQDaWztwGuRIzKnQaIy4HQN6AMQPHP9PePcttwdDD+81CwIgDk52/6rCGF4r596B1Y2cHkv0zzVzMMkrFWnViIDZYB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":295333},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"2151e2800e3ba961e96100e857480a203cc1e227","private":false,"scripts":{"test":"bun test","build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src test","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.17.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.16.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.16.0_1782121800632_0.9093559092129246","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.17.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.17.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"d5589dfa00b2ac4dd1c967b36f53b5036527143f","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.17.0.tgz","fileCount":236,"integrity":"sha512-CfqnR3JrmMdj0gp3w51ZA4yaJETUx5yyMXNHA2hzLXfG6etuX3zWt3Q6cyEkJR11ONnv8yOGamd7ImrThuMqXg==","signatures":[{"sig":"MEQCIFf+StxZS3TEnq5/em96+h/72xVV8vwCvGMv4zXxoUW3AiAxY1pndHVlnPXirQ/Ldttu8E81qFtqkvZHzcWg7NRafw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":304540},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"c1d0773045b612393d429fce57fbd24f31817bd1","private":false,"scripts":{"test":"bun test","build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"bunx biome check --write src test","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"11.18.0","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.17.0_1783005874777_0.49145921541904714","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"@adaptive-ds/assets-optimizer","version":"0.17.1","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.17.1","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"daff38cfdf01bb03ea65a349e1da31c3fe97ff0a","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.17.1.tgz","fileCount":240,"integrity":"sha512-ke1hZXGR/QLCRgEyzqpjRY2BISV9NczSIQ4KqKo98+UJDMXSvzysR2Ja/1+JpLorZ+U/5KbzWJTID6cew2HHlg==","signatures":[{"sig":"MEQCIBltVyqAhnodUghYZg85xPCHSj7bk8nCqGe+EDzvhgCWAiAnme3KC3Jm03g/3C2nr6NxCF31buDeYTdRvuQ2uGnf7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":277123},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"a220a0f823c2ab225efe832114623a379226c0e5","private":false,"scripts":{"test":"bun test","build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"biome format --write src test package.json tsconfig.json tsconfig.lib.json biome.json","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"12.0.1","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.5.2"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.17.1_1785223970023_0.4915611759774825","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.18.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.18.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"c46b1c886787b529308abfa3c568d4364b59d93d","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.18.0.tgz","fileCount":247,"integrity":"sha512-Bq61+YZ4VCYEXW64O6sukX/tFjj5/FhAGcQ6Ar35D4eAXPHFQiJjmttWPeJViwjl8VkKrOu9Gi8hDkbGQnYf+Q==","signatures":[{"sig":"MEUCICn5FixDdVfUdyGo0UkYIUhhxeYFK8gtBNeZYPn3invyAiEA0zN1DcNd9C0io0SmmEdaw7y1jXkk4CD1zBt4VgkEa30=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":191537},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"7d4cb9235fc3618e939c4829cc7dfa8ea04238c9","private":false,"scripts":{"test":"bun test","build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"biome format --write src test package.json tsconfig.json tsconfig.lib.json biome.json","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"12.0.2","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.18.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.5.2"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.18.0_1786489258324_0.8917845282633743","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.19.0","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","_id":"@adaptive-ds/assets-optimizer@0.19.0","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"homepage":"https://github.com/david1gp/assets-optimizer","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"dist":{"shasum":"7ab1a3a1f9345ebab4989ab754e479a6773e9ac0","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.19.0.tgz","fileCount":247,"integrity":"sha512-cSvgfjgtAUwcQGfgy5a5T65VgCnnlKe8YcVAEnKxoA8wOHxpBx3f8Na5OkEk610NN3mlmIoc0MqLx5oVNN0rJg==","signatures":[{"sig":"MEUCIQCTTf8sZiZFszD6fIj/62lj/m66eWuUyUEsp7D41Z8vLAIgTg0gQbtzrawkL7kbaFs2g0CLPHn3nGjt1RseJZzPaQ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":191537},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"gitHead":"8a8148ffba35567516318bb378f6a2a0e8733c2a","private":false,"scripts":{"test":"bun test","build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json","format":"biome format --write src test package.json tsconfig.json tsconfig.lib.json biome.json","release":"bash ops/release.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"repository":{"url":"git+https://github.com/david1gp/assets-optimizer.git","type":"git"},"_npmVersion":"12.0.2","description":"Process and sync web project images and videos between local folders and R2","directories":{},"_nodeVersion":"24.19.0","dependencies":{"sharp":"^0.34.5","ttf2woff2":"^8.0.1","image-size":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^6.0.2","@types/node":"^25.6.0","@biomejs/biome":"^2.5.2"},"_npmOperationalInternal":{"tmp":"tmp/assets-optimizer_0.19.0_1786521902499_0.7839029839365632","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@adaptive-ds/assets-optimizer","version":"0.20.0","main":"./dist/index.js","bin":{"assets-optimizer":"dist/cli/assetsOptimizerCli.js"},"dependencies":{"@stricli/core":"^1.3.0","image-size":"^2.0.2","sharp":"^0.34.5","ttf2woff2":"^8.0.1","valibot":"^1.4.2"},"devDependencies":{"@biomejs/biome":"^2.5.2","@types/bun":"latest","@types/node":"^25.6.0","typescript":"^6.0.2"},"exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./*.js":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"description":"Process and sync web project images and videos between local folders and R2","homepage":"https://github.com/david1gp/assets-optimizer","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"license":"MIT","prettier":{"semi":false,"printWidth":120,"trailingComma":"all"},"private":false,"repository":{"type":"git","url":"git+https://github.com/david1gp/assets-optimizer.git"},"scripts":{"build":"rm -rf ./dist && bun tsc -p ./tsconfig.lib.json && chmod +x ./dist/cli/assetsOptimizerCli.js","format":"biome format --write src test package.json tsconfig.json tsconfig.lib.json biome.json","test":"bun test","release":"bash ops/release.sh"},"type":"module","types":"./dist/index.d.ts","gitHead":"ce96acee8496031a2c56fb7dd10f8d73f6ff7452","_id":"@adaptive-ds/assets-optimizer@0.20.0","bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"_nodeVersion":"24.19.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-rQL5KghgNFBAyDfwduz5DgV7h7VdpSoi3Y9jvnazN104ARs9+GMb4ZkvA59GpkZTcWPvTGNo+onS0oHzlqkvbA==","shasum":"f912f675659195f69e936eb456d776e9b27c3425","tarball":"https://registry.npmjs.org/@adaptive-ds/assets-optimizer/-/assets-optimizer-0.20.0.tgz","fileCount":283,"unpackedSize":231258,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptive-ds%2fassets-optimizer@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC/sxNHFldsr0BaovlPfCH8xj0NYUP7PPp70wmzIjbzJQIgOf2D9kd0pYAKrSnd8pr+4bKvUPHFjk7owL64egGvivQ="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5ee06ccd-ed0f-47e5-a8fd-b7a768644f41"}},"directories":{},"maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/assets-optimizer_0.20.0_1786923717178_0.7106130567363698"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-15T07:55:46.862Z","modified":"2026-08-16T23:41:57.791Z","0.1.0":"2026-04-15T07:55:47.110Z","0.2.0":"2026-04-18T07:33:18.326Z","0.2.1":"2026-04-18T09:18:42.420Z","0.3.0":"2026-04-18T15:02:29.268Z","0.3.1":"2026-04-18T15:07:02.152Z","0.4.0":"2026-04-19T05:33:26.490Z","0.5.0":"2026-04-19T06:02:37.526Z","0.6.0":"2026-04-20T14:47:30.659Z","0.6.1":"2026-04-27T13:11:31.567Z","0.7.0":"2026-05-26T06:46:40.233Z","0.8.0":"2026-06-08T13:51:26.170Z","0.9.0":"2026-06-13T13:23:41.176Z","0.10.0":"2026-06-14T09:13:53.634Z","0.11.0":"2026-06-15T00:25:09.838Z","0.12.0":"2026-06-17T04:28:03.543Z","0.13.0":"2026-06-17T08:58:26.448Z","0.14.0":"2026-06-17T10:03:57.433Z","0.15.0":"2026-06-18T06:52:20.084Z","0.15.1":"2026-06-18T13:42:01.371Z","0.16.0":"2026-06-22T09:50:00.764Z","0.17.0":"2026-07-02T15:24:34.981Z","0.17.1":"2026-07-28T07:32:50.162Z","0.18.0":"2026-08-11T23:00:58.479Z","0.19.0":"2026-08-12T08:05:02.675Z","0.20.0":"2026-08-16T23:41:57.328Z"},"bugs":{"url":"https://github.com/david1gp/assets-optimizer/issues"},"license":"MIT","homepage":"https://github.com/david1gp/assets-optimizer","keywords":["images","image-optimization","video","video-optimization","sharp","ffmpeg","r2","rclone","web-assets"],"repository":{"type":"git","url":"git+https://github.com/david1gp/assets-optimizer.git"},"description":"Process and sync web project images and videos between local folders and R2","maintainers":[{"name":"david1gp","email":"david1gruppenplan@gmail.com"}],"readme":"# @adaptive-ds/assets-optimizer\n\nProcess, hash, sync, and clean image assets for web projects that keep originals outside git and optionally sync through any `rclone` remote, with a separate pass for web videos.\n\nFeatures\n\n- originals may live on an `rclone` remote and be synced locally\n- optimized outputs should be deterministic and aggressively cacheable\n- output filenames should change when either the source file or the transform changes\n- old optimized files should be removed locally and remotely\n- generates type-safe `imageList.ts` and `videoList.ts` should stay in sync with processed assets\n\nQuick link\n\n- code - https://github.com/david1gp/assets-optimizer\n- npm - https://www.npmjs.com/package/@adaptive-ds/assets-optimizer\n\n\n## Diagrams\n\n### Overview\n\n![Overview](docs/arch/overview_v1.excalidraw.svg)\n\n### Images\n\n![Image process](docs/arch/process_image_v1.excalidraw.svg)\n\n### Videos\n\n![Video process](docs/arch/process_video_v1.excalidraw.svg)\n\n## What It Does\n\n`processAssets()` orchestrates the full workflow:\n\n1. Syncs originals from remote source to local `images` and `videos` folders via `rclone bisync`\n2. Runs `assetsOptimize()` to process images and videos locally\n3. Uploads optimized assets to s3-compatible remote destination with caching headers\n\n`assetsOptimize()` performs the core asset processing:\n\n1. Resolves the project name from `package.json.name`\n2. If `rcloneRemote` is configured, uses that project name as the base path on the remote\n3. If `rcloneRemote` is configured, syncs originals between the remote and `images`\n4. Scans transform folders like `1920x1080_jpg`, optionally nested in grouping folders\n5. Processes matching image source files with `sharp`\n6. Writes flat optimized images into `public/images`\n7. Names image files as `<basename>_<hash>.<ext>`\n8. Skips already-generated images\n9. Deletes stale optimized images locally\n10. If `rcloneRemote` is configured, uploads missing optimized images to the remote with cache headers\n11. If `rcloneRemote` is configured, deletes stale optimized images from the remote\n12. Runs a separate optional video pass from `videos` to `public/videos`\n13. Generates a hashed `<basename>_<hash>.webp` preview beside each processed video (full resolution, `sharp`-encoded)\n14. Keeps video filenames unchanged and skips any processed video or preview that already exists\n15. If `rcloneRemote` is configured, uploads videos with a short cache header and their hashed previews with a long (immutable) cache header\n16. Generates `src/app/assets/imageList.ts` and `src/app/assets/videoList.ts` by default\n17. Prints a clear summary of what changed\n\nThe hash is derived from:\n\n- source file bytes\n- normalized transform spec\n\nThat means image cache keys change when the source image changes or when you change the folder rule, even if the output filename format stays short.\n\n## Folder Convention\n\nOriginal files belong under one transform folder inside `images`. Arbitrary grouping folders may appear before and after the transform folder.\n\nExample:\n\n```text\nimages/\n  interiors/\n    homes/\n      1920x1080_jpg/\n        hero/\n          living-room.png\n  products/\n    1200x1200_webp/\n      kitchen.jpg\n```\n\nThis produces flat optimized image output like:\n\n```text\npublic/images/\n  living-room_9f8e7d6c.jpg\n  kitchen_7c6b5a4d.webp\n```\n\nFiles that are not inside a transform folder are ignored by design. Ignored folder names are configurable: by default, folders whose name contains `.git`, `ignore`, `discarded`, `skipped`, or `staging` are skipped entirely.\n\nAdd project-specific ignored folder names with `ignoredDirNames`:\n\n```ts\nawait assetsOptimize({\n  ignoredDirNames: [\"archive\", \"drafts\"],\n})\n```\n\nOnly the first transform folder in a path is used. If another transform-looking folder appears below it, that nested folder is skipped with a warning.\n\nVideos are handled separately and do not use transform folders:\n\n```text\nvideos/\n  hero.mp4\n  intro.webm\n\npublic/videos/\n  hero.mp4\n  hero_a1b2c3d4.webp\n  intro.webm\n  intro_9f8e7d6c.webp\n```\n\nVideo behavior:\n\n- if both local `videos` and remote `video-originals` are missing, the video pass does nothing\n- if `rcloneRemote` is configured, source videos sync through `video-originals`\n- if `rcloneRemote` is configured, processed videos sync through `video-processed`\n- missing processed videos are created with `ffmpeg`\n- missing preview images are created beside processed videos as `<basename>_<hash>.webp`:\n  `ffmpeg` extracts a representative frame at full resolution, then `sharp` re-encodes it to\n  webp at `videoPreviewQuality` (default `65`, the same encoder/quality scale used for images)\n- the preview hash is derived from the processed video's content, so the preview filename busts\n  when the video changes; previews can therefore be cached immutably even though video filenames\n  are not hashed\n- existing processed videos are skipped and preserved as manual transformations\n- existing previews are skipped; stale previews from a previous hash are removed when regenerated\n- video filenames and relative paths are kept as-is (optimize them by hand)\n- stale processed videos are not deleted\n\n## Hash Length\n\nOutput filenames are `<basename>_<hash>.<ext>`, where the hash defaults to 8 hex chars.\nSet `imageHashLength` to use a shorter (or longer) suffix:\n\n```ts\nawait assetsOptimize({\n  imageHashLength: 3,\n})\n```\n\n```text\nimages/1920x1080_webp/ship_PYM.webp  ->  public/images/ship_PYM_a1b.webp\n```\n\nThe hash only busts cache when a single file's content changes — the basename already\ndistinguishes different images, so cross-file collisions never matter. The only risk of a\nshort hash is that an edited file re-hashes to the same suffix and its cache is not busted:\nroughly `1 / 16^length` per edit (≈ 1/4096 at length 3). The generated `imageList.ts`\nstrips exactly `imageHashLength` hex chars to keep stable keys, so keep this value in sync\nwith the existing list.\n\n`imageTypeImportPath` sets the `import type { ImageType } from \"...\"` line of the\ngenerated `imageList.ts` (defaults to this package's name).\n\n## Transform Folder Format\n\nFolder names can use the full form:\n\n```text\n<width>x<height>_<format>\n```\n\n`<format>` is optional and defaults to `webp`. `<height>` is optional and defaults to `<width>`.\n\nSupported image output formats:\n\n- `jpg`\n- `png`\n- `webp`\nExamples:\n\n- `1920x1080_jpg`\n- `1600x900_webp`\n- `1600x900`\n- `1200_webp`\n- `1200`\nImage processing behavior:\n\n- resize fit: `inside` / max-bounds scaling\n- `withoutEnlargement: true`\n- image auto-rotation is applied\n- default quality is `80`\n\nSupported video source extensions:\n\n- `mp4`\n- `mov`\n- `m4v`\n- `webm`\n- `avi`\n- `mkv`\n\n## Installation\n\n```bash\nbun add -D @adaptive-ds/assets-optimizer\n```\n\n## Library usage\n\nUse `assetsOptimize()` when the optimizer is part of a project build:\n\n```ts\nimport { assetsOptimize } from \"@adaptive-ds/assets-optimizer\"\n\nawait assetsOptimize()\n```\n\nThis generates optimized images, processed videos, hashed webp video previews, `imageList.ts`, and `videoList.ts` in one run. \n\nExisting image alt text and existing video preview alt text are preserved when the generated files already exist.\nImage alt text can also be provided with a same-basename `.txt` or `.md` file next to the source image inside a transform folder. If both exist, `.txt` is used and `.md` is the fallback.\n\n## CLI usage\n\nAfter installing the package, pass options as typed kebab-case flags:\n\n```bash\nassets-optimizer optimize --no-process-images --no-process-videos --no-process-fonts\n```\n\nString arrays accept repeated flags, for example `--ignored-dir-names cache --ignored-dir-names tmp`. AI label settings use flattened flags such as `--ai-label-mode adaptive` and `--ai-label-placement bottom-right`. Run `assets-optimizer optimize --help` for the full list.\n\nThe CLI writes one JSON object to stdout. Successful runs use `{ \"success\": true, \"data\": ... }`; failures use `{ \"success\": false, \"error\": ... }` and exit with status 1. Requested logs are captured in an optional `diagnostics` field instead of being written as separate lines. Stderr stays empty.\n\n## Local folders\n\nThis package is built for a workflow with two local directories:\n\n- `images`: original source images, never modified\n- `public/images`: generated optimized images, flat output only\n- `videos`: original source videos, optional\n- `public/videos`: processed videos, optional\n\n## Optimization\n\n### Images\n\n- Source images live below transform folders like `1920x1080_jpg` inside `images/`\n- Grouping folders may appear before and after the transform folder\n- Each source file is resized to fit within the specified bounds without enlargement\n- Auto-rotation is applied based on EXIF data\n- Output quality defaults to 80%\n- Files are named using a hash of the source content and transform spec\n- Existing optimized files are skipped unless their source changed\n- Stale optimized files (from deleted sources or changed transforms) are removed\n- A TypeScript list file is generated with all processed image references\n\n### Videos\n\n- Source videos live directly in `videos/` (no transform folders)\n- Each video is copied to the output directory using `ffmpeg`\n- A hashed, full-resolution webp preview (`sharp`-encoded at `videoPreviewQuality`, default `65`) is generated beside each processed video\n- Video filenames stay unhashed (optimize length/etc. by hand); previews are content-hashed so they cache-bust on change\n- Existing processed videos and previews are preserved as-is\n- A TypeScript list file is generated with all processed video references\n\n## Requirements\n\n- `bun`\n- `rclone` >= 1.66 (for `bisync --create-empty-src-dirs`; distro packages like Debian 1.60.x are too old — install from https://rclone.org/install/)\n- `ffmpeg`\n- an existing `rclone` remote\n- write access to the target bucket/path\n- Node/Bun environment capable of running `sharp`\n\nThis package assumes the remote bucket/path already exists or can be created by `rclone mkdir`.\n\n## Cleanup Behavior\n\nThe package does not use a manifest.\n\nInstead it derives the expected output set from the current originals and current transform folders, then reconciles that against:\n\n- local `public/images`\n- remote `images/optimized` objects\n\nThat means:\n\n- files no longer produced by the current source set are deleted\n- renaming or removing a source file cleans up stale optimized files\n- changing a transform folder causes a different hash and a different output filename\n\n## Recommended Workflow\n\n1. Add or sync originals into `images/<grouping-folders>/<transform-folder>/<grouping-folders>/`\n2. Run your local image pipeline entrypoint\n3. Regenerate your typed image list\n4. Reference the generated hashed filenames from app code or derived metadata\n\n## Root image files\n\nBy default this package skips source images sitting directly at the root of `images`, so\nonly files below explicit transform folders are processed:\n\n```text\nimages/1920x1080_jpg/\n```\n\nThat contract is what makes the output deterministic and safe to clean automatically.\n\nIf you'd rather drop loose images at the root (e.g. one-off screenshots or placeholders),\nset `allowRootImageFiles: true`. Each root file is then optimized once at its **native\ndimensions** with the output format derived from its extension — no resizing, no transform\nfolder required. A root file's alt sidecar (`<name>.md` / `<name>.txt`) placed beside it is\npicked up too. Transform folders and root files can coexist in the same `images` tree.\n\n## AI Image Labels\n\nImages identified as AI-generated or AI-modified can automatically receive a visible watermark label during optimization to support EU AI Act labeling workflows. This feature helps incorporate AI disclosure labels into processed image assets; it does not present legal advice or guarantee regulatory compliance.\n\n### Detection & Precedence\n\nClassification is determined automatically by checking folder names, file names, or explicit transform folder suffixes:\n\n- **Filename detection**: Source file names containing an AI pattern as a substring anywhere in the filename (e.g. `hero_Ai_generated.png`, `chart-ai-modified.jpg`).\n- **Directory detection**: In-tree directory names inside the `images/` source tree containing an AI pattern as a substring anywhere in the folder name (e.g. `images/AI generated/1920x1080_jpg/`). Detection applies recursively to all images within that directory and its subdirectories; external parent directories outside the source tree are ignored.\n- **Accepted case, delimiter, and following-character forms**: The classification pattern is matched as a substring starting with `AI`, `Ai`, or `ai`, followed by a delimiter (` `, `.`, `_`, or `-`), and ending with `generated` or `modified` (e.g. `AI generated`, `Ai_modified`, `ai-generated`, `AI.modified`). The trailing `generated` or `modified` must occur at the end of the name or be followed by a non-letter character (e.g. `ai_generated_2.png` matches, but `ai-generatedness` does not).\n- **Transform folder suffix**: Transform folders can specify an explicit classification suffix: `<width>x<height>_<format>_ai_<classification>` or `<width>x<height>_ai_<classification>` (e.g. `1920x1080_jpg_ai_generated`, `1200_webp_ai_modified`, or `1200_ai_generated`).\n\nPrecedence (highest to lowest):\n1. Transform folder suffix (`_ai_generated` / `_ai_modified`)\n2. Source filename detection\n3. Parent directory detection (closest parent folder priority)\n\n### Configuration Options\n\nConfigure label rendering via `aiLabelOptions` on `assetsOptimize()`:\n\n```ts\nawait assetsOptimize({\n  aiLabelOptions: {\n    mode: \"adaptive\",\n    simpleColor: \"black\",\n    visual: \"padding\",\n    opacity: \"opaque\",\n    placement: \"bottom-right\",\n    height: 32,\n    offsetX: 0,\n    offsetY: 0,\n  },\n})\n```\n\nSupported options (`AiLabelOptions`):\n\n- **`mode`** (`\"simple\"` | `\"adaptive\"`, default `\"simple\"`): Selects color logic.\n  - `\"simple\"` uses the fixed `simpleColor`.\n  - `\"adaptive\"` analyzes pixels under the target region using linear relative luminance with alpha weighting to choose whichever color (`\"black\"` or `\"white\"`) has lower luminance contrast against the background so the label is less conspicuous. Ties or invisible regions default to `\"black\"`.\n- **`simpleColor`** (`\"black\"` | `\"white\"`, default `\"black\"`): Label color used in simple mode.\n- **`visual`** (`\"padding\"` | `\"circle\"`, default `\"padding\"`): Visual layout variant (padded badge or circular icon).\n- **`opacity`** (`\"opaque\"` | `\"50%\"`, default `\"opaque\"`): Opacity variant (100% fill or 50% transparency).\n- **`placement`** (`\"top-left\"` | `\"top-right\"` | `\"bottom-left\"` | `\"bottom-right\"`, default `\"bottom-right\"`): Target corner placement.\n- **`height`** (`number`, default `32`): Target label height in pixels.\n- **`offsetX`** / **`offsetY`** (`number`, default `0`): Horizontal/vertical offsets in pixels. Positive values inset the label away from the corner into the image interior; negative values shift toward the boundary and clamp to image edges.\n\n### Geometry & Small Images\n\nLabel scaling preserves the SVG aspect ratio based on the target `height`. If an image is smaller than the requested label dimensions, the label automatically scales down to fit within the image bounds without distortion or overflow. Label positioning and dimensions are clamped to stay entirely within the target image bounds.\n\n### Asset Packaging\n\nThe 12 physical pre-rendered vector SVG label assets (mapping to 16 classification/color/visual/opacity option combinations, with circular visual assets shared across classifications) are stored in `public/ai/` and included in NPM package distributions alongside `dist/` (`files: [\"dist\", \"public\"]`). Label SVGs are loaded using module-relative resolution (`import.meta.url`), ensuring compatibility across package deployments.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}