@irrelon/battlescript 4.0.0 → 4.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/bin/functionality.ts +77 -3
  2. package/bin/index.js +16304 -14772
  3. package/bin/index.js.map +1 -1
  4. package/bin/index.ts +20 -3
  5. package/dist/bin/functionality.cjs +16324 -14768
  6. package/dist/bin/functionality.cjs.map +1 -1
  7. package/dist/bin/functionality.d.ts +9 -0
  8. package/dist/bin/functionality.d.ts.map +1 -1
  9. package/dist/bin/{functionality.js → functionality.mjs} +15994 -14449
  10. package/dist/bin/functionality.mjs.map +1 -0
  11. package/dist/bin/index.d.ts +2 -2
  12. package/dist/bin/index.d.ts.map +1 -1
  13. package/dist/exports/typescript/enums/EnumNodeKind.d.ts +4 -1
  14. package/dist/exports/typescript/enums/EnumNodeKind.d.ts.map +1 -1
  15. package/dist/exports/typescript/enums/EnumNodeProp.d.ts +56 -54
  16. package/dist/exports/typescript/enums/EnumNodeProp.d.ts.map +1 -1
  17. package/dist/exports/typescript/helpers/miniAstLayout.d.ts.map +1 -1
  18. package/dist/index.cjs +16442 -14929
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.mjs +16431 -14930
  21. package/dist/index.mjs.map +1 -1
  22. package/dist/nativeLibraries/index.d.ts.map +1 -1
  23. package/dist/nativeLibraries/time/index.d.ts +1 -1
  24. package/dist/services/cppGenerator/ProtocolToCpp.d.ts +71 -0
  25. package/dist/services/cppGenerator/ProtocolToCpp.d.ts.map +1 -0
  26. package/dist/services/cppGenerator/index.d.ts +2 -0
  27. package/dist/services/cppGenerator/index.d.ts.map +1 -0
  28. package/dist/services/fullAst/BattleScriptFromAST.d.ts +11 -1
  29. package/dist/services/fullAst/BattleScriptFromAST.d.ts.map +1 -1
  30. package/dist/services/fullAst/BattleScriptToAST.d.ts +7 -4
  31. package/dist/services/fullAst/BattleScriptToAST.d.ts.map +1 -1
  32. package/dist/services/fullAst/index.d.ts +1 -0
  33. package/dist/services/fullAst/index.d.ts.map +1 -1
  34. package/dist/services/fullAst/normaliseFormatting.d.ts +9 -0
  35. package/dist/services/fullAst/normaliseFormatting.d.ts.map +1 -0
  36. package/dist/services/grammar/ts/language/BattleScriptLexer.d.ts +85 -81
  37. package/dist/services/grammar/ts/language/BattleScriptLexer.d.ts.map +1 -1
  38. package/dist/services/grammar/ts/language/BattleScriptListener.d.ts +49 -5
  39. package/dist/services/grammar/ts/language/BattleScriptListener.d.ts.map +1 -1
  40. package/dist/services/grammar/ts/language/BattleScriptParser.d.ts +245 -185
  41. package/dist/services/grammar/ts/language/BattleScriptParser.d.ts.map +1 -1
  42. package/dist/services/grammar/ts/language/BattleScriptVisitor.d.ts +31 -3
  43. package/dist/services/grammar/ts/language/BattleScriptVisitor.d.ts.map +1 -1
  44. package/dist/services/index.d.ts +1 -0
  45. package/dist/services/index.d.ts.map +1 -1
  46. package/dist/services/miniAst/BattleScriptToMiniAST.d.ts.map +1 -1
  47. package/dist/services/miniAst/binaryTypeToByteSize.d.ts +1 -1
  48. package/dist/services/miniAst/miniAstLayout.d.ts.map +1 -1
  49. package/dist/services/parser.d.ts +2 -2
  50. package/dist/services/parser.d.ts.map +1 -1
  51. package/dist/tests/miniAst/ordering.test.d.ts +2 -0
  52. package/dist/tests/miniAst/ordering.test.d.ts.map +1 -0
  53. package/dist/tsconfig.types.tsbuildinfo +1 -1
  54. package/dist/types/BattleScriptDiagnostic.d.ts +19 -0
  55. package/dist/types/BattleScriptDiagnostic.d.ts.map +1 -0
  56. package/dist/types/BattleScriptTransformerOptions.d.ts +7 -0
  57. package/dist/types/BattleScriptTransformerOptions.d.ts.map +1 -1
  58. package/dist/types/VisitOptions.d.ts +6 -0
  59. package/dist/types/VisitOptions.d.ts.map +1 -1
  60. package/dist/types/ast/nodes/AssignmentPatternNode.d.ts.map +1 -1
  61. package/dist/types/ast/nodes/AstNode.d.ts +2 -2
  62. package/dist/types/ast/nodes/AstNode.d.ts.map +1 -1
  63. package/dist/types/ast/nodes/AstNodeBase.d.ts +7 -0
  64. package/dist/types/ast/nodes/AstNodeBase.d.ts.map +1 -1
  65. package/dist/types/ast/nodes/CancelStatementNode.d.ts.map +1 -1
  66. package/dist/types/ast/nodes/CatchStatementNode.d.ts.map +1 -1
  67. package/dist/types/ast/nodes/ConstantDeclarationNode.d.ts.map +1 -1
  68. package/dist/types/ast/nodes/EveryExpressionNode.d.ts +1 -0
  69. package/dist/types/ast/nodes/EveryExpressionNode.d.ts.map +1 -1
  70. package/dist/types/ast/nodes/ExportNamedDeclarationNode.d.ts +2 -4
  71. package/dist/types/ast/nodes/ExportNamedDeclarationNode.d.ts.map +1 -1
  72. package/dist/types/ast/nodes/ExportSpecifierNode.d.ts +2 -4
  73. package/dist/types/ast/nodes/ExportSpecifierNode.d.ts.map +1 -1
  74. package/dist/types/ast/nodes/ExpressionStatementNode.d.ts.map +1 -1
  75. package/dist/types/ast/nodes/FunctionDefinitionNode.d.ts.map +1 -1
  76. package/dist/types/ast/nodes/IdentifierNode.d.ts +2 -2
  77. package/dist/types/ast/nodes/IdentifierNode.d.ts.map +1 -1
  78. package/dist/types/ast/nodes/IfStatementNode.d.ts.map +1 -1
  79. package/dist/types/ast/nodes/ImportDeclarationNode.d.ts.map +1 -1
  80. package/dist/types/ast/nodes/ImportSpecifierNode.d.ts +2 -4
  81. package/dist/types/ast/nodes/ImportSpecifierNode.d.ts.map +1 -1
  82. package/dist/types/ast/nodes/InterfaceNode.d.ts.map +1 -1
  83. package/dist/types/ast/nodes/InterfacePropertyDeclarationNode.d.ts.map +1 -1
  84. package/dist/types/ast/nodes/ObjectExpressionNode.d.ts +9 -2
  85. package/dist/types/ast/nodes/ObjectExpressionNode.d.ts.map +1 -1
  86. package/dist/types/ast/nodes/ParityDeclarationNode.d.ts.map +1 -1
  87. package/dist/types/ast/nodes/ProgramPropertyDeclarationNode.d.ts.map +1 -1
  88. package/dist/types/ast/nodes/ProtocolDeclarationNode.d.ts.map +1 -1
  89. package/dist/types/ast/nodes/ProtocolTypeNode.d.ts.map +1 -1
  90. package/dist/types/ast/nodes/RestElementNode.d.ts.map +1 -1
  91. package/dist/types/ast/nodes/ResumeStatementNode.d.ts +11 -0
  92. package/dist/types/ast/nodes/ResumeStatementNode.d.ts.map +1 -0
  93. package/dist/types/ast/nodes/ReturnStatementNode.d.ts.map +1 -1
  94. package/dist/types/ast/nodes/StartStatementNode.d.ts +11 -0
  95. package/dist/types/ast/nodes/StartStatementNode.d.ts.map +1 -0
  96. package/dist/types/ast/nodes/StateDeclarationNode.d.ts.map +1 -1
  97. package/dist/types/ast/nodes/StateModuleDeclarationNode.d.ts.map +1 -1
  98. package/dist/types/ast/nodes/StateModuleEventDeclarationNode.d.ts.map +1 -1
  99. package/dist/types/ast/nodes/StepDeclarationNode.d.ts.map +1 -1
  100. package/dist/types/ast/nodes/StopStatementNode.d.ts +11 -0
  101. package/dist/types/ast/nodes/StopStatementNode.d.ts.map +1 -0
  102. package/dist/types/ast/nodes/VariableDeclarationNode.d.ts.map +1 -1
  103. package/dist/types/ast/nodes/index.d.ts +3 -0
  104. package/dist/types/ast/nodes/index.d.ts.map +1 -1
  105. package/dist/types/ast/unions/ProtocolBodyUnion.d.ts +2 -2
  106. package/dist/types/ast/unions/ProtocolBodyUnion.d.ts.map +1 -1
  107. package/dist/types/index.d.ts +1 -0
  108. package/dist/types/index.d.ts.map +1 -1
  109. package/package.json +6 -4
  110. package/dist/bin/functionality.js.map +0 -1
