@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.

Files changed (160) hide show
  1. package/LICENSE +19 -0
  2. package/Makefile +18 -0
  3. package/README.md +52 -0
  4. package/binding.gyp +81 -0
  5. package/index.d.ts +273 -0
  6. package/index.js +45 -0
  7. package/lib/bindings.js +1 -0
  8. package/lib/document.js +118 -0
  9. package/lib/element.js +82 -0
  10. package/lib/sax_parser.js +38 -0
  11. package/package.json +70 -0
  12. package/src/html_document.cc +7 -0
  13. package/src/html_document.h +18 -0
  14. package/src/libxmljs.cc +252 -0
  15. package/src/libxmljs.h +53 -0
  16. package/src/xml_attribute.cc +173 -0
  17. package/src/xml_attribute.h +40 -0
  18. package/src/xml_comment.cc +117 -0
  19. package/src/xml_comment.h +30 -0
  20. package/src/xml_document.cc +810 -0
  21. package/src/xml_document.h +67 -0
  22. package/src/xml_element.cc +565 -0
  23. package/src/xml_element.h +61 -0
  24. package/src/xml_namespace.cc +158 -0
  25. package/src/xml_namespace.h +39 -0
  26. package/src/xml_node.cc +761 -0
  27. package/src/xml_node.h +73 -0
  28. package/src/xml_pi.cc +161 -0
  29. package/src/xml_pi.h +34 -0
  30. package/src/xml_sax_parser.cc +424 -0
  31. package/src/xml_sax_parser.h +73 -0
  32. package/src/xml_syntax_error.cc +66 -0
  33. package/src/xml_syntax_error.h +25 -0
  34. package/src/xml_text.cc +320 -0
  35. package/src/xml_text.h +48 -0
  36. package/src/xml_textwriter.cc +315 -0
  37. package/src/xml_textwriter.h +62 -0
  38. package/src/xml_xpath_context.cc +70 -0
  39. package/src/xml_xpath_context.h +23 -0
  40. package/vendor/libxml/Copyright +23 -0
  41. package/vendor/libxml/DOCBparser.c +305 -0
  42. package/vendor/libxml/HTMLparser.c +7287 -0
  43. package/vendor/libxml/HTMLtree.c +1200 -0
  44. package/vendor/libxml/Makefile +2983 -0
  45. package/vendor/libxml/SAX.c +180 -0
  46. package/vendor/libxml/SAX2.c +3036 -0
  47. package/vendor/libxml/buf.c +1351 -0
  48. package/vendor/libxml/buf.h +72 -0
  49. package/vendor/libxml/c14n.c +2234 -0
  50. package/vendor/libxml/catalog.c +3828 -0
  51. package/vendor/libxml/chvalid.c +336 -0
  52. package/vendor/libxml/config.h +294 -0
  53. package/vendor/libxml/config.h.gch +0 -0
  54. package/vendor/libxml/debugXML.c +3423 -0
  55. package/vendor/libxml/dict.c +1298 -0
  56. package/vendor/libxml/elfgcchack.h +17818 -0
  57. package/vendor/libxml/enc.h +32 -0
  58. package/vendor/libxml/encoding.c +3975 -0
  59. package/vendor/libxml/entities.c +1163 -0
  60. package/vendor/libxml/error.c +998 -0
  61. package/vendor/libxml/globals.c +1126 -0
  62. package/vendor/libxml/hash.c +1146 -0
  63. package/vendor/libxml/include/libxml/DOCBparser.h +96 -0
  64. package/vendor/libxml/include/libxml/HTMLparser.h +306 -0
  65. package/vendor/libxml/include/libxml/HTMLtree.h +147 -0
  66. package/vendor/libxml/include/libxml/Makefile +725 -0
  67. package/vendor/libxml/include/libxml/Makefile.am +54 -0
  68. package/vendor/libxml/include/libxml/Makefile.in +725 -0
  69. package/vendor/libxml/include/libxml/SAX.h +173 -0
  70. package/vendor/libxml/include/libxml/SAX2.h +178 -0
  71. package/vendor/libxml/include/libxml/c14n.h +128 -0
  72. package/vendor/libxml/include/libxml/catalog.h +182 -0
  73. package/vendor/libxml/include/libxml/chvalid.h +230 -0
  74. package/vendor/libxml/include/libxml/debugXML.h +217 -0
  75. package/vendor/libxml/include/libxml/dict.h +79 -0
  76. package/vendor/libxml/include/libxml/encoding.h +245 -0
  77. package/vendor/libxml/include/libxml/entities.h +151 -0
  78. package/vendor/libxml/include/libxml/globals.h +508 -0
  79. package/vendor/libxml/include/libxml/hash.h +236 -0
  80. package/vendor/libxml/include/libxml/list.h +137 -0
  81. package/vendor/libxml/include/libxml/nanoftp.h +163 -0
  82. package/vendor/libxml/include/libxml/nanohttp.h +81 -0
  83. package/vendor/libxml/include/libxml/parser.h +1243 -0
  84. package/vendor/libxml/include/libxml/parserInternals.h +644 -0
  85. package/vendor/libxml/include/libxml/pattern.h +100 -0
  86. package/vendor/libxml/include/libxml/relaxng.h +217 -0
  87. package/vendor/libxml/include/libxml/schemasInternals.h +958 -0
  88. package/vendor/libxml/include/libxml/schematron.h +142 -0
  89. package/vendor/libxml/include/libxml/threads.h +89 -0
  90. package/vendor/libxml/include/libxml/tree.h +1311 -0
  91. package/vendor/libxml/include/libxml/uri.h +94 -0
  92. package/vendor/libxml/include/libxml/valid.h +458 -0
  93. package/vendor/libxml/include/libxml/xinclude.h +129 -0
  94. package/vendor/libxml/include/libxml/xlink.h +189 -0
  95. package/vendor/libxml/include/libxml/xmlIO.h +368 -0
  96. package/vendor/libxml/include/libxml/xmlautomata.h +146 -0
  97. package/vendor/libxml/include/libxml/xmlerror.h +945 -0
  98. package/vendor/libxml/include/libxml/xmlexports.h +77 -0
  99. package/vendor/libxml/include/libxml/xmlmemory.h +224 -0
  100. package/vendor/libxml/include/libxml/xmlmodule.h +57 -0
  101. package/vendor/libxml/include/libxml/xmlreader.h +428 -0
  102. package/vendor/libxml/include/libxml/xmlregexp.h +222 -0
  103. package/vendor/libxml/include/libxml/xmlsave.h +88 -0
  104. package/vendor/libxml/include/libxml/xmlschemas.h +246 -0
  105. package/vendor/libxml/include/libxml/xmlschemastypes.h +151 -0
  106. package/vendor/libxml/include/libxml/xmlstring.h +140 -0
  107. package/vendor/libxml/include/libxml/xmlunicode.h +202 -0
  108. package/vendor/libxml/include/libxml/xmlversion.h +484 -0
  109. package/vendor/libxml/include/libxml/xmlwin32version.h +239 -0
  110. package/vendor/libxml/include/libxml/xmlwriter.h +488 -0
  111. package/vendor/libxml/include/libxml/xpath.h +564 -0
  112. package/vendor/libxml/include/libxml/xpathInternals.h +632 -0
  113. package/vendor/libxml/include/libxml/xpointer.h +114 -0
  114. package/vendor/libxml/include/win32config.h +122 -0
  115. package/vendor/libxml/include/wsockcompat.h +54 -0
  116. package/vendor/libxml/legacy.c +1343 -0
  117. package/vendor/libxml/libxml.h +134 -0
  118. package/vendor/libxml/list.c +779 -0
  119. package/vendor/libxml/nanoftp.c +2118 -0
  120. package/vendor/libxml/nanohttp.c +1899 -0
  121. package/vendor/libxml/parser.c +15553 -0
  122. package/vendor/libxml/parserInternals.c +2164 -0
  123. package/vendor/libxml/pattern.c +2621 -0
  124. package/vendor/libxml/relaxng.c +11101 -0
  125. package/vendor/libxml/rngparser.c +1595 -0
  126. package/vendor/libxml/runsuite.c +1157 -0
  127. package/vendor/libxml/save.h +36 -0
  128. package/vendor/libxml/schematron.c +1787 -0
  129. package/vendor/libxml/threads.c +1049 -0
  130. package/vendor/libxml/timsort.h +601 -0
  131. package/vendor/libxml/tree.c +10183 -0
  132. package/vendor/libxml/trio.c +6895 -0
  133. package/vendor/libxml/trio.h +230 -0
  134. package/vendor/libxml/triodef.h +228 -0
  135. package/vendor/libxml/trionan.c +914 -0
  136. package/vendor/libxml/trionan.h +84 -0
  137. package/vendor/libxml/triop.h +150 -0
  138. package/vendor/libxml/triostr.c +2112 -0
  139. package/vendor/libxml/triostr.h +144 -0
  140. package/vendor/libxml/uri.c +2561 -0
  141. package/vendor/libxml/valid.c +7138 -0
  142. package/vendor/libxml/xinclude.c +2657 -0
  143. package/vendor/libxml/xlink.c +183 -0
  144. package/vendor/libxml/xmlIO.c +4135 -0
  145. package/vendor/libxml/xmlcatalog.c +624 -0
  146. package/vendor/libxml/xmllint.c +3796 -0
  147. package/vendor/libxml/xmlmemory.c +1163 -0
  148. package/vendor/libxml/xmlmodule.c +468 -0
  149. package/vendor/libxml/xmlreader.c +6033 -0
  150. package/vendor/libxml/xmlregexp.c +8271 -0
  151. package/vendor/libxml/xmlsave.c +2735 -0
  152. package/vendor/libxml/xmlschemas.c +29173 -0
  153. package/vendor/libxml/xmlschemastypes.c +6276 -0
  154. package/vendor/libxml/xmlstring.c +1050 -0
  155. package/vendor/libxml/xmlunicode.c +3179 -0
  156. package/vendor/libxml/xmlwriter.c +4738 -0
  157. package/vendor/libxml/xpath.c +14734 -0
  158. package/vendor/libxml/xpointer.c +2969 -0
  159. package/vendor/libxml/xzlib.c +815 -0
  160. 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
@@ -0,0 +1,18 @@
1
+
2
+ target=./build/Release/xmljs.node
3
+
4
+ all: $(target)
5
+
6
+ build/:
7
+ node-gyp configure
8
+
9
+ $(target): build/ src/*.cc src/*.h
10
+ node-gyp build
11
+
12
+ clean:
13
+ rm -rf build
14
+
15
+ test: clean $(target)
16
+ npm test
17
+
18
+ .PHONY: test clean
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;
@@ -0,0 +1 @@
1
+ module.exports = require('bindings')('xmljs');
@@ -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;