@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/batch-processor.js
DELETED
|
@@ -1,141 +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.BatchProcessor = void 0;
|
|
7
|
-
const fs_1 = require("fs");
|
|
8
|
-
const path_1 = require("path");
|
|
9
|
-
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
10
|
-
const generator_1 = require("./generator");
|
|
11
|
-
class BatchProcessor {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.generator = new generator_1.MAVLinkGenerator();
|
|
14
|
-
}
|
|
15
|
-
async processAllDialects(options) {
|
|
16
|
-
console.log('Fetching list of available dialects...');
|
|
17
|
-
// Get list of XML files from GitHub API
|
|
18
|
-
const response = await (0, node_fetch_1.default)(BatchProcessor.MAVLINK_DIALECTS_URL);
|
|
19
|
-
if (!response.ok) {
|
|
20
|
-
throw new Error(`Failed to fetch dialects list: ${response.statusText}`);
|
|
21
|
-
}
|
|
22
|
-
const files = await response.json();
|
|
23
|
-
const xmlFiles = files.filter(file => file.name.endsWith('.xml'));
|
|
24
|
-
console.log(`Found ${xmlFiles.length} dialect files to process`);
|
|
25
|
-
// Create main output directory
|
|
26
|
-
await fs_1.promises.mkdir(options.outputDir, { recursive: true });
|
|
27
|
-
// Process each dialect
|
|
28
|
-
const processedDialects = [];
|
|
29
|
-
for (const file of xmlFiles) {
|
|
30
|
-
const dialectName = file.name.replace('.xml', '').toLowerCase().replace('_', '');
|
|
31
|
-
const dialectOutputDir = (0, path_1.join)(options.outputDir, dialectName);
|
|
32
|
-
console.log(`Processing ${file.name}...`);
|
|
33
|
-
try {
|
|
34
|
-
const generationOptions = {
|
|
35
|
-
dialectName,
|
|
36
|
-
outputFormat: options.dialectFormat,
|
|
37
|
-
includeEnums: options.includeEnums,
|
|
38
|
-
includeTypeGuards: options.includeTypeGuards
|
|
39
|
-
};
|
|
40
|
-
await this.generator.generateFromURL(file.download_url, dialectOutputDir, generationOptions);
|
|
41
|
-
processedDialects.push(dialectName);
|
|
42
|
-
// Reset parser state for next dialect
|
|
43
|
-
this.generator.reset();
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
console.error(`Failed to process ${file.name}:`, error);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
// Generate main index file
|
|
50
|
-
await this.generateMainIndex(options.outputDir, processedDialects);
|
|
51
|
-
console.log(`Successfully processed ${processedDialects.length} dialects`);
|
|
52
|
-
}
|
|
53
|
-
async processSpecificDialects(dialectNames, options) {
|
|
54
|
-
console.log(`Processing ${dialectNames.length} specific dialects...`);
|
|
55
|
-
// Create main output directory
|
|
56
|
-
await fs_1.promises.mkdir(options.outputDir, { recursive: true });
|
|
57
|
-
const processedDialects = [];
|
|
58
|
-
for (const dialectName of dialectNames) {
|
|
59
|
-
const xmlFileName = `${dialectName}.xml`;
|
|
60
|
-
const dialectUrl = `${BatchProcessor.MAVLINK_RAW_BASE_URL}/${xmlFileName}`;
|
|
61
|
-
const dialectOutputDir = (0, path_1.join)(options.outputDir, dialectName.toLowerCase());
|
|
62
|
-
console.log(`Processing ${dialectName}...`);
|
|
63
|
-
try {
|
|
64
|
-
const generationOptions = {
|
|
65
|
-
dialectName: dialectName.toLowerCase(),
|
|
66
|
-
outputFormat: options.dialectFormat,
|
|
67
|
-
includeEnums: options.includeEnums,
|
|
68
|
-
includeTypeGuards: options.includeTypeGuards
|
|
69
|
-
};
|
|
70
|
-
await this.generator.generateFromURL(dialectUrl, dialectOutputDir, generationOptions);
|
|
71
|
-
processedDialects.push(dialectName.toLowerCase());
|
|
72
|
-
// Reset parser state for next dialect
|
|
73
|
-
this.generator.reset();
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
console.error(`Failed to process ${dialectName}:`, error);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
// Generate main index file
|
|
80
|
-
await this.generateMainIndex(options.outputDir, processedDialects);
|
|
81
|
-
console.log(`Successfully processed ${processedDialects.length} dialects`);
|
|
82
|
-
}
|
|
83
|
-
async generateMainIndex(outputDir, dialectNames) {
|
|
84
|
-
const indexContent = `// Auto-generated TypeScript dialects index
|
|
85
|
-
// Exports all available dialects
|
|
86
|
-
|
|
87
|
-
${dialectNames.map(name => `export * as ${name} from './${name}';`).join('\n')}
|
|
88
|
-
|
|
89
|
-
// Convenience re-exports
|
|
90
|
-
export { MAVLinkMessage, MessageTypeMap, AnyMessage } from './common/types';
|
|
91
|
-
`;
|
|
92
|
-
await fs_1.promises.writeFile((0, path_1.join)(outputDir, 'index.ts'), indexContent);
|
|
93
|
-
console.log(`Generated main index file with ${dialectNames.length} dialects`);
|
|
94
|
-
}
|
|
95
|
-
async generatePackageJson(outputDir, version = '1.0.0') {
|
|
96
|
-
const packageJson = {
|
|
97
|
-
name: 'mavlink-types',
|
|
98
|
-
version,
|
|
99
|
-
description: 'Auto-generated TypeScript types for MAVLink dialects',
|
|
100
|
-
main: 'index.js',
|
|
101
|
-
types: 'index.d.ts',
|
|
102
|
-
files: ['**/*.ts', '**/*.js', '**/*.d.ts'],
|
|
103
|
-
keywords: ['mavlink', 'typescript', 'types', 'drone', 'autopilot'],
|
|
104
|
-
license: 'MIT',
|
|
105
|
-
repository: {
|
|
106
|
-
type: 'git',
|
|
107
|
-
url: 'https://github.com/mavlink/mavlink'
|
|
108
|
-
},
|
|
109
|
-
scripts: {
|
|
110
|
-
build: 'tsc',
|
|
111
|
-
prepublishOnly: 'npm run build'
|
|
112
|
-
},
|
|
113
|
-
devDependencies: {
|
|
114
|
-
typescript: '^5.0.0'
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
await fs_1.promises.writeFile((0, path_1.join)(outputDir, 'package.json'), JSON.stringify(packageJson, null, 2));
|
|
118
|
-
// Also generate a basic tsconfig.json
|
|
119
|
-
const tsConfig = {
|
|
120
|
-
compilerOptions: {
|
|
121
|
-
target: 'ES2020',
|
|
122
|
-
module: 'commonjs',
|
|
123
|
-
declaration: true,
|
|
124
|
-
outDir: './dist',
|
|
125
|
-
rootDir: './',
|
|
126
|
-
strict: true,
|
|
127
|
-
esModuleInterop: true,
|
|
128
|
-
skipLibCheck: true,
|
|
129
|
-
forceConsistentCasingInFileNames: true
|
|
130
|
-
},
|
|
131
|
-
include: ['**/*.ts'],
|
|
132
|
-
exclude: ['node_modules', 'dist']
|
|
133
|
-
};
|
|
134
|
-
await fs_1.promises.writeFile((0, path_1.join)(outputDir, 'tsconfig.json'), JSON.stringify(tsConfig, null, 2));
|
|
135
|
-
console.log('Generated package.json and tsconfig.json');
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
exports.BatchProcessor = BatchProcessor;
|
|
139
|
-
BatchProcessor.MAVLINK_DIALECTS_URL = 'https://api.github.com/repos/mavlink/mavlink/contents/message_definitions/v1.0';
|
|
140
|
-
BatchProcessor.MAVLINK_RAW_BASE_URL = 'https://raw.githubusercontent.com/mavlink/mavlink/master/message_definitions/v1.0';
|
|
141
|
-
//# sourceMappingURL=batch-processor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batch-processor.js","sourceRoot":"","sources":["../src/batch-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-generate-decoders.d.ts","sourceRoot":"","sources":["../src/cli-generate-decoders.ts"],"names":[],"mappings":";AAsHA,iBAAe,gBAAgB,kBAmH9B;AAeD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.generateDecoders = generateDecoders;
|
|
5
|
-
const fs_1 = require("fs");
|
|
6
|
-
const path_1 = require("path");
|
|
7
|
-
const xml_parser_1 = require("./generator/xml-parser");
|
|
8
|
-
const DIALECT_CONFIGS = [
|
|
9
|
-
{
|
|
10
|
-
dialectName: 'common',
|
|
11
|
-
xmlSource: 'https://raw.githubusercontent.com/mavlink/mavlink/master/message_definitions/v1.0/common.xml',
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
dialectName: 'ardupilotmega',
|
|
15
|
-
xmlSource: 'https://raw.githubusercontent.com/mavlink/mavlink/master/message_definitions/v1.0/ardupilotmega.xml',
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
dialectName: 'minimal',
|
|
19
|
-
xmlSource: 'https://raw.githubusercontent.com/mavlink/mavlink/master/message_definitions/v1.0/minimal.xml',
|
|
20
|
-
}
|
|
21
|
-
];
|
|
22
|
-
function convertToDecoderDefinition(rawMessage) {
|
|
23
|
-
const fields = [];
|
|
24
|
-
for (const field of rawMessage.fields || []) {
|
|
25
|
-
let fieldType = field.type;
|
|
26
|
-
let arrayLength;
|
|
27
|
-
// Handle array types like uint8_t[4]
|
|
28
|
-
const arrayMatch = fieldType.match(/^([^[]+)\[(\d+)\]$/);
|
|
29
|
-
if (arrayMatch) {
|
|
30
|
-
fieldType = arrayMatch[1];
|
|
31
|
-
arrayLength = parseInt(arrayMatch[2]);
|
|
32
|
-
}
|
|
33
|
-
fields.push({
|
|
34
|
-
name: field.name,
|
|
35
|
-
type: fieldType,
|
|
36
|
-
arrayLength,
|
|
37
|
-
extension: field.extension
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
id: rawMessage.id,
|
|
42
|
-
name: rawMessage.name,
|
|
43
|
-
fields
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
function generateDecoderCode(dialectName, messages) {
|
|
47
|
-
let code = `// Auto-generated decoder definitions for ${dialectName} dialect
|
|
48
|
-
// Generated from MAVLink XML definitions
|
|
49
|
-
|
|
50
|
-
interface MessageDefinition {
|
|
51
|
-
id: number;
|
|
52
|
-
name: string;
|
|
53
|
-
fields: FieldDefinition[];
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
interface FieldDefinition {
|
|
57
|
-
name: string;
|
|
58
|
-
type: string;
|
|
59
|
-
arrayLength?: number;
|
|
60
|
-
extension?: boolean;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export const ${dialectName.toUpperCase()}_MESSAGE_DEFINITIONS: MessageDefinition[] = [
|
|
64
|
-
`;
|
|
65
|
-
for (const message of messages) {
|
|
66
|
-
code += ` {\n`;
|
|
67
|
-
code += ` id: ${message.id},\n`;
|
|
68
|
-
code += ` name: '${message.name}',\n`;
|
|
69
|
-
code += ` fields: [\n`;
|
|
70
|
-
for (const field of message.fields) {
|
|
71
|
-
code += ` {\n`;
|
|
72
|
-
code += ` name: '${field.name}',\n`;
|
|
73
|
-
code += ` type: '${field.type}',\n`;
|
|
74
|
-
if (field.arrayLength) {
|
|
75
|
-
code += ` arrayLength: ${field.arrayLength},\n`;
|
|
76
|
-
}
|
|
77
|
-
if (field.extension) {
|
|
78
|
-
code += ` extension: ${field.extension},\n`;
|
|
79
|
-
}
|
|
80
|
-
code += ` },\n`;
|
|
81
|
-
}
|
|
82
|
-
code += ` ]\n`;
|
|
83
|
-
code += ` },\n`;
|
|
84
|
-
}
|
|
85
|
-
code += `];
|
|
86
|
-
`;
|
|
87
|
-
return code;
|
|
88
|
-
}
|
|
89
|
-
async function generateDecoders() {
|
|
90
|
-
console.log('Generating MAVLink message decoders...');
|
|
91
|
-
const xmlParser = new xml_parser_1.XMLParser();
|
|
92
|
-
const allMessages = [];
|
|
93
|
-
for (const config of DIALECT_CONFIGS) {
|
|
94
|
-
try {
|
|
95
|
-
console.log(`Processing ${config.dialectName} dialect...`);
|
|
96
|
-
let definition;
|
|
97
|
-
if (config.xmlSource.startsWith('http')) {
|
|
98
|
-
definition = await xmlParser.parseFromURL(config.xmlSource);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
definition = await xmlParser.parseFromFile(config.xmlSource);
|
|
102
|
-
}
|
|
103
|
-
// Convert raw definitions to decoder format
|
|
104
|
-
const decoderMessages = [];
|
|
105
|
-
for (const rawMessage of definition.messages || []) {
|
|
106
|
-
const decoderMessage = convertToDecoderDefinition(rawMessage);
|
|
107
|
-
decoderMessages.push(decoderMessage);
|
|
108
|
-
allMessages.push(decoderMessage);
|
|
109
|
-
}
|
|
110
|
-
// Generate decoder code for this dialect
|
|
111
|
-
const decoderCode = generateDecoderCode(config.dialectName, decoderMessages);
|
|
112
|
-
// Save individual dialect decoder
|
|
113
|
-
const dialectOutputPath = (0, path_1.join)(process.cwd(), 'generated', 'decoders', `${config.dialectName}.ts`);
|
|
114
|
-
await fs_1.promises.mkdir((0, path_1.join)(process.cwd(), 'generated', 'decoders'), { recursive: true });
|
|
115
|
-
await fs_1.promises.writeFile(dialectOutputPath, decoderCode);
|
|
116
|
-
console.log(`Generated decoder for ${config.dialectName}: ${dialectOutputPath}`);
|
|
117
|
-
}
|
|
118
|
-
catch (error) {
|
|
119
|
-
console.error(`Failed to process ${config.dialectName}:`, error);
|
|
120
|
-
}
|
|
121
|
-
// Reset parser state between dialects
|
|
122
|
-
xmlParser.reset();
|
|
123
|
-
}
|
|
124
|
-
// Generate combined decoder definitions
|
|
125
|
-
let allDecoderCode = `// Auto-generated decoder definitions from MAVLink XML
|
|
126
|
-
// This file contains all message definitions for decoding MAVLink payloads
|
|
127
|
-
|
|
128
|
-
interface MessageDefinition {
|
|
129
|
-
id: number;
|
|
130
|
-
name: string;
|
|
131
|
-
fields: FieldDefinition[];
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
interface FieldDefinition {
|
|
135
|
-
name: string;
|
|
136
|
-
type: string;
|
|
137
|
-
arrayLength?: number;
|
|
138
|
-
extension?: boolean;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
export const ALL_MESSAGE_DEFINITIONS: MessageDefinition[] = [
|
|
142
|
-
`;
|
|
143
|
-
// Sort messages by ID to avoid duplicates and ensure consistent ordering
|
|
144
|
-
const uniqueMessages = new Map();
|
|
145
|
-
for (const message of allMessages) {
|
|
146
|
-
if (!uniqueMessages.has(message.id)) {
|
|
147
|
-
uniqueMessages.set(message.id, message);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
const sortedMessages = Array.from(uniqueMessages.values()).sort((a, b) => a.id - b.id);
|
|
151
|
-
for (const message of sortedMessages) {
|
|
152
|
-
allDecoderCode += ` {\n`;
|
|
153
|
-
allDecoderCode += ` id: ${message.id},\n`;
|
|
154
|
-
allDecoderCode += ` name: '${message.name}',\n`;
|
|
155
|
-
allDecoderCode += ` fields: [\n`;
|
|
156
|
-
for (const field of message.fields) {
|
|
157
|
-
allDecoderCode += ` {\n`;
|
|
158
|
-
allDecoderCode += ` name: '${field.name}',\n`;
|
|
159
|
-
allDecoderCode += ` type: '${field.type}',\n`;
|
|
160
|
-
if (field.arrayLength) {
|
|
161
|
-
allDecoderCode += ` arrayLength: ${field.arrayLength},\n`;
|
|
162
|
-
}
|
|
163
|
-
if (field.extension) {
|
|
164
|
-
allDecoderCode += ` extension: ${field.extension},\n`;
|
|
165
|
-
}
|
|
166
|
-
allDecoderCode += ` },\n`;
|
|
167
|
-
}
|
|
168
|
-
allDecoderCode += ` ]\n`;
|
|
169
|
-
allDecoderCode += ` },\n`;
|
|
170
|
-
}
|
|
171
|
-
allDecoderCode += `];
|
|
172
|
-
|
|
173
|
-
// Helper function to create a message definitions map
|
|
174
|
-
export function createMessageDefinitionsMap(): Map<number, MessageDefinition> {
|
|
175
|
-
const map = new Map<number, MessageDefinition>();
|
|
176
|
-
for (const def of ALL_MESSAGE_DEFINITIONS) {
|
|
177
|
-
map.set(def.id, def);
|
|
178
|
-
}
|
|
179
|
-
return map;
|
|
180
|
-
}
|
|
181
|
-
`;
|
|
182
|
-
// Save combined decoder definitions
|
|
183
|
-
const combinedOutputPath = (0, path_1.join)(process.cwd(), 'generated', 'all-decoders.ts');
|
|
184
|
-
await fs_1.promises.writeFile(combinedOutputPath, allDecoderCode);
|
|
185
|
-
console.log(`Generated combined decoder definitions: ${combinedOutputPath}`);
|
|
186
|
-
console.log(`Generated ${sortedMessages.length} unique message definitions`);
|
|
187
|
-
console.log('Decoder generation completed!');
|
|
188
|
-
}
|
|
189
|
-
// Run if called directly
|
|
190
|
-
if (require.main === module) {
|
|
191
|
-
generateDecoders()
|
|
192
|
-
.then(() => {
|
|
193
|
-
console.log('All decoders generated successfully!');
|
|
194
|
-
process.exit(0);
|
|
195
|
-
})
|
|
196
|
-
.catch((error) => {
|
|
197
|
-
console.error('Error generating decoders:', error);
|
|
198
|
-
process.exit(1);
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
//# sourceMappingURL=cli-generate-decoders.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-generate-decoders.js","sourceRoot":"","sources":["../src/cli-generate-decoders.ts"],"names":[],"mappings":"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"}
|
package/dist/generator.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { GenerationOptions } from './types';
|
|
2
|
-
export declare class MAVLinkGenerator {
|
|
3
|
-
private xmlParser;
|
|
4
|
-
private typeConverter;
|
|
5
|
-
private templateEngine;
|
|
6
|
-
constructor();
|
|
7
|
-
generateFromURL(url: string, outputPath: string, options: GenerationOptions): Promise<void>;
|
|
8
|
-
generateFromFile(filePath: string, outputPath: string, options: GenerationOptions): Promise<void>;
|
|
9
|
-
private generate;
|
|
10
|
-
reset(): void;
|
|
11
|
-
}
|
|
12
|
-
export declare function generateTypesFromXML(xmlContent: string, options: GenerationOptions): Promise<{
|
|
13
|
-
[filename: string]: string;
|
|
14
|
-
}>;
|
|
15
|
-
//# sourceMappingURL=generator.d.ts.map
|
package/dist/generator.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAA4C,MAAM,SAAS,CAAC;AAEtF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAiB;;IAQjC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3F,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAKzF,QAAQ;IA+BtB,KAAK,IAAI,IAAI;CAGd;AAGD,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAsCzC"}
|
package/dist/generator.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MAVLinkGenerator = void 0;
|
|
4
|
-
exports.generateTypesFromXML = generateTypesFromXML;
|
|
5
|
-
const fs_1 = require("fs");
|
|
6
|
-
const path_1 = require("path");
|
|
7
|
-
const xml2js_1 = require("xml2js");
|
|
8
|
-
const xml_parser_1 = require("./xml-parser");
|
|
9
|
-
const type_converter_1 = require("./type-converter");
|
|
10
|
-
const template_engine_1 = require("./template-engine");
|
|
11
|
-
class MAVLinkGenerator {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.xmlParser = new xml_parser_1.XMLParser();
|
|
14
|
-
this.typeConverter = new type_converter_1.TypeConverter();
|
|
15
|
-
this.templateEngine = new template_engine_1.TemplateEngine();
|
|
16
|
-
}
|
|
17
|
-
async generateFromURL(url, outputPath, options) {
|
|
18
|
-
const definition = await this.xmlParser.parseFromURL(url);
|
|
19
|
-
await this.generate(definition, outputPath, options);
|
|
20
|
-
}
|
|
21
|
-
async generateFromFile(filePath, outputPath, options) {
|
|
22
|
-
const definition = await this.xmlParser.parseFromFile(filePath);
|
|
23
|
-
await this.generate(definition, outputPath, options);
|
|
24
|
-
}
|
|
25
|
-
async generate(definition, outputPath, options) {
|
|
26
|
-
// Convert to TypeScript types
|
|
27
|
-
const tsDialect = this.typeConverter.convert(definition, options.dialectName);
|
|
28
|
-
// Ensure output directory exists
|
|
29
|
-
await fs_1.promises.mkdir(outputPath, { recursive: true });
|
|
30
|
-
if (options.outputFormat === 'single') {
|
|
31
|
-
// Generate single file
|
|
32
|
-
const content = this.templateEngine.generateSingle(tsDialect);
|
|
33
|
-
await fs_1.promises.writeFile((0, path_1.join)(outputPath, 'index.ts'), content);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
// Generate separate files
|
|
37
|
-
const typesContent = this.templateEngine.generateTypes(tsDialect);
|
|
38
|
-
await fs_1.promises.writeFile((0, path_1.join)(outputPath, 'types.ts'), typesContent);
|
|
39
|
-
if (options.includeEnums) {
|
|
40
|
-
const enumsContent = this.templateEngine.generateEnums(tsDialect);
|
|
41
|
-
await fs_1.promises.writeFile((0, path_1.join)(outputPath, 'enums.ts'), enumsContent);
|
|
42
|
-
}
|
|
43
|
-
const messagesContent = this.templateEngine.generateMessages(tsDialect);
|
|
44
|
-
await fs_1.promises.writeFile((0, path_1.join)(outputPath, 'messages.ts'), messagesContent);
|
|
45
|
-
const indexContent = this.templateEngine.generateIndex(tsDialect, options.includeEnums);
|
|
46
|
-
await fs_1.promises.writeFile((0, path_1.join)(outputPath, 'index.ts'), indexContent);
|
|
47
|
-
}
|
|
48
|
-
console.log(`Generated TypeScript types for ${options.dialectName} in ${outputPath}`);
|
|
49
|
-
}
|
|
50
|
-
reset() {
|
|
51
|
-
this.xmlParser.reset();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
exports.MAVLinkGenerator = MAVLinkGenerator;
|
|
55
|
-
// Standalone function for programmatic usage
|
|
56
|
-
async function generateTypesFromXML(xmlContent, options) {
|
|
57
|
-
const converter = new type_converter_1.TypeConverter();
|
|
58
|
-
const templateEngine = new template_engine_1.TemplateEngine();
|
|
59
|
-
// Parse XML directly from string
|
|
60
|
-
const definition = await new Promise((resolve, reject) => {
|
|
61
|
-
(0, xml2js_1.parseString)(xmlContent, { explicitArray: false }, (err, result) => {
|
|
62
|
-
if (err)
|
|
63
|
-
reject(err);
|
|
64
|
-
else
|
|
65
|
-
resolve(result.mavlink);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
// Convert parsed XML to definition format for compatibility
|
|
69
|
-
const definitionForConverter = {
|
|
70
|
-
version: definition.version,
|
|
71
|
-
dialect: definition.dialect ? parseInt(definition.dialect) : undefined,
|
|
72
|
-
includes: [],
|
|
73
|
-
enums: [],
|
|
74
|
-
messages: []
|
|
75
|
-
};
|
|
76
|
-
// Convert to TypeScript
|
|
77
|
-
const tsDialect = converter.convert(definitionForConverter, options.dialectName);
|
|
78
|
-
const files = {};
|
|
79
|
-
if (options.outputFormat === 'single') {
|
|
80
|
-
files['index.ts'] = templateEngine.generateSingle(tsDialect);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
files['types.ts'] = templateEngine.generateTypes(tsDialect);
|
|
84
|
-
if (options.includeEnums) {
|
|
85
|
-
files['enums.ts'] = templateEngine.generateEnums(tsDialect);
|
|
86
|
-
}
|
|
87
|
-
files['messages.ts'] = templateEngine.generateMessages(tsDialect);
|
|
88
|
-
files['index.ts'] = templateEngine.generateIndex(tsDialect, options.includeEnums);
|
|
89
|
-
}
|
|
90
|
-
return files;
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=generator.js.map
|
package/dist/generator.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
interface MessageDefinition {
|
|
2
|
-
id: number;
|
|
3
|
-
name: string;
|
|
4
|
-
fields: FieldDefinition[];
|
|
5
|
-
}
|
|
6
|
-
interface FieldDefinition {
|
|
7
|
-
name: string;
|
|
8
|
-
type: string;
|
|
9
|
-
arrayLength?: number;
|
|
10
|
-
extension?: boolean;
|
|
11
|
-
}
|
|
12
|
-
export declare const ARDUPILOTMEGA_MESSAGE_DEFINITIONS: MessageDefinition[];
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=ardupilotmega-decoder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ardupilotmega-decoder.d.ts","sourceRoot":"","sources":["../../../src/parser/decoders/ardupilotmega-decoder.ts"],"names":[],"mappings":"AAGA,UAAU,iBAAiB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,iCAAiC,EAAE,iBAAiB,EAkpXhE,CAAC"}
|