bonescript-compiler 0.8.0 → 0.11.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/dist/index.js CHANGED
@@ -27,7 +27,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
27
27
  return result;
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.compile = exports.emitGraphQLSchema = exports.emitCronJobs = exports.emitNotifyService = exports.emitAdminPanel = exports.emitAuditMiddleware = exports.emitAuditSchema = exports.emitSeedFile = exports.emitPostmanCollection = exports.emitZodSchemas = exports.emitReactHooks = exports.emitSdkPackageJson = exports.emitTypescriptSdk = exports.emitOpenApiJson = exports.emitOpenApiSpec = exports.validateExtensions = exports.extractImplementations = exports.mergeWithExisting = exports.listByCategory = exports.listAlgorithms = exports.lookupAlgorithm = exports.IR = exports.AST = exports.scaffold = exports.Formatter = exports.ModuleLoader = exports.optimize = exports.Verifier = exports.SqliteEmitter = exports.PrismaEmitter = exports.NakamaEmitter = exports.FullEmitter = exports.ConstraintSolver = exports.Lowering = exports.TypeChecker = exports.RecoveringParser = exports.ParseError = exports.Parser = exports.TokenKind = exports.LexerError = exports.Lexer = void 0;
30
+ exports.compile = exports.emitGraphQLSchema = exports.emitCronJobs = exports.emitNotifyService = exports.emitAdminPanel = exports.emitAuditMiddleware = exports.emitAuditSchema = exports.emitSeedFile = exports.emitPostmanCollection = exports.emitZodSchemas = exports.emitReactHooks = exports.emitSdkPackageJson = exports.emitTypescriptSdk = exports.emitOpenApiJson = exports.emitOpenApiSpec = exports.validateExtensions = exports.extractImplementations = exports.mergeWithExisting = exports.listByCategory = exports.listAlgorithms = exports.lookupAlgorithm = exports.IR = exports.AST = exports.scaffold = exports.Formatter = exports.ModuleLoader = exports.optimize = exports.Verifier = exports.ColyseusEmitter = exports.SqliteEmitter = exports.PrismaEmitter = exports.NakamaEmitter = exports.FullEmitter = exports.ConstraintSolver = exports.Lowering = exports.TypeChecker = exports.RecoveringParser = exports.ParseError = exports.Parser = exports.TokenKind = exports.LexerError = exports.Lexer = void 0;
31
31
  // Core pipeline
32
32
  var lexer_1 = require("./lexer");
33
33
  Object.defineProperty(exports, "Lexer", { enumerable: true, get: function () { return lexer_1.Lexer; } });
@@ -52,6 +52,8 @@ var emit_prisma_1 = require("./emit_prisma");
52
52
  Object.defineProperty(exports, "PrismaEmitter", { enumerable: true, get: function () { return emit_prisma_1.PrismaEmitter; } });
53
53
  var emit_sqlite_1 = require("./emit_sqlite");
54
54
  Object.defineProperty(exports, "SqliteEmitter", { enumerable: true, get: function () { return emit_sqlite_1.SqliteEmitter; } });
55
+ var emit_colyseus_1 = require("./emit_colyseus");
56
+ Object.defineProperty(exports, "ColyseusEmitter", { enumerable: true, get: function () { return emit_colyseus_1.ColyseusEmitter; } });
55
57
  var verifier_1 = require("./verifier");
56
58
  Object.defineProperty(exports, "Verifier", { enumerable: true, get: function () { return verifier_1.Verifier; } });
57
59
  var optimizer_1 = require("./optimizer");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/lowering.js CHANGED
@@ -15,6 +15,29 @@ const crypto_1 = require("crypto");
15
15
  function toSnakeCase(s) {
16
16
  return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
17
17
  }
18
+ /**
19
+ * Extract the entity name from a `participants:` type expression.
20
+ *
21
+ * - `Player` → "Player"
22
+ * - `set<Player>` → "Player"
23
+ * - `list<Player>` → "Player"
24
+ * - `optional<Player>` → "Player"
25
+ * - anything else → null
26
+ */
27
+ function extractParticipantEntity(t) {
28
+ if (!t)
29
+ return null;
30
+ if (t.kind === "EntityRefType")
31
+ return t.name;
32
+ if (t.kind === "GenericType") {
33
+ for (const arg of t.typeArgs) {
34
+ const inner = extractParticipantEntity(arg);
35
+ if (inner)
36
+ return inner;
37
+ }
38
+ }
39
+ return null;
40
+ }
18
41
  // ─── Deterministic ID Generation ─────────────────────────────────────────────
