@irrelon/battlescript 4.0.1 → 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 +65 -1
  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 +16315 -14768
  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} +16315 -14770
  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,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));