node-opcua-address-space 2.181.1 → 2.182.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/helpers/ensure_secure_access.ts +53 -2
- package/api/index.ts +30 -1
- package/api/loader/generateAddressSpaceRaw.ts +44 -139
- package/api/loader/load_nodeset2.ts +5 -0
- package/api/loader/narrow_instance_datatypes.ts +264 -0
- package/api/loader/nodeset_builtin_formats.ts +143 -0
- package/api/loader/nodeset_format.ts +153 -0
- package/api/loader/nodeset_image.ts +37 -4
- package/api/loader/nodeset_image_codec.ts +153 -34
- package/api/loader/nodeset_record.ts +26 -2
- package/api/loader/nodeset_record_applier.ts +54 -3
- package/api/loader/nodeset_records_to_xml.ts +620 -0
- package/api/loader/nodeset_source.ts +185 -26
- package/api/loader/nodeset_to_image.ts +16 -5
- package/api/loader/nodeset_xml_header.ts +119 -0
- package/api/loader/nodeset_xml_primitives.ts +209 -0
- package/api/loader/nodeset_xml_producer.ts +61 -2
- package/api/loader/parsers/variant_parser.ts +9 -0
- package/bin/nodeset_equivalence.js +750 -0
- package/bin/nodeset_tool_common.js +72 -0
- package/bin/opcua-nodeset-image.js +93 -103
- package/bin/opcua-nodeset-live.js +139 -0
- package/dist/api/helpers/ensure_secure_access.d.ts +20 -0
- package/dist/api/helpers/ensure_secure_access.js +39 -0
- package/dist/api/helpers/ensure_secure_access.js.map +1 -1
- package/dist/api/index.d.ts +7 -2
- package/dist/api/index.js +21 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api/loader/generateAddressSpaceRaw.d.ts +1 -7
- package/dist/api/loader/generateAddressSpaceRaw.js +32 -125
- package/dist/api/loader/generateAddressSpaceRaw.js.map +1 -1
- package/dist/api/loader/load_nodeset2.js +4 -0
- package/dist/api/loader/load_nodeset2.js.map +1 -1
- package/dist/api/loader/narrow_instance_datatypes.d.ts +30 -0
- package/dist/api/loader/narrow_instance_datatypes.js +217 -0
- package/dist/api/loader/narrow_instance_datatypes.js.map +1 -0
- package/dist/api/loader/nodeset_builtin_formats.d.ts +27 -0
- package/dist/api/loader/nodeset_builtin_formats.js +133 -0
- package/dist/api/loader/nodeset_builtin_formats.js.map +1 -0
- package/dist/api/loader/nodeset_format.d.ts +123 -0
- package/dist/api/loader/nodeset_format.js +63 -0
- package/dist/api/loader/nodeset_format.js.map +1 -0
- package/dist/api/loader/nodeset_image.d.ts +17 -1
- package/dist/api/loader/nodeset_image.js +32 -4
- package/dist/api/loader/nodeset_image.js.map +1 -1
- package/dist/api/loader/nodeset_image_codec.d.ts +4 -0
- package/dist/api/loader/nodeset_image_codec.js +142 -53
- package/dist/api/loader/nodeset_image_codec.js.map +1 -1
- package/dist/api/loader/nodeset_record.d.ts +26 -2
- package/dist/api/loader/nodeset_record.js +11 -2
- package/dist/api/loader/nodeset_record.js.map +1 -1
- package/dist/api/loader/nodeset_record_applier.js +52 -3
- package/dist/api/loader/nodeset_record_applier.js.map +1 -1
- package/dist/api/loader/nodeset_records_to_xml.d.ts +16 -0
- package/dist/api/loader/nodeset_records_to_xml.js +536 -0
- package/dist/api/loader/nodeset_records_to_xml.js.map +1 -0
- package/dist/api/loader/nodeset_source.d.ts +68 -7
- package/dist/api/loader/nodeset_source.js +157 -20
- package/dist/api/loader/nodeset_source.js.map +1 -1
- package/dist/api/loader/nodeset_to_image.d.ts +4 -4
- package/dist/api/loader/nodeset_to_image.js +14 -4
- package/dist/api/loader/nodeset_to_image.js.map +1 -1
- package/dist/api/loader/nodeset_xml_header.d.ts +22 -0
- package/dist/api/loader/nodeset_xml_header.js +113 -0
- package/dist/api/loader/nodeset_xml_header.js.map +1 -0
- package/dist/api/loader/nodeset_xml_primitives.d.ts +37 -0
- package/dist/api/loader/nodeset_xml_primitives.js +196 -0
- package/dist/api/loader/nodeset_xml_primitives.js.map +1 -0
- package/dist/api/loader/nodeset_xml_producer.js +56 -1
- package/dist/api/loader/nodeset_xml_producer.js.map +1 -1
- package/dist/api/loader/parsers/variant_parser.js +7 -0
- package/dist/api/loader/parsers/variant_parser.js.map +1 -1
- package/dist/impl/_instantiate_helpers.js +1 -0
- package/dist/impl/_instantiate_helpers.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_alarm_condition_impl.js +4 -0
- package/dist/impl/alarms_and_conditions/ua_alarm_condition_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js +14 -0
- package/dist/impl/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js.map +1 -1
- package/dist/impl/base_node_impl.d.ts +9 -0
- package/dist/impl/base_node_impl.js +11 -0
- package/dist/impl/base_node_impl.js.map +1 -1
- package/dist/impl/base_node_private.js +67 -97
- package/dist/impl/base_node_private.js.map +1 -1
- package/dist/impl/nodeset_tools/construct_namespace_dependency.js +5 -1
- package/dist/impl/nodeset_tools/construct_namespace_dependency.js.map +1 -1
- package/dist/impl/nodeset_tools/nodeset_to_records.js +61 -15
- package/dist/impl/nodeset_tools/nodeset_to_records.js.map +1 -1
- package/dist/impl/nodeset_tools/nodeset_to_xml.d.ts +1 -8
- package/dist/impl/nodeset_tools/nodeset_to_xml.js +174 -190
- package/dist/impl/nodeset_tools/nodeset_to_xml.js.map +1 -1
- package/dist/impl/ua_data_type_impl.d.ts +21 -0
- package/dist/impl/ua_data_type_impl.js +27 -2
- package/dist/impl/ua_data_type_impl.js.map +1 -1
- package/dist/impl/ua_object_type_impl.d.ts +9 -0
- package/dist/impl/ua_object_type_impl.js +12 -1
- package/dist/impl/ua_object_type_impl.js.map +1 -1
- package/dist/impl/ua_variable_impl.js +27 -10
- package/dist/impl/ua_variable_impl.js.map +1 -1
- package/dist/impl/ua_variable_impl_ext_obj.js +19 -2
- package/dist/impl/ua_variable_impl_ext_obj.js.map +1 -1
- package/dist/impl/ua_variable_type_impl.d.ts +8 -1
- package/dist/impl/ua_variable_type_impl.js +39 -2
- package/dist/impl/ua_variable_type_impl.js.map +1 -1
- package/dist/tsconfig_base.tsbuildinfo +1 -1
- package/distNodeJS/generate_address_space.js +4 -0
- package/distNodeJS/generate_address_space.js.map +1 -1
- package/impl/_instantiate_helpers.ts +3 -0
- package/impl/alarms_and_conditions/ua_alarm_condition_impl.ts +10 -0
- package/impl/alarms_and_conditions/ua_certificate_expiration_alarm_impl.ts +17 -0
- package/impl/base_node_impl.ts +15 -0
- package/impl/base_node_private.ts +97 -146
- package/impl/nodeset_tools/construct_namespace_dependency.ts +5 -1
- package/impl/nodeset_tools/nodeset_to_records.ts +66 -16
- package/impl/nodeset_tools/nodeset_to_xml.ts +127 -160
- package/impl/ua_data_type_impl.ts +40 -2
- package/impl/ua_object_type_impl.ts +16 -3
- package/impl/ua_variable_impl.ts +27 -10
- package/impl/ua_variable_impl_ext_obj.ts +20 -2
- package/impl/ua_variable_type_impl.ts +48 -2
- package/package.json +29 -27
- package/source_nodejs/generate_address_space.ts +7 -1
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* may hold the XML, or a precompiled image of it (see `nodeset_image.ts`), told apart by the
|
|
7
7
|
* first bytes.
|
|
8
8
|
*/
|
|
9
|
+
import { type NodesetDocument } from "./nodeset_format.js";
|
|
9
10
|
/** one piece of a NodeSet2 document: text, or UTF-8 bytes */
|
|
10
11
|
export type NodesetChunk = string | Uint8Array;
|
|
11
12
|
/** a document delivered in pieces: an async iterable (a Node.js Readable, a web ReadableStream, an async generator) or a plain iterable */
|
|
@@ -48,8 +49,22 @@ export interface NamedNodesetSource {
|
|
|
48
49
|
*/
|
|
49
50
|
imageKey?: string;
|
|
50
51
|
}
|
|
51
|
-
/**
|
|
52
|
-
|
|
52
|
+
/**
|
|
53
|
+
* how a document arrived, before anything has been decided about what it says: as text, or as
|
|
54
|
+
* bytes that are not text until something inflates or decodes them.
|
|
55
|
+
*
|
|
56
|
+
* This is not the format. It is the one thing that can be settled synchronously on a first
|
|
57
|
+
* chunk, and it decides only whether the reader decodes as it goes or keeps the bytes intact.
|
|
58
|
+
*/
|
|
59
|
+
export type NodesetContainer = "text" | "bytes";
|
|
60
|
+
/**
|
|
61
|
+
* the name of the format a source turned out to be written in.
|
|
62
|
+
*
|
|
63
|
+
* This used to be a closed pair, XML or image. It is now whatever is registered, so that a
|
|
64
|
+
* format the loader has never heard of can identify itself; the two built-ins go on reading the
|
|
65
|
+
* documents they always did.
|
|
66
|
+
*/
|
|
67
|
+
export type NodesetSourceKind = string;
|
|
53
68
|
export interface NodesetReaderOptions {
|
|
54
69
|
/** keep the bytes read so that {@link NodesetReader.digest} can be computed */
|
|
55
70
|
hash?: boolean;
|
|
@@ -76,7 +91,9 @@ export declare class NodesetReader {
|
|
|
76
91
|
private bodyStarted;
|
|
77
92
|
private decoder;
|
|
78
93
|
private atStart;
|
|
79
|
-
private
|
|
94
|
+
private container;
|
|
95
|
+
private formatName;
|
|
96
|
+
private allBytesValue;
|
|
80
97
|
private readonly hashed;
|
|
81
98
|
private bytesRead;
|
|
82
99
|
private readonly encoder;
|
|
@@ -86,16 +103,42 @@ export declare class NodesetReader {
|
|
|
86
103
|
whole: boolean, options?: NodesetReaderOptions);
|
|
87
104
|
/** the key a caller named for this source, if any */
|
|
88
105
|
get imageKey(): string | undefined;
|
|
89
|
-
/**
|
|
106
|
+
/**
|
|
107
|
+
* how this document arrived: as text, or as bytes. Settled on the first chunk, and never a
|
|
108
|
+
* statement about which format the document is written in.
|
|
109
|
+
*/
|
|
110
|
+
probeContainer(): Promise<NodesetContainer>;
|
|
111
|
+
/**
|
|
112
|
+
* which registered format claims this document.
|
|
113
|
+
*
|
|
114
|
+
* Two stages, because one is not enough. The container is decided synchronously on the first
|
|
115
|
+
* chunk; the format is decided from the head of the document *after* it has been inflated,
|
|
116
|
+
* which is the only way to tell one gzipped serialisation from another. The loader used to
|
|
117
|
+
* skip that second stage and take any gzip stream for one of its own images, so a foreign
|
|
118
|
+
* compressed nodeset was not rejected but misread.
|
|
119
|
+
*/
|
|
90
120
|
probe(): Promise<NodesetSourceKind>;
|
|
121
|
+
/**
|
|
122
|
+
* the beginning of the document as a sniffer sees it: inflated when it arrived gzipped, so
|
|
123
|
+
* that no format has to know how a document happened to be stored.
|
|
124
|
+
*
|
|
125
|
+
* A byte document is read whole. That is not a concession: every format that arrives as bytes
|
|
126
|
+
* is line-delimited or an archive, and reads whole anyway, and the bytes are kept so the read
|
|
127
|
+
* is not repeated. Text streams on, and is sniffed on as much of the head as has arrived.
|
|
128
|
+
*/
|
|
129
|
+
private sniffHead;
|
|
130
|
+
private headTextLength;
|
|
91
131
|
/**
|
|
92
132
|
* read from the start until `complete(text)` holds or the source ends; what was read stays
|
|
93
133
|
* in the reader and is delivered again, first, by {@link chunks}
|
|
94
134
|
*/
|
|
95
135
|
readHead(complete: (text: string) => boolean): Promise<string>;
|
|
96
|
-
/**
|
|
97
|
-
|
|
98
|
-
|
|
136
|
+
/**
|
|
137
|
+
* the whole document from the start, usable once: text chunks for a document that arrived as
|
|
138
|
+
* text, byte chunks for one that did not. A caller that wants text either way decodes.
|
|
139
|
+
*/
|
|
140
|
+
chunks(): AsyncGenerator<NodesetChunk>;
|
|
141
|
+
/** the whole document as raw bytes, from the start, for a source holding bytes; usable once */
|
|
99
142
|
bytes(): AsyncGenerator<Uint8Array>;
|
|
100
143
|
/** the whole document as one byte array; reads the source to its end and keeps it */
|
|
101
144
|
allBytes(): Promise<Uint8Array>;
|
|
@@ -106,6 +149,13 @@ export declare class NodesetReader {
|
|
|
106
149
|
* whole, once the body has been read to its end otherwise
|
|
107
150
|
*/
|
|
108
151
|
digest(): Promise<string>;
|
|
152
|
+
/**
|
|
153
|
+
* the digest if it has already been computed, without computing one.
|
|
154
|
+
*
|
|
155
|
+
* A format may want to record what it read from, but must never be the thing that forces a
|
|
156
|
+
* stream to be drained to find out.
|
|
157
|
+
*/
|
|
158
|
+
digestIfKnown(): string | undefined;
|
|
109
159
|
private startBody;
|
|
110
160
|
/** the next non-empty chunk, kept in the head until the body starts; undefined at the end */
|
|
111
161
|
private pull;
|
|
@@ -122,3 +172,14 @@ export declare function openNodesetSource(source: NodesetSource, index: number,
|
|
|
122
172
|
hash?: boolean;
|
|
123
173
|
whole?: boolean;
|
|
124
174
|
}): NodesetReader;
|
|
175
|
+
/**
|
|
176
|
+
* a {@link NodesetDocument} over a reader: what a format is handed.
|
|
177
|
+
*
|
|
178
|
+
* The point of the facade is that a format never touches the reader. It asks for the document in
|
|
179
|
+
* the shape it wants -- lines, text, bytes, a stream -- and the reader answers each of those once
|
|
180
|
+
* and shares the answer, so a format that wants both the lines and the raw bytes pays for one
|
|
181
|
+
* read and one inflate rather than two.
|
|
182
|
+
*
|
|
183
|
+
* @internal
|
|
184
|
+
*/
|
|
185
|
+
export declare function nodesetDocumentOf(reader: NodesetReader): NodesetDocument;
|
|
@@ -11,8 +11,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
11
11
|
exports.NodesetReader = void 0;
|
|
12
12
|
exports.sha256Hex = sha256Hex;
|
|
13
13
|
exports.openNodesetSource = openNodesetSource;
|
|
14
|
+
exports.nodesetDocumentOf = nodesetDocumentOf;
|
|
15
|
+
const nodeset_format_js_1 = require("./nodeset_format.js");
|
|
14
16
|
const nodeset_image_js_1 = require("./nodeset_image.js");
|
|
15
17
|
const BOM = 0xfeff;
|
|
18
|
+
/** how many characters of a document a format sniffer is shown */
|
|
19
|
+
const HEAD_CHARS = 4096;
|
|
16
20
|
/**
|
|
17
21
|
* reads a source as text, once: the head first, as far as a predicate needs it, then the whole
|
|
18
22
|
* document with the head included, so that a stream that cannot be reopened is never read twice
|
|
@@ -33,7 +37,9 @@ class NodesetReader {
|
|
|
33
37
|
bodyStarted = false;
|
|
34
38
|
decoder = null;
|
|
35
39
|
atStart = true;
|
|
36
|
-
|
|
40
|
+
container;
|
|
41
|
+
formatName;
|
|
42
|
+
allBytesValue;
|
|
37
43
|
hashed;
|
|
38
44
|
bytesRead = 0;
|
|
39
45
|
encoder = new TextEncoder();
|
|
@@ -51,12 +57,65 @@ class NodesetReader {
|
|
|
51
57
|
get imageKey() {
|
|
52
58
|
return this.options.imageKey;
|
|
53
59
|
}
|
|
54
|
-
/**
|
|
55
|
-
|
|
56
|
-
|
|
60
|
+
/**
|
|
61
|
+
* how this document arrived: as text, or as bytes. Settled on the first chunk, and never a
|
|
62
|
+
* statement about which format the document is written in.
|
|
63
|
+
*/
|
|
64
|
+
async probeContainer() {
|
|
65
|
+
if (this.container === undefined) {
|
|
57
66
|
await this.pull();
|
|
58
67
|
}
|
|
59
|
-
return this.
|
|
68
|
+
return this.container ?? "text";
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* which registered format claims this document.
|
|
72
|
+
*
|
|
73
|
+
* Two stages, because one is not enough. The container is decided synchronously on the first
|
|
74
|
+
* chunk; the format is decided from the head of the document *after* it has been inflated,
|
|
75
|
+
* which is the only way to tell one gzipped serialisation from another. The loader used to
|
|
76
|
+
* skip that second stage and take any gzip stream for one of its own images, so a foreign
|
|
77
|
+
* compressed nodeset was not rejected but misread.
|
|
78
|
+
*/
|
|
79
|
+
async probe() {
|
|
80
|
+
if (this.formatName !== undefined) {
|
|
81
|
+
return this.formatName;
|
|
82
|
+
}
|
|
83
|
+
const head = await this.sniffHead();
|
|
84
|
+
const format = (0, nodeset_format_js_1.findNodesetFormat)(head);
|
|
85
|
+
if (!format) {
|
|
86
|
+
throw new Error(`nodeset source ${this.name}: no registered format recognises this document`);
|
|
87
|
+
}
|
|
88
|
+
this.formatName = format.name;
|
|
89
|
+
return this.formatName;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* the beginning of the document as a sniffer sees it: inflated when it arrived gzipped, so
|
|
93
|
+
* that no format has to know how a document happened to be stored.
|
|
94
|
+
*
|
|
95
|
+
* A byte document is read whole. That is not a concession: every format that arrives as bytes
|
|
96
|
+
* is line-delimited or an archive, and reads whole anyway, and the bytes are kept so the read
|
|
97
|
+
* is not repeated. Text streams on, and is sniffed on as much of the head as has arrived.
|
|
98
|
+
*/
|
|
99
|
+
async sniffHead() {
|
|
100
|
+
if ((await this.probeContainer()) === "bytes") {
|
|
101
|
+
const all = await this.allBytes();
|
|
102
|
+
const gzip = (0, nodeset_image_js_1.isGzip)(all);
|
|
103
|
+
const text = gzip
|
|
104
|
+
? ((await (0, nodeset_image_js_1.inflatedImageLines)(all))[0] ?? "")
|
|
105
|
+
: new TextDecoder("utf-8").decode(all.subarray(0, HEAD_CHARS));
|
|
106
|
+
return makeHead(this.name, text, gzip);
|
|
107
|
+
}
|
|
108
|
+
while (this.headTextLength() < HEAD_CHARS) {
|
|
109
|
+
if ((await this.pull()) === undefined)
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
return makeHead(this.name, this.head.join("").slice(0, HEAD_CHARS), false);
|
|
113
|
+
}
|
|
114
|
+
headTextLength() {
|
|
115
|
+
let total = 0;
|
|
116
|
+
for (const chunk of this.head)
|
|
117
|
+
total += chunk.length;
|
|
118
|
+
return total;
|
|
60
119
|
}
|
|
61
120
|
/**
|
|
62
121
|
* read from the start until `complete(text)` holds or the source ends; what was read stays
|
|
@@ -66,8 +125,8 @@ class NodesetReader {
|
|
|
66
125
|
if (this.bodyStarted) {
|
|
67
126
|
throw new Error(`nodeset source ${this.name}: the head cannot be read once the body has been`);
|
|
68
127
|
}
|
|
69
|
-
if ((await this.
|
|
70
|
-
throw new Error(`nodeset source ${this.name}: not
|
|
128
|
+
if ((await this.probeContainer()) !== "text") {
|
|
129
|
+
throw new Error(`nodeset source ${this.name}: the head of a byte document is not text`);
|
|
71
130
|
}
|
|
72
131
|
let text = this.head.join("");
|
|
73
132
|
while (!complete(text)) {
|
|
@@ -79,12 +138,13 @@ class NodesetReader {
|
|
|
79
138
|
}
|
|
80
139
|
return text;
|
|
81
140
|
}
|
|
82
|
-
/**
|
|
141
|
+
/**
|
|
142
|
+
* the whole document from the start, usable once: text chunks for a document that arrived as
|
|
143
|
+
* text, byte chunks for one that did not. A caller that wants text either way decodes.
|
|
144
|
+
*/
|
|
83
145
|
async *chunks() {
|
|
84
146
|
this.startBody();
|
|
85
|
-
|
|
86
|
-
throw new Error(`nodeset source ${this.name}: not XML`);
|
|
87
|
-
}
|
|
147
|
+
await this.probeContainer();
|
|
88
148
|
const head = this.head;
|
|
89
149
|
this.head = [];
|
|
90
150
|
for (const chunk of head) {
|
|
@@ -98,11 +158,11 @@ class NodesetReader {
|
|
|
98
158
|
yield chunk;
|
|
99
159
|
}
|
|
100
160
|
}
|
|
101
|
-
/** the whole document as raw bytes, from the start, for a source holding
|
|
161
|
+
/** the whole document as raw bytes, from the start, for a source holding bytes; usable once */
|
|
102
162
|
async *bytes() {
|
|
103
163
|
this.startBody();
|
|
104
|
-
if ((await this.
|
|
105
|
-
throw new Error(`nodeset source ${this.name}: not
|
|
164
|
+
if ((await this.probeContainer()) !== "bytes") {
|
|
165
|
+
throw new Error(`nodeset source ${this.name}: not a byte document`);
|
|
106
166
|
}
|
|
107
167
|
const head = this.head;
|
|
108
168
|
this.head = [];
|
|
@@ -119,6 +179,9 @@ class NodesetReader {
|
|
|
119
179
|
}
|
|
120
180
|
/** the whole document as one byte array; reads the source to its end and keeps it */
|
|
121
181
|
async allBytes() {
|
|
182
|
+
if (this.allBytesValue !== undefined) {
|
|
183
|
+
return this.allBytesValue;
|
|
184
|
+
}
|
|
122
185
|
if (this.bodyStarted) {
|
|
123
186
|
throw new Error(`nodeset source ${this.name}: a source is read once`);
|
|
124
187
|
}
|
|
@@ -126,7 +189,10 @@ class NodesetReader {
|
|
|
126
189
|
/* read to the end */
|
|
127
190
|
}
|
|
128
191
|
const parts = this.head.map((chunk) => (typeof chunk === "string" ? this.encoder.encode(chunk) : chunk));
|
|
129
|
-
|
|
192
|
+
// kept, so that the sniff and the format that follows it share one array: the inflated
|
|
193
|
+
// lines are cached against the identity of these bytes, and a second concat would miss
|
|
194
|
+
this.allBytesValue = concat(parts);
|
|
195
|
+
return this.allBytesValue;
|
|
130
196
|
}
|
|
131
197
|
/** the bytes read so far; the whole document once it has been read */
|
|
132
198
|
get length() {
|
|
@@ -156,6 +222,15 @@ class NodesetReader {
|
|
|
156
222
|
this.digestValue = await sha256Hex(bytes);
|
|
157
223
|
return this.digestValue;
|
|
158
224
|
}
|
|
225
|
+
/**
|
|
226
|
+
* the digest if it has already been computed, without computing one.
|
|
227
|
+
*
|
|
228
|
+
* A format may want to record what it read from, but must never be the thing that forces a
|
|
229
|
+
* stream to be drained to find out.
|
|
230
|
+
*/
|
|
231
|
+
digestIfKnown() {
|
|
232
|
+
return this.digestValue;
|
|
233
|
+
}
|
|
159
234
|
startBody() {
|
|
160
235
|
if (this.bodyStarted) {
|
|
161
236
|
throw new Error(`nodeset source ${this.name}: a source is read once`);
|
|
@@ -177,8 +252,8 @@ class NodesetReader {
|
|
|
177
252
|
const result = await this.iterator.next();
|
|
178
253
|
if (result.done) {
|
|
179
254
|
this.exhausted = true;
|
|
180
|
-
if (this.
|
|
181
|
-
this.
|
|
255
|
+
if (this.container === undefined) {
|
|
256
|
+
this.container = "text";
|
|
182
257
|
}
|
|
183
258
|
const tail = this.decoder ? this.decoder.decode() : "";
|
|
184
259
|
if (tail.length > 0) {
|
|
@@ -208,15 +283,16 @@ class NodesetReader {
|
|
|
208
283
|
if (chunk.length === 0) {
|
|
209
284
|
return undefined;
|
|
210
285
|
}
|
|
211
|
-
if (this.
|
|
212
|
-
|
|
286
|
+
if (this.container === undefined) {
|
|
287
|
+
// text unless the bytes say otherwise; a string chunk is text by construction
|
|
288
|
+
this.container = typeof chunk !== "string" && (0, nodeset_image_js_1.isNodesetImage)(chunk) ? "bytes" : "text";
|
|
213
289
|
}
|
|
214
290
|
const raw = typeof chunk === "string" ? this.encoder.encode(chunk) : chunk;
|
|
215
291
|
this.bytesRead += raw.length;
|
|
216
292
|
if (this.hashed) {
|
|
217
293
|
this.hashed.push(raw);
|
|
218
294
|
}
|
|
219
|
-
if (this.
|
|
295
|
+
if (this.container === "bytes") {
|
|
220
296
|
const bytes = typeof chunk === "string" ? raw : chunk;
|
|
221
297
|
if (!this.bodyStarted)
|
|
222
298
|
this.head.push(bytes);
|
|
@@ -304,4 +380,65 @@ function openNodesetSource(source, index, options = {}) {
|
|
|
304
380
|
};
|
|
305
381
|
return new NodesetReader(name, open, whole, { hash: options.hash, imageKey });
|
|
306
382
|
}
|
|
383
|
+
/** the head a sniffer is shown, with its first line split out for the line-delimited formats */
|
|
384
|
+
function makeHead(name, text, gzip) {
|
|
385
|
+
const newline = text.indexOf("\n");
|
|
386
|
+
const firstLine = newline < 0 ? text : text.slice(0, newline);
|
|
387
|
+
return { name, text, gzip, firstLine: firstLine.endsWith("\r") ? firstLine.slice(0, -1) : firstLine };
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* a {@link NodesetDocument} over a reader: what a format is handed.
|
|
391
|
+
*
|
|
392
|
+
* The point of the facade is that a format never touches the reader. It asks for the document in
|
|
393
|
+
* the shape it wants -- lines, text, bytes, a stream -- and the reader answers each of those once
|
|
394
|
+
* and shares the answer, so a format that wants both the lines and the raw bytes pays for one
|
|
395
|
+
* read and one inflate rather than two.
|
|
396
|
+
*
|
|
397
|
+
* @internal
|
|
398
|
+
*/
|
|
399
|
+
function nodesetDocumentOf(reader) {
|
|
400
|
+
let inflatedBytes;
|
|
401
|
+
let textValue;
|
|
402
|
+
let linesValue;
|
|
403
|
+
const rawBytes = () => reader.allBytes();
|
|
404
|
+
const bytes = () => {
|
|
405
|
+
if (!inflatedBytes) {
|
|
406
|
+
inflatedBytes = (async () => {
|
|
407
|
+
const raw = await rawBytes();
|
|
408
|
+
if (!(0, nodeset_image_js_1.isGzip)(raw))
|
|
409
|
+
return raw;
|
|
410
|
+
// one inflate, shared with lines(): both go through the cache keyed on these bytes
|
|
411
|
+
return new TextEncoder().encode((await (0, nodeset_image_js_1.inflatedImageLines)(raw)).join("\n"));
|
|
412
|
+
})();
|
|
413
|
+
}
|
|
414
|
+
return inflatedBytes;
|
|
415
|
+
};
|
|
416
|
+
const lines = () => {
|
|
417
|
+
if (!linesValue) {
|
|
418
|
+
linesValue = (async () => {
|
|
419
|
+
const raw = await rawBytes();
|
|
420
|
+
if ((0, nodeset_image_js_1.isGzip)(raw))
|
|
421
|
+
return await (0, nodeset_image_js_1.inflatedImageLines)(raw);
|
|
422
|
+
return new TextDecoder("utf-8").decode(raw).split("\n");
|
|
423
|
+
})();
|
|
424
|
+
}
|
|
425
|
+
return linesValue;
|
|
426
|
+
};
|
|
427
|
+
const text = () => {
|
|
428
|
+
if (!textValue) {
|
|
429
|
+
textValue = (async () => (await lines()).join("\n"))();
|
|
430
|
+
}
|
|
431
|
+
return textValue;
|
|
432
|
+
};
|
|
433
|
+
return {
|
|
434
|
+
name: reader.name,
|
|
435
|
+
bytes,
|
|
436
|
+
text,
|
|
437
|
+
lines,
|
|
438
|
+
rawBytes,
|
|
439
|
+
chunks: () => reader.chunks(),
|
|
440
|
+
readHead: (complete) => reader.readHead(complete),
|
|
441
|
+
digest: () => reader.digestIfKnown()
|
|
442
|
+
};
|
|
443
|
+
}
|
|
307
444
|
//# sourceMappingURL=nodeset_source.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeset_source.js","sourceRoot":"","sources":["../../../api/loader/nodeset_source.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAySH,8BAGC;AA0BD,8CAiCC;AArWD,yDAAoD;AAgDpD,MAAM,GAAG,GAAG,MAAM,CAAC;AAWnB;;;;GAIG;AACH,MAAa,aAAa;IAkBF;IACC;IAED;IACC;IArBb,QAAQ,GAAgE,IAAI,CAAC;IAC7E,SAAS,GAAG,KAAK,CAAC;IAC1B;;;OAGG;IACK,IAAI,GAA+B,EAAE,CAAC;IACtC,WAAW,GAAG,KAAK,CAAC;IACpB,OAAO,GAAuB,IAAI,CAAC;IACnC,OAAO,GAAG,IAAI,CAAC;IACf,IAAI,CAAgC;IAC3B,MAAM,CAAsB;IACrC,SAAS,GAAG,CAAC,CAAC;IACL,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IACrC,WAAW,CAAqB;IAExC,YACoB,IAAY,EACX,IAA8B;IAC/C,gGAAgG;IAChF,KAAc,EACb,UAAgC,EAAE;QAJnC,SAAI,GAAJ,IAAI,CAAQ;QACX,SAAI,GAAJ,IAAI,CAA0B;QAE/B,UAAK,GAAL,KAAK,CAAS;QACb,YAAO,GAAP,OAAO,CAA2B;QAEnD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED,qDAAqD;IACrD,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,+CAA+C;IACxC,KAAK,CAAC,KAAK;QACd,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,QAAQ,CAAC,QAAmC;QACrD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,kDAAkD,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,IAAI,GAAI,IAAI,CAAC,IAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM;YACV,CAAC;YACD,IAAI,IAAI,KAAe,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qEAAqE;IAC9D,KAAK,CAAC,CAAC,MAAM;QAChB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAgB,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC;QAChB,CAAC;QACD,SAAS,CAAC;YACN,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,OAAO;YACX,CAAC;YACD,MAAM,KAAe,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,kGAAkG;IAC3F,KAAK,CAAC,CAAC,KAAK;QACf,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,gBAAgB,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAoB,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC;QAChB,CAAC;QACD,SAAS,CAAC;YACN,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,OAAO;YACX,CAAC;YACD,MAAM,KAAmB,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,qFAAqF;IAC9E,KAAK,CAAC,QAAQ;QACjB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;YACvC,qBAAqB;QACzB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzG,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,sEAAsE;IACtE,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,MAAM;QACf,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,WAAW,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,oCAAoC,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvC,4CAA4C;YAChD,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,oEAAoE,CAAC,CAAC;QACrH,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAEO,SAAS;QACb,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,6FAA6F;IACrF,KAAK,CAAC,IAAI;QACd,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC3B,MAAM,aAAa,GAAI,MAAsC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBACpF,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAiC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvH,CAAC;YACD,SAAS,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC1C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC1B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;oBACtB,CAAC;oBACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAClB,IAAI,CAAC,IAAI,CAAC,WAAW;4BAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC5C,OAAO,IAAI,CAAC;oBAChB,CAAC;oBACD,OAAO,SAAS,CAAC;gBACrB,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACtB,OAAO,KAAK,CAAC;gBACjB,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/E,CAAC;IACL,CAAC;IAED,yHAAyH;IACjH,MAAM,CAAC,KAAmB;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,iDAAiD,OAAO,KAAK,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QACrF,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3E,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,IAAY,CAAC;QACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,GAAG,KAAK,CAAC;QACjB,CAAC;aAAM,CAAC;YACJ,6FAA6F;YAC7F,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YACxD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC7B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AApOD,sCAoOC;AAED,gGAAgG;AACzF,KAAK,UAAU,SAAS,CAAC,KAAiB;IAC7C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAqB,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,MAAM,CAAC,KAAmB;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtB,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,MAAoC;IAChD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,MAAM,YAAY,UAAU;QAAE,OAAO,OAAO,CAAC;IACjD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAC7B,MAAqB,EACrB,KAAa,EACb,UAA+C,EAAE;IAEjD,IAAI,IAAY,CAAC;IACjB,IAAI,KAAmC,CAAC;IACxC,IAAI,QAA4B,CAAC;IACjC,IACI,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,CAAC,CAAC,MAAM,YAAY,UAAU,CAAC;QAC/B,QAAQ,IAAI,MAAM;QAClB,MAAM,IAAI,MAAM,EAClB,CAAC;QACC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACnB,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QACtB,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B,CAAC;SAAM,CAAC;QACJ,KAAK,GAAG,MAAsC,CAAC;QAC/C,IAAI,GAAG,IAAI,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IAC9C,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,UAAU,CAAC,CAAC;IAC1F,MAAM,IAAI,GAAG,GAAuB,EAAE;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAC9B,OAAO,KAAK,EAAE,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;IACF,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClF,CAAC"}
|
|
1
|
+
{"version":3,"file":"nodeset_source.js","sourceRoot":"","sources":["../../../api/loader/nodeset_source.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module node-opcua-address-space
|
|
3
|
-
*/
|
|
4
1
|
import { type NodesetImageWriterOptions } from "./nodeset_image.js";
|
|
5
2
|
import { type NodesetSource } from "./nodeset_source.js";
|
|
6
3
|
export interface NodesetToImageOptions extends Pick<NodesetImageWriterOptions, "addressSpaceVersion" | "createdAt"> {
|
|
7
4
|
}
|
|
8
5
|
/**
|
|
9
|
-
* the precompiled image of a
|
|
6
|
+
* the precompiled image of a nodeset document, built from the source alone: converting a file
|
|
10
7
|
* needs neither its dependencies nor an address space. A source that already holds an image is
|
|
11
8
|
* returned as it is, once read through to check it.
|
|
9
|
+
*
|
|
10
|
+
* Any registered format can be the input, not only NodeSet2 XML: an image is a cache of records,
|
|
11
|
+
* and records are what every format produces.
|
|
12
12
|
*/
|
|
13
13
|
export declare function nodesetToImage(source: NodesetSource, options?: NodesetToImageOptions): Promise<Uint8Array>;
|
|
@@ -4,25 +4,35 @@ exports.nodesetToImage = nodesetToImage;
|
|
|
4
4
|
/**
|
|
5
5
|
* @module node-opcua-address-space
|
|
6
6
|
*/
|
|
7
|
+
const nodeset_builtin_formats_js_1 = require("./nodeset_builtin_formats.js");
|
|
8
|
+
const nodeset_format_js_1 = require("./nodeset_format.js");
|
|
7
9
|
const nodeset_image_js_1 = require("./nodeset_image.js");
|
|
8
10
|
const nodeset_source_js_1 = require("./nodeset_source.js");
|
|
9
|
-
|
|
11
|
+
(0, nodeset_builtin_formats_js_1.registerBuiltinNodesetFormats)();
|
|
10
12
|
/**
|
|
11
|
-
* the precompiled image of a
|
|
13
|
+
* the precompiled image of a nodeset document, built from the source alone: converting a file
|
|
12
14
|
* needs neither its dependencies nor an address space. A source that already holds an image is
|
|
13
15
|
* returned as it is, once read through to check it.
|
|
16
|
+
*
|
|
17
|
+
* Any registered format can be the input, not only NodeSet2 XML: an image is a cache of records,
|
|
18
|
+
* and records are what every format produces.
|
|
14
19
|
*/
|
|
15
20
|
async function nodesetToImage(source, options = {}) {
|
|
16
21
|
const reader = (0, nodeset_source_js_1.openNodesetSource)(source, 0, { hash: true });
|
|
17
|
-
|
|
22
|
+
const formatName = await reader.probe();
|
|
23
|
+
if (formatName === nodeset_builtin_formats_js_1.NDJSON_IMAGE_FORMAT) {
|
|
18
24
|
const bytes = await reader.allBytes();
|
|
19
25
|
for await (const _record of (0, nodeset_image_js_1.imageNodesetRecords)(bytes)) {
|
|
20
26
|
/* a corrupt image is refused here rather than at load time */
|
|
21
27
|
}
|
|
22
28
|
return bytes;
|
|
23
29
|
}
|
|
30
|
+
const format = (0, nodeset_format_js_1.nodesetFormatByName)(formatName);
|
|
31
|
+
if (!format) {
|
|
32
|
+
throw new Error(`nodeset source ${reader.name}: its format is no longer registered`);
|
|
33
|
+
}
|
|
24
34
|
const writer = new nodeset_image_js_1.NodesetImageWriter({ ...options });
|
|
25
|
-
for await (const record of (0,
|
|
35
|
+
for await (const record of format.records((0, nodeset_source_js_1.nodesetDocumentOf)(reader))) {
|
|
26
36
|
writer.apply(record);
|
|
27
37
|
}
|
|
28
38
|
return writer.finish(await reader.digest(), reader.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeset_to_image.js","sourceRoot":"","sources":["../../../api/loader/nodeset_to_image.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"nodeset_to_image.js","sourceRoot":"","sources":["../../../api/loader/nodeset_to_image.ts"],"names":[],"mappings":";;AAoBA,wCAmBC;AAvCD;;GAEG;AACH,6EAAkG;AAClG,2DAA0D;AAC1D,yDAA6G;AAC7G,2DAA+F;AAE/F,IAAA,0DAA6B,GAAE,CAAC;AAIhC;;;;;;;GAOG;AACI,KAAK,UAAU,cAAc,CAAC,MAAqB,EAAE,UAAiC,EAAE;IAC3F,MAAM,MAAM,GAAG,IAAA,qCAAiB,EAAC,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACxC,IAAI,UAAU,KAAK,gDAAmB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,IAAA,sCAAmB,EAAC,KAAK,CAAC,EAAE,CAAC;YACrD,8DAA8D;QAClE,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,uCAAmB,EAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,CAAC,IAAI,sCAAsC,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,qCAAkB,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACtD,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,IAAA,qCAAiB,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module node-opcua-address-space
|
|
3
|
+
*
|
|
4
|
+
* Reading the header of a NodeSet2 XML document: its `NamespaceUris` and its `Models`, and
|
|
5
|
+
* nothing else.
|
|
6
|
+
*
|
|
7
|
+
* This is the dependency pre-pass. Before any document is loaded the loader has to know what each
|
|
8
|
+
* one defines and what each one needs, so that it can sort them; it does that by reading every
|
|
9
|
+
* source no further than the end of its header, which on the standard nodeset is a few hundred
|
|
10
|
+
* bytes of a four megabyte file.
|
|
11
|
+
*
|
|
12
|
+
* It lives apart from the loader because the built-in XML format needs it too, and a format
|
|
13
|
+
* cannot import the loader that drives it.
|
|
14
|
+
*/
|
|
15
|
+
import type { NodesetModelInfo } from "./nodeset_format.js";
|
|
16
|
+
type NodesetInfo = NodesetModelInfo;
|
|
17
|
+
/** the `NamespaceUris` and `Models` a NodeSet2 header declares */
|
|
18
|
+
export declare function parseDependencies(xmlData: string): Promise<NodesetInfo>;
|
|
19
|
+
export declare function headerComplete(text: string): boolean;
|
|
20
|
+
/** the `<UANodeSet ...>` opener up to the end of `</Models>` or `</NamespaceUris>`, whichever comes last */
|
|
21
|
+
export declare function sliceHeader(xmlData: string, name: string): string;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @module node-opcua-address-space
|
|
4
|
+
*
|
|
5
|
+
* Reading the header of a NodeSet2 XML document: its `NamespaceUris` and its `Models`, and
|
|
6
|
+
* nothing else.
|
|
7
|
+
*
|
|
8
|
+
* This is the dependency pre-pass. Before any document is loaded the loader has to know what each
|
|
9
|
+
* one defines and what each one needs, so that it can sort them; it does that by reading every
|
|
10
|
+
* source no further than the end of its header, which on the standard nodeset is a few hundred
|
|
11
|
+
* bytes of a four megabyte file.
|
|
12
|
+
*
|
|
13
|
+
* It lives apart from the loader because the built-in XML format needs it too, and a format
|
|
14
|
+
* cannot import the loader that drives it.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.parseDependencies = parseDependencies;
|
|
18
|
+
exports.headerComplete = headerComplete;
|
|
19
|
+
exports.sliceHeader = sliceHeader;
|
|
20
|
+
const node_opcua_date_time_1 = require("node-opcua-date-time");
|
|
21
|
+
const node_opcua_debug_1 = require("node-opcua-debug");
|
|
22
|
+
const node_opcua_xml2json_1 = require("node-opcua-xml2json");
|
|
23
|
+
const doDebug = (0, node_opcua_debug_1.checkDebugFlag)("generateAddressSpaceRaw");
|
|
24
|
+
/** the `NamespaceUris` and `Models` a NodeSet2 header declares */
|
|
25
|
+
async function parseDependencies(xmlData) {
|
|
26
|
+
const namespaceUris = [];
|
|
27
|
+
const models = [];
|
|
28
|
+
let currentModel;
|
|
29
|
+
const state0 = {
|
|
30
|
+
parser: {
|
|
31
|
+
UANodeSet: {
|
|
32
|
+
parser: {
|
|
33
|
+
NamespaceUris: {
|
|
34
|
+
parser: {
|
|
35
|
+
Uri: {
|
|
36
|
+
finish() {
|
|
37
|
+
namespaceUris.push(this.text);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
Models: {
|
|
43
|
+
parser: {
|
|
44
|
+
Model: {
|
|
45
|
+
init(_elementName, attrs) {
|
|
46
|
+
const modelUri = attrs.ModelUri;
|
|
47
|
+
const version = attrs.Version;
|
|
48
|
+
const publicationDate = new Date(Date.parse(attrs.PublicationDate));
|
|
49
|
+
currentModel = {
|
|
50
|
+
modelUri,
|
|
51
|
+
version,
|
|
52
|
+
publicationDate,
|
|
53
|
+
requiredModel: []
|
|
54
|
+
};
|
|
55
|
+
doDebug && console.log(`currentModel = ${JSON.stringify(currentModel)}`);
|
|
56
|
+
models.push(currentModel);
|
|
57
|
+
},
|
|
58
|
+
parser: {
|
|
59
|
+
RequiredModel: {
|
|
60
|
+
init(_elementName, attrs) {
|
|
61
|
+
const modelUri = attrs.ModelUri;
|
|
62
|
+
const version = attrs.Version;
|
|
63
|
+
const publicationDate = new Date(Date.parse(attrs.PublicationDate));
|
|
64
|
+
if (!currentModel) {
|
|
65
|
+
throw new Error("Internal Error");
|
|
66
|
+
}
|
|
67
|
+
currentModel.requiredModel.push({
|
|
68
|
+
modelUri,
|
|
69
|
+
version,
|
|
70
|
+
publicationDate
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
const parser = new node_opcua_xml2json_1.Xml2Json(state0);
|
|
83
|
+
parser.parseString(xmlData);
|
|
84
|
+
if (models.length === 0 && namespaceUris.length >= 1) {
|
|
85
|
+
models.push({
|
|
86
|
+
modelUri: namespaceUris[0],
|
|
87
|
+
version: "1",
|
|
88
|
+
publicationDate: (0, node_opcua_date_time_1.getMinOPCUADate)(),
|
|
89
|
+
requiredModel: []
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return { models, namespaceUris: namespaceUris };
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* the header of a NodeSet2 file (`NamespaceUris`, `Models`) precedes the aliases and the nodes: the
|
|
96
|
+
* dependency pre-pass has read enough once both closers were seen, or once the body has begun
|
|
97
|
+
*/
|
|
98
|
+
const BODY_START = /<(Aliases|Extensions|UAObject|UAVariable|UADataType|UAReferenceType|UAObjectType|UAVariableType|UAMethod|UAView)[\s/>]/;
|
|
99
|
+
function headerComplete(text) {
|
|
100
|
+
return (text.includes("</Models>") && text.includes("</NamespaceUris>")) || BODY_START.test(text);
|
|
101
|
+
}
|
|
102
|
+
/** the `<UANodeSet ...>` opener up to the end of `</Models>` or `</NamespaceUris>`, whichever comes last */
|
|
103
|
+
function sliceHeader(xmlData, name) {
|
|
104
|
+
const indexStart = xmlData.match(/<UANodeSet/m)?.index;
|
|
105
|
+
const i1 = (xmlData.match(/<\/Models>/m)?.index || 0) + "</Models>".length;
|
|
106
|
+
const i2 = (xmlData.match(/<\/NamespaceUris>/m)?.index || 0) + "</NamespaceUris>".length;
|
|
107
|
+
const indexEnd = Math.max(i1, i2);
|
|
108
|
+
if (indexStart === undefined) {
|
|
109
|
+
throw new Error(`nodeset source ${name}: no <UANodeSet> element found`);
|
|
110
|
+
}
|
|
111
|
+
return xmlData.substring(indexStart, indexEnd);
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=nodeset_xml_header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeset_xml_header.js","sourceRoot":"","sources":["../../../api/loader/nodeset_xml_header.ts"],"names":[],"mappings":"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"}
|