@aircast-4g/mavlink 1.0.1
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/LICENSE +21 -0
- package/README.md +632 -0
- package/dist/batch-processor.d.ts +17 -0
- package/dist/batch-processor.d.ts.map +1 -0
- package/dist/batch-processor.js +141 -0
- package/dist/batch-processor.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +174 -0
- package/dist/cli.js.map +1 -0
- package/dist/generator/batch-processor.d.ts +17 -0
- package/dist/generator/batch-processor.d.ts.map +1 -0
- package/dist/generator/batch-processor.js +141 -0
- package/dist/generator/batch-processor.js.map +1 -0
- package/dist/generator/generator.d.ts +15 -0
- package/dist/generator/generator.d.ts.map +1 -0
- package/dist/generator/generator.js +92 -0
- package/dist/generator/generator.js.map +1 -0
- package/dist/generator/template-engine.d.ts +13 -0
- package/dist/generator/template-engine.d.ts.map +1 -0
- package/dist/generator/template-engine.js +220 -0
- package/dist/generator/template-engine.js.map +1 -0
- package/dist/generator/type-converter.d.ts +15 -0
- package/dist/generator/type-converter.d.ts.map +1 -0
- package/dist/generator/type-converter.js +179 -0
- package/dist/generator/type-converter.js.map +1 -0
- package/dist/generator/xml-parser.d.ts +13 -0
- package/dist/generator/xml-parser.d.ts.map +1 -0
- package/dist/generator/xml-parser.js +170 -0
- package/dist/generator/xml-parser.js.map +1 -0
- package/dist/generator.d.ts +15 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +92 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/crc.d.ts +7 -0
- package/dist/parser/crc.d.ts.map +1 -0
- package/dist/parser/crc.js +182 -0
- package/dist/parser/crc.js.map +1 -0
- package/dist/parser/frame-parser.d.ts +15 -0
- package/dist/parser/frame-parser.d.ts.map +1 -0
- package/dist/parser/frame-parser.js +82 -0
- package/dist/parser/frame-parser.js.map +1 -0
- package/dist/parser/index.d.ts +6 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +28 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/mavlink-parser.d.ts +35 -0
- package/dist/parser/mavlink-parser.d.ts.map +1 -0
- package/dist/parser/mavlink-parser.js +204 -0
- package/dist/parser/mavlink-parser.js.map +1 -0
- package/dist/parser/message-decoder.d.ts +11 -0
- package/dist/parser/message-decoder.d.ts.map +1 -0
- package/dist/parser/message-decoder.js +247 -0
- package/dist/parser/message-decoder.js.map +1 -0
- package/dist/parser/types.d.ts +59 -0
- package/dist/parser/types.d.ts.map +1 -0
- package/dist/parser/types.js +13 -0
- package/dist/parser/types.js.map +1 -0
- package/dist/template-engine.d.ts +13 -0
- package/dist/template-engine.d.ts.map +1 -0
- package/dist/template-engine.js +220 -0
- package/dist/template-engine.js.map +1 -0
- package/dist/type-converter.d.ts +15 -0
- package/dist/type-converter.d.ts.map +1 -0
- package/dist/type-converter.js +179 -0
- package/dist/type-converter.js.map +1 -0
- package/dist/types.d.ts +110 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/xml-parser.d.ts +13 -0
- package/dist/xml-parser.d.ts.map +1 -0
- package/dist/xml-parser.js +170 -0
- package/dist/xml-parser.js.map +1 -0
- package/package.json +105 -0
- package/types/ardupilotmega/enums.d.ts +2427 -0
- package/types/ardupilotmega/enums.d.ts.map +1 -0
- package/types/ardupilotmega/enums.js +4636 -0
- package/types/ardupilotmega/enums.js.map +1 -0
- package/types/ardupilotmega/enums.ts +4631 -0
- package/types/ardupilotmega/index.d.ts +4 -0
- package/types/ardupilotmega/index.d.ts.map +1 -0
- package/types/ardupilotmega/index.js +22 -0
- package/types/ardupilotmega/index.js.map +1 -0
- package/types/ardupilotmega/index.ts +6 -0
- package/types/ardupilotmega/messages.d.ts +3719 -0
- package/types/ardupilotmega/messages.d.ts.map +1 -0
- package/types/ardupilotmega/messages.js +1281 -0
- package/types/ardupilotmega/messages.js.map +1 -0
- package/types/ardupilotmega/messages.ts +8088 -0
- package/types/ardupilotmega/types.d.ts +221 -0
- package/types/ardupilotmega/types.d.ts.map +1 -0
- package/types/ardupilotmega/types.js +5 -0
- package/types/ardupilotmega/types.js.map +1 -0
- package/types/ardupilotmega/types.ts +2833 -0
- package/types/common/enums.d.ts +1843 -0
- package/types/common/enums.d.ts.map +1 -0
- package/types/common/enums.js +3636 -0
- package/types/common/enums.js.map +1 -0
- package/types/common/enums.ts +3632 -0
- package/types/common/index.d.ts +4 -0
- package/types/common/index.d.ts.map +1 -0
- package/types/common/index.js +21 -0
- package/types/common/index.js.map +1 -0
- package/types/common/index.ts +6 -0
- package/types/common/messages.d.ts +2805 -0
- package/types/common/messages.d.ts.map +1 -0
- package/types/common/messages.js +920 -0
- package/types/common/messages.js.map +1 -0
- package/types/common/messages.ts +6114 -0
- package/types/common/types.d.ts +157 -0
- package/types/common/types.d.ts.map +1 -0
- package/types/common/types.js +4 -0
- package/types/common/types.js.map +1 -0
- package/types/common/types.ts +2159 -0
- package/types/minimal/enums.d.ts +244 -0
- package/types/minimal/enums.d.ts.map +1 -0
- package/types/minimal/enums.js +496 -0
- package/types/minimal/enums.js.map +1 -0
- package/types/minimal/enums.ts +494 -0
- package/types/minimal/index.d.ts +4 -0
- package/types/minimal/index.d.ts.map +1 -0
- package/types/minimal/index.js +21 -0
- package/types/minimal/index.js.map +1 -0
- package/types/minimal/index.ts +6 -0
- package/types/minimal/messages.d.ts +25 -0
- package/types/minimal/messages.d.ts.map +1 -0
- package/types/minimal/messages.js +12 -0
- package/types/minimal/messages.js.map +1 -0
- package/types/minimal/messages.ts +62 -0
- package/types/minimal/types.d.ts +14 -0
- package/types/minimal/types.d.ts.map +1 -0
- package/types/minimal/types.js +4 -0
- package/types/minimal/types.js.map +1 -0
- package/types/minimal/types.ts +272 -0
- package/types/paparazzi/enums.ts +3632 -0
- package/types/paparazzi/index.ts +6 -0
- package/types/paparazzi/messages.ts +6185 -0
- package/types/paparazzi/types.ts +2159 -0
- package/types/python_array_test/enums.ts +3632 -0
- package/types/python_array_test/index.ts +6 -0
- package/types/python_array_test/messages.ts +6258 -0
- package/types/python_array_test/types.ts +2159 -0
- package/types/standard/enums.d.ts +248 -0
- package/types/standard/enums.d.ts.map +1 -0
- package/types/standard/enums.js +505 -0
- package/types/standard/enums.js.map +1 -0
- package/types/standard/enums.ts +502 -0
- package/types/standard/index.d.ts +4 -0
- package/types/standard/index.d.ts.map +1 -0
- package/types/standard/index.js +22 -0
- package/types/standard/index.js.map +1 -0
- package/types/standard/index.ts +6 -0
- package/types/standard/messages.d.ts +25 -0
- package/types/standard/messages.d.ts.map +1 -0
- package/types/standard/messages.js +13 -0
- package/types/standard/messages.js.map +1 -0
- package/types/standard/messages.ts +63 -0
- package/types/standard/types.d.ts +15 -0
- package/types/standard/types.d.ts.map +1 -0
- package/types/standard/types.js +5 -0
- package/types/standard/types.js.map +1 -0
- package/types/standard/types.ts +278 -0
- package/types/test/enums.ts +2 -0
- package/types/test/index.ts +6 -0
- package/types/test/messages.ts +69 -0
- package/types/test/types.ts +11 -0
|
@@ -0,0 +1,141 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-processor.js","sourceRoot":"","sources":["../src/batch-processor.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const commander_1 = require("commander");
|
|
38
|
+
const generator_1 = require("./generator/generator");
|
|
39
|
+
const batch_processor_1 = require("./generator/batch-processor");
|
|
40
|
+
const fs_1 = require("fs");
|
|
41
|
+
const program = new commander_1.Command();
|
|
42
|
+
program
|
|
43
|
+
.name('aircast-mavlink')
|
|
44
|
+
.description('Aircast MAVLink TypeScript type generator')
|
|
45
|
+
.version('1.0.0');
|
|
46
|
+
program
|
|
47
|
+
.command('generate')
|
|
48
|
+
.description('Generate TypeScript types from a MAVLink XML dialect')
|
|
49
|
+
.option('-i, --input <path>', 'Input XML file path or URL')
|
|
50
|
+
.option('-o, --output <path>', 'Output directory path', './types')
|
|
51
|
+
.option('-n, --name <name>', 'Dialect name (auto-detected if not provided)')
|
|
52
|
+
.option('-f, --format <format>', 'Output format: single or separate', 'separate')
|
|
53
|
+
.option('--no-enums', 'Skip enum generation')
|
|
54
|
+
.option('--no-type-guards', 'Skip type guard generation')
|
|
55
|
+
.action(async (options) => {
|
|
56
|
+
try {
|
|
57
|
+
if (!options.input) {
|
|
58
|
+
console.error('Error: Input file or URL is required');
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
const generator = new generator_1.MAVLinkGenerator();
|
|
62
|
+
const dialectName = options.name || extractDialectName(options.input);
|
|
63
|
+
const generationOptions = {
|
|
64
|
+
dialectName,
|
|
65
|
+
outputFormat: options.format,
|
|
66
|
+
includeEnums: options.enums !== false,
|
|
67
|
+
includeTypeGuards: options.typeGuards !== false
|
|
68
|
+
};
|
|
69
|
+
console.log(`Generating TypeScript types for ${dialectName}...`);
|
|
70
|
+
console.log(`Input: ${options.input}`);
|
|
71
|
+
console.log(`Output: ${options.output}`);
|
|
72
|
+
console.log(`Format: ${generationOptions.outputFormat}`);
|
|
73
|
+
if (options.input.startsWith('http')) {
|
|
74
|
+
await generator.generateFromURL(options.input, options.output, generationOptions);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
if (!(0, fs_1.existsSync)(options.input)) {
|
|
78
|
+
console.error(`Error: Input file does not exist: ${options.input}`);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
await generator.generateFromFile(options.input, options.output, generationOptions);
|
|
82
|
+
}
|
|
83
|
+
console.log('✅ Generation completed successfully!');
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
console.error('❌ Generation failed:', error);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
program
|
|
91
|
+
.command('batch')
|
|
92
|
+
.description('Generate TypeScript types for multiple MAVLink dialects')
|
|
93
|
+
.option('-o, --output <path>', 'Output directory path', './mavlink-types')
|
|
94
|
+
.option('-d, --dialects <dialects>', 'Comma-separated list of dialect names (generates all if not specified)')
|
|
95
|
+
.option('-f, --format <format>', 'Output format: single or separate', 'separate')
|
|
96
|
+
.option('--no-enums', 'Skip enum generation')
|
|
97
|
+
.option('--no-type-guards', 'Skip type guard generation')
|
|
98
|
+
.option('--package', 'Generate package.json and tsconfig.json')
|
|
99
|
+
.action(async (options) => {
|
|
100
|
+
try {
|
|
101
|
+
const processor = new batch_processor_1.BatchProcessor();
|
|
102
|
+
const processorOptions = {
|
|
103
|
+
outputDir: options.output,
|
|
104
|
+
dialectFormat: options.format,
|
|
105
|
+
includeEnums: options.enums !== false,
|
|
106
|
+
includeTypeGuards: options.typeGuards !== false
|
|
107
|
+
};
|
|
108
|
+
console.log(`Generating TypeScript types for MAVLink dialects...`);
|
|
109
|
+
console.log(`Output directory: ${options.output}`);
|
|
110
|
+
console.log(`Format: ${processorOptions.dialectFormat}`);
|
|
111
|
+
if (options.dialects) {
|
|
112
|
+
const dialectNames = options.dialects.split(',').map((name) => name.trim());
|
|
113
|
+
console.log(`Processing specific dialects: ${dialectNames.join(', ')}`);
|
|
114
|
+
await processor.processSpecificDialects(dialectNames, processorOptions);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.log('Processing all available dialects...');
|
|
118
|
+
await processor.processAllDialects(processorOptions);
|
|
119
|
+
}
|
|
120
|
+
if (options.package) {
|
|
121
|
+
await processor.generatePackageJson(options.output);
|
|
122
|
+
}
|
|
123
|
+
console.log('✅ Batch generation completed successfully!');
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
console.error('❌ Batch generation failed:', error);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
program
|
|
131
|
+
.command('list')
|
|
132
|
+
.description('List available MAVLink dialects')
|
|
133
|
+
.action(async () => {
|
|
134
|
+
try {
|
|
135
|
+
console.log('Fetching available MAVLink dialects...');
|
|
136
|
+
const fetch = (await Promise.resolve().then(() => __importStar(require('node-fetch')))).default;
|
|
137
|
+
const response = await fetch('https://api.github.com/repos/mavlink/mavlink/contents/message_definitions/v1.0');
|
|
138
|
+
if (!response.ok) {
|
|
139
|
+
throw new Error(`Failed to fetch dialects: ${response.statusText}`);
|
|
140
|
+
}
|
|
141
|
+
const files = await response.json();
|
|
142
|
+
const dialects = files
|
|
143
|
+
.filter(file => file.name.endsWith('.xml'))
|
|
144
|
+
.map(file => file.name.replace('.xml', ''))
|
|
145
|
+
.sort();
|
|
146
|
+
console.log('\nAvailable MAVLink dialects:');
|
|
147
|
+
console.log('==========================');
|
|
148
|
+
dialects.forEach(dialect => {
|
|
149
|
+
console.log(` ${dialect}`);
|
|
150
|
+
});
|
|
151
|
+
console.log(`\nTotal: ${dialects.length} dialects`);
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
console.error('❌ Failed to fetch dialects list:', error);
|
|
155
|
+
process.exit(1);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
function extractDialectName(input) {
|
|
159
|
+
// Extract dialect name from file path or URL
|
|
160
|
+
const parts = input.split('/');
|
|
161
|
+
const filename = parts[parts.length - 1];
|
|
162
|
+
return filename.replace('.xml', '').toLowerCase().replace('_', '');
|
|
163
|
+
}
|
|
164
|
+
// Handle uncaught errors
|
|
165
|
+
process.on('unhandledRejection', (reason, promise) => {
|
|
166
|
+
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
|
|
167
|
+
process.exit(1);
|
|
168
|
+
});
|
|
169
|
+
process.on('uncaughtException', (error) => {
|
|
170
|
+
console.error('Uncaught Exception:', error);
|
|
171
|
+
process.exit(1);
|
|
172
|
+
});
|
|
173
|
+
program.parse();
|
|
174
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,qDAAyD;AACzD,iEAA6D;AAE7D,2BAAgC;AAEhC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,oBAAoB,EAAE,4BAA4B,CAAC;KAC1D,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,SAAS,CAAC;KACjE,MAAM,CAAC,mBAAmB,EAAE,8CAA8C,CAAC;KAC3E,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,UAAU,CAAC;KAChF,MAAM,CAAC,YAAY,EAAE,sBAAsB,CAAC;KAC5C,MAAM,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,4BAAgB,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtE,MAAM,iBAAiB,GAAsB;YAC3C,WAAW;YACX,YAAY,EAAE,OAAO,CAAC,MAA+B;YACrD,YAAY,EAAE,OAAO,CAAC,KAAK,KAAK,KAAK;YACrC,iBAAiB,EAAE,OAAO,CAAC,UAAU,KAAK,KAAK;SAChD,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,mCAAmC,WAAW,KAAK,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,WAAW,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC;QAEzD,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,MAAM,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,qCAAqC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACrF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,iBAAiB,CAAC;KACzE,MAAM,CAAC,2BAA2B,EAAE,wEAAwE,CAAC;KAC7G,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,UAAU,CAAC;KAChF,MAAM,CAAC,YAAY,EAAE,sBAAsB,CAAC;KAC5C,MAAM,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;KACxD,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;KAC9D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,gCAAc,EAAE,CAAC;QAEvC,MAAM,gBAAgB,GAAG;YACvB,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,aAAa,EAAE,OAAO,CAAC,MAA+B;YACtD,YAAY,EAAE,OAAO,CAAC,KAAK,KAAK,KAAK;YACrC,iBAAiB,EAAE,OAAO,CAAC,UAAU,KAAK,KAAK;SAChD,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,WAAW,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC;QAEzD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,iCAAiC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxE,MAAM,SAAS,CAAC,uBAAuB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,MAAM,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAG,CAAC,wDAAa,YAAY,GAAC,CAAC,CAAC,OAAO,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gFAAgF,CAAC,CAAC;QAE/G,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6B,CAAC;QAC/D,MAAM,QAAQ,GAAG,KAAK;aACnB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAC1C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;aAC1C,IAAI,EAAE,CAAC;QAEV,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,SAAS,kBAAkB,CAAC,KAAa;IACvC,6CAA6C;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,yBAAyB;AACzB,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnD,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface BatchProcessorOptions {
|
|
2
|
+
outputDir: string;
|
|
3
|
+
dialectFormat: 'single' | 'separate';
|
|
4
|
+
includeEnums: boolean;
|
|
5
|
+
includeTypeGuards: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare class BatchProcessor {
|
|
8
|
+
private generator;
|
|
9
|
+
private static readonly MAVLINK_DIALECTS_URL;
|
|
10
|
+
private static readonly MAVLINK_RAW_BASE_URL;
|
|
11
|
+
constructor();
|
|
12
|
+
processAllDialects(options: BatchProcessorOptions): Promise<void>;
|
|
13
|
+
processSpecificDialects(dialectNames: string[], options: BatchProcessorOptions): Promise<void>;
|
|
14
|
+
private generateMainIndex;
|
|
15
|
+
generatePackageJson(outputDir: string, version?: string): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=batch-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-processor.d.ts","sourceRoot":"","sources":["../../src/generator/batch-processor.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,QAAQ,GAAG,UAAU,CAAC;IACrC,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAoF;IAChI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAuF;;IAM7H,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDjE,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsCtF,iBAAiB;IAczB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,MAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAoDvF"}
|
|
@@ -0,0 +1,141 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-processor.js","sourceRoot":"","sources":["../../src/generator/batch-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/generator/generator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAA4C,MAAM,UAAU,CAAC;AAEvF,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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/generator/generator.ts"],"names":[],"mappings":"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"}
|