@irrelon/battlescript 4.0.1 → 5.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.
Files changed (139) hide show
  1. package/bin/functionality.ts +65 -1
  2. package/bin/index.js +16436 -14825
  3. package/bin/index.js.map +1 -1
  4. package/bin/index.ts +20 -3
  5. package/dist/bin/functionality.cjs +16357 -14731
  6. package/dist/bin/functionality.cjs.map +1 -1
  7. package/dist/bin/functionality.d.ts +4 -0
  8. package/dist/bin/functionality.d.ts.map +1 -1
  9. package/dist/bin/{functionality.js → functionality.mjs} +16357 -14733
  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 +60 -54
  16. package/dist/exports/typescript/enums/EnumNodeProp.d.ts.map +1 -1
  17. package/dist/exports/typescript/enums/EnumOperator.d.ts +7 -4
  18. package/dist/exports/typescript/enums/EnumOperator.d.ts.map +1 -1
  19. package/dist/exports/typescript/helpers/miniAstLayout.d.ts.map +1 -1
  20. package/dist/index.cjs +16568 -14962
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.mjs +16555 -14963
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/nativeLibraries/index.d.ts.map +1 -1
  25. package/dist/nativeLibraries/time/index.d.ts +1 -1
  26. package/dist/services/cppGenerator/ProtocolToCpp.d.ts +71 -0
  27. package/dist/services/cppGenerator/ProtocolToCpp.d.ts.map +1 -0
  28. package/dist/services/cppGenerator/index.d.ts +2 -0
  29. package/dist/services/cppGenerator/index.d.ts.map +1 -0
  30. package/dist/services/fullAst/BattleScriptFromAST.d.ts +11 -1
  31. package/dist/services/fullAst/BattleScriptFromAST.d.ts.map +1 -1
  32. package/dist/services/fullAst/BattleScriptToAST.d.ts +7 -4
  33. package/dist/services/fullAst/BattleScriptToAST.d.ts.map +1 -1
  34. package/dist/services/fullAst/index.d.ts +1 -0
  35. package/dist/services/fullAst/index.d.ts.map +1 -1
  36. package/dist/services/fullAst/normaliseFormatting.d.ts +9 -0
  37. package/dist/services/fullAst/normaliseFormatting.d.ts.map +1 -0
  38. package/dist/services/grammar/ts/language/BattleScriptLexer.d.ts +85 -81
  39. package/dist/services/grammar/ts/language/BattleScriptLexer.d.ts.map +1 -1
  40. package/dist/services/grammar/ts/language/BattleScriptListener.d.ts +49 -5
  41. package/dist/services/grammar/ts/language/BattleScriptListener.d.ts.map +1 -1
  42. package/dist/services/grammar/ts/language/BattleScriptParser.d.ts +245 -185
  43. package/dist/services/grammar/ts/language/BattleScriptParser.d.ts.map +1 -1
  44. package/dist/services/grammar/ts/language/BattleScriptVisitor.d.ts +31 -3
  45. package/dist/services/grammar/ts/language/BattleScriptVisitor.d.ts.map +1 -1
  46. package/dist/services/index.d.ts +1 -0
  47. package/dist/services/index.d.ts.map +1 -1
  48. package/dist/services/miniAst/BattleScriptToMiniAST.d.ts.map +1 -1
  49. package/dist/services/miniAst/miniAstLayout.d.ts.map +1 -1
  50. package/dist/services/parser.d.ts +2 -2
  51. package/dist/services/parser.d.ts.map +1 -1
  52. package/dist/services/utils.d.ts +10 -0
  53. package/dist/services/utils.d.ts.map +1 -1
  54. package/dist/tests/ast/compoundAssignment.test.d.ts +2 -0
  55. package/dist/tests/ast/compoundAssignment.test.d.ts.map +1 -0
  56. package/dist/tests/ast/hex-literal.test.d.ts +2 -0
  57. package/dist/tests/ast/hex-literal.test.d.ts.map +1 -0
  58. package/dist/tests/ast/number-literal.test.d.ts +2 -0
  59. package/dist/tests/ast/number-literal.test.d.ts.map +1 -0
  60. package/dist/tests/miniAst/ordering.test.d.ts +2 -0
  61. package/dist/tests/miniAst/ordering.test.d.ts.map +1 -0
  62. package/dist/tsconfig.types.tsbuildinfo +1 -1
  63. package/dist/types/BattleScriptDiagnostic.d.ts +19 -0
  64. package/dist/types/BattleScriptDiagnostic.d.ts.map +1 -0
  65. package/dist/types/BattleScriptTransformerOptions.d.ts +7 -0
  66. package/dist/types/BattleScriptTransformerOptions.d.ts.map +1 -1
  67. package/dist/types/VisitOptions.d.ts +6 -0
  68. package/dist/types/VisitOptions.d.ts.map +1 -1
  69. package/dist/types/ast/nodes/AssignmentExpressionNode.d.ts +6 -0
  70. package/dist/types/ast/nodes/AssignmentExpressionNode.d.ts.map +1 -1
  71. package/dist/types/ast/nodes/AssignmentPatternNode.d.ts.map +1 -1
  72. package/dist/types/ast/nodes/AstNode.d.ts +2 -2
  73. package/dist/types/ast/nodes/AstNode.d.ts.map +1 -1
  74. package/dist/types/ast/nodes/AstNodeBase.d.ts +7 -0
  75. package/dist/types/ast/nodes/AstNodeBase.d.ts.map +1 -1
  76. package/dist/types/ast/nodes/CancelStatementNode.d.ts.map +1 -1
  77. package/dist/types/ast/nodes/CatchStatementNode.d.ts.map +1 -1
  78. package/dist/types/ast/nodes/ConstantDeclarationNode.d.ts.map +1 -1
  79. package/dist/types/ast/nodes/EveryExpressionNode.d.ts +1 -0
  80. package/dist/types/ast/nodes/EveryExpressionNode.d.ts.map +1 -1
  81. package/dist/types/ast/nodes/ExportNamedDeclarationNode.d.ts +2 -4
  82. package/dist/types/ast/nodes/ExportNamedDeclarationNode.d.ts.map +1 -1
  83. package/dist/types/ast/nodes/ExportSpecifierNode.d.ts +2 -4
  84. package/dist/types/ast/nodes/ExportSpecifierNode.d.ts.map +1 -1
  85. package/dist/types/ast/nodes/ExpressionStatementNode.d.ts.map +1 -1
  86. package/dist/types/ast/nodes/ForwardStatementNode.d.ts +2 -0
  87. package/dist/types/ast/nodes/ForwardStatementNode.d.ts.map +1 -1
  88. package/dist/types/ast/nodes/FunctionDefinitionNode.d.ts.map +1 -1
  89. package/dist/types/ast/nodes/IdentifierNode.d.ts +2 -2
  90. package/dist/types/ast/nodes/IdentifierNode.d.ts.map +1 -1
  91. package/dist/types/ast/nodes/IfStatementNode.d.ts.map +1 -1
  92. package/dist/types/ast/nodes/ImportDeclarationNode.d.ts.map +1 -1
  93. package/dist/types/ast/nodes/ImportSpecifierNode.d.ts +2 -4
  94. package/dist/types/ast/nodes/ImportSpecifierNode.d.ts.map +1 -1
  95. package/dist/types/ast/nodes/InterfaceNode.d.ts.map +1 -1
  96. package/dist/types/ast/nodes/InterfacePropertyDeclarationNode.d.ts.map +1 -1
  97. package/dist/types/ast/nodes/LiteralIntNode.d.ts +10 -0
  98. package/dist/types/ast/nodes/LiteralIntNode.d.ts.map +1 -1
  99. package/dist/types/ast/nodes/ObjectExpressionNode.d.ts +9 -2
  100. package/dist/types/ast/nodes/ObjectExpressionNode.d.ts.map +1 -1
  101. package/dist/types/ast/nodes/OffsetStatementNode.d.ts +2 -0
  102. package/dist/types/ast/nodes/OffsetStatementNode.d.ts.map +1 -1
  103. package/dist/types/ast/nodes/OptimisedAssignmentExpressionNode.d.ts.map +1 -1
  104. package/dist/types/ast/nodes/ParityDeclarationNode.d.ts.map +1 -1
  105. package/dist/types/ast/nodes/ProgramPropertyDeclarationNode.d.ts.map +1 -1
  106. package/dist/types/ast/nodes/ProtocolDeclarationNode.d.ts.map +1 -1
  107. package/dist/types/ast/nodes/ProtocolReadTypeNode.d.ts +2 -0
  108. package/dist/types/ast/nodes/ProtocolReadTypeNode.d.ts.map +1 -1
  109. package/dist/types/ast/nodes/ProtocolTypeNode.d.ts +2 -0
  110. package/dist/types/ast/nodes/ProtocolTypeNode.d.ts.map +1 -1
  111. package/dist/types/ast/nodes/RestElementNode.d.ts.map +1 -1
  112. package/dist/types/ast/nodes/ResumeStatementNode.d.ts +11 -0
  113. package/dist/types/ast/nodes/ResumeStatementNode.d.ts.map +1 -0
  114. package/dist/types/ast/nodes/ReturnStatementNode.d.ts.map +1 -1
  115. package/dist/types/ast/nodes/RewindStatementNode.d.ts +2 -0
  116. package/dist/types/ast/nodes/RewindStatementNode.d.ts.map +1 -1
  117. package/dist/types/ast/nodes/RuleStatementNode.d.ts +4 -0
  118. package/dist/types/ast/nodes/RuleStatementNode.d.ts.map +1 -1
  119. package/dist/types/ast/nodes/StartStatementNode.d.ts +11 -0
  120. package/dist/types/ast/nodes/StartStatementNode.d.ts.map +1 -0
  121. package/dist/types/ast/nodes/StateDeclarationNode.d.ts.map +1 -1
  122. package/dist/types/ast/nodes/StateModuleDeclarationNode.d.ts.map +1 -1
  123. package/dist/types/ast/nodes/StateModuleEventDeclarationNode.d.ts.map +1 -1
  124. package/dist/types/ast/nodes/StepDeclarationNode.d.ts.map +1 -1
  125. package/dist/types/ast/nodes/StopStatementNode.d.ts +11 -0
  126. package/dist/types/ast/nodes/StopStatementNode.d.ts.map +1 -0
  127. package/dist/types/ast/nodes/VariableDeclarationNode.d.ts.map +1 -1
  128. package/dist/types/ast/nodes/index.d.ts +3 -0
  129. package/dist/types/ast/nodes/index.d.ts.map +1 -1
  130. package/dist/types/ast/operators/ArithmaticOperator.d.ts +1 -1
  131. package/dist/types/ast/operators/ArithmaticOperator.d.ts.map +1 -1
  132. package/dist/types/ast/operators/OtherOperator.d.ts +1 -1
  133. package/dist/types/ast/operators/OtherOperator.d.ts.map +1 -1
  134. package/dist/types/ast/unions/ProtocolBodyUnion.d.ts +2 -2
  135. package/dist/types/ast/unions/ProtocolBodyUnion.d.ts.map +1 -1
  136. package/dist/types/index.d.ts +1 -0
  137. package/dist/types/index.d.ts.map +1 -1
  138. package/package.json +6 -4
  139. package/dist/bin/functionality.js.map +0 -1
@@ -7,9 +7,11 @@ 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";
@@ -24,6 +26,8 @@ export {
24
26
  miniAstFromBinaryBuffer
25
27
  }
26
28
 
29
+ export type {SourceResolverAsync, SourceResolverSync}
30
+
27
31
  export const sourceResolverAsync: SourceResolverAsync = (filePath: string) => {
28
32
  return readFile(filePath, "utf-8")
29
33
  };
@@ -179,6 +183,66 @@ export async function fromBinary(inputPath: string, outputPath: string) {
179
183
  }
180
184
  }
181
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
+
182
246
  export function changeExtension(filePath: string, newExt: string): string {
183
247
  const dir = dirname(filePath);
184
248
  const base = basename(filePath, extname(filePath));