@@ -7,18 +7,32 @@ import {
7
7
  fromSourceCodeToBinary,
8
8
  fromSourceCodeToFullAst,
9
9
  fromSourceCodeToMiniAst,
10
- miniAstFromBinaryBuffer
10
+ miniAstFromBinaryBuffer,
11
+ generateCppFromProtocolAst
11
12
  } from "@/services";
12
13
  import type {SourceResolverAsync, SourceResolverSync} from "@/types";
14
+ import type {CppGeneratorOptions} from "@/services/cppGenerator";
13
15
  import {version} from "../package.json";
14
16
  import {readFileSync} from "fs";
15
17
  import {writeFileSync} from "node:fs";
16
18
 
17
- const sourceResolverAsync: SourceResolverAsync = (filePath: string) => {
19
+ export {
20
+ fromFullAstToSourceCode,
21
+ fromMiniAstToBinary,
22
+ fromMiniAstToSourceCode,
23
+ fromSourceCodeToBinary,
24
+ fromSourceCodeToFullAst,
25
+ fromSourceCodeToMiniAst,
26
+ miniAstFromBinaryBuffer
27
+ }
28
+
29
+ export type {SourceResolverAsync, SourceResolverSync}
30
+
31
+ export const sourceResolverAsync: SourceResolverAsync = (filePath: string) => {
18
32
  return readFile(filePath, "utf-8")
19
33
  };
20
34
 
21
- const sourceResolverSync: SourceResolverSync = (filePath: string): string => {
35
+ export const sourceResolverSync: SourceResolverSync = (filePath: string): string => {
22
36
  return readFileSync(filePath, "utf-8")
23
37
  };
24
38
 
@@ -169,6 +183,66 @@ export async function fromBinary(inputPath: string, outputPath: string) {
169
183
  }
170
184
  }
171
185
 
186
+ export async function toCpp(inputPath: string, outputDir?: string, options?: CppGeneratorOptions) {
187
+ console.log(`[BattleScript ${version}] toCpp: ${inputPath}`);
188
+ try {
189
+ const sourceCode = await sourceResolverAsync(inputPath);
190
+ const ast = fromSourceCodeToFullAst(sourceCode, {
191
+ filePath: inputPath,
192
+ includeMetaData: false,
193
+ sourceResolver: sourceResolverSync
194
+ });
195
+
196
+ const result = generateCppFromProtocolAst(ast, options);
197
+
198
+ // Determine output directory
199
+ const outputDirectory = outputDir ?? dirname(inputPath);
200
+ const headerPath = join(outputDirectory, result.headerFileName);
201
+ const sourcePath = join(outputDirectory, result.sourceFileName);
202
+
203
+ await writeFile(headerPath, result.headerContent);
204
+ await writeFile(sourcePath, result.sourceContent);
205
+
206
+ console.log(`[BattleScript ${version}] Generated C++ header: ${headerPath}`);
207
+ console.log(`[BattleScript ${version}] Generated C++ source: ${sourcePath}`);
208
+
209
+ return result;
210
+ } catch (error) {
211
+ console.error(`[BattleScript ${version}] Error:`, (error as Error).stack);
212
+ process.exit(1);
213
+ }
214
+ }
215
+
216
+ export function toCppSync(inputPath: string, outputDir?: string, options?: CppGeneratorOptions) {
217
+ console.log(`[BattleScript ${version}] toCppSync: ${inputPath}`);
218
+ try {
219
+ const sourceCode = sourceResolverSync(inputPath);
220
+ const ast = fromSourceCodeToFullAst(sourceCode, {
221
+ filePath: inputPath,
222
+ includeMetaData: false,
223
+ sourceResolver: sourceResolverSync
224
+ });
225
+
226
+ const result = generateCppFromProtocolAst(ast, options);
227
+
228
+ // Determine output directory
229
+ const outputDirectory = outputDir ?? dirname(inputPath);
230
+ const headerPath = join(outputDirectory, result.headerFileName);
231
+ const sourcePath = join(outputDirectory, result.sourceFileName);
232
+
233
+ writeFileSync(headerPath, result.headerContent);
234
+ writeFileSync(sourcePath, result.sourceContent);
235
+
236
+ console.log(`[BattleScript ${version}] Generated C++ header: ${headerPath}`);
237
+ console.log(`[BattleScript ${version}] Generated C++ source: ${sourcePath}`);
238
+
239
+ return result;
240
+ } catch (error) {
241
+ console.error(`[BattleScript ${version}] Error:`, (error as Error).stack);
242
+ process.exit(1);
243
+ }
244
+ }
245
+
172
246
  export function changeExtension(filePath: string, newExt: string): string {
173
247
  const dir = dirname(filePath);
174
248
  const base = basename(filePath, extname(filePath));