bonescript-compiler 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/LICENSE +21 -0
  2. package/dist/algorithm_catalog.d.ts +32 -0
  3. package/dist/algorithm_catalog.js +323 -0
  4. package/dist/algorithm_catalog.js.map +1 -0
  5. package/dist/ast.d.ts +244 -0
  6. package/dist/ast.js +8 -0
  7. package/dist/ast.js.map +1 -0
  8. package/dist/cli.d.ts +4 -0
  9. package/dist/cli.js +605 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/emit_batch.d.ts +7 -0
  12. package/dist/emit_batch.js +133 -0
  13. package/dist/emit_batch.js.map +1 -0
  14. package/dist/emit_capability.d.ts +7 -0
  15. package/dist/emit_capability.js +376 -0
  16. package/dist/emit_capability.js.map +1 -0
  17. package/dist/emit_composition.d.ts +22 -0
  18. package/dist/emit_composition.js +184 -0
  19. package/dist/emit_composition.js.map +1 -0
  20. package/dist/emit_deploy.d.ts +9 -0
  21. package/dist/emit_deploy.js +191 -0
  22. package/dist/emit_deploy.js.map +1 -0
  23. package/dist/emit_events.d.ts +14 -0
  24. package/dist/emit_events.js +305 -0
  25. package/dist/emit_events.js.map +1 -0
  26. package/dist/emit_extras.d.ts +12 -0
  27. package/dist/emit_extras.js +234 -0
  28. package/dist/emit_extras.js.map +1 -0
  29. package/dist/emit_full.d.ts +13 -0
  30. package/dist/emit_full.js +273 -0
  31. package/dist/emit_full.js.map +1 -0
  32. package/dist/emit_maintenance.d.ts +16 -0
  33. package/dist/emit_maintenance.js +442 -0
  34. package/dist/emit_maintenance.js.map +1 -0
  35. package/dist/emit_runtime.d.ts +13 -0
  36. package/dist/emit_runtime.js +691 -0
  37. package/dist/emit_runtime.js.map +1 -0
  38. package/dist/emit_sourcemap.d.ts +29 -0
  39. package/dist/emit_sourcemap.js +123 -0
  40. package/dist/emit_sourcemap.js.map +1 -0
  41. package/dist/emit_tests.d.ts +15 -0
  42. package/dist/emit_tests.js +185 -0
  43. package/dist/emit_tests.js.map +1 -0
  44. package/dist/emit_websocket.d.ts +6 -0
  45. package/dist/emit_websocket.js +223 -0
  46. package/dist/emit_websocket.js.map +1 -0
  47. package/dist/emitter.d.ts +25 -0
  48. package/dist/emitter.js +511 -0
  49. package/dist/emitter.js.map +1 -0
  50. package/dist/extension_manager.d.ts +38 -0
  51. package/dist/extension_manager.js +170 -0
  52. package/dist/extension_manager.js.map +1 -0
  53. package/dist/formatter.d.ts +34 -0
  54. package/dist/formatter.js +317 -0
  55. package/dist/formatter.js.map +1 -0
  56. package/dist/index.d.ts +42 -0
  57. package/dist/index.js +113 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/ir.d.ts +168 -0
  60. package/dist/ir.js +10 -0
  61. package/dist/ir.js.map +1 -0
  62. package/dist/lexer.d.ts +195 -0
  63. package/dist/lexer.js +619 -0
  64. package/dist/lexer.js.map +1 -0
  65. package/dist/lowering.d.ts +25 -0
  66. package/dist/lowering.js +500 -0
  67. package/dist/lowering.js.map +1 -0
  68. package/dist/module_loader.d.ts +25 -0
  69. package/dist/module_loader.js +126 -0
  70. package/dist/module_loader.js.map +1 -0
  71. package/dist/optimizer.d.ts +26 -0
  72. package/dist/optimizer.js +158 -0
  73. package/dist/optimizer.js.map +1 -0
  74. package/dist/parse_decls.d.ts +13 -0
  75. package/dist/parse_decls.js +442 -0
  76. package/dist/parse_decls.js.map +1 -0
  77. package/dist/parse_decls2.d.ts +13 -0
  78. package/dist/parse_decls2.js +295 -0
  79. package/dist/parse_decls2.js.map +1 -0
  80. package/dist/parse_expr.d.ts +7 -0
  81. package/dist/parse_expr.js +197 -0
  82. package/dist/parse_expr.js.map +1 -0
  83. package/dist/parse_types.d.ts +6 -0
  84. package/dist/parse_types.js +51 -0
  85. package/dist/parse_types.js.map +1 -0
  86. package/dist/parser.d.ts +10 -0
  87. package/dist/parser.js +62 -0
  88. package/dist/parser.js.map +1 -0
  89. package/dist/parser_base.d.ts +19 -0
  90. package/dist/parser_base.js +50 -0
  91. package/dist/parser_base.js.map +1 -0
  92. package/dist/parser_recovery.d.ts +26 -0
  93. package/dist/parser_recovery.js +140 -0
  94. package/dist/parser_recovery.js.map +1 -0
  95. package/dist/scaffold.d.ts +13 -0
  96. package/dist/scaffold.js +376 -0
  97. package/dist/scaffold.js.map +1 -0
  98. package/dist/solver.d.ts +26 -0
  99. package/dist/solver.js +281 -0
  100. package/dist/solver.js.map +1 -0
  101. package/dist/typechecker.d.ts +52 -0
  102. package/dist/typechecker.js +534 -0
  103. package/dist/typechecker.js.map +1 -0
  104. package/dist/types.d.ts +38 -0
  105. package/dist/types.js +85 -0
  106. package/dist/types.js.map +1 -0
  107. package/dist/verifier.d.ts +46 -0
  108. package/dist/verifier.js +307 -0
  109. package/dist/verifier.js.map +1 -0
  110. package/package.json +52 -0
  111. package/src/algorithm_catalog.ts +345 -0
  112. package/src/ast.ts +334 -0
  113. package/src/cli.ts +624 -0
  114. package/src/emit_batch.ts +140 -0
  115. package/src/emit_capability.ts +436 -0
  116. package/src/emit_composition.ts +196 -0
  117. package/src/emit_deploy.ts +190 -0
  118. package/src/emit_events.ts +307 -0
  119. package/src/emit_extras.ts +240 -0
  120. package/src/emit_full.ts +309 -0
  121. package/src/emit_maintenance.ts +459 -0
  122. package/src/emit_runtime.ts +731 -0
  123. package/src/emit_sourcemap.ts +140 -0
  124. package/src/emit_tests.ts +205 -0
  125. package/src/emit_websocket.ts +229 -0
  126. package/src/emitter.ts +566 -0
  127. package/src/extension_manager.ts +187 -0
  128. package/src/formatter.ts +297 -0
  129. package/src/index.ts +88 -0
  130. package/src/ir.ts +215 -0
  131. package/src/lexer.ts +630 -0
  132. package/src/lowering.ts +556 -0
  133. package/src/module_loader.ts +114 -0
  134. package/src/optimizer.ts +196 -0
  135. package/src/parse_decls.ts +409 -0
  136. package/src/parse_decls2.ts +244 -0
  137. package/src/parse_expr.ts +197 -0
  138. package/src/parse_types.ts +54 -0
  139. package/src/parser.ts +64 -0
  140. package/src/parser_base.ts +57 -0
  141. package/src/parser_recovery.ts +153 -0
  142. package/src/scaffold.ts +375 -0
  143. package/src/solver.ts +330 -0
  144. package/src/typechecker.ts +591 -0
  145. package/src/types.ts +122 -0
  146. package/src/verifier.ts +348 -0
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ /**
3
+ * BoneScript Full Emitter — Produces a complete, runnable project.
4
+ * Combines schema generation with runtime service code.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FullEmitter = void 0;
8
+ const emitter_1 = require("./emitter");
9
+ const emit_runtime_1 = require("./emit_runtime");
10
+ const emit_websocket_1 = require("./emit_websocket");
11
+ const emit_maintenance_1 = require("./emit_maintenance");
12
+ const emit_extras_1 = require("./emit_extras");
13
+ const emit_composition_1 = require("./emit_composition");
14
+ const emit_events_1 = require("./emit_events");
15
+ const emit_batch_1 = require("./emit_batch");
16
+ const emit_sourcemap_1 = require("./emit_sourcemap");
17
+ const emit_tests_1 = require("./emit_tests");
18
+ const emit_deploy_1 = require("./emit_deploy");
19
+ function toSnakeCase(s) {
20
+ return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
21
+ }
22
+ class FullEmitter {
23
+ constructor() {
24
+ this.schemaEmitter = new emitter_1.Emitter();
25
+ }
26
+ emit(system) {
27
+ const files = [];
28
+ // 1. Package files
29
+ files.push({ path: "package.json", content: (0, emit_runtime_1.emitPackageJson)(system), language: "json", source_module: "root" });
30
+ files.push({ path: "tsconfig.json", content: (0, emit_runtime_1.emitTsConfig)(), language: "json", source_module: "root" });
31
+ files.push({ path: ".env.example", content: this.emitEnvExample(system), language: "yaml", source_module: "root" });
32
+ // 2. Source: infrastructure
33
+ files.push({ path: "src/db.ts", content: (0, emit_runtime_1.emitDbClient)(system), language: "typescript", source_module: "infra" });
34
+ // Durable event bus replaces the old in-process stub
35
+ files.push({ path: "src/events.ts", content: (0, emit_events_1.emitDurableEventBus)(system), language: "typescript", source_module: "infra" });
36
+ // Outbox SQL schema
37
+ files.push({ path: "migrations/event_outbox.sql", content: (0, emit_events_1.emitOutboxSchema)(), language: "sql", source_module: "infra" });
38
+ files.push({ path: "src/auth.ts", content: (0, emit_runtime_1.emitAuthMiddleware)(system), language: "typescript", source_module: "infra" });
39
+ files.push({ path: "src/logger.ts", content: (0, emit_maintenance_1.emitLogger)(system), language: "typescript", source_module: "infra" });
40
+ files.push({ path: "src/metrics.ts", content: (0, emit_maintenance_1.emitMetrics)(), language: "typescript", source_module: "infra" });
41
+ files.push({ path: "src/health.ts", content: (0, emit_maintenance_1.emitHealthChecks)(system), language: "typescript", source_module: "infra" });
42
+ files.push({ path: "src/failure_rules.ts", content: (0, emit_maintenance_1.emitFailureRules)(system), language: "typescript", source_module: "infra" });
43
+ // 2a. WebSocket server (only if there are realtime channels)
44
+ const wsContent = (0, emit_websocket_1.emitWebSocketServer)(system);
45
+ if (wsContent) {
46
+ files.push({ path: "src/websocket.ts", content: wsContent, language: "typescript", source_module: "infra" });
47
+ }
48
+ // 2b. Flow saga runtime (only if there are flows)
49
+ const flowContent = (0, emit_extras_1.emitFlowRuntime)(system);
50
+ if (flowContent) {
51
+ files.push({ path: "src/flows.ts", content: flowContent, language: "typescript", source_module: "infra" });
52
+ }
53
+ // 2b2. Batch executor (only if there are batch capabilities)
54
+ const batchContent = (0, emit_batch_1.emitBatchExecutor)(system);
55
+ if (batchContent) {
56
+ files.push({ path: "src/batch.ts", content: batchContent, language: "typescript", source_module: "infra" });
57
+ }
58
+ // 2c. Migration diff utility (always emitted)
59
+ files.push({ path: "src/migration_diff.ts", content: (0, emit_maintenance_1.emitMigrationDiff)(), language: "typescript", source_module: "infra" });
60
+ // 2d. Algorithm implementations (only what's used)
61
+ const usedAlgorithms = (0, emit_composition_1.collectUsedAlgorithms)(system);
62
+ if (usedAlgorithms.size > 0) {
63
+ const algoContent = (0, emit_composition_1.emitAlgorithmsFile)(usedAlgorithms);
64
+ files.push({ path: "src/algorithms.ts", content: algoContent, language: "typescript", source_module: "algorithms" });
65
+ }
66
+ else {
67
+ files.push({
68
+ path: "src/algorithms.ts",
69
+ content: "// No algorithms used in this system.\nexport {};\n",
70
+ language: "typescript",
71
+ source_module: "algorithms",
72
+ });
73
+ }
74
+ // 2e. Extension points (escape hatches — preserved across recompilation)
75
+ if (system.extension_points && system.extension_points.length > 0) {
76
+ const extLines = [
77
+ "// Generated by BoneScript compiler.",
78
+ "// Extension points: implement the functions below.",
79
+ "// Code between sentinel comments is preserved on recompile.",
80
+ "// DO NOT remove the sentinel comments.",
81
+ "",
82
+ ];
83
+ for (const ep of system.extension_points) {
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(`}`);
95
+ extLines.push("");
96
+ }
97
+ files.push({
98
+ path: "src/extensions.ts",
99
+ content: extLines.join("\n"),
100
+ language: "typescript",
101
+ source_module: "extensions",
102
+ });
103
+ }
104
+ // 3. Source: state machines
105
+ for (const mod of system.modules) {
106
+ for (const sm of mod.state_machines) {
107
+ files.push({
108
+ path: `src/state_machines/${toSnakeCase(sm.entity)}.ts`,
109
+ content: (0, emit_runtime_1.emitStateMachineRuntime)(sm),
110
+ language: "typescript",
111
+ source_module: mod.id,
112
+ });
113
+ }
114
+ }
115
+ // 4. Source: route files (CRUD + capabilities)
116
+ for (const mod of system.modules) {
117
+ if (mod.kind === "api_service" && mod.models.length > 0) {
118
+ const content = (0, emit_runtime_1.emitEntityRouter)(mod, system);
119
+ if (content) {
120
+ files.push({
121
+ path: `src/routes/${toSnakeCase(mod.models[0].name)}.ts`,
122
+ content,
123
+ language: "typescript",
124
+ source_module: mod.id,
125
+ });
126
+ }
127
+ }
128
+ }
129
+ // 5. Source: main entry point
130
+ files.push({ path: "src/index.ts", content: (0, emit_runtime_1.emitIndex)(system), language: "typescript", source_module: "root" });
131
+ // 6. SQL migrations — run schema emitter ONCE, then match by model name
132
+ const schemas = [];
133
+ const allSchemaFiles = this.schemaEmitter.emit(system);
134
+ for (const mod of system.modules) {
135
+ if (mod.kind === "data_store" || mod.kind === "api_service") {
136
+ for (const model of mod.models) {
137
+ const schemaFile = allSchemaFiles.find(f => f.path.includes(toSnakeCase(model.name)) && f.language === "sql");
138
+ if (schemaFile) {
139
+ files.push({ ...schemaFile, path: `migrations/${schemaFile.path.replace("schema/", "")}` });
140
+ schemas.push(schemaFile.content);
141
+ }
142
+ }
143
+ }
144
+ }
145
+ // 7. Migration runner
146
+ files.push({ path: "src/migrate.ts", content: (0, emit_runtime_1.emitMigration)(system, schemas), language: "typescript", source_module: "infra" });
147
+ // 8. Docker compose for local dev
148
+ files.push({ path: "docker-compose.yaml", content: this.emitDockerCompose(system), language: "yaml", source_module: "infra" });
149
+ // 9. README
150
+ files.push({ path: "README.md", content: this.emitReadme(system), language: "yaml", source_module: "root" });
151
+ // 10. Source map + debug handler
152
+ files.push({ path: `${system.name}.bone.map`, content: (0, emit_sourcemap_1.emitSourceMapFile)(system, `${system.name}.bone`), language: "json", source_module: "root" });
153
+ files.push({ path: "src/debug.ts", content: (0, emit_sourcemap_1.emitDebugHandler)(system), language: "typescript", source_module: "infra" });
154
+ files.push({ path: "src/tests.ts", content: (0, emit_tests_1.emitTestSuite)(system), language: "typescript", source_module: "tests" });
155
+ // 11. Deploy targets
156
+ files.push({ path: "Dockerfile", content: (0, emit_deploy_1.emitDockerfile)(system), language: "yaml", source_module: "deploy" });
157
+ files.push({ path: ".dockerignore", content: (0, emit_deploy_1.emitDockerignore)(), language: "yaml", source_module: "deploy" });
158
+ files.push({ path: "k8s/deployment.yaml", content: (0, emit_deploy_1.emitK8sDeployment)(system), language: "yaml", source_module: "deploy" });
159
+ files.push({ path: ".github/workflows/ci.yaml", content: (0, emit_deploy_1.emitGithubActions)(system), language: "yaml", source_module: "deploy" });
160
+ return files;
161
+ }
162
+ emitEnvExample(system) {
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
193
+ `;
194
+ }
195
+ emitDockerCompose(system) {
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:
218
+ `;
219
+ }
220
+ emitReadme(system) {
221
+ const apiModules = system.modules.filter(m => m.kind === "api_service");
222
+ const routes = apiModules
223
+ .filter(m => m.models.length > 0)
224
+ .map(m => `- \`/${toSnakeCase(m.models[0].name)}s\` — ${m.name}`)
225
+ .join("\n");
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.
269
+ `;
270
+ }
271
+ }
272
+ exports.FullEmitter = FullEmitter;
273
+ //# sourceMappingURL=emit_full.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit_full.js","sourceRoot":"","sources":["../src/emit_full.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * BoneScript Maintenance Model Emitter
3
+ * Generates the runtime agent that implements spec/10_MAINTENANCE_MODEL.md.
4
+ *
5
+ * Includes:
6
+ * - Structured logger with fixed schema
7
+ * - Telemetry hooks (Prometheus-style metrics)
8
+ * - Failure rules derived from IR constraints/state machines
9
+ * - Health check endpoints with dependency status
10
+ */
11
+ import * as IR from "./ir";
12
+ export declare function emitLogger(system: IR.IRSystem): string;
13
+ export declare function emitMetrics(): string;
14
+ export declare function emitHealthChecks(system: IR.IRSystem): string;
15
+ export declare function emitFailureRules(system: IR.IRSystem): string;
16
+ export declare function emitMigrationDiff(): string;