netscape-bookmark-parser 1.1.3 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/LICENSE +2 -2
  2. package/README-ja.md +233 -386
  3. package/README.md +152 -302
  4. package/dist/index.d.ts +240 -0
  5. package/dist/index.js +333 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/web.d.ts +241 -0
  8. package/dist/web.js +330 -0
  9. package/dist/web.js.map +1 -0
  10. package/package.json +58 -15
  11. package/esm/_dnt.polyfills.d.ts +0 -101
  12. package/esm/_dnt.polyfills.d.ts.map +0 -1
  13. package/esm/_dnt.polyfills.js +0 -127
  14. package/esm/_dnt.shims.d.ts +0 -6
  15. package/esm/_dnt.shims.d.ts.map +0 -1
  16. package/esm/_dnt.shims.js +0 -61
  17. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/build/deno-wasm/deno-wasm.d.ts +0 -14
  18. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/build/deno-wasm/deno-wasm.d.ts.map +0 -1
  19. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/build/deno-wasm/deno-wasm.js +0 -151
  20. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/deno-dom-wasm.d.ts +0 -23
  21. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/deno-dom-wasm.d.ts.map +0 -1
  22. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/deno-dom-wasm.js +0 -26
  23. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/api.d.ts +0 -24
  24. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/api.d.ts.map +0 -1
  25. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/api.js +0 -48
  26. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/constructor-lock.d.ts +0 -5
  27. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/constructor-lock.d.ts.map +0 -1
  28. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/constructor-lock.js +0 -4
  29. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/deserialize.d.ts +0 -4
  30. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/deserialize.d.ts.map +0 -1
  31. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/deserialize.js +0 -61
  32. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/document-fragment.d.ts +0 -19
  33. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/document-fragment.d.ts.map +0 -1
  34. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/document-fragment.js +0 -110
  35. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/document.d.ts +0 -68
  36. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/document.d.ts.map +0 -1
  37. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/document.js +0 -322
  38. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/dom-parser.d.ts +0 -6
  39. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/dom-parser.d.ts.map +0 -1
  40. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/dom-parser.js +0 -46
  41. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/element.d.ts +0 -127
  42. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/element.d.ts.map +0 -1
  43. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/element.js +0 -1068
  44. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/elements/html-template-element.d.ts +0 -29
  45. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/elements/html-template-element.d.ts.map +0 -1
  46. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/elements/html-template-element.js +0 -94
  47. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/html-collection.d.ts +0 -21
  48. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/html-collection.d.ts.map +0 -1
  49. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/html-collection.js +0 -80
  50. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/node-list.d.ts +0 -23
  51. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/node-list.d.ts.map +0 -1
  52. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/node-list.js +0 -159
  53. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/node.d.ts +0 -127
  54. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/node.d.ts.map +0 -1
  55. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/node.js +0 -629
  56. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/custom-api.d.ts +0 -6
  57. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/custom-api.d.ts.map +0 -1
  58. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/custom-api.js +0 -5
  59. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/nwsapi-types.d.ts +0 -12
  60. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/nwsapi-types.d.ts.map +0 -1
  61. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/nwsapi-types.js +0 -2
  62. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/nwsapi.d.ts +0 -90
  63. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/nwsapi.d.ts.map +0 -1
  64. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/nwsapi.js +0 -1611
  65. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/selectors.d.ts +0 -16
  66. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/selectors.d.ts.map +0 -1
  67. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/selectors.js +0 -28
  68. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/sizzle-types.d.ts +0 -8
  69. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/sizzle-types.d.ts.map +0 -1
  70. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/sizzle-types.js +0 -2
  71. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/sizzle.d.ts +0 -7
  72. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/sizzle.d.ts.map +0 -1
  73. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/sizzle.js +0 -2061
  74. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/string-cache.d.ts +0 -3
  75. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/string-cache.d.ts.map +0 -1
  76. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/string-cache.js +0 -10
  77. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils-types.d.ts +0 -13
  78. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils-types.d.ts.map +0 -1
  79. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils-types.js +0 -8
  80. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils.d.ts +0 -31
  81. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils.d.ts.map +0 -1
  82. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils.js +0 -239
  83. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/parser.d.ts +0 -5
  84. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/parser.d.ts.map +0 -1
  85. package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/parser.js +0 -20
  86. package/esm/mod.d.ts +0 -10
  87. package/esm/mod.d.ts.map +0 -1
  88. package/esm/mod.js +0 -9
  89. package/esm/mod_web.d.ts +0 -9
  90. package/esm/mod_web.d.ts.map +0 -1
  91. package/esm/mod_web.js +0 -8
  92. package/esm/package.json +0 -3
  93. package/esm/src/BookmarksParser/BookmarksParser.d.ts +0 -66
  94. package/esm/src/BookmarksParser/BookmarksParser.d.ts.map +0 -1
  95. package/esm/src/BookmarksParser/BookmarksParser.js +0 -70
  96. package/esm/src/BookmarksParser/index.d.ts +0 -8
  97. package/esm/src/BookmarksParser/index.d.ts.map +0 -1
  98. package/esm/src/BookmarksParser/index.js +0 -7
  99. package/esm/src/BookmarksTree/BookmarksTree.d.ts +0 -112
  100. package/esm/src/BookmarksTree/BookmarksTree.d.ts.map +0 -1
  101. package/esm/src/BookmarksTree/BookmarksTree.js +0 -217
  102. package/esm/src/BookmarksTree/index.d.ts +0 -8
  103. package/esm/src/BookmarksTree/index.d.ts.map +0 -1
  104. package/esm/src/BookmarksTree/index.js +0 -7
  105. package/esm/src/deps.d.ts +0 -9
  106. package/esm/src/deps.d.ts.map +0 -1
  107. package/esm/src/deps.js +0 -7
  108. package/esm/src/web/BookmarksParser/BookmarksParser.d.ts +0 -66
  109. package/esm/src/web/BookmarksParser/BookmarksParser.d.ts.map +0 -1
  110. package/esm/src/web/BookmarksParser/BookmarksParser.js +0 -70
  111. package/esm/src/web/BookmarksParser/index.d.ts +0 -8
  112. package/esm/src/web/BookmarksParser/index.d.ts.map +0 -1
  113. package/esm/src/web/BookmarksParser/index.js +0 -7
  114. package/esm/src/web/BookmarksTree/BookmarksTree.d.ts +0 -112
  115. package/esm/src/web/BookmarksTree/BookmarksTree.d.ts.map +0 -1
  116. package/esm/src/web/BookmarksTree/BookmarksTree.js +0 -217
  117. package/esm/src/web/BookmarksTree/index.d.ts +0 -8
  118. package/esm/src/web/BookmarksTree/index.d.ts.map +0 -1
  119. package/esm/src/web/BookmarksTree/index.js +0 -7
  120. package/esm/src/web/deps.d.ts +0 -10
  121. package/esm/src/web/deps.d.ts.map +0 -1
  122. package/esm/src/web/deps.js +0 -9
