bonescript-compiler 0.5.2 → 0.5.4

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 (187) hide show
  1. package/LICENSE +21 -21
  2. package/dist/algorithm_catalog.js +166 -166
  3. package/dist/cli.d.ts +1 -2
  4. package/dist/cli.js +543 -75
  5. package/dist/cli.js.map +1 -1
  6. package/dist/emit_capability.d.ts +0 -13
  7. package/dist/emit_capability.js +128 -292
  8. package/dist/emit_capability.js.map +1 -1
  9. package/dist/emit_composition.js +3 -37
  10. package/dist/emit_composition.js.map +1 -1
  11. package/dist/emit_deploy.js +162 -162
  12. package/dist/emit_events.d.ts +0 -1
  13. package/dist/emit_events.js +275 -342
  14. package/dist/emit_events.js.map +1 -1
  15. package/dist/emit_full.js +106 -268
  16. package/dist/emit_full.js.map +1 -1
  17. package/dist/emit_maintenance.js +249 -249
  18. package/dist/emit_runtime.d.ts +11 -17
  19. package/dist/emit_runtime.js +688 -29
  20. package/dist/emit_runtime.js.map +1 -1
  21. package/dist/emit_sourcemap.js +66 -66
  22. package/dist/emit_tests.js +0 -37
  23. package/dist/emit_tests.js.map +1 -1
  24. package/dist/emitter.js +16 -82
  25. package/dist/emitter.js.map +1 -1
  26. package/dist/extension_manager.d.ts +2 -2
  27. package/dist/extension_manager.js +3 -6
  28. package/dist/extension_manager.js.map +1 -1
  29. package/dist/ir.d.ts +0 -4
  30. package/dist/lowering.d.ts +14 -5
  31. package/dist/lowering.js +417 -66
  32. package/dist/lowering.js.map +1 -1
  33. package/dist/module_loader.d.ts +2 -2
  34. package/dist/module_loader.js +23 -20
  35. package/dist/module_loader.js.map +1 -1
  36. package/dist/optimizer.js +1 -1
  37. package/dist/optimizer.js.map +1 -1
  38. package/dist/scaffold.d.ts +2 -2
  39. package/dist/scaffold.js +319 -315
  40. package/dist/scaffold.js.map +1 -1
  41. package/dist/source_map.js.map +1 -0
  42. package/dist/test.js.map +1 -0
  43. package/dist/test_typechecker.d.ts +5 -0
  44. package/dist/test_typechecker.js +126 -0
  45. package/dist/test_typechecker.js.map +1 -0
  46. package/dist/typechecker.d.ts +0 -5
  47. package/dist/typechecker.js +13 -68
  48. package/dist/typechecker.js.map +1 -1
  49. package/dist/verifier.d.ts +1 -5
  50. package/dist/verifier.js +35 -140
  51. package/dist/verifier.js.map +1 -1
  52. package/package.json +52 -62
  53. package/src/algorithm_catalog.ts +345 -345
  54. package/src/ast.d.ts +244 -0
  55. package/src/ast.ts +334 -334
  56. package/src/cli.ts +624 -98
  57. package/src/emit_batch.ts +140 -140
  58. package/src/emit_capability.ts +436 -617
  59. package/src/emit_composition.ts +196 -229
  60. package/src/emit_deploy.ts +190 -190
  61. package/src/emit_events.ts +307 -377
  62. package/src/emit_extras.ts +240 -240
  63. package/src/emit_full.ts +309 -475
  64. package/src/emit_maintenance.ts +459 -459
  65. package/src/emit_runtime.ts +730 -17
  66. package/src/emit_sourcemap.ts +140 -140
  67. package/src/emit_tests.ts +205 -246
  68. package/src/emit_websocket.ts +229 -229
  69. package/src/emitter.ts +578 -642
  70. package/src/extension_manager.ts +187 -189
  71. package/src/formatter.ts +297 -297
  72. package/src/index.ts +88 -88
  73. package/src/ir.ts +215 -216
  74. package/src/lexer.d.ts +195 -0
  75. package/src/lexer.ts +630 -630
  76. package/src/lowering.ts +556 -168
  77. package/src/module_loader.ts +114 -112
  78. package/src/optimizer.ts +196 -196
  79. package/src/parse_decls.d.ts +13 -0
  80. package/src/parse_decls.ts +409 -409
  81. package/src/parse_decls2.d.ts +13 -0
  82. package/src/parse_decls2.ts +244 -244
  83. package/src/parse_expr.d.ts +7 -0
  84. package/src/parse_expr.ts +197 -197
  85. package/src/parse_types.d.ts +6 -0
  86. package/src/parse_types.ts +54 -54
  87. package/src/parser.d.ts +10 -0
  88. package/src/parser.ts +1 -1
  89. package/src/parser_base.d.ts +19 -0
  90. package/src/parser_base.ts +57 -57
  91. package/src/parser_recovery.ts +153 -153
  92. package/src/scaffold.ts +375 -371
  93. package/src/solver.ts +330 -330
  94. package/src/typechecker.d.ts +52 -0
  95. package/src/typechecker.ts +591 -657
  96. package/src/types.d.ts +38 -0
  97. package/src/types.ts +122 -122
  98. package/src/verifier.ts +46 -152
  99. package/README.md +0 -382
  100. package/dist/commands/check.d.ts +0 -5
  101. package/dist/commands/check.js +0 -34
  102. package/dist/commands/check.js.map +0 -1
  103. package/dist/commands/compile.d.ts +0 -5
  104. package/dist/commands/compile.js +0 -215
  105. package/dist/commands/compile.js.map +0 -1
  106. package/dist/commands/debug.d.ts +0 -5
  107. package/dist/commands/debug.js +0 -59
  108. package/dist/commands/debug.js.map +0 -1
  109. package/dist/commands/diff.d.ts +0 -5
  110. package/dist/commands/diff.js +0 -125
  111. package/dist/commands/diff.js.map +0 -1
  112. package/dist/commands/fmt.d.ts +0 -5
  113. package/dist/commands/fmt.js +0 -49
  114. package/dist/commands/fmt.js.map +0 -1
  115. package/dist/commands/init.d.ts +0 -5
  116. package/dist/commands/init.js +0 -96
  117. package/dist/commands/init.js.map +0 -1
  118. package/dist/commands/ir.d.ts +0 -5
  119. package/dist/commands/ir.js +0 -27
  120. package/dist/commands/ir.js.map +0 -1
  121. package/dist/commands/lex.d.ts +0 -5
  122. package/dist/commands/lex.js +0 -21
  123. package/dist/commands/lex.js.map +0 -1
  124. package/dist/commands/parse.d.ts +0 -5
  125. package/dist/commands/parse.js +0 -30
  126. package/dist/commands/parse.js.map +0 -1
  127. package/dist/commands/test.d.ts +0 -5
  128. package/dist/commands/test.js +0 -61
  129. package/dist/commands/test.js.map +0 -1
  130. package/dist/commands/verify_determinism.d.ts +0 -5
  131. package/dist/commands/verify_determinism.js +0 -64
  132. package/dist/commands/verify_determinism.js.map +0 -1
  133. package/dist/commands/watch.d.ts +0 -5
  134. package/dist/commands/watch.js +0 -50
  135. package/dist/commands/watch.js.map +0 -1
  136. package/dist/emit_auth.d.ts +0 -18
  137. package/dist/emit_auth.js +0 -507
  138. package/dist/emit_auth.js.map +0 -1
  139. package/dist/emit_database.d.ts +0 -7
  140. package/dist/emit_database.js +0 -74
  141. package/dist/emit_database.js.map +0 -1
  142. package/dist/emit_index.d.ts +0 -6
  143. package/dist/emit_index.js +0 -202
  144. package/dist/emit_index.js.map +0 -1
  145. package/dist/emit_models.d.ts +0 -12
  146. package/dist/emit_models.js +0 -171
  147. package/dist/emit_models.js.map +0 -1
  148. package/dist/emit_openapi.d.ts +0 -9
  149. package/dist/emit_openapi.js +0 -308
  150. package/dist/emit_openapi.js.map +0 -1
  151. package/dist/emit_package.d.ts +0 -7
  152. package/dist/emit_package.js +0 -70
  153. package/dist/emit_package.js.map +0 -1
  154. package/dist/emit_router.d.ts +0 -12
  155. package/dist/emit_router.js +0 -390
  156. package/dist/emit_router.js.map +0 -1
  157. package/dist/lowering_channels.d.ts +0 -11
  158. package/dist/lowering_channels.js +0 -103
  159. package/dist/lowering_channels.js.map +0 -1
  160. package/dist/lowering_entities.d.ts +0 -11
  161. package/dist/lowering_entities.js +0 -232
  162. package/dist/lowering_entities.js.map +0 -1
  163. package/dist/lowering_helpers.d.ts +0 -13
  164. package/dist/lowering_helpers.js +0 -76
  165. package/dist/lowering_helpers.js.map +0 -1
  166. package/src/commands/check.ts +0 -33
  167. package/src/commands/compile.ts +0 -191
  168. package/src/commands/debug.ts +0 -33
  169. package/src/commands/diff.ts +0 -108
  170. package/src/commands/fmt.ts +0 -22
  171. package/src/commands/init.ts +0 -72
  172. package/src/commands/ir.ts +0 -23
  173. package/src/commands/lex.ts +0 -17
  174. package/src/commands/parse.ts +0 -24
  175. package/src/commands/test.ts +0 -36
  176. package/src/commands/verify_determinism.ts +0 -66
  177. package/src/commands/watch.ts +0 -25
  178. package/src/emit_auth.ts +0 -513
  179. package/src/emit_database.ts +0 -75
  180. package/src/emit_index.ts +0 -210
  181. package/src/emit_models.ts +0 -176
  182. package/src/emit_openapi.ts +0 -318
  183. package/src/emit_package.ts +0 -69
  184. package/src/emit_router.ts +0 -409
  185. package/src/lowering_channels.ts +0 -108
  186. package/src/lowering_entities.ts +0 -258
  187. package/src/lowering_helpers.ts +0 -75
