@ugo-studio/jspp 0.1.3 → 0.1.5

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 (83) hide show
  1. package/README.md +2 -2
  2. package/dist/analysis/scope.js +33 -4
  3. package/dist/analysis/typeAnalyzer.js +260 -21
  4. package/dist/ast/symbols.js +29 -0
  5. package/dist/cli-utils/args.js +57 -0
  6. package/dist/cli-utils/colors.js +9 -0
  7. package/dist/cli-utils/file-utils.js +20 -0
  8. package/dist/cli-utils/spinner.js +55 -0
  9. package/dist/cli.js +105 -31
  10. package/dist/core/codegen/class-handlers.js +131 -0
  11. package/dist/core/codegen/control-flow-handlers.js +474 -0
  12. package/dist/core/codegen/declaration-handlers.js +36 -15
  13. package/dist/core/codegen/expression-handlers.js +579 -125
  14. package/dist/core/codegen/function-handlers.js +222 -37
  15. package/dist/core/codegen/helpers.js +158 -4
  16. package/dist/core/codegen/index.js +20 -8
  17. package/dist/core/codegen/literal-handlers.js +18 -6
  18. package/dist/core/codegen/statement-handlers.js +171 -228
  19. package/dist/core/codegen/visitor.js +31 -3
  20. package/package.json +3 -3
  21. package/src/prelude/any_value.hpp +510 -633
  22. package/src/prelude/any_value_access.hpp +151 -0
  23. package/src/prelude/any_value_defines.hpp +190 -0
  24. package/src/prelude/any_value_helpers.hpp +139 -225
  25. package/src/prelude/exception.hpp +32 -0
  26. package/src/prelude/exception_helpers.hpp +49 -0
  27. package/src/prelude/index.hpp +25 -9
  28. package/src/prelude/library/array.hpp +190 -0
  29. package/src/prelude/library/console.hpp +14 -13
  30. package/src/prelude/library/error.hpp +113 -0
  31. package/src/prelude/library/function.hpp +10 -0
  32. package/src/prelude/library/global.hpp +35 -4
  33. package/src/prelude/library/math.hpp +308 -0
  34. package/src/prelude/library/object.hpp +288 -0
  35. package/src/prelude/library/performance.hpp +2 -2
  36. package/src/prelude/library/process.hpp +39 -0
  37. package/src/prelude/library/promise.hpp +131 -0
  38. package/src/prelude/library/symbol.hpp +46 -59
  39. package/src/prelude/library/timer.hpp +92 -0
  40. package/src/prelude/scheduler.hpp +145 -0
  41. package/src/prelude/types.hpp +58 -1
  42. package/src/prelude/utils/access.hpp +345 -0
  43. package/src/prelude/utils/assignment_operators.hpp +99 -0
  44. package/src/prelude/utils/log_any_value/array.hpp +245 -0
  45. package/src/prelude/utils/log_any_value/config.hpp +32 -0
  46. package/src/prelude/utils/log_any_value/function.hpp +39 -0
  47. package/src/prelude/utils/log_any_value/fwd.hpp +15 -0
  48. package/src/prelude/utils/log_any_value/helpers.hpp +62 -0
  49. package/src/prelude/utils/log_any_value/log_any_value.hpp +94 -0
  50. package/src/prelude/utils/log_any_value/object.hpp +136 -0
  51. package/src/prelude/utils/log_any_value/primitives.hpp +43 -0
  52. package/src/prelude/utils/operators.hpp +751 -0
  53. package/src/prelude/utils/well_known_symbols.hpp +25 -0
  54. package/src/prelude/values/array.hpp +10 -7
  55. package/src/prelude/{descriptors.hpp → values/descriptors.hpp} +2 -2
  56. package/src/prelude/values/function.hpp +85 -51
  57. package/src/prelude/values/helpers/array.hpp +80 -35
  58. package/src/prelude/values/helpers/function.hpp +110 -77
  59. package/src/prelude/values/helpers/iterator.hpp +16 -10
  60. package/src/prelude/values/helpers/object.hpp +85 -10
  61. package/src/prelude/values/helpers/promise.hpp +181 -0
  62. package/src/prelude/values/helpers/string.hpp +3 -3
  63. package/src/prelude/values/helpers/symbol.hpp +2 -2
  64. package/src/prelude/values/iterator.hpp +14 -6
  65. package/src/prelude/values/object.hpp +14 -3
  66. package/src/prelude/values/promise.hpp +73 -0
  67. package/src/prelude/values/prototypes/array.hpp +855 -16
  68. package/src/prelude/values/prototypes/function.hpp +4 -4
  69. package/src/prelude/values/prototypes/iterator.hpp +11 -10
  70. package/src/prelude/values/prototypes/number.hpp +153 -0
  71. package/src/prelude/values/prototypes/object.hpp +26 -0
  72. package/src/prelude/values/prototypes/promise.hpp +134 -0
  73. package/src/prelude/values/prototypes/string.hpp +29 -29
  74. package/src/prelude/values/prototypes/symbol.hpp +22 -3
  75. package/src/prelude/values/shape.hpp +52 -0
  76. package/src/prelude/values/string.hpp +1 -1
  77. package/src/prelude/values/symbol.hpp +1 -1
  78. package/src/prelude/access.hpp +0 -91
  79. package/src/prelude/error.hpp +0 -31
  80. package/src/prelude/error_helpers.hpp +0 -59
  81. package/src/prelude/log_string.hpp +0 -407
  82. package/src/prelude/operators.hpp +0 -256
  83. package/src/prelude/well_known_symbols.hpp +0 -14