package/README-ja.md CHANGED
@@ -1,18 +1,20 @@
1
1
  # Netscape Bookmark Parser
2
2
 
3
- ブラウザのブックマークファイル(HTML 形式)を解析し、構造化データとして操作するための TypeScript/JavaScript ライブラリです。Deno と Node.js の両方のランタイムに対応しています。
3
+ ブラウザのブックマークファイル(HTML 形式)を解析し、構造化データとして操作できる TypeScript/JavaScript ライブラリです。Deno と Node.js の両方のランタイムに対応しています。
4
4
 
5
5
  > **注意:**
6
- > この README は AI 生成されたドキュメントです。詳細はほぼ正確ですが、不正確な説明が含まれる可能性があります。
6
+ > この README は AI による自動生成です。内容はほぼ正確ですが、不正確な説明が含まれる場合があります。
7
7
 
8
- ## 機能
8
+ 英語版ドキュメント: [`./README.md`](./README.md)
9
9
 
10
- - **HTML ブックマークファイルの解析**: Chrome、Firefox、Safari、その他のブラウザからエクスポートされた HTML ブックマークファイルを解析
11
- - **階層構造の保持**: フォルダとブックマークの階層構造を完全に保持
12
- - **双方向変換**: HTML からデータ構造への変換とその逆の変換をサポート
13
- - **JSON シリアライゼーション**: ブックマークツリーを JSON として保存・復元
14
- - **Deno & Node.js 対応**: Deno と Node.js の両方のランタイムで動作
15
- - **型安全性**: 包括的な型定義によるフル TypeScript サポート
10
+ ## 特徴
11
+
12
+ - **HTML ブックマークファイルの解析**: Chrome、Firefox、Safari など各種ブラウザからエクスポートされた HTML ブックマークファイルを解析
13
+ - **階層構造の完全保持**: フォルダやブックマークの階層構造を忠実に再現
14
+ - **双方向変換**: HTML⇔ データ構造の相互変換に対応
15
+ - **JSON シリアライズ**: ブックマークツリーを JSON として保存・復元可能
16
+ - **Deno & Node.js 両対応**: どちらのランタイムでも動作
17
+ - **型安全**: TypeScript による型定義を完備
16
18
 
17
19
  ## インストール
18
20
 
@@ -29,96 +31,89 @@ import { BookmarksParser, BookmarksTree } from "netscape-bookmark-parser";
29
31
  ### Deno
30
32
 
31
33
  ```typescript
32
- import {
33
- BookmarksParser,
34
- BookmarksTree,
35
- } from "jsr:@grakeice/netscape-bookmark-parser";
34
+ import { BookmarksParser, BookmarksTree } from "jsr:@grakeice/netscape-bookmark-parser";
36
35
  ```
37
36
 
38
- > **注意:** JSR 版は Node.js/Deno ランタイム版のみを含んでいます。ブラウザサポートが必要な場合は、npm パッケージをご使用ください。
37
+ > **注意:** JSR 版は Node.js/Deno 用のエントリです。ブラウザでは npm の依存関係ゼロの `./web` エントリをご利用ください。
39
38
 
40
39
  ### ブラウザ
41
40
 
42
- #### オプション 1: ビルドツールの使用(推奨)
41
+ #### オプション 1: ビルドツール利用(推奨)
43
42
 
44
- **WebpackViteRollupParcel など:**
43
+ **Webpack, Vite, Rollup, Parcel 等:**
45
44
 
46
45
  ```typescript
47
- // ブラウザ環境では、Web最適化版を使用
46
+ // ブラウザ環境ではweb最適化版を利用
48
47
  import { BookmarksParser, BookmarksTree } from "netscape-bookmark-parser/web";
49
48
 
50
49
  // 例: アップロードされたブックマークファイルの解析
51
50
  function handleFileUpload(event: Event) {
52
- const file = (event.target as HTMLInputElement).files?.[0];
53
- if (file) {
54
- const reader = new FileReader();
55
- reader.onload = (e) => {
56
- const htmlContent = e.target?.result as string;
57
- const bookmarksTree = BookmarksParser.parse(htmlContent);
58
- console.log(bookmarksTree.toJSON());
59
- };
60
- reader.readAsText(file);
61
- }
51
+ const file = (event.target as HTMLInputElement).files?.[0];
52
+ if (file) {
53
+ const reader = new FileReader();
54
+ reader.onload = (e) => {
55
+ const htmlContent = e.target?.result as string;
56
+ const bookmarksTree = BookmarksParser.parse(htmlContent);
57
+ console.log(bookmarksTree.toJSON());
58
+ };
59
+ reader.readAsText(file);
60
+ }
62
61
  }
63
62
  ```
64
63
 
65
- #### オプション 2: Import Maps を使用した CDN
64
+ #### オプション 2: CDN + Import Maps
66
65
 
67
66
  ```html
68
67
  <script type="importmap">
69
- {
70
- "imports": {
71
- "netscape-bookmark-parser/web": "https://cdn.jsdelivr.net/npm/netscape-bookmark-parser@1.1.3/esm/mod_web.js"
72
- }
73
- }
68
+ {
69
+ "imports": {
70
+ "netscape-bookmark-parser/web": "https://cdn.jsdelivr.net/npm/netscape-bookmark-parser@1.1.4/dist/web.js"
71
+ }
72
+ }
74
73
  </script>
75
74
  <script type="module">
76
- import { BookmarksParser, BookmarksTree } from "netscape-bookmark-parser/web";
77
-
78
- // ローカルインポートと同じように動作
79
- const tree = BookmarksParser.parse(htmlContent);
75
+ import { BookmarksParser, BookmarksTree } from "netscape-bookmark-parser/web";
76
+ const tree = BookmarksParser.parse(htmlContent);
80
77
  </script>
81
78
  ```
