deukpack 1.0.0
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 +201 -0
- package/NOTICE +6 -0
- package/README.ko.md +138 -0
- package/README.md +182 -0
- package/RELEASING.md +71 -0
- package/bin/deukpack.js +9 -0
- package/dist/ast/DeukPackASTBuilder.d.ts +153 -0
- package/dist/ast/DeukPackASTBuilder.d.ts.map +1 -0
- package/dist/ast/DeukPackASTBuilder.js +931 -0
- package/dist/ast/DeukPackASTBuilder.js.map +1 -0
- package/dist/codegen/CSharpGenerator.d.ts +136 -0
- package/dist/codegen/CSharpGenerator.d.ts.map +1 -0
- package/dist/codegen/CSharpGenerator.js +2303 -0
- package/dist/codegen/CSharpGenerator.js.map +1 -0
- package/dist/codegen/CodeGenerator.d.ts +11 -0
- package/dist/codegen/CodeGenerator.d.ts.map +1 -0
- package/dist/codegen/CodeGenerator.js +11 -0
- package/dist/codegen/CodeGenerator.js.map +1 -0
- package/dist/codegen/CppGenerator.d.ts +23 -0
- package/dist/codegen/CppGenerator.d.ts.map +1 -0
- package/dist/codegen/CppGenerator.js +215 -0
- package/dist/codegen/CppGenerator.js.map +1 -0
- package/dist/codegen/HighPerformanceCSharpGenerator.d.ts +29 -0
- package/dist/codegen/HighPerformanceCSharpGenerator.d.ts.map +1 -0
- package/dist/codegen/HighPerformanceCSharpGenerator.js +486 -0
- package/dist/codegen/HighPerformanceCSharpGenerator.js.map +1 -0
- package/dist/core/DeukPackEngine.d.ts +69 -0
- package/dist/core/DeukPackEngine.d.ts.map +1 -0
- package/dist/core/DeukPackEngine.js +379 -0
- package/dist/core/DeukPackEngine.js.map +1 -0
- package/dist/core/DeukPackGenerator.d.ts +9 -0
- package/dist/core/DeukPackGenerator.d.ts.map +1 -0
- package/dist/core/DeukPackGenerator.js +15 -0
- package/dist/core/DeukPackGenerator.js.map +1 -0
- package/dist/core/DeukParser.d.ts +12 -0
- package/dist/core/DeukParser.d.ts.map +1 -0
- package/dist/core/DeukParser.js +27 -0
- package/dist/core/DeukParser.js.map +1 -0
- package/dist/core/IdlParser.d.ts +27 -0
- package/dist/core/IdlParser.d.ts.map +1 -0
- package/dist/core/IdlParser.js +157 -0
- package/dist/core/IdlParser.js.map +1 -0
- package/dist/core/ProtoParser.d.ts +12 -0
- package/dist/core/ProtoParser.d.ts.map +1 -0
- package/dist/core/ProtoParser.js +27 -0
- package/dist/core/ProtoParser.js.map +1 -0
- package/dist/csharp/DpExcelProtocol.cs +3005 -0
- package/dist/csharp/DpProtocolLibrary.cs +13 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/lexer/DeukLexer.d.ts +31 -0
- package/dist/lexer/DeukLexer.d.ts.map +1 -0
- package/dist/lexer/DeukLexer.js +292 -0
- package/dist/lexer/DeukLexer.js.map +1 -0
- package/dist/lexer/IdlLexer.d.ts +33 -0
- package/dist/lexer/IdlLexer.d.ts.map +1 -0
- package/dist/lexer/IdlLexer.js +286 -0
- package/dist/lexer/IdlLexer.js.map +1 -0
- package/dist/native/NativeDeukPackEngine.d.ts +30 -0
- package/dist/native/NativeDeukPackEngine.d.ts.map +1 -0
- package/dist/native/NativeDeukPackEngine.js +99 -0
- package/dist/native/NativeDeukPackEngine.js.map +1 -0
- package/dist/proto/ProtoASTBuilder.d.ts +29 -0
- package/dist/proto/ProtoASTBuilder.d.ts.map +1 -0
- package/dist/proto/ProtoASTBuilder.js +239 -0
- package/dist/proto/ProtoASTBuilder.js.map +1 -0
- package/dist/proto/ProtoLexer.d.ts +29 -0
- package/dist/proto/ProtoLexer.d.ts.map +1 -0
- package/dist/proto/ProtoLexer.js +264 -0
- package/dist/proto/ProtoLexer.js.map +1 -0
- package/dist/proto/ProtoTypes.d.ts +40 -0
- package/dist/proto/ProtoTypes.d.ts.map +1 -0
- package/dist/proto/ProtoTypes.js +37 -0
- package/dist/proto/ProtoTypes.js.map +1 -0
- package/dist/protocols/BinaryProtocol.d.ts +7 -0
- package/dist/protocols/BinaryProtocol.d.ts.map +1 -0
- package/dist/protocols/BinaryProtocol.js +11 -0
- package/dist/protocols/BinaryProtocol.js.map +1 -0
- package/dist/protocols/BinaryWriter.d.ts +22 -0
- package/dist/protocols/BinaryWriter.d.ts.map +1 -0
- package/dist/protocols/BinaryWriter.js +104 -0
- package/dist/protocols/BinaryWriter.js.map +1 -0
- package/dist/protocols/CompactProtocol.d.ts +7 -0
- package/dist/protocols/CompactProtocol.d.ts.map +1 -0
- package/dist/protocols/CompactProtocol.js +11 -0
- package/dist/protocols/CompactProtocol.js.map +1 -0
- package/dist/protocols/ExcelProtocol.d.ts +98 -0
- package/dist/protocols/ExcelProtocol.d.ts.map +1 -0
- package/dist/protocols/ExcelProtocol.js +639 -0
- package/dist/protocols/ExcelProtocol.js.map +1 -0
- package/dist/protocols/JsonProtocol.d.ts +68 -0
- package/dist/protocols/JsonProtocol.d.ts.map +1 -0
- package/dist/protocols/JsonProtocol.js +422 -0
- package/dist/protocols/JsonProtocol.js.map +1 -0
- package/dist/protocols/WireProtocol.d.ts +348 -0
- package/dist/protocols/WireProtocol.d.ts.map +1 -0
- package/dist/protocols/WireProtocol.js +912 -0
- package/dist/protocols/WireProtocol.js.map +1 -0
- package/dist/serialization/WireDeserializer.d.ts +8 -0
- package/dist/serialization/WireDeserializer.d.ts.map +1 -0
- package/dist/serialization/WireDeserializer.js +13 -0
- package/dist/serialization/WireDeserializer.js.map +1 -0
- package/dist/serialization/WireSerializer.d.ts +20 -0
- package/dist/serialization/WireSerializer.d.ts.map +1 -0
- package/dist/serialization/WireSerializer.js +100 -0
- package/dist/serialization/WireSerializer.js.map +1 -0
- package/dist/types/DeukPackTypes.d.ts +291 -0
- package/dist/types/DeukPackTypes.d.ts.map +1 -0
- package/dist/types/DeukPackTypes.js +76 -0
- package/dist/types/DeukPackTypes.js.map +1 -0
- package/dist/utils/EndianUtils.d.ts +11 -0
- package/dist/utils/EndianUtils.d.ts.map +1 -0
- package/dist/utils/EndianUtils.js +32 -0
- package/dist/utils/EndianUtils.js.map +1 -0
- package/dist/utils/PerformanceMonitor.d.ts +26 -0
- package/dist/utils/PerformanceMonitor.d.ts.map +1 -0
- package/dist/utils/PerformanceMonitor.js +57 -0
- package/dist/utils/PerformanceMonitor.js.map +1 -0
- package/package.json +77 -0
- package/scripts/build_deukpack.js +669 -0
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DeukPack - Core Engine
|
|
4
|
+
* Multi-language IDL and wire support
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.DeukPackEngine = void 0;
|
|
41
|
+
const DeukPackTypes_1 = require("../types/DeukPackTypes");
|
|
42
|
+
const fs = __importStar(require("fs/promises"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const fs_1 = require("fs");
|
|
45
|
+
const IdlParser_1 = require("./IdlParser");
|
|
46
|
+
const DeukParser_1 = require("./DeukParser");
|
|
47
|
+
const ProtoParser_1 = require("./ProtoParser");
|
|
48
|
+
const DeukPackGenerator_1 = require("./DeukPackGenerator");
|
|
49
|
+
const WireSerializer_1 = require("../serialization/WireSerializer");
|
|
50
|
+
const WireDeserializer_1 = require("../serialization/WireDeserializer");
|
|
51
|
+
const PerformanceMonitor_1 = require("../utils/PerformanceMonitor");
|
|
52
|
+
class DeukPackEngine {
|
|
53
|
+
constructor(useNative = false) {
|
|
54
|
+
this.useNative = false;
|
|
55
|
+
this.performanceMetrics = {
|
|
56
|
+
parseTime: 0,
|
|
57
|
+
generateTime: 0,
|
|
58
|
+
serializeTime: 0,
|
|
59
|
+
deserializeTime: 0,
|
|
60
|
+
memoryUsage: 0,
|
|
61
|
+
fileCount: 0,
|
|
62
|
+
lineCount: 0
|
|
63
|
+
};
|
|
64
|
+
this.parser = new IdlParser_1.IdlParser();
|
|
65
|
+
this.deukParser = new DeukParser_1.DeukParser();
|
|
66
|
+
this.protoParser = new ProtoParser_1.ProtoParser();
|
|
67
|
+
this.generator = new DeukPackGenerator_1.DeukPackGenerator();
|
|
68
|
+
this.serializer = new WireSerializer_1.WireSerializer();
|
|
69
|
+
this.deserializer = new WireDeserializer_1.WireDeserializer();
|
|
70
|
+
this.performanceMonitor = new PerformanceMonitor_1.PerformanceMonitor();
|
|
71
|
+
this.useNative = useNative;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Parse IDL files into AST
|
|
75
|
+
*/
|
|
76
|
+
async parseFiles(filePaths) {
|
|
77
|
+
try {
|
|
78
|
+
return await this.parser.parseFiles(filePaths);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
throw new DeukPackTypes_1.DeukPackException(`Failed to parse files: ${error.message}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Generate code from AST
|
|
86
|
+
*/
|
|
87
|
+
async generateCode(ast, options) {
|
|
88
|
+
try {
|
|
89
|
+
await this.generator.generateCode(ast, options);
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
throw new DeukPackTypes_1.DeukPackException(`Failed to generate code: ${error.message}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Serialize object to wire format
|
|
97
|
+
*/
|
|
98
|
+
serialize(obj, options) {
|
|
99
|
+
try {
|
|
100
|
+
return this.serializer.serialize(obj, options);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
throw new DeukPackTypes_1.DeukPackException(`Failed to serialize object: ${error.message}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Deserialize wire format to object
|
|
108
|
+
*/
|
|
109
|
+
deserialize(data, targetType, options) {
|
|
110
|
+
try {
|
|
111
|
+
return this.deserializer.deserialize(Buffer.from(data), targetType, options);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
throw new DeukPackTypes_1.DeukPackException(`Failed to deserialize data: ${error.message}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Parse a single IDL file
|
|
119
|
+
*/
|
|
120
|
+
async parseFile(filePath) {
|
|
121
|
+
const startTime = Date.now();
|
|
122
|
+
try {
|
|
123
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
124
|
+
const ast = this.parser.parse(content, filePath);
|
|
125
|
+
this.performanceMetrics.parseTime = Date.now() - startTime;
|
|
126
|
+
this.performanceMetrics.fileCount = 1;
|
|
127
|
+
return ast;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
throw new Error(`Failed to parse file ${filePath}: ${error.message}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Parse an IDL file with all its includes.
|
|
135
|
+
* @param filePath - 진입 IDL 파일 경로
|
|
136
|
+
* @param options - includePaths 지정 시 해당 경로만 사용, 미지정 시 defineRoot 기준으로 경로 구성 (기본 defineRoot: '_deuk_define').
|
|
137
|
+
* 호환: 두 번째 인자를 string[]로 주면 includePaths로 간주.
|
|
138
|
+
*/
|
|
139
|
+
async parseFileWithIncludes(filePath, options) {
|
|
140
|
+
const startTime = Date.now();
|
|
141
|
+
const processedFiles = new Set();
|
|
142
|
+
const allStructs = [];
|
|
143
|
+
const allEnums = [];
|
|
144
|
+
const allNamespaces = [];
|
|
145
|
+
const allTypedefs = [];
|
|
146
|
+
const allConstants = [];
|
|
147
|
+
const allServices = [];
|
|
148
|
+
const allIncludes = [];
|
|
149
|
+
const fileNamespaceMap = {};
|
|
150
|
+
const opts = Array.isArray(options) ? { includePaths: options } : (options ?? {});
|
|
151
|
+
const customIncludePaths = opts.includePaths;
|
|
152
|
+
const defineRoot = opts.defineRoot ?? '_deuk_define';
|
|
153
|
+
const baseDir = path.dirname(filePath);
|
|
154
|
+
const SUBDIRS = ['_engine', 'engine', 'game_define', 'deuk_table', 'protocol_server', 'protocol_user', 'generated_define', '_project_common'];
|
|
155
|
+
const parseFileRecursive = async (currentPath) => {
|
|
156
|
+
if (processedFiles.has(currentPath)) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
processedFiles.add(currentPath);
|
|
160
|
+
const content = await fs.readFile(currentPath, 'utf-8');
|
|
161
|
+
const ext = path.extname(currentPath).toLowerCase();
|
|
162
|
+
const ast = ext === '.deuk'
|
|
163
|
+
? this.deukParser.parse(content, currentPath)
|
|
164
|
+
: ext === '.proto'
|
|
165
|
+
? this.protoParser.parse(content, currentPath)
|
|
166
|
+
: this.parser.parse(content, currentPath);
|
|
167
|
+
// 파일의 네임스페이스 찾기 및 저장
|
|
168
|
+
const namespaceForFile = ast.namespaces.find(ns => ns.language === '*' || ns.language === 'csharp');
|
|
169
|
+
if (namespaceForFile) {
|
|
170
|
+
fileNamespaceMap[currentPath] = namespaceForFile.name;
|
|
171
|
+
namespaceForFile.sourceFile = currentPath;
|
|
172
|
+
}
|
|
173
|
+
// Merge all definitions
|
|
174
|
+
allStructs.push(...ast.structs);
|
|
175
|
+
allEnums.push(...ast.enums);
|
|
176
|
+
allNamespaces.push(...ast.namespaces);
|
|
177
|
+
allTypedefs.push(...ast.typedefs);
|
|
178
|
+
allConstants.push(...ast.constants);
|
|
179
|
+
allServices.push(...ast.services);
|
|
180
|
+
allIncludes.push(...ast.includes);
|
|
181
|
+
// table/container 사용 시 deuk.deuk를 최종 AST에만 추가 (파싱은 하지 않음 — 코드젠용)
|
|
182
|
+
if (processedFiles.size === 1 && ast.structs) {
|
|
183
|
+
const hasTable = ast.structs.some(s => {
|
|
184
|
+
const f = s.fields;
|
|
185
|
+
return (s.name === 'table' || s.name === 'container') && f && f.length >= 2 && f[0]?.name === 'header' && f[1]?.name === 'infos';
|
|
186
|
+
});
|
|
187
|
+
if (hasTable && !allIncludes.some(inc => inc.trim().toLowerCase().endsWith('deuk.deuk'))) {
|
|
188
|
+
allIncludes.push('deuk.deuk');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Process includes: customIncludePaths 있으면 먼저 사용, 이어서 defineRoot 기준 경로 추가
|
|
192
|
+
for (const include of ast.includes) {
|
|
193
|
+
const trimmedInclude = include.trim();
|
|
194
|
+
const buildDefineRootPaths = () => {
|
|
195
|
+
const list = [
|
|
196
|
+
path.resolve(baseDir, trimmedInclude),
|
|
197
|
+
...SUBDIRS.flatMap(sub => [
|
|
198
|
+
path.resolve(baseDir, '..', sub, trimmedInclude),
|
|
199
|
+
path.resolve(baseDir, '../..', defineRoot, sub, trimmedInclude)
|
|
200
|
+
]),
|
|
201
|
+
path.resolve(baseDir, '../..', defineRoot, trimmedInclude)
|
|
202
|
+
];
|
|
203
|
+
const cwdRoot = path.resolve(process.cwd(), '..', '..', defineRoot);
|
|
204
|
+
list.push(path.resolve(cwdRoot, trimmedInclude));
|
|
205
|
+
SUBDIRS.forEach(sub => list.push(path.resolve(cwdRoot, sub, trimmedInclude)));
|
|
206
|
+
return list;
|
|
207
|
+
};
|
|
208
|
+
const customResolved = customIncludePaths && customIncludePaths.length > 0
|
|
209
|
+
? customIncludePaths.filter(p => p).map(p => path.resolve(p, trimmedInclude))
|
|
210
|
+
: [];
|
|
211
|
+
const defineRootPaths = buildDefineRootPaths();
|
|
212
|
+
const includePaths = customResolved.length > 0 ? [...customResolved, ...defineRootPaths] : defineRootPaths;
|
|
213
|
+
let found = false;
|
|
214
|
+
for (const includePath of includePaths) {
|
|
215
|
+
if (includePath && (0, fs_1.existsSync)(includePath)) {
|
|
216
|
+
await parseFileRecursive(includePath);
|
|
217
|
+
found = true;
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (!found) {
|
|
222
|
+
const errorMsg = `Could not find include file: ${trimmedInclude}`;
|
|
223
|
+
console.error(`[DeukPack ERROR] ${errorMsg}`);
|
|
224
|
+
console.error(`[DeukPack] Referenced from: ${currentPath}`);
|
|
225
|
+
console.error(`[DeukPack] Original include string: "${include}"`);
|
|
226
|
+
console.error(`[DeukPack] Searched in ${includePaths.length} locations:`);
|
|
227
|
+
if (customIncludePaths) {
|
|
228
|
+
console.error(`[DeukPack] Using custom include paths (-I options): ${customIncludePaths.join(', ')}`);
|
|
229
|
+
}
|
|
230
|
+
for (let i = 0; i < Math.min(10, includePaths.length); i++) {
|
|
231
|
+
const checkPath = includePaths[i];
|
|
232
|
+
console.error(`[DeukPack] ${i + 1}. ${checkPath} [${checkPath && (0, fs_1.existsSync)(checkPath) ? 'EXISTS' : 'NOT FOUND'}]`);
|
|
233
|
+
}
|
|
234
|
+
if (includePaths.length > 10) {
|
|
235
|
+
console.error(`[DeukPack] ... and ${includePaths.length - 10} more locations`);
|
|
236
|
+
}
|
|
237
|
+
throw new Error(`${errorMsg} (referenced from ${currentPath})`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
try {
|
|
242
|
+
await parseFileRecursive(filePath);
|
|
243
|
+
const referencedEnums = new Map();
|
|
244
|
+
for (const struct of allStructs) {
|
|
245
|
+
for (const field of struct.fields) {
|
|
246
|
+
let typeStr = '';
|
|
247
|
+
if (typeof field.type === 'string') {
|
|
248
|
+
typeStr = field.type;
|
|
249
|
+
}
|
|
250
|
+
else if (typeof field.type === 'object' && field.type !== null) {
|
|
251
|
+
if ('structType' in field.type && typeof field.type.structType === 'string') {
|
|
252
|
+
typeStr = field.type.structType;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (typeStr && typeof typeStr === 'string' && typeStr.includes('.')) {
|
|
256
|
+
const parts = typeStr.split('.');
|
|
257
|
+
if (parts.length === 2) {
|
|
258
|
+
const [nsName, typeName] = parts;
|
|
259
|
+
if (typeName && typeof typeName === 'string' && nsName && typeof nsName === 'string' && typeName.endsWith('_e')) {
|
|
260
|
+
const existingEnum = allEnums.find(e => e.name === typeName);
|
|
261
|
+
const existingStruct = allStructs.find(s => s.name === typeName);
|
|
262
|
+
if (!existingEnum && !existingStruct) {
|
|
263
|
+
const key = `${nsName}.${typeName}`;
|
|
264
|
+
if (!referencedEnums.has(key)) {
|
|
265
|
+
const namespaceDef = allNamespaces.find(ns => ns.name === nsName);
|
|
266
|
+
const targetFile = (namespaceDef?.sourceFile ||
|
|
267
|
+
Object.keys(fileNamespaceMap).find(f => fileNamespaceMap[f] === nsName) ||
|
|
268
|
+
filePath);
|
|
269
|
+
referencedEnums.set(key, { namespace: nsName, name: typeName });
|
|
270
|
+
const finalTargetFile = targetFile || filePath;
|
|
271
|
+
if (!allEnums.find(e => e.name === typeName && (e.sourceFile ?? '') === finalTargetFile)) {
|
|
272
|
+
const newEnum = {
|
|
273
|
+
name: typeName,
|
|
274
|
+
values: { _NONE: 0, _END: 1 },
|
|
275
|
+
sourceFile: finalTargetFile
|
|
276
|
+
};
|
|
277
|
+
allEnums.push(newEnum);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const mergedAST = {
|
|
287
|
+
structs: allStructs,
|
|
288
|
+
enums: allEnums,
|
|
289
|
+
namespaces: allNamespaces,
|
|
290
|
+
typedefs: allTypedefs,
|
|
291
|
+
constants: allConstants,
|
|
292
|
+
services: allServices,
|
|
293
|
+
includes: allIncludes,
|
|
294
|
+
filesProcessed: processedFiles.size,
|
|
295
|
+
fileNamespaceMap: fileNamespaceMap
|
|
296
|
+
};
|
|
297
|
+
this.performanceMetrics.parseTime = Date.now() - startTime;
|
|
298
|
+
this.performanceMetrics.fileCount = processedFiles.size;
|
|
299
|
+
return mergedAST;
|
|
300
|
+
}
|
|
301
|
+
catch (error) {
|
|
302
|
+
throw new Error(`Failed to parse file with includes ${filePath}: ${error.message}`);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Build complete project from IDL files
|
|
307
|
+
*/
|
|
308
|
+
async build(filePaths, _outputDir, options) {
|
|
309
|
+
try {
|
|
310
|
+
const ast = await this.parseFiles(filePaths);
|
|
311
|
+
await this.generateCode(ast, options);
|
|
312
|
+
return this.getPerformanceMetrics();
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
throw new DeukPackTypes_1.DeukPackException(`Failed to build project: ${error.message}`);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Get performance metrics
|
|
320
|
+
*/
|
|
321
|
+
getPerformanceMetrics() {
|
|
322
|
+
return this.performanceMonitor.getMetrics();
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Reset performance metrics
|
|
326
|
+
*/
|
|
327
|
+
resetMetrics() {
|
|
328
|
+
this.performanceMonitor.reset();
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Validate schema
|
|
332
|
+
*/
|
|
333
|
+
validateSchema(ast) {
|
|
334
|
+
const errors = [];
|
|
335
|
+
for (const structDef of ast.structs) {
|
|
336
|
+
const fieldIds = new Set();
|
|
337
|
+
for (const field of structDef.fields) {
|
|
338
|
+
if (fieldIds.has(field.id)) {
|
|
339
|
+
errors.push({
|
|
340
|
+
message: `Duplicate field ID ${field.id} in struct ${structDef.name}`,
|
|
341
|
+
line: 0,
|
|
342
|
+
column: 0,
|
|
343
|
+
file: '',
|
|
344
|
+
severity: 'error'
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
fieldIds.add(field.id);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
for (const enumDef of ast.enums) {
|
|
351
|
+
const values = new Set();
|
|
352
|
+
for (const [, value] of Object.entries(enumDef.values)) {
|
|
353
|
+
if (values.has(value)) {
|
|
354
|
+
errors.push({
|
|
355
|
+
message: `Duplicate enum value ${value} in enum ${enumDef.name}`,
|
|
356
|
+
line: 0,
|
|
357
|
+
column: 0,
|
|
358
|
+
file: '',
|
|
359
|
+
severity: 'error'
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
values.add(value);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
return errors;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Get engine information
|
|
369
|
+
*/
|
|
370
|
+
getEngineInfo() {
|
|
371
|
+
return {
|
|
372
|
+
name: 'DeukPack',
|
|
373
|
+
version: '1.0.0',
|
|
374
|
+
native: this.useNative
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
exports.DeukPackEngine = DeukPackEngine;
|
|
379
|
+
//# sourceMappingURL=DeukPackEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeukPackEngine.js","sourceRoot":"","sources":["../../src/core/DeukPackEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeukPack Generator
|
|
3
|
+
* Multi-language code generation
|
|
4
|
+
*/
|
|
5
|
+
import { DeukPackAST, GenerationOptions } from '../types/DeukPackTypes';
|
|
6
|
+
export declare class DeukPackGenerator {
|
|
7
|
+
generateCode(_ast: DeukPackAST, _options: GenerationOptions): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=DeukPackGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeukPackGenerator.d.ts","sourceRoot":"","sources":["../../src/core/DeukPackGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAExE,qBAAa,iBAAiB;IACtB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAIlF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DeukPack Generator
|
|
4
|
+
* Multi-language code generation
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.DeukPackGenerator = void 0;
|
|
8
|
+
class DeukPackGenerator {
|
|
9
|
+
async generateCode(_ast, _options) {
|
|
10
|
+
// TODO: Implement code generation logic
|
|
11
|
+
console.log('Code generation not yet implemented');
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.DeukPackGenerator = DeukPackGenerator;
|
|
15
|
+
//# sourceMappingURL=DeukPackGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeukPackGenerator.js","sourceRoot":"","sources":["../../src/core/DeukPackGenerator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH,MAAa,iBAAiB;IAC5B,KAAK,CAAC,YAAY,CAAC,IAAiB,EAAE,QAA2B;QAC/D,wCAAwC;QACxC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;CACF;AALD,8CAKC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeukPack .deuk IDL Parser
|
|
3
|
+
* Produces DeukPackAST from .deuk source using DeukLexer and DeukPackASTBuilder (deuk mode).
|
|
4
|
+
*/
|
|
5
|
+
import { DeukPackAST } from '../types/DeukPackTypes';
|
|
6
|
+
export declare class DeukParser {
|
|
7
|
+
private lexer;
|
|
8
|
+
private astBuilder;
|
|
9
|
+
constructor();
|
|
10
|
+
parse(content: string, filePath: string): DeukPackAST;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=DeukParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeukParser.d.ts","sourceRoot":"","sources":["../../src/core/DeukParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAqB,MAAM,wBAAwB,CAAC;AAIxE,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,UAAU,CAAqB;;IAOvC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;CAQtD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DeukPack .deuk IDL Parser
|
|
4
|
+
* Produces DeukPackAST from .deuk source using DeukLexer and DeukPackASTBuilder (deuk mode).
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.DeukParser = void 0;
|
|
8
|
+
const DeukPackTypes_1 = require("../types/DeukPackTypes");
|
|
9
|
+
const DeukLexer_1 = require("../lexer/DeukLexer");
|
|
10
|
+
const DeukPackASTBuilder_1 = require("../ast/DeukPackASTBuilder");
|
|
11
|
+
class DeukParser {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.lexer = new DeukLexer_1.DeukLexer();
|
|
14
|
+
this.astBuilder = new DeukPackASTBuilder_1.DeukPackASTBuilder();
|
|
15
|
+
}
|
|
16
|
+
parse(content, filePath) {
|
|
17
|
+
try {
|
|
18
|
+
const tokens = this.lexer.tokenize(content);
|
|
19
|
+
return this.astBuilder.build(tokens, filePath, { deuk: true });
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
throw new DeukPackTypes_1.DeukPackException(`Failed to parse .deuk file ${filePath}: ${error.message}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.DeukParser = DeukParser;
|
|
27
|
+
//# sourceMappingURL=DeukParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeukParser.js","sourceRoot":"","sources":["../../src/core/DeukParser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,0DAAwE;AACxE,kDAA+C;AAC/C,kEAA+D;AAE/D,MAAa,UAAU;IAIrB;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,uCAAkB,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,QAAgB;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,iCAAiB,CAAC,8BAA8B,QAAQ,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;CACF;AAjBD,gCAiBC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IDL Parser (.thrift-style source → DeukPackAST)
|
|
3
|
+
* Same pattern as ProtoParser: lexer + shared AST builder.
|
|
4
|
+
*/
|
|
5
|
+
import { DeukPackAST } from '../types/DeukPackTypes';
|
|
6
|
+
export declare class IdlParser {
|
|
7
|
+
private lexer;
|
|
8
|
+
private astBuilder;
|
|
9
|
+
private includeCache;
|
|
10
|
+
constructor();
|
|
11
|
+
parse(content: string, filePath: string): DeukPackAST;
|
|
12
|
+
parseFiles(filePaths: string[]): Promise<DeukPackAST>;
|
|
13
|
+
parseFile(filePath: string): Promise<DeukPackAST>;
|
|
14
|
+
parseContent(content: string, fileName?: string): DeukPackAST;
|
|
15
|
+
private mergeASTs;
|
|
16
|
+
private removeDuplicateStructs;
|
|
17
|
+
private removeDuplicateEnums;
|
|
18
|
+
private removeDuplicateServices;
|
|
19
|
+
private removeDuplicateTypedefs;
|
|
20
|
+
private removeDuplicateConstants;
|
|
21
|
+
clearCache(): void;
|
|
22
|
+
getCacheStats(): {
|
|
23
|
+
size: number;
|
|
24
|
+
files: string[];
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=IdlParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdlParser.d.ts","sourceRoot":"","sources":["../../src/core/IdlParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAuG,MAAM,wBAAwB,CAAC;AAI1J,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,YAAY,CAAuC;;IAO3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAS/C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAcrD,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAavD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAoB,GAAG,WAAW;IAS1E,OAAO,CAAC,SAAS;IA6BjB,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,wBAAwB;IAKhC,UAAU,IAAI,IAAI;IAElB,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE;CAGnD"}
|