{"_id":"@altano/astro-opengraph","_rev":"9-3e30e61742dfe2ce9d7b673f934573d0","name":"@altano/astro-opengraph","dist-tags":{"latest":"2.0.0"},"versions":{"0.0.1-alpha.1":{"name":"@altano/astro-opengraph","version":"0.0.1-alpha.1","keywords":["astro","astro-integration","opengraph","devtools"],"author":{"url":"https://alan.norbauer.com","name":"Alan Norbauer","email":"altano@gmail.com"},"license":"ISC","_id":"@altano/astro-opengraph@0.0.1-alpha.1","maintainers":[{"name":"altano","email":"altano@gmail.com"}],"homepage":"https://github.com/altano/npm-packages/tree/main/packages/astro-opengraph","bugs":{"url":"https://github.com/altano/npm-packages/issues"},"dist":{"shasum":"e6dd0f899c0f2021d0b0b1298bd521cc75401b48","tarball":"https://registry.npmjs.org/@altano/astro-opengraph/-/astro-opengraph-0.0.1-alpha.1.tgz","fileCount":3,"integrity":"sha512-JLLt2jihF1IdD22OcWkq0fMcc5BswUcEA6Hm0HzNraoXr5zr4hraG/fzy5FDOg5I7Nd1J+UmnVEtoZHy35p5sw==","signatures":[{"sig":"MEUCIQCRF3f7RhL1er6O9SQpy/vb2PXKKP25if6faw0EaYfdrgIgBkA1/7KpQ+qj4s+XZjP7MkstHt8mZKJFt2HbzSlzCM0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21095},"type":"module","_from":"file:altano-astro-opengraph-0.0.1-alpha.1.tgz","exports":{".":"./dist/index.js","./toolbar":"./dist/toolbar/index.js","./endpoint":"./dist/endpoint.js","./components/meta.astro":"./components/meta.astro"},"scripts":{"dev":"tsup --watch","lint":"eslint","build":"tsup --config ./tsup.config.ts","clean":"rm -rf .turbo && rm -rf .tsbuildinfo && rm -rf node_modules && rm -rf dist","format":"prettier --write src","lint:fix":"TIMING=1 eslint src/**/*.ts* --fix","test:e2e":"playwright test","test:unit":"vitest --run","build:types":"tsc --project tsconfig.declarations.json","lint:timing":"TIMING=1 eslint src/**/*.ts*","test:e2e:ui":"playwright test --ui","check:types:src":"tsc --noEmit","test:e2e:server":"astro --root tests/fixtures/ssg --port 3913 dev","test:unit:watch":"vitest","check:types:test":"tsc --noEmit --project ./tests/tsconfig.json","check:unused-dependencies":"depcheck"},"_npmUser":{"name":"altano","email":"altano@gmail.com"},"_resolved":"/private/var/folders/b2/jwtfxknj2sb_1xh_c60vxqrh0000gn/T/fbe0587d0426d03e0d7179f35ffa9999/altano-astro-opengraph-0.0.1-alpha.1.tgz","_integrity":"sha512-JLLt2jihF1IdD22OcWkq0fMcc5BswUcEA6Hm0HzNraoXr5zr4hraG/fzy5FDOg5I7Nd1J+UmnVEtoZHy35p5sw==","repository":{"url":"git+https://github.com/altano/npm-packages.git","type":"git","directory":"packages/astro-opengraph"},"_npmVersion":"10.9.2","description":"Open Graph Tools for Astro","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"he":"^1.2.0","satori":"^0.12.2","satori-html":"^0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vite":"^6.2.5","astro":"^5.5.6","react":"^19.1.0","sharp":"^0.33.1","vitest":"^3.1.1","depcheck":"^1.4.7","@types/he":"^1.2.3","react-dom":"^19.1.0","typescript":"^5.8.2","@types/node":"^22.13.10","@types/react":"^19.0.12","@altano/assets":"0.0.0","@altano/testing":"0.0.0","@altano/tsconfig":"0.0.0","@playwright/test":"1.47.0","@types/react-dom":"^19.0.4","@vitest/coverage-v8":"^3.1.1","jest-image-snapshot":"^6.4.0","@altano/build-config":"0.0.0","@altano/vitest-plugins":"1.1.0","@inox-tools/astro-tests":"0.5.1","@types/jest-image-snapshot":"^6.4.0"},"peerDependencies":{"astro":"5.x.x","react":">=18","react-dom":">=18","@types/react":">=18","@types/react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/astro-opengraph_0.0.1-alpha.1_1744175221487_0.8191498368400592","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-alpha.2":{"name":"@altano/astro-opengraph","version":"0.0.1-alpha.2","keywords":["astro","astro-integration","opengraph","devtools"],"author":{"url":"https://alan.norbauer.com","name":"Alan Norbauer","email":"altano@gmail.com"},"license":"ISC","_id":"@altano/astro-opengraph@0.0.1-alpha.2","maintainers":[{"name":"altano","email":"altano@gmail.com"}],"homepage":"https://github.com/altano/npm-packages/tree/main/packages/astro-opengraph","bugs":{"url":"https://github.com/altano/npm-packages/issues"},"dist":{"shasum":"c69cd34d54314f9a91493e8cad67103cc2ef7c2e","tarball":"https://registry.npmjs.org/@altano/astro-opengraph/-/astro-opengraph-0.0.1-alpha.2.tgz","fileCount":32,"integrity":"sha512-GGxOScUfGsV4CkTtBcnIdJenTnQXddA/0Fe+qCWy3NdFfcnq81H+M4rb/C9UB4X+ZpkYWf/4F2709Uy9DTS9WA==","signatures":[{"sig":"MEUCICusW+RV6BC/lk25eA0po/1hh/2kuqLdNXpO0wABQLPLAiEAygac2qN5GVZ0IwFpM0J35/Ev93b1VgDcoXjQRHWLBDY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1131703},"type":"module","_from":"file:altano-astro-opengraph-0.0.1-alpha.2.tgz","exports":{".":"./dist/index.js","./toolbar":"./dist/toolbar/index.js","./endpoint":"./dist/endpoint.js","./components/meta.astro":"./components/meta.astro"},"scripts":{"dev":"tsup --watch","lint":"eslint","build":"tsup --config ./tsup.config.ts","clean":"rm -rf .turbo && rm -rf .tsbuildinfo && rm -rf node_modules && rm -rf dist","format":"prettier --write src","lint:fix":"TIMING=1 eslint src/**/*.ts* --fix","test:e2e":"playwright test","test:unit":"vitest --run","build:types":"tsc --project tsconfig.declarations.json","lint:timing":"TIMING=1 eslint src/**/*.ts*","test:e2e:ui":"playwright test --ui","check:types:src":"tsc --noEmit","test:e2e:server":"astro --root tests/fixtures/ssg --port 3913 dev","test:unit:watch":"vitest","check:types:test":"tsc --noEmit --project ./tests/tsconfig.json","check:unused-dependencies":"depcheck"},"_npmUser":{"name":"altano","email":"altano@gmail.com"},"_resolved":"/private/var/folders/b2/jwtfxknj2sb_1xh_c60vxqrh0000gn/T/233135403c3ca70e9bcd944e3bcbda09/altano-astro-opengraph-0.0.1-alpha.2.tgz","_integrity":"sha512-GGxOScUfGsV4CkTtBcnIdJenTnQXddA/0Fe+qCWy3NdFfcnq81H+M4rb/C9UB4X+ZpkYWf/4F2709Uy9DTS9WA==","repository":{"url":"git+https://github.com/altano/npm-packages.git","type":"git","directory":"packages/astro-opengraph"},"_npmVersion":"10.8.2","description":"Open Graph Tools for Astro","directories":{},"sideEffects":false,"_nodeVersion":"20.18.1","dependencies":{"he":"^1.2.0","satori":"^0.12.2","satori-html":"^0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","vite":"^6.2.5","astro":"^5.5.6","react":"^19.1.0","sharp":"^0.33.1","vitest":"^3.1.1","depcheck":"^1.4.7","@types/he":"^1.2.3","react-dom":"^19.1.0","typescript":"^5.8.2","@types/node":"^22.13.10","@types/react":"^19.0.12","@altano/assets":"0.0.0","@altano/testing":"0.0.0","@altano/tsconfig":"0.0.0","@playwright/test":"1.47.0","@types/react-dom":"^19.0.4","@vitest/coverage-v8":"^3.1.1","jest-image-snapshot":"^6.4.0","@altano/build-config":"0.0.0","@altano/vitest-plugins":"1.1.0","@inox-tools/astro-tests":"0.5.1","@types/jest-image-snapshot":"^6.4.0"},"peerDependencies":{"astro":"5.x.x","react":">=18","react-dom":">=18","@types/react":">=18","@types/react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/astro-opengraph_0.0.1-alpha.2_1744241540875_0.5040080119746233","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.3":{"name":"@altano/astro-opengraph","version":"0.1.0-alpha.3","keywords":["astro","astro-integration","opengraph","devtools"],"author":{"url":"https://alan.norbauer.com","name":"Alan Norbauer","email":"altano@gmail.com"},"license":"ISC","_id":"@altano/astro-opengraph@0.1.0-alpha.3","maintainers":[{"name":"altano","email":"altano@gmail.com"}],"homepage":"https://github.com/altano/npm-packages/tree/main/packages/astro-opengraph","bugs":{"url":"https://github.com/altano/npm-packages/issues"},"dist":{"shasum":"4d5ae93f40d5cd9a61f3b6e727ebd7bf2d88a7cf","tarball":"https://registry.npmjs.org/@altano/astro-opengraph/-/astro-opengraph-0.1.0-alpha.3.tgz","fileCount":32,"integrity":"sha512-Fk4HqY56Bx8TjU8/d7y/tSCpJmANBgHJbVpA95EOnSJtCvzDGV4O7rNTW6CtO09JgtAnlibKgrSwzITmP6srNg==","signatures":[{"sig":"MEQCIA8QUX8/jkG+xp+WvCXGYWlu5vmcHVgKmCkPhiKdbTJtAiAKi9TwxaKNVp3pU6SQUSbKKKdcpBbNenbsRrZpYruPyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1132494},"type":"module","_from":"file:altano-astro-opengraph-0.1.0-alpha.3.tgz","exports":{".":"./dist/index.js","./toolbar":"./dist/toolbar/index.js","./endpoint":"./dist/endpoint.js","./components/meta.astro":"./components/meta.astro"},"scripts":{"dev":"tsup --watch","lint":"eslint","build":"tsup --config ./tsup.config.ts","clean":"rm -rf .turbo && rm -rf .tsbuildinfo && rm -rf node_modules && rm -rf dist","format":"prettier --write src","lint:fix":"TIMING=1 eslint src/**/*.ts* --fix","test:e2e":"playwright test","test:unit":"vitest --run","build:types":"tsc --project tsconfig.declarations.json","lint:timing":"TIMING=1 eslint src/**/*.ts*","test:e2e:ui":"playwright test --ui","check:types:src":"tsc --noEmit","test:e2e:server":"astro --root tests/fixtures/ssg --port 3913 dev","test:unit:watch":"vitest","check:types:test":"tsc --noEmit --project ./tests/tsconfig.json","check:unused-dependencies":"depcheck","check:types:astro-fixtures":"node --experimental-strip-types ./scripts/check-fixtures.ts"},"_npmUser":{"name":"altano","email":"altano@gmail.com"},"_resolved":"/private/var/folders/b2/jwtfxknj2sb_1xh_c60vxqrh0000gn/T/7c6d11bbb7724d1632705799d0627334/altano-astro-opengraph-0.1.0-alpha.3.tgz","_integrity":"sha512-Fk4HqY56Bx8TjU8/d7y/tSCpJmANBgHJbVpA95EOnSJtCvzDGV4O7rNTW6CtO09JgtAnlibKgrSwzITmP6srNg==","repository":{"url":"git+https://github.com/altano/npm-packages.git","type":"git","directory":"packages/astro-opengraph"},"_npmVersion":"10.9.2","description":"Open Graph Tools for Astro","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"he":"^1.2.0","satori":"^0.12.2","satori-html":"^0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zx":"^8.5.2","tsup":"^8.4.0","vite":"^6.2.5","astro":"^5.5.6","react":"^19.1.0","sharp":"^0.33.1","vitest":"^3.1.1","depcheck":"^1.4.7","@types/he":"^1.2.3","react-dom":"^19.1.0","typescript":"^5.8.2","@types/node":"^22.13.10","@types/react":"^19.0.12","@altano/assets":"0.0.0","@astrojs/check":"^0.9.4","@altano/testing":"0.0.0","@altano/tsconfig":"0.0.0","@playwright/test":"1.47.0","@types/react-dom":"^19.0.4","@vitest/coverage-v8":"^3.1.1","jest-image-snapshot":"^6.4.0","@altano/build-config":"0.0.0","@altano/vitest-plugins":"1.1.0","@altano/tiny-async-pool":"3.0.2","@inox-tools/astro-tests":"0.5.1","@types/jest-image-snapshot":"^6.4.0"},"peerDependencies":{"astro":"5.x.x","react":">=18","react-dom":">=18","@types/react":">=18","@types/react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/astro-opengraph_0.1.0-alpha.3_1744259753119_0.6915534177755662","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.4":{"name":"@altano/astro-opengraph","version":"0.1.0-alpha.4","keywords":["astro","astro-integration","opengraph","devtools"],"author":{"url":"https://alan.norbauer.com","name":"Alan Norbauer","email":"altano@gmail.com"},"license":"ISC","_id":"@altano/astro-opengraph@0.1.0-alpha.4","maintainers":[{"name":"altano","email":"altano@gmail.com"}],"homepage":"https://github.com/altano/npm-packages/tree/main/packages/astro-opengraph","bugs":{"url":"https://github.com/altano/npm-packages/issues"},"dist":{"shasum":"a327d989a0c306ca4f2d77a53c833d2a1f6c94d6","tarball":"https://registry.npmjs.org/@altano/astro-opengraph/-/astro-opengraph-0.1.0-alpha.4.tgz","fileCount":36,"integrity":"sha512-QFwtvhE7zxGw/fWJjw856iL7jTR5bNFzF/0fPvTUmSnR7mI6Y8Dac1s6MKTKLe/pxaNEjCoeOeOHK8/1RPiFpg==","signatures":[{"sig":"MEYCIQD93eqdits8WTxcQaeNrYlndzBMpOOTwqGbrD7H+Cn5cAIhAMWVz0fglxunrbOuV3KshQQ1k5WVGmZQ5SJQ6s+s4o8l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1134190},"type":"module","_from":"file:altano-astro-opengraph-0.1.0-alpha.4.tgz","exports":{".":"./dist/index.js","./config":"./dist/config.js","./toolbar":"./dist/toolbar/index.js","./endpoint":"./dist/endpoint.js","./components/meta.astro":"./components/meta.astro"},"scripts":{"dev":"tsup --watch","lint":"eslint","build":"tsup --config ./tsup.config.ts","clean":"rm -rf .turbo && rm -rf .tsbuildinfo && rm -rf node_modules && rm -rf dist","format":"prettier --write src","lint:fix":"TIMING=1 eslint src/**/*.ts* --fix","test:e2e":"playwright test","test:unit":"vitest --run","build:types":"tsc --project tsconfig.declarations.json","lint:timing":"TIMING=1 eslint src/**/*.ts*","test:e2e:ui":"playwright test --ui","check:types:src":"tsc --noEmit","test:e2e:server":"astro --root tests/fixtures/ui-frameworks --port 3913 dev","test:unit:watch":"vitest","check:types:test":"tsc --noEmit --project ./tests/tsconfig.json","check:unused-dependencies":"depcheck","check:types:astro-fixtures":"node --experimental-strip-types ./scripts/check-fixtures.ts"},"_npmUser":{"name":"altano","email":"altano@gmail.com"},"_resolved":"/private/var/folders/b2/jwtfxknj2sb_1xh_c60vxqrh0000gn/T/a36869685de219705d5192587c367a96/altano-astro-opengraph-0.1.0-alpha.4.tgz","_integrity":"sha512-QFwtvhE7zxGw/fWJjw856iL7jTR5bNFzF/0fPvTUmSnR7mI6Y8Dac1s6MKTKLe/pxaNEjCoeOeOHK8/1RPiFpg==","repository":{"url":"git+https://github.com/altano/npm-packages.git","type":"git","directory":"packages/astro-opengraph"},"_npmVersion":"10.9.2","description":"Open Graph Tools for Astro","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"he":"^1.2.0","satori":"^0.12.2","satori-html":"^0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zx":"^8.5.2","vue":"^3.5.13","tsup":"^8.4.0","vite":"^6.2.5","astro":"^5.5.6","sharp":"^0.33.1","preact":"^10.26.5","svelte":"^5.25.12","vitest":"^3.1.1","depcheck":"^1.4.7","@types/he":"^1.2.3","typescript":"^5.8.2","@types/node":"^22.13.10","@astrojs/vue":"^5.0.9","@altano/assets":"0.0.0","@astrojs/check":"^0.9.4","@altano/testing":"0.0.0","@astrojs/preact":"^4.0.8","@astrojs/svelte":"^7.0.9","@altano/tsconfig":"0.0.0","@playwright/test":"1.47.0","@vitest/coverage-v8":"^3.1.1","jest-image-snapshot":"^6.4.0","@altano/build-config":"0.0.0","@altano/vitest-plugins":"1.1.0","@altano/tiny-async-pool":"3.0.2","@inox-tools/astro-tests":"0.5.1","@types/jest-image-snapshot":"^6.4.0"},"peerDependencies":{"astro":"5.x.x","preact":">=10"},"_npmOperationalInternal":{"tmp":"tmp/astro-opengraph_0.1.0-alpha.4_1744426495298_0.5723608317572917","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@altano/astro-opengraph","version":"0.1.0","keywords":["astro","astro-integration","astro-component","devtools","image","opengraph","withastro"],"author":{"url":"https://alan.norbauer.com","name":"Alan Norbauer","email":"altano@gmail.com"},"license":"ISC","_id":"@altano/astro-opengraph@0.1.0","maintainers":[{"name":"altano","email":"altano@gmail.com"}],"homepage":"https://github.com/altano/npm-packages/tree/main/packages/astro-opengraph","bugs":{"url":"https://github.com/altano/npm-packages/issues"},"dist":{"shasum":"b018b6ce97477a4e61b45fe2e4ecc454240f11aa","tarball":"https://registry.npmjs.org/@altano/astro-opengraph/-/astro-opengraph-0.1.0.tgz","fileCount":14,"integrity":"sha512-dskzUP16BThwLZ9HFjwD8sShupCRfvNTq5jwg6t5ZB17YjkhkduoHq77+lnyAF2MCR0xq1mPjq3sLgb9u1r7YA==","signatures":[{"sig":"MEYCIQCkDutrORzRq8CzRyW3FofaULnl6nS0jqYxcx5JsKrsMQIhAOvBknDGdTc2nXMYSSZ2z00cdn3QPVvNU5knxZDtzeqM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1128453},"type":"module","_from":"file:altano-astro-opengraph-0.1.0.tgz","exports":{".":"./dist/index.js","./config":"./dist/config.js","./toolbar":"./dist/toolbar/index.js","./endpoint":"./dist/endpoint.js","./components/meta.astro":"./components/meta.astro"},"scripts":{"dev":"tsdown --watch","lint":"eslint","build":"tsdown","clean":"rm -rf .turbo && rm -rf .tsbuildinfo && rm -rf node_modules && rm -rf dist","format":"prettier --write src","lint:fix":"TIMING=1 eslint src/**/*.ts* --fix","test:e2e":"playwright test","test:unit":"vitest --run","lint:timing":"TIMING=1 eslint src/**/*.ts*","test:e2e:ui":"playwright test --ui","check:types:src":"tsc --noEmit","test:e2e:server":"astro --root tests/fixtures/ui-frameworks --port 3913 dev","test:unit:watch":"vitest","check:types:test":"tsc --noEmit --project ./tests/tsconfig.json","check:types:astro":"node --experimental-strip-types ./scripts/check-fixtures.ts","check:unused-dependencies":"depcheck"},"_npmUser":{"name":"altano","actor":{"name":"altano","type":"user","email":"altano@gmail.com"},"email":"altano@gmail.com"},"_resolved":"/tmp/dacfb77ae2ec4b6f1025367305b72536/altano-astro-opengraph-0.1.0.tgz","_integrity":"sha512-dskzUP16BThwLZ9HFjwD8sShupCRfvNTq5jwg6t5ZB17YjkhkduoHq77+lnyAF2MCR0xq1mPjq3sLgb9u1r7YA==","repository":{"url":"git+https://github.com/altano/npm-packages.git","type":"git","directory":"packages/astro-opengraph"},"_npmVersion":"10.9.2","description":"Open Graph Tools for Astro","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"he":"^1.2.0","satori":"^0.12.2","satori-html":"^0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zx":"^8.5.2","vue":"^3.5.13","vite":"^6.2.6","astro":"^5.8.0","sharp":"^0.33.1","preact":"^10.26.5","svelte":"^5.25.12","tsdown":"^0.12.3","vitest":"^3.1.4","depcheck":"^1.4.7","@types/he":"^1.2.3","typescript":"^5.8.2","@types/node":"^22.13.10","@astrojs/vue":"^5.0.9","@altano/assets":"0.0.1","@astrojs/check":"^0.9.4","@altano/testing":"0.0.1","@astrojs/preact":"^4.0.8","@astrojs/svelte":"^7.0.9","@altano/tsconfig":"0.0.1","@playwright/test":"1.51.1","@vitest/coverage-v8":"^3.1.4","jest-image-snapshot":"^6.4.0","@altano/build-config":"0.0.1","@altano/vitest-plugins":"1.1.0","@altano/tiny-async-pool":"4.0.0","@inox-tools/astro-tests":"0.5.1","@types/jest-image-snapshot":"^6.4.0"},"peerDependencies":{"astro":"5.x.x","preact":">=10"},"_npmOperationalInternal":{"tmp":"tmp/astro-opengraph_0.1.0_1751327846479_0.2857744063084813","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@altano/astro-opengraph","version":"0.1.1","keywords":["astro","astro-integration","astro-component","devtools","image","opengraph","withastro"],"author":{"url":"https://alan.norbauer.com","name":"Alan Norbauer","email":"altano@gmail.com"},"license":"ISC","_id":"@altano/astro-opengraph@0.1.1","maintainers":[{"name":"altano","email":"altano@gmail.com"}],"homepage":"https://github.com/altano/npm-packages/tree/main/packages/astro-opengraph","bugs":{"url":"https://github.com/altano/npm-packages/issues"},"dist":{"shasum":"97c12a01da731c6e47260e41e1b0ce253e3f6b13","tarball":"https://registry.npmjs.org/@altano/astro-opengraph/-/astro-opengraph-0.1.1.tgz","fileCount":18,"integrity":"sha512-KUFylO/Rnd2Q05Z8mHWJnNV8Id6DZc8Mu/oFBKHLfAliJkPUqBrEkRmDrchy6i8VRRB1GBzcM8RPhTGuCDsRQQ==","signatures":[{"sig":"MEUCIQCfn8sJNsWpGlrVobi24xdtFk8o165aF7iEpa5tCr+kLQIgU3IJNPamzt4HoRatXFrbmShHuHW7Lc0vkakJk8NU+hU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1162385},"type":"module","_from":"file:altano-astro-opengraph-0.1.1.tgz","exports":{".":"./dist/index.js","./config":"./dist/config.js","./toolbar":"./dist/toolbar/index.js","./endpoint":"./dist/endpoint.js","./components/meta.astro":"./components/meta.astro"},"scripts":{"dev":"tsdown --watch","lint":"eslint","build":"tsdown","clean":"rm -rf .turbo && rm -rf .tsbuildinfo && rm -rf node_modules && rm -rf dist","format":"prettier --write src","lint:fix":"TIMING=1 eslint src/**/*.ts* --fix","test:e2e":"playwright test","test:unit":"vitest --run","lint:timing":"TIMING=1 eslint src/**/*.ts*","test:e2e:ui":"playwright test --ui","check:types:src":"tsc --noEmit","test:e2e:server":"astro --root tests/fixtures/ui-frameworks --port 3913 dev","test:unit:watch":"vitest","check:types:test":"tsc --noEmit --project ./tests/tsconfig.json","check:types:astro":"node --experimental-strip-types ./scripts/check-fixtures.ts","check:unused-dependencies":"depcheck"},"_npmUser":{"name":"altano","actor":{"name":"altano","type":"user","email":"altano@gmail.com"},"email":"altano@gmail.com"},"_resolved":"/tmp/07d0c22abc44ec6ef616a6c6b0d52365/altano-astro-opengraph-0.1.1.tgz","_integrity":"sha512-KUFylO/Rnd2Q05Z8mHWJnNV8Id6DZc8Mu/oFBKHLfAliJkPUqBrEkRmDrchy6i8VRRB1GBzcM8RPhTGuCDsRQQ==","repository":{"url":"git+https://github.com/altano/npm-packages.git","type":"git","directory":"packages/astro-opengraph"},"_npmVersion":"10.9.2","description":"Open Graph Tools for Astro","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"he":"^1.2.0","satori":"^0.12.2","satori-html":"^0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zx":"^8.5.2","vue":"^3.5.13","vite":"^6.2.6","astro":"^5.10.1","sharp":"^0.33.1","preact":"^10.26.5","svelte":"^5.25.12","tsdown":"^0.12.9","vitest":"^3.1.4","depcheck":"^1.4.7","@types/he":"^1.2.3","typescript":"^5.8.2","@types/node":"^22.13.10","@astrojs/vue":"^5.0.9","@altano/assets":"0.0.1","@astrojs/check":"^0.9.4","@altano/testing":"0.0.1","@astrojs/preact":"^4.0.8","@astrojs/svelte":"^7.0.9","@altano/tsconfig":"0.0.1","@playwright/test":"1.51.1","@vitest/coverage-v8":"^3.1.4","jest-image-snapshot":"^6.4.0","@altano/build-config":"0.0.1","@altano/vitest-plugins":"1.1.0","@altano/tiny-async-pool":"4.0.1","@inox-tools/astro-tests":"0.5.1","@types/jest-image-snapshot":"^6.4.0"},"peerDependencies":{"astro":"5.x.x","preact":">=10"},"_npmOperationalInternal":{"tmp":"tmp/astro-opengraph_0.1.1_1751863787086_0.5505134128156464","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@altano/astro-opengraph","version":"1.0.0","keywords":["astro","astro-integration","astro-component","devtools","image","opengraph","withastro"],"author":{"url":"https://alan.norbauer.com","name":"Alan Norbauer","email":"altano@gmail.com"},"license":"ISC","_id":"@altano/astro-opengraph@1.0.0","maintainers":[{"name":"altano","email":"altano@gmail.com"}],"homepage":"https://github.com/altano/npm-packages/tree/main/packages/astro-opengraph","bugs":{"url":"https://github.com/altano/npm-packages/issues"},"dist":{"shasum":"d1d87a814ee0d7fd9def7a5433eab5c0c4d5d783","tarball":"https://registry.npmjs.org/@altano/astro-opengraph/-/astro-opengraph-1.0.0.tgz","fileCount":17,"integrity":"sha512-Jeg6WzsO+qLbUyDSgHWa5BNZV846eEG7dlhQei1M9Dcn5tPSNXEGbmk/NV8hkiIm2GPdOzWDxNgHsqnBfyIxZQ==","signatures":[{"sig":"MEQCIC4cOqnl4+agTanlgoJZ2N3FhhZM9hSDfKIor/VceIsKAiAkdfIVm/FDC2bZV/t7B8uG4C11UoRzPZB2DdoJNvkykw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@altano%2fastro-opengraph@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1161145},"type":"module","_from":"file:altano-astro-opengraph-1.0.0.tgz","exports":{".":"./dist/index.js","./config":"./dist/config.js","./toolbar":"./dist/toolbar/index.js","./endpoint":"./dist/endpoint.js","./components/meta.astro":"./components/meta.astro"},"scripts":{"dev":"tsdown --watch","lint":"eslint","build":"tsdown --config-loader unrun","clean":"rm -rf .turbo && rm -rf .tsbuildinfo && rm -rf node_modules && rm -rf dist","format":"prettier --write src","lint:fix":"TIMING=1 eslint src/**/*.ts* --fix","test:e2e":"NODE_OPTIONS='--no-experimental-strip-types' playwright test","test:unit":"vitest --run","lint:timing":"TIMING=1 eslint src/**/*.ts*","test:e2e:ui":"playwright test --ui","check:types:src":"tsc --noEmit","test:e2e:server":"astro --root tests/fixtures/ui-frameworks --port 3913 dev","test:unit:watch":"vitest","check:types:test":"tsc --noEmit --project ./tests/tsconfig.json","check:types:astro":"node --experimental-strip-types ./scripts/check-fixtures.ts","check:unused-dependencies":"depcheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6cb552e5-fdf2-4ffe-8cf4-1f16c956585d"}},"_resolved":"/tmp/1b548cf5a96fa21ddfd88487c949985f/altano-astro-opengraph-1.0.0.tgz","_integrity":"sha512-Jeg6WzsO+qLbUyDSgHWa5BNZV846eEG7dlhQei1M9Dcn5tPSNXEGbmk/NV8hkiIm2GPdOzWDxNgHsqnBfyIxZQ==","repository":{"url":"git+https://github.com/altano/npm-packages.git","type":"git","directory":"packages/astro-opengraph"},"_npmVersion":"11.11.0","description":"Open Graph Tools for Astro","directories":{},"sideEffects":false,"_nodeVersion":"25.8.1","dependencies":{"he":"^1.2.0","satori":"^0.12.2","satori-html":"^0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zx":"^8.8.5","vue":"^3.5.27","vite":"^7.3.1","astro":"^6.0.8","sharp":"^0.33.5","preact":"^10.28.2","svelte":"^5.53.5","tsdown":"^0.21.4","vitest":"^4.1.0","depcheck":"^1.4.7","@types/he":"^1.2.3","typescript":"^5.9.3","@types/node":"^25.5.0","@astrojs/vue":"^6.0.1","@altano/assets":"0.0.1","@astrojs/check":"^0.9.8","@altano/testing":"0.0.1","@astrojs/preact":"^5.0.2","@astrojs/svelte":"^8.0.3","@altano/tsconfig":"0.0.1","@playwright/test":"1.58.2","@vitest/coverage-v8":"^4.1.0","jest-image-snapshot":"^6.5.1","@altano/build-config":"0.0.1","@altano/vitest-plugins":"1.1.2","@altano/tiny-async-pool":"4.0.2","@inox-tools/astro-tests":"^0.9.1","@types/jest-image-snapshot":"^6.4.1"},"peerDependencies":{"astro":"6.x.x","preact":">=10"},"_npmOperationalInternal":{"tmp":"tmp/astro-opengraph_1.0.0_1774241732305_0.5901270842661464","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@altano/astro-opengraph","version":"1.0.1","keywords":["astro","astro-integration","astro-component","devtools","image","opengraph","withastro"],"author":{"url":"https://alan.norbauer.com","name":"Alan Norbauer","email":"alan@norbauer.com"},"license":"ISC","_id":"@altano/astro-opengraph@1.0.1","maintainers":[{"name":"altano","email":"alan@norbauer.com"}],"homepage":"https://github.com/altano/npm-packages/tree/main/packages/astro-opengraph","bugs":{"url":"https://github.com/altano/npm-packages/issues"},"dist":{"shasum":"a08c1d5d5992bcf9522653bc5f4df2a3871bf434","tarball":"https://registry.npmjs.org/@altano/astro-opengraph/-/astro-opengraph-1.0.1.tgz","fileCount":17,"integrity":"sha512-DwHgYf75OBgPV6PcxZsyB1mTAm85sAGsLo5+GE/0i3qUsyYEA4/XccxpJu0qOiO2pA5Ti94VlSdrQ0GSNKzNLA==","signatures":[{"sig":"MEUCIQD3kVPAJdl8YHDYaEBBmtJgQ8jj4lygr36MK6CljQGvYgIgTt8IUrsUwV9mPlC3pBkNVGTFMyzQ+YwujjzPj1q84nI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@altano%2fastro-opengraph@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1161146},"type":"module","_from":"file:altano-astro-opengraph-1.0.1.tgz","exports":{".":"./dist/index.js","./config":"./dist/config.js","./toolbar":"./dist/toolbar/index.js","./endpoint":"./dist/endpoint.js","./components/meta.astro":"./components/meta.astro"},"scripts":{"dev":"tsdown --watch","lint":"eslint","build":"tsdown --config-loader unrun","clean":"rm -rf .turbo && rm -rf .tsbuildinfo && rm -rf node_modules && rm -rf dist","format":"prettier --write src","lint:fix":"TIMING=1 eslint src/**/*.ts* --fix","test:e2e":"NODE_OPTIONS='--no-experimental-strip-types' playwright test","test:unit":"vitest --run","lint:timing":"TIMING=1 eslint src/**/*.ts*","test:e2e:ui":"playwright test --ui","check:types:src":"tsc --noEmit","test:e2e:server":"astro --root tests/fixtures/ui-frameworks --port 3913 dev","test:unit:watch":"vitest","check:types:test":"tsc --noEmit --project ./tests/tsconfig.json","check:types:astro":"node --experimental-strip-types ./scripts/check-fixtures.ts","check:unused-dependencies":"depcheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6cb552e5-fdf2-4ffe-8cf4-1f16c956585d"}},"_resolved":"/tmp/98b25a8a45083527d65c1b3c72360b9f/altano-astro-opengraph-1.0.1.tgz","_integrity":"sha512-DwHgYf75OBgPV6PcxZsyB1mTAm85sAGsLo5+GE/0i3qUsyYEA4/XccxpJu0qOiO2pA5Ti94VlSdrQ0GSNKzNLA==","repository":{"url":"git+https://github.com/altano/npm-packages.git","type":"git","directory":"packages/astro-opengraph"},"_npmVersion":"11.11.0","description":"Open Graph Tools for Astro","directories":{},"sideEffects":false,"_nodeVersion":"25.8.1","dependencies":{"he":"^1.2.0","satori":"^0.12.2","satori-html":"^0.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zx":"^8.8.5","vue":"^3.5.27","vite":"^7.3.1","astro":"^6.0.8","sharp":"^0.33.5","preact":"^10.28.2","svelte":"^5.53.5","tsdown":"^0.21.4","vitest":"^4.1.0","depcheck":"^1.4.7","@types/he":"^1.2.3","typescript":"^5.9.3","@types/node":"^25.5.0","@astrojs/vue":"^6.0.1","@altano/assets":"0.0.1","@astrojs/check":"^0.9.8","@altano/testing":"0.0.1","@astrojs/preact":"^5.0.2","@astrojs/svelte":"^8.0.3","@altano/tsconfig":"0.0.1","@playwright/test":"1.58.2","@vitest/coverage-v8":"^4.1.0","jest-image-snapshot":"^6.5.1","@altano/build-config":"0.0.1","@altano/vitest-plugins":"1.1.2","@altano/tiny-async-pool":"4.0.2","@inox-tools/astro-tests":"^1.0.0","@types/jest-image-snapshot":"^6.4.1"},"peerDependencies":{"astro":"6.x.x","preact":">=10"},"_npmOperationalInternal":{"tmp":"tmp/astro-opengraph_1.0.1_1774821977004_0.4996024611944785","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@altano/astro-opengraph","version":"2.0.0","description":"Open Graph Tools for Astro","keywords":["astro","astro-integration","astro-component","devtools","image","opengraph","withastro"],"homepage":"https://github.com/altano/npm-packages/tree/main/packages/astro-opengraph","repository":{"type":"git","url":"https://github.com/altano/npm-packages","directory":"packages/astro-opengraph"},"license":"ISC","author":{"name":"Alan Norbauer","email":"alan@norbauer.com","url":"https://alan.norbauer.com"},"sideEffects":false,"type":"module","exports":{".":"./dist/index.js","./components/meta.astro":"./components/meta.astro","./config":"./dist/config.js","./endpoint":"./dist/endpoint.js","./toolbar":"./dist/toolbar/index.js"},"dependencies":{"he":"^1.2.0","satori":"^0.29.0","satori-html":"^0.3.2"},"devDependencies":{"@astrojs/check":"^0.9.9","@astrojs/preact":"^6.0.1","@astrojs/svelte":"^9.0.1","@astrojs/vue":"^7.0.1","@inox-tools/astro-tests":"^2.0.0","@playwright/test":"1.59.1","@types/he":"^1.2.3","@types/jest-image-snapshot":"^6.4.1","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10","astro":"^7.1.3","depcheck":"^1.4.7","jest-image-snapshot":"^6.5.2","preact":"^10.29.7","prettier":"3.9.6","sharp":"^0.35.3","svelte":"^5.56.7","tsdown":"^0.22.13","typescript":"^6.0.3","vite":"^8.1.5","vitest":"^4.1.10","vue":"^3.5.40","zx":"^8.8.5","@altano/assets":"0.0.1","@altano/build-config":"0.0.1","@altano/testing":"0.0.1","@altano/tiny-async-pool":"4.0.3","@altano/tsconfig":"0.0.1","@altano/vitest-plugins":"1.1.3"},"peerDependencies":{"astro":"7.x.x","preact":">=10"},"publishConfig":{"access":"public"},"scripts":{"build":"tsdown","check:types:astro":"node --experimental-strip-types ./scripts/check-fixtures.ts","check:types:src":"tsc --noEmit","check:types:test":"tsc --noEmit --project ./tests/tsconfig.json","check:unused-dependencies":"depcheck","clean":"rm -rf .turbo && rm -rf .tsbuildinfo && rm -rf node_modules && rm -rf dist","dev":"tsdown --watch","format":"prettier --check .","format:fix":"prettier --write .","lint":"eslint","lint:fix":"TIMING=1 eslint src/**/*.ts* --fix","lint:timing":"TIMING=1 eslint src/**/*.ts*","test:e2e":"NODE_OPTIONS='--no-experimental-strip-types' playwright test","test:e2e:server":"astro --root tests/fixtures/ui-frameworks --port 3913 dev","test:e2e:ui":"playwright test --ui","test:unit":"vitest --run","test:unit:watch":"vitest"},"_nodeVersion":"24.18.0","_id":"@altano/astro-opengraph@2.0.0","dist":{"integrity":"sha512-2fVHsTpKgmO+t7ZbUEZdV3dFhbspmXmScdT7SA6/AFWDrQ4dD/SGk9po2oZf3a4T+y51zWmsjZm3TnOEtfyVnQ==","shasum":"e198768459aaad18af73af9b14d1a0f439185148","tarball":"https://registry.npmjs.org/@altano/astro-opengraph/-/astro-opengraph-2.0.0.tgz","fileCount":17,"unpackedSize":1162070,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@altano%2fastro-opengraph@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIH/t5xcbLP2+ePAQjAul0ktTt9LM44Q0Pk7Cto9hgtuDAiAUrJ6pu26R25vzaGfyA1Luop1+f4tq48vO9foSgOaqqA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6cb552e5-fdf2-4ffe-8cf4-1f16c956585d"}},"directories":{},"maintainers":[{"name":"altano","email":"alan@norbauer.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/astro-opengraph_2.0.0_1785618463502_0.9419071455134664"},"_hasShrinkwrap":false}},"time":{"created":"2025-04-09T05:07:01.382Z","modified":"2026-08-01T21:07:44.049Z","0.0.1-alpha.1":"2025-04-09T05:07:01.661Z","0.0.1-alpha.2":"2025-04-09T23:32:21.171Z","0.1.0-alpha.3":"2025-04-10T04:35:53.375Z","0.1.0-alpha.4":"2025-04-12T02:54:55.481Z","0.1.0":"2025-06-30T23:57:26.703Z","0.1.1":"2025-07-07T04:49:47.323Z","1.0.0":"2026-03-23T04:55:32.474Z","1.0.1":"2026-03-29T22:06:17.250Z","2.0.0":"2026-08-01T21:07:43.730Z"},"author":{"name":"Alan Norbauer","email":"alan@norbauer.com","url":"https://alan.norbauer.com"},"license":"ISC","homepage":"https://github.com/altano/npm-packages/tree/main/packages/astro-opengraph","keywords":["astro","astro-integration","astro-component","devtools","image","opengraph","withastro"],"repository":{"type":"git","url":"https://github.com/altano/npm-packages","directory":"packages/astro-opengraph"},"description":"Open Graph Tools for Astro","maintainers":[{"name":"altano","email":"alan@norbauer.com"}],"readme":"> ⚠️ **EXPERIMENTAL**: This package uses experimental Astro APIs. Tread carefuly. [More info below](#experimental-container-apis).\n\n# astro-opengraph\n\nYour Open Graph toolkit 🧰 for Astro, including everything you need to:\n\n- Create Open Graph png image from .astro components.\n- Manage your Open Graph meta tags (e.g. `<og:image>`, `<og:image:title>`, etc).\n- Show you a page's Open Graph image and meta tags in `astro dev` mode with an Astro [dev toolbar app](https://docs.astro.build/en/guides/dev-toolbar/).\n- Fit text to fill a space in your Open Graph image.\n- Configure everything above with an [Astro integration](https://docs.astro.build/en/guides/integrations-guide/).\n\nUnlike existing Astro integrations for Open Graph images, this one:\n\n- Doesn't require browsers or screenshotting (e.g. using Puppeteer/Playwright). It's all Astro and Node.js native, so to speak.\n- Can turn any .astro component into an Open Graph image. You don't need to use a preset template and you don't need to mess with html strings in a config file.\n- Can re-use Astro components from elsewhere in your site.\n- Can make use of Astro props or arbitrary JS in the script section of your template.\n\n# Prerequisites\n\nThis integration is for [Astro](https://astro.build). If you aren't using Astro you're in the wrong place.\n\n# Installation\n\nIn your existing Astro project:\n\n```sh\n# Using NPM\nnpx astro add @altano/astro-opengraph\n# Using Yarn\nyarn astro add @altano/astro-opengraph\n# Using PNPM\npnpm astro add @altano/astro-opengraph\n```\n\n# Configuration\n\nConfigure the integration in your Astro config. You must at least provide some fonts to use (as there are no defaults), e.g. to use [Inter](https://rsms.me/inter) installed as an npm package:\n\n```ts\nexport default defineConfig({\n  integrations: [\n    opengraphImage({\n      async getImageOptions() {\n        return {\n          fonts: [\n            {\n              name: \"Inter\",\n              path: \"node_modules/@fontsource/inter/files/inter-latin-400-normal.woff\",\n              weight: 400,\n              style: \"normal\",\n            },\n          ],\n        };\n      },\n    }),\n  ],\n});\n```\n\nYou can find full documentation for the configuration [below](#configuration-options-reference).\n\n# Usage\n\n## .astro Component\n\nCreate an Astro component to use as your Open Graph image. You can either:\n\n1. Create the component outside the pages directory, e.g. `src/components/opengraph.astro` or\n2. Create the component colocated with the endpoint you're going to serve it from, e.g. if the image route is `/blog/article-one/opengraph.png` you can store the component at `src/pages/blog/article-one/_opengraph.astro`. You must prefix the filename with an underscore (\"\\_\") to prevent the .astro component from becoming its own html page.\n\nExample `src/components/opengraph.astro` or `src/pages/_opengraph.astro`:\n\n```astro\n<html><body>Hello!</body></html>\n```\n\n[See below](#css-limitations-in-astro-template) for limitations on what you can/can't do in your component.\n\n## Image Endpoint\n\nIn order serve the component from the prior step as an image, you need a js/ts [static file endpoint](https://docs.astro.build/en/guides/endpoints/#static-file-endpoints). You can use a static path or dynamic path. You can name the endpoint filename whatever you want as long as it has the extension `.png.ts`. For example:\n\n`src/pages/opengraph.png.ts`:\n\n```ts\nimport opengraphTemplate from \"../components/opengraph.astro\";\nimport { makeOpengraphEndpoint } from \"@altano/astro-opengraph/endpoint\";\n\nexport const GET = makeOpengraphEndpoint({\n  template: opengraphTemplate,\n});\n```\n\n## Meta Tags\n\nYou'll need `<meta>` tags that point to your Open Graph images from your pages. You can add these manually or you can use the included `<OpenGraphMeta />` component helper, e.g.:\n\n```astro\n---\nimport OpenGraphMeta from \"@altano/astro-opengraph/components/meta.astro\";\n---\n\n<html>\n  <head>\n    <OpenGraphMeta />\n  </head>\n  <body>\n    <article><h1>Golfers and Conservatives – Why Control Was Right</h1></article>\n  </body>\n</html>\n```\n\nThis would add the following tags to your `<head>`:\n\n```html\n<meta property=\"og:image\" content=\"http://localhost/opengraph.png\" />\n<meta property=\"og:image:type\" content=\"image/png\" />\n<meta property=\"og:image:width\" content=\"1200\" />\n<meta property=\"og:image:height\" content=\"630\" />\n```\n\nYou can use the `OpenGraphMeta` default props but you probably want to at least provide a `title`, `description`, and, if you used something other than `/opengraph.png.ts` (at the root) as your endpoint, you'll want to specify the path to the image endpoint with the `image` prop. For example:\n\n```astro\n---\nimport OpenGraphMeta from \"@altano/astro-opengraph/components/meta.astro\";\n---\n\n<html>\n  <head>\n    <OpenGraphMeta\n      image=\"./opengraph.png\"\n      title=\"My Cool Website\"\n      description=\"A page on my website\"\n    />\n  </head>\n  <body>\n    <article><h1>Golfers and Conservatives – Why Control Was Right</h1></article>\n  </body>\n</html>\n```\n\nYou can also provide an `alt` prop which would set the `og:image:alt` meta tag, but my understanding is that it isn't well supported, so feel free to omit this.\n\nIf you want the `OpenGraphMeta` component to use a different set of defaults for your whole site, you can provide the `componentMetaTagFallbacks` integration config, e.g. to provide a default title:\n\n```ts\nexport default defineConfig({\n  integrations: [\n    opengraphImage({\n      componentMetaTagFallbacks: {\n        \"og:title\": \"My Cool Website\",\n      },\n      async getImageOptions() {\n        // ...\n      },\n    }),\n  ],\n});\n```\n\nIf provided in the integration configuration like above, `<OpenGraphMeta />` will now use `\"My Cool Website\"` as the title default, but if given title via a prop, that will still take precedence.\n\n## Putting That Altogether\n\nOnce you repeat the steps above for every Open Graph card you want to render, you might have something like this:\n\n```\nsrc/\n├─ components/\n│  │  ├─ opengraph-blog.astro\n│  │  ├─ opengraph-root.astro\n├─ pages/\n│  │  ├─ opengraph.png.ts (imports ../components/opengraph-root.astro)\n│  ├─ blog/\n│  │  ├─ [...slug]/\n│  │  │  ├─ index.astro\n│  │  │  ├─ opengraph.png.ts (imports ../../../components/opengraph-blog.astro)\n```\n\nOr, if you decided to colocate the .astro templates in the pages directory, you might have something like this:\n\n```\nsrc/\n├─ pages/\n│  ├─ _opengraph.astro\n│  ├─ opengraph.png.ts (imports ./_opengraph.astro)\n│  ├─ blog/\n│  │  ├─ [...slug]/\n│  │  │  ├─ index.astro\n│  │  │  ├─ _opengraph.astro\n│  │  │  ├─ opengraph.png.ts (imports ./_opengraph.astro)\n```\n\n# Configuration Options Reference\n\nThe integration requires the following options:\n\n- `getImageOptions.fonts`: an array of fonts that will be used in your image component. Each font requires:\n  - `name`: This is whatever you reference in your css, e.g. `Inter`\n  - `path`: A string path to your font file. Can be in your node_modules folder, e.g. `\"node_modules/@fontsource/inter/files/inter-latin-400-normal.woff\"`\n  - `weight`: A weight, from 100 to 900. You can provide different fonts for different weights.\n\nYou may also want to provide defaults to be used by the `OpenGraphMeta` component in your `astro.config.ts` file. These are the defaults you can set:\n\n- `componentMetaTagFallbacks[\"og:title\"]`: the default title to use in the `OpenGraphMeta` component if none is passed in. The integration otherwise defaults to no title.\n- `componentMetaTagFallbacks[\"og:description\"]`: the default description to use in the `OpenGraphMeta` component if none is passed in. The integration otherwise defaults to no description.\n- `componentMetaTagFallbacks[\"og:image\"]`: the default image path to use in the `OpenGraphMeta` component. The integration otherwise defaults to `\"/opengraph.png\"`\n\nSee the TypeScript type-hints and comments for more info.\n\n# Examples\n\n## Using custom fonts\n\nRun `npm install @fontsource/inter`, then:\n\n`astro.config.ts`:\n\n```ts\nimport { defineConfig } from \"astro/config\";\nimport opengraphImage from \"@altano/astro-opengraph\";\n\n// https://astro.build/config\nexport default defineConfig({\n  integrations: [\n    opengraphImage({\n      async getImageOptions() {\n        return {\n          fonts: [\n            {\n              name: \"Inter\",\n              path: \"node_modules/@fontsource/inter/files/inter-latin-400-normal.woff\",\n              weight: 400,\n              style: \"normal\",\n            },\n            {\n              name: \"Inter\",\n              path: \"node_modules/@fontsource/inter/files/inter-latin-800-normal.woff\",\n              weight: 800,\n              style: \"normal\",\n            },\n          ],\n        };\n      },\n    }),\n  ],\n});\n```\n\n`src/components/opengraph.astro`:\n\n```astro\n<html>\n  <body style={{ fontFamily: \"Inter Variable\" }}>\n    <h1 style={{ fontWeight: 800 }}>\n      My bold heading\n    </h1>\n    <p style={{ fontWeight: 400 }}>\n      My normal weight paragraph\n    </p>\n  </body>\n</html>\n```\n\nSee https://github.com/altano/npm-packages/tree/main/examples/astro-opengraph for a complete example.\n\n## File Locations\n\nIt doesn't matter where you put your Open Graph component or endpoints, as long as you point to the correct location from your endpoint and meta tags, e.g. given a component at `src/components/my-custom-component.astro` you'd have an endpoint like:\n\n`src/pages/my-custom-endpoint.png.ts`:\n\n```ts\n// import your component, wherever it is\nimport opengraphTemplate from \"../components/my-custom-component.astro\";\nimport { makeOpengraphEndpoint } from \"@altano/astro-opengraph/endpoint\";\n\nexport const GET = makeOpengraphEndpoint({\n  template: opengraphTemplate,\n});\n```\n\n`src/pages/index.astro`:\n\n```astro\n---\nimport OpenGraphMeta from \"@altano/astro-opengraph/components/meta.astro\";\n---\n\n<html>\n  <head>\n    <OpenGraphMeta\n      <!-- point at your endpoint, wherever it is -->\n      image=\"./my-custom-endpoint.png\"\n      />\n  </head>\n</html>\n```\n\n## Dynamic Routes\n\nIf you have a dynamic route such as `./src/pages/[...slug].astro`, convert it to `./src/pages/[...slug]/index.astro`\n\nAlong-side your dynamic route (e.g. `./src/pages/[...slug]/index.astro`) add your Open Graph component and endpoint (e.g. `./src/pages/[...slug]/opengraph.png.ts`):\n\n```\nsrc/\n├─ pages/\n│  ├─ [...slug]/\n│  │  ├─ index.astro\n│  │  ├─ _opengraph.astro\n│  │  ├─ opengraph.png.ts\n```\n\nWithin `opengraph.png.ts` you can either duplicate your implementation of `getStaticPaths` or you can re-export the same one used in `index.astro`:\n\n`opengraph.png.ts`:\n\n```ts\nexport { getStaticPaths } from \"./index.astro\";\n\n// ...\n```\n\n## Catch-all Opengraph Image\n\nTo have a default Open Graph image for your whole site, place an Open Graph endpoint at the root of your site (`src/pages/opengraph.png.ts`) and then include `OpenGraphLayout` in your layout or head component so that every page includes it. Since the `OpenGraphLayout` component defaults to finding `opengraph.png` at the root of your site, it will use the endpoint you created. Your layout or head component may want to pass-through the `OpenGraphLayout`'s `image` prop for pages that want to override the default. For example:\n\n`src/components/Head.astro`:\n\n```astro\n---\nimport OpenGraphMeta from \"@altano/astro-opengraph/components/meta.astro\";\n\ninterface Props {\n  openGraphImage?: string;\n}\n\nconst { openGraphImage } = Astro.props;\n---\n\n<head>\n  <OpenGraphMeta image={openGraphImage} />\n</head>\n```\n\nIf you had a page using `Head.astro` with the defaults:\n\n`src/pages/default.astro`:\n\n```astro\n---\nimport Head from \"src/components/Head.astro\";\n---\n<html lang=\"en\">\n  <Head />\n</html>\n```\n\nIt would have this meta tag:\n\n```html\n<meta property=\"og:image\" content=\"https://example.com/opengraph.png\" />\n```\n\nBut other pages would be able to override it and use a custom Open Graph image, like so:\n\n`src/pages/custom.astro`:\n\n```astro\n---\nimport Head from \"src/components/Head.astro\";\n---\n<html lang=\"en\">\n  <Head openGraphImage=\"./some-other-endpoint.png\" />\n</html>\n```\n\nThen just make sure that every page uses your `Head` component.\n\nYou can find an example here: [tests/fixtures/catch-all](./tests/fixtures/catch-all)\n\n# Notes\n\n## CSS Limitations in .astro Template\n\nYour Astro component must be HTML elements and styles [supported by Satori](https://github.com/vercel/satori#jsx), e.g. it can't be stateful or use `calc()` in css. The [OG Image Playground](https://og-playground.vercel.app/) is a great place to test your component before copying it into your Astro project.\n\nThis plugin can only support what Satori supports, which means `<style>` tags and CSS imports will NOT work. Your .astro template has to compile to plain html (with inline styles) in order to render correctly. You can reference custom fonts from your inline styles, but they must be provided to the integration config.\n\n## Experimental Container APIs\n\nThis integration makes use of the [experimental container APIs](https://docs.astro.build/en/reference/container-reference/) in Astro. Therefore, this plugin is also experimental and may experience breaking changes when you upgrade Astro (even minor or patch releases). This integration itself will remain stable across minor or patch releases.\n\n# Troubleshooting\n\n## Astro Dev Toolbar\n\nWhile in `astro dev` mode, you can use the included Astro dev toolbar app installed by this integration. It include a preview of the opengraph image as well as the `og:` meta tags on the page:\n\n![Screenshot of the Astro developer toolbar showing an Open Graph image](./assets/dev-toolbar.png)\n\nOnce your site is live, you can use a tool like [opengraph.xyz](https://www.opengraph.xyz/) to preview the opengraph image/tags.\n\n## HTML\n\nWhen creating your .astro template it might be helpful to view the rendered HTML in a browser so that you can use the browser dev tools to diagnose CSS-or-whatever issues. To do that, you can create a dev-only html endpoint for your template similar to how you make the PNG one. This development-only will not produce ssg output and will not work in ssr.\n\n```typescript\nimport opengraphTemplate from \"./_opengraph.astro\";\nimport { makeOpengraphDevEndpoint } from \"../../../../../src/endpoint.ts\";\nimport type { APIRoute } from \"astro\";\n\nexport const GET: APIRoute = makeOpengraphDevEndpoint({\n  template: opengraphTemplate,\n});\n```\n\nYou'll probably want to include a remote stylesheet that has your font face so that it renders correctly in HTML, since the integration's font configuration doesn't affect the HTML rendered version. For example, you might include this in your `./_opengraph.astro`:\n\n```\n<link\n  href=\" https://cdn.jsdelivr.net/npm/@fontsource-variable/inter@5.2.5/index.min.css \"\n  rel=\"stylesheet\"\n/>\n```\n\n# FAQ\n\n## Question: How does this work?\n\nThis integration uses Astro's container API to convert your .astro component into raw html, and relies on Vercel's [Satori](https://github.com/vercel/satori) library to convert that html into an svg. It then uses the Astro image service to convert that into a png.\n\nThis integration mostly just serves as a glue between these existing APIs.\n\n## Question: Why is this so hard to configure?\n\nAnswer: Astro does not allow .astro components to be statically built as anything other than HTML, so converting an .astro component into an image requires a [static file endpoint](https://docs.astro.build/en/guides/endpoints/#static-file-endpoints) (specifically a png image endpoint).\n\nThis integration could theoretically add image endpoints for you, and that would work for one-off endpoints like a single opengraph.png file at the root of your site, but Astro does not give integrations the level of control required to dynamically register endpoints that match your other dynamic routes.\n\nI've made [a proposal](https://github.com/withastro/roadmap/discussions/643) to allow Astro components to render to file types other than HTML which would simplify this integration (you would be able to name your .astro template with a `.png.astro` extension to have it be rendered as a png image) but that proposal is stalled and unlikely to go anywhere.\n\nIn short, until we get new APIs, this is as ergonomic an API as you're going to get for generating Open Graph images in Astro.\n","readmeFilename":""}