82
79
 
83
- #### オプション 3: CDN を直接インポート
80
+ #### オプション 3: CDN 直接インポート
84
81
 
85
82
  ```html
86
83
  <script type="module">
87
- import {
88
- BookmarksParser,
89
- BookmarksTree,
90
- } from "https://cdn.jsdelivr.net/npm/netscape-bookmark-parser@1.1.3/esm/mod_web.js";
91
-
92
- // import maps なしでの直接 CDN インポート
84
+ import {
85
+ BookmarksParser,
86
+ BookmarksTree,
87
+ } from "https://cdn.jsdelivr.net/npm/netscape-bookmark-parser@1.1.4/dist/web.js";
93
88
  </script>
94
89
  ```
95
90
 
96
- > **ブラウザサポート:** ブラウザ互換性は npm パッケージを通してのみ利用可能です。JSR パッケージは、プラットフォーム固有の依存関係のため、Web 最適化版を含んでいません。
91
+ > **ブラウザサポート:** web 最適化版は npm `./web` エントリから利用できます。ネイティブブラウザ API を使用し、DOM ライブラリへの依存はありません。
97
92
 
98
- > **注意:** Web 最適化版は、ネイティブブラウザ API(DOMParser など)を使用し、Node.js ポリフィルを含まないため、ブラウザ環境でより軽量で高速に動作します。
93
+ > **注意:** web 最適化版は DOMParser 等のネイティブ API を利用し、Node.js 用ポリフィルを含まないため、ブラウザで軽量かつ高速です。
99
94
 
100
- ## 使用方法
95
+ ## 使い方
101
96
 
102
- ### 基本的な例
97
+ ### 基本例
103
98
 
104
99
  ```typescript
105
100
  import { BookmarksParser, BookmarksTree } from "netscape-bookmark-parser";
106
101
 
107
- // HTMLブックマークファイルを読み込み
102
+ // HTMLブックマークファイルを読み込む
108
103
  const htmlContent = `<!DOCTYPE NETSCAPE-Bookmark-file-1>
109
104
  <HTML>
110
105
  <BODY>
111
106
  <DL><p>
112
- <DT><H3>フォルダ 1</H3>
107
+ <DT><H3>Folder 1</H3>
113
108
  <DL><p>
114
- <DT><A HREF="https://example.com">例</A>
109
+ <DT><A HREF="https://example.com">Example</A>
115
110
  </DL><p>
116
111
  <DT><A HREF="https://google.com">Google</A>
117
112
  </DL><p>
118
113
  </BODY>
119
114
  </HTML>`;
120
115
 
121
- // HTMLを解析してBookmarksTreeに変換
116
+ // 解析してBookmarksTreeに変換
122
117
  const bookmarksTree = BookmarksParser.parse(htmlContent);
123
118
 
124
119
  // JSONとして出力
@@ -135,7 +130,6 @@ console.log(bookmarksTree.HTMLText);
135
130
  // 新しいブックマークツリーを作成
136
131
  const tree = new BookmarksTree();
137
132
 
138
- // ブックマークを追加
139
133
  tree.set("Google", "https://google.com");
140
134
  tree.set("GitHub", "https://github.com");
141
135
 
@@ -148,8 +142,8 @@ const toolsFolder = new BookmarksTree();
148
142
  toolsFolder.set("GitHub", "https://github.com");
149
143
  toolsFolder.set("VS Code", "https://code.visualstudio.com");
150
144
 
151
- devFolder.set("ツール", toolsFolder);
152
- tree.set("開発", devFolder);
145
+ devFolder.set("Tools", toolsFolder);
146
+ tree.set("Development", devFolder);
153
147
 
154
148
  // JSONに変換
155
149
  const json = tree.toJSON();
@@ -158,9 +152,9 @@ const json = tree.toJSON();
158
152
  const restoredTree = BookmarksTree.fromJSON(json);
159
153
 
160
154
  // ツリー構造を確認
161
- console.log(tree.size); // トップレベルアイテムの数
162
- console.log(tree.has("開発")); // true
163
- console.log(tree.get("開発") instanceof BookmarksTree); // true
155
+ console.log(tree.size); // トップレベルのアイテム数
156
+ console.log(tree.has("Development")); // true
157
+ console.log(tree.get("Development") instanceof BookmarksTree); // true
164
158
  ```
165
159
 
166
160
  ### 複雑な構造の処理
@@ -171,16 +165,16 @@ const complexHtml = `<!DOCTYPE NETSCAPE-Bookmark-file-1>
171
165
  <HTML>
172
166
  <BODY>
173
167
  <DL><p>
174
- <DT><H3>仕事</H3>
168
+ <DT><H3>Work</H3>
175
169
  <DL><p>
176
- <DT><H3>開発</H3>
170
+ <DT><H3>Development</H3>
177
171
  <DL><p>
178
172
  <DT><A HREF="https://github.com">GitHub</A>
179
173
  <DT><A HREF="https://stackoverflow.com">Stack Overflow</A>
180
174
  </DL><p>
181
175
  <DT><A HREF="https://docs.google.com">Google Docs</A>
182
176
  </DL><p>
183
- <DT><H3>個人</H3>
177
+ <DT><H3>Personal</H3>
184
178
  <DL><p>
185
179
  <DT><A HREF="https://youtube.com">YouTube</A>
186
180
  <DT><A HREF="https://twitter.com">Twitter</A>
@@ -192,9 +186,9 @@ const complexHtml = `<!DOCTYPE NETSCAPE-Bookmark-file-1>
192
186
 
193
187
  const tree = BookmarksParser.parse(complexHtml);
194
188
 
