bonescript-compiler 0.5.8 → 0.6.1

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 (56) hide show
  1. package/dist/ast.d.ts +2 -0
  2. package/dist/cli.js +52 -8
  3. package/dist/cli.js.map +1 -1
  4. package/dist/emit_admin.d.ts +5 -0
  5. package/dist/emit_admin.js +340 -35
  6. package/dist/emit_admin.js.map +1 -1
  7. package/dist/emit_audit.js +38 -4
  8. package/dist/emit_audit.js.map +1 -1
  9. package/dist/emit_capability.js +14 -0
  10. package/dist/emit_capability.js.map +1 -1
  11. package/dist/emit_full.js +10 -2
  12. package/dist/emit_full.js.map +1 -1
  13. package/dist/emit_maintenance.js +35 -3
  14. package/dist/emit_maintenance.js.map +1 -1
  15. package/dist/emit_nakama.js +36 -36
  16. package/dist/emit_notify.js +30 -2
  17. package/dist/emit_notify.js.map +1 -1
  18. package/dist/emit_runtime.d.ts +18 -1
  19. package/dist/emit_runtime.js +265 -85
  20. package/dist/emit_runtime.js.map +1 -1
  21. package/dist/emit_websocket.js +22 -2
  22. package/dist/emit_websocket.js.map +1 -1
  23. package/dist/emit_zod.js +12 -1
  24. package/dist/emit_zod.js.map +1 -1
  25. package/dist/formatter.d.ts +1 -0
  26. package/dist/formatter.js +10 -2
  27. package/dist/formatter.js.map +1 -1
  28. package/dist/ir.d.ts +2 -0
  29. package/dist/lexer.d.ts +1 -0
  30. package/dist/lexer.js +4 -0
  31. package/dist/lexer.js.map +1 -1
  32. package/dist/lowering.js +2 -0
  33. package/dist/lowering.js.map +1 -1
  34. package/dist/parse_decls.js +36 -1
  35. package/dist/parse_decls.js.map +1 -1
  36. package/dist/typechecker.js +9 -0
  37. package/dist/typechecker.js.map +1 -1
  38. package/package.json +1 -1
  39. package/src/ast.ts +2 -0
  40. package/src/cli.ts +58 -10
  41. package/src/emit_admin.ts +342 -35
  42. package/src/emit_audit.ts +40 -4
  43. package/src/emit_capability.ts +13 -0
  44. package/src/emit_full.ts +9 -2
  45. package/src/emit_maintenance.ts +35 -3
  46. package/src/emit_nakama.ts +576 -576
  47. package/src/emit_notify.ts +30 -2
  48. package/src/emit_runtime.ts +955 -763
  49. package/src/emit_websocket.ts +22 -2
  50. package/src/emit_zod.ts +11 -1
  51. package/src/formatter.ts +9 -2
  52. package/src/ir.ts +2 -0
  53. package/src/lexer.ts +2 -0
  54. package/src/lowering.ts +5 -3
  55. package/src/parse_decls.ts +31 -1
  56. package/src/typechecker.ts +10 -0
@@ -4,7 +4,8 @@
4
4
  * Generates runnable service code from IR.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.emitMigration = exports.emitIndex = exports.emitStateMachineRuntime = exports.emitEntityRouter = exports.emitAuthMiddleware = exports.emitDbClient = exports.emitTsConfig = exports.emitPackageJson = void 0;
7
+ exports.emitMigration = exports.buildMigrationBlocks = exports.emitIndex = exports.emitStateMachineRuntime = exports.emitEntityRouter = exports.emitAuthMiddleware = exports.emitDbClient = exports.emitTsConfig = exports.emitPackageJson = void 0;
8
+ const crypto_1 = require("crypto");
8
9
  const emit_capability_1 = require("./emit_capability");
