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.
- package/LICENSE +2 -2
- package/README-ja.md +233 -386
- package/README.md +152 -302
- package/dist/index.d.ts +240 -0
- package/dist/index.js +333 -0
- package/dist/index.js.map +1 -0
- package/dist/web.d.ts +241 -0
- package/dist/web.js +330 -0
- package/dist/web.js.map +1 -0
- package/package.json +58 -15
- package/esm/_dnt.polyfills.d.ts +0 -101
- package/esm/_dnt.polyfills.d.ts.map +0 -1
- package/esm/_dnt.polyfills.js +0 -127
- package/esm/_dnt.shims.d.ts +0 -6
- package/esm/_dnt.shims.d.ts.map +0 -1
- package/esm/_dnt.shims.js +0 -61
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/build/deno-wasm/deno-wasm.d.ts +0 -14
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/build/deno-wasm/deno-wasm.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/build/deno-wasm/deno-wasm.js +0 -151
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/deno-dom-wasm.d.ts +0 -23
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/deno-dom-wasm.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/deno-dom-wasm.js +0 -26
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/api.d.ts +0 -24
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/api.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/api.js +0 -48
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/constructor-lock.d.ts +0 -5
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/constructor-lock.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/constructor-lock.js +0 -4
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/deserialize.d.ts +0 -4
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/deserialize.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/deserialize.js +0 -61
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/document-fragment.d.ts +0 -19
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/document-fragment.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/document-fragment.js +0 -110
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/document.d.ts +0 -68
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/document.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/document.js +0 -322
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/dom-parser.d.ts +0 -6
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/dom-parser.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/dom-parser.js +0 -46
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/element.d.ts +0 -127
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/element.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/element.js +0 -1068
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/elements/html-template-element.d.ts +0 -29
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/elements/html-template-element.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/elements/html-template-element.js +0 -94
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/html-collection.d.ts +0 -21
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/html-collection.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/html-collection.js +0 -80
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/node-list.d.ts +0 -23
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/node-list.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/node-list.js +0 -159
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/node.d.ts +0 -127
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/node.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/node.js +0 -629
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/custom-api.d.ts +0 -6
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/custom-api.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/custom-api.js +0 -5
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/nwsapi-types.d.ts +0 -12
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/nwsapi-types.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/nwsapi-types.js +0 -2
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/nwsapi.d.ts +0 -90
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/nwsapi.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/nwsapi.js +0 -1611
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/selectors.d.ts +0 -16
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/selectors.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/selectors.js +0 -28
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/sizzle-types.d.ts +0 -8
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/sizzle-types.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/sizzle-types.js +0 -2
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/sizzle.d.ts +0 -7
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/sizzle.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/selectors/sizzle.js +0 -2061
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/string-cache.d.ts +0 -3
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/string-cache.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/string-cache.js +0 -10
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils-types.d.ts +0 -13
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils-types.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils-types.js +0 -8
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils.d.ts +0 -31
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils.js +0 -239
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/parser.d.ts +0 -5
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/parser.d.ts.map +0 -1
- package/esm/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/parser.js +0 -20
- package/esm/mod.d.ts +0 -10
- package/esm/mod.d.ts.map +0 -1
- package/esm/mod.js +0 -9
- package/esm/mod_web.d.ts +0 -9
- package/esm/mod_web.d.ts.map +0 -1
- package/esm/mod_web.js +0 -8
- package/esm/package.json +0 -3
- package/esm/src/BookmarksParser/BookmarksParser.d.ts +0 -66
- package/esm/src/BookmarksParser/BookmarksParser.d.ts.map +0 -1
- package/esm/src/BookmarksParser/BookmarksParser.js +0 -70
- package/esm/src/BookmarksParser/index.d.ts +0 -8
- package/esm/src/BookmarksParser/index.d.ts.map +0 -1
- package/esm/src/BookmarksParser/index.js +0 -7
- package/esm/src/BookmarksTree/BookmarksTree.d.ts +0 -112
- package/esm/src/BookmarksTree/BookmarksTree.d.ts.map +0 -1
- package/esm/src/BookmarksTree/BookmarksTree.js +0 -217
- package/esm/src/BookmarksTree/index.d.ts +0 -8
- package/esm/src/BookmarksTree/index.d.ts.map +0 -1
- package/esm/src/BookmarksTree/index.js +0 -7
- package/esm/src/deps.d.ts +0 -9
- package/esm/src/deps.d.ts.map +0 -1
- package/esm/src/deps.js +0 -7
- package/esm/src/web/BookmarksParser/BookmarksParser.d.ts +0 -66
- package/esm/src/web/BookmarksParser/BookmarksParser.d.ts.map +0 -1
- package/esm/src/web/BookmarksParser/BookmarksParser.js +0 -70
- package/esm/src/web/BookmarksParser/index.d.ts +0 -8
- package/esm/src/web/BookmarksParser/index.d.ts.map +0 -1
- package/esm/src/web/BookmarksParser/index.js +0 -7
- package/esm/src/web/BookmarksTree/BookmarksTree.d.ts +0 -112
- package/esm/src/web/BookmarksTree/BookmarksTree.d.ts.map +0 -1
- package/esm/src/web/BookmarksTree/BookmarksTree.js +0 -217
- package/esm/src/web/BookmarksTree/index.d.ts +0 -8
- package/esm/src/web/BookmarksTree/index.d.ts.map +0 -1
- package/esm/src/web/BookmarksTree/index.js +0 -7
- package/esm/src/web/deps.d.ts +0 -10
- package/esm/src/web/deps.d.ts.map +0 -1
- package/esm/src/web/deps.js +0 -9
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string-cache.d.ts","sourceRoot":"","sources":["../../../../../../../../src/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/string-cache.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGnD"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
const upperCasedStringCache = new Map();
|
|
2
|
-
const lowerCasedStringCache = new Map();
|
|
3
|
-
export function getUpperCase(string) {
|
|
4
|
-
return upperCasedStringCache.get(string) ??
|
|
5
|
-
upperCasedStringCache.set(string, string.toUpperCase()).get(string);
|
|
6
|
-
}
|
|
7
|
-
export function getLowerCase(string) {
|
|
8
|
-
return lowerCasedStringCache.get(string) ??
|
|
9
|
-
lowerCasedStringCache.set(string, string.toLowerCase()).get(string);
|
|
10
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Element } from "./element.js";
|
|
2
|
-
import type { Document } from "./document.js";
|
|
3
|
-
import type { DocumentFragment } from "./document-fragment.js";
|
|
4
|
-
/**
|
|
5
|
-
* Ugly solution to circular imports... FIXME: Make this better
|
|
6
|
-
*/
|
|
7
|
-
declare const _default: {
|
|
8
|
-
Element: typeof Element;
|
|
9
|
-
Document: typeof Document;
|
|
10
|
-
DocumentFragment: typeof DocumentFragment;
|
|
11
|
-
};
|
|
12
|
-
export default _default;
|
|
13
|
-
//# sourceMappingURL=utils-types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils-types.d.ts","sourceRoot":"","sources":["../../../../../../../../src/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;GAEG;;aAEuB,OAAO,OAAO;cACb,OAAO,QAAQ;sBACP,OAAO,gBAAgB;;AAH1D,wBAIE"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Node } from "./node.js";
|
|
2
|
-
import type { Element } from "./element.js";
|
|
3
|
-
import type { DocumentFragment } from "./document-fragment.js";
|
|
4
|
-
export declare const upperCaseCharRe: RegExp;
|
|
5
|
-
export declare const lowerCaseCharRe: RegExp;
|
|
6
|
-
/**
|
|
7
|
-
* Convert JS property name to dataset attribute name without
|
|
8
|
-
* validation
|
|
9
|
-
*/
|
|
10
|
-
export declare function getDatasetHtmlAttrName(name: string): `data-${string}`;
|
|
11
|
-
export declare function getDatasetJavascriptName(name: string): string;
|
|
12
|
-
export declare function getElementsByClassName(element: any, classNames: string[], search: Node[]): Node[];
|
|
13
|
-
/**
|
|
14
|
-
* .innerHTML/.outerHTML implementation without recursion to avoid stack
|
|
15
|
-
* overflows
|
|
16
|
-
*/
|
|
17
|
-
export declare function getOuterOrInnerHtml(parentElement: Element, asOuterHtml: boolean): string;
|
|
18
|
-
export declare function getElementAttributesString(element: Element): string;
|
|
19
|
-
export declare function insertBeforeAfter(node: Node, nodes: (Node | string)[], before: boolean): void;
|
|
20
|
-
export declare function isDocumentFragment(node: Node): node is DocumentFragment;
|
|
21
|
-
/**
|
|
22
|
-
* Sets the new parent for the children via _setParent() on all
|
|
23
|
-
* the child nodes and removes them from the DocumentFragment's
|
|
24
|
-
* childNode list.
|
|
25
|
-
*
|
|
26
|
-
* A helper function for appendChild, etc. It should be called
|
|
27
|
-
* _after_ the children are already pushed onto the new parent's
|
|
28
|
-
* childNodes.
|
|
29
|
-
*/
|
|
30
|
-
export declare function moveDocumentFragmentChildren(fragment: DocumentFragment, newParent: Node): void;
|
|
31
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../../../src/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/dom/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,IAAI,EAAqC,MAAM,WAAW,CAAC;AAI7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,eAAO,MAAM,eAAe,QAAU,CAAC;AACvC,eAAO,MAAM,eAAe,QAAU,CAAC;AACvC;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,MAAM,EAAE,CAWrE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAc7D;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,MAAM,EAAE,EACpB,MAAM,EAAE,IAAI,EAAE,GACb,IAAI,EAAE,CAqBR;AAwBD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,OAAO,EACtB,WAAW,EAAE,OAAO,GACnB,MAAM,CAkGR;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,GACf,MAAM,CAiBR;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,EACxB,MAAM,EAAE,OAAO,QA6BhB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,gBAAgB,CA2BvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,IAAI,QAUhB"}
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
import { Node, nodesAndTextNodes, NodeType } from "./node.js";
|
|
2
|
-
import UtilTypes from "./utils-types.js";
|
|
3
|
-
export const upperCaseCharRe = /[A-Z]/;
|
|
4
|
-
export const lowerCaseCharRe = /[a-z]/;
|
|
5
|
-
/**
|
|
6
|
-
* Convert JS property name to dataset attribute name without
|
|
7
|
-
* validation
|
|
8
|
-
*/
|
|
9
|
-
export function getDatasetHtmlAttrName(name) {
|
|
10
|
-
let attributeName = "data-";
|
|
11
|
-
for (const char of name) {
|
|
12
|
-
if (upperCaseCharRe.test(char)) {
|
|
13
|
-
attributeName += "-" + char.toLowerCase();
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
attributeName += char;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return attributeName;
|
|
20
|
-
}
|
|
21
|
-
export function getDatasetJavascriptName(name) {
|
|
22
|
-
let javascriptName = "";
|
|
23
|
-
let prevChar = "";
|
|
24
|
-
for (const char of name.slice("data-".length)) {
|
|
25
|
-
if (prevChar === "-" && lowerCaseCharRe.test(char)) {
|
|
26
|
-
javascriptName += char.toUpperCase();
|
|
27
|
-
prevChar = "";
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
javascriptName += prevChar;
|
|
31
|
-
prevChar = char;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return javascriptName + prevChar;
|
|
35
|
-
}
|
|
36
|
-
export function getElementsByClassName(element, classNames, search) {
|
|
37
|
-
for (const child of element.childNodes) {
|
|
38
|
-
if (child.nodeType === NodeType.ELEMENT_NODE) {
|
|
39
|
-
let matchesCount = 0;
|
|
40
|
-
for (const singleClassName of classNames) {
|
|
41
|
-
if (child.classList.contains(singleClassName)) {
|
|
42
|
-
matchesCount++;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
// ensure that all class names are present
|
|
46
|
-
if (matchesCount === classNames.length) {
|
|
47
|
-
search.push(child);
|
|
48
|
-
}
|
|
49
|
-
getElementsByClassName(child, classNames, search);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return search;
|
|
53
|
-
}
|
|
54
|
-
function getOuterHTMLOpeningTag(parentElement) {
|
|
55
|
-
return "<" + parentElement.localName +
|
|
56
|
-
getElementAttributesString(parentElement) + ">";
|
|
57
|
-
}
|
|
58
|
-
const voidElements = new Set([
|
|
59
|
-
"area",
|
|
60
|
-
"base",
|
|
61
|
-
"br",
|
|
62
|
-
"col",
|
|
63
|
-
"embed",
|
|
64
|
-
"hr",
|
|
65
|
-
"img",
|
|
66
|
-
"input",
|
|
67
|
-
"link",
|
|
68
|
-
"meta",
|
|
69
|
-
"param",
|
|
70
|
-
"source",
|
|
71
|
-
"track",
|
|
72
|
-
"wbr",
|
|
73
|
-
]);
|
|
74
|
-
/**
|
|
75
|
-
* .innerHTML/.outerHTML implementation without recursion to avoid stack
|
|
76
|
-
* overflows
|
|
77
|
-
*/
|
|
78
|
-
export function getOuterOrInnerHtml(parentElement, asOuterHtml) {
|
|
79
|
-
let outerHTMLOpeningTag = "";
|
|
80
|
-
let outerHTMLClosingTag = "";
|
|
81
|
-
let innerHTML = "";
|
|
82
|
-
if (asOuterHtml) {
|
|
83
|
-
outerHTMLOpeningTag = getOuterHTMLOpeningTag(parentElement);
|
|
84
|
-
outerHTMLClosingTag = `</${parentElement.localName}>`;
|
|
85
|
-
if (voidElements.has(parentElement.localName)) {
|
|
86
|
-
return outerHTMLOpeningTag;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const initialChildNodes = parentElement.localName === "template"
|
|
90
|
-
? parentElement.content.childNodes
|
|
91
|
-
: parentElement.childNodes;
|
|
92
|
-
const childNodeDepth = [initialChildNodes];
|
|
93
|
-
const indexDepth = [0];
|
|
94
|
-
const closingTagDepth = [outerHTMLClosingTag];
|
|
95
|
-
let depth = 0;
|
|
96
|
-
depthLoop: while (depth > -1) {
|
|
97
|
-
const child = childNodeDepth[depth][indexDepth[depth]];
|
|
98
|
-
if (child) {
|
|
99
|
-
switch (child.nodeType) {
|
|
100
|
-
case NodeType.ELEMENT_NODE: {
|
|
101
|
-
innerHTML += getOuterHTMLOpeningTag(child);
|
|
102
|
-
const childLocalName = child.localName;
|
|
103
|
-
// Void elements don't have a closing tag nor print innerHTML
|
|
104
|
-
if (!voidElements.has(childLocalName)) {
|
|
105
|
-
if (childLocalName === "template") {
|
|
106
|
-
childNodeDepth.push(child.content.childNodes);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
childNodeDepth.push(child.childNodes);
|
|
110
|
-
}
|
|
111
|
-
indexDepth.push(0);
|
|
112
|
-
closingTagDepth.push(`</${childLocalName}>`);
|
|
113
|
-
depth++;
|
|
114
|
-
continue depthLoop;
|
|
115
|
-
}
|
|
116
|
-
break;
|
|
117
|
-
}
|
|
118
|
-
case NodeType.COMMENT_NODE:
|
|
119
|
-
innerHTML += `<!--${child.data}-->`;
|
|
120
|
-
break;
|
|
121
|
-
case NodeType.TEXT_NODE:
|
|
122
|
-
// Special handling for rawtext-like elements.
|
|
123
|
-
switch (child.parentNode.localName) {
|
|
124
|
-
case "style":
|
|
125
|
-
case "script":
|
|
126
|
-
case "xmp":
|
|
127
|
-
case "iframe":
|
|
128
|
-
case "noembed":
|
|
129
|
-
case "noframes":
|
|
130
|
-
case "plaintext": {
|
|
131
|
-
innerHTML += child.data;
|
|
132
|
-
break;
|
|
133
|
-
}
|
|
134
|
-
case "noscript": {
|
|
135
|
-
innerHTML += child.data;
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
default: {
|
|
139
|
-
// escaping: https://html.spec.whatwg.org/multipage/parsing.html#escapingString
|
|
140
|
-
innerHTML += child.data
|
|
141
|
-
.replace(/&/g, "&")
|
|
142
|
-
.replace(/\xA0/g, " ")
|
|
143
|
-
.replace(/</g, "<")
|
|
144
|
-
.replace(/>/g, ">");
|
|
145
|
-
break;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
break;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
depth--;
|
|
153
|
-
indexDepth.pop();
|
|
154
|
-
childNodeDepth.pop();
|
|
155
|
-
innerHTML += closingTagDepth.pop();
|
|
156
|
-
}
|
|
157
|
-
// Go to next child
|
|
158
|
-
indexDepth[depth]++;
|
|
159
|
-
}
|
|
160
|
-
// If innerHTML is requested then the opening tag should be an empty string
|
|
161
|
-
return outerHTMLOpeningTag + innerHTML;
|
|
162
|
-
}
|
|
163
|
-
export function getElementAttributesString(element) {
|
|
164
|
-
let out = "";
|
|
165
|
-
for (const attribute of element.getAttributeNames()) {
|
|
166
|
-
// attribute names should already all be lower-case
|
|
167
|
-
out += ` ${attribute}`;
|
|
168
|
-
// escaping: https://html.spec.whatwg.org/multipage/parsing.html#escapingString
|
|
169
|
-
out += `="${element.getAttribute(attribute)
|
|
170
|
-
.replace(/&/g, "&")
|
|
171
|
-
.replace(/\xA0/g, " ")
|
|
172
|
-
.replace(/"/g, """)}"`;
|
|
173
|
-
}
|
|
174
|
-
return out;
|
|
175
|
-
}
|
|
176
|
-
export function insertBeforeAfter(node, nodes, before) {
|
|
177
|
-
const parentNode = node.parentNode;
|
|
178
|
-
const mutator = parentNode._getChildNodesMutator();
|
|
179
|
-
// Find the previous/next sibling to `node` that isn't in `nodes` before the
|
|
180
|
-
// nodes in `nodes` are removed from their parents.
|
|
181
|
-
let viablePrevNextSibling = null;
|
|
182
|
-
{
|
|
183
|
-
const difference = before ? -1 : +1;
|
|
184
|
-
for (let i = mutator.indexOf(node) + difference; 0 <= i && i < parentNode.childNodes.length; i += difference) {
|
|
185
|
-
if (!nodes.includes(parentNode.childNodes[i])) {
|
|
186
|
-
viablePrevNextSibling = parentNode.childNodes[i];
|
|
187
|
-
break;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
nodes = nodesAndTextNodes(nodes, parentNode);
|
|
192
|
-
let index;
|
|
193
|
-
if (viablePrevNextSibling) {
|
|
194
|
-
index = mutator.indexOf(viablePrevNextSibling) + (before ? 1 : 0);
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
index = before ? 0 : parentNode.childNodes.length;
|
|
198
|
-
}
|
|
199
|
-
mutator.splice(index, 0, ...nodes);
|
|
200
|
-
}
|
|
201
|
-
export function isDocumentFragment(node) {
|
|
202
|
-
let obj = node;
|
|
203
|
-
if (!(obj && typeof obj === "object")) {
|
|
204
|
-
return false;
|
|
205
|
-
}
|
|
206
|
-
while (true) {
|
|
207
|
-
switch (obj.constructor) {
|
|
208
|
-
case UtilTypes.DocumentFragment:
|
|
209
|
-
return true;
|
|
210
|
-
case Node:
|
|
211
|
-
case UtilTypes.Element:
|
|
212
|
-
return false;
|
|
213
|
-
// FIXME: We should probably throw here?
|
|
214
|
-
case Object:
|
|
215
|
-
case null:
|
|
216
|
-
case undefined:
|
|
217
|
-
return false;
|
|
218
|
-
default:
|
|
219
|
-
obj = Reflect.getPrototypeOf(obj);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Sets the new parent for the children via _setParent() on all
|
|
225
|
-
* the child nodes and removes them from the DocumentFragment's
|
|
226
|
-
* childNode list.
|
|
227
|
-
*
|
|
228
|
-
* A helper function for appendChild, etc. It should be called
|
|
229
|
-
* _after_ the children are already pushed onto the new parent's
|
|
230
|
-
* childNodes.
|
|
231
|
-
*/
|
|
232
|
-
export function moveDocumentFragmentChildren(fragment, newParent) {
|
|
233
|
-
const childCount = fragment.childNodes.length;
|
|
234
|
-
for (const child of fragment.childNodes) {
|
|
235
|
-
child._setParent(newParent);
|
|
236
|
-
}
|
|
237
|
-
const mutator = fragment._getChildNodesMutator();
|
|
238
|
-
mutator.splice(0, childCount);
|
|
239
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@b-fuze/deno-dom/0.1.49/src/parser.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AACzE,eAAO,IAAI,KAAK,EAAE,MAGjB,CAAC;AAEF,eAAO,IAAI,SAAS,EAAE,MAGrB,CAAC;AAGF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAOtD"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Parser interface
|
|
3
|
-
*/
|
|
4
|
-
import * as dntShim from "../../../../../../_dnt.shims.js";
|
|
5
|
-
export let parse = (_html) => {
|
|
6
|
-
console.error("Error: deno-dom: No parser registered");
|
|
7
|
-
dntShim.Deno.exit(1);
|
|
8
|
-
};
|
|
9
|
-
export let parseFrag = (_html, _contextLocalName) => {
|
|
10
|
-
console.error("Error: deno-dom: No parser registered");
|
|
11
|
-
dntShim.Deno.exit(1);
|
|
12
|
-
};
|
|
13
|
-
const originalParse = parse;
|
|
14
|
-
export function register(func, fragFunc) {
|
|
15
|
-
if (parse !== originalParse) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
parse = func;
|
|
19
|
-
parseFrag = fragFunc;
|
|
20
|
-
}
|
package/esm/mod.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2025 grakeice
|
|
3
|
-
*
|
|
4
|
-
* This software is released under the MIT License.
|
|
5
|
-
* https://opensource.org/licenses/MIT
|
|
6
|
-
*/
|
|
7
|
-
import "./_dnt.polyfills.js";
|
|
8
|
-
export { BookmarksTree } from "./src/BookmarksTree/index.js";
|
|
9
|
-
export { BookmarksParser } from "./src/BookmarksParser/index.js";
|
|
10
|
-
//# sourceMappingURL=mod.d.ts.map
|
package/esm/mod.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,qBAAqB,CAAC;AAG7B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC"}
|
package/esm/mod.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2025 grakeice
|
|
3
|
-
*
|
|
4
|
-
* This software is released under the MIT License.
|
|
5
|
-
* https://opensource.org/licenses/MIT
|
|
6
|
-
*/
|
|
7
|
-
import "./_dnt.polyfills.js";
|
|
8
|
-
export { BookmarksTree } from "./src/BookmarksTree/index.js";
|
|
9
|
-
export { BookmarksParser } from "./src/BookmarksParser/index.js";
|
package/esm/mod_web.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2025 grakeice
|
|
3
|
-
*
|
|
4
|
-
* This software is released under the MIT License.
|
|
5
|
-
* https://opensource.org/licenses/MIT
|
|
6
|
-
*/
|
|
7
|
-
export { BookmarksTree } from "./src/web/BookmarksTree/index.js";
|
|
8
|
-
export { BookmarksParser } from "./src/web/BookmarksParser/index.js";
|
|
9
|
-
//# sourceMappingURL=mod_web.d.ts.map
|
package/esm/mod_web.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mod_web.d.ts","sourceRoot":"","sources":["../src/mod_web.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,qBAAqB,CAAC;AAG7B,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC"}
|
package/esm/mod_web.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2025 grakeice
|
|
3
|
-
*
|
|
4
|
-
* This software is released under the MIT License.
|
|
5
|
-
* https://opensource.org/licenses/MIT
|
|
6
|
-
*/
|
|
7
|
-
export { BookmarksTree } from "./src/web/BookmarksTree/index.js";
|
|
8
|
-
export { BookmarksParser } from "./src/web/BookmarksParser/index.js";
|
package/esm/package.json
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2025 grakeice
|
|
3
|
-
*
|
|
4
|
-
* This software is released under the MIT License.
|
|
5
|
-
* https://opensource.org/licenses/MIT
|
|
6
|
-
*/
|
|
7
|
-
import { BookmarksTree } from "../BookmarksTree/index.js";
|
|
8
|
-
/**
|
|
9
|
-
* A parser for Netscape Bookmark format files
|
|
10
|
-
*
|
|
11
|
-
* This class provides static methods to parse Netscape Bookmark format HTML strings
|
|
12
|
-
* and convert them into BookmarksTree instances for easier manipulation.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```typescript
|
|
16
|
-
* const bookmarkHtml = `<!DOCTYPE NETSCAPE-Bookmark-file-1>
|
|
17
|
-
* <HTML>
|
|
18
|
-
* <BODY>
|
|
19
|
-
* <DL><p>
|
|
20
|
-
* <DT><A HREF="https://google.com">Google</A>
|
|
21
|
-
* <DT><H3>Development</H3>
|
|
22
|
-
* <DL><p>
|
|
23
|
-
* <DT><A HREF="https://github.com">GitHub</A>
|
|
24
|
-
* </DL><p>
|
|
25
|
-
* </DL>
|
|
26
|
-
* </BODY>
|
|
27
|
-
* </HTML>`;
|
|
28
|
-
*
|
|
29
|
-
* const tree = BookmarksParser.parse(bookmarkHtml);
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
export declare class BookmarksParser {
|
|
33
|
-
/**
|
|
34
|
-
* Parses a Netscape Bookmark format HTML string into a BookmarksTree
|
|
35
|
-
*
|
|
36
|
-
* Takes an HTML string in Netscape Bookmark format and converts it into a structured
|
|
37
|
-
* BookmarksTree that preserves the hierarchical organization of folders and bookmarks.
|
|
38
|
-
*
|
|
39
|
-
* @param data The HTML string in Netscape Bookmark format to parse
|
|
40
|
-
* @returns A BookmarksTree representing the parsed bookmark structure
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```typescript
|
|
44
|
-
* const bookmarkHtml = `<!DOCTYPE NETSCAPE-Bookmark-file-1>
|
|
45
|
-
* <HTML>
|
|
46
|
-
* <BODY>
|
|
47
|
-
* <DL><p>
|
|
48
|
-
* <DT><A HREF="https://google.com">Google</A>
|
|
49
|
-
* <DT><H3>Development</H3>
|
|
50
|
-
* <DL><p>
|
|
51
|
-
* <DT><A HREF="https://github.com">GitHub</A>
|
|
52
|
-
* </DL><p>
|
|
53
|
-
* </DL>
|
|
54
|
-
* </BODY>
|
|
55
|
-
* </HTML>`;
|
|
56
|
-
*
|
|
57
|
-
* const tree = BookmarksParser.parse(bookmarkHtml);
|
|
58
|
-
* console.log(tree.get("Google")); // "https://google.com"
|
|
59
|
-
*
|
|
60
|
-
* const folder = tree.get("Development");
|
|
61
|
-
* console.log(folder.get("GitHub")); // "https://github.com"
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
|
-
static parse(data: string): BookmarksTree;
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=BookmarksParser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BookmarksParser.d.ts","sourceRoot":"","sources":["../../../src/src/BookmarksParser/BookmarksParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,eAAe;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;CAKzC"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2025 grakeice
|
|
3
|
-
*
|
|
4
|
-
* This software is released under the MIT License.
|
|
5
|
-
* https://opensource.org/licenses/MIT
|
|
6
|
-
*/
|
|
7
|
-
import { DOMParser } from "../deps.js";
|
|
8
|
-
import { BookmarksTree } from "../BookmarksTree/index.js";
|
|
9
|
-
/**
|
|
10
|
-
* A parser for Netscape Bookmark format files
|
|
11
|
-
*
|
|
12
|
-
* This class provides static methods to parse Netscape Bookmark format HTML strings
|
|
13
|
-
* and convert them into BookmarksTree instances for easier manipulation.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* const bookmarkHtml = `<!DOCTYPE NETSCAPE-Bookmark-file-1>
|
|
18
|
-
* <HTML>
|
|
19
|
-
* <BODY>
|
|
20
|
-
* <DL><p>
|
|
21
|
-
* <DT><A HREF="https://google.com">Google</A>
|
|
22
|
-
* <DT><H3>Development</H3>
|
|
23
|
-
* <DL><p>
|
|
24
|
-
* <DT><A HREF="https://github.com">GitHub</A>
|
|
25
|
-
* </DL><p>
|
|
26
|
-
* </DL>
|
|
27
|
-
* </BODY>
|
|
28
|
-
* </HTML>`;
|
|
29
|
-
*
|
|
30
|
-
* const tree = BookmarksParser.parse(bookmarkHtml);
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
export class BookmarksParser {
|
|
34
|
-
/**
|
|
35
|
-
* Parses a Netscape Bookmark format HTML string into a BookmarksTree
|
|
36
|
-
*
|
|
37
|
-
* Takes an HTML string in Netscape Bookmark format and converts it into a structured
|
|
38
|
-
* BookmarksTree that preserves the hierarchical organization of folders and bookmarks.
|
|
39
|
-
*
|
|
40
|
-
* @param data The HTML string in Netscape Bookmark format to parse
|
|
41
|
-
* @returns A BookmarksTree representing the parsed bookmark structure
|
|
42
|
-
*
|
|
43
|
-
* @example
|
|
44
|
-
* ```typescript
|
|
45
|
-
* const bookmarkHtml = `<!DOCTYPE NETSCAPE-Bookmark-file-1>
|
|
46
|
-
* <HTML>
|
|
47
|
-
* <BODY>
|
|
48
|
-
* <DL><p>
|
|
49
|
-
* <DT><A HREF="https://google.com">Google</A>
|
|
50
|
-
* <DT><H3>Development</H3>
|
|
51
|
-
* <DL><p>
|
|
52
|
-
* <DT><A HREF="https://github.com">GitHub</A>
|
|
53
|
-
* </DL><p>
|
|
54
|
-
* </DL>
|
|
55
|
-
* </BODY>
|
|
56
|
-
* </HTML>`;
|
|
57
|
-
*
|
|
58
|
-
* const tree = BookmarksParser.parse(bookmarkHtml);
|
|
59
|
-
* console.log(tree.get("Google")); // "https://google.com"
|
|
60
|
-
*
|
|
61
|
-
* const folder = tree.get("Development");
|
|
62
|
-
* console.log(folder.get("GitHub")); // "https://github.com"
|
|
63
|
-
* ```
|
|
64
|
-
*/
|
|
65
|
-
static parse(data) {
|
|
66
|
-
const dom = new DOMParser().parseFromString(data, "text/html");
|
|
67
|
-
const tree = BookmarksTree.fromDOM(dom);
|
|
68
|
-
return tree;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/BookmarksParser/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|