@@ -1,10 +1,12 @@
1
1
  import ts from "typescript";
2
2
  import { CodeGenerator } from "./";
3
+ import { visitClassDeclaration } from "./class-handlers";
4
+ import { visitCaseClause, visitDefaultClause, visitDoStatement, visitForInStatement, visitForOfStatement, visitForStatement, visitSwitchStatement, visitWhileStatement, } from "./control-flow-handlers";
3
5
  import { visitVariableDeclaration, visitVariableDeclarationList, } from "./declaration-handlers";
4
- import { visitArrayLiteralExpression, visitBinaryExpression, visitCallExpression, visitElementAccessExpression, visitObjectLiteralExpression, visitParenthesizedExpression, visitPostfixUnaryExpression, visitPrefixUnaryExpression, visitPropertyAccessExpression, visitTemplateExpression, visitVoidExpression, } from "./expression-handlers";
6
+ import { visitArrayLiteralExpression, visitAwaitExpression, visitBinaryExpression, visitCallExpression, visitConditionalExpression, visitDeleteExpression, visitElementAccessExpression, visitNewExpression, visitObjectLiteralExpression, visitParenthesizedExpression, visitPostfixUnaryExpression, visitPrefixUnaryExpression, visitPropertyAccessExpression, visitTemplateExpression, visitTypeOfExpression, visitVoidExpression, } from "./expression-handlers";
5
7
  import { visitArrowFunction, visitFunctionDeclaration, visitFunctionExpression, } from "./function-handlers";
