bonescript-compiler 0.5.2 → 0.5.4
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 +21 -21
- package/dist/algorithm_catalog.js +166 -166
- package/dist/cli.d.ts +1 -2
- package/dist/cli.js +543 -75
- package/dist/cli.js.map +1 -1
- package/dist/emit_capability.d.ts +0 -13
- package/dist/emit_capability.js +128 -292
- package/dist/emit_capability.js.map +1 -1
- package/dist/emit_composition.js +3 -37
- package/dist/emit_composition.js.map +1 -1
- package/dist/emit_deploy.js +162 -162
- package/dist/emit_events.d.ts +0 -1
- package/dist/emit_events.js +275 -342
- package/dist/emit_events.js.map +1 -1
- package/dist/emit_full.js +106 -268
- package/dist/emit_full.js.map +1 -1
- package/dist/emit_maintenance.js +249 -249
- package/dist/emit_runtime.d.ts +11 -17
- package/dist/emit_runtime.js +688 -29
- package/dist/emit_runtime.js.map +1 -1
- package/dist/emit_sourcemap.js +66 -66
- package/dist/emit_tests.js +0 -37
- package/dist/emit_tests.js.map +1 -1
- package/dist/emitter.js +16 -82
- package/dist/emitter.js.map +1 -1
- package/dist/extension_manager.d.ts +2 -2
- package/dist/extension_manager.js +3 -6
- package/dist/extension_manager.js.map +1 -1
- package/dist/ir.d.ts +0 -4
- package/dist/lowering.d.ts +14 -5
- package/dist/lowering.js +417 -66
- package/dist/lowering.js.map +1 -1
- package/dist/module_loader.d.ts +2 -2
- package/dist/module_loader.js +23 -20
- package/dist/module_loader.js.map +1 -1
- package/dist/optimizer.js +1 -1
- package/dist/optimizer.js.map +1 -1
- package/dist/scaffold.d.ts +2 -2
- package/dist/scaffold.js +319 -315
- package/dist/scaffold.js.map +1 -1
- package/dist/source_map.js.map +1 -0
- package/dist/test.js.map +1 -0
- package/dist/test_typechecker.d.ts +5 -0
- package/dist/test_typechecker.js +126 -0
- package/dist/test_typechecker.js.map +1 -0
- package/dist/typechecker.d.ts +0 -5
- package/dist/typechecker.js +13 -68
- package/dist/typechecker.js.map +1 -1
- package/dist/verifier.d.ts +1 -5
- package/dist/verifier.js +35 -140
- package/dist/verifier.js.map +1 -1
- package/package.json +52 -62
- package/src/algorithm_catalog.ts +345 -345
- package/src/ast.d.ts +244 -0
- package/src/ast.ts +334 -334
- package/src/cli.ts +624 -98
- package/src/emit_batch.ts +140 -140
- package/src/emit_capability.ts +436 -617
- package/src/emit_composition.ts +196 -229
- package/src/emit_deploy.ts +190 -190
- package/src/emit_events.ts +307 -377
- package/src/emit_extras.ts +240 -240
- package/src/emit_full.ts +309 -475
- package/src/emit_maintenance.ts +459 -459
- package/src/emit_runtime.ts +730 -17
- package/src/emit_sourcemap.ts +140 -140
- package/src/emit_tests.ts +205 -246
- package/src/emit_websocket.ts +229 -229
- package/src/emitter.ts +578 -642
- package/src/extension_manager.ts +187 -189
- package/src/formatter.ts +297 -297
- package/src/index.ts +88 -88
- package/src/ir.ts +215 -216
- package/src/lexer.d.ts +195 -0
- package/src/lexer.ts +630 -630
- package/src/lowering.ts +556 -168
- package/src/module_loader.ts +114 -112
- package/src/optimizer.ts +196 -196
- package/src/parse_decls.d.ts +13 -0
- package/src/parse_decls.ts +409 -409
- package/src/parse_decls2.d.ts +13 -0
- package/src/parse_decls2.ts +244 -244
- package/src/parse_expr.d.ts +7 -0
- package/src/parse_expr.ts +197 -197
- package/src/parse_types.d.ts +6 -0
- package/src/parse_types.ts +54 -54
- package/src/parser.d.ts +10 -0
- package/src/parser.ts +1 -1
- package/src/parser_base.d.ts +19 -0
- package/src/parser_base.ts +57 -57
- package/src/parser_recovery.ts +153 -153
- package/src/scaffold.ts +375 -371
- package/src/solver.ts +330 -330
- package/src/typechecker.d.ts +52 -0
- package/src/typechecker.ts +591 -657
- package/src/types.d.ts +38 -0
- package/src/types.ts +122 -122
- package/src/verifier.ts +46 -152
- package/README.md +0 -382
- package/dist/commands/check.d.ts +0 -5
- package/dist/commands/check.js +0 -34
- package/dist/commands/check.js.map +0 -1
- package/dist/commands/compile.d.ts +0 -5
- package/dist/commands/compile.js +0 -215
- package/dist/commands/compile.js.map +0 -1
- package/dist/commands/debug.d.ts +0 -5
- package/dist/commands/debug.js +0 -59
- package/dist/commands/debug.js.map +0 -1
- package/dist/commands/diff.d.ts +0 -5
- package/dist/commands/diff.js +0 -125
- package/dist/commands/diff.js.map +0 -1
- package/dist/commands/fmt.d.ts +0 -5
- package/dist/commands/fmt.js +0 -49
- package/dist/commands/fmt.js.map +0 -1
- package/dist/commands/init.d.ts +0 -5
- package/dist/commands/init.js +0 -96
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/ir.d.ts +0 -5
- package/dist/commands/ir.js +0 -27
- package/dist/commands/ir.js.map +0 -1
- package/dist/commands/lex.d.ts +0 -5
- package/dist/commands/lex.js +0 -21
- package/dist/commands/lex.js.map +0 -1
- package/dist/commands/parse.d.ts +0 -5
- package/dist/commands/parse.js +0 -30
- package/dist/commands/parse.js.map +0 -1
- package/dist/commands/test.d.ts +0 -5
- package/dist/commands/test.js +0 -61
- package/dist/commands/test.js.map +0 -1
- package/dist/commands/verify_determinism.d.ts +0 -5
- package/dist/commands/verify_determinism.js +0 -64
- package/dist/commands/verify_determinism.js.map +0 -1
- package/dist/commands/watch.d.ts +0 -5
- package/dist/commands/watch.js +0 -50
- package/dist/commands/watch.js.map +0 -1
- package/dist/emit_auth.d.ts +0 -18
- package/dist/emit_auth.js +0 -507
- package/dist/emit_auth.js.map +0 -1
- package/dist/emit_database.d.ts +0 -7
- package/dist/emit_database.js +0 -74
- package/dist/emit_database.js.map +0 -1
- package/dist/emit_index.d.ts +0 -6
- package/dist/emit_index.js +0 -202
- package/dist/emit_index.js.map +0 -1
- package/dist/emit_models.d.ts +0 -12
- package/dist/emit_models.js +0 -171
- package/dist/emit_models.js.map +0 -1
- package/dist/emit_openapi.d.ts +0 -9
- package/dist/emit_openapi.js +0 -308
- package/dist/emit_openapi.js.map +0 -1
- package/dist/emit_package.d.ts +0 -7
- package/dist/emit_package.js +0 -70
- package/dist/emit_package.js.map +0 -1
- package/dist/emit_router.d.ts +0 -12
- package/dist/emit_router.js +0 -390
- package/dist/emit_router.js.map +0 -1
- package/dist/lowering_channels.d.ts +0 -11
- package/dist/lowering_channels.js +0 -103
- package/dist/lowering_channels.js.map +0 -1
- package/dist/lowering_entities.d.ts +0 -11
- package/dist/lowering_entities.js +0 -232
- package/dist/lowering_entities.js.map +0 -1
- package/dist/lowering_helpers.d.ts +0 -13
- package/dist/lowering_helpers.js +0 -76
- package/dist/lowering_helpers.js.map +0 -1
- package/src/commands/check.ts +0 -33
- package/src/commands/compile.ts +0 -191
- package/src/commands/debug.ts +0 -33
- package/src/commands/diff.ts +0 -108
- package/src/commands/fmt.ts +0 -22
- package/src/commands/init.ts +0 -72
- package/src/commands/ir.ts +0 -23
- package/src/commands/lex.ts +0 -17
- package/src/commands/parse.ts +0 -24
- package/src/commands/test.ts +0 -36
- package/src/commands/verify_determinism.ts +0 -66
- package/src/commands/watch.ts +0 -25
- package/src/emit_auth.ts +0 -513
- package/src/emit_database.ts +0 -75
- package/src/emit_index.ts +0 -210
- package/src/emit_models.ts +0 -176
- package/src/emit_openapi.ts +0 -318
- package/src/emit_package.ts +0 -69
- package/src/emit_router.ts +0 -409
- package/src/lowering_channels.ts +0 -108
- package/src/lowering_entities.ts +0 -258
- package/src/lowering_helpers.ts +0 -75
package/dist/commands/debug.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* bonec debug <file>
|
|
4
|
-
* Generate source maps (.bone.map) for runtime error annotation.
|
|
5
|
-
*/
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
-
if (mod && mod.__esModule) return mod;
|
|
24
|
-
var result = {};
|
|
25
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
-
__setModuleDefault(result, mod);
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.runDebug = void 0;
|
|
31
|
-
const fs = __importStar(require("fs"));
|
|
32
|
-
const path = __importStar(require("path"));
|
|
33
|
-
const crypto_1 = require("crypto");
|
|
34
|
-
const lexer_1 = require("../lexer");
|
|
35
|
-
const parser_1 = require("../parser");
|
|
36
|
-
const lowering_1 = require("../lowering");
|
|
37
|
-
const emit_sourcemap_1 = require("../emit_sourcemap");
|
|
38
|
-
async function runDebug(source, resolved) {
|
|
39
|
-
try {
|
|
40
|
-
const tokens = new lexer_1.Lexer(source).tokenize();
|
|
41
|
-
const ast = new parser_1.Parser(tokens).parse();
|
|
42
|
-
const sourceHash = (0, crypto_1.createHash)("sha256").update(source).digest("hex").slice(0, 16);
|
|
43
|
-
const irSystems = new lowering_1.Lowering().lower(ast, sourceHash);
|
|
44
|
-
await Promise.all(irSystems.map(async (sys) => {
|
|
45
|
-
const mapContent = (0, emit_sourcemap_1.emitSourceMapFile)(sys, path.basename(resolved));
|
|
46
|
-
const mapPath = path.join(path.dirname(resolved), `${sys.name}.bone.map`);
|
|
47
|
-
await fs.promises.writeFile(mapPath, mapContent, "utf-8");
|
|
48
|
-
console.log(`v Source map written: ${mapPath}`);
|
|
49
|
-
console.log(` ${sys.modules.length} modules mapped`);
|
|
50
|
-
console.log(` Use output/src/debug.ts to get annotated runtime errors`);
|
|
51
|
-
}));
|
|
52
|
-
}
|
|
53
|
-
catch (e) {
|
|
54
|
-
console.error(`x ${e.message}`);
|
|
55
|
-
process.exit(1);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
exports.runDebug = runDebug;
|
|
59
|
-
//# sourceMappingURL=debug.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/commands/debug.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,mCAAoC;AACpC,oCAAiC;AACjC,sCAAmC;AACnC,0CAAuC;AACvC,sDAAsD;AAE/C,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,QAAgB;IAC7D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,aAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClF,MAAM,SAAS,GAAG,IAAI,mBAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAExD,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;YAC1C,MAAM,UAAU,GAAG,IAAA,kCAAiB,EAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC;YAC1E,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,iBAAiB,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAnBD,4BAmBC"}
|
package/dist/commands/diff.d.ts
DELETED
package/dist/commands/diff.js
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* bonec diff <old.bone> <new.bone>
|
|
4
|
-
* Show SQL schema migration diff between two .bone files.
|
|
5
|
-
*/
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
-
if (mod && mod.__esModule) return mod;
|
|
24
|
-
var result = {};
|
|
25
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
-
__setModuleDefault(result, mod);
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.runDiff = void 0;
|
|
31
|
-
const fs = __importStar(require("fs"));
|
|
32
|
-
const path = __importStar(require("path"));
|
|
33
|
-
const crypto_1 = require("crypto");
|
|
34
|
-
const lexer_1 = require("../lexer");
|
|
35
|
-
const parser_1 = require("../parser");
|
|
36
|
-
const lowering_1 = require("../lowering");
|
|
37
|
-
const SQL_TYPE_MAP = {
|
|
38
|
-
string: "VARCHAR", uint: "BIGINT", int: "BIGINT", float: "DOUBLE PRECISION",
|
|
39
|
-
bool: "BOOLEAN", timestamp: "TIMESTAMPTZ", uuid: "UUID", bytes: "BYTEA", json: "JSONB",
|
|
40
|
-
};
|
|
41
|
-
function toSnakeCase(s) {
|
|
42
|
-
return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
|
|
43
|
-
}
|
|
44
|
-
async function compileToIR(filePath) {
|
|
45
|
-
const resolved = path.resolve(filePath);
|
|
46
|
-
try {
|
|
47
|
-
await fs.promises.access(resolved);
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
console.error(`File not found: ${resolved}`);
|
|
51
|
-
process.exit(1);
|
|
52
|
-
}
|
|
53
|
-
const source = await fs.promises.readFile(resolved, "utf-8");
|
|
54
|
-
const tokens = new lexer_1.Lexer(source).tokenize();
|
|
55
|
-
const ast = new parser_1.Parser(tokens).parse();
|
|
56
|
-
const hash = (0, crypto_1.createHash)("sha256").update(source).digest("hex").slice(0, 16);
|
|
57
|
-
return new lowering_1.Lowering().lower(ast, hash);
|
|
58
|
-
}
|
|
59
|
-
async function runDiff(args) {
|
|
60
|
-
if (args.length < 2) {
|
|
61
|
-
console.error("Usage: bonec diff <old.bone> <new.bone>");
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
64
|
-
const [oldFile, newFile] = args;
|
|
65
|
-
// Load both files in parallel
|
|
66
|
-
const [oldIR, newIR] = await Promise.all([
|
|
67
|
-
compileToIR(oldFile),
|
|
68
|
-
compileToIR(newFile),
|
|
69
|
-
]);
|
|
70
|
-
const collectModels = (systems) => {
|
|
71
|
-
const models = [];
|
|
72
|
-
for (const sys of systems)
|
|
73
|
-
for (const mod of sys.modules)
|
|
74
|
-
for (const m of mod.models)
|
|
75
|
-
models.push(m);
|
|
76
|
-
return models;
|
|
77
|
-
};
|
|
78
|
-
const oldByName = new Map(collectModels(oldIR).map(m => [m.name, m]));
|
|
79
|
-
const newByName = new Map(collectModels(newIR).map(m => [m.name, m]));
|
|
80
|
-
const statements = [];
|
|
81
|
-
for (const [name] of newByName) {
|
|
82
|
-
if (!oldByName.has(name)) {
|
|
83
|
-
statements.push(`-- NEW TABLE: ${name}`);
|
|
84
|
-
statements.push(`-- Run: bonec compile ${newFile} (generates full migration)`);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
for (const [name] of oldByName) {
|
|
88
|
-
if (!newByName.has(name)) {
|
|
89
|
-
const table = toSnakeCase(name) + "s";
|
|
90
|
-
statements.push(`-- WARNING: Table '${table}' removed from schema`);
|
|
91
|
-
statements.push(`-- Manual: ALTER TABLE ${table} ... (or DROP TABLE ${table})`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
for (const [name, newModel] of newByName) {
|
|
95
|
-
const oldModel = oldByName.get(name);
|
|
96
|
-
if (!oldModel)
|
|
97
|
-
continue;
|
|
98
|
-
const table = toSnakeCase(name) + "s";
|
|
99
|
-
const oldFields = new Map(oldModel.fields.map(f => [f.name, f]));
|
|
100
|
-
const newFields = new Map(newModel.fields.map(f => [f.name, f]));
|
|
101
|
-
for (const [fname, field] of newFields) {
|
|
102
|
-
if (!oldFields.has(fname)) {
|
|
103
|
-
const sqlType = SQL_TYPE_MAP[field.type] || "JSONB";
|
|
104
|
-
statements.push(`ALTER TABLE ${table} ADD COLUMN IF NOT EXISTS ${fname} ${sqlType};`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
for (const [fname] of oldFields) {
|
|
108
|
-
if (!newFields.has(fname)) {
|
|
109
|
-
statements.push(`-- WARNING: Column '${table}.${fname}' removed`);
|
|
110
|
-
statements.push(`-- Manual: ALTER TABLE ${table} DROP COLUMN ${fname};`);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
if (statements.length === 0) {
|
|
115
|
-
console.log("No schema changes detected.");
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
console.log(`-- BoneScript schema diff: ${path.basename(oldFile)} → ${path.basename(newFile)}`);
|
|
119
|
-
console.log(`-- Generated: ${new Date().toISOString()}`);
|
|
120
|
-
console.log(``);
|
|
121
|
-
console.log(statements.join("\n"));
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
exports.runDiff = runDiff;
|
|
125
|
-
//# sourceMappingURL=diff.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/fmt.d.ts
DELETED
package/dist/commands/fmt.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* bonec fmt <file>
|
|
4
|
-
* Format a .bone file in place.
|
|
5
|
-
*/
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
-
if (mod && mod.__esModule) return mod;
|
|
24
|
-
var result = {};
|
|
25
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
-
__setModuleDefault(result, mod);
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.runFormat = void 0;
|
|
31
|
-
const fs = __importStar(require("fs"));
|
|
32
|
-
const lexer_1 = require("../lexer");
|
|
33
|
-
const parser_1 = require("../parser");
|
|
34
|
-
const formatter_1 = require("../formatter");
|
|
35
|
-
async function runFormat(source, resolved) {
|
|
36
|
-
try {
|
|
37
|
-
const tokens = new lexer_1.Lexer(source).tokenize();
|
|
38
|
-
const ast = new parser_1.Parser(tokens).parse();
|
|
39
|
-
const formatted = new formatter_1.Formatter().format(ast);
|
|
40
|
-
await fs.promises.writeFile(resolved, formatted, "utf-8");
|
|
41
|
-
console.log(`v Formatted ${resolved}`);
|
|
42
|
-
}
|
|
43
|
-
catch (e) {
|
|
44
|
-
console.error(`x ${e.message}`);
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
exports.runFormat = runFormat;
|
|
49
|
-
//# sourceMappingURL=fmt.js.map
|
package/dist/commands/fmt.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fmt.js","sourceRoot":"","sources":["../../src/commands/fmt.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,oCAAiC;AACjC,sCAAmC;AACnC,4CAAyC;AAElC,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,QAAgB;IAC9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,aAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAXD,8BAWC"}
|
package/dist/commands/init.d.ts
DELETED
package/dist/commands/init.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* bonec init <name> [--domain <domain>] [--out <dir>] [--force]
|
|
4
|
-
* Scaffold a new project from a domain template.
|
|
5
|
-
*/
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
-
if (mod && mod.__esModule) return mod;
|
|
24
|
-
var result = {};
|
|
25
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
-
__setModuleDefault(result, mod);
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.runInit = void 0;
|
|
31
|
-
const path = __importStar(require("path"));
|
|
32
|
-
const fs = __importStar(require("fs"));
|
|
33
|
-
const scaffold_1 = require("../scaffold");
|
|
34
|
-
const VALID_DOMAINS = [
|
|
35
|
-
"multiplayer_game", "saas_platform", "iot_system",
|
|
36
|
-
"social_network", "marketplace", "realtime_collaboration",
|
|
37
|
-
];
|
|
38
|
-
async function runInit(args) {
|
|
39
|
-
// --list: show available domains
|
|
40
|
-
if (args.includes("--list") || args.includes("-l")) {
|
|
41
|
-
console.log("Available domains:");
|
|
42
|
-
for (const d of VALID_DOMAINS)
|
|
43
|
-
console.log(` ${d}`);
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
if (args.length === 0) {
|
|
47
|
-
console.error("Error: bonec init requires a project name.");
|
|
48
|
-
console.error("Example: bonec init my-project --domain saas_platform");
|
|
49
|
-
console.error(" bonec init --list (show available domains)");
|
|
50
|
-
process.exit(1);
|
|
51
|
-
}
|
|
52
|
-
const name = args[0];
|
|
53
|
-
let domain = "saas_platform";
|
|
54
|
-
let outDir = path.resolve(name);
|
|
55
|
-
let force = false;
|
|
56
|
-
for (let i = 1; i < args.length; i++) {
|
|
57
|
-
if (args[i] === "--domain" && args[i + 1]) {
|
|
58
|
-
domain = args[i + 1];
|
|
59
|
-
i++;
|
|
60
|
-
}
|
|
61
|
-
else if (args[i] === "--out" && args[i + 1]) {
|
|
62
|
-
outDir = path.resolve(args[i + 1]);
|
|
63
|
-
i++;
|
|
64
|
-
}
|
|
65
|
-
else if (args[i] === "--force" || args[i] === "-f") {
|
|
66
|
-
force = true;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (!VALID_DOMAINS.includes(domain)) {
|
|
70
|
-
console.error(`Error: Invalid domain '${domain}'. Valid: ${VALID_DOMAINS.join(", ")}`);
|
|
71
|
-
process.exit(1);
|
|
72
|
-
}
|
|
73
|
-
// Check if output directory already has files (unless --force)
|
|
74
|
-
if (!force) {
|
|
75
|
-
try {
|
|
76
|
-
const existing = await fs.promises.readdir(outDir);
|
|
77
|
-
if (existing.length > 0) {
|
|
78
|
-
console.error(`Error: Directory '${outDir}' already exists and is not empty.`);
|
|
79
|
-
console.error(`Use --force to overwrite.`);
|
|
80
|
-
process.exit(1);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
// Directory doesn't exist — fine
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
const result = await (0, scaffold_1.scaffold)({ name, domain, outDir });
|
|
88
|
-
console.log(`✓ Created ${result.created.length} file(s):`);
|
|
89
|
-
for (const f of result.created)
|
|
90
|
-
console.log(` ${f}`);
|
|
91
|
-
console.log(`\nNext steps:`);
|
|
92
|
-
console.log(` cd ${outDir}`);
|
|
93
|
-
console.log(` bonec compile ${name}.bone`);
|
|
94
|
-
}
|
|
95
|
-
exports.runInit = runInit;
|
|
96
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/ir.d.ts
DELETED
package/dist/commands/ir.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* bonec ir <file>
|
|
4
|
-
* Print the IR as JSON.
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.runIR = void 0;
|
|
8
|
-
const crypto_1 = require("crypto");
|
|
9
|
-
const lexer_1 = require("../lexer");
|
|
10
|
-
const parser_1 = require("../parser");
|
|
11
|
-
const lowering_1 = require("../lowering");
|
|
12
|
-
function runIR(source) {
|
|
13
|
-
try {
|
|
14
|
-
const tokens = new lexer_1.Lexer(source).tokenize();
|
|
15
|
-
const ast = new parser_1.Parser(tokens).parse();
|
|
16
|
-
const sourceHash = (0, crypto_1.createHash)("sha256").update(source).digest("hex").slice(0, 16);
|
|
17
|
-
const irSystems = new lowering_1.Lowering().lower(ast, sourceHash);
|
|
18
|
-
console.log(JSON.stringify(irSystems, null, 2));
|
|
19
|
-
console.log(`\nv Lowered to ${irSystems.length} IR system(s).`);
|
|
20
|
-
}
|
|
21
|
-
catch (e) {
|
|
22
|
-
console.error(`x ${e.message}`);
|
|
23
|
-
process.exit(1);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
exports.runIR = runIR;
|
|
27
|
-
//# sourceMappingURL=ir.js.map
|
package/dist/commands/ir.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ir.js","sourceRoot":"","sources":["../../src/commands/ir.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mCAAoC;AACpC,oCAAiC;AACjC,sCAAmC;AACnC,0CAAuC;AAEvC,SAAgB,KAAK,CAAC,MAAc;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,aAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClF,MAAM,SAAS,GAAG,IAAI,mBAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,kBAAkB,SAAS,CAAC,MAAM,gBAAgB,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAZD,sBAYC"}
|
package/dist/commands/lex.d.ts
DELETED
package/dist/commands/lex.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* bonec lex <file>
|
|
4
|
-
* Print the token stream as JSON.
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.runLex = void 0;
|
|
8
|
-
const lexer_1 = require("../lexer");
|
|
9
|
-
function runLex(source) {
|
|
10
|
-
try {
|
|
11
|
-
const tokens = new lexer_1.Lexer(source).tokenize();
|
|
12
|
-
console.log(JSON.stringify(tokens, null, 2));
|
|
13
|
-
console.log(`\nv ${tokens.length} tokens produced.`);
|
|
14
|
-
}
|
|
15
|
-
catch (e) {
|
|
16
|
-
console.error(`x ${e.message}`);
|
|
17
|
-
process.exit(1);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
exports.runLex = runLex;
|
|
21
|
-
//# sourceMappingURL=lex.js.map
|
package/dist/commands/lex.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lex.js","sourceRoot":"","sources":["../../src/commands/lex.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,oCAAiC;AAEjC,SAAgB,MAAM,CAAC,MAAc;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,aAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,mBAAmB,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AATD,wBASC"}
|
package/dist/commands/parse.d.ts
DELETED
package/dist/commands/parse.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* bonec parse <file>
|
|
4
|
-
* Print the AST as JSON.
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.runParse = void 0;
|
|
8
|
-
const lexer_1 = require("../lexer");
|
|
9
|
-
const parser_recovery_1 = require("../parser_recovery");
|
|
10
|
-
function runParse(source) {
|
|
11
|
-
try {
|
|
12
|
-
const tokens = new lexer_1.Lexer(source).tokenize();
|
|
13
|
-
const result = new parser_recovery_1.RecoveringParser(tokens).parse();
|
|
14
|
-
if (result.errors.length > 0) {
|
|
15
|
-
console.error(`x ${result.errors.length} parse error(s):`);
|
|
16
|
-
for (const e of result.errors)
|
|
17
|
-
console.error(` ${e.message}`);
|
|
18
|
-
if (!result.ast)
|
|
19
|
-
process.exit(1);
|
|
20
|
-
}
|
|
21
|
-
console.log(JSON.stringify(result.ast, null, 2));
|
|
22
|
-
console.log(`\nv Parsed ${result.ast?.systems.length || 0} system(s).`);
|
|
23
|
-
}
|
|
24
|
-
catch (e) {
|
|
25
|
-
console.error(`x ${e.message}`);
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
exports.runParse = runParse;
|
|
30
|
-
//# sourceMappingURL=parse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/commands/parse.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,oCAAiC;AACjC,wDAAsD;AAEtD,SAAgB,QAAQ,CAAC,MAAc;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,aAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,kCAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QACpD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC;YAC3D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,GAAG;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAfD,4BAeC"}
|
package/dist/commands/test.d.ts
DELETED
package/dist/commands/test.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* bonec test [output-dir]
|
|
4
|
-
* Run the generated regression test suite against a live server.
|
|
5
|
-
*/
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
-
if (mod && mod.__esModule) return mod;
|
|
24
|
-
var result = {};
|
|
25
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
-
__setModuleDefault(result, mod);
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.runTest = void 0;
|
|
31
|
-
const fs = __importStar(require("fs"));
|
|
32
|
-
const path = __importStar(require("path"));
|
|
33
|
-
const child_process_1 = require("child_process");
|
|
34
|
-
async function runTest(args) {
|
|
35
|
-
const outputDir = args[0] ? path.resolve(args[0]) : path.resolve("output");
|
|
36
|
-
const testFile = path.join(outputDir, "src", "tests.ts");
|
|
37
|
-
try {
|
|
38
|
-
await fs.promises.access(testFile);
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
console.error(`No test file found at ${testFile}`);
|
|
42
|
-
console.error("Run 'bonec compile <file>' first to generate tests.");
|
|
43
|
-
process.exit(1);
|
|
44
|
-
}
|
|
45
|
-
console.log(`Running BoneScript regression tests...`);
|
|
46
|
-
console.log(`Test file: ${testFile}`);
|
|
47
|
-
console.log(`Target: ${process.env.TEST_BASE_URL || "http://localhost:3000"}`);
|
|
48
|
-
console.log(``);
|
|
49
|
-
try {
|
|
50
|
-
(0, child_process_1.execSync)(`npx ts-node ${testFile}`, {
|
|
51
|
-
cwd: outputDir,
|
|
52
|
-
stdio: "inherit",
|
|
53
|
-
env: { ...process.env },
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
process.exit(1);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
exports.runTest = runTest;
|
|
61
|
-
//# sourceMappingURL=test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAyC;AAElC,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,uBAAuB,EAAE,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,eAAe,QAAQ,EAAE,EAAE;YAClC,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AA1BD,0BA0BC"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* bonec verify-determinism <file>
|
|
4
|
-
* Compile twice and assert bitwise-identical output.
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.runVerifyDeterminism = void 0;
|
|
8
|
-
const crypto_1 = require("crypto");
|
|
9
|
-
const lexer_1 = require("../lexer");
|
|
10
|
-
const parser_1 = require("../parser");
|
|
11
|
-
const lowering_1 = require("../lowering");
|
|
12
|
-
const emit_full_1 = require("../emit_full");
|
|
13
|
-
function runVerifyDeterminism(source) {
|
|
14
|
-
console.log("Verifying compilation determinism...");
|
|
15
|
-
const compile = () => {
|
|
16
|
-
const tokens = new lexer_1.Lexer(source).tokenize();
|
|
17
|
-
const ast = new parser_1.Parser(tokens).parse();
|
|
18
|
-
const hash = (0, crypto_1.createHash)("sha256").update(source).digest("hex").slice(0, 16);
|
|
19
|
-
const ir = new lowering_1.Lowering().lower(ast, hash);
|
|
20
|
-
const emitter = new emit_full_1.FullEmitter();
|
|
21
|
-
const files = [];
|
|
22
|
-
for (const sys of ir) {
|
|
23
|
-
for (const f of emitter.emit(sys)) {
|
|
24
|
-
files.push({ path: f.path, content: f.content });
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
files.sort((a, b) => a.path.localeCompare(b.path));
|
|
28
|
-
return JSON.stringify(files);
|
|
29
|
-
};
|
|
30
|
-
const run1 = compile();
|
|
31
|
-
const run2 = compile();
|
|
32
|
-
if (run1 === run2) {
|
|
33
|
-
const hash = (0, crypto_1.createHash)("sha256").update(run1).digest("hex").slice(0, 16);
|
|
34
|
-
console.log(`v Deterministic. Both runs produced identical output.`);
|
|
35
|
-
console.log(` Output hash: ${hash}`);
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const files1 = JSON.parse(run1);
|
|
39
|
-
const files2 = JSON.parse(run2);
|
|
40
|
-
for (let i = 0; i < Math.max(files1.length, files2.length); i++) {
|
|
41
|
-
const f1 = files1[i];
|
|
42
|
-
const f2 = files2[i];
|
|
43
|
-
if (!f1 || !f2 || f1.path !== f2.path || f1.content !== f2.content) {
|
|
44
|
-
console.error(`x NON-DETERMINISTIC: First divergence at file ${i}`);
|
|
45
|
-
console.error(` Run 1: ${f1?.path || "(missing)"}`);
|
|
46
|
-
console.error(` Run 2: ${f2?.path || "(missing)"}`);
|
|
47
|
-
if (f1 && f2 && f1.path === f2.path) {
|
|
48
|
-
const lines1 = f1.content.split("\n");
|
|
49
|
-
const lines2 = f2.content.split("\n");
|
|
50
|
-
for (let j = 0; j < Math.max(lines1.length, lines2.length); j++) {
|
|
51
|
-
if (lines1[j] !== lines2[j]) {
|
|
52
|
-
console.error(` First differing line ${j + 1}:`);
|
|
53
|
-
console.error(` Run 1: ${lines1[j]}`);
|
|
54
|
-
console.error(` Run 2: ${lines2[j]}`);
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
process.exit(1);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
exports.runVerifyDeterminism = runVerifyDeterminism;
|
|
64
|
-
//# sourceMappingURL=verify_determinism.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verify_determinism.js","sourceRoot":"","sources":["../../src/commands/verify_determinism.ts"],"names":[],"mappings":"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"}
|