bonescript-compiler 0.5.4 → 0.5.5

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.
@@ -0,0 +1,510 @@
1
+ "use strict";
2
+ /**
3
+ * BoneScript Nakama Emitter
4
+ *
5
+ * Generates a Nakama TypeScript runtime module from an IRSystem.
6
+ * Output is a self-contained src/index.ts that registers:
7
+ * - nk.registerRpc() for every capability (capability -> RPC)
8
+ * - nk.registerMatch() for every realtime_service module (channel -> match handler)
9
+ * - Storage helpers for every entity/model (entity -> storage object)
10
+ * - Event hooks for every event emission (event -> stream send)
11
+ *
12
+ * Deploy with: nakama migrate up && nakama --runtime.path ./build
13
+ * Docs: https://heroiclabs.com/docs/nakama/server-framework/typescript-runtime/
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.NakamaEmitter = void 0;
17
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
18
+ function toSnakeCase(s) {
19
+ return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
20
+ }
21
+ function toCamelCase(s) {
22
+ return s.replace(/_([a-z])/g, (_, c) => c.toUpperCase());
23
+ }
24
+ function toPascalCase(s) {
25
+ const c = toCamelCase(s);
26
+ return c.charAt(0).toUpperCase() + c.slice(1);
27
+ }
28
+ const TS_TYPE_MAP = {
29
+ string: "string",
30
+ uint: "number",
31
+ int: "number",
32
+ float: "number",
33
+ bool: "boolean",
34
+ timestamp: "string", // ISO string — Nakama runtime has no Date
35
+ uuid: "string",
36
+ bytes: "string", // base64 in Nakama
37
+ json: "unknown",
38
+ };
39
+ function toTsType(irType) {
40
+ if (TS_TYPE_MAP[irType])
41
+ return TS_TYPE_MAP[irType];
42
+ const listMatch = irType.match(/^list<(.+)>$/);
43
+ if (listMatch)
44
+ return `${toTsType(listMatch[1])}[]`;
45
+ const setMatch = irType.match(/^set<(.+)>$/);
46
+ if (setMatch)
47
+ return `${toTsType(setMatch[1])}[]`;
48
+ const optMatch = irType.match(/^optional<(.+)>$/);
49
+ if (optMatch)
50
+ return `${toTsType(optMatch[1])} | null`;
51
+ return irType;
52
+ }
53
+ // ─── Package.json ─────────────────────────────────────────────────────────────
54
+ function emitNakamaPackageJson(system) {
55
+ return JSON.stringify({
56
+ name: toSnakeCase(system.name),
57
+ version: system.version,
58
+ private: true,
59
+ scripts: {
60
+ build: "npx tsc",
61
+ dev: "npx tsc --watch",
62
+ },
63
+ devDependencies: {
64
+ "@heroiclabs/nakama-runtime": "1.16.0",
65
+ typescript: "5.3.3",
66
+ "ts-node": "10.9.2",
67
+ },
68
+ }, null, 2);
69
+ }
70
+ // ─── tsconfig.json ────────────────────────────────────────────────────────────
71
+ function emitNakamaTsConfig() {
72
+ return JSON.stringify({
73
+ compilerOptions: {
74
+ target: "ES2020",
75
+ module: "commonjs",
76
+ lib: ["ES2020"],
77
+ outDir: "./build",
78
+ rootDir: "./src",
79
+ strict: true,
80
+ esModuleInterop: true,
81
+ skipLibCheck: true,
82
+ },
83
+ include: ["src/**/*"],
84
+ exclude: ["node_modules", "build"],
85
+ }, null, 2);
86
+ }
87
+ // ─── Storage helpers ──────────────────────────────────────────────────────────
88
+ // One collection per entity. Nakama storage: collection/key/userId pattern.
89
+ function emitStorageHelpers(system) {
90
+ const lines = [];
91
+ lines.push(`// Generated by BoneScript compiler. DO NOT EDIT.`);
92
+ lines.push(`// Storage helpers — one Nakama storage collection per entity.`);
93
+ lines.push(``);
94
+ lines.push(`const nkRuntime: nkruntime.Nakama = (globalThis as any).__nk;`);
95
+ lines.push(``);
96
+ for (const mod of system.modules) {
97
+ for (const model of mod.models) {
98
+ const collection = toSnakeCase(model.name) + "s";
99
+ const typeName = toPascalCase(model.name);
100
+ // TypeScript interface
101
+ lines.push(`export interface ${typeName} {`);
102
+ for (const field of model.fields) {
103
+ const nullable = field.nullable ? " | null" : "";
104
+ lines.push(` ${field.name}: ${toTsType(field.type)}${nullable};`);
105
+ }
106
+ lines.push(`}`);
107
+ lines.push(``);
108
+ // read
109
+ lines.push(`export function read${typeName}(nk: nkruntime.Nakama, userId: string, id: string): ${typeName} | null {`);
110
+ lines.push(` const objs = nk.storageRead([{ collection: "${collection}", key: id, userId }]);`);
111
+ lines.push(` if (objs.length === 0) return null;`);
112
+ lines.push(` return JSON.parse(objs[0].value) as ${typeName};`);
113
+ lines.push(`}`);
114
+ lines.push(``);
115
+ // write
116
+ lines.push(`export function write${typeName}(nk: nkruntime.Nakama, userId: string, obj: ${typeName}): void {`);
117
+ lines.push(` nk.storageWrite([{`);
118
+ lines.push(` collection: "${collection}",`);
119
+ lines.push(` key: (obj as any).id ?? userId,`);
120
+ lines.push(` userId,`);
121
+ lines.push(` value: JSON.stringify(obj),`);
122
+ lines.push(` permissionRead: 1,`);
123
+ lines.push(` permissionWrite: 0,`);
124
+ lines.push(` }]);`);
125
+ lines.push(`}`);
126
+ lines.push(``);
127
+ // delete
128
+ lines.push(`export function delete${typeName}(nk: nkruntime.Nakama, userId: string, id: string): void {`);
129
+ lines.push(` nk.storageDelete([{ collection: "${collection}", key: id, userId }]);`);
130
+ lines.push(`}`);
131
+ lines.push(``);
132
+ }
133
+ }
134
+ return lines.join("\n");
135
+ }
136
+ // ─── RPC handlers (capabilities) ─────────────────────────────────────────────
137
+ function emitRpcHandlers(system) {
138
+ const lines = [];
139
+ lines.push(`// Generated by BoneScript compiler. DO NOT EDIT.`);
140
+ lines.push(`// RPC handlers — one nk.registerRpc() per capability.`);
141
+ lines.push(``);
142
+ lines.push(`import * as storage from "./storage";`);
143
+ lines.push(``);
144
+ for (const mod of system.modules) {
145
+ for (const iface of mod.interfaces) {
146
+ for (const method of iface.methods) {
147
+ const rpcId = `${toSnakeCase(mod.name)}/${toSnakeCase(method.name)}`;
148
+ const fnName = `rpc${toPascalCase(mod.name)}${toPascalCase(method.name)}`;
149
+ lines.push(`// RPC: ${rpcId}`);
150
+ lines.push(`// Capability: ${method.name} on ${mod.name}`);
151
+ if (method.preconditions.length > 0) {
152
+ lines.push(`// Preconditions: ${method.preconditions.map(p => p.description).join(", ")}`);
153
+ }
154
+ lines.push(`const ${fnName}: nkruntime.RpcFunction = (`);
155
+ lines.push(` ctx: nkruntime.Context,`);
156
+ lines.push(` logger: nkruntime.Logger,`);
157
+ lines.push(` nk: nkruntime.Nakama,`);
158
+ lines.push(` payload: string`);
159
+ lines.push(`): string => {`);
160
+ // Auth guard
161
+ if (method.authenticated) {
162
+ lines.push(` if (!ctx.userId) {`);
163
+ lines.push(` throw Error("Authentication required");`);
164
+ lines.push(` }`);
165
+ }
166
+ // Parse payload
167
+ if (method.input.length > 0) {
168
+ const inputType = method.input.map(f => `${f.name}: ${toTsType(f.type)}`).join("; ");
169
+ lines.push(` const input: { ${inputType} } = payload ? JSON.parse(payload) : {};`);
170
+ }
171
+ // Precondition stubs
172
+ if (method.preconditions.length > 0) {
173
+ lines.push(``);
174
+ lines.push(` // Preconditions`);
175
+ for (const pre of method.preconditions) {
176
+ lines.push(` // CHECK: ${pre.description}`);
177
+ lines.push(` // if (!(${pre.expression})) throw Error("Precondition failed: ${pre.description.replace(/"/g, "'")}"); `);
178
+ }
179
+ }
180
+ // Effect stubs
181
+ if (method.effects.length > 0) {
182
+ lines.push(``);
183
+ lines.push(` // Effects`);
184
+ for (const eff of method.effects) {
185
+ const op = eff.op === "assign" ? "=" : eff.op === "add" ? "+=" : "-=";
186
+ lines.push(` // EFFECT: ${eff.target} ${op} ${eff.value}`);
187
+ }
188
+ }
189
+ // Event emissions via Nakama streams
190
+ if (method.emissions.length > 0) {
191
+ lines.push(``);
192
+ lines.push(` // Event emissions — broadcast to stream subscribers`);
193
+ for (const ev of method.emissions) {
194
+ lines.push(` nk.streamSend(`);
195
+ lines.push(` { mode: 1, subject: ctx.userId ?? "", label: "${ev}" },`);
196
+ lines.push(` JSON.stringify({ event: "${ev}", actor: ctx.userId, ts: Date.now() }),`);
197
+ lines.push(` undefined,`);
198
+ lines.push(` true`);
199
+ lines.push(` );`);
200
+ }
201
+ }
202
+ lines.push(``);
203
+ lines.push(` logger.info("rpc_called", "${rpcId}", ctx.userId ?? "anon");`);
204
+ lines.push(` return JSON.stringify({ ok: true, action: "${method.name}" });`);
205
+ lines.push(`};`);
206
+ lines.push(``);
207
+ // Export the function name and rpc id for registration
208
+ lines.push(`export const ${fnName}Id = "${rpcId}";`);
209
+ lines.push(`export { ${fnName} };`);
210
+ lines.push(``);
211
+ }
212
+ }
213
+ }
214
+ return lines.join("\n");
215
+ }
216
+ // ─── Match handler (realtime channels) ───────────────────────────────────────
217
+ function emitMatchHandlers(system) {
218
+ const realtimeMods = system.modules.filter(m => m.kind === "realtime_service");
219
+ if (realtimeMods.length === 0)
220
+ return "";
221
+ const lines = [];
222
+ lines.push(`// Generated by BoneScript compiler. DO NOT EDIT.`);
223
+ lines.push(`// Match handlers — one per realtime_service module.`);
224
+ lines.push(``);
225
+ for (const mod of realtimeMods) {
226
+ const handlerName = `${toCamelCase(mod.name)}MatchHandler`;
227
+ const matchName = toSnakeCase(mod.name);
228
+ lines.push(`// Match handler for channel: ${mod.name}`);
229
+ lines.push(`const ${handlerName}: nkruntime.MatchHandler = {`);
230
+ lines.push(``);
231
+ // matchInit
232
+ lines.push(` matchInit(`);
233
+ lines.push(` ctx: nkruntime.Context,`);
234
+ lines.push(` logger: nkruntime.Logger,`);
235
+ lines.push(` nk: nkruntime.Nakama,`);
236
+ lines.push(` params: { [key: string]: string }`);
237
+ lines.push(` ): { state: unknown; tickRate: number; label: string } {`);
238
+ lines.push(` logger.info("match_init", "${matchName}");`);
239
+ lines.push(` return {`);
240
+ lines.push(` state: { players: {}, tick: 0 },`);
241
+ lines.push(` tickRate: ${mod.config["tick_rate"] ?? 10},`);
242
+ lines.push(` label: "${matchName}",`);
243
+ lines.push(` };`);
244
+ lines.push(` },`);
245
+ lines.push(``);
246
+ // matchJoinAttempt
247
+ lines.push(` matchJoinAttempt(`);
248
+ lines.push(` ctx: nkruntime.Context,`);
249
+ lines.push(` logger: nkruntime.Logger,`);
250
+ lines.push(` nk: nkruntime.Nakama,`);
251
+ lines.push(` dispatcher: nkruntime.MatchDispatcher,`);
252
+ lines.push(` tick: number,`);
253
+ lines.push(` state: unknown,`);
254
+ lines.push(` presence: nkruntime.Presence,`);
255
+ lines.push(` metadata: { [key: string]: any }`);
256
+ lines.push(` ): { state: unknown; accept: boolean; rejectMessage?: string } {`);
257
+ lines.push(` return { state, accept: true };`);
258
+ lines.push(` },`);
259
+ lines.push(``);
260
+ // matchJoin
261
+ lines.push(` matchJoin(`);
262
+ lines.push(` ctx: nkruntime.Context,`);
263
+ lines.push(` logger: nkruntime.Logger,`);
264
+ lines.push(` nk: nkruntime.Nakama,`);
265
+ lines.push(` dispatcher: nkruntime.MatchDispatcher,`);
266
+ lines.push(` tick: number,`);
267
+ lines.push(` state: unknown,`);
268
+ lines.push(` presences: nkruntime.Presence[]`);
269
+ lines.push(` ): { state: unknown } | null {`);
270
+ lines.push(` const s = state as any;`);
271
+ lines.push(` for (const p of presences) {`);
272
+ lines.push(` s.players[p.userId] = { userId: p.userId, sessionId: p.sessionId, joinedAt: Date.now() };`);
273
+ lines.push(` }`);
274
+ lines.push(` dispatcher.broadcastMessage(1, JSON.stringify({ type: "player_joined", players: Object.keys(s.players) }), null, null, true);`);
275
+ lines.push(` return { state: s };`);
276
+ lines.push(` },`);
277
+ lines.push(``);
278
+ // matchLeave
279
+ lines.push(` matchLeave(`);
280
+ lines.push(` ctx: nkruntime.Context,`);
281
+ lines.push(` logger: nkruntime.Logger,`);
282
+ lines.push(` nk: nkruntime.Nakama,`);
283
+ lines.push(` dispatcher: nkruntime.MatchDispatcher,`);
284
+ lines.push(` tick: number,`);
285
+ lines.push(` state: unknown,`);
286
+ lines.push(` presences: nkruntime.Presence[]`);
287
+ lines.push(` ): { state: unknown } | null {`);
288
+ lines.push(` const s = state as any;`);
289
+ lines.push(` for (const p of presences) delete s.players[p.userId];`);
290
+ lines.push(` if (Object.keys(s.players).length === 0) return null; // end match`);
291
+ lines.push(` return { state: s };`);
292
+ lines.push(` },`);
293
+ lines.push(``);
294
+ // matchLoop
295
+ lines.push(` matchLoop(`);
296
+ lines.push(` ctx: nkruntime.Context,`);
297
+ lines.push(` logger: nkruntime.Logger,`);
298
+ lines.push(` nk: nkruntime.Nakama,`);
299
+ lines.push(` dispatcher: nkruntime.MatchDispatcher,`);
300
+ lines.push(` tick: number,`);
301
+ lines.push(` state: unknown,`);
302
+ lines.push(` messages: nkruntime.MatchMessage[]`);
303
+ lines.push(` ): { state: unknown } | null {`);
304
+ lines.push(` const s = state as any;`);
305
+ lines.push(` s.tick = tick;`);
306
+ lines.push(` for (const msg of messages) {`);
307
+ lines.push(` // Route incoming messages to capability handlers`);
308
+ lines.push(` try {`);
309
+ lines.push(` const data = JSON.parse(nk.binaryToString(msg.data));`);
310
+ lines.push(` dispatcher.broadcastMessage(msg.opCode, msg.data, null, msg.sender, true);`);
311
+ lines.push(` } catch (e) {`);
312
+ lines.push(` logger.error("match_message_error", String(e));`);
313
+ lines.push(` }`);
314
+ lines.push(` }`);
315
+ lines.push(` return { state: s };`);
316
+ lines.push(` },`);
317
+ lines.push(``);
318
+ // matchTerminate
319
+ lines.push(` matchTerminate(`);
320
+ lines.push(` ctx: nkruntime.Context,`);
321
+ lines.push(` logger: nkruntime.Logger,`);
322
+ lines.push(` nk: nkruntime.Nakama,`);
323
+ lines.push(` dispatcher: nkruntime.MatchDispatcher,`);
324
+ lines.push(` tick: number,`);
325
+ lines.push(` state: unknown,`);
326
+ lines.push(` graceSeconds: number`);
327
+ lines.push(` ): { state: unknown } | null {`);
328
+ lines.push(` dispatcher.broadcastMessage(0, JSON.stringify({ type: "match_terminated" }), null, null, true);`);
329
+ lines.push(` return null;`);
330
+ lines.push(` },`);
331
+ lines.push(``);
332
+ // matchSignal
333
+ lines.push(` matchSignal(`);
334
+ lines.push(` ctx: nkruntime.Context,`);
335
+ lines.push(` logger: nkruntime.Logger,`);
336
+ lines.push(` nk: nkruntime.Nakama,`);
337
+ lines.push(` dispatcher: nkruntime.MatchDispatcher,`);
338
+ lines.push(` tick: number,`);
339
+ lines.push(` state: unknown,`);
340
+ lines.push(` data: string`);
341
+ lines.push(` ): { state: unknown; data: string } {`);
342
+ lines.push(` return { state, data };`);
343
+ lines.push(` },`);
344
+ lines.push(`};`);
345
+ lines.push(``);
346
+ lines.push(`export const ${handlerName}Name = "${matchName}";`);
347
+ lines.push(`export { ${handlerName} };`);
348
+ lines.push(``);
349
+ }
350
+ return lines.join("\n");
351
+ }
352
+ // ─── Main entry point (InitModule) ───────────────────────────────────────────
353
+ function emitNakamaIndex(system) {
354
+ const lines = [];
355
+ lines.push(`// Generated by BoneScript compiler. DO NOT EDIT.`);
356
+ lines.push(`// Nakama TypeScript runtime module for: ${system.name}`);
357
+ lines.push(`// Deploy: copy build/ to Nakama runtime path and restart.`);
358
+ lines.push(``);
359
+ lines.push(`import * as rpc from "./rpc";`);
360
+ const hasRealtime = system.modules.some(m => m.kind === "realtime_service");
361
+ if (hasRealtime) {
362
+ lines.push(`import * as match from "./match";`);
363
+ }
364
+ lines.push(``);
365
+ lines.push(`function InitModule(`);
366
+ lines.push(` ctx: nkruntime.Context,`);
367
+ lines.push(` logger: nkruntime.Logger,`);
368
+ lines.push(` nk: nkruntime.Nakama,`);
369
+ lines.push(` initializer: nkruntime.Initializer`);
370
+ lines.push(`): Error | void {`);
371
+ lines.push(` logger.info("init_module", "${system.name} v${system.version}");`);
372
+ lines.push(``);
373
+ // Register all RPCs
374
+ const allMethods = [];
375
+ for (const mod of system.modules) {
376
+ for (const iface of mod.interfaces) {
377
+ for (const method of iface.methods) {
378
+ allMethods.push({ mod, method });
379
+ }
380
+ }
381
+ }
382
+ if (allMethods.length > 0) {
383
+ lines.push(` // Register RPC handlers`);
384
+ for (const { mod, method } of allMethods) {
385
+ const fnName = `rpc${toPascalCase(mod.name)}${toPascalCase(method.name)}`;
386
+ lines.push(` initializer.registerRpc(rpc.${fnName}Id, rpc.${fnName});`);
387
+ }
388
+ lines.push(``);
389
+ }
390
+ // Register match handlers
391
+ if (hasRealtime) {
392
+ const realtimeMods = system.modules.filter(m => m.kind === "realtime_service");
393
+ lines.push(` // Register match handlers`);
394
+ for (const mod of realtimeMods) {
395
+ const handlerName = `${toCamelCase(mod.name)}MatchHandler`;
396
+ lines.push(` initializer.registerMatch(match.${handlerName}Name, match.${handlerName});`);
397
+ }
398
+ lines.push(``);
399
+ }
400
+ lines.push(` logger.info("init_complete", "${allMethods.length} RPCs, ${hasRealtime ? system.modules.filter(m => m.kind === "realtime_service").length : 0} match handlers");`);
401
+ lines.push(`}`);
402
+ lines.push(``);
403
+ lines.push(`// Required Nakama module export`);
404
+ lines.push(`(globalThis as any).InitModule = InitModule;`);
405
+ return lines.join("\n");
406
+ }
407
+ // ─── README ───────────────────────────────────────────────────────────────────
408
+ function emitNakamaReadme(system) {
409
+ const rpcs = [];
410
+ for (const mod of system.modules) {
411
+ for (const iface of mod.interfaces) {
412
+ for (const method of iface.methods) {
413
+ rpcs.push(`- \`${toSnakeCase(mod.name)}/${toSnakeCase(method.name)}\``);
414
+ }
415
+ }
416
+ }
417
+ const realtimeMods = system.modules.filter(m => m.kind === "realtime_service");
418
+ return `# ${system.name} — Nakama Backend
419
+
420
+ Generated by BoneScript compiler (target: nakama). Source hash: ${system.source_hash}
421
+
422
+ ## Quick Start
423
+
424
+ \`\`\`bash
425
+ # Install deps
426
+ npm install
427
+
428
+ # Build TypeScript -> JS
429
+ npm run build
430
+
431
+ # Start Nakama with this module
432
+ docker run --rm -v $(pwd)/build:/nakama/data/modules \\
433
+ heroiclabs/nakama:latest
434
+ \`\`\`
435
+
436
+ ## RPC Endpoints
437
+
438
+ Call these from any Nakama client SDK:
439
+
440
+ ${rpcs.join("\n")}
441
+
442
+ ## Match Handlers
443
+
444
+ ${realtimeMods.length > 0
445
+ ? realtimeMods.map(m => `- \`${toSnakeCase(m.name)}\` (tick rate: ${m.config["tick_rate"] ?? 10}/s)`).join("\n")
446
+ : "_No realtime channels declared._"}
447
+
448
+ ## Storage Collections
449
+
450
+ ${system.modules.flatMap(m => m.models).map(m => `- \`${toSnakeCase(m.name)}s\``).join("\n") || "_No entities declared._"}
451
+
452
+ ## Auth
453
+
454
+ All authenticated RPCs require a valid Nakama session token.
455
+ Use any Nakama client SDK to authenticate before calling RPCs.
456
+ `;
457
+ }
458
+ class NakamaEmitter {
459
+ emit(system) {
460
+ const files = [];
461
+ files.push({
462
+ path: "package.json",
463
+ content: emitNakamaPackageJson(system),
464
+ language: "json",
465
+ source_module: "root",
466
+ });
467
+ files.push({
468
+ path: "tsconfig.json",
469
+ content: emitNakamaTsConfig(),
470
+ language: "json",
471
+ source_module: "root",
472
+ });
473
+ files.push({
474
+ path: "src/storage.ts",
475
+ content: emitStorageHelpers(system),
476
+ language: "typescript",
477
+ source_module: "storage",
478
+ });
479
+ files.push({
480
+ path: "src/rpc.ts",
481
+ content: emitRpcHandlers(system),
482
+ language: "typescript",
483
+ source_module: "rpc",
484
+ });
485
+ const matchContent = emitMatchHandlers(system);
486
+ if (matchContent) {
487
+ files.push({
488
+ path: "src/match.ts",
489
+ content: matchContent,
490
+ language: "typescript",
491
+ source_module: "match",
492
+ });
493
+ }
494
+ files.push({
495
+ path: "src/index.ts",
496
+ content: emitNakamaIndex(system),
497
+ language: "typescript",
498
+ source_module: "root",
499
+ });
500
+ files.push({
501
+ path: "README.md",
502
+ content: emitNakamaReadme(system),
503
+ language: "markdown",
504
+ source_module: "root",
505
+ });
506
+ return files;
507
+ }
508
+ }
509
+ exports.NakamaEmitter = NakamaEmitter;
510
+ //# sourceMappingURL=emit_nakama.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit_nakama.js","sourceRoot":"","sources":["../src/emit_nakama.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,6 +13,8 @@ export { Lowering } from "./lowering";
13
13
  export { ConstraintSolver } from "./solver";
14
14
  export type { SolverResult } from "./solver";
15
15
  export { FullEmitter } from "./emit_full";
16
+ export { NakamaEmitter } from "./emit_nakama";
17
+ export type { NakamaEmittedFile } from "./emit_nakama";
16
18
  export type { EmittedFile } from "./emitter";
17
19
  export { Verifier } from "./verifier";
18
20
  export type { VerifyResult, VerifyIssue } from "./verifier";
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.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.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.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.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; } });
@@ -46,6 +46,8 @@ var solver_1 = require("./solver");
46
46
  Object.defineProperty(exports, "ConstraintSolver", { enumerable: true, get: function () { return solver_1.ConstraintSolver; } });
47
47
  var emit_full_1 = require("./emit_full");
48
48
  Object.defineProperty(exports, "FullEmitter", { enumerable: true, get: function () { return emit_full_1.FullEmitter; } });
49
+ var emit_nakama_1 = require("./emit_nakama");
50
+ Object.defineProperty(exports, "NakamaEmitter", { enumerable: true, get: function () { return emit_nakama_1.NakamaEmitter; } });
49
51
  var verifier_1 = require("./verifier");
50
52
  Object.defineProperty(exports, "Verifier", { enumerable: true, get: function () { return verifier_1.Verifier; } });
51
53
  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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bonescript-compiler",
3
- "version": "0.5.4",
3
+ "version": "0.5.5",
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",
@@ -12,6 +12,7 @@
12
12
  "src/**/*.ts",
13
13
  "!src/test.ts",
14
14
  "!src/test_typechecker.ts",
15
+ "!src/test_nakama.ts",
15
16
  "LICENSE",
16
17
  "README.md"
17
18
  ],
@@ -19,7 +20,7 @@
19
20
  "build": "tsc",
20
21
  "prepublishOnly": "npm run build",
21
22
  "start": "ts-node src/cli.ts",
22
- "test": "ts-node src/test.ts && ts-node src/test_typechecker.ts"
23
+ "test": "ts-node src/test.ts && ts-node src/test_typechecker.ts && ts-node src/test_nakama.ts"
23
24
  },
24
25
  "keywords": [
25
26
  "bonescript",