6
- import { visitFalseKeyword, visitIdentifier, visitNoSubstitutionTemplateLiteral, visitNullKeyword, visitNumericLiteral, visitStringLiteral, visitTrueKeyword, visitUndefinedKeyword, } from "./literal-handlers";
7
- import { visitBlock, visitBreakStatement, visitCatchClause, visitContinueStatement, visitExpressionStatement, visitForInStatement, visitForOfStatement, visitForStatement, visitIfStatement, visitReturnStatement, visitSourceFile, visitThrowStatement, visitTryStatement, visitVariableStatement, visitYieldExpression, } from "./statement-handlers";
8
+ import { visitFalseKeyword, visitIdentifier, visitNoSubstitutionTemplateLiteral, visitNullKeyword, visitNumericLiteral, visitStringLiteral, visitThisKeyword, visitTrueKeyword, visitUndefinedKeyword, } from "./literal-handlers";
9
+ import { visitBlock, visitBreakStatement, visitCatchClause, visitContinueStatement, visitExpressionStatement, visitIfStatement, visitLabeledStatement, visitReturnStatement, visitSourceFile, visitThrowStatement, visitTryStatement, visitVariableStatement, visitYieldExpression, } from "./statement-handlers";
8
10
  export function visit(node, context) {
9
11
  if (ts.isFunctionDeclaration(node)) {
10
12
  return visitFunctionDeclaration.call(this, node, context);
@@ -14,6 +16,8 @@ export function visit(node, context) {
14
16
  return visitArrowFunction.call(this, node, context);
15
17
  case ts.SyntaxKind.FunctionExpression:
16
18
  return visitFunctionExpression.call(this, node, context);
19
+ case ts.SyntaxKind.ClassDeclaration:
20
+ return visitClassDeclaration.call(this, node, context);
17
21
  case ts.SyntaxKind.SourceFile:
18
22
  return visitSourceFile.call(this, node, context);
19
23
  case ts.SyntaxKind.Block:
@@ -34,10 +38,22 @@ export function visit(node, context) {
34
38
  return visitForInStatement.call(this, node, context);
35
39
  case ts.SyntaxKind.ForOfStatement:
36
40
  return visitForOfStatement.call(this, node, context);
41
+ case ts.SyntaxKind.WhileStatement:
42
+ return visitWhileStatement.call(this, node, context);
43
+ case ts.SyntaxKind.DoStatement:
44
+ return visitDoStatement.call(this, node, context);
45
+ case ts.SyntaxKind.SwitchStatement:
46
+ return visitSwitchStatement.call(this, node, context);
47
+ case ts.SyntaxKind.CaseClause:
48
+ return visitCaseClause.call(this, node, context);
49
+ case ts.SyntaxKind.DefaultClause:
50
+ return visitDefaultClause.call(this, node, context);
37
51
  case ts.SyntaxKind.BreakStatement:
38
52
  return visitBreakStatement.call(this, node, context);
39
53
  case ts.SyntaxKind.ContinueStatement:
40
54
  return visitContinueStatement.call(this, node, context);
55
+ case ts.SyntaxKind.LabeledStatement:
56
+ return visitLabeledStatement.call(this, node, context);
41
57
  case ts.SyntaxKind.IfStatement:
42
58
  return visitIfStatement.call(this, node, context);
43
59
  case ts.SyntaxKind.PrefixUnaryExpression:
@@ -54,6 +70,10 @@ export function visit(node, context) {
54
70
  return visitExpressionStatement.call(this, node, context);
55
71
  case ts.SyntaxKind.BinaryExpression:
56
72
  return visitBinaryExpression.call(this, node, context);
73
+ case ts.SyntaxKind.ConditionalExpression:
74
+ return visitConditionalExpression.call(this, node, context);
75
+ case ts.SyntaxKind.DeleteExpression:
76
+ return visitDeleteExpression.call(this, node, context);
57
77
  case ts.SyntaxKind.ThrowStatement:
58
78
  return visitThrowStatement.call(this, node, context);
59
79
  case ts.SyntaxKind.TryStatement:
@@ -76,6 +96,12 @@ export function visit(node, context) {
76
96
  return visitNoSubstitutionTemplateLiteral.call(this, node);
77
97
  case ts.SyntaxKind.TemplateExpression:
78
98
  return visitTemplateExpression.call(this, node, context);
99
+ case ts.SyntaxKind.AwaitExpression:
100
+ return visitAwaitExpression.call(this, node, context);
101
+ case ts.SyntaxKind.NewExpression:
102
+ return visitNewExpression.call(this, node, context);
103
+ case ts.SyntaxKind.TypeOfExpression:
104
+ return visitTypeOfExpression.call(this, node, context);
79
105
  case ts.SyntaxKind.TrueKeyword:
80
106
  return visitTrueKeyword.call(this);
81
107
  case ts.SyntaxKind.FalseKeyword:
@@ -86,6 +112,8 @@ export function visit(node, context) {
86
112
  return visitUndefinedKeyword.call(this);
87
113
  case ts.SyntaxKind.NullKeyword:
88
114
  return visitNullKeyword.call(this);
115
+ case ts.SyntaxKind.ThisKeyword:
116
+ return visitThisKeyword.call(this);
89
117
  default:
90
118
  return `/* Unhandled node: ${ts.SyntaxKind[node.kind]} */`;
91
119
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ugo-studio/jspp",
3
- "version": "0.1.3",
4
- "description": "A modern, experimental transpiler that converts JavaScript code into high-performance, standard C++23.",
3
+ "version": "0.1.5",
4
+ "description": "A modern transpiler that converts JavaScript code into high-performance, standard C++23.",
5
5
  "main": "dist/index.js",
6
6
  "module": "src/index.ts",
7
7
  "type": "module",
@@ -16,7 +16,7 @@
16
16
  "dev": "bun run src/cli.ts",
17
17
  "typecheck": "tsc --noEmit",
18
18
  "precompile": "bun run scripts/precompile-headers.ts",
19
- "test": "bun run precompile && bun test",
19
+ "test": "bun test",
20
20
  "build": "tsc",
21
21
  "prepack": "bun run build",
22
22
  "publish:npm": "npm publish --access=public"