195
- // ツリー構造をナビゲート
196
- const workFolder = tree.get("仕事") as BookmarksTree;
197
- const devFolder = workFolder.get("開発") as BookmarksTree;
189
+ // ツリー構造をたどる
190
+ const workFolder = tree.get("Work") as BookmarksTree;
191
+ const devFolder = workFolder.get("Development") as BookmarksTree;
198
192
  console.log(devFolder.get("GitHub")); // "https://github.com"
199
193
  ```
200
194
 
@@ -202,126 +196,151 @@ console.log(devFolder.get("GitHub")); // "https://github.com"
202
196
 
203
197
  ### Web 最適化版
204
198
 
205
- > **重要:** ブラウザサポートは npm インストールを通してのみ利用可能です。JSR 版にはブラウザ互換ビルドが含まれていません。
199
+ > **重要:** ブラウザサポートは npm `./web` エントリから利用できます。
206
200
 
207
- ライブラリは、Node.js 依存関係を排除し、ネイティブブラウザ API を使用するブラウザ最適化版を提供しています:
201
+ このライブラリは Node.js 依存を排除し、ネイティブブラウザ API を利用する web 最適化版を提供します:
208
202
 
209
203
  ```typescript
210
- // ブラウザ最適化版をインポート(npm のみ)
204
+ // web最適化版
211
205
  import { BookmarksParser, BookmarksTree } from "netscape-bookmark-parser/web";
212
206
  ```
213
207
 
214
208
  ### BookmarksParser クラス
215
209
 
216
- [`BookmarksParser`](src/BookmarksParser/BookmarksParser.ts)クラスは、HTML ブックマークファイルを解析するための静的メソッドを提供します。
210
+ `BookmarksParser`は Netscape Bookmark 形式の HTML や JSON を解析し、`BookmarksTree`インスタンスに変換する静的メソッドを提供します。
211
+
212
+ #### 静的メソッド
217
213
 
218
- #### `BookmarksParser.parse(htmlContent: string): BookmarksTree`
214
+ - [`static parse(htmlString: string): BookmarksTree`](#static-parsehtmlstring-string-bookmarkstree)
219
215
 
220
- HTML ブックマークファイルのコンテンツを解析し、[`BookmarksTree`](src/BookmarksTree/BookmarksTree.ts)インスタンスを返します。
216
+ - Netscape Bookmark 形式の HTML 文字列を解析し、`BookmarksTree`を返します。
217
+ - [`parseFromHTMLString`](#static-parsefromhtmlstringhtmlstring-string-bookmarkstree)のエイリアス。
221
218
 
222
- - **パラメータ**: `htmlContent` - 文字列としての HTML ブックマークファイル
223
- - **戻り値**: 解析されたブックマークツリー
219
+ **例:**
224
220
 
225
- **例:**
221
+ ```typescript
222
+ const html = `<!DOCTYPE NETSCAPE-Bookmark-file-1>\n<HTML><BODY><DL><p>\n <DT><A HREF=\"https://example.com\">Example</A>\n</DL><p></BODY></HTML>`;
223
+ const tree = BookmarksParser.parse(html);
224
+ console.log(tree.toJSON());
225
+ ```
226
226
 
227
- ```typescript
228
- const htmlContent = "<!DOCTYPE NETSCAPE-Bookmark-file-1>...";
229
- const tree = BookmarksParser.parse(htmlContent);
230
- ```
227
+ - [`static parseFromHTMLString(htmlString: string): BookmarksTree`](#static-parsefromhtmlstringhtmlstring-string-bookmarkstree)
228
+
229
+ - HTML 文字列を解析し、`BookmarksTree`を返します。
230
+
231
+ **例:**
232
+
233
+ ```typescript
234
+ const html = `<!DOCTYPE NETSCAPE-Bookmark-file-1>...`;
235
+ const tree = BookmarksParser.parseFromHTMLString(html);
236
+ ```
237
+
238
+ - [`static parseFromDOM(dom: HTMLDocument): BookmarksTree`](#static-parsefromdomdom-htmldocument-bookmarkstree)
239
+
240
+ - 既存の`HTMLDocument`から`BookmarksTree`を生成します。
241
+
242
+ **例:**
243
+
244
+ ```typescript
245
+ const dom = new DOMParser().parseFromString(html, "text/html");
246
+ const tree = BookmarksParser.parseFromDOM(dom);
247
+ ```
248
+
249
+ - [`static parseFromJSON(jsonString: string): BookmarksTree`](#static-parsefromjsonjsonstring-string-bookmarkstree)
250
+
251
+ - JSON 文字列を解析し、`BookmarksTree`を返します。
252
+
253
+ **例:**
254
+
255
+ ```typescript
256
+ const json = '{"Google": "https://google.com"}';
257
+ const tree = BookmarksParser.parseFromJSON(json);
258
+ ```
259
+
260
+ ---
231
261
 
232
262
  ### BookmarksTree クラス
233
263
 
234
- [`BookmarksTree`](src/BookmarksTree/BookmarksTree.ts)は、`Map<string, string | BookmarksTree>`を拡張してブックマークの階層構造を表現するクラスです。
264
+ `BookmarksTree`は`Map`を継承し、フォルダ(`BookmarksTree`)やブックマーク(URL 文字列)を階層構造で管理します。
235
265
 
236
266
  #### コンストラクタ
237
267
 
238
- ```typescript
239
- const tree = new BookmarksTree();
240
- ```
268
+ - [`new BookmarksTree()`](#constructor)
269
+
270
+ **例:**
271
+
272
+ ```typescript
273
+ const tree = new BookmarksTree();
274
+ tree.set("Google", "https://google.com");
275
+ ```
241
276
 
242
277
  #### インスタンスメソッド
243
278
 
244
- ##### `toJSON(): Record<string, unknown>`
279
+ - [`toJSON(): Record<string, unknown>`](#tojson-recordstring-unknown)
245
280
 
246
- ツリーを JSON オブジェクト表現に変換します。
281
+ - ツリーを JSON オブジェクトに変換します。
247
282
 
248
- ```typescript
249
- const json = tree.toJSON();
250
- console.log(JSON.stringify(json, null, 2));
251
- ```
283
+ **例:**
252
284
 
253
- ##### `toDOM(): HTMLDocument`
285
+ ```typescript
286
+ const json = tree.toJSON();
287
+ console.log(json);
288
+ ```
254
289
 
255
- ツリーを HTML ドキュメントオブジェクトに変換します。
290
+ - [`toDOM(): HTMLDocument`](#todom-htmldocument)
256
291
 
257
- ```typescript
258
- const htmlDocument = tree.toDOM();
259
- ```
292
+ - ツリーを Netscape Bookmark 形式の HTML ドキュメントに変換します。
260
293
 
261
- ##### `get HTMLText(): string`
294
+ **例:**
262
295
 
263
- ブックマークツリーの HTML 文字列表現を取得します。
296
+ ```typescript
297
+ const dom = tree.toDOM();
298
+ ```
264
299
 
265
- ```typescript
266
- const htmlString = tree.HTMLText;
267
- console.log(htmlString); // 完全なHTMLブックマークファイル
268
- ```
300
+ - [`get HTMLString(): string`](#get-htmlstring-string)
269
301
 
270
- #### 静的メソッド
302
+ - Netscape Bookmark 形式の完全な HTML 文字列を取得します。
271
303
 
272
- ##### `fromJSON(json: Record<string, unknown>): BookmarksTree`
304
+ **例:**
273
305
 
274
- JSON オブジェクトからツリーを復元します。
306
+ ```typescript
307
+ const html = tree.HTMLString;
308
+ console.log(html);
309
+ ```
275
310
 
276
- ```typescript
277
- const json = { Google: "https://google.com" };
278
- const tree = BookmarksTree.fromJSON(json);
279
- ```
311
+ - [`get HTMLText(): string`](#get-htmltext-string)
312
+ - `HTMLString`のエイリアス(非推奨)。
280
313
 
281
- ##### `fromDOM(dom: HTMLDocument): BookmarksTree`
314
+ #### 静的メソッド
282
315
 
283
- DOM ドキュメントからツリーを作成します。
316
+ - [`static fromJSON(json: Record<string, unknown>): BookmarksTree`](#static-fromjsonjson-recordstring-unknown-bookmarkstree)
284
317
 
285
- ```typescript
286
- const dom = new DOMParser().parseFromString(htmlContent, "text/html");
287
- const tree = BookmarksTree.fromDOM(dom);
288
- ```
318
+ - JSON オブジェクトからツリーを生成します。
289
319
 
290
- #### Map インターフェース
320
+ **例:**
291
321
 
292
- `BookmarksTree`は`Map`を拡張しているため、すべての標準 Map メソッドを使用できます:
322
+ ```typescript
323
+ const json = { Google: "https://google.com" };
324
+ const tree = BookmarksTree.fromJSON(json);
325
+ ```
293
326
 
294
- ```typescript
295
- // ブックマークとフォルダを設定
296
- tree.set("bookmark", "https://example.com");
297
- tree.set("folder", new BookmarksTree());
298
-
299
- // 値を取得
300
- const url = tree.get("bookmark"); // string
301
- const folder = tree.get("folder"); // BookmarksTree
302
-
303
- // 存在確認
304
- tree.has("bookmark"); // true
305
-
306
- // アイテムを削除
307
- tree.delete("bookmark");
308
-
309
- // 繰り返し処理
310
- for (const [name, value] of tree) {
311
- if (typeof value === "string") {
312
- console.log(`ブックマーク: ${name} -> ${value}`);
313
- } else {
314
- console.log(`フォルダ: ${name} (${value.size} アイテム)`);
315
- }
316
- }
317
- ```
327
+ - [`static fromDOM(dom: HTMLDocument): BookmarksTree`](#static-fromdomdom-htmldocument-bookmarkstree)
328
+
329
+ - HTML ドキュメントからツリーを生成します。
330
+
331
+ **例:**
332
+
333
+ ```typescript
334
+ const dom = new DOMParser().parseFromString(html, "text/html");
335
+ const tree = BookmarksTree.fromDOM(dom);
336
+ ```
318
337
 
319
- ## プロジェクト構造
338
+ ## プロジェクト構成
320
339
 
321
340
  ```
