{"id":47612704,"url":"https://github.com/grakeice/netscape-bookmark-parser","last_synced_at":"2026-04-01T20:44:35.188Z","repository":{"id":300697794,"uuid":"1006796371","full_name":"grakeice/netscape-bookmark-parser","owner":"grakeice","description":"A TypeScript/JavaScript library for parsing browser bookmark files (HTML format) and manipulating them as structured data. Compatible with both Deno and Node.js runtimes.","archived":false,"fork":false,"pushed_at":"2025-06-25T19:02:31.000Z","size":496,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-11T14:17:17.311Z","etag":null,"topics":["bookmark","deno","jsr-package","npm-package"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grakeice.png","metadata":{"files":{"readme":"README-ja.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-23T02:19:10.000Z","updated_at":"2025-11-11T04:38:38.000Z","dependencies_parsed_at":"2025-06-23T06:34:34.264Z","dependency_job_id":null,"html_url":"https://github.com/grakeice/netscape-bookmark-parser","commit_stats":null,"previous_names":["grakeice/netscape-bookmark-parser"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/grakeice/netscape-bookmark-parser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grakeice%2Fnetscape-bookmark-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grakeice%2Fnetscape-bookmark-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grakeice%2Fnetscape-bookmark-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grakeice%2Fnetscape-bookmark-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grakeice","download_url":"https://codeload.github.com/grakeice/netscape-bookmark-parser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grakeice%2Fnetscape-bookmark-parser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bookmark","deno","jsr-package","npm-package"],"created_at":"2026-04-01T20:44:34.617Z","updated_at":"2026-04-01T20:44:35.123Z","avatar_url":"https://github.com/grakeice.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Netscape Bookmark Parser\n\nブラウザのブックマークファイル（HTML 形式）を解析し、構造化データとして操作できる TypeScript/JavaScript ライブラリです。Deno と Node.js の両方のランタイムに対応しています。\n\n\u003e **注意:**  \n\u003e この README は AI による自動生成です。内容はほぼ正確ですが、不正確な説明が含まれる場合があります。\n\n英語版ドキュメント: [`./README.md`](./README.md)\n\n## 特徴\n\n- **HTML ブックマークファイルの解析**: Chrome、Firefox、Safari など各種ブラウザからエクスポートされた HTML ブックマークファイルを解析\n- **階層構造の完全保持**: フォルダやブックマークの階層構造を忠実に再現\n- **双方向変換**: HTML⇔ データ構造の相互変換に対応\n- **JSON シリアライズ**: ブックマークツリーを JSON として保存・復元可能\n- **Deno \u0026 Node.js 両対応**: どちらのランタイムでも動作\n- **型安全**: TypeScript による型定義を完備\n\n## インストール\n\n### Node.js/npm\n\n```bash\nnpm install netscape-bookmark-parser\n```\n\n```typescript\nimport { BookmarksParser, BookmarksTree } from \"netscape-bookmark-parser\";\n```\n\n### Deno\n\n```typescript\nimport {\n\tBookmarksParser,\n\tBookmarksTree,\n} from \"jsr:@grakeice/netscape-bookmark-parser\";\n```\n\n\u003e **注意:** JSR 版は Node.js/Deno ランタイムのみ対応です。ブラウザで利用する場合は npm パッケージをご利用ください。\n\n### ブラウザ\n\n#### オプション 1: ビルドツール利用（推奨）\n\n**Webpack, Vite, Rollup, Parcel 等:**\n\n```typescript\n// ブラウザ環境ではweb最適化版を利用\nimport { BookmarksParser, BookmarksTree } from \"netscape-bookmark-parser/web\";\n\n// 例: アップロードされたブックマークファイルの解析\nfunction handleFileUpload(event: Event) {\n\tconst file = (event.target as HTMLInputElement).files?.[0];\n\tif (file) {\n\t\tconst reader = new FileReader();\n\t\treader.onload = (e) =\u003e {\n\t\t\tconst htmlContent = e.target?.result as string;\n\t\t\tconst bookmarksTree = BookmarksParser.parse(htmlContent);\n\t\t\tconsole.log(bookmarksTree.toJSON());\n\t\t};\n\t\treader.readAsText(file);\n\t}\n}\n```\n\n#### オプション 2: CDN + Import Maps\n\n```html\n\u003cscript type=\"importmap\"\u003e\n\t{\n\t\t\"imports\": {\n\t\t\t\"netscape-bookmark-parser/web\": \"https://cdn.jsdelivr.net/npm/netscape-bookmark-parser@1.1.4/esm/mod_web.js\"\n\t\t}\n\t}\n\u003c/script\u003e\n\u003cscript type=\"module\"\u003e\n\timport { BookmarksParser, BookmarksTree } from \"netscape-bookmark-parser/web\";\n\tconst tree = BookmarksParser.parse(htmlContent);\n\u003c/script\u003e\n```\n\n#### オプション 3: CDN 直接インポート\n\n```html\n\u003cscript type=\"module\"\u003e\n\timport {\n\t\tBookmarksParser,\n\t\tBookmarksTree,\n\t} from \"https://cdn.jsdelivr.net/npm/netscape-bookmark-parser@1.1.4/esm/mod_web.js\";\n\u003c/script\u003e\n```\n\n\u003e **ブラウザサポート:** ブラウザ互換は npm パッケージ経由のみ。JSR パッケージには web 最適化版は含まれません。\n\n\u003e **注意:** web 最適化版は DOMParser 等のネイティブ API を利用し、Node.js 用ポリフィルを含まないため、ブラウザで軽量かつ高速です。\n\n## 使い方\n\n### 基本例\n\n```typescript\nimport { BookmarksParser, BookmarksTree } from \"netscape-bookmark-parser\";\n\n// HTMLブックマークファイルを読み込む\nconst htmlContent = `\u003c!DOCTYPE NETSCAPE-Bookmark-file-1\u003e\n\u003cHTML\u003e\n\u003cBODY\u003e\n\u003cDL\u003e\u003cp\u003e\n    \u003cDT\u003e\u003cH3\u003eFolder 1\u003c/H3\u003e\n    \u003cDL\u003e\u003cp\u003e\n        \u003cDT\u003e\u003cA HREF=\"https://example.com\"\u003eExample\u003c/A\u003e\n    \u003c/DL\u003e\u003cp\u003e\n    \u003cDT\u003e\u003cA HREF=\"https://google.com\"\u003eGoogle\u003c/A\u003e\n\u003c/DL\u003e\u003cp\u003e\n\u003c/BODY\u003e\n\u003c/HTML\u003e`;\n\n// 解析してBookmarksTreeに変換\nconst bookmarksTree = BookmarksParser.parse(htmlContent);\n\n// JSONとして出力\nconsole.log(JSON.stringify(bookmarksTree.toJSON(), null, 2));\n\n// HTMLに戻す\nconst htmlDocument = bookmarksTree.toDOM();\nconsole.log(bookmarksTree.HTMLText);\n```\n\n### BookmarksTree の操作\n\n```typescript\n// 新しいブックマークツリーを作成\nconst tree = new BookmarksTree();\n\ntree.set(\"Google\", \"https://google.com\");\ntree.set(\"GitHub\", \"https://github.com\");\n\n// フォルダ構造を作成\nconst devFolder = new BookmarksTree();\ndevFolder.set(\"MDN\", \"https://developer.mozilla.org\");\ndevFolder.set(\"Stack Overflow\", \"https://stackoverflow.com\");\n\nconst toolsFolder = new BookmarksTree();\ntoolsFolder.set(\"GitHub\", \"https://github.com\");\ntoolsFolder.set(\"VS Code\", \"https://code.visualstudio.com\");\n\ndevFolder.set(\"Tools\", toolsFolder);\ntree.set(\"Development\", devFolder);\n\n// JSONに変換\nconst json = tree.toJSON();\n\n// JSONから復元\nconst restoredTree = BookmarksTree.fromJSON(json);\n\n// ツリー構造を確認\nconsole.log(tree.size); // トップレベルのアイテム数\nconsole.log(tree.has(\"Development\")); // true\nconsole.log(tree.get(\"Development\") instanceof BookmarksTree); // true\n```\n\n### 複雑な構造の処理\n\n```typescript\n// 複雑なブックマークファイルを解析\nconst complexHtml = `\u003c!DOCTYPE NETSCAPE-Bookmark-file-1\u003e\n\u003cHTML\u003e\n\u003cBODY\u003e\n\u003cDL\u003e\u003cp\u003e\n    \u003cDT\u003e\u003cH3\u003eWork\u003c/H3\u003e\n    \u003cDL\u003e\u003cp\u003e\n        \u003cDT\u003e\u003cH3\u003eDevelopment\u003c/H3\u003e\n        \u003cDL\u003e\u003cp\u003e\n            \u003cDT\u003e\u003cA HREF=\"https://github.com\"\u003eGitHub\u003c/A\u003e\n            \u003cDT\u003e\u003cA HREF=\"https://stackoverflow.com\"\u003eStack Overflow\u003c/A\u003e\n        \u003c/DL\u003e\u003cp\u003e\n        \u003cDT\u003e\u003cA HREF=\"https://docs.google.com\"\u003eGoogle Docs\u003c/A\u003e\n    \u003c/DL\u003e\u003cp\u003e\n    \u003cDT\u003e\u003cH3\u003ePersonal\u003c/H3\u003e\n    \u003cDL\u003e\u003cp\u003e\n        \u003cDT\u003e\u003cA HREF=\"https://youtube.com\"\u003eYouTube\u003c/A\u003e\n        \u003cDT\u003e\u003cA HREF=\"https://twitter.com\"\u003eTwitter\u003c/A\u003e\n    \u003c/DL\u003e\u003cp\u003e\n    \u003cDT\u003e\u003cA HREF=\"https://google.com\"\u003eGoogle\u003c/A\u003e\n\u003c/DL\u003e\u003cp\u003e\n\u003c/BODY\u003e\n\u003c/HTML\u003e`;\n\nconst tree = BookmarksParser.parse(complexHtml);\n\n// ツリー構造をたどる\nconst workFolder = tree.get(\"Work\") as BookmarksTree;\nconst devFolder = workFolder.get(\"Development\") as BookmarksTree;\nconsole.log(devFolder.get(\"GitHub\")); // \"https://github.com\"\n```\n\n## API リファレンス\n\n### Web 最適化版\n\n\u003e **重要:** ブラウザサポートは npm インストールのみ。JSR 版にはブラウザ互換ビルドは含まれません。\n\nこのライブラリは Node.js 依存を排除し、ネイティブブラウザ API を利用する web 最適化版を提供します:\n\n```typescript\n// npmのみで利用可能なweb最適化版\nimport { BookmarksParser, BookmarksTree } from \"netscape-bookmark-parser/web\";\n```\n\n### BookmarksParser クラス\n\n`BookmarksParser`は Netscape Bookmark 形式の HTML や JSON を解析し、`BookmarksTree`インスタンスに変換する静的メソッドを提供します。\n\n#### 静的メソッド\n\n- [`static parse(htmlString: string): BookmarksTree`](#static-parsehtmlstring-string-bookmarkstree)\n\n  - Netscape Bookmark 形式の HTML 文字列を解析し、`BookmarksTree`を返します。\n  - [`parseFromHTMLString`](#static-parsefromhtmlstringhtmlstring-string-bookmarkstree)のエイリアス。\n\n  **例:**\n\n  ```typescript\n  const html = `\u003c!DOCTYPE NETSCAPE-Bookmark-file-1\u003e\\n\u003cHTML\u003e\u003cBODY\u003e\u003cDL\u003e\u003cp\u003e\\n  \u003cDT\u003e\u003cA HREF=\\\"https://example.com\\\"\u003eExample\u003c/A\u003e\\n\u003c/DL\u003e\u003cp\u003e\u003c/BODY\u003e\u003c/HTML\u003e`;\n  const tree = BookmarksParser.parse(html);\n  console.log(tree.toJSON());\n  ```\n\n- [`static parseFromHTMLString(htmlString: string): BookmarksTree`](#static-parsefromhtmlstringhtmlstring-string-bookmarkstree)\n\n  - HTML 文字列を解析し、`BookmarksTree`を返します。\n\n  **例:**\n\n  ```typescript\n  const html = `\u003c!DOCTYPE NETSCAPE-Bookmark-file-1\u003e...`;\n  const tree = BookmarksParser.parseFromHTMLString(html);\n  ```\n\n- [`static parseFromDOM(dom: HTMLDocument): BookmarksTree`](#static-parsefromdomdom-htmldocument-bookmarkstree)\n\n  - 既存の`HTMLDocument`から`BookmarksTree`を生成します。\n\n  **例:**\n\n  ```typescript\n  const dom = new DOMParser().parseFromString(html, \"text/html\");\n  const tree = BookmarksParser.parseFromDOM(dom);\n  ```\n\n- [`static parseFromJSON(jsonString: string): BookmarksTree`](#static-parsefromjsonjsonstring-string-bookmarkstree)\n\n  - JSON 文字列を解析し、`BookmarksTree`を返します。\n\n  **例:**\n\n  ```typescript\n  const json = '{\"Google\": \"https://google.com\"}';\n  const tree = BookmarksParser.parseFromJSON(json);\n  ```\n\n---\n\n### BookmarksTree クラス\n\n`BookmarksTree`は`Map`を継承し、フォルダ（`BookmarksTree`）やブックマーク（URL 文字列）を階層構造で管理します。\n\n#### コンストラクタ\n\n- [`new BookmarksTree()`](#constructor)\n\n  **例:**\n\n  ```typescript\n  const tree = new BookmarksTree();\n  tree.set(\"Google\", \"https://google.com\");\n  ```\n\n#### インスタンスメソッド\n\n- [`toJSON(): Record\u003cstring, unknown\u003e`](#tojson-recordstring-unknown)\n\n  - ツリーを JSON オブジェクトに変換します。\n\n  **例:**\n\n  ```typescript\n  const json = tree.toJSON();\n  console.log(json);\n  ```\n\n- [`toDOM(): HTMLDocument`](#todom-htmldocument)\n\n  - ツリーを Netscape Bookmark 形式の HTML ドキュメントに変換します。\n\n  **例:**\n\n  ```typescript\n  const dom = tree.toDOM();\n  ```\n\n- [`get HTMLString(): string`](#get-htmlstring-string)\n\n  - Netscape Bookmark 形式の完全な HTML 文字列を取得します。\n\n  **例:**\n\n  ```typescript\n  const html = tree.HTMLString;\n  console.log(html);\n  ```\n\n- [`get HTMLText(): string`](#get-htmltext-string)\n  - `HTMLString`のエイリアス（非推奨）。\n\n#### 静的メソッド\n\n- [`static fromJSON(json: Record\u003cstring, unknown\u003e): BookmarksTree`](#static-fromjsonjson-recordstring-unknown-bookmarkstree)\n\n  - JSON オブジェクトからツリーを生成します。\n\n  **例:**\n\n  ```typescript\n  const json = { Google: \"https://google.com\" };\n  const tree = BookmarksTree.fromJSON(json);\n  ```\n\n- [`static fromDOM(dom: HTMLDocument): BookmarksTree`](#static-fromdomdom-htmldocument-bookmarkstree)\n\n  - HTML ドキュメントからツリーを生成します。\n\n  **例:**\n\n  ```typescript\n  const dom = new DOMParser().parseFromString(html, \"text/html\");\n  const tree = BookmarksTree.fromDOM(dom);\n  ```\n\n## プロジェクト構成\n\n```\nsrc/\n├── BookmarksTree/\n│   ├── BookmarksTree.ts      # メインのブックマークツリークラス\n│   ├── BookmarksTree.test.ts # 包括的テスト\n│   └── index.ts             # エクスポート定義\n└── BookmarksParser/\n    ├── BookmarksParser.ts    # HTMLパーサー\n    ├── BookmarksParser.test.ts # パーサーテスト\n    └── index.ts             # エクスポート定義\nscripts/\n└── build_npm.ts             # NPMビルドスクリプト\n.github/\n└── workflows/\n    └── release.yml          # CI/CDパイプライン\nnpm/                         # Node.jsビルド成果物\n├── esm/                     # ESモジュール\n├── package.json\n└── README.md\n```\n\n## サポート形式\n\n### 入力形式\n\n- **Netscape Bookmark File Format**: 標準 HTML ブックマークファイル形式\n- **Chrome エクスポート形式**: Chrome からエクスポートされた HTML\n- **Firefox エクスポート形式**: Firefox からエクスポートされた HTML\n- **Safari エクスポート形式**: Safari からエクスポートされた HTML\n- **Edge エクスポート形式**: Microsoft Edge からエクスポートされた HTML\n- **汎用 HTML**: Netscape ブックマーク構造に準拠した任意の HTML\n\n### 出力形式\n\n- **JSON**: プログラムから扱いやすい構造化 JSON データ\n- **HTML**: 全ブラウザ互換の Netscape Bookmark File Format\n- **DOM**: ブラウザ互換の HTMLDocument オブジェクト\n\n### 特別な機能\n\n- **Unicode 対応**: 国際文字や絵文字も完全サポート\n- **URL バリデーション**: http, https, ftp, file, 相対パス等多様な URL 形式に対応\n- **HTML エンティティ処理**: HTML エンティティの適切なエスケープ/アンエスケープ\n- **空フォルダサポート**: 空のフォルダも構造として保持\n- **重複処理**: 同名ブックマークは後勝ち\n\n## 依存関係\n\n- [`@b-fuze/deno-dom`](https://jsr.io/@b-fuze/deno-dom): Deno/Node.js 両対応の DOM パーサ・操作\n\n## ブラウザ互換性\n\n### エクスポートファイル対応ブラウザ\n\n- **Chrome/Chromium**: 全バージョン\n- **Firefox**: 全バージョン\n- **Safari**: 全バージョン\n- **Microsoft Edge**: 全バージョン\n- **Opera**: 全バージョン\n- **Internet Explorer**: 6+（レガシーサポート）\n\n### エクスポートファイル例\n\nライブラリは以下のようなブックマークファイルを解析できます：\n\n```html\n\u003c!-- Chrome/Edge形式 --\u003e\n\u003c!DOCTYPE NETSCAPE-Bookmark-file-1\u003e\n\u003c!--This is an automatically generated file.--\u003e\n\u003cMETA HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\"\u003e\n\u003cTITLE\u003eBookmarks\u003c/TITLE\u003e\n\u003cH1\u003eBookmarks\u003c/H1\u003e\n\u003cDL\u003e\u003cp\u003e\n    \u003cDT\u003e\u003cH3 ADD_DATE=\"1640995200\"\u003eBookmarks bar\u003c/H3\u003e\n    \u003cDL\u003e\u003cp\u003e\n        \u003cDT\u003e\u003cA HREF=\"https://example.com\" ADD_DATE=\"1640995200\"\u003eExample\u003c/A\u003e\n    \u003c/DL\u003e\u003cp\u003e\n\u003c/DL\u003e\n\n\u003c!-- Firefox形式 --\u003e\n\u003c!DOCTYPE NETSCAPE-Bookmark-file-1\u003e\n\u003cMETA HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\"\u003e\n\u003cTITLE\u003eBookmarks\u003c/TITLE\u003e\n\u003cH1\u003eBookmarks Menu\u003c/H1\u003e\n\u003cDL\u003e\u003cp\u003e\n    \u003cDT\u003e\u003cH3\u003eBookmarks Toolbar\u003c/H3\u003e\n    \u003cDL\u003e\u003cp\u003e\n        \u003cDT\u003e\u003cA HREF=\"https://example.com\"\u003eExample Site\u003c/A\u003e\n    \u003c/DL\u003e\u003cp\u003e\n\u003c/DL\u003e\n```\n\n## ライセンス\n\nMIT License - 詳細は[LICENSE](LICENSE)を参照してください。\n\n## 作者\n\n**grakeice**\n\n- GitHub: [@grakeice](https://github.com/grakeice)\n\n## 変更履歴\n\n### v1.1.4（最新）\n\n- 🛠️ **パーサ改良**（多様なブックマーク HTML 形式への互換性向上・安定性向上）\n- 🧹 **コードリファクタリング・追加テスト**\n- 🐞 **マイナーバグ修正**\n- 📚 **ドキュメント更新**: API リファレンス刷新・説明統一・使用例追加・各種セクション復活\n\n### v1.1.3\n\n- 📝 **JSDoc コメント追加**: 主要クラス・メソッドに JSDoc 形式のコメントを追加し型情報と API 自動ドキュメント生成を強化\n- 📚 **ドキュメント更新**: Node.js/npm インストール手順に TypeScript インポート例を追加\n\n### v1.1.2\n\n- 📝 **ドキュメント強化**: 最新バージョン参照と改善例を含む README ドキュメント更新\n- 🔧 **バージョン一貫性**: 全ドキュメント・コード例でバージョン番号を統一\n- 📚 **内容更新**: インストール手順・使用例・API ドキュメントの明確化\n\n### v1.1.1\n\n- 🛡️ **セキュリティ強化**: [`BookmarksTree.prototype.HTMLText`](src/BookmarksTree/BookmarksTree.ts)がブックマークタイトル・URL の HTML エンティティを適切にエスケープ\n- 🔧 **コード一貫性**: Node.js/ブラウザ版間で HTML エスケープ動作を統一\n- 📝 **ドキュメント更新**: セキュリティ考慮事項を含む API ドキュメント強化\n- 🐛 **バグ修正**: 安定性向上・エッジケース対応\n\n### v1.1.0\n\n- 🌐 **ブラウザサポート**: ブラウザ用 web 最適化版を追加\n- 📦 **デュアルエントリーポイント**: Node.js/Deno 用（`./mod.ts`）とブラウザ用（`./mod_web.ts`）を分離\n- ⚡ **ネイティブ DOM API**: ブラウザ版は DOMParser 等のネイティブ API で高速化\n- 🔧 **ビルド最適化**: ポリフィル除去等によるビルド強化\n- 📚 **ドキュメント更新**: ブラウザ利用例・API リファレンス追加\n\n### v1.0.1\n\n- ✨ **コア機能**: HTML ブックマークファイルの完全解析\n- 🏗️ **BookmarksTree クラス**: Map インターフェースによる階層構造管理\n- 🔄 **双方向変換**: JSON↔HTML↔DOM 変換サポート\n- 🧪 **包括的テスト**: エッジケース対応含む完全テストカバレッジ\n- 📦 **マルチランタイム対応**: Deno/Node.js 両対応\n- 🔧 **TypeScript サポート**: 型定義・IntelliSense 完備\n- 🤖 **CI/CD パイプライン**: GitHub Actions による自動テスト・公開\n- 📚 **ドキュメント**: 例・API リファレンス含む README\n- 🌐 **国際化対応**: Unicode・多言語ブックマーク対応\n- ⚡ **パフォーマンス最適化**: 大規模ブックマークも効率的に解析\n- 🛡️ **エラーハンドリング**: 不正 HTML・無効 URL も安全に処理\n\n### v0.0.1-pre4\n\n- 初期プレリリース\n- コア機能の PoC\n- 基本的な解析実装\n- 初期テストセットアップ\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrakeice%2Fnetscape-bookmark-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrakeice%2Fnetscape-bookmark-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrakeice%2Fnetscape-bookmark-parser/lists"}