9
10
  function toSnakeCase(s) {
10
11
  return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
@@ -44,28 +45,31 @@ function emitPackageJson(system) {
44
45
  migrate: "ts-node src/migrate.ts",
45
46
  },
46
47
  dependencies: {
47
- express: "4.18.2",
48
- pg: "8.11.3",
49
- ioredis: "5.3.2",
50
- ws: "8.16.0",
51
- uuid: "9.0.0",
48
+ // Pinned to specific patch versions. Update consciously — a bump should
49
+ // be paired with a quick read of the release notes / advisories.
50
+ express: "4.22.2", // 4.22.x patches qs / path-to-regexp DoS
51
+ pg: "8.13.1",
52
+ ioredis: "5.4.1",
53
+ ws: "8.18.0", // 8.17.1 patched CVE-2024-37890 (DoS)
54
+ uuid: "10.0.0",
52
55
  cors: "2.8.5",
53
- helmet: "7.1.0",
54
- "express-rate-limit": "7.1.5",
56
+ helmet: "8.0.0",
57
+ "express-rate-limit": "7.5.0",
55
58
  jsonwebtoken: "9.0.2",
56
- dotenv: "16.3.1",
59
+ dotenv: "16.4.7",
57
60
  "node-cron": "3.0.3",
61
+ zod: "3.23.8",
58
62
  },
59
63
  devDependencies: {
60
64
  "@types/express": "4.17.21",
61
- "@types/node": "18.19.0",
62
- "@types/pg": "8.10.9",
63
- "@types/ws": "8.5.10",
65
+ "@types/node": "20.14.0",
66
+ "@types/pg": "8.11.10",
67
+ "@types/ws": "8.5.13",
64
68
  "@types/cors": "2.8.17",
65
- "@types/jsonwebtoken": "9.0.5",
66
- "@types/uuid": "9.0.7",
69
+ "@types/jsonwebtoken": "9.0.7",
70
+ "@types/uuid": "10.0.0",
67
71
  "@types/node-cron": "3.0.11",
68
- typescript: "5.3.3",
72
+ typescript: "5.6.3",
69
73
  "ts-node": "10.9.2",
70
74
  },
71
75
  };
@@ -136,63 +140,86 @@ function emitDbClient(system) {
136
140
  }
137
141
  exports.emitDbClient = emitDbClient;