322
341
  src/
323
342
  ├── BookmarksTree/
324
- │ ├── BookmarksTree.ts # メインブックマークツリークラス
343
+ │ ├── BookmarksTree.ts # メインのブックマークツリークラス
325
344
  │ ├── BookmarksTree.test.ts # 包括的テスト
326
345
  │ └── index.ts # エクスポート定義
327
346
  └── BookmarksParser/
@@ -329,151 +348,56 @@ src/
329
348
  ├── BookmarksParser.test.ts # パーサーテスト
330
349
  └── index.ts # エクスポート定義
331
350
  scripts/
332
- └── build_npm.ts # NPMビルドスクリプト
351
+ └── sync-jsr-version.mjs # package.jsonとJSRバージョンの同期
333
352
  .github/
334
353
  └── workflows/
335
- └── release.yml # CI/CDパイプライン
336
- npm/ # Node.jsビルド成果物
337
- ├── esm/ # ESモジュール
338
- ├── package.json
339
- └── README.md
354
+ ├── changesets.yml # ChangesetsによるバージョンPR
355
+ ├── ci.yml # テスト・型検査・ビルド
356
+ └── release.yml # NPM/JSR公開とGitHub Release
357
+ dist/ # 生成されるパッケージファイル(コミット対象外)
340
358
  ```
341
359
 
360
+ ## 開発とリリース
361
+
362
+ pnpmで依存関係をインストールし、ローカル検証を実行します。
363
+
364
+ ```bash
365
+ pnpm install
366
+ pnpm test
367
+ pnpm typecheck
368
+ pnpm build
369
+ ```
370
+
371
+ ユーザー向け変更には `pnpm changeset` でリリースノートを追加します。`main` へのpushでChangesetsがバージョンPRを作成し、マージ時に `package.json` の変更と `jsr.json` のバージョン同期が行われます。その後の `main` へのpushでNPM/JSRへ公開し、対応する `v<version>` GitタグとGitHub Releaseを作成します。
372
+
342
373
  ## サポート形式
343
374
 
344
375
  ### 入力形式
345
376
 
346
377
  - **Netscape Bookmark File Format**: 標準 HTML ブックマークファイル形式
347
- - **Chrome エクスポート形式**: Chrome ブラウザからエクスポートされた HTML ファイル
348
- - **Firefox エクスポート形式**: Firefox ブラウザからエクスポートされた HTML ファイル
349
- - **Safari エクスポート形式**: Safari ブラウザからエクスポートされた HTML ファイル
350
- - **Edge エクスポート形式**: Microsoft Edge からエクスポートされた HTML ファイル
351
- - **汎用 HTML**: Netscape ブックマーク構造に従った任意の HTML
378
+ - **Chrome エクスポート形式**: Chrome からエクスポートされた HTML
379
+ - **Firefox エクスポート形式**: Firefox からエクスポートされた HTML
380
+ - **Safari エクスポート形式**: Safari からエクスポートされた HTML
381
+ - **Edge エクスポート形式**: Microsoft Edge からエクスポートされた HTML
382
+ - **汎用 HTML**: Netscape ブックマーク構造に準拠した任意の HTML
352
383
 
353
384
  ### 出力形式
354
385
 
355
- - **JSON**: プログラムからの簡単なアクセスのための構造化 JSON データ
356
- - **HTML**: 全ブラウザ互換の標準 Netscape Bookmark File Format
386
+ - **JSON**: プログラムから扱いやすい構造化 JSON データ
387
+ - **HTML**: 全ブラウザ互換の Netscape Bookmark File Format
357
388
  - **DOM**: ブラウザ互換の HTMLDocument オブジェクト
358
389
 
359
390
  ### 特別な機能
360
391
 
361
- - **Unicode 対応**: 国際文字と絵文字のフルサポート
362
- - **URL 検証**: 様々な URL 形式(http、https、ftpfile、相対)の処理
363
- - **HTML エンティティ処理**: HTML エンティティの適切なエスケープ・アンエスケープ
364
- - **空フォルダサポート**: ブックマーク構造内の空フォルダを保持
365
- - **重複処理**: 重複するブックマーク名は最後の値が優先
366
-
367
- ## 出力例
368
-
369
- ### JSON 形式
370
-
371
- ```json
372
- {
373
- "開発": {
374
- "MDN": "https://developer.mozilla.org",
375
- "ツール": {
376
- "GitHub": "https://github.com",
377
- "Stack Overflow": "https://stackoverflow.com"
378
- }
379
- },
380
- "Google": "https://google.com"
381
- }
382
- ```
383
-
384
- ### HTML 形式
385
-
386
- ```html
387
- <!DOCTYPE NETSCAPE-Bookmark-file-1>
388
- <HTML>
389
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
390
- <TITLE>Bookmark</TITLE>
391
- <H1>Bookmark</H1>
392
- <BODY>
393
- <DL><p>
394
- <DT><H3>開発</H3>
395
- <DL><p>
396
- <DT><A HREF="https://developer.mozilla.org">MDN</A>
397
- <DT><H3>ツール</H3>
398
- <DL><p>
399
- <DT><A HREF="https://github.com">GitHub</A>
400
- <DT><A HREF="https://stackoverflow.com">Stack Overflow</A>
401
- </DL><p>
402
- </DL><p>
403
- <DT><A HREF="https://google.com">Google</A>
404
- </DL>
405
- </BODY>
406
- </HTML>
407
- ```
392
+ - **Unicode 対応**: 国際文字や絵文字も完全サポート
393
+ - **URL バリデーション**: http, https, ftp, file, 相対パス等多様な URL 形式に対応
394
+ - **HTML エンティティ処理**: HTML エンティティの適切なエスケープ/アンエスケープ
395
+ - **空フォルダサポート**: 空のフォルダも構造として保持
396
+ - **重複処理**: 同名ブックマークは後勝ち
408
397
 
409
398
  ## 依存関係
410
399
 
411
- - [`@b-fuze/deno-dom`](https://jsr.io/@b-fuze/deno-dom): DenoNode.js 環境の両方での DOM 解析・操作
412
-
413
- ## 開発
414
-
415
- ### 前提条件
416
-
417
- - [Deno](https://deno.land/) 1.x 以降
418
-
419
- ### セットアップ
420
-
421
- ```bash
422
- git clone https://github.com/grakeice/netscape-bookmark-parser.git
423
- cd netscape-bookmark-parser
424
- ```
425
-
426
- ### 開発コマンド
427
-
428
- ```bash
429
- # ファイル監視付きの開発サーバーを実行
430
- deno task dev
431
-
432
- # 全テストを実行
433
- deno test
434
-
435
- # カバレッジ付きテストを実行
436
- deno test --coverage
437
-
438
- # コードをフォーマット
439
- deno fmt
440
-
441
- # コードをリント
442
- deno lint
443
-
444
- # Node.js用にビルド
445
- deno task build:npm
446
-
447
- # 特定のバージョンでビルド
448
- deno task build:npm 1.0.0
449
- ```
450
-
451
- ### テストの実行
452
-
453
- プロジェクトには全機能の包括的なテストスイートが含まれています:
454
-
455
- ```bash
456
- # 全テストを実行
457
- deno test
458
-
459
- # 特定のテストファイルを実行
460
- deno test src/BookmarksTree/BookmarksTree.test.ts
461
-
462
- # 詳細出力でテストを実行
463
- deno test --verbose
464
-
465
- # テストを実行してカバレッジレポートを生成
466
- deno test --coverage=coverage_dir
467
- deno coverage coverage_dir
468
- ```
469
-
470
- ### パブリッシュ
471
-
472
- プロジェクトは GitHub Actions による自動パブリッシュを使用しています:
473
-
474
- 1. バージョンタグを作成: `git tag v1.0.0`
475
- 2. タグをプッシュ: `git push origin v1.0.0`
476
- 3. GitHub Actions が自動的にビルドして NPM と JSR の両方にパブリッシュ
400
+ - [`@b-fuze/deno-dom`](https://jsr.io/@b-fuze/deno-dom): Deno/Node.js 両対応の DOM パーサ・操作
477
401
 
478
402
  ## ブラウザ互換性
479
403
 
@@ -486,9 +410,9 @@ deno coverage coverage_dir
486
410
  - **Opera**: 全バージョン
487
411
  - **Internet Explorer**: 6+(レガシーサポート)
488
412
 
489
- ### エクスポートファイルの例
413
+ ### エクスポートファイル例
490
414
 
491
- ライブラリは以下からエクスポートされたブックマークファイルを解析できます:
415
+ ライブラリは以下のようなブックマークファイルを解析できます:
492
416
 
493
417
  ```html