package/dist/emit_full.js CHANGED
@@ -11,34 +11,14 @@ const emit_websocket_1 = require("./emit_websocket");
11
11
  const emit_maintenance_1 = require("./emit_maintenance");
12
12
  const emit_extras_1 = require("./emit_extras");
13
13
  const emit_composition_1 = require("./emit_composition");
14
- const extension_manager_1 = require("./extension_manager");
15
14
  const emit_events_1 = require("./emit_events");
16
15
  const emit_batch_1 = require("./emit_batch");
17
16
  const emit_sourcemap_1 = require("./emit_sourcemap");
18
17
  const emit_tests_1 = require("./emit_tests");
19
18
  const emit_deploy_1 = require("./emit_deploy");
20
- const emit_models_1 = require("./emit_models");
21
- const emit_openapi_1 = require("./emit_openapi");
22
19
  function toSnakeCase(s) {
23
20
  return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
24
21
  }
25
- /** Resolve the auth method for the system from the resolution map or module configs. */
26
- function resolveSystemAuthMethod(system) {
27
- const direct = system.resolution["implied.auth_method"] || system.resolution["system.auth_method"];
28
- if (direct === "oauth2" || direct === "apikey" || direct === "jwt")
29
- return direct;
30
- for (const [key, val] of Object.entries(system.resolution)) {
31
- if (key.endsWith(".auth_method") && (val === "oauth2" || val === "apikey" || val === "jwt")) {
32
- return val;
33
- }
34
- }
35
- for (const mod of system.modules) {
36
- const m = mod.config["auth_method"];
37
- if (m === "oauth2" || m === "apikey" || m === "jwt")
38
- return m;
39
- }
40
- return "jwt";
41
- }
42
22
  class FullEmitter {
43
23
  constructor() {
44
24
  this.schemaEmitter = new emitter_1.Emitter();
@@ -55,36 +35,6 @@ class FullEmitter {
55
35
  files.push({ path: "src/events.ts", content: (0, emit_events_1.emitDurableEventBus)(system), language: "typescript", source_module: "infra" });
56
36
  // Outbox SQL schema
57
37
  files.push({ path: "migrations/event_outbox.sql", content: (0, emit_events_1.emitOutboxSchema)(), language: "sql", source_module: "infra" });
58
- // API key table migration (only when auth_method = apikey)
59
- const authMethod = resolveSystemAuthMethod(system);
60
- if (authMethod === "apikey") {
61
- files.push({
62
- path: "migrations/api_keys.sql",
63
- content: [
64
- "-- Generated by BoneScript compiler. DO NOT EDIT.",
65
- "-- API key table for apikey auth strategy.",
66
- "",
67
- "CREATE TABLE IF NOT EXISTS api_keys (",
68
- " id UUID PRIMARY KEY DEFAULT gen_random_uuid(),",
69
- " actor_id UUID NOT NULL,",
70
- " key_hash VARCHAR(64) NOT NULL UNIQUE,",
71
- " key_prefix VARCHAR(16) NOT NULL,",
72
- " name VARCHAR(255) NOT NULL DEFAULT 'default',",
73
- " created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),",
74
- " expires_at TIMESTAMPTZ NOT NULL,",
75
- " revoked BOOLEAN NOT NULL DEFAULT false",
76
- ");",
77
- "CREATE INDEX IF NOT EXISTS idx_api_keys_actor ON api_keys (actor_id);",
78
- "CREATE INDEX IF NOT EXISTS idx_api_keys_hash ON api_keys (key_hash);",
79
- ].join("\n"),
80
- language: "sql",
81
- source_module: "infra",
82
- });
83
- }
84
- // Typed event publisher functions (one per declared event)
85
- if (system.events.length > 0) {
86
- files.push({ path: "src/publishers.ts", content: (0, emit_events_1.emitTypedEventPublishers)(system), language: "typescript", source_module: "infra" });
87
- }
88
38
  files.push({ path: "src/auth.ts", content: (0, emit_runtime_1.emitAuthMiddleware)(system), language: "typescript", source_module: "infra" });
89
39
  files.push({ path: "src/logger.ts", content: (0, emit_maintenance_1.emitLogger)(system), language: "typescript", source_module: "infra" });
90
40
  files.push({ path: "src/metrics.ts", content: (0, emit_maintenance_1.emitMetrics)(), language: "typescript", source_module: "infra" });
@@ -131,24 +81,17 @@ class FullEmitter {
131
81
  "",
132
82
  ];
133
83
  for (const ep of system.extension_points) {
134
- // Use the shared emitExtensionPointStub so the format is consistent
135
- // with what extension_manager.ts expects when merging on recompile.
136
- const stub = (0, extension_manager_1.emitExtensionPointStub)({
137
- kind: "ExtensionPointDecl",
138
- loc: { line: 0, column: 0, offset: 0 },
139
- name: ep.name,
140
- params: ep.params.map(p => ({
141
- kind: "Param",
142
- loc: { line: 0, column: 0, offset: 0 },
143
- name: p.name,
144
- type: { kind: "PrimitiveType", loc: { line: 0, column: 0, offset: 0 }, name: p.type },
145
- })),
146
- returns: ep.returns
147
- ? { kind: "PrimitiveType", loc: { line: 0, column: 0, offset: 0 }, name: ep.returns }
148
- : null,
149
- stable: ep.stable,
150
- });
151
- extLines.push(stub);
84
+ const params = ep.params.map((p) => `${p.name}: ${p.type}`).join(", ");
85
+ const returnType = ep.returns || "void";
86
+ extLines.push(`/**`);
87
+ extLines.push(` * Extension point: ${ep.name}`);
88
+ extLines.push(` * ${ep.stable ? "STABLE: implementation required." : "Optional."}`);
89
+ extLines.push(` */`);
90
+ extLines.push(`export function ${ep.name}(${params}): ${returnType} {`);
91
+ extLines.push(` // <bonescript:ext:${ep.name}:begin>`);
92
+ extLines.push(` throw new Error("Not implemented: ${ep.name}");`);
93
+ extLines.push(` // <bonescript:ext:${ep.name}:end>`);
94
+ extLines.push(`}`);
152
95
  extLines.push("");
153
96
  }
154
97
  files.push({
@@ -169,76 +112,6 @@ class FullEmitter {
169
112
  });
170
113
  }
171
114
  }
172
- // 3a. Derived field helpers (one file per entity that has derived fields)
173
- for (const mod of system.modules) {
174
- for (const model of mod.models) {
175
- const derivedFields = model.fields.filter(f => f.default_value && f.default_value.startsWith("GENERATED ALWAYS AS"));
176
- if (derivedFields.length === 0)
177
- continue;
178
- const lines = [
179
- `// Generated by BoneScript compiler. DO NOT EDIT.`,
180
- `// Derived field helpers for ${model.name}.`,
181
- `// These mirror the GENERATED ALWAYS AS columns in the SQL migration.`,
182
- `// Use them when you need the computed value in application code before a DB round-trip.`,
183
- ``,
184
- `export type ${model.name}Derived = {`,
185
- ];
186
- for (const f of derivedFields) {
187
- lines.push(` ${f.name}: unknown;`);
188
- }
189
- lines.push(`};`);
190
- lines.push(``);
191
- lines.push(`export const ${model.name.toUpperCase()}_DERIVED_FIELDS = [${derivedFields.map(f => `"${f.name}"`).join(", ")}] as const;`);
192
- lines.push(``);
193
- lines.push(`/** Returns true if the field name is a derived (computed) field on ${model.name}. */`);
194
- lines.push(`export function is${model.name}DerivedField(field: string): boolean {`);
195
- lines.push(` return (${model.name.toUpperCase()}_DERIVED_FIELDS as readonly string[]).includes(field);`);
196
- lines.push(`}`);
197
- files.push({
198
- path: `src/derived/${toSnakeCase(model.name)}.ts`,
199
- content: lines.join("\n"),
200
- language: "typescript",
201
- source_module: mod.id,
202
- });
203
- }
204
- }
205
- // 3b. Channel filter predicates (only if any channel has a filter expression)
206
- const realtimeMods = system.modules.filter(m => m.kind === "realtime_service" && m.config["filter"]);
207
- if (realtimeMods.length > 0) {
208
- const filterLines = [
209
- `// Generated by BoneScript compiler. DO NOT EDIT.`,
210
- `// Channel filter predicates — applied before delivering messages to participants.`,
211
- ``,
212
- `export const CHANNEL_FILTERS: Record<string, (event: any, participant: any) => boolean> = {`,
213
- ];
214
- for (const mod of realtimeMods) {
215
- const filterExpr = String(mod.config["filter"] || "true");
216
- // Translate bone field refs to JS: event.field and participant.field pass through,
217
- // bare identifiers are assumed to be event properties.
218
- const jsFilter = filterExpr
219
- .replace(/\band\b/g, "&&")
220
- .replace(/\bor\b/g, "||")
221
- .replace(/\bnot\b/g, "!")
222
- .replace(/\b==\b/g, "===")
223
- .replace(/\b!=\b/g, "!==")
224
- .replace(/\bcontains\b/g, "?.includes");
225
- filterLines.push(` "${mod.name}": (event, participant) => {`);
226
- filterLines.push(` try { return Boolean(${jsFilter}); } catch { return true; }`);
227
- filterLines.push(` },`);
228
- }
229
- filterLines.push(`};`);
230
- filterLines.push(``);
231
- filterLines.push(`export function shouldDeliver(channel: string, event: any, participant: any): boolean {`);
232
- filterLines.push(` const filter = CHANNEL_FILTERS[channel];`);
233
- filterLines.push(` return filter ? filter(event, participant) : true;`);
234
- filterLines.push(`}`);
235
- files.push({
236
- path: "src/channel_filters.ts",
237
- content: filterLines.join("\n"),
238
- language: "typescript",
239
- source_module: "infra",
240
- });
241
- }
242
115
  // 4. Source: route files (CRUD + capabilities)
243
116
  for (const mod of system.modules) {
244
117
  if (mod.kind === "api_service" && mod.models.length > 0) {
@@ -255,30 +128,7 @@ class FullEmitter {
255
128
  }
256
129
  // 5. Source: main entry point
257
130
  files.push({ path: "src/index.ts", content: (0, emit_runtime_1.emitIndex)(system), language: "typescript", source_module: "root" });
258
- // 5a. Model interfaces, schemas, and validators (one file per model)
259
- const modelFiles = [];
260
- for (const mod of system.modules) {
261
- for (const model of mod.models) {
262
- const modelPath = `src/models/${toSnakeCase(model.name)}.ts`;
263
- files.push({
264
- path: modelPath,
265
- content: (0, emit_models_1.emitModelFile)(model, mod, system),
266
- language: "typescript",
267
- source_module: mod.id,
268
- });
269
- modelFiles.push(modelPath);
270
- }
271
- }
272
- if (modelFiles.length > 0) {
273
- files.push({
274
- path: "src/models/index.ts",
275
- content: (0, emit_models_1.emitModelsIndex)(system),
276
- language: "typescript",
277
- source_module: "shared",
278
- });
279
- }
280
131
  // 6. SQL migrations — run schema emitter ONCE, then match by model name
281
- // Includes both api_service entities AND data_store schemas.
282
132
  const schemas = [];
283
133
  const allSchemaFiles = this.schemaEmitter.emit(system);
284
134
  for (const mod of system.modules) {
@@ -298,11 +148,6 @@ class FullEmitter {
298
148
  files.push({ path: "docker-compose.yaml", content: this.emitDockerCompose(system), language: "yaml", source_module: "infra" });
299
149
  // 9. README
300
150
  files.push({ path: "README.md", content: this.emitReadme(system), language: "yaml", source_module: "root" });
301
- // 9a. OpenAPI schema (spec/09_CODEGEN.md §2 — ApiService secondary target)
302
- const openApiContent = (0, emit_openapi_1.emitOpenApiSchema)(system);
303
- if (openApiContent) {
304
- files.push({ path: "openapi.json", content: openApiContent, language: "json", source_module: "root" });
305
- }
306
151
  // 10. Source map + debug handler
307
152
  files.push({ path: `${system.name}.bone.map`, content: (0, emit_sourcemap_1.emitSourceMapFile)(system, `${system.name}.bone`), language: "json", source_module: "root" });
308
153
  files.push({ path: "src/debug.ts", content: (0, emit_sourcemap_1.emitDebugHandler)(system), language: "typescript", source_module: "infra" });
@@ -315,68 +160,61 @@ class FullEmitter {
315
160
  return files;
316
161
  }
317
162
  emitEnvExample(system) {
318
- return `# ${system.name} Environment Variables
319
- # Copy this file to .env and fill in real values. Never commit .env to source control.
320
-
321
- # --- Required in production ---
322
- # Generate with: node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"
323
- JWT_SECRET=
324
-
325
- # --- Database ---
326
- DATABASE_URL=postgresql://postgres:postgres@localhost:5432/${toSnakeCase(system.name)}
327
-
328
- # --- Redis (optional, used by some domain templates) ---
329
- REDIS_URL=redis://localhost:6379
330
-
331
- # --- Server ---
332
- PORT=3000
333
- NODE_ENV=development
334
-
335
- # --- CORS ---
336
- # Comma-separated list of allowed origins. Leave empty to disallow all cross-origin requests.
337
- # Example: ALLOWED_ORIGINS=https://app.example.com,https://admin.example.com
338
- ALLOWED_ORIGINS=
339
-
340
- # --- Rate limiting ---
341
- # Global limit: requests per window per IP (default 300/min)
342
- RATE_LIMIT_MAX=300
343
- RATE_LIMIT_WINDOW_MS=60000
344
- # Auth endpoints (login/register) limit per IP (default 20/min — brute-force protection)
345
- AUTH_RATE_LIMIT_MAX=20
346
-
347
- # --- Event delivery mode ---
348
- # in_process: in-memory, fast, no durability guarantees (default for development)
349
- # durable: Postgres-backed transactional outbox (recommended for production)
350
- EVENT_MODE=in_process
351
- EVENT_WORKER_INTERVAL_MS=1000
352
-
353
- # --- Request timeout ---
354
- REQUEST_TIMEOUT_MS=30000
163
+ return `# ${system.name} Environment Variables
164
+ # Copy this file to .env and fill in real values. Never commit .env to source control.
165
+
166
+ # --- Required in production ---
167
+ # Generate with: node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"
168
+ JWT_SECRET=
169
+
170
+ # --- Database ---
171
+ DATABASE_URL=postgresql://postgres:postgres@localhost:5432/${toSnakeCase(system.name)}
172
+
173
+ # --- Redis (optional, used by some domain templates) ---
174
+ REDIS_URL=redis://localhost:6379
175
+
176
+ # --- Server ---
177
+ PORT=3000
178
+ NODE_ENV=development
179
+
180
+ # --- CORS ---
181
+ # Comma-separated list of allowed origins. Leave empty to disallow all cross-origin requests.
182
+ # Example: ALLOWED_ORIGINS=https://app.example.com,https://admin.example.com
183
+ ALLOWED_ORIGINS=
184
+
185
+ # --- Event delivery mode ---
186
+ # in_process: in-memory, fast, no durability guarantees (default for development)
187
+ # durable: Postgres-backed transactional outbox (recommended for production)
188
+ EVENT_MODE=in_process
189
+ EVENT_WORKER_INTERVAL_MS=1000
190
+
191
+ # --- Request timeout ---
192
+ REQUEST_TIMEOUT_MS=30000
355
193
  `;
356
194
  }
357
195
  emitDockerCompose(system) {
358
- return `# Generated by BoneScript compiler.
359
- version: "3.8"
360
-
361
- services:
362
- postgres:
363
- image: postgres:16-alpine
364
- environment:
365
- POSTGRES_DB: ${toSnakeCase(system.name)}
366
- POSTGRES_USER: postgres
367
- POSTGRES_PASSWORD: postgres
368
- ports:
369
- - "5432:5432"
370
- volumes:
371
- - pgdata:/var/lib/postgresql/data
372
-
373
- redis:
374
- image: redis:7-alpine
375
- ports:
376
- - "6379:6379"
377
-
378
- volumes:
379
- pgdata:
196
+ return `# Generated by BoneScript compiler.
197
+ version: "3.8"
198
+
199
+ services:
200
+ postgres:
201
+ image: postgres:16-alpine
202
+ environment:
203
+ POSTGRES_DB: ${toSnakeCase(system.name)}
204
+ POSTGRES_USER: postgres
205
+ POSTGRES_PASSWORD: postgres
206
+ ports:
207
+ - "5432:5432"
208
+ volumes:
209
+ - pgdata:/var/lib/postgresql/data
210
+
211
+ redis:
212
+ image: redis:7-alpine
213
+ ports:
214
+ - "6379:6379"
215
+
216
+ volumes:
217
+ pgdata:
380
218
  `;
381
219
  }
382
220
  emitReadme(system) {
@@ -385,49 +223,49 @@ volumes:
385
223
  .filter(m => m.models.length > 0)
386
224
  .map(m => `- \`/${toSnakeCase(m.models[0].name)}s\` — ${m.name}`)
387
225
  .join("\n");
388
- return `# ${system.name}
389
-
390
- Generated by BoneScript compiler. Source hash: ${system.source_hash}
391
-
392
- ## Quick Start
393
-
394
- \`\`\`bash
395
- # Start dependencies
396
- docker compose up -d
397
-
398
- # Install
399
- npm install
400
-
401
- # Run migrations
402
- npm run migrate
403
-
404
- # Start server
405
- npm run dev
406
- \`\`\`
407
-
408
- ## API Routes
409
-
410
- ${routes}
411
-
412
- Each route supports:
413
- - \`GET /\` — List (paginated)
414
- - \`GET /:id\` — Read
415
- - \`POST /\` — Create
416
- - \`PUT /:id\` — Update
417
- - \`DELETE /:id\` — Delete
418
-
419
- Plus capability-specific endpoints.
420
-
421
- ## Auth
422
-
423
- Send a Bearer token in the Authorization header:
424
- \`\`\`
425
- Authorization: Bearer <jwt-token>
426
- \`\`\`
427
-
428
- ## Environment
429
-
430
- Copy \`.env.example\` to \`.env\` and configure.
226
+ return `# ${system.name}
227
+
228
+ Generated by BoneScript compiler. Source hash: ${system.source_hash}
229
+
230
+ ## Quick Start
231
+
232
+ \`\`\`bash
233
+ # Start dependencies
234
+ docker compose up -d
235
+
236
+ # Install
237
+ npm install
238
+
239
+ # Run migrations
240
+ npm run migrate
241
+
242
+ # Start server
243
+ npm run dev
244
+ \`\`\`
245
+
246
+ ## API Routes
247
+
248
+ ${routes}
249
+
250
+ Each route supports:
251
+ - \`GET /\` — List (paginated)
252
+ - \`GET /:id\` — Read
253
+ - \`POST /\` — Create
254
+ - \`PUT /:id\` — Update
255
+ - \`DELETE /:id\` — Delete
256
+
257
+ Plus capability-specific endpoints.
258
+
259
+ ## Auth
260
+
261
+ Send a Bearer token in the Authorization header:
262
+ \`\`\`
263
+ Authorization: Bearer <jwt-token>
264
+ \`\`\`
265
+
266
+ ## Environment
267
+
268
+ Copy \`.env.example\` to \`.env\` and configure.
431
269
  `;
432
270
  }
433
271
  }
@@ -1 +1 @@
1
- {"version":3,"file":"emit_full.js","sourceRoot":"","sources":["../src/emit_full.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emit_full.js","sourceRoot":"","sources":["../src/emit_full.ts"],"names":[],"mappings":"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"}