bonescript-compiler 0.2.1 → 0.4.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.
Files changed (167) hide show
  1. package/LICENSE +21 -21
  2. package/dist/algorithm_catalog.js +166 -166
  3. package/dist/cli.d.ts +2 -1
  4. package/dist/cli.js +75 -543
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/check.d.ts +5 -0
  7. package/dist/commands/check.js +34 -0
  8. package/dist/commands/check.js.map +1 -0
  9. package/dist/commands/compile.d.ts +5 -0
  10. package/dist/commands/compile.js +215 -0
  11. package/dist/commands/compile.js.map +1 -0
  12. package/dist/commands/debug.d.ts +5 -0
  13. package/dist/commands/debug.js +59 -0
  14. package/dist/commands/debug.js.map +1 -0
  15. package/dist/commands/diff.d.ts +5 -0
  16. package/dist/commands/diff.js +125 -0
  17. package/dist/commands/diff.js.map +1 -0
  18. package/dist/commands/fmt.d.ts +5 -0
  19. package/dist/commands/fmt.js +49 -0
  20. package/dist/commands/fmt.js.map +1 -0
  21. package/dist/commands/init.d.ts +5 -0
  22. package/dist/commands/init.js +96 -0
  23. package/dist/commands/init.js.map +1 -0
  24. package/dist/commands/ir.d.ts +5 -0
  25. package/dist/commands/ir.js +27 -0
  26. package/dist/commands/ir.js.map +1 -0
  27. package/dist/commands/lex.d.ts +5 -0
  28. package/dist/commands/lex.js +21 -0
  29. package/dist/commands/lex.js.map +1 -0
  30. package/dist/commands/parse.d.ts +5 -0
  31. package/dist/commands/parse.js +30 -0
  32. package/dist/commands/parse.js.map +1 -0
  33. package/dist/commands/test.d.ts +5 -0
  34. package/dist/commands/test.js +61 -0
  35. package/dist/commands/test.js.map +1 -0
  36. package/dist/commands/verify_determinism.d.ts +5 -0
  37. package/dist/commands/verify_determinism.js +64 -0
  38. package/dist/commands/verify_determinism.js.map +1 -0
  39. package/dist/commands/watch.d.ts +5 -0
  40. package/dist/commands/watch.js +50 -0
  41. package/dist/commands/watch.js.map +1 -0
  42. package/dist/emit_auth.d.ts +6 -0
  43. package/dist/emit_auth.js +69 -0
  44. package/dist/emit_auth.js.map +1 -0
  45. package/dist/emit_capability.d.ts +13 -0
  46. package/dist/emit_capability.js +292 -128
  47. package/dist/emit_capability.js.map +1 -1
  48. package/dist/emit_composition.js +37 -3
  49. package/dist/emit_composition.js.map +1 -1
  50. package/dist/emit_database.d.ts +7 -0
  51. package/dist/emit_database.js +74 -0
  52. package/dist/emit_database.js.map +1 -0
  53. package/dist/emit_deploy.js +162 -162
  54. package/dist/emit_events.d.ts +1 -0
  55. package/dist/emit_events.js +342 -275
  56. package/dist/emit_events.js.map +1 -1
  57. package/dist/emit_full.js +135 -95
  58. package/dist/emit_full.js.map +1 -1
  59. package/dist/emit_index.d.ts +6 -0
  60. package/dist/emit_index.js +157 -0
  61. package/dist/emit_index.js.map +1 -0
  62. package/dist/emit_maintenance.js +249 -249
  63. package/dist/emit_models.d.ts +12 -0
  64. package/dist/emit_models.js +171 -0
  65. package/dist/emit_models.js.map +1 -0
  66. package/dist/emit_openapi.d.ts +9 -0
  67. package/dist/emit_openapi.js +308 -0
  68. package/dist/emit_openapi.js.map +1 -0
  69. package/dist/emit_package.d.ts +7 -0
  70. package/dist/emit_package.js +70 -0
  71. package/dist/emit_package.js.map +1 -0
  72. package/dist/emit_router.d.ts +12 -0
  73. package/dist/emit_router.js +390 -0
  74. package/dist/emit_router.js.map +1 -0
  75. package/dist/emit_runtime.d.ts +17 -11
  76. package/dist/emit_runtime.js +29 -686
  77. package/dist/emit_runtime.js.map +1 -1
  78. package/dist/emit_sourcemap.js +66 -66
  79. package/dist/emit_tests.js +37 -0
  80. package/dist/emit_tests.js.map +1 -1
  81. package/dist/emitter.js +34 -5
  82. package/dist/emitter.js.map +1 -1
  83. package/dist/extension_manager.d.ts +2 -2
  84. package/dist/extension_manager.js +6 -3
  85. package/dist/extension_manager.js.map +1 -1
  86. package/dist/lowering.d.ts +5 -14
  87. package/dist/lowering.js +47 -417
  88. package/dist/lowering.js.map +1 -1
  89. package/dist/lowering_channels.d.ts +11 -0
  90. package/dist/lowering_channels.js +102 -0
  91. package/dist/lowering_channels.js.map +1 -0
  92. package/dist/lowering_entities.d.ts +11 -0
  93. package/dist/lowering_entities.js +222 -0
  94. package/dist/lowering_entities.js.map +1 -0
  95. package/dist/lowering_helpers.d.ts +13 -0
  96. package/dist/lowering_helpers.js +76 -0
  97. package/dist/lowering_helpers.js.map +1 -0
  98. package/dist/module_loader.d.ts +2 -2
  99. package/dist/module_loader.js +20 -23
  100. package/dist/module_loader.js.map +1 -1
  101. package/dist/scaffold.d.ts +2 -2
  102. package/dist/scaffold.js +316 -319
  103. package/dist/scaffold.js.map +1 -1
  104. package/dist/typechecker.js +32 -13
  105. package/dist/typechecker.js.map +1 -1
  106. package/dist/verifier.d.ts +5 -0
  107. package/dist/verifier.js +140 -2
  108. package/dist/verifier.js.map +1 -1
  109. package/package.json +62 -52
  110. package/src/algorithm_catalog.ts +345 -345
  111. package/src/ast.ts +334 -334
  112. package/src/cli.ts +98 -624
  113. package/src/commands/check.ts +33 -0
  114. package/src/commands/compile.ts +191 -0
  115. package/src/commands/debug.ts +33 -0
  116. package/src/commands/diff.ts +108 -0
  117. package/src/commands/fmt.ts +22 -0
  118. package/src/commands/init.ts +72 -0
  119. package/src/commands/ir.ts +23 -0
  120. package/src/commands/lex.ts +17 -0
  121. package/src/commands/parse.ts +24 -0
  122. package/src/commands/test.ts +36 -0
  123. package/src/commands/verify_determinism.ts +66 -0
  124. package/src/commands/watch.ts +25 -0
  125. package/src/emit_auth.ts +67 -0
  126. package/src/emit_batch.ts +140 -140
  127. package/src/emit_capability.ts +617 -436
  128. package/src/emit_composition.ts +229 -196
  129. package/src/emit_database.ts +75 -0
  130. package/src/emit_deploy.ts +190 -190
  131. package/src/emit_events.ts +377 -307
  132. package/src/emit_extras.ts +240 -240
  133. package/src/emit_full.ts +351 -309
  134. package/src/emit_index.ts +161 -0
  135. package/src/emit_maintenance.ts +459 -459
  136. package/src/emit_models.ts +176 -0
  137. package/src/emit_openapi.ts +318 -0
  138. package/src/emit_package.ts +69 -0
  139. package/src/emit_router.ts +409 -0
  140. package/src/emit_runtime.ts +17 -728
  141. package/src/emit_sourcemap.ts +140 -140
  142. package/src/emit_tests.ts +246 -205
  143. package/src/emit_websocket.ts +229 -229
  144. package/src/emitter.ts +31 -5
  145. package/src/extension_manager.ts +189 -187
  146. package/src/formatter.ts +297 -297
  147. package/src/index.ts +88 -88
  148. package/src/ir.ts +215 -215
  149. package/src/lexer.ts +630 -630
  150. package/src/lowering.ts +142 -556
  151. package/src/lowering_channels.ts +107 -0
  152. package/src/lowering_entities.ts +248 -0
  153. package/src/lowering_helpers.ts +75 -0
  154. package/src/module_loader.ts +112 -114
  155. package/src/optimizer.ts +196 -196
  156. package/src/parse_decls.ts +409 -409
  157. package/src/parse_decls2.ts +244 -244
  158. package/src/parse_expr.ts +197 -197
  159. package/src/parse_types.ts +54 -54
  160. package/src/parser.ts +1 -1
  161. package/src/parser_base.ts +57 -57
  162. package/src/parser_recovery.ts +153 -153
  163. package/src/scaffold.ts +372 -375
  164. package/src/solver.ts +330 -330
  165. package/src/typechecker.ts +30 -15
  166. package/src/types.ts +122 -122
  167. package/src/verifier.ts +151 -4
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ /**
3
+ * BoneScript Channel / Event / Flow / Store Lowering
4
+ * Converts ChannelDecl, EventDecl, FlowDecl, and StoreDecl AST nodes into IR.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.lowerFlow = exports.lowerEvent = exports.lowerChannel = exports.lowerStore = exports.lowerField = void 0;
8
+ const lowering_helpers_1 = require("./lowering_helpers");
9
+ const lowering_entities_1 = require("./lowering_entities");
10
+ // Re-export lowerField so lowering.ts can use a single import
11
+ var lowering_entities_2 = require("./lowering_entities");
12
+ Object.defineProperty(exports, "lowerField", { enumerable: true, get: function () { return lowering_entities_2.lowerField; } });
13
+ // ─── Store Lowering ───────────────────────────────────────────────────────────
14
+ function lowerStore(systemName, store) {
15
+ const entityName = store.name.replace(/Store$/, "") || store.name;
16
+ const model = {
17
+ name: entityName,
18
+ fields: store.schema.map(lowering_entities_1.lowerField),
19
+ primary_key: "id",
20
+ indexes: [],
21
+ constraints: [],
22
+ };
23
+ if (!model.fields.find(f => f.name === "id")) {
24
+ model.fields.unshift({
25
+ name: "id", type: "uuid", nullable: false, unique: true, indexed: true, default_value: "gen_random_uuid()",
26
+ });
27
+ }
28
+ return {
29
+ id: (0, lowering_helpers_1.makeId)(systemName, "data_store", store.name),
30
+ kind: "data_store",
31
+ name: store.name,
32
+ interfaces: [],
33
+ models: [model],
34
+ events: [],
35
+ state_machines: [],
36
+ relations: [],
37
+ dependencies: [],
38
+ config: {
39
+ engine: store.engine || "postgresql",
40
+ replicas: store.replicas || 1,
41
+ ...(store.retention ? { retention_ms: (0, lowering_helpers_1.parseDurationMs)(store.retention) || 0 } : {}),
42
+ ...(store.partition ? { partition_key: store.partition } : {}),
43
+ },
44
+ };
45
+ }
46
+ exports.lowerStore = lowerStore;
47
+ // ─── Channel Lowering ─────────────────────────────────────────────────────────
48
+ function lowerChannel(systemName, channel) {
49
+ return {
50
+ id: (0, lowering_helpers_1.makeId)(systemName, "realtime_service", channel.name),
51
+ kind: "realtime_service",
52
+ name: channel.name,
53
+ interfaces: [{
54
+ name: `I${channel.name}Channel`,
55
+ methods: [
56
+ { name: "connect", input: [], output: "connection", preconditions: [], effects: [], emissions: [], idempotent: false, authenticated: true, timeout_ms: 5000, retry: null, pipeline: null, algorithm: null, sync: null },
57
+ { name: "subscribe", input: [{ name: "topic", type: "string", nullable: false, unique: false, indexed: false, default_value: null }], output: "subscription", preconditions: [], effects: [], emissions: [], idempotent: true, authenticated: true, timeout_ms: 5000, retry: null, pipeline: null, algorithm: null, sync: null },
58
+ { name: "publish", input: [{ name: "message", type: "json", nullable: false, unique: false, indexed: false, default_value: null }], output: "void", preconditions: [], effects: [], emissions: [], idempotent: false, authenticated: true, timeout_ms: 5000, retry: null, pipeline: null, algorithm: null, sync: null },
59
+ ],
60
+ }],
61
+ models: [],
62
+ events: [],
63
+ state_machines: [],
64
+ relations: [],
65
+ dependencies: [],
66
+ config: {
67
+ transport: channel.transport || "websocket",
68
+ ordering: channel.ordering || "fifo",
69
+ persistence: channel.persistence || "none",
70
+ max_size: channel.maxSize || 10000,
71
+ },
72
+ };
73
+ }
74
+ exports.lowerChannel = lowerChannel;
75
+ // ─── Event Lowering ───────────────────────────────────────────────────────────
76
+ function lowerEvent(systemName, ev, source) {
77
+ return {
78
+ id: (0, lowering_helpers_1.makeId)(systemName, "event", ev.name),
79
+ name: ev.name,
80
+ payload: ev.payload.map(lowering_entities_1.lowerField),
81
+ source,
82
+ delivery: ev.delivery || "at_least_once",
83
+ ordering: "fifo",
84
+ ttl_ms: (0, lowering_helpers_1.parseDurationMs)(ev.ttl),
85
+ };
86
+ }
87
+ exports.lowerEvent = lowerEvent;
88
+ // ─── Flow Lowering ────────────────────────────────────────────────────────────
89
+ function lowerFlow(_systemName, flow) {
90
+ return {
91
+ name: flow.name,
92
+ steps: flow.steps.map(s => ({
93
+ name: s.name,
94
+ action: `${s.action.name}(${s.action.args.map(lowering_helpers_1.serializeExpr).join(", ")})`,
95
+ compensation: s.compensate
96
+ ? `${s.compensate.name}(${s.compensate.args.map(lowering_helpers_1.serializeExpr).join(", ")})`
97
+ : null,
98
+ })),
99
+ };
100
+ }
101
+ exports.lowerFlow = lowerFlow;
102
+ //# sourceMappingURL=lowering_channels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lowering_channels.js","sourceRoot":"","sources":["../src/lowering_channels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * BoneScript Entity Lowering
3
+ * Converts EntityDecl + CapabilityDecl AST nodes into IR api_service modules.
4
+ * Also handles field lowering and CRUD method generation.
5
+ */
6
+ import * as AST from "./ast";
7
+ import * as IR from "./ir";
8
+ export declare function lowerField(f: AST.FieldNode): IR.IRField;
9
+ export declare function makeCrudMethod(op: string, entityName: string, fields: IR.IRField[]): IR.IRMethod;
10
+ export declare function lowerCapability(cap: AST.CapabilityDeclNode): IR.IRMethod;
11
+ export declare function lowerEntity(systemName: string, entity: AST.EntityDeclNode, capabilities: AST.CapabilityDeclNode[], stores: AST.StoreDeclNode[]): IR.IRModule;
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ /**
3
+ * BoneScript Entity Lowering
4
+ * Converts EntityDecl + CapabilityDecl AST nodes into IR api_service modules.
5
+ * Also handles field lowering and CRUD method generation.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.lowerEntity = exports.lowerCapability = exports.makeCrudMethod = exports.lowerField = void 0;
9
+ const lowering_helpers_1 = require("./lowering_helpers");
10
+ // ─── Field Lowering ───────────────────────────────────────────────────────────
11
+ function lowerField(f) {
12
+ const type = (0, lowering_helpers_1.serializeType)(f.type);
13
+ // defaultValue is an ExprNode | null — serialize it to a string if present
14
+ const defaultValue = f.defaultValue ? (0, lowering_helpers_1.serializeExpr)(f.defaultValue) : null;
15
+ return {
16
+ name: f.name,
17
+ type,
18
+ nullable: false,
19
+ unique: false,
20
+ indexed: false,
21
+ default_value: defaultValue,
22
+ };
23
+ }
24
+ exports.lowerField = lowerField;
25
+ // ─── CRUD Method Generation ───────────────────────────────────────────────────
26
+ function makeCrudMethod(op, entityName, fields) {
27
+ const input = op === "create" || op === "update"
28
+ ? fields.filter(f => f.name !== "id" && f.name !== "created_at" && f.name !== "updated_at")
29
+ : op === "list"
30
+ ? [
31
+ { name: "page", type: "uint", nullable: true, unique: false, indexed: false, default_value: "1" },
32
+ { name: "page_size", type: "uint", nullable: true, unique: false, indexed: false, default_value: "50" },
33
+ ]
34
+ : [{ name: "id", type: "uuid", nullable: false, unique: true, indexed: true, default_value: null }];
35
+ return {
36
+ name: op,
37
+ input,
38
+ output: op === "list" ? `list<${entityName}>` : op === "delete" ? "bool" : entityName,
39
+ preconditions: [],
40
+ effects: [],
41
+ emissions: [],
42
+ idempotent: op === "read" || op === "list",
43
+ authenticated: true,
44
+ timeout_ms: 30000,
45
+ retry: null,
46
+ pipeline: null,
47
+ algorithm: null,
48
+ sync: null,
49
+ };
50
+ }
51
+ exports.makeCrudMethod = makeCrudMethod;
52
+ // ─── Capability Lowering ──────────────────────────────────────────────────────
53
+ function lowerCapability(cap) {
54
+ const input = cap.params.map(p => ({
55
+ name: p.name,
56
+ type: (0, lowering_helpers_1.serializeType)(p.type),
57
+ nullable: false,
58
+ unique: false,
59
+ indexed: false,
60
+ default_value: null,
61
+ }));
62
+ const preconditions = cap.requires.map(r => ({
63
+ expression: (0, lowering_helpers_1.serializeExpr)(r),
64
+ description: (0, lowering_helpers_1.serializeExpr)(r),
65
+ }));
66
+ const effects = cap.effects.map(e => ({
67
+ target: e.target.path.join("."),
68
+ op: e.op === "=" ? "assign" : e.op === "+=" ? "add" : "remove",
69
+ value: (0, lowering_helpers_1.serializeExpr)(e.value),
70
+ }));
71
+ let pipeline = null;
72
+ if (cap.pipeline) {
73
+ pipeline = {
74
+ parallel: cap.pipeline.parallel,
75
+ steps: cap.pipeline.steps.map(step => ({
76
+ call_name: step.call.name,
77
+ call_args: step.call.args.map(a => (0, lowering_helpers_1.serializeExpr)(a)),
78
+ bind_as: step.bindAs,
79
+ })),
80
+ on_error: cap.pipeline.onError ? {
81
+ action: cap.pipeline.onError.action,
82
+ call_name: cap.pipeline.onError.call?.name || null,
83
+ call_args: cap.pipeline.onError.call?.args.map(a => (0, lowering_helpers_1.serializeExpr)(a)) || [],
84
+ } : null,
85
+ };
86
+ }
87
+ let algorithm = null;
88
+ if (cap.algorithm) {
89
+ algorithm = {
90
+ catalog_name: cap.algorithm.name,
91
+ bindings: cap.algorithm.using.map(b => ({
92
+ param: b.param,
93
+ value: (0, lowering_helpers_1.serializeExpr)(b.value),
94
+ })),
95
+ };
96
+ }
97
+ return {
98
+ name: cap.name,
99
+ input,
100
+ output: cap.returns ? (0, lowering_helpers_1.serializeType)(cap.returns) : "result<void, error>",
101
+ preconditions,
102
+ effects,
103
+ emissions: cap.emits.map(e => e.eventName),
104
+ idempotent: cap.idempotent || false,
105
+ authenticated: true,
106
+ timeout_ms: (0, lowering_helpers_1.parseDurationMs)(cap.timeout) || 30000,
107
+ retry: cap.retry ? {
108
+ max_attempts: cap.retry.maxAttempts || 3,
109
+ backoff: cap.retry.backoff || "exponential",
110
+ interval_ms: (0, lowering_helpers_1.parseDurationMs)(cap.retry.interval) || 1000,
111
+ } : null,
112
+ pipeline,
113
+ algorithm,
114
+ sync: cap.sync,
115
+ };
116
+ }
117
+ exports.lowerCapability = lowerCapability;
118
+ // ─── Entity Lowering ──────────────────────────────────────────────────────────
119
+ function lowerEntity(systemName, entity, capabilities, stores) {
120
+ const moduleId = (0, lowering_helpers_1.makeId)(systemName, "api_service", `${entity.name}Service`);
121
+ // Ontology-entailed fields + declared fields
122
+ const fields = [
123
+ { name: "id", type: "uuid", nullable: false, unique: true, indexed: true, default_value: "gen_random_uuid()" },
124
+ { name: "created_at", type: "timestamp", nullable: false, unique: false, indexed: true, default_value: "now()" },
125
+ { name: "updated_at", type: "timestamp", nullable: false, unique: false, indexed: false, default_value: "now()" },
126
+ ...entity.owns.map(lowerField),
127
+ ];
128
+ const derivedFields = entity.derived.map(d => ({
129
+ name: d.name,
130
+ type: "json",
131
+ nullable: true,
132
+ unique: false,
133
+ indexed: false,
134
+ default_value: `GENERATED ALWAYS AS (${(0, lowering_helpers_1.serializeExpr)(d.expr)}) STORED`,
135
+ }));
136
+ const indexes = entity.indexes.map(idx => ({ fields: idx, unique: false }));
137
+ const modelConstraints = [];
138
+ for (const c of entity.constraints) {
139
+ const serialized = (0, lowering_helpers_1.serializeExpr)(c);
140
+ if (c.kind === "FieldRef" && c.path[c.path.length - 1] === "unique") {
141
+ const field = c.path.slice(0, -1).join(".");
142
+ modelConstraints.push({ kind: "unique", target: field, params: {} });
143
+ indexes.push({ fields: [field], unique: true });
144
+ }
145
+ else {
146
+ modelConstraints.push({ kind: "check", target: entity.name, params: { expression: serialized } });
147
+ }
148
+ }
149
+ const model = {
150
+ name: entity.name,
151
+ fields: [...fields, ...derivedFields],
152
+ primary_key: "id",
153
+ indexes,
154
+ constraints: modelConstraints,
155
+ };
156
+ // State machine
157
+ const stateMachines = [];
158
+ if (entity.states) {
159
+ const states = entity.states.nodes.map(n => n.name);
160
+ const transitions = [];
161
+ for (const node of entity.states.nodes) {
162
+ for (const target of node.transitions) {
163
+ transitions.push({ from: node.name, to: target, trigger: `${node.name}_to_${target}`, guard: null });
164
+ }
165
+ for (const target of node.branches) {
166
+ transitions.push({ from: node.name, to: target, trigger: `${node.name}_to_${target}`, guard: null });
167
+ }
168
+ }
169
+ stateMachines.push({ entity: entity.name, states, initial: states[0], transitions });
170
+ }
171
+ // Methods: CRUD + capabilities
172
+ const methods = [
173
+ makeCrudMethod("create", entity.name, fields),
174
+ makeCrudMethod("read", entity.name, fields),
175
+ makeCrudMethod("update", entity.name, fields),
176
+ makeCrudMethod("delete", entity.name, fields),
177
+ makeCrudMethod("list", entity.name, fields),
178
+ ...capabilities.map(lowerCapability),
179
+ ];
180
+ // Relations
181
+ const relations = entity.relations.map(rel => {
182
+ const fromTable = (0, lowering_helpers_1.toSnakeCase)(entity.name) + "s";
183
+ const toTable = (0, lowering_helpers_1.toSnakeCase)(rel.target) + "s";
184
+ let foreignKey;
185
+ let junctionTable;
186
+ switch (rel.relationType) {
187
+ case "belongs_to":
188
+ foreignKey = (0, lowering_helpers_1.toSnakeCase)(rel.target) + "_id";
189
+ break;
190
+ case "has_one":
191
+ case "has_many":
192
+ foreignKey = (0, lowering_helpers_1.toSnakeCase)(entity.name) + "_id";
193
+ break;
194
+ case "many_to_many":
195
+ foreignKey = (0, lowering_helpers_1.toSnakeCase)(entity.name) + "_id";
196
+ junctionTable = [fromTable, toTable].sort().join("_");
197
+ break;
198
+ default:
199
+ foreignKey = (0, lowering_helpers_1.toSnakeCase)(rel.target) + "_id";
200
+ }
201
+ return { name: rel.name, kind: rel.relationType, from_entity: entity.name, to_entity: rel.target, from_table: fromTable, to_table: toTable, foreign_key: foreignKey, junction_table: junctionTable };
202
+ });
203
+ const relatedStore = stores.find(s => s.name.toLowerCase().includes(entity.name.toLowerCase()));
204
+ const deps = relatedStore ? [(0, lowering_helpers_1.makeId)(systemName, "data_store", relatedStore.name)] : [];
205
+ return {
206
+ id: moduleId,
207
+ kind: "api_service",
208
+ name: `${entity.name}Service`,
209
+ interfaces: [{ name: `I${entity.name}Service`, methods }],
210
+ models: [model],
211
+ events: [],
212
+ state_machines: stateMachines,
213
+ relations,
214
+ dependencies: deps,
215
+ config: {
216
+ authenticated: entity.auth !== null && entity.auth !== "none",
217
+ auth_method: entity.auth || "none",
218
+ },
219
+ };
220
+ }
221
+ exports.lowerEntity = lowerEntity;
222
+ //# sourceMappingURL=lowering_entities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lowering_entities.js","sourceRoot":"","sources":["../src/lowering_entities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * BoneScript Lowering Helpers
3
+ * Shared utilities used across all lowering phases:
4
+ * - Deterministic ID generation
5
+ * - Duration string parsing
6
+ * - AST type/expression serialization
7
+ */
8
+ import * as AST from "./ast";
9
+ export declare function makeId(systemName: string, kind: string, name: string): string;
10
+ export declare function parseDurationMs(dur: string | null): number | null;
11
+ export declare function serializeType(t: AST.TypeExprNode): string;
12
+ export declare function serializeExpr(e: AST.ExprNode): string;
13
+ export declare function toSnakeCase(s: string): string;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /**
3
+ * BoneScript Lowering Helpers
4
+ * Shared utilities used across all lowering phases:
5
+ * - Deterministic ID generation
6
+ * - Duration string parsing
7
+ * - AST type/expression serialization
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.toSnakeCase = exports.serializeExpr = exports.serializeType = exports.parseDurationMs = exports.makeId = void 0;
11
+ const crypto_1 = require("crypto");
12
+ // ─── Deterministic ID Generation ─────────────────────────────────────────────
13
+ function makeId(systemName, kind, name) {
14
+ return (0, crypto_1.createHash)("sha256")
15
+ .update(`${systemName}.${kind}.${name}`)
16
+ .digest("hex")
17
+ .slice(0, 16);
18
+ }
19
+ exports.makeId = makeId;
20
+ // ─── Duration Parsing ─────────────────────────────────────────────────────────
21
+ function parseDurationMs(dur) {
22
+ if (!dur)
23
+ return null;
24
+ const match = dur.match(/^(\d+)(ms|s|m|h|d)$/);
25
+ if (!match)
26
+ return null;
27
+ const value = parseInt(match[1], 10);
28
+ switch (match[2]) {
29
+ case "ms": return value;
30
+ case "s": return value * 1000;
31
+ case "m": return value * 60000;
32
+ case "h": return value * 3600000;
33
+ case "d": return value * 86400000;
34
+ default: return null;
35
+ }
36
+ }
37
+ exports.parseDurationMs = parseDurationMs;
38
+ // ─── Type Expression Serialization ───────────────────────────────────────────
39
+ function serializeType(t) {
40
+ switch (t.kind) {
41
+ case "PrimitiveType": return t.name;
42
+ case "GenericType": return `${t.name}<${t.typeArgs.map(serializeType).join(", ")}>`;
43
+ case "EntityRefType": return t.name;
44
+ case "TupleType": return `(${t.elements.map(serializeType).join(", ")})`;
45
+ case "UnionType": return t.members.map(serializeType).join(" | ");
46
+ }
47
+ }
48
+ exports.serializeType = serializeType;
49
+ // ─── Expression Serialization ─────────────────────────────────────────────────
50
+ function serializeExpr(e) {
51
+ switch (e.kind) {
52
+ case "Literal":
53
+ if (e.type === "string")
54
+ return `"${e.value}"`;
55
+ if (e.type === "list")
56
+ return `[${e.value.map(serializeExpr).join(", ")}]`;
57
+ return String(e.value);
58
+ case "FieldRef":
59
+ return e.path.join(".");
60
+ case "BinaryExpr":
61
+ return `(${serializeExpr(e.left)} ${e.op} ${serializeExpr(e.right)})`;
62
+ case "UnaryExpr":
63
+ return `(${e.op} ${serializeExpr(e.operand)})`;
64
+ case "CallExpr":
65
+ return `${e.name}(${e.args.map(serializeExpr).join(", ")})`;
66
+ case "TernaryExpr":
67
+ return `(${serializeExpr(e.condition)} ? ${serializeExpr(e.consequent)} : ${serializeExpr(e.alternate)})`;
68
+ }
69
+ }
70
+ exports.serializeExpr = serializeExpr;
71
+ // ─── Shared snake_case helper ─────────────────────────────────────────────────
72
+ function toSnakeCase(s) {
73
+ return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
74
+ }
75
+ exports.toSnakeCase = toSnakeCase;
76
+ //# sourceMappingURL=lowering_helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lowering_helpers.js","sourceRoot":"","sources":["../src/lowering_helpers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * BoneScript Module Loader — Resolves import declarations across multiple .bone files.
2
+ * BoneScript Module Loader Resolves import declarations across multiple .bone files.
3
3
  *
4
4
  * Behavior:
5
5
  * - Tracks loaded files to avoid cycles
@@ -20,6 +20,6 @@ export declare class ModuleLoader {
20
20
  private loaded;
21
21
  private inProgress;
22
22
  private errors;
23
- load(entryFile: string): LoadResult;
23
+ load(entryFile: string): Promise<LoadResult>;
24
24
  private loadFile;
25
25
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * BoneScript Module Loader — Resolves import declarations across multiple .bone files.
3
+ * BoneScript Module Loader Resolves import declarations across multiple .bone files.
4
4
  *
5
5
  * Behavior:
6
6
  * - Tracks loaded files to avoid cycles
@@ -43,16 +43,16 @@ class ModuleLoader {
43
43
  this.inProgress = new Set();
44
44
  this.errors = [];
45
45
  }
46
- load(entryFile) {
46
+ async load(entryFile) {
47
47
  const resolved = path.resolve(entryFile);
48
- const ast = this.loadFile(resolved);
48
+ const ast = await this.loadFile(resolved);
49
49
  return {
50
50
  ast,
51
51
  errors: this.errors,
52
52
  loadedFiles: Array.from(this.loaded.keys()),
53
53
  };
54
54
  }
55
- loadFile(filePath) {
55
+ async loadFile(filePath) {
56
56
  if (this.loaded.has(filePath))
57
57
  return this.loaded.get(filePath);
58
58
  if (this.inProgress.has(filePath)) {
@@ -62,7 +62,11 @@ class ModuleLoader {
62
62
  });
63
63
  return null;
64
64
  }
65
- if (!fs.existsSync(filePath)) {
65
+ // Check existence without blocking the event loop
66
+ try {
67
+ await fs.promises.access(filePath);
68
+ }
69
+ catch {
66
70
  this.errors.push({
67
71
  file: filePath,
68
72
  error: new parser_base_1.ParseError(`File not found: ${filePath}`, { line: 1, column: 1, offset: 0 }),
@@ -70,7 +74,7 @@ class ModuleLoader {
70
74
  return null;
71
75
  }
72
76
  this.inProgress.add(filePath);
73
- const source = fs.readFileSync(filePath, "utf-8");
77
+ const source = await fs.promises.readFile(filePath, "utf-8");
74
78
  const tokens = new lexer_1.Lexer(source).tokenize();
75
79
  const result = new parser_recovery_1.RecoveringParser(tokens).parse();
76
80
  for (const err of result.errors) {
@@ -80,38 +84,31 @@ class ModuleLoader {
80
84
  this.inProgress.delete(filePath);
81
85
  return null;
82
86
  }
83
- // Resolve imports recursively
87
+ // Resolve imports recursively (in parallel where possible)
84
88
  const importedSystems = [];
85
89
  for (const sys of result.ast.systems) {
86
90
  const imports = sys.declarations.filter((d) => d.kind === "ImportDecl");
87
- for (const imp of imports) {
91
+ // Load all imports for this system in parallel
92
+ const importedAsts = await Promise.all(imports.map(imp => {
88
93
  const importPath = path.resolve(path.dirname(filePath), imp.from);
89
- const importedAst = this.loadFile(importPath);
90
- if (importedAst) {
94
+ return this.loadFile(importPath);
95
+ }));
96
+ for (const importedAst of importedAsts) {
97
+ if (importedAst)
91
98
  importedSystems.push(...importedAst.systems);
92
- }
93
99
  }
94
100
  }
95
- // Merge imported systems' declarations into current systems
101
+ // Merge imported declarations into current systems
96
102
  if (importedSystems.length > 0) {
97
- const mergedSystems = result.ast.systems.map(sys => {
98
- const importedDecls = [];
99
- for (const imported of importedSystems) {
100
- // Add imported entities, events, etc. (skip imports themselves)
101
- for (const d of imported.declarations) {
102
- if (d.kind !== "ImportDecl")
103
- importedDecls.push(d);
104
- }
105
- }
103
+ result.ast.systems = result.ast.systems.map(sys => {
104
+ const importedDecls = importedSystems.flatMap(imported => imported.declarations.filter(d => d.kind !== "ImportDecl"));
106
105
  return {
107
106
  ...sys,
108
107
  declarations: [...sys.declarations.filter(d => d.kind !== "ImportDecl"), ...importedDecls],
109
108
  };
110
109
  });
111
- result.ast.systems = mergedSystems;
112
110
  }
113
111
  else {
114
- // Remove import declarations from final AST
115
112
  result.ast.systems = result.ast.systems.map(sys => ({
116
113
  ...sys,
117
114
  declarations: sys.declarations.filter(d => d.kind !== "ImportDecl"),
@@ -1 +1 @@
1
- {"version":3,"file":"module_loader.js","sourceRoot":"","sources":["../src/module_loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module_loader.js","sourceRoot":"","sources":["../src/module_loader.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,6 @@ export interface ScaffoldOptions {
8
8
  domain: ScaffoldDomain;
9
9
  outDir: string;
10
10
  }
11
- export declare function scaffold(opts: ScaffoldOptions): {
11
+ export declare function scaffold(opts: ScaffoldOptions): Promise<{
12
12
  created: string[];
13
- };
13
+ }>;