494
418
  <!-- Chrome/Edge形式 -->
@@ -498,9 +422,9 @@ deno coverage coverage_dir
498
422
  <TITLE>Bookmarks</TITLE>
499
423
  <H1>Bookmarks</H1>
500
424
  <DL><p>
501
- <DT><H3 ADD_DATE="1640995200">ブックマークバー</H3>
425
+ <DT><H3 ADD_DATE="1640995200">Bookmarks bar</H3>
502
426
  <DL><p>
503
- <DT><A HREF="https://example.com" ADD_DATE="1640995200">例</A>
427
+ <DT><A HREF="https://example.com" ADD_DATE="1640995200">Example</A>
504
428
  </DL><p>
505
429
  </DL>
506
430
 
@@ -508,102 +432,18 @@ deno coverage coverage_dir
508
432
  <!DOCTYPE NETSCAPE-Bookmark-file-1>
509
433
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
510
434
  <TITLE>Bookmarks</TITLE>
511
- <H1>ブックマークメニュー</H1>
435
+ <H1>Bookmarks Menu</H1>
512
436
  <DL><p>
513
- <DT><H3>ブックマークツールバー</H3>
437
+ <DT><H3>Bookmarks Toolbar</H3>
514
438
  <DL><p>
515
- <DT><A HREF="https://example.com">例のサイト</A>
439
+ <DT><A HREF="https://example.com">Example Site</A>
516
440
  </DL><p>
