@grey-ts/transpiler 0.3.2 → 1.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.
- package/LICENSE +1 -1
- package/dist/index.js +126 -94
- package/package.json +2 -2
package/LICENSE
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Copyright
|
|
1
|
+
Copyright 2026 Oskari Hirsikangas
|
|
2
2
|
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
4
|
|
package/dist/index.js
CHANGED
|
@@ -234,6 +234,8 @@ var propertyAccessReplacements = {
|
|
|
234
234
|
"Math.round": "round",
|
|
235
235
|
"Math.random": "rnd",
|
|
236
236
|
"Math.log": "log",
|
|
237
|
+
"console.log": "print",
|
|
238
|
+
"console.clear": "clear_screen",
|
|
237
239
|
"String.prototype": "string",
|
|
238
240
|
"Number.prototype": "number",
|
|
239
241
|
"Boolean.prototype": "number",
|
|
@@ -460,7 +462,7 @@ end function`;
|
|
|
460
462
|
// src/visitors/expressions.ts
|
|
461
463
|
import ts7 from "typescript";
|
|
462
464
|
|
|
463
|
-
// src/callTransformer.ts
|
|
465
|
+
// src/call_transformers/callTransformer.ts
|
|
464
466
|
import path2 from "node:path";
|
|
465
467
|
import ts6 from "typescript";
|
|
466
468
|
class CallTransformer {
|
|
@@ -477,60 +479,6 @@ class CallTransformer {
|
|
|
477
479
|
return handler(functionName, callArgs, node, ctx);
|
|
478
480
|
}
|
|
479
481
|
}
|
|
480
|
-
CallTransformer.register("Array.concat", (name, args) => {
|
|
481
|
-
const dotI = name.lastIndexOf(".");
|
|
482
|
-
const arrayName = name.slice(0, dotI);
|
|
483
|
-
return callUtilFunction("array_concat", arrayName, args.join(","));
|
|
484
|
-
});
|
|
485
|
-
CallTransformer.register("Array.map", (name, args) => {
|
|
486
|
-
if (!args.length)
|
|
487
|
-
throw "Invalid argument count";
|
|
488
|
-
return callUtilFunction("array_map", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
489
|
-
});
|
|
490
|
-
CallTransformer.register("Array.filter", (name, args) => {
|
|
491
|
-
if (!args.length)
|
|
492
|
-
throw "Invalid argument count";
|
|
493
|
-
return callUtilFunction("array_filter", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
494
|
-
});
|
|
495
|
-
CallTransformer.register("Array.find", (name, args) => {
|
|
496
|
-
if (!args.length)
|
|
497
|
-
throw "Invalid argument count";
|
|
498
|
-
return callUtilFunction("array_find", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
499
|
-
});
|
|
500
|
-
CallTransformer.register("Array.some", (name, args) => {
|
|
501
|
-
if (!args.length)
|
|
502
|
-
throw "Invalid argument count";
|
|
503
|
-
return callUtilFunction("array_some", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
504
|
-
});
|
|
505
|
-
CallTransformer.register("Array.every", (name, args) => {
|
|
506
|
-
if (!args.length)
|
|
507
|
-
throw "Invalid argument count";
|
|
508
|
-
return callUtilFunction("array_every", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
509
|
-
});
|
|
510
|
-
CallTransformer.register("Array.slice", (name, args) => {
|
|
511
|
-
return name.slice(0, name.lastIndexOf(".")) + `[${args[0] ?? ""}:${args[1] ?? ""}]`;
|
|
512
|
-
});
|
|
513
|
-
CallTransformer.register("Array.push", (name, args) => {
|
|
514
|
-
if (!args.length)
|
|
515
|
-
throw "Invalid argument count";
|
|
516
|
-
return callUtilFunction("array_push", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
517
|
-
});
|
|
518
|
-
CallTransformer.register("Array.unshift", (name, args) => {
|
|
519
|
-
if (!args.length)
|
|
520
|
-
throw "Invalid argument count";
|
|
521
|
-
return callUtilFunction("array_unshift", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
522
|
-
});
|
|
523
|
-
CallTransformer.register("Array.toString", (name) => {
|
|
524
|
-
const arrayName = name.slice(0, name.lastIndexOf("."));
|
|
525
|
-
return `str(${arrayName})`;
|
|
526
|
-
});
|
|
527
|
-
CallTransformer.register("Array.reverse", (name) => {
|
|
528
|
-
return callUtilFunction("array_reverse", name.slice(0, name.lastIndexOf(".")));
|
|
529
|
-
});
|
|
530
|
-
CallTransformer.register("Object.toString", (name) => {
|
|
531
|
-
const objectName = name.slice(0, name.lastIndexOf("."));
|
|
532
|
-
return `str(${objectName})`;
|
|
533
|
-
});
|
|
534
482
|
CallTransformer.register("Number.toString", (name) => {
|
|
535
483
|
const number = name.slice(0, name.lastIndexOf("."));
|
|
536
484
|
return `str(${number})`;
|
|
@@ -539,49 +487,12 @@ CallTransformer.register("Function.toString", (name) => {
|
|
|
539
487
|
const func = name.slice(0, name.lastIndexOf("."));
|
|
540
488
|
return `str(@${func})`;
|
|
541
489
|
});
|
|
542
|
-
CallTransformer.register("String.startsWith", (name, args) => {
|
|
543
|
-
if (!args.length)
|
|
544
|
-
throw "Invalid argument count";
|
|
545
|
-
return callUtilFunction("str_starts_with", name.slice(0, name.lastIndexOf(".")), ...args);
|
|
546
|
-
});
|
|
547
|
-
CallTransformer.register("String.endsWith", (name, args) => {
|
|
548
|
-
if (!args.length)
|
|
549
|
-
throw "Invalid argument count";
|
|
550
|
-
return callUtilFunction("str_ends_with", name.slice(0, name.lastIndexOf(".")), ...args);
|
|
551
|
-
});
|
|
552
|
-
CallTransformer.register("String.repeat", (name, args) => {
|
|
553
|
-
if (!args.length)
|
|
554
|
-
throw "Invalid argument count";
|
|
555
|
-
return callUtilFunction("str_repeat", name.slice(0, name.lastIndexOf(".")), ...args);
|
|
556
|
-
});
|
|
557
|
-
CallTransformer.register("String.slice", (name, args) => {
|
|
558
|
-
return name.slice(0, name.lastIndexOf(".")) + `[${args[0] ?? ""}:${args[1] ?? ""}]`;
|
|
559
|
-
});
|
|
560
|
-
CallTransformer.register("String.toString", (name) => {
|
|
561
|
-
return name.slice(0, name.lastIndexOf("."));
|
|
562
|
-
});
|
|
563
490
|
CallTransformer.register("Math.min", (name, args) => {
|
|
564
491
|
return callUtilFunction("math_min", `${args.join(",")}`);
|
|
565
492
|
});
|
|
566
493
|
CallTransformer.register("Math.max", (name, args) => {
|
|
567
494
|
return callUtilFunction("math_max", `${args.join(",")}`);
|
|
568
495
|
});
|
|
569
|
-
CallTransformer.register("ObjectConstructor.hasOwn", (name, args) => {
|
|
570
|
-
if (args.length < 2)
|
|
571
|
-
throw "Invalid argument count";
|
|
572
|
-
return `${args[0]}.hasIndex(${args[1]})`;
|
|
573
|
-
});
|
|
574
|
-
CallTransformer.register("ObjectConstructor.assign", (name, args) => {
|
|
575
|
-
if (args.length < 2)
|
|
576
|
-
throw "Invalid argument count";
|
|
577
|
-
return callUtilFunction("assign_objects", args.join(","));
|
|
578
|
-
});
|
|
579
|
-
CallTransformer.register("ObjectConstructor.keys", (name, args) => {
|
|
580
|
-
return `${args[0]}.indexes`;
|
|
581
|
-
});
|
|
582
|
-
CallTransformer.register("ObjectConstructor.values", (name, args) => {
|
|
583
|
-
return `${args[0]}.values`;
|
|
584
|
-
});
|
|
585
496
|
CallTransformer.register("GreyHack.include", (name, args, node, ctx) => {
|
|
586
497
|
if (!node.arguments.length)
|
|
587
498
|
return "";
|
|
@@ -692,6 +603,8 @@ function handleCallArgs(callNode, ctx) {
|
|
|
692
603
|
if (restArrays.length) {
|
|
693
604
|
result.push(restArrays.join(" + "));
|
|
694
605
|
}
|
|
606
|
+
if (hasRestParameter && result.length === params.length - 1)
|
|
607
|
+
result.push("[]");
|
|
695
608
|
return result;
|
|
696
609
|
}
|
|
697
610
|
NodeHandler.register(ts7.SyntaxKind.CallExpression, (node, ctx) => {
|
|
@@ -1343,6 +1256,124 @@ NodeHandler.register(ts13.SyntaxKind.EnumDeclaration, (node) => {
|
|
|
1343
1256
|
return `${node.name.text} = { ${members.join(", ")} }`;
|
|
1344
1257
|
});
|
|
1345
1258
|
|
|
1259
|
+
// src/call_transformers/array.ts
|
|
1260
|
+
CallTransformer.register("Array.concat", (name, args) => {
|
|
1261
|
+
const dotI = name.lastIndexOf(".");
|
|
1262
|
+
const arrayName = name.slice(0, dotI);
|
|
1263
|
+
return callUtilFunction("array_concat", arrayName, args.join(","));
|
|
1264
|
+
});
|
|
1265
|
+
CallTransformer.register("Array.map", (name, args) => {
|
|
1266
|
+
if (!args.length)
|
|
1267
|
+
throw "Invalid argument count";
|
|
1268
|
+
return callUtilFunction("array_map", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
1269
|
+
});
|
|
1270
|
+
CallTransformer.register("Array.filter", (name, args) => {
|
|
1271
|
+
if (!args.length)
|
|
1272
|
+
throw "Invalid argument count";
|
|
1273
|
+
return callUtilFunction("array_filter", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
1274
|
+
});
|
|
1275
|
+
CallTransformer.register("Array.find", (name, args) => {
|
|
1276
|
+
if (!args.length)
|
|
1277
|
+
throw "Invalid argument count";
|
|
1278
|
+
return callUtilFunction("array_find", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
1279
|
+
});
|
|
1280
|
+
CallTransformer.register("Array.some", (name, args) => {
|
|
1281
|
+
if (!args.length)
|
|
1282
|
+
throw "Invalid argument count";
|
|
1283
|
+
return callUtilFunction("array_some", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
1284
|
+
});
|
|
1285
|
+
CallTransformer.register("Array.every", (name, args) => {
|
|
1286
|
+
if (!args.length)
|
|
1287
|
+
throw "Invalid argument count";
|
|
1288
|
+
return callUtilFunction("array_every", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
1289
|
+
});
|
|
1290
|
+
CallTransformer.register("Array.slice", (name, args) => {
|
|
1291
|
+
return name.slice(0, name.lastIndexOf(".")) + `[${args[0] ?? ""}:${args[1] ?? ""}]`;
|
|
1292
|
+
});
|
|
1293
|
+
CallTransformer.register("Array.push", (name, args) => {
|
|
1294
|
+
if (!args.length)
|
|
1295
|
+
throw "Invalid argument count";
|
|
1296
|
+
return callUtilFunction("array_push", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
1297
|
+
});
|
|
1298
|
+
CallTransformer.register("Array.unshift", (name, args) => {
|
|
1299
|
+
if (!args.length)
|
|
1300
|
+
throw "Invalid argument count";
|
|
1301
|
+
return callUtilFunction("array_unshift", name.slice(0, name.lastIndexOf(".")), args[0]);
|
|
1302
|
+
});
|
|
1303
|
+
CallTransformer.register("Array.toString", (name) => {
|
|
1304
|
+
const arrayName = name.slice(0, name.lastIndexOf("."));
|
|
1305
|
+
return `str(${arrayName})`;
|
|
1306
|
+
});
|
|
1307
|
+
CallTransformer.register("Array.reverse", (name) => {
|
|
1308
|
+
return callUtilFunction("array_reverse", name.slice(0, name.lastIndexOf(".")));
|
|
1309
|
+
});
|
|
1310
|
+
|
|
1311
|
+
// src/call_transformers/object.ts
|
|
1312
|
+
CallTransformer.register("ObjectConstructor.hasOwn", (name, args) => {
|
|
1313
|
+
if (args.length < 2)
|
|
1314
|
+
throw "Invalid argument count";
|
|
1315
|
+
return `${args[0]}.hasIndex(${args[1]})`;
|
|
1316
|
+
});
|
|
1317
|
+
CallTransformer.register("ObjectConstructor.assign", (name, args) => {
|
|
1318
|
+
if (args.length < 2)
|
|
1319
|
+
throw "Invalid argument count";
|
|
1320
|
+
return callUtilFunction("assign_objects", args.join(","));
|
|
1321
|
+
});
|
|
1322
|
+
CallTransformer.register("ObjectConstructor.keys", (name, args) => {
|
|
1323
|
+
return `${args[0]}.indexes`;
|
|
1324
|
+
});
|
|
1325
|
+
CallTransformer.register("ObjectConstructor.values", (name, args) => {
|
|
1326
|
+
return `${args[0]}.values`;
|
|
1327
|
+
});
|
|
1328
|
+
CallTransformer.register("ObjectConstructor.sum", (name, args) => {
|
|
1329
|
+
return `${args[0]}.sum`;
|
|
1330
|
+
});
|
|
1331
|
+
CallTransformer.register("ObjectConstructor.shuffle", (name, args) => {
|
|
1332
|
+
return `${args[0]}.shuffle`;
|
|
1333
|
+
});
|
|
1334
|
+
CallTransformer.register("ObjectConstructor.replace", (name, args) => {
|
|
1335
|
+
return `${args[0]}.replace(${args.slice(1).join(",")})`;
|
|
1336
|
+
});
|
|
1337
|
+
CallTransformer.register("ObjectConstructor.remove", (name, args) => {
|
|
1338
|
+
return `${args[0]}.remove(${args[1]})`;
|
|
1339
|
+
});
|
|
1340
|
+
CallTransformer.register("ObjectConstructor.shift", (name, args) => {
|
|
1341
|
+
return `${args[0]}.pull`;
|
|
1342
|
+
});
|
|
1343
|
+
CallTransformer.register("ObjectConstructor.size", (name, args) => {
|
|
1344
|
+
return `${args[0]}.len`;
|
|
1345
|
+
});
|
|
1346
|
+
CallTransformer.register("ObjectConstructor.indexOf", (name, args) => {
|
|
1347
|
+
return `${args[0]}.indexOf(${args[1]})`;
|
|
1348
|
+
});
|
|
1349
|
+
CallTransformer.register("Object.toString", (name) => {
|
|
1350
|
+
const objectName = name.slice(0, name.lastIndexOf("."));
|
|
1351
|
+
return `str(${objectName})`;
|
|
1352
|
+
});
|
|
1353
|
+
|
|
1354
|
+
// src/call_transformers/string.ts
|
|
1355
|
+
CallTransformer.register("String.startsWith", (name, args) => {
|
|
1356
|
+
if (!args.length)
|
|
1357
|
+
throw "Invalid argument count";
|
|
1358
|
+
return callUtilFunction("str_starts_with", name.slice(0, name.lastIndexOf(".")), ...args);
|
|
1359
|
+
});
|
|
1360
|
+
CallTransformer.register("String.endsWith", (name, args) => {
|
|
1361
|
+
if (!args.length)
|
|
1362
|
+
throw "Invalid argument count";
|
|
1363
|
+
return callUtilFunction("str_ends_with", name.slice(0, name.lastIndexOf(".")), ...args);
|
|
1364
|
+
});
|
|
1365
|
+
CallTransformer.register("String.repeat", (name, args) => {
|
|
1366
|
+
if (!args.length)
|
|
1367
|
+
throw "Invalid argument count";
|
|
1368
|
+
return callUtilFunction("str_repeat", name.slice(0, name.lastIndexOf(".")), ...args);
|
|
1369
|
+
});
|
|
1370
|
+
CallTransformer.register("String.slice", (name, args) => {
|
|
1371
|
+
return name.slice(0, name.lastIndexOf(".")) + `[${args[0] ?? ""}:${args[1] ?? ""}]`;
|
|
1372
|
+
});
|
|
1373
|
+
CallTransformer.register("String.toString", (name) => {
|
|
1374
|
+
return name.slice(0, name.lastIndexOf("."));
|
|
1375
|
+
});
|
|
1376
|
+
|
|
1346
1377
|
// src/transpiler.ts
|
|
1347
1378
|
var program;
|
|
1348
1379
|
var checker;
|
|
@@ -1357,8 +1388,9 @@ var utilFunctions2 = {
|
|
|
1357
1388
|
'\twhile isaobj.hasIndex("__isa")',
|
|
1358
1389
|
'\t\tisaobj = obj["__isa"]',
|
|
1359
1390
|
"\t\tif isaobj.hasIndex(key) then",
|
|
1360
|
-
"\t\t\
|
|
1361
|
-
|
|
1391
|
+
"\t\t\tres = obj[key]",
|
|
1392
|
+
'\t\t\tif typeof(@res) == "function" and str(@res)[8:][1:-1].indexOf("self") == 0 then return res(obj)',
|
|
1393
|
+
"\t\t\treturn obj[key]",
|
|
1362
1394
|
"\t\tend if",
|
|
1363
1395
|
"\tend while",
|
|
1364
1396
|
"\treturn null",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grey-ts/transpiler",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Transpiles TypeScript into GreyScript",
|
|
5
5
|
"author": "Okka",
|
|
6
6
|
"module": "src/index.ts",
|
|
@@ -40,6 +40,6 @@
|
|
|
40
40
|
"typescript": "^5"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@grey-ts/types": "^
|
|
43
|
+
"@grey-ts/types": "^2.0.0"
|
|
44
44
|
}
|
|
45
45
|
}
|