@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.
- package/README.md +2 -2
- package/dist/analysis/scope.js +33 -4
- package/dist/analysis/typeAnalyzer.js +260 -21
- package/dist/ast/symbols.js +29 -0
- package/dist/cli-utils/args.js +57 -0
- package/dist/cli-utils/colors.js +9 -0
- package/dist/cli-utils/file-utils.js +20 -0
- package/dist/cli-utils/spinner.js +55 -0
- package/dist/cli.js +105 -31
- package/dist/core/codegen/class-handlers.js +131 -0
- package/dist/core/codegen/control-flow-handlers.js +474 -0
- package/dist/core/codegen/declaration-handlers.js +36 -15
- package/dist/core/codegen/expression-handlers.js +579 -125
- package/dist/core/codegen/function-handlers.js +222 -37
- package/dist/core/codegen/helpers.js +158 -4
- package/dist/core/codegen/index.js +20 -8
- package/dist/core/codegen/literal-handlers.js +18 -6
- package/dist/core/codegen/statement-handlers.js +171 -228
- package/dist/core/codegen/visitor.js +31 -3
- package/package.json +3 -3
- package/src/prelude/any_value.hpp +510 -633
- package/src/prelude/any_value_access.hpp +151 -0
- package/src/prelude/any_value_defines.hpp +190 -0
- package/src/prelude/any_value_helpers.hpp +139 -225
- package/src/prelude/exception.hpp +32 -0
- package/src/prelude/exception_helpers.hpp +49 -0
- package/src/prelude/index.hpp +25 -9
- package/src/prelude/library/array.hpp +190 -0
- package/src/prelude/library/console.hpp +14 -13
- package/src/prelude/library/error.hpp +113 -0
- package/src/prelude/library/function.hpp +10 -0
- package/src/prelude/library/global.hpp +35 -4
- package/src/prelude/library/math.hpp +308 -0
- package/src/prelude/library/object.hpp +288 -0
- package/src/prelude/library/performance.hpp +2 -2
- package/src/prelude/library/process.hpp +39 -0
- package/src/prelude/library/promise.hpp +131 -0
- package/src/prelude/library/symbol.hpp +46 -59
- package/src/prelude/library/timer.hpp +92 -0
- package/src/prelude/scheduler.hpp +145 -0
- package/src/prelude/types.hpp +58 -1
- package/src/prelude/utils/access.hpp +345 -0
- package/src/prelude/utils/assignment_operators.hpp +99 -0
- package/src/prelude/utils/log_any_value/array.hpp +245 -0
- package/src/prelude/utils/log_any_value/config.hpp +32 -0
- package/src/prelude/utils/log_any_value/function.hpp +39 -0
- package/src/prelude/utils/log_any_value/fwd.hpp +15 -0
- package/src/prelude/utils/log_any_value/helpers.hpp +62 -0
- package/src/prelude/utils/log_any_value/log_any_value.hpp +94 -0
- package/src/prelude/utils/log_any_value/object.hpp +136 -0
- package/src/prelude/utils/log_any_value/primitives.hpp +43 -0
- package/src/prelude/utils/operators.hpp +751 -0
- package/src/prelude/utils/well_known_symbols.hpp +25 -0
- package/src/prelude/values/array.hpp +10 -7
- package/src/prelude/{descriptors.hpp → values/descriptors.hpp} +2 -2
- package/src/prelude/values/function.hpp +85 -51
- package/src/prelude/values/helpers/array.hpp +80 -35
- package/src/prelude/values/helpers/function.hpp +110 -77
- package/src/prelude/values/helpers/iterator.hpp +16 -10
- package/src/prelude/values/helpers/object.hpp +85 -10
- package/src/prelude/values/helpers/promise.hpp +181 -0
- package/src/prelude/values/helpers/string.hpp +3 -3
- package/src/prelude/values/helpers/symbol.hpp +2 -2
- package/src/prelude/values/iterator.hpp +14 -6
- package/src/prelude/values/object.hpp +14 -3
- package/src/prelude/values/promise.hpp +73 -0
- package/src/prelude/values/prototypes/array.hpp +855 -16
- package/src/prelude/values/prototypes/function.hpp +4 -4
- package/src/prelude/values/prototypes/iterator.hpp +11 -10
- package/src/prelude/values/prototypes/number.hpp +153 -0
- package/src/prelude/values/prototypes/object.hpp +26 -0
- package/src/prelude/values/prototypes/promise.hpp +134 -0
- package/src/prelude/values/prototypes/string.hpp +29 -29
- package/src/prelude/values/prototypes/symbol.hpp +22 -3
- package/src/prelude/values/shape.hpp +52 -0
- package/src/prelude/values/string.hpp +1 -1
- package/src/prelude/values/symbol.hpp +1 -1
- package/src/prelude/access.hpp +0 -91
- package/src/prelude/error.hpp +0 -31
- package/src/prelude/error_helpers.hpp +0 -59
- package/src/prelude/log_string.hpp +0 -407
- package/src/prelude/operators.hpp +0 -256
- 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,
|
|
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.
|
|
4
|
-
"description": "A modern
|
|
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
|
|
19
|
+
"test": "bun test",
|
|
20
20
|
"build": "tsc",
|
|
21
21
|
"prepack": "bun run build",
|
|
22
22
|
"publish:npm": "npm publish --access=public"
|