517
441
  </DL>
518
442
  ```
519
443
 
520
- ## エラーハンドリング
521
-
522
- ライブラリは様々なエラー条件を適切に処理します:
523
-
524
- ```typescript
525
- // 無効なHTML
526
- const invalidHtml =
527
- "<html><body>ブックマークファイルではありません</body></html>";
528
- const tree = BookmarksParser.parse(invalidHtml);
529
- console.log(tree.size); // 0 - 空のツリー
530
-
531
- // 空のコンテンツ
532
- const emptyTree = BookmarksParser.parse("");
533
- console.log(emptyTree.size); // 0
534
-
535
- // 不正なURLはスキップされる
536
- const htmlWithBadUrls = `<!DOCTYPE NETSCAPE-Bookmark-file-1>
537
- <HTML><BODY><DL><p>
538
- <DT><A HREF="">空のURL</A>
539
- <DT><A>HREF属性なし</A>
540
- <DT><A HREF="https://valid.com">有効なリンク</A>
541
- </DL><p></BODY></HTML>`;
542
-
543
- const parsedTree = BookmarksParser.parse(htmlWithBadUrls);
544
- console.log(parsedTree.size); // 1 - 有効なリンクのみ含まれる
545
- ```
546
-
547
- ## パフォーマンス
548
-
549
- ライブラリはパフォーマンスに最適化されています:
550
-
551
- - **メモリ効率**: O(1)検索のためのネイティブ Map 構造を使用
552
- - **ストリーミング対応**: 大きなブックマークファイル(1000+ブックマーク)を処理可能
553
- - **高速解析**: 効率的なツリー走査を伴う DOM ベース解析
554
- - **JSON 変換**: 最適化されたシリアライゼーション/デシリアライゼーション
555
-
556
- ## TypeScript サポート
557
-
558
- 完全な TypeScript 定義が含まれています:
559
-
560
- ```typescript
561
- interface BookmarkValue extends Map<string, string | BookmarksTree> {
562
- toJSON(): Record<string, unknown>;
563
- toDOM(): HTMLDocument;
564
- readonly HTMLText: string;
565
- }
566
-
567
- class BookmarksParser {
568
- static parse(htmlContent: string): BookmarksTree;
569
- }
570
-
571
- class BookmarksTree extends Map<string, string | BookmarksTree> {
572
- toJSON(): Record<string, unknown>;
573
- static fromJSON(json: Record<string, unknown>): BookmarksTree;
574
- static fromDOM(dom: HTMLDocument): BookmarksTree;
575
- toDOM(): HTMLDocument;
576
- get HTMLText(): string;
577
- }
578
- ```
579
-
580
444
  ## ライセンス
581
445
 
582
- MIT License - 詳細は[LICENSE](LICENSE)ファイルを参照してください。
583
-
584
- ## コントリビューション
585
-
586
- プルリクエストとイシューレポートを歓迎します!
587
-
588
- ### コントリビューション方法
589
-
590
- 1. このリポジトリをフォーク
591
- 2. 機能ブランチを作成(`git checkout -b feature/amazing-feature`)
592
- 3. テストと共に変更を実装
593
- 4. 全テストが通ることを確認(`deno test`)
594
- 5. コードをフォーマット(`deno fmt`)
595
- 6. 変更をコミット(`git commit -m 'Add some amazing feature'`)
596
- 7. ブランチにプッシュ(`git push origin feature/amazing-feature`)
597
- 8. プルリクエストを作成
598
-
599
- ### イシューの報告
600
-
601
- イシューを報告する際は、以下を含めてください:
602
-
603
- - ブラウザ/環境情報
604
- - サンプルブックマーク HTML(該当する場合)
605
- - 期待される動作と実際の動作
606
- - 再現手順
446
+ MIT License - 詳細は[LICENSE](LICENSE)を参照してください。
607
447
 
608
448
  ## 作者
609
449
 
@@ -613,49 +453,56 @@ MIT License - 詳細は[LICENSE](LICENSE)ファイルを参照してください
613
453
 
614
454
  ## 変更履歴
615
455
 
616
- ### v1.1.3(最新)
456
+ ### v1.1.4(最新)
457
+
458
+ - 🛠️ **パーサ改良**(多様なブックマーク HTML 形式への互換性向上・安定性向上)
459
+ - 🧹 **コードリファクタリング・追加テスト**
460
+ - 🐞 **マイナーバグ修正**
461
+ - 📚 **ドキュメント更新**: API リファレンス刷新・説明統一・使用例追加・各種セクション復活
462
+
463
+ ### v1.1.3
617
464
 
618
- - 📝 **JSDoc コメント追加**: 主要なクラス・メソッドに JSDoc 形式のコメントを追加し、型情報と API 自動ドキュメント生成を強化
619
- - 📚 **ドキュメント更新**: インストール手順(Node.js/npm)に TypeScript でのインポート例を追加
465
+ - 📝 **JSDoc コメント追加**: 主要クラス・メソッドに JSDoc 形式のコメントを追加し型情報と API 自動ドキュメント生成を強化
466
+ - 📚 **ドキュメント更新**: Node.js/npm インストール手順に TypeScript インポート例を追加
620
467
 
621
468
  ### v1.1.2
622
469
 
623
- - 📝 **ドキュメント強化**: 最新バージョン参照と改善された例を含む包括的な README ドキュメントの更新
624
- - 🔧 **バージョン一貫性**: 全ドキュメントとコード例でのバージョン番号の同期
625
- - 📚 **コンテンツ更新**: より明確性のためのインストール手順、使用例、API ドキュメントの改良
470
+ - 📝 **ドキュメント強化**: 最新バージョン参照と改善例を含む README ドキュメント更新
471
+ - 🔧 **バージョン一貫性**: 全ドキュメント・コード例でバージョン番号を統一
472
+ - 📚 **内容更新**: インストール手順・使用例・API ドキュメントの明確化
626
473
 
627
474
  ### v1.1.1
628
475
 
629
- - 🛡️ **セキュリティ強化**: [`BookmarksTree.prototype.HTMLText`](src/BookmarksTree/BookmarksTree.ts) がブックマークのタイトルと URL の HTML エンティティを適切にエスケープするように修正
630
- - 🔧 **コード一貫性**: Node.js とブラウザ版間で HTML エスケープ動作を統一
631
- - 📝 **ドキュメント更新**: セキュリティ考慮事項を含む API ドキュメントの強化
632
- - 🐛 **バグ修正**: マイナーな安定性改善とエッジケース処理
476
+ - 🛡️ **セキュリティ強化**: [`BookmarksTree.prototype.HTMLText`](src/BookmarksTree/BookmarksTree.ts)がブックマークタイトル・URL の HTML エンティティを適切にエスケープ
477
+ - 🔧 **コード一貫性**: Node.js/ブラウザ版間で HTML エスケープ動作を統一
478
+ - 📝 **ドキュメント更新**: セキュリティ考慮事項を含む API ドキュメント強化
479
+ - 🐛 **バグ修正**: 安定性向上・エッジケース対応
633
480
 
634
481
  ### v1.1.0
635
482
 
636
- - 🌐 **ブラウザサポート**: ブラウザ環境用の Web 最適化版を追加
637
- - 📦 **デュアルエントリーポイント**: Node.js/Deno 用(`./mod.ts`)とブラウザ用(`./mod_web.ts`)の分離ビルド
638
- - ⚡ **ネイティブ DOM API**: ブラウザ版はネイティブ DOMParser DOM API を使用してパフォーマンス向上
639
- - 🔧 **ビルド最適化**: ブラウザ互換性のためのポリフィル除去を含む強化されたビルドプロセス
640
- - 📚 **ドキュメント更新**: ブラウザ使用例と API リファレンスを追加
483
+ - 🌐 **ブラウザサポート**: ブラウザ用 web 最適化版を追加
484
+ - 📦 **デュアルエントリーポイント**: Node.js/Deno 用(`src/index.ts`)とブラウザ用(`src/web.ts`)を分離
485
+ - ⚡ **ネイティブ DOM API**: ブラウザ版は DOMParser 等のネイティブ API で高速化
486
+ - 🔧 **ビルド最適化**: ポリフィル除去等によるビルド強化
487
+ - 📚 **ドキュメント更新**: ブラウザ利用例・API リファレンス追加
641
488
 
642
489
  ### v1.0.1
643
490
 
644
- - ✨ **コア機能**: 完全な HTML ブックマークファイル解析機能
645
- - 🏗️ **BookmarksTree クラス**: Map インターフェースを持つ階層構造管理
646
- - 🔄 **双方向変換**: JSON HTML DOM 変換サポート
647
- - 🧪 **包括的テスト**: エッジケースハンドリングを含む完全なテストカバレッジ
648
- - 📦 **マルチランタイムサポート**: ネイティブ DenoNode.js 互換性
649
- - 🔧 **TypeScript サポート**: 完全な型定義と IntelliSense
650
- - 🤖 **CI/CD パイプライン**: GitHub Actions による自動テストと公開
651
- - 📚 **ドキュメント**: 例と API リファレンスを含む包括的な README
652
- - 🌐 **国際化サポート**: Unicode と多言語ブックマークハンドリング
653
- - ⚡ **パフォーマンス最適化**: 大規模ブックマークコレクションの効率的解析
654
- - 🛡️ **エラーハンドリング**: 不正な HTML と無効な URL の適切な処理
491
+ - ✨ **コア機能**: HTML ブックマークファイルの完全解析
492
+ - 🏗️ **BookmarksTree クラス**: Map インターフェースによる階層構造管理
493
+ - 🔄 **双方向変換**: JSON↔HTML↔DOM 変換サポート
494
+ - 🧪 **包括的テスト**: エッジケース対応含む完全テストカバレッジ
495
+ - 📦 **マルチランタイム対応**: Deno/Node.js 両対応
496
+ - 🔧 **TypeScript サポート**: 型定義・IntelliSense 完備
497
+ - 🤖 **CI/CD パイプライン**: GitHub Actions による自動テスト・公開
498
+ - 📚 **ドキュメント**: 例・API リファレンス含む README
499
+ - 🌐 **国際化対応**: Unicode・多言語ブックマーク対応
500
+ - ⚡ **パフォーマンス最適化**: 大規模ブックマークも効率的に解析
501
+ - 🛡️ **エラーハンドリング**: 不正 HTML・無効 URL も安全に処理
655
502
 
656
503
  ### v0.0.1-pre4
657
504
 
658
- - 初期のプレリリース版
659
- - コア機能の概念実証
505
+ - 初期プレリリース
506
+ - コア機能の PoC
660
507
  - 基本的な解析実装
661
- - 初期テスト設定
508
+ - 初期テストセットアップ