138
142
  function emitAuthMiddleware(system) {
139
- return `// Generated by BoneScript compiler. DO NOT EDIT.
140
- import { Request, Response, NextFunction } from "express";
141
- import jwt from "jsonwebtoken";
142
-
143
- // JWT_SECRET must be set in production. The server will refuse to start without it
144
- // when NODE_ENV is "production" to prevent accidental use of a weak fallback.
145
- const JWT_SECRET = (() => {
146
- const secret = process.env.JWT_SECRET;
147
- if (!secret) {
148
- if (process.env.NODE_ENV === "production") {
149
- console.error("[FATAL] JWT_SECRET environment variable is not set. Refusing to start in production.");
150
- process.exit(1);
151
- }
152
- console.warn("[WARN] JWT_SECRET is not set. Using insecure default — do not use in production.");
153
- return "bonescript-dev-secret-do-not-use-in-production";
154
- }
155
- if (secret.length < 32) {
156
- console.warn("[WARN] JWT_SECRET is shorter than 32 characters. Use a longer secret in production.");
157
- }
158
- return secret;
159
- })();
160
-
161
- export interface AuthContext {
162
- authenticated: boolean;
163
- actor_id: string | null;
164
- trace_id: string;
165
- }
166
-
167
- export function authMiddleware(req: Request, res: Response, next: NextFunction): void {
168
- const header = req.headers.authorization;
169
- if (!header || !header.startsWith("Bearer ")) {
170
- (req as any).auth = { authenticated: false, actor_id: null, trace_id: req.headers["x-trace-id"] as string || "" };
171
- next();
172
- return;
173
- }
174
- try {
175
- const token = header.slice(7);
176
- const decoded = jwt.verify(token, JWT_SECRET) as { sub: string };
177
- (req as any).auth = {
178
- authenticated: true,
179
- actor_id: decoded.sub,
180
- trace_id: req.headers["x-trace-id"] as string || "",
181
- };
182
- } catch {
183
- (req as any).auth = { authenticated: false, actor_id: null, trace_id: req.headers["x-trace-id"] as string || "" };
184
- }
185
- next();
186
- }
187
-
188
- export function requireAuth(req: Request, res: Response, next: NextFunction): void {
189
- const auth: AuthContext = (req as any).auth;
190
- if (!auth || !auth.authenticated) {
191
- res.status(401).json({ error: { code: "UNAUTHORIZED", message: "Authentication required" } });
192
- return;
193
- }
194
- next();
195
- }
143
+ return `// Generated by BoneScript compiler. DO NOT EDIT.
144
+ import { Request, Response, NextFunction } from "express";
145
+ import jwt from "jsonwebtoken";
146
+ import { v4 as uuid } from "uuid";
147
+
148
+ // JWT_SECRET must be set in production. The server will refuse to start without it
149
+ // when NODE_ENV is "production" to prevent accidental use of a weak fallback.
150
+ const JWT_SECRET = (() => {
151
+ const secret = process.env.JWT_SECRET;
152
+ if (!secret) {
153
+ if (process.env.NODE_ENV === "production") {
154
+ console.error("[FATAL] JWT_SECRET environment variable is not set. Refusing to start in production.");
155
+ process.exit(1);
156
+ }
157
+ console.warn("[WARN] JWT_SECRET is not set. Using insecure default — do not use in production.");
158
+ return "bonescript-dev-secret-do-not-use-in-production";
159
+ }
160
+ if (secret.length < 32) {
161
+ console.warn("[WARN] JWT_SECRET is shorter than 32 characters. Use a longer secret in production.");
162
+ }
163
+ return secret;
164
+ })();
165
+
166
+ export interface AuthContext {
167
+ authenticated: boolean;
168
+ actor_id: string | null;
169
+ trace_id: string;
170
+ }
171
+
172
+ // Trace IDs are server-generated. We accept a client-supplied X-Trace-Id only
173
+ // if it parses as a UUID, so callers can correlate their own logs without
174
+ // being able to forge correlation IDs in audit / event records.
175
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
176
+ function resolveTraceId(req: Request): string {
177
+ const supplied = req.headers["x-trace-id"];
178
+ if (typeof supplied === "string" && UUID_RE.test(supplied)) return supplied;
179
+ return uuid();
180
+ }
181
+
182
+ export function authMiddleware(req: Request, res: Response, next: NextFunction): void {
183
+ const header = req.headers.authorization;
184
+ const traceId = resolveTraceId(req);
185
+ if (!header || !header.startsWith("Bearer ")) {
186
+ (req as any).auth = { authenticated: false, actor_id: null, trace_id: traceId };
187
+ next();
188
+ return;
189
+ }
190
+ try {
191
+ const token = header.slice(7);
192
+ // Pin algorithms to HS256 and require an expiration. Without pinning,
193
+ // jsonwebtoken would accept any algorithm including RS/HS confusion attacks.
194
+ // maxAge is a safety net even if exp is set far in the future.
195
+ const decoded = jwt.verify(token, JWT_SECRET, {
196
+ algorithms: ["HS256"],
197
+ maxAge: process.env.JWT_MAX_AGE || "1h",
198
+ }) as { sub?: unknown };
199
+ if (typeof decoded.sub !== "string" || decoded.sub.length === 0) {
200
+ (req as any).auth = { authenticated: false, actor_id: null, trace_id: traceId };
201
+ next();
202
+ return;
203
+ }
204
+ (req as any).auth = {
205
+ authenticated: true,
206
+ actor_id: decoded.sub,
207
+ trace_id: traceId,
208
+ };
209
+ } catch {
210
+ (req as any).auth = { authenticated: false, actor_id: null, trace_id: traceId };
211
+ }
212
+ next();
213
+ }
214
+
215
+ export function requireAuth(req: Request, res: Response, next: NextFunction): void {
216
+ const auth: AuthContext = (req as any).auth;
217
+ if (!auth || !auth.authenticated) {
218
+ res.status(401).json({ error: { code: "UNAUTHORIZED", message: "Authentication required" } });
219
+ return;
220
+ }
221
+ next();
222
+ }
196
223
  `;
197
224
  }
198
225
  exports.emitAuthMiddleware = emitAuthMiddleware;
@@ -218,6 +245,9 @@ function emitEntityRouter(mod, system) {
218
245
  }
219
246
  lines.push(`import { logger } from "../logger";`);
220
247
  lines.push(`import { counter } from "../metrics";`);
248
+ // Zod schemas for input validation. The Create / Update derivatives are
249
+ // generated alongside the full model schema in src/schemas.ts.
250
+ lines.push(`import { ${toPascalCase(entityModel.name)}CreateSchema, ${toPascalCase(entityModel.name)}UpdateSchema } from "../schemas";`);
221
251
  lines.push(`import * as __algorithms from "../algorithms";`);
222
252
  lines.push(`const { shortestPath, topologicalSort, binarySearch, bipartiteMatching, roundRobin, weightedAverage, percentile, rankBy, consistentHash } = __algorithms as any;`);
223
253
  lines.push(``);
@@ -252,9 +282,15 @@ function emitEntityRouter(mod, system) {
252
282
  lines.push(`// CREATE`);
253
283
  const __crudMiddlewares = modRateLimit > 0 ? "__routeRateLimit, requireAuth" : "requireAuth";
254
284
  lines.push(`${toCamelCase(routeBase)}Router.post("/", ${__crudMiddlewares}, async (req: Request, res: Response) => {`);
285
+ lines.push(` // Validate the request body against the generated Zod schema.`);
286
+ lines.push(` const __parsed = ${toPascalCase(entityModel.name)}CreateSchema.safeParse(req.body);`);
287
+ lines.push(` if (!__parsed.success) {`);
288
+ lines.push(` return res.status(400).json({ error: { code: "VALIDATION_FAILED", message: "Invalid request body", issues: __parsed.error.flatten() } });`);
289
+ lines.push(` }`);
290
+ lines.push(` const __body = __parsed.data;`);
255
291
  lines.push(` try {`);
256
292
  lines.push(` const id = uuid();`);
257
- lines.push(` const { ${insertFields.map(f => f.name).join(", ")} } = req.body;`);
293
+ lines.push(` const { ${insertFields.map(f => f.name).join(", ")} } = __body as any;`);
258
294
  if (mod.state_machines.length > 0) {
259
295
  lines.push(` const state = ${mod.state_machines[0].entity.toUpperCase()}_INITIAL;`);
260
296
  }
@@ -315,10 +351,35 @@ function emitEntityRouter(mod, system) {
315
351
  lines.push(` }`);
316
352
  lines.push(`});`);
317
353
  lines.push(``);
318
- // UPDATE — with state machine enforcement
354
+ // UPDATE — with state machine enforcement and column allow-list
355
+ // The allow-list is derived from the IR model so generated SQL never
356
+ // interpolates user-supplied keys as identifiers.
357
+ const updatableColumns = entityModel.fields
358
+ .filter(f => !["id", "created_at", "updated_at"].includes(f.name))
359
+ .map(f => f.name);
360
+ // Entities with a state machine carry a `state` column not present in the
361
+ // IR field list. Include it so PUT can drive transitions.
362
+ if (mod.state_machines.length > 0 && !updatableColumns.includes("state")) {
363
+ updatableColumns.push("state");
364
+ }
319
365
  lines.push(`// UPDATE`);
366
+ lines.push(`const __${toCamelCase(routeBase)}Updatable = new Set<string>(${JSON.stringify(updatableColumns)});`);
320
367
  lines.push(`${toCamelCase(routeBase)}Router.put("/:id", ${__crudMiddlewares}, async (req: Request, res: Response) => {`);
321
- lines.push(` const fields = { ...req.body };`);
368
+ lines.push(` // 1. Validate body shape and types via Zod (UpdateSchema is partial).`);
369
+ lines.push(` const __parsed = ${toPascalCase(entityModel.name)}UpdateSchema.safeParse(req.body);`);
370
+ lines.push(` if (!__parsed.success) {`);
371
+ lines.push(` return res.status(400).json({ error: { code: "VALIDATION_FAILED", message: "Invalid request body", issues: __parsed.error.flatten() } });`);
372
+ lines.push(` }`);
373
+ lines.push(` // 2. Reject unknown columns (defense in depth — Zod would already strip them).`);
374
+ lines.push(` const __unknown = Object.keys(req.body || {}).filter(k => !__${toCamelCase(routeBase)}Updatable.has(k));`);
375
+ lines.push(` if (__unknown.length > 0) {`);
376
+ lines.push(` return res.status(400).json({ error: { code: "UNKNOWN_FIELDS", message: \`Unknown fields: \${__unknown.join(", ")}\`, fields: __unknown } });`);
377
+ lines.push(` }`);
378
+ lines.push(` // 3. Use the Zod-parsed object as the update set.`);
379
+ lines.push(` const fields: Record<string, unknown> = __parsed.data as Record<string, unknown>;`);
380
+ lines.push(` if (Object.keys(fields).length === 0) {`);
381
+ lines.push(` return res.status(400).json({ error: { code: "NO_FIELDS", message: "No updatable fields supplied" } });`);
382
+ lines.push(` }`);
322
383
  if (mod.state_machines.length > 0) {
323
384
  const sm = mod.state_machines[0];
324
385
  lines.push(` // State machine enforcement`);
@@ -331,8 +392,9 @@ function emitEntityRouter(mod, system) {
331
392
  lines.push(` if (!tr.ok) return res.status(422).json({ error: { code: "INVALID_TRANSITION", message: \`Cannot transition from \${current.state} to \${fields.state}\` } });`);
332
393
  lines.push(` }`);
333
394
  }
334
- lines.push(` const sets = Object.keys(fields).map((k, i) => \`\${k} = $\${i + 2}\`).join(", ");`);
335
- lines.push(` const values = Object.values(fields);`);
395
+ lines.push(` const keys = Object.keys(fields);`);
396
+ lines.push(` const sets = keys.map((k, i) => \`\${k} = $\${i + 2}\`).join(", ");`);
397
+ lines.push(` const values = keys.map(k => fields[k]);`);
336
398
  lines.push(` const sql = \`UPDATE ${tableName} SET \${sets}, updated_at = NOW() WHERE id = $1 RETURNING *\`;`);
337
399
  lines.push(` const rows = await query(sql, [req.params.id, ...values]);`);
338
400
  lines.push(` if (rows.length === 0) return res.status(404).json({ error: { code: "NOT_FOUND", message: "Not found" } });`);
@@ -567,6 +629,14 @@ function emitIndex(system) {
567
629
  lines.push(`const httpServer = createServer(app);`);
568
630
  lines.push(`const PORT = parseInt(process.env.PORT || "3000");`);
569
631
  lines.push(``);
632
+ lines.push(`// Trust the immediate hop's X-Forwarded-* headers when running behind a`);
633
+ lines.push(`// load balancer / k8s ingress. Override with TRUST_PROXY=<n> for multi-hop`);
634
+ lines.push(`// (e.g. "2" for ingress + service mesh). Set to "false" to disable.`);
635
+ lines.push(`const __trust = process.env.TRUST_PROXY ?? "loopback, linklocal, uniquelocal";`);
636
+ lines.push(`if (__trust === "false") app.set("trust proxy", false);`);
637
+ lines.push(`else if (/^\\d+$/.test(__trust)) app.set("trust proxy", Number(__trust));`);
638
+ lines.push(`else app.set("trust proxy", __trust);`);
639
+ lines.push(``);
570
640
  lines.push(`// Middleware`);
571
641
  lines.push(`app.use(helmet());`);
572
642
  lines.push(`// CORS: restrict to ALLOWED_ORIGINS env var (comma-separated). Defaults to same-origin only.`);
@@ -662,22 +732,132 @@ function emitIndex(system) {
662
732
  return lines.join("\n");
663
733
  }
664
734
  exports.emitIndex = emitIndex;
665
- // ─── Migration Script ─────────────────────────────────────────────────────────
666
- function emitMigration(system, schemas) {
735
+ /**
736
+ * Build deterministic migration blocks from raw schema strings.
737
+ * The order of `schemas` is preserved; each block gets a zero-padded prefix
738
+ * so lexicographic sort matches insertion order.
739
+ */
740
+ function buildMigrationBlocks(schemas) {
741
+ const blocks = [];
742
+ schemas.forEach((sql, i) => {
743
+ const checksum = (0, crypto_1.createHash)("sha256").update(sql).digest("hex");
744
+ // Try to extract the module name from the schema header for a friendlier id.
745
+ const moduleMatch = sql.match(/^--\s*Module:\s*(\S+)/m);
746
+ const tableMatch = sql.match(/CREATE TABLE IF NOT EXISTS\s+(\w+)/i);
747
+ const slug = (tableMatch?.[1] || moduleMatch?.[1] || `block_${i}`)
748
+ .replace(/[^a-zA-Z0-9_]/g, "_")
749
+ .toLowerCase();
750
+ const id = `${String(i).padStart(4, "0")}_${slug}`;
751
+ blocks.push({ id, checksum, sql });
752
+ });
753
+ return blocks;
754
+ }
755
+ exports.buildMigrationBlocks = buildMigrationBlocks;
756
+ function emitMigration(_system, schemas) {
757
+ const blocks = buildMigrationBlocks(schemas);
667
758
  const lines = [];
668
759
  lines.push(`// Generated by BoneScript compiler. DO NOT EDIT.`);
760
+ lines.push(`// Migration runner with a schema_migrations ledger.`);
761
+ lines.push(`// Each block is hashed at compile time; runs are skipped if the same`);
762
+ lines.push(`// (id, checksum) pair has already been recorded as applied.`);
669
763
  lines.push(`require("dotenv").config();`);
764
+ lines.push(`import * as fs from "fs";`);
765
+ lines.push(`import * as path from "path";`);
766
+ lines.push(`import { createHash } from "crypto";`);
670
767
  lines.push(`import { pool } from "./db";`);
671
768
  lines.push(``);
769
+ lines.push(`interface Block { id: string; checksum: string; sql: string; }`);
770
+ lines.push(``);
771
+ lines.push(`const GENERATED_BLOCKS: Block[] = [`);
772
+ for (const b of blocks) {
773
+ const escaped = b.sql.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$/g, "\\$");
774
+ lines.push(` {`);
775
+ lines.push(` id: ${JSON.stringify(b.id)},`);
776
+ lines.push(` checksum: ${JSON.stringify(b.checksum)},`);
777
+ lines.push(` sql: \`${escaped}\`,`);
778
+ lines.push(` },`);
779
+ }
780
+ lines.push(`];`);
781
+ lines.push(``);
782
+ lines.push(`/**`);
783
+ lines.push(` * Pick up any hand-authored migrations dropped into migrations/_manual/.`);
784
+ lines.push(` * Files are picked up in lexicographic order; \`bonec diff --write\` writes`);
785
+ lines.push(` * them with a numeric prefix so insertion order is stable.`);
786
+ lines.push(` */`);
787
+ lines.push(`function loadManualBlocks(): Block[] {`);
788
+ lines.push(` const dir = path.resolve(__dirname, "..", "migrations", "_manual");`);
789
+ lines.push(` if (!fs.existsSync(dir)) return [];`);
790
+ lines.push(` return fs.readdirSync(dir)`);
791
+ lines.push(` .filter(f => f.endsWith(".sql"))`);
792
+ lines.push(` .sort()`);
793
+ lines.push(` .map(f => {`);
794
+ lines.push(` const sql = fs.readFileSync(path.join(dir, f), "utf-8");`);
795
+ lines.push(` return {`);
796
+ lines.push(` id: "manual_" + f.replace(/\\.sql$/, ""),`);
797
+ lines.push(` checksum: createHash("sha256").update(sql).digest("hex"),`);
798
+ lines.push(` sql,`);
799
+ lines.push(` };`);
800
+ lines.push(` });`);
801
+ lines.push(`}`);
802
+ lines.push(``);
803
+ lines.push(`const LEDGER_DDL = \`CREATE TABLE IF NOT EXISTS schema_migrations (`);
804
+ lines.push(` id VARCHAR PRIMARY KEY,`);
805
+ lines.push(` checksum VARCHAR NOT NULL,`);
806
+ lines.push(` applied_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),`);
807
+ lines.push(` applied_by VARCHAR NOT NULL DEFAULT current_user,`);
808
+ lines.push(` duration_ms INTEGER NOT NULL DEFAULT 0`);
809
+ lines.push(`);\`;`);
810
+ lines.push(``);
672
811
  lines.push(`async function migrate() {`);
673
- lines.push(` console.log("Running migrations...");`);
674
812
  lines.push(` const client = await pool.connect();`);
813
+ lines.push(` let applied = 0, skipped = 0;`);
675
814
  lines.push(` try {`);
676
- for (const schema of schemas) {
677
- const escaped = schema.replace(/`/g, "\\`").replace(/\$/g, "\\$");
678
- lines.push(` await client.query(\`${escaped}\`);`);
679
- }
680
- lines.push(` console.log("Migrations complete.");`);
815
+ lines.push(` await client.query(LEDGER_DDL);`);
816
+ lines.push(``);
817
+ lines.push(` // Generated blocks come first (compile-time schema), then manual diffs.`);
818
+ lines.push(` const allBlocks: Block[] = [...GENERATED_BLOCKS, ...loadManualBlocks()];`);
819
+ lines.push(``);
820
+ lines.push(` // Load already-applied entries.`);
821
+ lines.push(` const existing = await client.query(`);
822
+ lines.push(` "SELECT id, checksum FROM schema_migrations"`);
823
+ lines.push(` );`);
824
+ lines.push(` const rows = existing.rows as Array<{ id: string; checksum: string }>;`);
825
+ lines.push(` const appliedById = new Map(rows.map(r => [r.id, r.checksum]));`);
826
+ lines.push(``);
827
+ lines.push(` for (const block of allBlocks) {`);
828
+ lines.push(` const prior = appliedById.get(block.id);`);
829
+ lines.push(` if (prior === block.checksum) {`);
830
+ lines.push(` skipped++;`);
831
+ lines.push(` continue;`);
832
+ lines.push(` }`);
833
+ lines.push(` if (prior && prior !== block.checksum) {`);
834
+ lines.push(` // Someone changed an already-applied migration. Refuse to proceed —`);
835
+ lines.push(` // an explicit migration file should be authored instead.`);
836
+ lines.push(` throw new Error(`);
837
+ lines.push(" `Migration ${block.id} was previously applied with a different ` +");
838
+ lines.push(" `checksum. Generate a new migration via 'bonec diff --write' ` +");
839
+ lines.push(" `instead of editing existing schemas.`");
840
+ lines.push(` );`);
841
+ lines.push(` }`);
842
+ lines.push(``);
843
+ lines.push(` const start = Date.now();`);
844
+ lines.push(` try {`);
845
+ lines.push(` await client.query("BEGIN");`);
846
+ lines.push(` await client.query(block.sql);`);
847
+ lines.push(` await client.query(`);
848
+ lines.push(` "INSERT INTO schema_migrations (id, checksum, duration_ms) VALUES ($1, $2, $3)",`);
849
+ lines.push(` [block.id, block.checksum, Date.now() - start]`);
850
+ lines.push(` );`);
851
+ lines.push(` await client.query("COMMIT");`);
852
+ lines.push(" console.log(` applied ${block.id} (${Date.now() - start}ms)`);");
853
+ lines.push(` applied++;`);
854
+ lines.push(` } catch (e) {`);
855
+ lines.push(` await client.query("ROLLBACK").catch(() => {});`);
856
+ lines.push(` throw e;`);
857
+ lines.push(` }`);
858
+ lines.push(` }`);
859
+ lines.push(``);
860
+ lines.push(" console.log(`Migrations complete: ${applied} applied, ${skipped} already up to date.`);");
681
861
  lines.push(` } finally {`);
682
862
  lines.push(` client.release();`);
683
863
  lines.push(` await pool.end();`);
@@ -1 +1 @@
1
- {"version":3,"file":"emit_runtime.js","sourceRoot":"","sources":["../src/emit_runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emit_runtime.js","sourceRoot":"","sources":["../src/emit_runtime.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,23 @@ function emitWebSocketServer(system) {
26
26
  lines.push(`import { eventBus } from "./events";`);
27
27
  lines.push(`import { logger } from "./logger";`);
28
28
  lines.push(``);
29
- lines.push(`const JWT_SECRET = process.env.JWT_SECRET || "bonescript-dev-secret-change-in-production";`);
29
+ // Use the same secret-loading rules as the HTTP middleware.
30
+ // Refuse to boot in production without JWT_SECRET; warn in dev.
31
+ lines.push(`const JWT_SECRET = (() => {`);
32
+ lines.push(` const secret = process.env.JWT_SECRET;`);
33
+ lines.push(` if (!secret) {`);
34
+ lines.push(` if (process.env.NODE_ENV === "production") {`);
35
+ lines.push(` console.error("[FATAL] JWT_SECRET environment variable is not set. Refusing to start in production.");`);
36
+ lines.push(` process.exit(1);`);
37
+ lines.push(` }`);
38
+ lines.push(` console.warn("[WARN] JWT_SECRET is not set. Using insecure default — do not use in production.");`);
39
+ lines.push(` return "bonescript-dev-secret-do-not-use-in-production";`);
40
+ lines.push(` }`);
41
+ lines.push(` if (secret.length < 32) {`);
42
+ lines.push(` console.warn("[WARN] JWT_SECRET is shorter than 32 characters. Use a longer secret in production.");`);
43
+ lines.push(` }`);
44
+ lines.push(` return secret;`);
45
+ lines.push(`})();`);
30
46
  lines.push(``);
31
47
  // Redis pub/sub for multi-instance support
32
48
  lines.push(`// Redis pub/sub for multi-instance WebSocket broadcasting`);
@@ -110,7 +126,11 @@ function emitWebSocketServer(system) {
110
126
  lines.push(``);
111
127
  lines.push(` let userId: string;`);
112
128
  lines.push(` try {`);
113
- lines.push(` const decoded = jwt.verify(token, JWT_SECRET) as { sub: string };`);
129
+ lines.push(` const decoded = jwt.verify(token, JWT_SECRET, {`);
130
+ lines.push(` algorithms: ["HS256"],`);
131
+ lines.push(` maxAge: process.env.JWT_MAX_AGE || "1h",`);
132
+ lines.push(` }) as { sub?: unknown };`);
133
+ lines.push(` if (typeof decoded.sub !== "string" || decoded.sub.length === 0) throw new Error("invalid sub");`);
114
134
  lines.push(` userId = decoded.sub;`);
115
135
  lines.push(` } catch {`);
116
136
  lines.push(` socket.send(JSON.stringify({ type: "error", message: "Authentication failed" }));`);