19
42
  function makeId(systemName, kind, name) {
20
43
  const input = `${systemName}.${kind}.${name}`;
@@ -106,10 +129,32 @@ class Lowering {
106
129
  modules.push(this.lowerEntity(entity, relatedCaps, stores, policies));
107
130
  }
108
131
  // Lower channels → realtime_service modules
132
+ // Lower channels — realtime_service modules.
133
+ //
134
+ // Capabilities tagged `sync: realtime` are routed into the channel that
135
+ // matches their participant entity, so each room can expose them as typed
136
+ // onMessage handlers. The matching rule: if any of the capability's
137
+ // parameters is the participant entity type (e.g. channel has
138
+ // `participants: set<Player>` and capability has `move(player: Player, ...)`),
139
+ // it gets dispatched on that room.
140
+ const realtimeCaps = capabilities.filter(c => c.sync === "realtime");
109
141
  for (const channel of channels) {
110
- modules.push(this.lowerChannel(channel));
142
+ const channelCaps = realtimeCaps.filter(c => {
143
+ const partEntityName = extractParticipantEntity(channel.participants);
144
+ if (!partEntityName)
145
+ return false;
146
+ return c.params.some(p => {
147
+ if (p.type.kind === "EntityRefType")
148
+ return p.type.name === partEntityName;
149
+ // Also match generic types like `set<Player>` if they happen to appear as a param
150
+ if (p.type.kind === "GenericType") {
151
+ return p.type.typeArgs.some(a => a.kind === "EntityRefType" && a.name === partEntityName);
152
+ }
153
+ return false;
154
+ });
155
+ });
156
+ modules.push(this.lowerChannel(channel, channelCaps, entities));
111
157
  }
112
- // Lower events
113
158
  for (const ev of eventDecls) {
114
159
  events.push(this.lowerEvent(ev));
115
160
  }
@@ -217,6 +262,33 @@ class Lowering {
217
262
  for (const f of entity.owns) {
218
263
  fields.push(this.lowerField(f));
219
264
  }
265
+ // Auto-add foreign key columns for `belongs_to` relations.
266
+ //
267
+ // Without this, generated migrations reference a column that doesn't exist
268
+ // (e.g. `FOREIGN KEY (seller_id) REFERENCES sellers(id)` when no seller_id
269
+ // is declared in `owns:`). Users were having to duplicate the FK in
270
+ // `owns:` to make it work; we now synthesize it.
271
+ //
272
+ // If the user already declared a column with the same name (the legacy
273
+ // pattern), we don't add a duplicate — their declaration wins so they
274
+ // can override nullability or add @sensitive.
275
+ const existingFieldNames = new Set(fields.map(f => f.name));
276
+ for (const rel of entity.relations) {
277
+ if (rel.relationType !== "belongs_to")
278
+ continue;
279
+ const fkName = toSnakeCase(rel.target) + "_id";
280
+ if (existingFieldNames.has(fkName))
281
+ continue;
282
+ fields.push({
283
+ name: fkName,
284
+ type: "uuid",
285
+ nullable: false,
286
+ unique: false,
287
+ indexed: true,
288
+ default_value: null,
289
+ });
290
+ existingFieldNames.add(fkName);
291
+ }
220
292
  // Add derived fields as generated columns (stored: false = virtual)
221
293
  const derivedFields = entity.derived.map(d => ({
222
294
  name: d.name,
@@ -438,18 +510,40 @@ class Lowering {
438
510
  };
439
511
  }
440
512
  // ─── Channel Lowering ──────────────────────────────────────────────────────
441
- lowerChannel(channel) {
513
+ lowerChannel(channel, realtimeCapabilities = [], entities = []) {
514
+ // Default lifecycle methods that every Colyseus/WebSocket channel exposes.
515
+ const baseMethods = [
516
+ { name: "connect", input: [], output: "connection", preconditions: [], effects: [], emissions: [], idempotent: false, authenticated: true, timeout_ms: 5000, retry: null, pipeline: null, algorithm: null, sync: null },
517
+ { 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 },
518
+ { 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 },
519
+ ];
520
+ // Realtime capabilities lower as additional interface methods. The
521
+ // Colyseus emitter will turn these into typed onMessage handlers.
522
+ const capMethods = realtimeCapabilities.map(c => this.lowerCapability(c));
523
+ const participantEntity = extractParticipantEntity(channel.participants);
524
+ // If we have an entity reference, copy its field definitions into the
525
+ // channel's config so the Colyseus emitter can build a Player schema
526
+ // without re-resolving the AST. We only forward primitive-typed `owns:`
527
+ // fields — entity refs and complex types are skipped because Colyseus
528
+ // schemas need scalar @type decorators.
529
+ const participantFields = [];
530
+ if (participantEntity) {
531
+ const entity = entities.find(e => e.name === participantEntity);
532
+ if (entity) {
533
+ for (const f of entity.owns) {
534
+ if (f.type.kind === "PrimitiveType") {
535
+ participantFields.push({ name: f.name, type: f.type.name });
536
+ }
537
+ }
538
+ }
539
+ }
442
540
  return {
443
541
  id: makeId(this.systemName, "realtime_service", channel.name),
444
542
  kind: "realtime_service",
445
543
  name: channel.name,
446
544
  interfaces: [{
447
545
  name: `I${channel.name}Channel`,
448
- methods: [
449
- { name: "connect", input: [], output: "connection", preconditions: [], effects: [], emissions: [], idempotent: false, authenticated: true, timeout_ms: 5000, retry: null, pipeline: null, algorithm: null, sync: null },
450
- { 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 },
451
- { 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 },
452
- ],
546
+ methods: [...baseMethods, ...capMethods],
453
547
  }],
454
548
  models: [],
455
549
  events: [],
@@ -461,6 +555,8 @@ class Lowering {
461
555
  ordering: channel.ordering || "fifo",
462
556
  persistence: channel.persistence || "none",
463
557
  max_size: channel.maxSize || 10000,
558
+ ...(participantEntity ? { participant_entity: participantEntity } : {}),
559
+ ...(participantFields.length > 0 ? { participant_fields: JSON.stringify(participantFields) } : {}),
464
560
  },
465
561
  };
466
562
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lowering.js","sourceRoot":"","sources":["../src/lowering.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,mCAAoC;AAIpC,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7D,CAAC;AAED,g4BAAg4B;AAEh4B,SAAS,MAAM,CAAC,UAAkB,EAAE,IAAY,EAAE,IAAY;IAC5D,MAAM,KAAK,GAAG,GAAG,UAAU,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IAC9C,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,2jCAA2jC;AAE3jC,SAAS,eAAe,CAAC,GAAkB;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC;QACxB,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC;QAC9B,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,KAAM,CAAC;QAChC,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,OAAS,CAAC;QACnC,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,QAAU,CAAC;QACpC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,81BAA81B;AAE91B,SAAS,aAAa,CAAC,CAAmB;IACxC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QACpC,KAAK,aAAa,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACpF,KAAK,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QACpC,KAAK,WAAW,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACzE,KAAK,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,m7BAAm7B;AAEn7B,SAAS,aAAa,CAAC,CAAe;IACpC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC;YAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,IAAK,CAAC,CAAC,KAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/F,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,UAAU;YACb,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,YAAY;YACf,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACxE,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;QACjD,KAAK,UAAU;YACb,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9D,KAAK,aAAa;YAChB,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9G,CAAC;AACH,CAAC;AAED,4kCAA4kC;AAE5kC,MAAa,QAAQ;IAArB;QACU,eAAU,GAAW,EAAE,CAAC;IAielC,CAAC;IA/dC,KAAK,CAAC,OAAwB,EAAE,UAAkB;QAChD,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,WAAW,CAAC,GAAuB,EAAE,UAAkB;QAC7D,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;QAE3B,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAqB,EAAE,CAAC;QAExC,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA2B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAClG,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA+B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;QAC9G,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA4B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QACpG,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAC9F,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAClG,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA+B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;QAC7G,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA2B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAClG,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAyB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAC/F,MAAM,eAAe,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAmC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC;QAEzH,sDAAsD;QACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,oFAAoF;QACpF,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC1C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CACnF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,8DAA8D;QAC9D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,eAAe;QACf,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,cAAc;QACd,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,mDAAmD;QACnD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC;gBACd,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC;gBAChD,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;gBACjC,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC;QAED,gDAAgD;QAChD,MAAM,aAAa,GAA8C;YAC/D,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;SACV,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACzB,aAAa,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3D,CAAC;YACD,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC1B,aAAa,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC;YACtD,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC;YACpD,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3G,MAAM,EAAE,aAAa;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO;YACP,MAAM;YACN,KAAK;YACL,UAAU;YACV,UAAU,EAAE,EAAE;YACd,gBAAgB,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC3E,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtD,MAAM,EAAE,EAAE,CAAC,MAAM;aAClB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,yjCAAyjC;IAEjjC,UAAU,CAAC,KAAwB;QACzC,iFAAiF;QACjF,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;QAClE,MAAM,KAAK,GAAe;YACxB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjD,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,EAAE;SAChB,CAAC;QAEF,8BAA8B;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;gBACnB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,mBAAmB;aAC3G,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC;YACrD,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE;gBACN,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,YAAY;gBACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;gBAC7B,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D;SACF,CAAC;IACJ,CAAC;IAED,wiCAAwiC;IAEhiC,WAAW,CAAC,MAA0B,EAAE,YAAsC,EAAE,MAA2B,EAAE,WAAiC,EAAE;QACtJ,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC;QAEjF,wDAAwD;QACxD,MAAM,MAAM,GAAiB;YAC3B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,mBAAmB,EAAE;YAC9G,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE;YAChH,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE;SAClH,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,oEAAoE;QACpE,MAAM,aAAa,GAAiB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,MAAM,EAAE,2BAA2B;YACzC,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,wBAAwB,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;SACvE,CAAC,CAAC,CAAC;QAEJ,+CAA+C;QAC/C,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,4CAA4C;QAC5C,MAAM,gBAAgB,GAA2B,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACpC,4BAA4B;YAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACpE,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5C,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAe;YACxB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,aAAa,CAAC;YACrC,WAAW,EAAE,IAAI;YACjB,OAAO;YACP,WAAW,EAAE,gBAAgB;SAC9B,CAAC;QAEF,2CAA2C;QAC3C,MAAM,aAAa,GAAwB,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,WAAW,GAAsB,EAAE,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACtC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,OAAO,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvG,CAAC;gBACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,OAAO,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvG,CAAC;YACH,CAAC;YACD,aAAa,CAAC,IAAI,CAAC;gBACjB,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,MAAM;gBACN,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;gBAClB,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;QAED,oCAAoC;QACpC,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,+CAA+C;QAC/C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAE/D,6BAA6B;QAC7B,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,KAAK,GAAmB;YAC5B,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,SAAS;YAC9B,OAAO;SACR,CAAC;QAEF,qBAAqB;QACrB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAChG,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,kBAAkB;QAClB,MAAM,SAAS,GAAoB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC5D,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YACjD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;YAC9C,IAAI,UAAkB,CAAC;YACvB,IAAI,aAAiC,CAAC;YAEtC,QAAQ,GAAG,CAAC,YAAY,EAAE,CAAC;gBACzB,KAAK,YAAY;oBACf,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;oBAC7C,MAAM;gBACR,KAAK,SAAS,CAAC;gBACf,KAAK,UAAU;oBACb,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC9C,MAAM;gBACR,KAAK,cAAc;oBACjB,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC9C,aAAa,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtD,MAAM;gBACR;oBACE,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;YACjD,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,YAAY;gBACtB,WAAW,EAAE,MAAM,CAAC,IAAI;gBACxB,SAAS,EAAE,GAAG,CAAC,MAAM;gBACrB,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,UAAU;gBACvB,cAAc,EAAE,aAAa;aAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,SAAS;YAC7B,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,aAAa;YAC7B,SAAS;YACT,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE;gBACN,aAAa,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;gBAC7D,WAAW,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM;gBAClC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC;gBAC3C,UAAU,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1F,oBAAoB,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;aAC3I;SACF,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,EAAU,EAAE,UAAkB,EAAE,MAAoB;QACzE,MAAM,KAAK,GAAiB,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,QAAQ;YAC5D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;YAC3F,CAAC,CAAC,EAAE,KAAK,MAAM;gBACb,CAAC,CAAC;oBACE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE;oBACjG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;iBACxG;gBACH,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAExG,OAAO;YACL,IAAI,EAAE,EAAE;YACR,KAAK;YACL,MAAM,EAAE,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;YACrF,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,MAAM;YAC1C,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,GAA2B;QACjD,MAAM,KAAK,GAAiB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3B,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC,CAAC;QAEJ,MAAM,aAAa,GAAwB,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;YAC5B,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;SAC9B,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAkB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,KAAc,CAAC,CAAC,CAAC,QAAiB;YACzF,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;SAC9B,CAAC,CAAC,CAAC;QAEJ,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAElD,4BAA4B;QAC5B,IAAI,QAAQ,GAAyB,IAAI,CAAC;QAC1C,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,QAAQ,GAAG;gBACT,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ;gBAC/B,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACrC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;oBACzB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACpD,OAAO,EAAE,IAAI,CAAC,MAAM;iBACrB,CAAC,CAAC;gBACH,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC/B,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;oBACnC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI;oBAClD,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;iBAC5E,CAAC,CAAC,CAAC,IAAI;aACT,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,IAAI,SAAS,GAA0B,IAAI,CAAC;QAC5C,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,SAAS,GAAG;gBACV,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI;gBAChC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACtC,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;iBAC9B,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK;YACL,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB;YACxE,aAAa;YACb,OAAO;YACP,SAAS;YACT,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,KAAK;YACnC,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK;YACjD,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjB,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC;gBACxC,OAAO,EAAG,GAAG,CAAC,KAAK,CAAC,OAAuC,IAAI,aAAa;gBAC5E,WAAW,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI;aACzD,CAAC,CAAC,CAAC,IAAI;YACR,QAAQ;YACR,SAAS;YACT,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC;IACJ,CAAC;IAED,uhCAAuhC;IAE/gC,YAAY,CAAC,OAA4B;QAC/C,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC;YAC7D,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,CAAC;oBACX,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,SAAS;oBAC/B,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;wBACvN,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;wBAChU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;qBACxT;iBACF,CAAC;YACF,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE;gBACN,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,WAAW;gBAC3C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;gBACpC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,MAAM;gBAC1C,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;aACnC;SACF,CAAC;IACJ,CAAC;IAED,yjCAAyjC;IAEjjC,UAAU,CAAC,EAAqB;QACtC,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC;YAC7C,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,EAAE,SAAS,EAAE,wCAAwC;YAC3D,QAAQ,EAAG,EAAE,CAAC,QAA8B,IAAI,eAAe;YAC/D,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,0kCAA0kC;IAElkC,SAAS,CAAC,IAAsB;QACtC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC1E,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;aAC/G,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,yjCAAyjC;IAEjjC,UAAU,CAAC,CAAgB;QACjC,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;YACrE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;YACpE,YAAY,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;YACnC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,KAAK;SAChC,CAAC;IACJ,CAAC;CACF;AAleD,4BAkeC"}
1
+ {"version":3,"file":"lowering.js","sourceRoot":"","sources":["../src/lowering.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bonescript-compiler",
3
- "version": "0.8.0",
3
+ "version": "0.11.0",
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",
@@ -9,6 +9,9 @@
9
9
  },
10
10
  "files": [
11
11
  "dist/**/*",
12
+ "!dist/test*.js",
13
+ "!dist/test*.js.map",
14
+ "!dist/test*.d.ts",
12
15
  "src/**/*.ts",
13
16
  "!src/test.ts",
14
17
  "!src/test_typechecker.ts",
@@ -16,6 +19,12 @@
16
19
  "!src/test_sqlite.ts",
17
20
  "!src/test_notify.ts",
18
21
  "!src/test_react.ts",
22
+ "!src/test_prisma.ts",
23
+ "!src/test_relations.ts",
24
+ "!src/test_graphql.ts",
25
+ "!src/test_sqlite_e2e.ts",
26
+ "!src/test_colyseus_e2e.ts",
27
+ "!src/test_colyseus_advanced.ts",
19
28
  "LICENSE",
20
29
  "README.md"
21
30
  ],
@@ -24,7 +33,7 @@
24
33
  "prepare": "npm run build",
25
34
  "prepublishOnly": "npm run build",
26
35
  "start": "ts-node src/cli.ts",
27
- "test": "ts-node src/test.ts && ts-node src/test_typechecker.ts && ts-node src/test_nakama.ts && ts-node src/test_sqlite.ts && ts-node src/test_notify.ts && ts-node src/test_react.ts"
36
+ "test": "ts-node src/test.ts && ts-node src/test_typechecker.ts && ts-node src/test_nakama.ts && ts-node src/test_sqlite.ts && ts-node src/test_notify.ts && ts-node src/test_react.ts && ts-node src/test_prisma.ts && ts-node src/test_relations.ts && ts-node src/test_graphql.ts && ts-node src/test_sqlite_e2e.ts && ts-node src/test_colyseus_e2e.ts && ts-node src/test_colyseus_advanced.ts"
28
37
  },
29
38
  "keywords": [
30
39
  "bonescript",
package/src/cli.ts CHANGED
@@ -15,6 +15,7 @@ import { FullEmitter } from "./emit_full";
15
15
  import { NakamaEmitter } from "./emit_nakama";
16
16
  import { PrismaEmitter } from "./emit_prisma";
17
17
  import { SqliteEmitter } from "./emit_sqlite";
18
+ import { ColyseusEmitter } from "./emit_colyseus";
18
19
  import { Verifier } from "./verifier";
19
20
  import { ModuleLoader } from "./module_loader";
20
21
  import { Formatter } from "./formatter";
@@ -80,7 +81,7 @@ function main() {
80
81
  }
81
82
 
82
83
  function showHelp() {
83
- console.log("BoneScript compiler v0.8.0");
84
+ console.log("BoneScript compiler v0.11.0");
84
85
  console.log("");
85
86
  console.log("Usage:");
86
87
  console.log(" bonec compile <file> [--target <target>] Compile to runnable project");
@@ -96,10 +97,15 @@ function showHelp() {
96
97
  console.log("");
97
98
  console.log("compile options:");
98
99
  console.log(" --target <name> Output target (default: express)");
99
- console.log(" Options: express, nakama, prisma, sqlite");
100
- console.log(" --no-sdk Skip SDK generation");
101
- console.log(" --no-openapi Skip OpenAPI spec generation");
102
- console.log(" --no-seed Skip seed file generation");
100
+ console.log(" Options:");
101
+ console.log(" express - Full Express + Postgres backend (complete)");
102
+ console.log(" sqlite - Full Express backend on SQLite (zero external services)");
103
+ console.log(" nakama - Nakama TypeScript runtime");
104
+ console.log(" colyseus - Colyseus realtime game server (rooms from channels)");
105
+ console.log(" prisma - Prisma schema (schema.prisma) only");
106
+ console.log(" --no-sdk Skip SDK generation (express target only)");
107
+ console.log(" --no-openapi Skip OpenAPI spec generation (express target only)");
108
+ console.log(" --no-seed Skip seed file generation (express target only)");
103
109
  console.log("");
104
110
  console.log("init options:");
105
111
  console.log(" bonec init <name> --domain <name> Scaffold from a domain template");
@@ -284,7 +290,7 @@ function runInit(args: string[]) {
284
290
 
285
291
  function runCompile(source: string, resolved: string, extraArgs: string[] = []) {
286
292
  // Parse --target flag (default: express)
287
- let target: "express" | "nakama" | "prisma" | "sqlite" = "express";
293
+ let target: "express" | "nakama" | "prisma" | "sqlite" | "colyseus" = "express";
288
294
  // Parse optional feature flags (future enhancement — documented for now)
289
295
  let _noSdk = false;
290
296
  let _noOpenApi = false;
@@ -292,8 +298,8 @@ function runCompile(source: string, resolved: string, extraArgs: string[] = [])
292
298
  for (let i = 0; i < extraArgs.length; i++) {
293
299
  if (extraArgs[i] === "--target" && extraArgs[i + 1]) {
294
300
  const t = extraArgs[i + 1];
295
- if (t !== "express" && t !== "nakama" && t !== "prisma" && t !== "sqlite") {
296
- console.error(`Unknown target '${t}'. Valid targets: express, nakama, prisma, sqlite`);
301
+ if (t !== "express" && t !== "nakama" && t !== "prisma" && t !== "sqlite" && t !== "colyseus") {
302
+ console.error(`Unknown target '${t}'. Valid targets: express, nakama, prisma, sqlite, colyseus`);
297
303
  process.exit(1);
298
304
  }
299
305
  target = t;
@@ -308,20 +314,37 @@ function runCompile(source: string, resolved: string, extraArgs: string[] = [])
308
314
  }
309
315
 
310
316
  if (target === "nakama") {
317
+ if (_noSdk || _noOpenApi || _noSeed) {
318
+ console.error(`The --no-sdk, --no-openapi, and --no-seed flags only apply to --target express. Ignoring.`);
319
+ }
311
320
  runCompileNakama(source, resolved);
312
321
  return;
313
322
  }
314
323
 
315
324
  if (target === "prisma") {
325
+ if (_noSdk || _noOpenApi || _noSeed) {
326
+ console.error(`The --no-sdk, --no-openapi, and --no-seed flags only apply to --target express. Ignoring.`);
327
+ }
316
328
  runCompilePrisma(source, resolved);
317
329
  return;
318
330
  }
319
331
 
320
332
  if (target === "sqlite") {
333
+ if (_noSdk || _noOpenApi || _noSeed) {
334
+ console.error(`The --no-sdk, --no-openapi, and --no-seed flags only apply to --target express. Ignoring.`);
335
+ }
321
336
  runCompileSqlite(source, resolved);
322
337
  return;
323
338
  }
324
339
 
340
+ if (target === "colyseus") {
341
+ if (_noSdk || _noOpenApi || _noSeed) {
342
+ console.error(`The --no-sdk, --no-openapi, and --no-seed flags only apply to --target express. Ignoring.`);
343
+ }
344
+ runCompileColyseus(source, resolved);
345
+ return;
346
+ }
347
+
325
348
  try {
326
349
  const tokens = new Lexer(source).tokenize();
327
350
  console.log(` [1/7] Lexed: ${tokens.length} tokens`);
@@ -841,7 +864,24 @@ function runCompilePrisma(source: string, resolved: string) {
841
864
  // ─── Validate ─────────────────────────────────────────────────────────────────
842
865
 
843
866
  function runValidate(args: string[]) {
844
- const outputDir = args[0] ? path.resolve(args[0]) : path.resolve("output");
867
+ let outputDir: string;
868
+ if (args[0]) {
869
+ outputDir = path.resolve(args[0]);
870
+ } else {
871
+ // Auto-detect: try output/, then output-sqlite/, then output-nakama/.
872
+ const candidates = ["output", "output-sqlite", "output-nakama"];
873
+ const found = candidates
874
+ .map(c => path.resolve(c))
875
+ .find(p => fs.existsSync(path.join(p, "tsconfig.json")));
876
+ if (!found) {
877
+ console.error("Error: No generated output directory found.");
878
+ console.error("Looked for: " + candidates.join(", ") + " in " + process.cwd());
879
+ console.error("Pass an explicit path: bonec validate <dir>");
880
+ process.exit(1);
881
+ }
882
+ outputDir = found;
883
+ console.log(`(detected output directory: ${path.basename(outputDir)})\n`);
884
+ }
845
885
 
846
886
  if (!fs.existsSync(outputDir)) {
847
887
  console.error(`Error: Output directory not found: ${outputDir}`);
@@ -906,6 +946,81 @@ function runValidate(args: string[]) {
906
946
  // ─── Compile (SQLite target) ──────────────────────────────────────────────────
907
947
 
908
948
  function runCompileSqlite(source: string, resolved: string) {
949
+ try {
950
+ const tokens = new Lexer(source).tokenize();
951
+ console.log(` [1/7] Lexed: ${tokens.length} tokens`);
952
+
953
+ const loader = new ModuleLoader();
954
+ const loadResult = loader.load(resolved);
955
+ if (loadResult.errors.length > 0) {
956
+ for (const e of loadResult.errors.slice(0, 10)) {
957
+ console.log(` ${path.basename(e.file)}: ${e.error.message}`);
958
+ }
959
+ if (!loadResult.ast) process.exit(1);
960
+ }
961
+ const ast = loadResult.ast!;
962
+ console.log(` [2/7] Parsed: ${ast.systems.length} system(s)`);
963
+
964
+ const typeErrors = new TypeChecker().check(ast);
965
+ if (typeErrors.length > 0) {
966
+ console.log(` [3/7] Type check: ${typeErrors.length} error(s)`);
967
+ for (const err of typeErrors) {
968
+ console.log(` ${err.code} at ${err.loc.line}:${err.loc.column}: ${err.message}`);
969
+ }
970
+ } else {
971
+ console.log(` [3/7] Type check: v (0 errors)`);
972
+ }
973
+
974
+ const sourceHash = createHash("sha256").update(source).digest("hex").slice(0, 16);
975
+ const lowering = new Lowering();
976
+ const irSystems = lowering.lower(ast, sourceHash);
977
+ console.log(` [4/7] Lowered to IR: ${irSystems.reduce((s, sys) => s + sys.modules.length, 0)} modules`);
978
+
979
+ // Run optimize + solver so the FullEmitter produces complete output.
980
+ for (let i = 0; i < irSystems.length; i++) {
981
+ const result = optimize(irSystems[i]);
982
+ irSystems[i] = result.system;
983
+ }
984
+ const solver = new ConstraintSolver();
985
+ for (const sys of irSystems) {
986
+ const result = solver.solve(sys);
987
+ sys.resolution = result.resolution;
988
+ }
989
+ console.log(` [5/7] Optimize + solve: v`);
990
+
991
+ const emitter = new SqliteEmitter();
992
+ const allFiles: ReturnType<typeof emitter.emit> = [];
993
+ for (const sys of irSystems) {
994
+ allFiles.push(...emitter.emit(sys));
995
+ }
996
+ console.log(` [6/7] SQLite emit: ${allFiles.length} file(s)`);
997
+
998
+ const outputDir = path.resolve(path.dirname(resolved), "output-sqlite");
999
+ for (const f of allFiles) {
1000
+ const outPath = path.join(outputDir, f.path);
1001
+ const dir = path.dirname(outPath);
1002
+ if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
1003
+ fs.writeFileSync(outPath, f.content, "utf-8");
1004
+ }
1005
+ console.log(` [7/7] Wrote ${allFiles.length} files to ${path.basename(outputDir)}/`);
1006
+
1007
+ console.log(`\nv SQLite compilation complete.`);
1008
+ console.log(`\nNext steps:`);
1009
+ console.log(` cd output-sqlite`);
1010
+ console.log(` npm install`);
1011
+ console.log(` npm run migrate`);
1012
+ console.log(` npm run dev`);
1013
+ console.log(` # → http://localhost:3000`);
1014
+ } catch (e: any) {
1015
+ console.error(`x ${e.message}`);
1016
+ process.exit(1);
1017
+ }
1018
+ }
1019
+
1020
+
1021
+ // ─── Compile (Colyseus target) ────────────────────────────────────────────────
1022
+
1023
+ function runCompileColyseus(source: string, resolved: string) {
909
1024
  try {
910
1025
  const tokens = new Lexer(source).tokenize();
911
1026
  console.log(` [1/5] Lexed: ${tokens.length} tokens`);
@@ -933,16 +1048,25 @@ function runCompileSqlite(source: string, resolved: string) {
933
1048
 
934
1049
  const sourceHash = createHash("sha256").update(source).digest("hex").slice(0, 16);
935
1050
  const irSystems = new Lowering().lower(ast, sourceHash);
936
- console.log(` [4/5] Lowered to IR: ${irSystems.reduce((s, sys) => s + sys.modules.length, 0)} modules`);
937
1051
 
938
- const emitter = new SqliteEmitter();
1052
+ // Warn if there are no realtime channels — the Colyseus output will be
1053
+ // empty of rooms, which is technically valid but unlikely to be intended.
1054
+ const totalChannels = irSystems.reduce((s, sys) =>
1055
+ s + sys.modules.filter(m => m.kind === "realtime_service").length, 0);
1056
+ if (totalChannels === 0) {
1057
+ console.log(` [4/5] Warning: no 'channel' declarations found. Generated server has no rooms.`);
1058
+ } else {
1059
+ console.log(` [4/5] Lowered to IR: ${totalChannels} channel(s)`);
1060
+ }
1061
+
1062
+ const emitter = new ColyseusEmitter();
939
1063
  const allFiles: ReturnType<typeof emitter.emit> = [];
940
1064
  for (const sys of irSystems) {
941
1065
  allFiles.push(...emitter.emit(sys));
942
1066
  }
943
- console.log(` [5/5] SQLite emit: ${allFiles.length} file(s)`);
1067
+ console.log(` [5/5] Colyseus emit: ${allFiles.length} file(s)`);
944
1068
 
945
- const outputDir = path.resolve(path.dirname(resolved), "output-sqlite");
1069
+ const outputDir = path.resolve(path.dirname(resolved), "output-colyseus");
946
1070
  for (const f of allFiles) {
947
1071
  const outPath = path.join(outputDir, f.path);
948
1072
  const dir = path.dirname(outPath);
@@ -950,9 +1074,12 @@ function runCompileSqlite(source: string, resolved: string) {
950
1074
  fs.writeFileSync(outPath, f.content, "utf-8");
951
1075
  }
952
1076
 
953
- console.log(`\nv SQLite compilation complete. ${allFiles.length} file(s) written to output-sqlite/`);
1077
+ console.log(`\nv Colyseus compilation complete. ${allFiles.length} file(s) written to output-colyseus/`);
954
1078
  console.log(`\nNext steps:`);
955
- console.log(` cd output-sqlite && npm install && npm run migrate`);
1079
+ console.log(` cd output-colyseus`);
1080
+ console.log(` npm install`);
1081
+ console.log(` npm run dev`);
1082
+ console.log(` # → ws://localhost:2567`);
956
1083
  } catch (e: any) {
957
1084
  console.error(`x ${e.message}`);
958
1085
  process.exit(1);