node-opcua-xml2json 2.98.0 → 2.98.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,19 @@
1
+ import { ReaderStateParserLike } from "./xml2json";
2
+ type UAString = string | null;
3
+ type NodeIdLike = string | null;
4
+ type Int32 = number;
5
+ type UInt32 = number;
6
+ type UABoolean = boolean;
7
+ type LocalizedTextLike = string | null;
8
+ export interface StructureFieldOptions {
9
+ name?: UAString;
10
+ description?: (LocalizedTextLike | null);
11
+ dataType?: (NodeIdLike | null);
12
+ valueRank?: Int32;
13
+ arrayDimensions?: UInt32[] | null;
14
+ maxStringLength?: UInt32;
15
+ isOptional?: UABoolean;
16
+ }
17
+ export declare const _definitionParser: ReaderStateParserLike;
18
+ export declare const definitionReaderStateParser: ReaderStateParserLike;
19
+ export {};
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.definitionReaderStateParser = exports._definitionParser = void 0;
4
+ //<Definition Name="SomeName">
5
+ // <Field Name="Running" Value="0" dataType: [ValueRank="1"]>
6
+ // [<Description>text</Description>]
7
+ // <Field>
8
+ // </Definition>
9
+ const node_opcua_assert_1 = require("node-opcua-assert");
10
+ exports._definitionParser = {
11
+ init(name, attrs) {
12
+ (0, node_opcua_assert_1.default)(!this.parent.
13
+ nFields || this.parent.definitionFields.length === 0);
14
+ this.parent.definitionFields = [];
15
+ this.parent.definitionName = attrs.SymbolicName || attrs.Name;
16
+ this.array = this.parent.definitionFields;
17
+ this.isUnion = attrs.IsUnion === "true" ? true : false;
18
+ },
19
+ parser: {
20
+ Field: {
21
+ init() {
22
+ this.description = undefined;
23
+ },
24
+ parser: {
25
+ Description: {
26
+ finish() {
27
+ this.parent.description = this.text;
28
+ }
29
+ }
30
+ },
31
+ finish() {
32
+ const obj = {
33
+ name: this.attrs.Name
34
+ };
35
+ if (this.attrs.AllowSubtype !== undefined) {
36
+ obj.allowSubtype = this.attrs.AllowSubtype === "true";
37
+ }
38
+ else {
39
+ obj.allowSubtype = false;
40
+ }
41
+ if (this.attrs.DataType !== undefined) {
42
+ obj.dataType = this.attrs.DataType;
43
+ }
44
+ if (this.description) {
45
+ obj.description = this.description;
46
+ }
47
+ if (this.attrs.Value !== undefined) {
48
+ obj.value = parseInt(this.attrs.Value, 10);
49
+ }
50
+ if (this.attrs.ValueRank !== undefined) {
51
+ obj.valueRank = parseInt(this.attrs.ValueRank, 10);
52
+ }
53
+ else {
54
+ // when not specified valueRank means Scalar and Scalar is -1
55
+ obj.valueRank = -1;
56
+ }
57
+ if (this.attrs.ArrayDimensions !== undefined) {
58
+ obj.arrayDimensions = this.attrs.ArrayDimensions.split(",").map((e) => parseInt(e, 10));
59
+ }
60
+ obj.isOptional = this.attrs.IsOptional === "true" ? true : false;
61
+ if (this.attrs.SymbolicName !== undefined) {
62
+ obj.symbolicName = this.attrs.SymbolicName;
63
+ }
64
+ this.parent.array.push(obj);
65
+ }
66
+ }
67
+ }
68
+ };
69
+ exports.definitionReaderStateParser = {
70
+ parser: {
71
+ Definition: exports._definitionParser
72
+ },
73
+ endElement() {
74
+ this._pojo = {
75
+ name: this.definitionName,
76
+ fields: this.definitionFields
77
+ };
78
+ }
79
+ };
80
+ //# sourceMappingURL=definition_parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition_parser.js","sourceRoot":"","sources":["../../source/definition_parser.ts"],"names":[],"mappings":";;;AAAA,8BAA8B;AAC9B,gEAAgE;AAChE,yCAAyC;AACzC,YAAY;AACZ,gBAAgB;AAChB,yDAAuC;AA6C1B,QAAA,iBAAiB,GAA0B;IACpD,IAAI,CAAW,IAAY,EAAE,KAAoB;QAC7C,IAAA,2BAAM,EAAC,CAAC,IAAI,CAAC,MAAM;YACf,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3D,CAAC;IACD,MAAM,EAAE;QACJ,KAAK,EAAE;YACH,IAAI;gBACA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YACjC,CAAC;YACD,MAAM,EAAE;gBACJ,WAAW,EAAE;oBACT,MAAM;wBACF,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;oBACxC,CAAC;iBACJ;aACJ;YACD,MAAM;gBACF,MAAM,GAAG,GAAQ;oBACb,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;iBACxB,CAAC;gBACF,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE;oBACvC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC;iBACzD;qBAAM;oBACH,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;iBAC5B;gBACD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;oBACnC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;iBACtC;gBACD,IAAI,IAAI,CAAC,WAAW,EAAE;oBAClB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;iBACtC;gBACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;oBAChC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;iBAC9C;gBACD,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;oBACpC,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;iBACtD;qBAAM;oBACH,6DAA6D;oBAC7D,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;iBACtB;gBACD,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE;oBAC1C,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;iBACnG;gBAED,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBAEjE,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE;oBACvC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;iBAC9C;gBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;SACJ;KACJ;CACJ,CAAC;AACW,QAAA,2BAA2B,GAA0B;IAC9D,MAAM,EAAE;QACJ,UAAU,EAAE,yBAAiB;KAChC;IACD,UAAU;QACN,IAAI,CAAC,KAAK,GAAG;YACT,IAAI,EAAE,IAAI,CAAC,cAAc;YAEzB,MAAM,EAAE,IAAI,CAAC,gBAAgB;SAChC,CAAC;IACN,CAAC;CACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { ReaderState, ReaderStateParserLike } from "./xml2json";
2
+ interface Field {
3
+ dataType: any;
4
+ description?: string;
5
+ name: string;
6
+ value?: any;
7
+ valueRank?: number;
8
+ allowSubtype?: boolean;
9
+ }
10
+ export interface Definition {
11
+ name: string;
12
+ fields: Field[];
13
+ }
14
+ export interface DefinitionMap {
15
+ findDefinition(name: string): Definition;
16
+ }
17
+ /**
18
+ * @deprecated ( use makeXmlExtensionObjectReader instead)
19
+ * @param definitionName
20
+ * @param definitionMap
21
+ * @param readerMap
22
+ * @returns
23
+ */
24
+ export declare function makeExtensionObjectReader(definitionName: string, definitionMap: DefinitionMap, readerMap: Record<string, ReaderStateParserLike>): ReaderState;
25
+ export {};
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeExtensionObjectReader = void 0;
4
+ const node_opcua_utils_1 = require("node-opcua-utils");
5
+ const xml2json_1 = require("./xml2json");
6
+ function BasicType_parser(dataType, parseFunc) {
7
+ const r = {
8
+ init(elementName, attrs) {
9
+ this.value = undefined;
10
+ },
11
+ finish() {
12
+ this.value = parseFunc.call(this, this.text);
13
+ }
14
+ };
15
+ const _parser = {};
16
+ _parser[dataType] = r;
17
+ return _parser;
18
+ }
19
+ function ListOf(dataType, parseFunc) {
20
+ return {
21
+ init() {
22
+ this.value = [];
23
+ },
24
+ parser: BasicType_parser(dataType, parseFunc),
25
+ finish() {
26
+ /** empty */
27
+ },
28
+ endElement(elementName) {
29
+ this.value.push(this.parser[elementName].value);
30
+ }
31
+ };
32
+ }
33
+ const localizedTextReader = {
34
+ init() {
35
+ this.localizedText = {};
36
+ },
37
+ parser: {
38
+ Locale: {
39
+ finish() {
40
+ this.parent.localizedText = this.parent.localizedText || {};
41
+ this.parent.localizedText.locale = this.text.trim();
42
+ }
43
+ },
44
+ Text: {
45
+ finish() {
46
+ this.parent.localizedText = this.parent.localizedText || {};
47
+ this.parent.localizedText.text = this.text.trim();
48
+ }
49
+ }
50
+ },
51
+ finish() {
52
+ this.value = this.localizedText;
53
+ }
54
+ };
55
+ const partials = {
56
+ LocalizedText: localizedTextReader,
57
+ String: {
58
+ finish() {
59
+ this.value = this.text;
60
+ }
61
+ },
62
+ Boolean: {
63
+ finish() {
64
+ this.value = this.text.toLowerCase() === "true";
65
+ }
66
+ },
67
+ ByteString: {
68
+ init() {
69
+ this.value = null;
70
+ },
71
+ finish() {
72
+ const base64text = this.text;
73
+ const byteString = Buffer.from(base64text, "base64");
74
+ this.value = byteString;
75
+ }
76
+ },
77
+ Float: {
78
+ finish() {
79
+ this.value = parseFloat(this.text);
80
+ }
81
+ },
82
+ Double: {
83
+ finish() {
84
+ this.value = parseFloat(this.text);
85
+ }
86
+ },
87
+ Int8: {
88
+ finish() {
89
+ this.value = parseInt(this.text, 10);
90
+ }
91
+ },
92
+ Int16: {
93
+ finish() {
94
+ this.value = parseInt(this.text, 10);
95
+ }
96
+ },
97
+ Int32: {
98
+ finish() {
99
+ this.value = parseInt(this.text, 10);
100
+ }
101
+ },
102
+ Int64: {
103
+ finish() {
104
+ this.value = parseInt(this.text, 10);
105
+ }
106
+ },
107
+ UInt8: {
108
+ finish() {
109
+ this.value = parseInt(this.text, 10);
110
+ }
111
+ },
112
+ UInt16: {
113
+ finish() {
114
+ this.value = parseInt(this.text, 10);
115
+ }
116
+ },
117
+ UInt32: {
118
+ finish() {
119
+ this.value = parseInt(this.text, 10);
120
+ }
121
+ },
122
+ UInt64: {
123
+ finish() {
124
+ this.value = parseInt(this.text, 10);
125
+ }
126
+ },
127
+ ListOfLocalizedText: {
128
+ init() {
129
+ this.value = [];
130
+ },
131
+ parser: { LocalizedText: localizedTextReader },
132
+ finish() {
133
+ /** empty */
134
+ },
135
+ endElement() {
136
+ this.value.push(this.parser.LocalizedText.value);
137
+ }
138
+ },
139
+ ListOfDouble: ListOf("Double", parseFloat),
140
+ ListOfFloat: ListOf("Float", parseFloat),
141
+ ListOfInt32: ListOf("Int32", parseInt),
142
+ ListOfInt16: ListOf("Int16", parseInt),
143
+ ListOfInt8: ListOf("Int8", parseInt),
144
+ ListOfUint32: ListOf("Uint32", parseInt),
145
+ ListOfUint16: ListOf("Uint16", parseInt),
146
+ ListOfUint8: ListOf("Uint8", parseInt)
147
+ };
148
+ function _clone(a) {
149
+ if (typeof a === "string" || typeof a === "number" || typeof a === "boolean") {
150
+ return a;
151
+ }
152
+ if (a instanceof Buffer) {
153
+ return Buffer.from(a);
154
+ }
155
+ if (a instanceof Array) {
156
+ return a.map((x) => _clone(x));
157
+ }
158
+ return Object.assign({}, a);
159
+ }
160
+ function _makeExtensionObjectReader(definitionName, definitionMap, readerMap) {
161
+ // is it a basic type ?
162
+ if (Object.prototype.hasOwnProperty.call(partials, definitionName)) {
163
+ return partials[definitionName];
164
+ }
165
+ let reader = readerMap[definitionName];
166
+ if (reader) {
167
+ return reader;
168
+ }
169
+ const definition = definitionMap.findDefinition(definitionName);
170
+ if (!definition) {
171
+ throw new Error("cannot find definition for " + definitionName);
172
+ }
173
+ reader = {
174
+ finish() {
175
+ /** empty */
176
+ },
177
+ parser: {}
178
+ };
179
+ for (const field of definition.fields) {
180
+ const fieldReader = _makeExtensionObjectReader(field.dataType, definitionMap, readerMap);
181
+ if (!fieldReader) {
182
+ throw new Error(" Cannot find reader for dataType " + field.dataType);
183
+ }
184
+ if (field.valueRank === undefined || field.valueRank === -1) {
185
+ const parser = fieldReader;
186
+ if (!parser) {
187
+ throw new Error("??? " + field.dataType + " " + field.name);
188
+ }
189
+ reader.parser[field.name] = {
190
+ parser: fieldReader.parser,
191
+ // endElement: fieldReader.endElement,
192
+ finish() {
193
+ const elName = (0, node_opcua_utils_1.lowerFirstLetter)(field.name);
194
+ fieldReader.finish.call(this);
195
+ this.parent.value = this.parent.value || {};
196
+ this.parent.value[elName] = _clone(this.value);
197
+ }
198
+ };
199
+ }
200
+ else if (field.valueRank === 1) {
201
+ const listReader = {
202
+ init() {
203
+ this.value = [];
204
+ },
205
+ parser: {},
206
+ finish() {
207
+ const elName = (0, node_opcua_utils_1.lowerFirstLetter)(this.name);
208
+ this.parent.value = this.parent.value || {};
209
+ this.parent.value[elName] = this.value;
210
+ this.value = undefined;
211
+ },
212
+ startElement(name, attrs) {
213
+ // empty
214
+ },
215
+ endElement(element) {
216
+ this.value.push(_clone(this.parser[element].value));
217
+ }
218
+ };
219
+ listReader.parser[field.dataType] = fieldReader;
220
+ reader.parser[field.name] = listReader;
221
+ }
222
+ else {
223
+ throw new Error("Unsupported ValueRank ! " + field.valueRank);
224
+ }
225
+ }
226
+ // xx const parser: ParserLike = {};
227
+ // xx parser[definition.name] = reader;
228
+ readerMap[definitionName] = reader;
229
+ return reader;
230
+ }
231
+ /**
232
+ * @deprecated ( use makeXmlExtensionObjectReader instead)
233
+ * @param definitionName
234
+ * @param definitionMap
235
+ * @param readerMap
236
+ * @returns
237
+ */
238
+ function makeExtensionObjectReader(definitionName, definitionMap, readerMap) {
239
+ const reader1 = {
240
+ parser: {},
241
+ endElement() {
242
+ // console.log(this.parser[definitionName].value);
243
+ this._pojo = this.parser[definitionName].value;
244
+ }
245
+ };
246
+ reader1.parser[definitionName] = _makeExtensionObjectReader(definitionName, definitionMap, readerMap);
247
+ return new xml2json_1.ReaderState(reader1);
248
+ }
249
+ exports.makeExtensionObjectReader = makeExtensionObjectReader;
250
+ //# sourceMappingURL=extension_object_parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension_object_parser.js","sourceRoot":"","sources":["../../source/extension_object_parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Xml2Json, XmlAttributes, IReaderState } from "./xml2json";
2
+ export declare class InternalFragmentClonerReaderState implements IReaderState {
3
+ private _xw;
4
+ value: any;
5
+ initLevel: number;
6
+ engine?: Xml2Json;
7
+ _on_startElement(level: number, elementName: string, attrs: XmlAttributes): void;
8
+ _on_endElement(level: number, elementName: string): void;
9
+ _on_init(elementName: string, attrs: XmlAttributes, parent: IReaderState, level: number, engine: Xml2Json): void;
10
+ _on_finish(): void;
11
+ _on_endElement2(level: number, elementName: string): void;
12
+ _on_text(text: string): void;
13
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InternalFragmentClonerReaderState = void 0;
4
+ const XMLWriter = require("xml-writer");
5
+ class InternalFragmentClonerReaderState {
6
+ constructor() {
7
+ this._xw = new XMLWriter(true);
8
+ this.initLevel = 0;
9
+ }
10
+ _on_startElement(level, elementName, attrs) {
11
+ this._xw.startElement(elementName);
12
+ for (const [attName, attValue] of Object.entries(attrs)) {
13
+ this._xw.writeAttribute(attName, attValue);
14
+ }
15
+ }
16
+ _on_endElement(level, elementName) {
17
+ this._xw.endElement();
18
+ if (this.initLevel === level) {
19
+ this.value = this._xw.toString();
20
+ this.engine._demote(this, this.engine.currentLevel, elementName);
21
+ this.engine = undefined;
22
+ this._on_finish();
23
+ }
24
+ }
25
+ _on_init(elementName, attrs, parent, level, engine) {
26
+ this.engine = engine;
27
+ this.initLevel = level;
28
+ this._xw = new XMLWriter(true);
29
+ this._xw.startElement(elementName);
30
+ for (const [attName, attValue] of Object.entries(attrs)) {
31
+ this._xw.writeAttribute(attName, attValue);
32
+ }
33
+ }
34
+ _on_finish() {
35
+ /** */
36
+ }
37
+ _on_endElement2(level, elementName) {
38
+ /** */
39
+ }
40
+ _on_text(text) {
41
+ this._xw.text(text);
42
+ }
43
+ }
44
+ exports.InternalFragmentClonerReaderState = InternalFragmentClonerReaderState;
45
+ //# sourceMappingURL=fragment_cloner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fragment_cloner.js","sourceRoot":"","sources":["../../source/fragment_cloner.ts"],"names":[],"mappings":";;;AAaA,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAExC,MAAa,iCAAiC;IAA9C;QACY,QAAG,GAAc,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QAEtC,cAAS,GAAG,CAAC,CAAC;IAuCzB,CAAC;IApCU,gBAAgB,CAAC,KAAa,EAAE,WAAmB,EAAE,KAAoB;QAC5E,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrD,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SAC9C;IACL,CAAC;IACM,cAAc,CAAC,KAAa,EAAE,WAAmB;QACpD,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACnE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;IACL,CAAC;IACM,QAAQ,CAAC,WAAmB,EAAE,KAAoB,EAAE,MAAoB,EAAE,KAAa,EAAE,MAAgB;QAC5G,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrD,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SAC9C;IACL,CAAC;IAEM,UAAU;QACb,MAAM;IACV,CAAC;IAEM,eAAe,CAAC,KAAa,EAAE,WAAmB;QACrD,MAAM;IACV,CAAC;IAEM,QAAQ,CAAC,IAAY;QACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;CACJ;AA1CD,8EA0CC"}
@@ -0,0 +1,8 @@
1
+ import { XmlAttributes } from "./xml2json";
2
+ export declare class FragmentClonerParser {
3
+ value: any;
4
+ private _cloneFragment?;
5
+ private engine?;
6
+ startElement(elementName: string, attrs: XmlAttributes): void;
7
+ finish(): void;
8
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FragmentClonerParser = void 0;
4
+ const fragment_cloner_1 = require("./fragment_cloner");
5
+ class FragmentClonerParser {
6
+ startElement(elementName, attrs) {
7
+ this._cloneFragment = new fragment_cloner_1.InternalFragmentClonerReaderState();
8
+ this.engine._promote(this._cloneFragment, this.engine.currentLevel, elementName, attrs);
9
+ }
10
+ finish() {
11
+ this.value = this._cloneFragment.value;
12
+ this._cloneFragment.value = null;
13
+ }
14
+ }
15
+ exports.FragmentClonerParser = FragmentClonerParser;
16
+ //# sourceMappingURL=fragment_cloner_parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fragment_cloner_parser.js","sourceRoot":"","sources":["../../source/fragment_cloner_parser.ts"],"names":[],"mappings":";;;AAAA,uDAAsE;AAGtE,MAAa,oBAAoB;IAQtB,YAAY,CAAC,WAAmB,EAAE,KAAoB;QACzD,IAAI,CAAC,cAAc,GAAG,IAAI,mDAAiC,EAAE,CAAC;QAC9D,IAAI,CAAC,MAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAO,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAC9F,CAAC;IACM,MAAM;QACT,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAe,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,cAAe,CAAC,KAAK,GAAG,IAAI,CAAC;IACtC,CAAC;CACJ;AAhBD,oDAgBC"}
@@ -0,0 +1,6 @@
1
+ export * from "./xml2json";
2
+ export * from "./fragment_cloner";
3
+ export * from "./xml2json_pojo";
4
+ export * from "./fragment_cloner_parser";
5
+ export * from "./extension_object_parser";
6
+ export * from "./definition_parser";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,oDAAkC;AAClC,kDAAgC;AAChC,2DAAyC;AACzC,4DAA0C;AAC1C,sDAAoC"}
@@ -0,0 +1,10 @@
1
+ import { Callback, SimpleCallback, Xml2Json } from "../xml2json";
2
+ export declare class Xml2JsonFs extends Xml2Json {
3
+ /**
4
+ * @method parse
5
+ * @async
6
+ * @param xmlFile - the name of the xml file to parse.
7
+ */
8
+ parse(xmlFile: string): Promise<any>;
9
+ parse(xmlFile: string, callback: Callback<any> | SimpleCallback): void;
10
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Xml2JsonFs = void 0;
4
+ const fs = require("fs");
5
+ const xml2json_1 = require("../xml2json");
6
+ class Xml2JsonFs extends xml2json_1.Xml2Json {
7
+ parse(xmlFile, callback) {
8
+ if (!callback) {
9
+ throw new Error("internal error");
10
+ }
11
+ const readWholeFile = true;
12
+ if (readWholeFile) {
13
+ // slightly faster but require more memory ..
14
+ fs.readFile(xmlFile, (err, data) => {
15
+ if (err) {
16
+ return callback(err);
17
+ }
18
+ if (data[0] === 0xef && data[1] === 0xbb && data[2] === 0xbf) {
19
+ data = data.subarray(3);
20
+ }
21
+ const dataAsString = data.toString();
22
+ const parser = this._prepareParser(callback);
23
+ parser.write(dataAsString);
24
+ parser.end();
25
+ });
26
+ }
27
+ else {
28
+ const Bomstrip = require("bomstrip");
29
+ const parser = this._prepareParser(callback);
30
+ fs.createReadStream(xmlFile, { autoClose: true, encoding: "utf8" }).pipe(new Bomstrip()).pipe(parser);
31
+ }
32
+ }
33
+ }
34
+ exports.Xml2JsonFs = Xml2JsonFs;
35
+ // tslint:disable:no-var-requires
36
+ const thenify = require("thenify");
37
+ const opts = { multiArgs: false };
38
+ Xml2JsonFs.prototype.parse = thenify.withCallback(Xml2JsonFs.prototype.parse, opts);
39
+ //# sourceMappingURL=xml2json_fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml2json_fs.js","sourceRoot":"","sources":["../../../source/nodejs/xml2json_fs.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,0CAAiE;AAEjE,MAAa,UAAW,SAAQ,mBAAQ;IAQ7B,KAAK,CAAC,OAAe,EAAE,QAAyC;QACnE,IAAI,CAAC,QAAQ,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC;QAC3B,IAAI,aAAa,EAAE;YACf,6CAA6C;YAC7C,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAiB,EAAE,IAAY,EAAE,EAAE;gBACrD,IAAI,GAAG,EAAE;oBACL,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;iBACxB;gBACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBAC1D,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBAC3B;gBACD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC3B,MAAM,CAAC,GAAG,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;SACN;aAAM;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAE7C,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzG;IACL,CAAC;CACJ;AAnCD,gCAmCC;AACD,iCAAiC;AACjC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACnC,MAAM,IAAI,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAClC,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { IReaderState, ReaderStateBase, Xml2Json, XmlAttributes } from "./xml2json";
2
+ export type withPojoLambda = (name: string, pojo: any) => void;
3
+ export declare class ReaderState2 extends ReaderStateBase {
4
+ _stack: any;
5
+ _pojo: any;
6
+ _element: any;
7
+ text: string;
8
+ _withPojo: withPojoLambda;
9
+ private parent?;
10
+ private engine?;
11
+ private initLevel;
12
+ constructor();
13
+ _on_init(elementName: string, attrs: XmlAttributes, parent: IReaderState, level: number, engine: Xml2Json): void;
14
+ _on_finish(): void;
15
+ _on_startElement(level: number, elementName: string, attrs: XmlAttributes): void;
16
+ _on_endElement2(level: number, elementName: string): void;
17
+ _on_endElement(level: number, elementName: string): void;
18
+ _on_text(text: string): void;
19
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReaderState2 = void 0;
4
+ const node_opcua_utils_1 = require("node-opcua-utils");
5
+ const xml2json_1 = require("./xml2json");
6
+ class ReaderState2 extends xml2json_1.ReaderStateBase {
7
+ constructor() {
8
+ super();
9
+ this.initLevel = 0;
10
+ this._pojo = {};
11
+ this._stack = [];
12
+ this._element = {};
13
+ this.text = "";
14
+ this.parent = undefined;
15
+ this._withPojo = (pojo) => {
16
+ /* empty */
17
+ };
18
+ }
19
+ _on_init(elementName, attrs, parent, level, engine) {
20
+ this.parent = parent;
21
+ this.engine = engine;
22
+ this.initLevel = level;
23
+ if (this._stack.length === 0) {
24
+ this._pojo = {};
25
+ this._element = this._pojo;
26
+ }
27
+ }
28
+ _on_finish() {
29
+ /* empy */
30
+ }
31
+ _on_startElement(level, elementName, attrs) {
32
+ this._stack.push(this._element);
33
+ if (elementName.match(/^ListOf/)) {
34
+ elementName = elementName.substring(6);
35
+ const elName = (0, node_opcua_utils_1.lowerFirstLetter)(elementName);
36
+ if (this._element instanceof Array) {
37
+ const array = [];
38
+ this._element.push(array);
39
+ this._element = array;
40
+ }
41
+ else {
42
+ this._element[elName] = [];
43
+ this._element = this._element[elName];
44
+ }
45
+ }
46
+ else {
47
+ const elName = (0, node_opcua_utils_1.lowerFirstLetter)(elementName);
48
+ if (this._element instanceof Array) {
49
+ const obj = {};
50
+ this._element.push(obj);
51
+ this._element = obj;
52
+ }
53
+ else {
54
+ this._element[elName] = {};
55
+ this._element = this._element[elName];
56
+ }
57
+ }
58
+ }
59
+ _on_endElement2(level, elementName) {
60
+ /* empty */
61
+ }
62
+ _on_endElement(level, elementName) {
63
+ this._element = this._stack.pop();
64
+ if (this.text.length > 0 && this._element) {
65
+ const elName = (0, node_opcua_utils_1.lowerFirstLetter)(elementName);
66
+ this._element[elName] = this.text;
67
+ // this.engine!._pojo = this._pojo;
68
+ }
69
+ else {
70
+ const elName = (0, node_opcua_utils_1.lowerFirstLetter)(elementName);
71
+ if (this.initLevel === level) {
72
+ if (this._withPojo) {
73
+ if (this.text.length) {
74
+ this._withPojo.call(null, elName, this.text);
75
+ }
76
+ else {
77
+ this._withPojo.call(null, elName, this._pojo);
78
+ }
79
+ }
80
+ }
81
+ }
82
+ this.text = "";
83
+ }
84
+ _on_text(text) {
85
+ this.text = text;
86
+ }
87
+ }
88
+ exports.ReaderState2 = ReaderState2;
89
+ //# sourceMappingURL=xml2Json_pojo_tools.js.map