@aircast-4g/mavlink 1.1.0 → 1.1.3
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/dist/cli.js +0 -0
- package/dist/{decoders/ardupilotmega.ts → dialects/ardupilotmega/decoder.js} +5 -14
- package/dist/{types/ardupilotmega/types.ts → dialects/ardupilotmega/types.d.ts} +1 -1
- package/dist/{decoders/common.ts → dialects/common/decoder.js} +5 -14
- package/dist/{types/common/types.ts → dialects/common/types.d.ts} +1 -1
- package/dist/{decoders/minimal.ts → dialects/minimal/decoder.js} +5 -14
- package/dist/{types/minimal/types.ts → dialects/minimal/types.d.ts} +1 -1
- package/dist/generator/generator.d.ts.map +1 -1
- package/dist/generator/generator.js +15 -22
- package/dist/generator/generator.js.map +1 -1
- package/dist/generator/template-engine.js +2 -2
- package/dist/parser/message-decoder.d.ts +19 -4
- package/dist/parser/message-decoder.d.ts.map +1 -1
- package/dist/parser/message-decoder.js +102 -243
- package/dist/parser/message-decoder.js.map +1 -1
- package/package.json +19 -27
- package/dist/batch-processor.d.ts +0 -17
- package/dist/batch-processor.d.ts.map +0 -1
- package/dist/batch-processor.js +0 -141
- package/dist/batch-processor.js.map +0 -1
- package/dist/cli-generate-decoders.d.ts +0 -4
- package/dist/cli-generate-decoders.d.ts.map +0 -1
- package/dist/cli-generate-decoders.js +0 -201
- package/dist/cli-generate-decoders.js.map +0 -1
- package/dist/generator.d.ts +0 -15
- package/dist/generator.d.ts.map +0 -1
- package/dist/generator.js +0 -92
- package/dist/generator.js.map +0 -1
- package/dist/parser/decoders/ardupilotmega-decoder.d.ts +0 -14
- package/dist/parser/decoders/ardupilotmega-decoder.d.ts.map +0 -1
- package/dist/parser/decoders/ardupilotmega-decoder.js +0 -11929
- package/dist/parser/decoders/ardupilotmega-decoder.js.map +0 -1
- package/dist/parser/decoders/common-decoder.d.ts +0 -14
- package/dist/parser/decoders/common-decoder.d.ts.map +0 -1
- package/dist/parser/decoders/common-decoder.js +0 -9097
- package/dist/parser/decoders/common-decoder.js.map +0 -1
- package/dist/parser/decoders/minimal-decoder.d.ts +0 -14
- package/dist/parser/decoders/minimal-decoder.d.ts.map +0 -1
- package/dist/parser/decoders/minimal-decoder.js +0 -66
- package/dist/parser/decoders/minimal-decoder.js.map +0 -1
- package/dist/parser/generated-decoders.d.ts +0 -15
- package/dist/parser/generated-decoders.d.ts.map +0 -1
- package/dist/parser/generated-decoders.js +0 -11938
- package/dist/parser/generated-decoders.js.map +0 -1
- package/dist/parser/test-decoder.d.ts +0 -2
- package/dist/parser/test-decoder.d.ts.map +0 -1
- package/dist/parser/test-decoder.js +0 -54
- package/dist/parser/test-decoder.js.map +0 -1
- package/dist/template-engine.d.ts +0 -13
- package/dist/template-engine.d.ts.map +0 -1
- package/dist/template-engine.js +0 -220
- package/dist/template-engine.js.map +0 -1
- package/dist/type-converter.d.ts +0 -15
- package/dist/type-converter.d.ts.map +0 -1
- package/dist/type-converter.js +0 -179
- package/dist/type-converter.js.map +0 -1
- package/dist/xml-parser.d.ts +0 -13
- package/dist/xml-parser.d.ts.map +0 -1
- package/dist/xml-parser.js +0 -170
- package/dist/xml-parser.js.map +0 -1
- /package/dist/{types/ardupilotmega/enums.ts → dialects/ardupilotmega/enums.d.ts} +0 -0
- /package/dist/{types/ardupilotmega/index.ts → dialects/ardupilotmega/index.d.ts} +0 -0
- /package/dist/{types/ardupilotmega/messages.ts → dialects/ardupilotmega/messages.d.ts} +0 -0
- /package/dist/{types/common/enums.ts → dialects/common/enums.d.ts} +0 -0
- /package/dist/{types/common/index.ts → dialects/common/index.d.ts} +0 -0
- /package/dist/{types/common/messages.ts → dialects/common/messages.d.ts} +0 -0
- /package/dist/{types/minimal/enums.ts → dialects/minimal/enums.d.ts} +0 -0
- /package/dist/{types/minimal/index.ts → dialects/minimal/index.d.ts} +0 -0
- /package/dist/{types/minimal/messages.ts → dialects/minimal/messages.d.ts} +0 -0
package/dist/template-engine.js
DELETED
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.TemplateEngine = void 0;
|
|
7
|
-
const handlebars_1 = __importDefault(require("handlebars"));
|
|
8
|
-
class TemplateEngine {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.templates = new Map();
|
|
11
|
-
this.initializeTemplates();
|
|
12
|
-
this.registerHelpers();
|
|
13
|
-
}
|
|
14
|
-
initializeTemplates() {
|
|
15
|
-
// Main types template
|
|
16
|
-
this.templates.set('types', handlebars_1.default.compile(`// Auto-generated TypeScript types for {{ dialectName }} dialect
|
|
17
|
-
// Generated from MAVLink XML definitions
|
|
18
|
-
|
|
19
|
-
export interface MAVLinkMessage<Content = unknown> {
|
|
20
|
-
timestamp: number;
|
|
21
|
-
system_id: number;
|
|
22
|
-
component_id: number;
|
|
23
|
-
type: string;
|
|
24
|
-
content: Content;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
{{#each enums}}
|
|
28
|
-
{{#each description}}
|
|
29
|
-
// {{ this }}
|
|
30
|
-
{{/each}}
|
|
31
|
-
export type {{ name }} =
|
|
32
|
-
{{#each values}}
|
|
33
|
-
| {{ value }}{{#if description}} // {{ name }} - {{ join description " " }}{{/if}}
|
|
34
|
-
{{/each}}
|
|
35
|
-
| number;
|
|
36
|
-
|
|
37
|
-
{{/each}}
|
|
38
|
-
`));
|
|
39
|
-
// Enums template
|
|
40
|
-
this.templates.set('enums', handlebars_1.default.compile(`// Auto-generated TypeScript enums for {{ dialectName }} dialect
|
|
41
|
-
|
|
42
|
-
{{#each enums}}
|
|
43
|
-
{{#each description}}
|
|
44
|
-
// {{ this }}
|
|
45
|
-
{{/each}}
|
|
46
|
-
export enum {{ name }}Enum {
|
|
47
|
-
{{#each values}}
|
|
48
|
-
{{#each description}}
|
|
49
|
-
// {{ this }}
|
|
50
|
-
{{/each}}
|
|
51
|
-
{{ name }} = {{ value }},
|
|
52
|
-
{{/each}}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
{{/each}}
|
|
56
|
-
`));
|
|
57
|
-
// Messages template
|
|
58
|
-
this.templates.set('messages', handlebars_1.default.compile(`// Auto-generated TypeScript message interfaces for {{ dialectName }} dialect
|
|
59
|
-
|
|
60
|
-
import { MAVLinkMessage } from './types';
|
|
61
|
-
import type {
|
|
62
|
-
{{#each enums}}
|
|
63
|
-
{{ name }},
|
|
64
|
-
{{/each}}
|
|
65
|
-
} from './types';
|
|
66
|
-
|
|
67
|
-
{{#each messages}}
|
|
68
|
-
{{#each description}}
|
|
69
|
-
// {{ this }}
|
|
70
|
-
{{/each}}
|
|
71
|
-
export interface Message{{ name }} {
|
|
72
|
-
{{#each fields}}
|
|
73
|
-
{{#each description}}
|
|
74
|
-
// {{ this }}
|
|
75
|
-
{{/each}}
|
|
76
|
-
{{ name }}{{#if optional}}?{{/if}}: {{ type }};
|
|
77
|
-
{{/each}}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
{{/each}}
|
|
81
|
-
|
|
82
|
-
// Message type map for type-safe message handling
|
|
83
|
-
export interface MessageTypeMap {
|
|
84
|
-
{{#each messages}}
|
|
85
|
-
{{ originalName }}: Message{{ name }};
|
|
86
|
-
{{/each}}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Union type of all message types
|
|
90
|
-
export type AnyMessage =
|
|
91
|
-
{{#each messages}}
|
|
92
|
-
| MAVLinkMessage<Message{{ name }}>
|
|
93
|
-
{{/each}};
|
|
94
|
-
|
|
95
|
-
// Type guard functions
|
|
96
|
-
{{#each messages}}
|
|
97
|
-
export function is{{ name }}(msg: MAVLinkMessage): msg is MAVLinkMessage<Message{{ name }}> {
|
|
98
|
-
return msg.type === '{{ originalName }}';
|
|
99
|
-
}
|
|
100
|
-
{{/each}}
|
|
101
|
-
`));
|
|
102
|
-
// Index template
|
|
103
|
-
this.templates.set('index', handlebars_1.default.compile(`// Auto-generated TypeScript index file
|
|
104
|
-
// Exports all dialect types
|
|
105
|
-
|
|
106
|
-
export * from './types';
|
|
107
|
-
export * from './enums';
|
|
108
|
-
export * from './messages';
|
|
109
|
-
`));
|
|
110
|
-
// Single file template
|
|
111
|
-
this.templates.set('single', handlebars_1.default.compile(`// Auto-generated TypeScript types for {{ dialectName }} dialect
|
|
112
|
-
// Generated from MAVLink XML definitions
|
|
113
|
-
|
|
114
|
-
export interface MAVLinkMessage<Content = unknown> {
|
|
115
|
-
timestamp: number;
|
|
116
|
-
system_id: number;
|
|
117
|
-
component_id: number;
|
|
118
|
-
type: string;
|
|
119
|
-
content: Content;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Enums
|
|
123
|
-
{{#each enums}}
|
|
124
|
-
{{#each description}}
|
|
125
|
-
// {{ this }}
|
|
126
|
-
{{/each}}
|
|
127
|
-
export type {{ name }} =
|
|
128
|
-
{{#each values}}
|
|
129
|
-
| {{ value }}{{#if description}} // {{ name }} - {{ join description " " }}{{/if}}
|
|
130
|
-
{{/each}}
|
|
131
|
-
| number;
|
|
132
|
-
|
|
133
|
-
{{/each}}
|
|
134
|
-
|
|
135
|
-
// Messages
|
|
136
|
-
{{#each messages}}
|
|
137
|
-
{{#each description}}
|
|
138
|
-
// {{ this }}
|
|
139
|
-
{{/each}}
|
|
140
|
-
export interface Message{{ name }} {
|
|
141
|
-
{{#each fields}}
|
|
142
|
-
{{#each description}}
|
|
143
|
-
// {{ this }}
|
|
144
|
-
{{/each}}
|
|
145
|
-
{{ name }}{{#if optional}}?{{/if}}: {{ type }};
|
|
146
|
-
{{/each}}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
{{/each}}
|
|
150
|
-
|
|
151
|
-
// Message type map for type-safe message handling
|
|
152
|
-
export interface MessageTypeMap {
|
|
153
|
-
{{#each messages}}
|
|
154
|
-
{{ originalName }}: Message{{ name }};
|
|
155
|
-
{{/each}}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Union type of all message types
|
|
159
|
-
export type AnyMessage =
|
|
160
|
-
{{#each messages}}
|
|
161
|
-
| MAVLinkMessage<Message{{ name }}>
|
|
162
|
-
{{/each}};
|
|
163
|
-
|
|
164
|
-
// Type guard functions
|
|
165
|
-
{{#each messages}}
|
|
166
|
-
export function is{{ name }}(msg: MAVLinkMessage): msg is MAVLinkMessage<Message{{ name }}> {
|
|
167
|
-
return msg.type === '{{ originalName }}';
|
|
168
|
-
}
|
|
169
|
-
{{/each}}
|
|
170
|
-
`));
|
|
171
|
-
}
|
|
172
|
-
registerHelpers() {
|
|
173
|
-
handlebars_1.default.registerHelper('join', (array, separator) => {
|
|
174
|
-
return array.join(separator);
|
|
175
|
-
});
|
|
176
|
-
handlebars_1.default.registerHelper('eq', (a, b) => {
|
|
177
|
-
return a === b;
|
|
178
|
-
});
|
|
179
|
-
handlebars_1.default.registerHelper('ne', (a, b) => {
|
|
180
|
-
return a !== b;
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
generateTypes(dialect) {
|
|
184
|
-
const template = this.templates.get('types');
|
|
185
|
-
if (!template) {
|
|
186
|
-
throw new Error('Types template not found');
|
|
187
|
-
}
|
|
188
|
-
return template(dialect);
|
|
189
|
-
}
|
|
190
|
-
generateEnums(dialect) {
|
|
191
|
-
const template = this.templates.get('enums');
|
|
192
|
-
if (!template) {
|
|
193
|
-
throw new Error('Enums template not found');
|
|
194
|
-
}
|
|
195
|
-
return template(dialect);
|
|
196
|
-
}
|
|
197
|
-
generateMessages(dialect) {
|
|
198
|
-
const template = this.templates.get('messages');
|
|
199
|
-
if (!template) {
|
|
200
|
-
throw new Error('Messages template not found');
|
|
201
|
-
}
|
|
202
|
-
return template(dialect);
|
|
203
|
-
}
|
|
204
|
-
generateIndex(dialect, includeEnums = false) {
|
|
205
|
-
const template = this.templates.get('index');
|
|
206
|
-
if (!template) {
|
|
207
|
-
throw new Error('Index template not found');
|
|
208
|
-
}
|
|
209
|
-
return template({ ...dialect, includeEnums });
|
|
210
|
-
}
|
|
211
|
-
generateSingle(dialect) {
|
|
212
|
-
const template = this.templates.get('single');
|
|
213
|
-
if (!template) {
|
|
214
|
-
throw new Error('Single template not found');
|
|
215
|
-
}
|
|
216
|
-
return template(dialect);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
exports.TemplateEngine = TemplateEngine;
|
|
220
|
-
//# sourceMappingURL=template-engine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"template-engine.js","sourceRoot":"","sources":["../src/template-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/type-converter.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { MAVLinkDialectDefinition, TypeScriptDialect } from './types';
|
|
2
|
-
export declare class TypeConverter {
|
|
3
|
-
private static readonly MAVLINK_TO_TS_TYPES;
|
|
4
|
-
convert(definition: MAVLinkDialectDefinition, dialectName: string): TypeScriptDialect;
|
|
5
|
-
private convertEnum;
|
|
6
|
-
private convertMessage;
|
|
7
|
-
private convertField;
|
|
8
|
-
private convertMessageName;
|
|
9
|
-
private convertFieldName;
|
|
10
|
-
private convertFieldType;
|
|
11
|
-
private convertSingleType;
|
|
12
|
-
private parseEnumValue;
|
|
13
|
-
private parseDescription;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=type-converter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"type-converter.d.ts","sourceRoot":"","sources":["../src/type-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EAIxB,iBAAiB,EAIlB,MAAM,SAAS,CAAC;AAEjB,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAazC;IAEF,OAAO,CAAC,UAAU,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB;IA8BrF,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,gBAAgB;CAQzB"}
|
package/dist/type-converter.js
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TypeConverter = void 0;
|
|
4
|
-
class TypeConverter {
|
|
5
|
-
convert(definition, dialectName) {
|
|
6
|
-
const tsDialect = {
|
|
7
|
-
dialectName,
|
|
8
|
-
enums: [],
|
|
9
|
-
messages: []
|
|
10
|
-
};
|
|
11
|
-
// Convert enums
|
|
12
|
-
if (definition.enums) {
|
|
13
|
-
for (const enumDef of definition.enums) {
|
|
14
|
-
const tsEnum = this.convertEnum(enumDef);
|
|
15
|
-
if (tsEnum) {
|
|
16
|
-
tsDialect.enums.push(tsEnum);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
// Convert messages
|
|
21
|
-
if (definition.messages) {
|
|
22
|
-
for (const messageDef of definition.messages) {
|
|
23
|
-
const tsMessage = this.convertMessage(messageDef, tsDialect.enums);
|
|
24
|
-
if (tsMessage) {
|
|
25
|
-
tsDialect.messages.push(tsMessage);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return tsDialect;
|
|
30
|
-
}
|
|
31
|
-
convertEnum(enumDef) {
|
|
32
|
-
if (!enumDef || !enumDef.name || !enumDef.entries || enumDef.entries.length === 0) {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
const tsEnum = {
|
|
36
|
-
name: enumDef.name,
|
|
37
|
-
description: this.parseDescription(enumDef.description || ''),
|
|
38
|
-
bitmask: enumDef.bitmask || false,
|
|
39
|
-
values: []
|
|
40
|
-
};
|
|
41
|
-
for (const entry of enumDef.entries) {
|
|
42
|
-
const value = this.parseEnumValue(entry.value);
|
|
43
|
-
if (value !== null) {
|
|
44
|
-
tsEnum.values.push({
|
|
45
|
-
name: entry.name,
|
|
46
|
-
value,
|
|
47
|
-
description: this.parseDescription(entry.description || '')
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return tsEnum;
|
|
52
|
-
}
|
|
53
|
-
convertMessage(messageDef, enums) {
|
|
54
|
-
if (!messageDef.name || !messageDef.fields) {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
const tsMessage = {
|
|
58
|
-
name: this.convertMessageName(messageDef.name),
|
|
59
|
-
originalName: messageDef.name,
|
|
60
|
-
description: this.parseDescription(messageDef.description || ''),
|
|
61
|
-
fields: []
|
|
62
|
-
};
|
|
63
|
-
for (const fieldDef of messageDef.fields) {
|
|
64
|
-
const tsField = this.convertField(fieldDef, enums);
|
|
65
|
-
if (tsField) {
|
|
66
|
-
tsMessage.fields.push(tsField);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return tsMessage;
|
|
70
|
-
}
|
|
71
|
-
convertField(fieldDef, enums) {
|
|
72
|
-
if (!fieldDef.name || !fieldDef.type) {
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
const tsField = {
|
|
76
|
-
name: this.convertFieldName(fieldDef.name),
|
|
77
|
-
type: this.convertFieldType(fieldDef.type, fieldDef.enum, enums),
|
|
78
|
-
description: this.parseDescription(fieldDef.description || ''),
|
|
79
|
-
optional: fieldDef.extension || false
|
|
80
|
-
};
|
|
81
|
-
return tsField;
|
|
82
|
-
}
|
|
83
|
-
convertMessageName(name) {
|
|
84
|
-
// Convert UPPER_CASE to PascalCase
|
|
85
|
-
return name.split('_')
|
|
86
|
-
.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
87
|
-
.join('');
|
|
88
|
-
}
|
|
89
|
-
convertFieldName(name) {
|
|
90
|
-
// Convert snake_case to PascalCase
|
|
91
|
-
return name.split('_')
|
|
92
|
-
.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
93
|
-
.join('');
|
|
94
|
-
}
|
|
95
|
-
convertFieldType(type, enumName, enums) {
|
|
96
|
-
// Handle arrays
|
|
97
|
-
const arrayMatch = type.match(/^(.+?)\[(\d+)\]$/);
|
|
98
|
-
if (arrayMatch) {
|
|
99
|
-
const elementType = arrayMatch[1];
|
|
100
|
-
// Handle string arrays (char arrays)
|
|
101
|
-
if (elementType === 'char') {
|
|
102
|
-
return 'string';
|
|
103
|
-
}
|
|
104
|
-
// Handle other arrays
|
|
105
|
-
const tsElementType = this.convertSingleType(elementType, enumName, enums);
|
|
106
|
-
return `${tsElementType}[]`;
|
|
107
|
-
}
|
|
108
|
-
return this.convertSingleType(type, enumName, enums);
|
|
109
|
-
}
|
|
110
|
-
convertSingleType(type, enumName, enums) {
|
|
111
|
-
// If there's an enum specified, use it
|
|
112
|
-
if (enumName) {
|
|
113
|
-
const enumExists = enums.find(e => e.name === enumName);
|
|
114
|
-
if (enumExists) {
|
|
115
|
-
return enumName;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
// Check if it's a basic type
|
|
119
|
-
const tsType = TypeConverter.MAVLINK_TO_TS_TYPES[type];
|
|
120
|
-
if (tsType) {
|
|
121
|
-
return tsType;
|
|
122
|
-
}
|
|
123
|
-
// Check if it's an enum type
|
|
124
|
-
const enumType = enums.find(e => e.name === type);
|
|
125
|
-
if (enumType) {
|
|
126
|
-
return type;
|
|
127
|
-
}
|
|
128
|
-
// Default to unknown
|
|
129
|
-
return 'unknown';
|
|
130
|
-
}
|
|
131
|
-
parseEnumValue(value) {
|
|
132
|
-
if (!value)
|
|
133
|
-
return null;
|
|
134
|
-
// Handle binary values
|
|
135
|
-
if (value.startsWith('0b')) {
|
|
136
|
-
return parseInt(value.slice(2), 2);
|
|
137
|
-
}
|
|
138
|
-
// Handle hex values
|
|
139
|
-
if (value.startsWith('0x')) {
|
|
140
|
-
return parseInt(value.slice(2), 16);
|
|
141
|
-
}
|
|
142
|
-
// Handle power operations
|
|
143
|
-
if (value.includes('**')) {
|
|
144
|
-
const parts = value.split('**');
|
|
145
|
-
if (parts.length === 2) {
|
|
146
|
-
const base = parseInt(parts[0]);
|
|
147
|
-
const exp = parseInt(parts[1]);
|
|
148
|
-
return Math.pow(base, exp);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
// Handle regular integers
|
|
152
|
-
const intValue = parseInt(value);
|
|
153
|
-
return isNaN(intValue) ? null : intValue;
|
|
154
|
-
}
|
|
155
|
-
parseDescription(description) {
|
|
156
|
-
if (!description)
|
|
157
|
-
return [];
|
|
158
|
-
return description
|
|
159
|
-
.split('\n')
|
|
160
|
-
.map(line => line.trim())
|
|
161
|
-
.filter(line => line.length > 0);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
exports.TypeConverter = TypeConverter;
|
|
165
|
-
TypeConverter.MAVLINK_TO_TS_TYPES = {
|
|
166
|
-
'double': 'number',
|
|
167
|
-
'uint64_t': 'number',
|
|
168
|
-
'int64_t': 'number',
|
|
169
|
-
'float': 'number',
|
|
170
|
-
'uint32_t': 'number',
|
|
171
|
-
'int32_t': 'number',
|
|
172
|
-
'uint16_t': 'number',
|
|
173
|
-
'int16_t': 'number',
|
|
174
|
-
'uint8_t': 'number',
|
|
175
|
-
'int8_t': 'number',
|
|
176
|
-
'char': 'string',
|
|
177
|
-
'uint8_t_mavlink_version': 'number'
|
|
178
|
-
};
|
|
179
|
-
//# sourceMappingURL=type-converter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"type-converter.js","sourceRoot":"","sources":["../src/type-converter.ts"],"names":[],"mappings":";;;AAWA,MAAa,aAAa;IAgBxB,OAAO,CAAC,UAAoC,EAAE,WAAmB;QAC/D,MAAM,SAAS,GAAsB;YACnC,WAAW;YACX,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,gBAAgB;QAChB,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACzC,IAAI,MAAM,EAAE,CAAC;oBACX,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;gBACnE,IAAI,SAAS,EAAE,CAAC;oBACd,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,WAAW,CAAC,OAAuB;QACzC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAmB;YAC7B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;YAC7D,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;YACjC,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK;oBACL,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;iBAC5D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,cAAc,CAAC,UAA6B,EAAE,KAAuB;QAC3E,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAsB;YACnC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC;YAC9C,YAAY,EAAE,UAAU,CAAC,IAAI;YAC7B,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC;YAChE,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,OAAO,EAAE,CAAC;gBACZ,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,YAAY,CAAC,QAAyB,EAAE,KAAuB;QACrE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAoB;YAC/B,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC1C,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;YAChE,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;YAC9D,QAAQ,EAAE,QAAQ,CAAC,SAAS,IAAI,KAAK;SACtC,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,kBAAkB,CAAC,IAAY;QACrC,mCAAmC;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACnB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aACvE,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACnC,mCAAmC;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACnB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aACvE,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;IAEO,gBAAgB,CAAC,IAAY,EAAE,QAA4B,EAAE,KAAuB;QAC1F,gBAAgB;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAClD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAElC,qCAAqC;YACrC,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;gBAC3B,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,sBAAsB;YACtB,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC3E,OAAO,GAAG,aAAa,IAAI,CAAC;QAC9B,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAEO,iBAAiB,CAAC,IAAY,EAAE,QAA4B,EAAE,KAAuB;QAC3F,uCAAuC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YACxD,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAClD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qBAAqB;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,cAAc,CAAC,KAAa;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,uBAAuB;QACvB,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,oBAAoB;QACpB,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,0BAA0B;QAC1B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAEO,gBAAgB,CAAC,WAAmB;QAC1C,IAAI,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QAE5B,OAAO,WAAW;aACf,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;;AA1MH,sCA2MC;AA1MyB,iCAAmB,GAA2B;IACpE,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,QAAQ;IACnB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,QAAQ;IAChB,yBAAyB,EAAE,QAAQ;CACpC,CAAC"}
|
package/dist/xml-parser.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { MAVLinkDialectDefinition } from './types';
|
|
2
|
-
export declare class XMLParser {
|
|
3
|
-
private processedUrls;
|
|
4
|
-
parseFromURL(url: string): Promise<MAVLinkDialectDefinition>;
|
|
5
|
-
parseFromFile(filePath: string): Promise<MAVLinkDialectDefinition>;
|
|
6
|
-
private parseXML;
|
|
7
|
-
private processDefinition;
|
|
8
|
-
private resolveIncludeUrl;
|
|
9
|
-
private processEnum;
|
|
10
|
-
private processMessage;
|
|
11
|
-
reset(): void;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=xml-parser.d.ts.map
|
package/dist/xml-parser.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xml-parser.d.ts","sourceRoot":"","sources":["../src/xml-parser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAA2F,MAAM,SAAS,CAAC;AAE5I,qBAAa,SAAS;IACpB,OAAO,CAAC,aAAa,CAAqB;IAEpC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAS5D,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;YAK1D,QAAQ;YAkBR,iBAAiB;IA4D/B,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,cAAc;IAsCtB,KAAK,IAAI,IAAI;CAGd"}
|
package/dist/xml-parser.js
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.XMLParser = void 0;
|
|
7
|
-
const xml2js_1 = require("xml2js");
|
|
8
|
-
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
9
|
-
const fs_1 = require("fs");
|
|
10
|
-
class XMLParser {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.processedUrls = new Set();
|
|
13
|
-
}
|
|
14
|
-
async parseFromURL(url) {
|
|
15
|
-
const response = await (0, node_fetch_1.default)(url);
|
|
16
|
-
if (!response.ok) {
|
|
17
|
-
throw new Error(`Failed to fetch ${url}: ${response.statusText}`);
|
|
18
|
-
}
|
|
19
|
-
const xmlContent = await response.text();
|
|
20
|
-
return this.parseXML(xmlContent, url);
|
|
21
|
-
}
|
|
22
|
-
async parseFromFile(filePath) {
|
|
23
|
-
const xmlContent = await fs_1.promises.readFile(filePath, 'utf-8');
|
|
24
|
-
return this.parseXML(xmlContent, filePath);
|
|
25
|
-
}
|
|
26
|
-
async parseXML(xmlContent, source) {
|
|
27
|
-
return new Promise((resolve, reject) => {
|
|
28
|
-
(0, xml2js_1.parseString)(xmlContent, { explicitArray: false }, async (err, result) => {
|
|
29
|
-
if (err) {
|
|
30
|
-
reject(new Error(`Failed to parse XML from ${source}: ${err.message}`));
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
try {
|
|
34
|
-
const definition = await this.processDefinition(result.mavlink, source);
|
|
35
|
-
resolve(definition);
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
reject(error);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
async processDefinition(mavlinkData, source) {
|
|
44
|
-
const definition = {
|
|
45
|
-
version: mavlinkData.version,
|
|
46
|
-
dialect: mavlinkData.dialect ? parseInt(mavlinkData.dialect) : undefined,
|
|
47
|
-
includes: [],
|
|
48
|
-
enums: [],
|
|
49
|
-
messages: []
|
|
50
|
-
};
|
|
51
|
-
// Process includes
|
|
52
|
-
if (mavlinkData.include) {
|
|
53
|
-
const includes = Array.isArray(mavlinkData.include) ? mavlinkData.include : [mavlinkData.include];
|
|
54
|
-
for (const include of includes) {
|
|
55
|
-
const includeUrl = this.resolveIncludeUrl(include, source);
|
|
56
|
-
if (!this.processedUrls.has(includeUrl)) {
|
|
57
|
-
this.processedUrls.add(includeUrl);
|
|
58
|
-
try {
|
|
59
|
-
const includedDefinition = await this.parseFromURL(includeUrl);
|
|
60
|
-
// Merge included definitions
|
|
61
|
-
if (includedDefinition.enums) {
|
|
62
|
-
definition.enums.push(...includedDefinition.enums);
|
|
63
|
-
}
|
|
64
|
-
if (includedDefinition.messages) {
|
|
65
|
-
definition.messages.push(...includedDefinition.messages);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
console.warn(`Warning: Failed to process include ${includeUrl}:`, error);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// Process enums
|
|
75
|
-
if (mavlinkData.enums && mavlinkData.enums.enum) {
|
|
76
|
-
const enums = Array.isArray(mavlinkData.enums.enum) ? mavlinkData.enums.enum : [mavlinkData.enums.enum];
|
|
77
|
-
for (const enumData of enums) {
|
|
78
|
-
const enumDef = this.processEnum(enumData);
|
|
79
|
-
if (enumDef) {
|
|
80
|
-
definition.enums.push(enumDef);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
// Process messages
|
|
85
|
-
if (mavlinkData.messages && mavlinkData.messages.message) {
|
|
86
|
-
const messages = Array.isArray(mavlinkData.messages.message) ? mavlinkData.messages.message : [mavlinkData.messages.message];
|
|
87
|
-
for (const messageData of messages) {
|
|
88
|
-
const messageDef = this.processMessage(messageData);
|
|
89
|
-
if (messageDef) {
|
|
90
|
-
definition.messages.push(messageDef);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return definition;
|
|
95
|
-
}
|
|
96
|
-
resolveIncludeUrl(include, source) {
|
|
97
|
-
if (include.startsWith('http')) {
|
|
98
|
-
return include;
|
|
99
|
-
}
|
|
100
|
-
// If source is a URL, resolve relative to it
|
|
101
|
-
if (source.startsWith('http')) {
|
|
102
|
-
const url = new URL(source);
|
|
103
|
-
url.pathname = url.pathname.replace(/[^/]*$/, include);
|
|
104
|
-
return url.toString();
|
|
105
|
-
}
|
|
106
|
-
// Otherwise, assume it's a file path
|
|
107
|
-
return include;
|
|
108
|
-
}
|
|
109
|
-
processEnum(enumData) {
|
|
110
|
-
if (!enumData.$ || !enumData.$.name) {
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
const enumDef = {
|
|
114
|
-
name: enumData.$.name,
|
|
115
|
-
description: enumData.description || '',
|
|
116
|
-
bitmask: enumData.$.bitmask === 'true',
|
|
117
|
-
entries: []
|
|
118
|
-
};
|
|
119
|
-
if (enumData.entry) {
|
|
120
|
-
const entries = Array.isArray(enumData.entry) ? enumData.entry : [enumData.entry];
|
|
121
|
-
for (const entry of entries) {
|
|
122
|
-
if (entry.$ && entry.$.name && entry.$.value !== undefined) {
|
|
123
|
-
enumDef.entries.push({
|
|
124
|
-
name: entry.$.name,
|
|
125
|
-
value: entry.$.value,
|
|
126
|
-
description: entry.description || entry._ || ''
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return enumDef;
|
|
132
|
-
}
|
|
133
|
-
processMessage(messageData) {
|
|
134
|
-
if (!messageData.$ || !messageData.$.name || !messageData.$.id) {
|
|
135
|
-
return null;
|
|
136
|
-
}
|
|
137
|
-
const messageDef = {
|
|
138
|
-
id: parseInt(messageData.$.id),
|
|
139
|
-
name: messageData.$.name,
|
|
140
|
-
description: messageData.description || '',
|
|
141
|
-
fields: []
|
|
142
|
-
};
|
|
143
|
-
if (messageData.field) {
|
|
144
|
-
const fields = Array.isArray(messageData.field) ? messageData.field : [messageData.field];
|
|
145
|
-
let inExtensions = false;
|
|
146
|
-
for (const field of fields) {
|
|
147
|
-
if (typeof field === 'string' && field === 'extensions') {
|
|
148
|
-
inExtensions = true;
|
|
149
|
-
continue;
|
|
150
|
-
}
|
|
151
|
-
if (typeof field === 'object' && field.$ && field.$.name && field.$.type) {
|
|
152
|
-
const fieldDef = {
|
|
153
|
-
name: field.$.name,
|
|
154
|
-
type: field.$.type,
|
|
155
|
-
enum: field.$.enum,
|
|
156
|
-
description: field.description || field._ || '',
|
|
157
|
-
extension: inExtensions
|
|
158
|
-
};
|
|
159
|
-
messageDef.fields.push(fieldDef);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return messageDef;
|
|
164
|
-
}
|
|
165
|
-
reset() {
|
|
166
|
-
this.processedUrls.clear();
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
exports.XMLParser = XMLParser;
|
|
170
|
-
//# sourceMappingURL=xml-parser.js.map
|
package/dist/xml-parser.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xml-parser.js","sourceRoot":"","sources":["../src/xml-parser.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|