@helm2/poc_jenki_rce 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of @helm2/poc_jenki_rce might be problematic. Click here for more details.
- package/LICENSE +19 -0
- package/Makefile +18 -0
- package/README.md +52 -0
- package/binding.gyp +81 -0
- package/index.d.ts +273 -0
- package/index.js +45 -0
- package/lib/bindings.js +1 -0
- package/lib/document.js +118 -0
- package/lib/element.js +82 -0
- package/lib/sax_parser.js +38 -0
- package/package.json +70 -0
- package/src/html_document.cc +7 -0
- package/src/html_document.h +18 -0
- package/src/libxmljs.cc +252 -0
- package/src/libxmljs.h +53 -0
- package/src/xml_attribute.cc +173 -0
- package/src/xml_attribute.h +40 -0
- package/src/xml_comment.cc +117 -0
- package/src/xml_comment.h +30 -0
- package/src/xml_document.cc +810 -0
- package/src/xml_document.h +67 -0
- package/src/xml_element.cc +565 -0
- package/src/xml_element.h +61 -0
- package/src/xml_namespace.cc +158 -0
- package/src/xml_namespace.h +39 -0
- package/src/xml_node.cc +761 -0
- package/src/xml_node.h +73 -0
- package/src/xml_pi.cc +161 -0
- package/src/xml_pi.h +34 -0
- package/src/xml_sax_parser.cc +424 -0
- package/src/xml_sax_parser.h +73 -0
- package/src/xml_syntax_error.cc +66 -0
- package/src/xml_syntax_error.h +25 -0
- package/src/xml_text.cc +320 -0
- package/src/xml_text.h +48 -0
- package/src/xml_textwriter.cc +315 -0
- package/src/xml_textwriter.h +62 -0
- package/src/xml_xpath_context.cc +70 -0
- package/src/xml_xpath_context.h +23 -0
- package/vendor/libxml/Copyright +23 -0
- package/vendor/libxml/DOCBparser.c +305 -0
- package/vendor/libxml/HTMLparser.c +7287 -0
- package/vendor/libxml/HTMLtree.c +1200 -0
- package/vendor/libxml/Makefile +2983 -0
- package/vendor/libxml/SAX.c +180 -0
- package/vendor/libxml/SAX2.c +3036 -0
- package/vendor/libxml/buf.c +1351 -0
- package/vendor/libxml/buf.h +72 -0
- package/vendor/libxml/c14n.c +2234 -0
- package/vendor/libxml/catalog.c +3828 -0
- package/vendor/libxml/chvalid.c +336 -0
- package/vendor/libxml/config.h +294 -0
- package/vendor/libxml/config.h.gch +0 -0
- package/vendor/libxml/debugXML.c +3423 -0
- package/vendor/libxml/dict.c +1298 -0
- package/vendor/libxml/elfgcchack.h +17818 -0
- package/vendor/libxml/enc.h +32 -0
- package/vendor/libxml/encoding.c +3975 -0
- package/vendor/libxml/entities.c +1163 -0
- package/vendor/libxml/error.c +998 -0
- package/vendor/libxml/globals.c +1126 -0
- package/vendor/libxml/hash.c +1146 -0
- package/vendor/libxml/include/libxml/DOCBparser.h +96 -0
- package/vendor/libxml/include/libxml/HTMLparser.h +306 -0
- package/vendor/libxml/include/libxml/HTMLtree.h +147 -0
- package/vendor/libxml/include/libxml/Makefile +725 -0
- package/vendor/libxml/include/libxml/Makefile.am +54 -0
- package/vendor/libxml/include/libxml/Makefile.in +725 -0
- package/vendor/libxml/include/libxml/SAX.h +173 -0
- package/vendor/libxml/include/libxml/SAX2.h +178 -0
- package/vendor/libxml/include/libxml/c14n.h +128 -0
- package/vendor/libxml/include/libxml/catalog.h +182 -0
- package/vendor/libxml/include/libxml/chvalid.h +230 -0
- package/vendor/libxml/include/libxml/debugXML.h +217 -0
- package/vendor/libxml/include/libxml/dict.h +79 -0
- package/vendor/libxml/include/libxml/encoding.h +245 -0
- package/vendor/libxml/include/libxml/entities.h +151 -0
- package/vendor/libxml/include/libxml/globals.h +508 -0
- package/vendor/libxml/include/libxml/hash.h +236 -0
- package/vendor/libxml/include/libxml/list.h +137 -0
- package/vendor/libxml/include/libxml/nanoftp.h +163 -0
- package/vendor/libxml/include/libxml/nanohttp.h +81 -0
- package/vendor/libxml/include/libxml/parser.h +1243 -0
- package/vendor/libxml/include/libxml/parserInternals.h +644 -0
- package/vendor/libxml/include/libxml/pattern.h +100 -0
- package/vendor/libxml/include/libxml/relaxng.h +217 -0
- package/vendor/libxml/include/libxml/schemasInternals.h +958 -0
- package/vendor/libxml/include/libxml/schematron.h +142 -0
- package/vendor/libxml/include/libxml/threads.h +89 -0
- package/vendor/libxml/include/libxml/tree.h +1311 -0
- package/vendor/libxml/include/libxml/uri.h +94 -0
- package/vendor/libxml/include/libxml/valid.h +458 -0
- package/vendor/libxml/include/libxml/xinclude.h +129 -0
- package/vendor/libxml/include/libxml/xlink.h +189 -0
- package/vendor/libxml/include/libxml/xmlIO.h +368 -0
- package/vendor/libxml/include/libxml/xmlautomata.h +146 -0
- package/vendor/libxml/include/libxml/xmlerror.h +945 -0
- package/vendor/libxml/include/libxml/xmlexports.h +77 -0
- package/vendor/libxml/include/libxml/xmlmemory.h +224 -0
- package/vendor/libxml/include/libxml/xmlmodule.h +57 -0
- package/vendor/libxml/include/libxml/xmlreader.h +428 -0
- package/vendor/libxml/include/libxml/xmlregexp.h +222 -0
- package/vendor/libxml/include/libxml/xmlsave.h +88 -0
- package/vendor/libxml/include/libxml/xmlschemas.h +246 -0
- package/vendor/libxml/include/libxml/xmlschemastypes.h +151 -0
- package/vendor/libxml/include/libxml/xmlstring.h +140 -0
- package/vendor/libxml/include/libxml/xmlunicode.h +202 -0
- package/vendor/libxml/include/libxml/xmlversion.h +484 -0
- package/vendor/libxml/include/libxml/xmlwin32version.h +239 -0
- package/vendor/libxml/include/libxml/xmlwriter.h +488 -0
- package/vendor/libxml/include/libxml/xpath.h +564 -0
- package/vendor/libxml/include/libxml/xpathInternals.h +632 -0
- package/vendor/libxml/include/libxml/xpointer.h +114 -0
- package/vendor/libxml/include/win32config.h +122 -0
- package/vendor/libxml/include/wsockcompat.h +54 -0
- package/vendor/libxml/legacy.c +1343 -0
- package/vendor/libxml/libxml.h +134 -0
- package/vendor/libxml/list.c +779 -0
- package/vendor/libxml/nanoftp.c +2118 -0
- package/vendor/libxml/nanohttp.c +1899 -0
- package/vendor/libxml/parser.c +15553 -0
- package/vendor/libxml/parserInternals.c +2164 -0
- package/vendor/libxml/pattern.c +2621 -0
- package/vendor/libxml/relaxng.c +11101 -0
- package/vendor/libxml/rngparser.c +1595 -0
- package/vendor/libxml/runsuite.c +1157 -0
- package/vendor/libxml/save.h +36 -0
- package/vendor/libxml/schematron.c +1787 -0
- package/vendor/libxml/threads.c +1049 -0
- package/vendor/libxml/timsort.h +601 -0
- package/vendor/libxml/tree.c +10183 -0
- package/vendor/libxml/trio.c +6895 -0
- package/vendor/libxml/trio.h +230 -0
- package/vendor/libxml/triodef.h +228 -0
- package/vendor/libxml/trionan.c +914 -0
- package/vendor/libxml/trionan.h +84 -0
- package/vendor/libxml/triop.h +150 -0
- package/vendor/libxml/triostr.c +2112 -0
- package/vendor/libxml/triostr.h +144 -0
- package/vendor/libxml/uri.c +2561 -0
- package/vendor/libxml/valid.c +7138 -0
- package/vendor/libxml/xinclude.c +2657 -0
- package/vendor/libxml/xlink.c +183 -0
- package/vendor/libxml/xmlIO.c +4135 -0
- package/vendor/libxml/xmlcatalog.c +624 -0
- package/vendor/libxml/xmllint.c +3796 -0
- package/vendor/libxml/xmlmemory.c +1163 -0
- package/vendor/libxml/xmlmodule.c +468 -0
- package/vendor/libxml/xmlreader.c +6033 -0
- package/vendor/libxml/xmlregexp.c +8271 -0
- package/vendor/libxml/xmlsave.c +2735 -0
- package/vendor/libxml/xmlschemas.c +29173 -0
- package/vendor/libxml/xmlschemastypes.c +6276 -0
- package/vendor/libxml/xmlstring.c +1050 -0
- package/vendor/libxml/xmlunicode.c +3179 -0
- package/vendor/libxml/xmlwriter.c +4738 -0
- package/vendor/libxml/xpath.c +14734 -0
- package/vendor/libxml/xpointer.c +2969 -0
- package/vendor/libxml/xzlib.c +815 -0
- package/vendor/libxml/xzlib.h +19 -0
package/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright 2009, Squish Tech, LLC. All rights reserved.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to
|
5
|
+
deal in the Software without restriction, including without limitation the
|
6
|
+
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
7
|
+
sell copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
18
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
19
|
+
IN THE SOFTWARE.
|
package/Makefile
ADDED
package/README.md
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# Libxmljs2
|
2
|
+
|
3
|
+
LibXML bindings for [node.js](http://nodejs.org/)
|
4
|
+
This package was forked as the original one is fairly unmaintained.
|
5
|
+
|
6
|
+
```javascript
|
7
|
+
var libxmljs = require('libxmljs2');
|
8
|
+
var xml =
|
9
|
+
'<?xml version="1.0" encoding="UTF-8"?>' +
|
10
|
+
'<root>' +
|
11
|
+
'<child foo="bar">' +
|
12
|
+
'<grandchild baz="fizbuzz">grandchild content</grandchild>' +
|
13
|
+
'</child>' +
|
14
|
+
'<sibling>with content!</sibling>' +
|
15
|
+
'</root>';
|
16
|
+
|
17
|
+
var xmlDoc = libxmljs.parseXml(xml);
|
18
|
+
|
19
|
+
// xpath queries
|
20
|
+
var gchild = xmlDoc.get('//grandchild');
|
21
|
+
|
22
|
+
console.log(gchild.text()); // prints "grandchild content"
|
23
|
+
|
24
|
+
var children = xmlDoc.root().childNodes();
|
25
|
+
var child = children[0];
|
26
|
+
|
27
|
+
console.log(child.attr('foo').value()); // prints "bar"
|
28
|
+
```
|
29
|
+
|
30
|
+
## Support
|
31
|
+
|
32
|
+
- Docs - [http://github.com/marudor/libxmljs2/wiki](http://github.com/marudor/libxmljs2/wiki)
|
33
|
+
|
34
|
+
## API and Examples
|
35
|
+
|
36
|
+
Check out the wiki [http://github.com/marudor/libxmljs2/wiki](https://github.com/marudor/libxmljs2/wiki).
|
37
|
+
|
38
|
+
See the [examples](https://github.com/marudor/libxmljs2/tree/main/examples) folder.
|
39
|
+
|
40
|
+
## Installation via [npm](https://npmjs.org)
|
41
|
+
|
42
|
+
```shell
|
43
|
+
npm install libxmljs2
|
44
|
+
```
|
45
|
+
|
46
|
+
## Contribute
|
47
|
+
|
48
|
+
Start by checking out the [open issues](https://github.com/marudor/libxmljs2/issues?labels=&page=1&state=open). Specifically the [desired feature](https://github.com/marudor/libxmljs2/issues?labels=desired+feature&page=1&state=open) ones.
|
49
|
+
|
50
|
+
### Requirements
|
51
|
+
|
52
|
+
Make sure you have met the requirements for [node-gyp](https://github.com/TooTallNate/node-gyp#installation). You DO NOT need to manually install node-gyp; it comes bundled with node.
|
package/binding.gyp
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
{
|
2
|
+
"targets": [
|
3
|
+
{
|
4
|
+
"target_name": "xmljs",
|
5
|
+
"product_extension": "node",
|
6
|
+
"type": "shared_library",
|
7
|
+
"include_dirs": ["vendor/libxml/include", "<!(node -e \"require('nan')\")"],
|
8
|
+
"cflags": ["-Wall"],
|
9
|
+
"xcode_settings": {"OTHER_CFLAGS": ["-Wall"]},
|
10
|
+
"win_delay_load_hook": "true",
|
11
|
+
"defines": ["LIBXML_XINCLUDE_ENABLED", "LIBXML_SCHEMATRON_ENABLED", "BUILDING_NODE_EXTENSION"],
|
12
|
+
"sources": [
|
13
|
+
"src/libxmljs.cc",
|
14
|
+
"src/xml_attribute.cc",
|
15
|
+
"src/xml_document.cc",
|
16
|
+
"src/xml_element.cc",
|
17
|
+
"src/xml_comment.cc",
|
18
|
+
"src/xml_namespace.cc",
|
19
|
+
"src/xml_node.cc",
|
20
|
+
"src/xml_sax_parser.cc",
|
21
|
+
"src/xml_syntax_error.cc",
|
22
|
+
"src/xml_textwriter.cc",
|
23
|
+
"src/xml_text.cc",
|
24
|
+
"src/xml_pi.cc",
|
25
|
+
"src/xml_xpath_context.cc",
|
26
|
+
"vendor/libxml/buf.c",
|
27
|
+
"vendor/libxml/catalog.c",
|
28
|
+
"vendor/libxml/chvalid.c",
|
29
|
+
"vendor/libxml/dict.c",
|
30
|
+
"vendor/libxml/encoding.c",
|
31
|
+
"vendor/libxml/entities.c",
|
32
|
+
"vendor/libxml/error.c",
|
33
|
+
"vendor/libxml/globals.c",
|
34
|
+
"vendor/libxml/hash.c",
|
35
|
+
"vendor/libxml/HTMLparser.c",
|
36
|
+
"vendor/libxml/HTMLtree.c",
|
37
|
+
"vendor/libxml/legacy.c",
|
38
|
+
"vendor/libxml/list.c",
|
39
|
+
"vendor/libxml/parser.c",
|
40
|
+
"vendor/libxml/parserInternals.c",
|
41
|
+
"vendor/libxml/pattern.c",
|
42
|
+
"vendor/libxml/relaxng.c",
|
43
|
+
"vendor/libxml/schematron.c",
|
44
|
+
"vendor/libxml/SAX2.c",
|
45
|
+
"vendor/libxml/SAX.c",
|
46
|
+
"vendor/libxml/tree.c",
|
47
|
+
"vendor/libxml/threads.c",
|
48
|
+
"vendor/libxml/uri.c",
|
49
|
+
"vendor/libxml/valid.c",
|
50
|
+
"vendor/libxml/xinclude.c",
|
51
|
+
"vendor/libxml/xlink.c",
|
52
|
+
"vendor/libxml/xmlIO.c",
|
53
|
+
"vendor/libxml/xmlmemory.c",
|
54
|
+
"vendor/libxml/xmlmodule.c",
|
55
|
+
"vendor/libxml/xmlreader.c",
|
56
|
+
"vendor/libxml/xmlregexp.c",
|
57
|
+
"vendor/libxml/xmlsave.c",
|
58
|
+
"vendor/libxml/xmlschemas.c",
|
59
|
+
"vendor/libxml/xmlschemastypes.c",
|
60
|
+
"vendor/libxml/xmlstring.c",
|
61
|
+
"vendor/libxml/xmlunicode.c",
|
62
|
+
"vendor/libxml/xmlwriter.c",
|
63
|
+
"vendor/libxml/xpath.c",
|
64
|
+
"vendor/libxml/xpointer.c",
|
65
|
+
],
|
66
|
+
"conditions": [
|
67
|
+
[
|
68
|
+
'OS=="mac"',
|
69
|
+
{
|
70
|
+
# node-gyp 2.x doesn't add this anymore
|
71
|
+
# https://github.com/TooTallNate/node-gyp/pull/612
|
72
|
+
"xcode_settings": {
|
73
|
+
"CLANG_CXX_LANGUAGE_STANDARD": "c++14",
|
74
|
+
"OTHER_LDFLAGS": ["-undefined dynamic_lookup"],
|
75
|
+
},
|
76
|
+
},
|
77
|
+
]
|
78
|
+
],
|
79
|
+
}
|
80
|
+
]
|
81
|
+
}
|
package/index.d.ts
ADDED
@@ -0,0 +1,273 @@
|
|
1
|
+
import { EventEmitter } from 'events';
|
2
|
+
|
3
|
+
export const version: string;
|
4
|
+
export const libxml_version: string;
|
5
|
+
export const libxml_parser_version: string;
|
6
|
+
|
7
|
+
interface StringMap {
|
8
|
+
[key: string]: string;
|
9
|
+
}
|
10
|
+
|
11
|
+
interface ParserOptions {
|
12
|
+
recover?: boolean;
|
13
|
+
noent?: boolean;
|
14
|
+
dtdload?: boolean;
|
15
|
+
doctype?: boolean;
|
16
|
+
dtdattr?: any;
|
17
|
+
dtdvalid?: boolean;
|
18
|
+
noerror?: boolean;
|
19
|
+
errors?: boolean;
|
20
|
+
nowarning?: boolean;
|
21
|
+
warnings?: boolean;
|
22
|
+
pedantic?: boolean;
|
23
|
+
noblanks?: boolean;
|
24
|
+
blanks?: boolean;
|
25
|
+
sax1?: boolean;
|
26
|
+
xinclude?: boolean;
|
27
|
+
nonet?: boolean;
|
28
|
+
net?: boolean;
|
29
|
+
nodict?: boolean;
|
30
|
+
dict?: boolean;
|
31
|
+
nsclean?: boolean;
|
32
|
+
implied?: boolean;
|
33
|
+
nocdata?: boolean;
|
34
|
+
cdata?: boolean;
|
35
|
+
noxincnode?: boolean;
|
36
|
+
compact?: boolean;
|
37
|
+
old?: boolean;
|
38
|
+
nobasefix?: boolean;
|
39
|
+
basefix?: boolean;
|
40
|
+
huge?: boolean;
|
41
|
+
oldsax?: boolean;
|
42
|
+
ignore_enc?: boolean;
|
43
|
+
big_lines?: boolean;
|
44
|
+
baseUrl?: string;
|
45
|
+
}
|
46
|
+
|
47
|
+
export function parseXml(source: string, options?: ParserOptions): Document;
|
48
|
+
export function parseXmlString(
|
49
|
+
source: string,
|
50
|
+
options?: ParserOptions
|
51
|
+
): Document;
|
52
|
+
|
53
|
+
export function parseHtml(source: string, options?: ParserOptions): Document;
|
54
|
+
export function parseHtmlString(
|
55
|
+
source: string,
|
56
|
+
options?: ParserOptions
|
57
|
+
): Document;
|
58
|
+
export function parseHtmlFragment(
|
59
|
+
source: string,
|
60
|
+
options?: ParserOptions
|
61
|
+
): Document;
|
62
|
+
|
63
|
+
export function memoryUsage(): number;
|
64
|
+
export function nodeCount(): number;
|
65
|
+
|
66
|
+
export class Document {
|
67
|
+
/**
|
68
|
+
* Create a new XML Document
|
69
|
+
* @param version XML document version, defaults to 1.0
|
70
|
+
* @param encoding Encoding, defaults to utf8
|
71
|
+
*/
|
72
|
+
constructor(version?: string, encoding?: string);
|
73
|
+
|
74
|
+
errors: SyntaxError[];
|
75
|
+
validationErrors: ValidationError[];
|
76
|
+
|
77
|
+
child(idx: number): Node | null;
|
78
|
+
childNodes(): Node[];
|
79
|
+
encoding(): string;
|
80
|
+
encoding(enc: string): this;
|
81
|
+
find<T extends Node = Node>(xpath: string, ns_uri?: string): T[];
|
82
|
+
find<T extends Node = Node>(xpath: string, namespaces: StringMap): T[];
|
83
|
+
get<T extends Node = Node>(xpath: string, ns_uri?: string): T | null;
|
84
|
+
get<T extends Node = Node>(xpath: string, namespaces: StringMap): T | null;
|
85
|
+
node(name: string, content?: string): Element;
|
86
|
+
root(): Element | null;
|
87
|
+
root(newRoot: Node): Node;
|
88
|
+
toString(formatted?: boolean): string;
|
89
|
+
type(): 'document';
|
90
|
+
validate(xsdDoc: Document): boolean;
|
91
|
+
schematronValidate(schemaDoc: Document): boolean;
|
92
|
+
version(): string;
|
93
|
+
setDtd(name: string, ext: string, sys: string): void;
|
94
|
+
getDtd(): {
|
95
|
+
name: string;
|
96
|
+
externalId: string;
|
97
|
+
systemId: string;
|
98
|
+
};
|
99
|
+
}
|
100
|
+
|
101
|
+
export class Node {
|
102
|
+
doc(): Document;
|
103
|
+
parent(): Element | Document;
|
104
|
+
/**
|
105
|
+
* The namespace or null in case of comment nodes
|
106
|
+
*/
|
107
|
+
namespace(): Namespace | null;
|
108
|
+
|
109
|
+
/**
|
110
|
+
* An array of namespaces that the object belongs to.
|
111
|
+
*
|
112
|
+
* @param local If it is true, only the namespace declarations local to this
|
113
|
+
* node are returned, rather than all of the namespaces in scope
|
114
|
+
* at this node (including the ones from the parent elements).
|
115
|
+
*/
|
116
|
+
namespaces(local?: boolean): Namespace[];
|
117
|
+
|
118
|
+
prevSibling(): Node | null;
|
119
|
+
nextSibling(): Node | null;
|
120
|
+
|
121
|
+
line(): number;
|
122
|
+
type(): 'comment' | 'element' | 'text' | 'attribute' | 'pi';
|
123
|
+
remove(): this;
|
124
|
+
clone(): this;
|
125
|
+
/**
|
126
|
+
* Serializes the node to a string. The string will contain all contents of the node formatted as XML and can be used to print the node.
|
127
|
+
*/
|
128
|
+
toString(
|
129
|
+
format?:
|
130
|
+
| boolean
|
131
|
+
| {
|
132
|
+
declaration: boolean;
|
133
|
+
selfCloseEmpty: boolean;
|
134
|
+
whitespace: boolean;
|
135
|
+
type: 'xml' | 'html' | 'xhtml';
|
136
|
+
encoding?:
|
137
|
+
| 'HTML'
|
138
|
+
| 'ASCII'
|
139
|
+
| 'UTF-8'
|
140
|
+
| 'UTF-16'
|
141
|
+
| 'ISO-Latin-1'
|
142
|
+
| 'ISO-8859-1';
|
143
|
+
}
|
144
|
+
): string;
|
145
|
+
}
|
146
|
+
|
147
|
+
export class Element extends Node {
|
148
|
+
constructor(doc: Document, name: string, content?: string);
|
149
|
+
node(name: string, content?: string): Element;
|
150
|
+
name(): string;
|
151
|
+
name(newName: string): this;
|
152
|
+
text(): string;
|
153
|
+
text(newText: string): this;
|
154
|
+
attr(name: string): Attribute | null; //getter
|
155
|
+
attr(name: string, value: string): this; //setter
|
156
|
+
attr(attrObject: StringMap): this; //setter using stringMap
|
157
|
+
attrs(): Attribute[];
|
158
|
+
cdata(data: string): this;
|
159
|
+
|
160
|
+
doc(): Document;
|
161
|
+
child(idx: number): Node | null;
|
162
|
+
childNodes(): Node[];
|
163
|
+
|
164
|
+
/**
|
165
|
+
* @return The original element, not the child.
|
166
|
+
*/
|
167
|
+
addChild(child: Node): this;
|
168
|
+
|
169
|
+
prevElement(): Element | null;
|
170
|
+
nextElement(): Element | null;
|
171
|
+
addNextSibling<T extends Node>(siblingNode: T): T;
|
172
|
+
addPrevSibling<T extends Node>(siblingNode: T): T;
|
173
|
+
|
174
|
+
find<T extends Node = Node>(xpath: string, ns_uri?: string): T[];
|
175
|
+
find<T extends Node = Node>(xpath: string, namespaces: StringMap): T[];
|
176
|
+
get<T extends Node = Node>(xpath: string, ns_uri?: string): T | null;
|
177
|
+
get<T extends Node = Node>(xpath: string, namespaces: StringMap): T | null;
|
178
|
+
|
179
|
+
defineNamespace(prefixOrHref: string, hrefInCaseOfPrefix?: string): Namespace;
|
180
|
+
|
181
|
+
namespace(): Namespace | null;
|
182
|
+
namespace(newNamespace: Namespace): this;
|
183
|
+
namespace(prefixOrHref: string, hrefInCaseOfPrefix?: string): this;
|
184
|
+
|
185
|
+
replace(replacement: string): string;
|
186
|
+
replace<T extends Node>(replacement: T): T;
|
187
|
+
|
188
|
+
path(): string;
|
189
|
+
}
|
190
|
+
|
191
|
+
declare class Attribute extends Node {
|
192
|
+
name(): string;
|
193
|
+
node(): Element;
|
194
|
+
value(): string;
|
195
|
+
value(newValue: string): Attribute;
|
196
|
+
namespace(): Namespace | null;
|
197
|
+
}
|
198
|
+
|
199
|
+
export class Text extends Node {
|
200
|
+
constructor(doc: Document, content: string);
|
201
|
+
|
202
|
+
addNextSibling<T extends Node>(siblingNode: T): T;
|
203
|
+
addPrevSibling<T extends Node>(siblingNode: T): T;
|
204
|
+
nextElement(): Element | null;
|
205
|
+
prevElement(): Element | null;
|
206
|
+
|
207
|
+
replace(replacement: string): string;
|
208
|
+
replace<T extends Node>(replacement: T): T;
|
209
|
+
|
210
|
+
text(): string;
|
211
|
+
text(newContent: string): this;
|
212
|
+
}
|
213
|
+
|
214
|
+
export class Comment extends Node {
|
215
|
+
constructor(doc: Document, content?: string);
|
216
|
+
|
217
|
+
text(): string;
|
218
|
+
text(newContent: string): this;
|
219
|
+
}
|
220
|
+
|
221
|
+
export class ProcessingInstruction extends Node {
|
222
|
+
constructor(doc: Document, name: string, content?: string);
|
223
|
+
|
224
|
+
name(): string;
|
225
|
+
name(newName: string): this;
|
226
|
+
|
227
|
+
text(): string;
|
228
|
+
text(newContent: string): this;
|
229
|
+
}
|
230
|
+
|
231
|
+
export class Namespace {
|
232
|
+
href(): string;
|
233
|
+
prefix(): string;
|
234
|
+
}
|
235
|
+
|
236
|
+
export class SaxParser extends EventEmitter {
|
237
|
+
constructor();
|
238
|
+
parseString(source: string): boolean;
|
239
|
+
}
|
240
|
+
|
241
|
+
export class SaxPushParser extends EventEmitter {
|
242
|
+
constructor();
|
243
|
+
push(source: string): boolean;
|
244
|
+
}
|
245
|
+
|
246
|
+
export interface SyntaxError extends Error {
|
247
|
+
domain: number | null;
|
248
|
+
code: number | null;
|
249
|
+
level: number | null;
|
250
|
+
file: string | null;
|
251
|
+
line: number | null;
|
252
|
+
/**
|
253
|
+
* 1-based column number, 0 if not applicable/available.
|
254
|
+
*/
|
255
|
+
column: number;
|
256
|
+
|
257
|
+
str1: number | null;
|
258
|
+
str2: number | null;
|
259
|
+
str3: number | null;
|
260
|
+
int1: number | null;
|
261
|
+
}
|
262
|
+
|
263
|
+
export interface ValidationError extends Error {
|
264
|
+
domain: number | null;
|
265
|
+
code: number | null;
|
266
|
+
level: number | null;
|
267
|
+
|
268
|
+
line: number | null;
|
269
|
+
/**
|
270
|
+
* 1-based column number, 0 if not applicable/available.
|
271
|
+
*/
|
272
|
+
column: number;
|
273
|
+
}
|
package/index.js
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
// js acts as a wrapper to the c++ bindings
|
2
|
+
// prefer to do error handling and other abstrctions in the
|
3
|
+
// js layer and only go to c++ when we need to hit libxml
|
4
|
+
const bindings = require('./lib/bindings');
|
5
|
+
|
6
|
+
// document parsing for backwards compat
|
7
|
+
const Document = require('./lib/document');
|
8
|
+
|
9
|
+
// / parse an xml string and return a Document
|
10
|
+
module.exports.parseXml = Document.fromXml;
|
11
|
+
|
12
|
+
// / parse an html string and return a Document
|
13
|
+
module.exports.parseHtml = Document.fromHtml;
|
14
|
+
module.exports.parseHtmlFragment = Document.fromHtmlFragment;
|
15
|
+
|
16
|
+
// constants
|
17
|
+
module.exports.version = require('./package.json').version;
|
18
|
+
module.exports.libxml_version = bindings.libxml_version;
|
19
|
+
module.exports.libxml_parser_version = bindings.libxml_parser_version;
|
20
|
+
module.exports.libxml_debug_enabled = bindings.libxml_debug_enabled;
|
21
|
+
module.exports.features = bindings.features;
|
22
|
+
|
23
|
+
// lib exports
|
24
|
+
module.exports.Comment = bindings.Comment;
|
25
|
+
module.exports.Document = Document;
|
26
|
+
module.exports.Element = require('./lib/element');
|
27
|
+
module.exports.ProcessingInstruction = bindings.ProcessingInstruction;
|
28
|
+
module.exports.Text = bindings.Text;
|
29
|
+
|
30
|
+
// Compatibility synonyms
|
31
|
+
Document.fromXmlString = Document.fromXml;
|
32
|
+
Document.fromHtmlString = Document.fromHtml;
|
33
|
+
module.exports.parseXmlString = module.exports.parseXml;
|
34
|
+
module.exports.parseHtmlString = module.exports.parseHtml;
|
35
|
+
|
36
|
+
const sax_parser = require('./lib/sax_parser');
|
37
|
+
|
38
|
+
module.exports.SaxParser = sax_parser.SaxParser;
|
39
|
+
module.exports.SaxPushParser = sax_parser.SaxPushParser;
|
40
|
+
|
41
|
+
module.exports.memoryUsage = bindings.xmlMemUsed;
|
42
|
+
|
43
|
+
module.exports.nodeCount = bindings.xmlNodeCount;
|
44
|
+
|
45
|
+
module.exports.TextWriter = bindings.TextWriter;
|
package/lib/bindings.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
module.exports = require('bindings')('xmljs');
|
package/lib/document.js
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
/* eslint-disable no-underscore-dangle */
|
2
|
+
const bindings = require('./bindings');
|
3
|
+
|
4
|
+
const Element = require('./element');
|
5
|
+
|
6
|
+
function assertRoot(doc) {
|
7
|
+
if (!doc.root()) {
|
8
|
+
throw new Error('Document has no root element');
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
12
|
+
const Document = bindings.Document;
|
13
|
+
|
14
|
+
Document.prototype = bindings.Document.prototype;
|
15
|
+
|
16
|
+
// / add a child node to the document
|
17
|
+
// / this will set the document root
|
18
|
+
Document.prototype.node = function node(name, content) {
|
19
|
+
return this.root(Element(this, name, content));
|
20
|
+
};
|
21
|
+
|
22
|
+
// / xpath search
|
23
|
+
// / @return array of matching elements
|
24
|
+
Document.prototype.find = function find(xpath, ns_uri) {
|
25
|
+
assertRoot(this);
|
26
|
+
|
27
|
+
return this.root().find(xpath, ns_uri);
|
28
|
+
};
|
29
|
+
|
30
|
+
// / xpath search
|
31
|
+
// / @return first element matching
|
32
|
+
Document.prototype.get = function get(xpath, ns_uri) {
|
33
|
+
assertRoot(this);
|
34
|
+
|
35
|
+
return this.root().get(xpath, ns_uri);
|
36
|
+
};
|
37
|
+
|
38
|
+
// / @return a given child
|
39
|
+
Document.prototype.child = function child(id) {
|
40
|
+
if (id === undefined || typeof id !== 'number') {
|
41
|
+
throw new Error('id argument required for #child');
|
42
|
+
}
|
43
|
+
|
44
|
+
assertRoot(this);
|
45
|
+
|
46
|
+
return this.root().child(id);
|
47
|
+
};
|
48
|
+
|
49
|
+
// / @return an Array of child nodes of the document root
|
50
|
+
Document.prototype.childNodes = function childNodes() {
|
51
|
+
assertRoot(this);
|
52
|
+
|
53
|
+
return this.root().childNodes();
|
54
|
+
};
|
55
|
+
|
56
|
+
Document.prototype.setDtd = function setDtd(name, ext, sys) {
|
57
|
+
if (!name) {
|
58
|
+
throw new Error('Must pass in a DTD name');
|
59
|
+
} else if (typeof name !== 'string') {
|
60
|
+
throw new Error('Must pass in a valid DTD name');
|
61
|
+
}
|
62
|
+
|
63
|
+
const params = [name];
|
64
|
+
|
65
|
+
if (typeof ext !== 'undefined') {
|
66
|
+
params.push(ext);
|
67
|
+
}
|
68
|
+
if (ext && typeof sys !== 'undefined') {
|
69
|
+
params.push(sys);
|
70
|
+
}
|
71
|
+
|
72
|
+
return this._setDtd(...params);
|
73
|
+
};
|
74
|
+
|
75
|
+
// / @return array of namespaces in document
|
76
|
+
Document.prototype.namespaces = function namespaces() {
|
77
|
+
assertRoot(this);
|
78
|
+
|
79
|
+
return this.root().namespaces();
|
80
|
+
};
|
81
|
+
|
82
|
+
module.exports = Document;
|
83
|
+
|
84
|
+
// / parse a string into a html document
|
85
|
+
// / @param string html string to parse
|
86
|
+
// / @param {encoding:string, baseUrl:string} opts html string to parse
|
87
|
+
// / @return a Document
|
88
|
+
module.exports.fromHtml = function fromHtml(string, opts = {}) {
|
89
|
+
// if for some reason user did not specify an object for the options
|
90
|
+
if (typeof opts !== 'object') {
|
91
|
+
throw new Error('fromHtml options must be an object');
|
92
|
+
}
|
93
|
+
|
94
|
+
return bindings.fromHtml(string, opts);
|
95
|
+
};
|
96
|
+
|
97
|
+
// / parse a string into a html document fragment
|
98
|
+
// / @param string html string to parse
|
99
|
+
// / @param {encoding:string, baseUrl:string} opts html string to parse
|
100
|
+
// / @return a Document
|
101
|
+
module.exports.fromHtmlFragment = function fromHtmlFragment(string, opts = {}) {
|
102
|
+
// if for some reason user did not specify an object for the options
|
103
|
+
if (typeof opts !== 'object') {
|
104
|
+
throw new Error('fromHtmlFragment options must be an object');
|
105
|
+
}
|
106
|
+
|
107
|
+
opts.doctype = false;
|
108
|
+
opts.implied = false;
|
109
|
+
|
110
|
+
return bindings.fromHtml(string, opts);
|
111
|
+
};
|
112
|
+
|
113
|
+
// / parse a string into a xml document
|
114
|
+
// / @param string xml string to parse
|
115
|
+
// / @return a Document
|
116
|
+
module.exports.fromXml = function fromXml(string, options = {}) {
|
117
|
+
return bindings.fromXml(string, options);
|
118
|
+
};
|
package/lib/element.js
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
/* eslint-disable no-underscore-dangle */
|
2
|
+
/* eslint-disable no-param-reassign */
|
3
|
+
const bindings = require('./bindings');
|
4
|
+
|
5
|
+
// / create a new element on the given document
|
6
|
+
// / @param doc the Document to create the element for
|
7
|
+
// / @param name the element name
|
8
|
+
// / @param {String} [content] element content
|
9
|
+
// / @constructor
|
10
|
+
function Element(doc, name, content) {
|
11
|
+
if (!doc) {
|
12
|
+
throw new Error('document argument required');
|
13
|
+
} else if (!(doc instanceof bindings.Document)) {
|
14
|
+
throw new Error('document argument must be an instance of Document');
|
15
|
+
} else if (!name) {
|
16
|
+
throw new Error('name argument required');
|
17
|
+
}
|
18
|
+
|
19
|
+
return new bindings.Element(doc, name, content);
|
20
|
+
}
|
21
|
+
|
22
|
+
Element.prototype = bindings.Element.prototype;
|
23
|
+
|
24
|
+
Element.prototype.attr = function attr(...args) {
|
25
|
+
if (args.length === 1) {
|
26
|
+
const arg = args[0];
|
27
|
+
|
28
|
+
if (typeof arg === 'object') {
|
29
|
+
// object setter
|
30
|
+
// iterate keys/value to set attributes
|
31
|
+
for (const k in arg) {
|
32
|
+
this._attr(k, arg[k]);
|
33
|
+
}
|
34
|
+
|
35
|
+
return this;
|
36
|
+
} else if (typeof arg === 'string') {
|
37
|
+
// getter
|
38
|
+
return this._attr(arg);
|
39
|
+
}
|
40
|
+
} else if (args.length === 2) {
|
41
|
+
// 2 arg setter
|
42
|
+
const name = args[0];
|
43
|
+
const value = args[1];
|
44
|
+
|
45
|
+
this._attr(name, value);
|
46
|
+
|
47
|
+
return this;
|
48
|
+
}
|
49
|
+
};
|
50
|
+
|
51
|
+
// / helper method to attach a new node to this element
|
52
|
+
// / @param name the element name
|
53
|
+
// / @param {String} [content] element content
|
54
|
+
Element.prototype.node = function node(name, content) {
|
55
|
+
const elem = Element(this.doc(), name, content);
|
56
|
+
|
57
|
+
this.addChild(elem);
|
58
|
+
|
59
|
+
return elem;
|
60
|
+
};
|
61
|
+
|
62
|
+
Element.prototype.get = function get(...args) {
|
63
|
+
const res = this.find(...args);
|
64
|
+
|
65
|
+
if (Array.isArray(res)) {
|
66
|
+
return res[0];
|
67
|
+
}
|
68
|
+
|
69
|
+
return res;
|
70
|
+
};
|
71
|
+
|
72
|
+
Element.prototype.defineNamespace = function defineNamespace(prefix, href) {
|
73
|
+
// if no prefix specified
|
74
|
+
if (!href) {
|
75
|
+
href = prefix;
|
76
|
+
prefix = null;
|
77
|
+
}
|
78
|
+
|
79
|
+
return new bindings.Namespace(this, prefix, href);
|
80
|
+
};
|
81
|
+
|
82
|
+
module.exports = Element;
|