bonescript-compiler 0.3.0 → 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 (52) hide show
  1. package/dist/commands/compile.js +42 -10
  2. package/dist/commands/compile.js.map +1 -1
  3. package/dist/commands/init.d.ts +1 -1
  4. package/dist/commands/init.js +29 -2
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/emit_capability.js +61 -7
  7. package/dist/emit_capability.js.map +1 -1
  8. package/dist/emit_composition.js +37 -3
  9. package/dist/emit_composition.js.map +1 -1
  10. package/dist/emit_events.d.ts +1 -0
  11. package/dist/emit_events.js +68 -1
  12. package/dist/emit_events.js.map +1 -1
  13. package/dist/emit_full.js +33 -0
  14. package/dist/emit_full.js.map +1 -1
  15. package/dist/emit_models.d.ts +12 -0
  16. package/dist/emit_models.js +171 -0
  17. package/dist/emit_models.js.map +1 -0
  18. package/dist/emit_openapi.d.ts +9 -0
  19. package/dist/emit_openapi.js +308 -0
  20. package/dist/emit_openapi.js.map +1 -0
  21. package/dist/emit_router.js +19 -4
  22. package/dist/emit_router.js.map +1 -1
  23. package/dist/emit_tests.js +37 -0
  24. package/dist/emit_tests.js.map +1 -1
  25. package/dist/emitter.js +34 -5
  26. package/dist/emitter.js.map +1 -1
  27. package/dist/lowering.js +16 -1
  28. package/dist/lowering.js.map +1 -1
  29. package/dist/lowering_channels.d.ts +1 -1
  30. package/dist/lowering_channels.js +2 -2
  31. package/dist/lowering_channels.js.map +1 -1
  32. package/dist/typechecker.js +32 -13
  33. package/dist/typechecker.js.map +1 -1
  34. package/dist/verifier.d.ts +5 -0
  35. package/dist/verifier.js +140 -2
  36. package/dist/verifier.js.map +1 -1
  37. package/package.json +1 -1
  38. package/src/commands/compile.ts +41 -10
  39. package/src/commands/init.ts +28 -2
  40. package/src/emit_capability.ts +61 -6
  41. package/src/emit_composition.ts +36 -3
  42. package/src/emit_events.ts +70 -0
  43. package/src/emit_full.ts +36 -1
  44. package/src/emit_models.ts +176 -0
  45. package/src/emit_openapi.ts +318 -0
  46. package/src/emit_router.ts +18 -4
  47. package/src/emit_tests.ts +41 -0
  48. package/src/emitter.ts +592 -566
  49. package/src/lowering.ts +19 -1
  50. package/src/lowering_channels.ts +2 -2
  51. package/src/typechecker.ts +606 -591
  52. package/src/verifier.ts +495 -348
package/src/lowering.ts CHANGED
@@ -58,9 +58,27 @@ export class Lowering {
58
58
  modules.push(lowerChannel(this.systemName, channel));
59
59
  }
60
60
 
61
+ // Build a map from event name → emitting module id by scanning all capabilities
62
+ // across all entities. This resolves the event source before lowering events.
63
+ const eventSourceMap = new Map<string, string>();
64
+ for (const entity of entities) {
65
+ const moduleId = makeId(this.systemName, "api_service", `${entity.name}Service`);
66
+ const relatedCaps = capabilities.filter(c =>
67
+ c.params.some(p => p.type.kind === "EntityRefType" && p.type.name === entity.name)
68
+ );
69
+ for (const cap of relatedCaps) {
70
+ for (const emit of cap.emits) {
71
+ if (!eventSourceMap.has(emit.eventName)) {
72
+ eventSourceMap.set(emit.eventName, moduleId);
73
+ }
74
+ }
75
+ }
76
+ }
77
+
61
78
  // Events
62
79
  for (const ev of eventDecls) {
63
- events.push(lowerEvent(this.systemName, ev));
80
+ const source = eventSourceMap.get(ev.name) || "unknown";
81
+ events.push(lowerEvent(this.systemName, ev, source));
64
82
  }
65
83
 
66
84
  // Flows
@@ -79,12 +79,12 @@ export function lowerChannel(systemName: string, channel: AST.ChannelDeclNode):
79
79
 
80
80
  // ─── Event Lowering ───────────────────────────────────────────────────────────
81
81
 
82
- export function lowerEvent(systemName: string, ev: AST.EventDeclNode): IR.IREvent {
82
+ export function lowerEvent(systemName: string, ev: AST.EventDeclNode, source: string): IR.IREvent {
83
83
  return {
84
84
  id: makeId(systemName, "event", ev.name),
85
85
  name: ev.name,
86
86
  payload: ev.payload.map(lowerFieldHelper),
87
- source: "unknown",
87
+ source,
88
88
  delivery: (ev.delivery as IR.IRDeliveryMode) || "at_least_once",
89
89
  ordering: "fifo",
90
90
  ttl_ms: parseDurationMs(ev.ttl),