{"_id":"@azamiharu/marked-rel-external","_rev":"2-28aba4c6735517d96da68afee398779a","name":"@azamiharu/marked-rel-external","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@azamiharu/marked-rel-external","version":"1.0.0","keywords":["marked","markdown","target-blank","external-links","noopener-noreferrer","rel-me"],"author":{"name":"AzamiHaru"},"license":"MIT","_id":"@azamiharu/marked-rel-external@1.0.0","maintainers":[{"name":"azamiharu","email":"haruazamicat+npm@gmail.com"}],"dist":{"shasum":"29869a8ab02dcfb0b6d31aade5de4a61e3cc8382","tarball":"https://registry.npmjs.org/@azamiharu/marked-rel-external/-/marked-rel-external-1.0.0.tgz","fileCount":15,"integrity":"sha512-DYf1CSIF05HnwYDTEsmvgtuhRqE6fcIlpdr5ko4hLlj8sfvZqcwrho/Z0ySDrZIBz0GRMj0HwSg7f9DOKOHz6Q==","signatures":[{"sig":"MEYCIQC1u/UiLvfI9NlO8OCTX9huemfyBc3asD3OP3YPrWSEvwIhAPMiX0TwzYYaf6yH14tIhkDoTtAZTodcA8zX3DNdNrQ9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11854},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","require":"./dist/types.cjs"}},"gitHead":"4f046e9896ba484ee95a6db9c39a895b7c29d4e2","scripts":{"test":"vitest run","build":"tsup src --format cjs,esm --dts --clean"},"_npmUser":{"name":"azamiharu","email":"haruazamicat+npm@gmail.com"},"_npmVersion":"11.7.0","description":"外部リンクに安全な rel 属性と rel=\"me\" を付与する marked 拡張機能","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"marked":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/marked-rel-external_1.0.0_1770624329686_0.9799185918064282","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@azamiharu/marked-rel-external","version":"1.0.1","description":"外部リンクに安全な rel 属性と rel=\"me\" を付与する marked 拡張機能","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","main":"./dist/index.cjs","exports":{"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","require":"./dist/types.cjs"},".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"keywords":["marked","markdown","target-blank","external-links","noopener-noreferrer","rel-me"],"author":{"name":"AzamiHaru"},"license":"MIT","publishConfig":{"access":"public"},"peerDependencies":{"marked":">=17.0.0"},"scripts":{"build":"tsup src --format cjs,esm --dts --clean","test":"vitest run"},"_id":"@azamiharu/marked-rel-external@1.0.1","_integrity":"sha512-aMwmDKKFGp3ji69fWv61Gi6yMjm/zx7PAgZ6NKlHJYYl5+QzW+FqyaM+vOO63+24pziGlbBDJIX9GDPHpOampg==","_resolved":"R:\\Temp\\51e414a9c99d6667c44b53f6099db2b0\\azamiharu-marked-rel-external-1.0.1.tgz","_from":"file:azamiharu-marked-rel-external-1.0.1.tgz","_nodeVersion":"22.16.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-aMwmDKKFGp3ji69fWv61Gi6yMjm/zx7PAgZ6NKlHJYYl5+QzW+FqyaM+vOO63+24pziGlbBDJIX9GDPHpOampg==","shasum":"1c4c2590308b7b05a7caa1d894f03cd5071e0d69","tarball":"https://registry.npmjs.org/@azamiharu/marked-rel-external/-/marked-rel-external-1.0.1.tgz","fileCount":15,"unpackedSize":11856,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDMaiXIjVtJhIOCWn1hLx2IkrsshXQBHm98lAORINao7gIgVd7XGWj9nlhGU0UpQPw225gtEvVZniHgyRCV9nU49mI="}]},"_npmUser":{"name":"azamiharu","email":"haruazamicat+npm@gmail.com"},"directories":{},"maintainers":[{"name":"azamiharu","email":"haruazamicat+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/marked-rel-external_1.0.1_1771303696181_0.38591542191035444"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-09T08:05:29.622Z","modified":"2026-02-17T04:48:16.408Z","1.0.0":"2026-02-09T08:05:29.820Z","1.0.1":"2026-02-17T04:48:16.305Z"},"author":{"name":"AzamiHaru"},"license":"MIT","keywords":["marked","markdown","target-blank","external-links","noopener-noreferrer","rel-me"],"description":"外部リンクに安全な rel 属性と rel=\"me\" を付与する marked 拡張機能","maintainers":[{"name":"azamiharu","email":"haruazamicat+npm@gmail.com"}],"readme":"# @azamiharu/marked-rel-external\n\n[marked](https://marked.js.org/) のリンクレンダラーを拡張し、外部リンクに対して自動的に `target=\"_blank\"` や適切な `rel` 属性（`external`, `me`, `noopener`, `noreferrer`）を付与する拡張機能です。\n\n## 特徴\n\n- **自動環境判定**: ブラウザ環境では `location.host` を自動的に内部ホストとして認識します。\n- **分散型SNS対応**: Mastodon や Misskey などのプロフィールリンク（`rel=\"me\"`）を `identityURLs` として登録することで、自動的に `rel=\"me\"` を付与します。\n- **セキュリティ**: 外部リンクには一律で `noopener noreferrer` を付与し、タブジャッキング攻撃を防ぎます。\n- **インラインパース対応**: リンクテキスト内の太字やコードスパンなどのインライン要素も正しく処理します。\n\n## インストール\n\n```bash\npnpm add @azamiharu/marked-rel-external\n```\n\n## 使い方\n\n### 基本的な使用例\n\n```typescript\nimport { markedRelExternal } from \"@azamiharu/marked-rel-external\";\nimport { Marked } from \"marked\";\n\nconst html = new Marked()\n  .use(markedRelExternal({\n    internalHosts: [\"my-site.com\"],\n    identityURLs: [\"https://mastodon.social/@username\"],\n  }))\n  .parse(\"[GitHub](https://github.com/)\");\n\n// 出力結果:\n// <a href=\"https://github.com/\" rel=\"external noopener noreferrer\" target=\"_blank\">GitHub</a>\n```\n\n### ブラウザでの自動認識\n\nブラウザ環境（`window` オブジェクトが存在する環境）で使用する場合、オプションを空にすると現在のドメインを自動的に `internalHosts` に追加します。また、HTML 内に `<link rel=\"me\" href=\"...\">` が存在すれば、それらを自動的に `identityURLs` として読み込みます。\n\n```typescript\nconst marked = new Marked().use(markedRelExternal());\n```\n\n## オプション\n\n| プロパティ      | 型         | 説明                                                                                                |\n| --------------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| `internalHosts` | `string[]` | 内部リンクとして扱うホスト名のリスト。これに含まれるドメインには `target=\"_blank\"` を付与しません。 |\n| `identityURLs`  | `string[]` | 自身のアイデンティティを示す URL のリスト。これに一致するリンクには `rel=\"me\"` が付与されます。     |\n\n## 開発\n\n### ビルド\n\n```bash\npnpm build\n```\n\n## ライセンス\n\nMIT\n","readmeFilename":"README.md"}