{"_id":"@aguzztn54/strapi-blurhash-plugin","_rev":"5-19e896a5966425d955d3a84299b623bb","name":"@aguzztn54/strapi-blurhash-plugin","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.1":{"name":"@aguzztn54/strapi-blurhash-plugin","version":"0.1.1","keywords":["strapi","plugin","media","blurhash","thumbhash"],"author":{"url":"https://github.com/AguzzTN54","name":"AguzzTN54"},"license":"MIT","_id":"@aguzztn54/strapi-blurhash-plugin@0.1.1","maintainers":[{"name":"aguzztn54","email":"gusagusnanang@gmail.com"}],"contributors":[{"url":"https://github.com/emil-petras","name":"Emil Petras"}],"homepage":"https://github.com/AguzzTN54/strapi-blurhash-plugin","bugs":{"url":"https://github.com/AguzzTN54/strapi-blurhash-plugin/issues"},"dist":{"shasum":"922ca0737cf56e729e3216adc3115df04d66c3b0","tarball":"https://registry.npmjs.org/@aguzztn54/strapi-blurhash-plugin/-/strapi-blurhash-plugin-0.1.1.tgz","fileCount":5,"integrity":"sha512-luCLeehwpd4OnFoonq+DXZx4+4JUm1W2KzFld5gGnOK8caTbS80V3vm2ZjTttAm1gpPzPrffasFWNxYwg1v+BA==","signatures":[{"sig":"MEYCIQCrZnRRTHBk7+1rSxPbN2PR7Uz861QoAAnmyNCZ94KO9gIhAKtv0NcwaW9wgMXS3gtI8uXklBQahA5mXz6ttnICWC95","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20963},"type":"commonjs","_from":"file:aguzztn54-strapi-blurhash-plugin-0.1.1.tgz","strapi":{"kind":"plugin","name":"blurhash","description":"Automatically generates Blurhash placeholders for uploaded images in Strapi CMS.","displayName":"Blurhash Generator for Strapi"},"exports":{"./package.json":"./package.json","./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"scripts":{"build":"strapi-plugin build && pnpm build:copy","watch":"strapi-plugin watch","verify":"strapi-plugin verify","build:copy":"node -e \"require('fs').copyFileSync('./server/src/types.d.ts', './dist/server/types.d.ts')\"","watch:link":"strapi-plugin watch:link","test:ts:back":"tsc -p server/tsconfig.json"},"_npmUser":{"name":"aguzztn54","email":"gusagusnanang@gmail.com"},"_resolved":"C:\\Users\\gusag\\AppData\\Local\\Temp\\2284f20ed2731958b85d14693b1f9972\\aguzztn54-strapi-blurhash-plugin-0.1.1.tgz","_integrity":"sha512-luCLeehwpd4OnFoonq+DXZx4+4JUm1W2KzFld5gGnOK8caTbS80V3vm2ZjTttAm1gpPzPrffasFWNxYwg1v+BA==","repository":{"url":"git+ssh://git@github.com/AguzzTN54/strapi-blurhash-plugin.git","type":"git"},"_npmVersion":"10.8.2","description":"Automatically generates Blurhash placeholders for uploaded images in Strapi CMS","directories":{},"_nodeVersion":"20.15.1","dependencies":{"sharp":"^0.33.5","thumbhash":"^0.1.1","node-fetch":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2","typescript":"^5.7.2","@strapi/strapi":"^5.6.0","@strapi/sdk-plugin":"^5.3.0","@strapi/typescript-utils":"^5.6.0"},"peerDependencies":{"sharp":"^0.33.5","@strapi/strapi":"^5.6.0","@strapi/sdk-plugin":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/strapi-blurhash-plugin_0.1.1_1736769230321_0.2918736269531277","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aguzztn54/strapi-blurhash-plugin","version":"0.1.2","keywords":["strapi","plugin","media","blurhash","thumbhash"],"author":{"url":"https://github.com/AguzzTN54","name":"AguzzTN54"},"license":"MIT","_id":"@aguzztn54/strapi-blurhash-plugin@0.1.2","maintainers":[{"name":"aguzztn54","email":"gusagusnanang@gmail.com"}],"contributors":[{"url":"https://github.com/emil-petras","name":"Emil Petras"}],"homepage":"https://github.com/AguzzTN54/strapi-blurhash-plugin","bugs":{"url":"https://github.com/AguzzTN54/strapi-blurhash-plugin/issues"},"dist":{"shasum":"02c21a8eaed4c9e2956f08cadf39656c9c25c46b","tarball":"https://registry.npmjs.org/@aguzztn54/strapi-blurhash-plugin/-/strapi-blurhash-plugin-0.1.2.tgz","fileCount":7,"integrity":"sha512-dgQxnIw7TTzUqsEWSSnEEV1hch6LOcDlqg4cSKoSFt4X66P+IWKPt4yJmDoQaUSrCA7xJAa1uG1xlQVO29EH2w==","signatures":[{"sig":"MEYCIQDXJa2OGN0JC3xIxpWPwxsDfBvCJQtCBATzECa/LlD6OgIhAJ+TRA1vyJLQKWOvdUmJxFhi5n979n/Tey2ygpmsbtQD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46687},"type":"commonjs","strapi":{"kind":"plugin","name":"blurhash","description":"Automatically generates Blurhash placeholders for uploaded images in Strapi CMS.","displayName":"Blurhash Generator for Strapi"},"exports":{"./package.json":"./package.json","./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"635fbc9dc45c7947111ec52f6934af9fe61845b5","scripts":{"build":"strapi-plugin build && pnpm build:copy","watch":"strapi-plugin watch","verify":"strapi-plugin verify","build:copy":"node -e \"require('fs').copyFileSync('./server/src/types.d.ts', './dist/server/types.d.ts')\"","watch:link":"strapi-plugin watch:link","test:ts:back":"tsc -p server/tsconfig.json"},"_npmUser":{"name":"aguzztn54","email":"gusagusnanang@gmail.com"},"repository":{"url":"git+ssh://git@github.com/AguzzTN54/strapi-blurhash-plugin.git","type":"git"},"_npmVersion":"10.8.2","description":"Automatically generates Blurhash placeholders for uploaded images in Strapi CMS","directories":{},"_nodeVersion":"20.15.1","dependencies":{"thumbhash":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2","typescript":"^5.7.2","@types/formidable":"^3.4.5","@strapi/typescript-utils":"5.3.0"},"peerDependencies":{"axios":"^1.7.4","sharp":"^0.32.6","@strapi/strapi":"^5.3.0","@strapi/sdk-plugin":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/strapi-blurhash-plugin_0.1.2_1742038163538_0.23999569982845737","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aguzztn54/strapi-blurhash-plugin","version":"0.1.3","description":"Automatically generates Blurhash placeholders for uploaded images in Strapi CMS","keywords":["strapi","plugin","media","blurhash","thumbhash"],"type":"commonjs","exports":{"./package.json":"./package.json","./strapi-server":{"types":"./dist/server/src/index.d.ts","source":"./server/src/index.ts","import":"./dist/server/index.mjs","require":"./dist/server/index.js","default":"./dist/server/index.js"}},"scripts":{"build":"strapi-plugin build && pnpm build:copy","build:copy":"node -e \"require('fs').copyFileSync('./server/src/types.d.ts', './dist/server/types.d.ts')\"","watch":"strapi-plugin watch","watch:link":"strapi-plugin watch:link","verify":"strapi-plugin verify","test:ts:back":"tsc -p server/tsconfig.json"},"dependencies":{"thumbhash":"^0.1.1"},"devDependencies":{"@strapi/typescript-utils":"5.3.0","@types/formidable":"^3.4.5","prettier":"^3.4.2","typescript":"^5.7.2"},"peerDependencies":{"@strapi/sdk-plugin":"^5.3.0","@strapi/strapi":"^5.3.0","axios":"^1.7.4","sharp":"^0.32.6"},"strapi":{"name":"blurhash","description":"Automatically generates Blurhash placeholders for uploaded images in Strapi CMS.","kind":"plugin","displayName":"Blurhash Generator for Strapi"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/AguzzTN54/strapi-blurhash-plugin.git"},"homepage":"https://github.com/AguzzTN54/strapi-blurhash-plugin","author":{"name":"AguzzTN54","url":"https://github.com/AguzzTN54"},"contributors":[{"name":"Emil Petras","url":"https://github.com/emil-petras"}],"_id":"@aguzztn54/strapi-blurhash-plugin@0.1.3","gitHead":"9dc975558bf60f57594079ae6bb3d6005d8584ca","bugs":{"url":"https://github.com/AguzzTN54/strapi-blurhash-plugin/issues"},"_nodeVersion":"20.15.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-LI7DS0MWEXKMmO9QG0Zr2nPqcPNcYhZaVgk7gB3BzmAFRpfrFu83UAU4FrkaGBs5MaYMvYptnBqIdelyq5GgTw==","shasum":"638461db55bdde549dd842ca3ae875fb4c39ad41","tarball":"https://registry.npmjs.org/@aguzztn54/strapi-blurhash-plugin/-/strapi-blurhash-plugin-0.1.3.tgz","fileCount":5,"unpackedSize":21345,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDppCekZVxVspzz/ThSVz+pPrP1Nd7g0cU0b8l4E/JfWAiAuNrX5lVapo/dJe0CTmYJ0XAL33Tf3a84lumCrVEru+Q=="}]},"_npmUser":{"name":"aguzztn54","email":"gusagusnanang@gmail.com","actor":{"name":"aguzztn54","email":"gusagusnanang@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"aguzztn54","email":"gusagusnanang@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/strapi-blurhash-plugin_0.1.3_1752058477494_0.3163560532597858"},"_hasShrinkwrap":false}},"time":{"created":"2025-01-13T11:53:50.234Z","modified":"2025-07-09T10:54:37.841Z","0.1.0":"2025-01-12T13:14:34.827Z","0.1.1":"2025-01-13T11:53:50.471Z","0.1.2":"2025-03-15T11:29:23.710Z","0.1.3":"2025-07-09T10:54:37.673Z"},"bugs":{"url":"https://github.com/AguzzTN54/strapi-blurhash-plugin/issues"},"author":{"name":"AguzzTN54","url":"https://github.com/AguzzTN54"},"license":"MIT","homepage":"https://github.com/AguzzTN54/strapi-blurhash-plugin","keywords":["strapi","plugin","media","blurhash","thumbhash"],"repository":{"type":"git","url":"git+ssh://git@github.com/AguzzTN54/strapi-blurhash-plugin.git"},"description":"Automatically generates Blurhash placeholders for uploaded images in Strapi CMS","contributors":[{"name":"Emil Petras","url":"https://github.com/emil-petras"}],"maintainers":[{"name":"aguzztn54","email":"gusagusnanang@gmail.com"}],"readme":"# Strapi Blurhash Generator Plugin\n\nAutomatically generates Blurhash placeholders for uploaded images in [Strapi CMS](https://strapi.io). Provides lightweight and visually appealing placeholders optimized for lazy loading, enhancing user experience and improving performance.\n\n## Requirement\n\nStrapi v5 or newer\n\n## Features\n\nThis plugin is inspired by and is a soft copy of [Strapi Blurhash](https://github.com/emil-petras/strapi-blurhash) but uses [Sharp](https://github.com/lovell/sharp/) and [Thumbhash](https://github.com/evanw/thumbhash) as the image processors, so this plugin can offering the following advantages:\n\n- Better detail and colors\n- Alpha support - You can keep the Transparency or fill the transparent space with any colors\n- Supports various image formats - `jpeg, png, svg, avif, webp, gif`\n\n## Installation\n\n### Install with npm\n\n```bash\n  npm install @aguzztn54/strapi-blurhash-plugin\n```\n\n### Install with yarn\n\n```bash\n  yarn add @aguzztn54/strapi-blurhash-plugin\n```\n\n### Install with pnpm\n\n```bash\n  pnpm install @aguzztn54/strapi-blurhash-plugin\n```\n\n## Configurations\n\nThis is an example configuration on file `config/plugins.ts` or `config/plugins.js`\n\n```js\n// config/plugins.ts\nimport type { BlurhashConfig } from '@aguzztn54/strapi-blurhash-plugin/dist/server/types';\n\ninterface PluginConfig extends BlurhashConfig {\n  [key: string]: any;\n}\nexport default ({ env }): PluginConfig => ({\n  blurhash: {\n    enabled: true,\n    config: {\n      regenerateOnUpdate: true,\n      forceRegenerateOnUpdate: false,\n      flatten: false,\n      flattenColor: {\n        r: 100,\n        g: 150,\n        b: 57,\n      },\n    },\n  },\n  // ... another Plugin\n});\n```\n\n| Properties                |       Types        | Default Value | Description                                                                                                                                                        |\n| ------------------------- | :----------------: | :-----------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `regenerateOnUpdate`      |     `boolean`      |    `false`    | Regenerate Blurhash when media is updated. If the media is replaced or cropped, this plugin will continue generating a new Blurhash string                         |\n| `forceRegenerateOnUpdate` |     `boolean`      |    `false`    | If `false`, the blurhash will only be generated if it is currently missing                                                                                         |\n| `flatten`                 |     `boolean`      |    `false`    | Remove Transparency and fill with color                                                                                                                            |\n| `flattenColor`            | `object \\| string` |    `white`    | Background color string or object, parsed by the [Color](https://github.com/Qix-/color?tab=readme-ov-file#constructors) Module, if unset, default color is `black` |\n\n## How To Get the BlurHash\n\nThe `blurhash` attribute will automatically appear when you populate your API endpoint. Below is an example of the response you will receive.\n\n```json\n{\n  \"data\": [\n    {\n      \"id\": 18,\n      \"documentId\": \"byxz57csj2ndeso36dp7gsf5\",\n      \"title\": \"Ngantroe Park\",\n      \"gallery\": [\n        {\n          \"id\": 95,\n          \"documentId\": \"f8u5xd6a9bjt4khd0pzmmke3\",\n          \"name\": \"f1-good-37eadc74.avif\",\n          \"hash\": \"f1_good_37eadc74_00f9a877f9\",\n          \"ext\": \".avif\",\n          \"mime\": \"image/avif\",\n          \"size\": 18.18,\n          \"url\": \"/uploads/f1_good_37eadc74_00f9a877f9.avif\",\n          \"blurhash\": \"GBgGDIR/iGdVqGeGYcWfJvoFVw==\"\n        }\n      ]\n    }\n  ]\n}\n```\n\n## How to use in Client Application\n\nYou will need [Thumbhash](https://github.com/evanw/thumbhash) to convert the Blurhash into an Image in your application, this module will works both in Node Server or browser environment.\n\n```js\n// if processed in node server\nconst decodedHash = Buffer.from(blurhash, 'base64').toString('binary');\n\n// if processed directly in the browser\nconst decodedHash = atob(blurhash);\n\n// Generate Image URL\nconst arrayBuffer = Uint8Array.from(decodedHash, (c) => c.charCodeAt(0));\nconst base64URL = Thumbhash.thumbHashToDataURL(arrayBuffer);\n```\n\n## License\n\n[MIT](https://choosealicense.com/licenses/mit/)\n\n## Changelog\n\n#### [0.1.3] - 09 Jul 2025\n\n- Add Support for API Upload\n\n#### [0.1.2] - 15 Mar 2025\n\n**Major Changes**\n\n- Use the same `Sharp` version as Strapi\n- Now, Blurhash is generated in the middleware before the media is uploaded to the storage server. However, updating the Blurhash still fetches the image from the Storage Server and may fail depending on your Storage Server configuration.\n- Use the same `Axios` package as Strapi instead of `node-fetch` to fetch images when regenerating Blurhash, eliminating the need for additional dependencies.\n- Optimizing Dependencies\n\n#### [0.1.1] - 13 Jan 2025\n\n- Transparent or Flatten Blurhash Support\n\n#### [0.1.0] - 12 Jan 2025\n\n- Initial Relase\n- Various mimetype support\n","readmeFilename":"README.md"}