parse5-htmlparser2-tree-adapter 8.0.0 → 8.0.2

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.
package/README.md CHANGED
@@ -19,6 +19,19 @@
19
19
  📖 <a href="https://parse5.js.org/modules/parse5-htmlparser2-tree-adapter.html"><b>Documentation</b></a> 📖
20
20
  </p>
21
21
 
22
+ ## Usage
23
+
24
+ Parse an HTML fragment into [htmlparser2](https://github.com/fb55/htmlparser2)-compatible
25
+ nodes using `parse5` (`npm install parse5`).
26
+
27
+ ```js
28
+ import { parseFragment } from 'parse5';
29
+ import { adapter } from 'parse5-htmlparser2-tree-adapter';
30
+
31
+ const fragment = parseFragment('<p>Hello, world!</p>', { treeAdapter: adapter });
32
+ console.log(fragment.children[0].name); // p
33
+ ```
34
+
22
35
  ---
23
36
 
24
37
  <p align="center">
package/dist/index.js CHANGED
@@ -68,7 +68,8 @@ export const adapter = {
68
68
  newNode.parent = parentNode;
69
69
  },
70
70
  insertBefore(parentNode, newNode, referenceNode) {
71
- const insertionIdx = parentNode.children.indexOf(referenceNode);
71
+ const { children } = parentNode;
72
+ const insertionIdx = children[children.length - 1] === referenceNode ? children.length - 1 : children.indexOf(referenceNode);
72
73
  const { prev } = referenceNode;
73
74
  if (prev) {
74
75
  prev.next = newNode;
@@ -107,7 +108,9 @@ export const adapter = {
107
108
  },
108
109
  detachNode(node) {
109
110
  if (node.parent) {
110
- const idx = node.parent.children.indexOf(node);
111
+ const { children } = node.parent;
112
+ // The parser detaches from the end when it moves children, so check the last child first.
113
+ const idx = children[children.length - 1] === node ? children.length - 1 : children.indexOf(node);
111
114
  const { prev, next } = node;
112
115
  node.prev = null;
113
116
  node.next = null;
@@ -117,7 +120,7 @@ export const adapter = {
117
120
  if (next) {
118
121
  next.prev = prev;
119
122
  }
120
- node.parent.children.splice(idx, 1);
123
+ children.splice(idx, 1);
121
124
  node.parent = null;
122
125
  }
123
126
  },
@@ -131,7 +134,7 @@ export const adapter = {
131
134
  }
132
135
  },
133
136
  insertTextBefore(parentNode, text, referenceNode) {
134
- const prevNode = parentNode.children[parentNode.children.indexOf(referenceNode) - 1];
137
+ const prevNode = referenceNode.prev;
135
138
  if (prevNode && isText(prevNode)) {
136
139
  prevNode.data += text;
137
140
  }
package/package.json CHANGED
@@ -2,9 +2,14 @@
2
2
  "name": "parse5-htmlparser2-tree-adapter",
3
3
  "type": "module",
4
4
  "description": "htmlparser2 tree adapter for parse5.",
5
- "version": "8.0.0",
5
+ "version": "8.0.2",
6
6
  "author": "Ivan Nikulin <ifaaan@gmail.com> (https://github.com/inikulin)",
7
- "contributors": "https://github.com/inikulin/parse5/graphs/contributors",
7
+ "contributors": [
8
+ "James Garbutt (https://github.com/43081j)",
9
+ "Felix Boehm (https://github.com/fb55)",
10
+ "Ivan Nikulin (https://github.com/inikulin)",
11
+ "Titus (https://github.com/wooorm)"
12
+ ],
8
13
  "homepage": "https://parse5.js.org",
9
14
  "funding": "https://github.com/inikulin/parse5?sponsor=1",
10
15
  "keywords": [
@@ -23,8 +28,8 @@
23
28
  }
24
29
  },
25
30
  "dependencies": {
26
- "domhandler": "^5.0.3",
27
- "parse5": "^8.0.0"
31
+ "domhandler": "^6.0.1",
32
+ "parse5": "^8.1.1"
28
33
  },
29
34
  "scripts": {},
30
35
  "repository": {