bonescript-compiler 0.6.1 → 0.6.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.
- package/dist/cli.js +1 -1
- package/package.json +5 -4
- package/src/cli.ts +1 -1
- package/dist/source_map.js.map +0 -1
- package/dist/test.js.map +0 -1
- package/dist/test_typechecker.d.ts +0 -5
- package/dist/test_typechecker.js +0 -126
- package/dist/test_typechecker.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -94,7 +94,7 @@ function main() {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
function showHelp() {
|
|
97
|
-
console.log("BoneScript compiler v0.6.
|
|
97
|
+
console.log("BoneScript compiler v0.6.2");
|
|
98
98
|
console.log("");
|
|
99
99
|
console.log("Usage:");
|
|
100
100
|
console.log(" bonec compile <file> [--target <target>] Compile to runnable project");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bonescript-compiler",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"description": "BoneScript compiler — compile .bone system descriptions into complete, runnable Node.js backends",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
],
|
|
19
19
|
"scripts": {
|
|
20
20
|
"build": "tsc",
|
|
21
|
+
"prepare": "npm run build",
|
|
21
22
|
"prepublishOnly": "npm run build",
|
|
22
23
|
"start": "ts-node src/cli.ts",
|
|
23
24
|
"test": "ts-node src/test.ts && ts-node src/test_typechecker.ts && ts-node src/test_nakama.ts"
|
|
@@ -39,11 +40,11 @@
|
|
|
39
40
|
},
|
|
40
41
|
"repository": {
|
|
41
42
|
"type": "git",
|
|
42
|
-
"url": "git+https://github.com/
|
|
43
|
+
"url": "git+https://github.com/Doorman11991/BoneScript.git"
|
|
43
44
|
},
|
|
44
|
-
"homepage": "https://github.com/
|
|
45
|
+
"homepage": "https://github.com/Doorman11991/BoneScript#readme",
|
|
45
46
|
"bugs": {
|
|
46
|
-
"url": "https://github.com/
|
|
47
|
+
"url": "https://github.com/Doorman11991/BoneScript/issues"
|
|
47
48
|
},
|
|
48
49
|
"devDependencies": {
|
|
49
50
|
"@types/node": "18.19.0",
|
package/src/cli.ts
CHANGED
|
@@ -75,7 +75,7 @@ function main() {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
function showHelp() {
|
|
78
|
-
console.log("BoneScript compiler v0.6.
|
|
78
|
+
console.log("BoneScript compiler v0.6.2");
|
|
79
79
|
console.log("");
|
|
80
80
|
console.log("Usage:");
|
|
81
81
|
console.log(" bonec compile <file> [--target <target>] Compile to runnable project");
|
package/dist/source_map.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"source_map.js","sourceRoot":"","sources":["../src/source_map.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAqBH,MAAa,gBAAgB;IAA7B;QACU,aAAQ,GAAoB,EAAE,CAAC;IA8DzC,CAAC;IA5DC,GAAG,CAAC,OAAsB;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,eAAe,CACb,aAAqB,EACrB,UAAkB,EAClB,UAAkB,EAClB,GAAgB;QAEhB,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,oCAAoC;QACpC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,QAAQ,CAAC,IAAI,CAAC;oBACZ,cAAc,EAAE,aAAa;oBAC7B,cAAc,EAAE,CAAC,EAAE,oCAAoC;oBACvD,WAAW,EAAE,UAAU;oBACvB,WAAW,EAAE,CAAC,EAAK,mCAAmC;oBACtD,aAAa,EAAE,CAAC;oBAChB,UAAU,EAAE,GAAG,CAAC,EAAE;oBAClB,WAAW,EAAE,WAAW,MAAM,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,EAAE;iBACtD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC;gBACZ,cAAc,EAAE,aAAa;gBAC7B,cAAc,EAAE,CAAC;gBACjB,WAAW,EAAE,UAAU;gBACvB,WAAW,EAAE,CAAC;gBACd,aAAa,EAAE,CAAC;gBAChB,UAAU,EAAE,GAAG,CAAC,EAAE;gBAClB,WAAW,EAAE,UAAU,KAAK,CAAC,IAAI,GAAG;aACrC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,UAAU;YACvB,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAkB,EAAE,UAAkB;QAC1C,OAAO;YACL,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;CACF;AA/DD,4CA+DC"}
|
package/dist/test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|
package/dist/test_typechecker.js
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* BoneScript Type Checker Tests
|
|
4
|
-
* Verifies the type checker catches errors per spec/04_TYPE_SYSTEM.md.
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
const lexer_1 = require("./lexer");
|
|
8
|
-
const parser_1 = require("./parser");
|
|
9
|
-
const typechecker_1 = require("./typechecker");
|
|
10
|
-
function compile(source) {
|
|
11
|
-
const tokens = new lexer_1.Lexer(source).tokenize();
|
|
12
|
-
const ast = new parser_1.Parser(tokens).parse();
|
|
13
|
-
const checker = new typechecker_1.TypeChecker();
|
|
14
|
-
return checker.check(ast);
|
|
15
|
-
}
|
|
16
|
-
let passed = 0;
|
|
17
|
-
let failed = 0;
|
|
18
|
-
function expect(name, source, expectedCode) {
|
|
19
|
-
const errors = compile(source);
|
|
20
|
-
if (expectedCode === null) {
|
|
21
|
-
if (errors.length === 0) {
|
|
22
|
-
console.log(` ✓ ${name}`);
|
|
23
|
-
passed++;
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
console.log(` ✗ ${name}: expected no errors, got ${errors.length}`);
|
|
27
|
-
for (const e of errors)
|
|
28
|
-
console.log(` ${e.code}: ${e.message}`);
|
|
29
|
-
failed++;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
const found = errors.find(e => e.code === expectedCode);
|
|
34
|
-
if (found) {
|
|
35
|
-
console.log(` ✓ ${name} (${expectedCode}: ${found.message})`);
|
|
36
|
-
passed++;
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
console.log(` ✗ ${name}: expected ${expectedCode}, got [${errors.map(e => e.code).join(", ")}]`);
|
|
40
|
-
for (const e of errors)
|
|
41
|
-
console.log(` ${e.code}: ${e.message}`);
|
|
42
|
-
failed++;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
console.log("BoneScript Type Checker Tests\n");
|
|
47
|
-
// ─── Valid Programs ──────────────────────────────────────────────────────────
|
|
48
|
-
expect("Valid minimal system", `
|
|
49
|
-
system Minimal {
|
|
50
|
-
entity User {
|
|
51
|
-
owns: [name: string]
|
|
52
|
-
}
|
|
53
|
-
capability greet(u: User) {
|
|
54
|
-
requires: [u.name != ""]
|
|
55
|
-
effects: [u.name = "greeted"]
|
|
56
|
-
sync: eventual
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
`, null);
|
|
60
|
-
expect("Valid with set operations", `
|
|
61
|
-
system SetOps {
|
|
62
|
-
entity Bag {
|
|
63
|
-
owns: [items: set<string>]
|
|
64
|
-
}
|
|
65
|
-
capability add_item(b: Bag, item: string) {
|
|
66
|
-
requires: [b.items.size < 100]
|
|
67
|
-
effects: [b.items += item]
|
|
68
|
-
sync: transactional
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
`, null);
|
|
72
|
-
expect("Valid with numeric operations", `
|
|
73
|
-
system NumOps {
|
|
74
|
-
entity Counter {
|
|
75
|
-
owns: [value: uint]
|
|
76
|
-
constraints: [value >= 0, value <= 1000]
|
|
77
|
-
}
|
|
78
|
-
capability increment(c: Counter, amount: uint) {
|
|
79
|
-
requires: [amount > 0]
|
|
80
|
-
effects: [c.value += amount]
|
|
81
|
-
sync: eventual
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
`, null);
|
|
85
|
-
// ─── Type Errors ─────────────────────────────────────────────────────────────
|
|
86
|
-
expect("T009: Duplicate field name", `
|
|
87
|
-
system DupField {
|
|
88
|
-
entity Bad {
|
|
89
|
-
owns: [name: string, name: uint]
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
`, "T009");
|
|
93
|
-
expect("T010: Undefined state in transition", `
|
|
94
|
-
system BadState {
|
|
95
|
-
entity Thing {
|
|
96
|
-
owns: [x: uint]
|
|
97
|
-
states: active -> nonexistent
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
`, null); // states are just identifiers, both are "defined" by being in the graph
|
|
101
|
-
expect("T012: Flow with less than 2 steps", `
|
|
102
|
-
system BadFlow {
|
|
103
|
-
entity Item { owns: [x: uint] }
|
|
104
|
-
flow single_step {
|
|
105
|
-
step one: do_thing(x)
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
`, "T012");
|
|
109
|
-
expect("T011: Emit undeclared event", `
|
|
110
|
-
system BadEmit {
|
|
111
|
-
entity User { owns: [name: string] }
|
|
112
|
-
capability greet(u: User) {
|
|
113
|
-
requires: [u.name != ""]
|
|
114
|
-
effects: [u.name = "hi"]
|
|
115
|
-
emits: NonExistentEvent
|
|
116
|
-
sync: eventual
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
`, "T011");
|
|
120
|
-
// ─── Summary ─────────────────────────────────────────────────────────────────
|
|
121
|
-
console.log(`\nâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•`);
|
|
122
|
-
console.log(`Results: ${passed} passed, ${failed} failed`);
|
|
123
|
-
console.log(`â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•`);
|
|
124
|
-
if (failed > 0)
|
|
125
|
-
process.exit(1);
|
|
126
|
-
//# sourceMappingURL=test_typechecker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test_typechecker.js","sourceRoot":"","sources":["../src/test_typechecker.ts"],"names":[],"mappings":"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"}
|