@virune/compiler 1.1.0-rc.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 (300) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +2 -0
  3. package/dist/src/analysis/control-flow.d.ts +9 -0
  4. package/dist/src/analysis/control-flow.d.ts.map +1 -0
  5. package/dist/src/analysis/control-flow.js +47 -0
  6. package/dist/src/analysis/control-flow.js.map +1 -0
  7. package/dist/src/ast/nodes.d.ts +495 -0
  8. package/dist/src/ast/nodes.d.ts.map +1 -0
  9. package/dist/src/ast/nodes.js +2 -0
  10. package/dist/src/ast/nodes.js.map +1 -0
  11. package/dist/src/binder/symbols.d.ts +36 -0
  12. package/dist/src/binder/symbols.d.ts.map +1 -0
  13. package/dist/src/binder/symbols.js +30 -0
  14. package/dist/src/binder/symbols.js.map +1 -0
  15. package/dist/src/checker/builtin-members.d.ts +4 -0
  16. package/dist/src/checker/builtin-members.d.ts.map +1 -0
  17. package/dist/src/checker/builtin-members.js +175 -0
  18. package/dist/src/checker/builtin-members.js.map +1 -0
  19. package/dist/src/checker/checker.d.ts +148 -0
  20. package/dist/src/checker/checker.d.ts.map +1 -0
  21. package/dist/src/checker/checker.js +2985 -0
  22. package/dist/src/checker/checker.js.map +1 -0
  23. package/dist/src/checker/effect-registry.d.ts +14 -0
  24. package/dist/src/checker/effect-registry.d.ts.map +1 -0
  25. package/dist/src/checker/effect-registry.js +11 -0
  26. package/dist/src/checker/effect-registry.js.map +1 -0
  27. package/dist/src/checker/type-operations.d.ts +27 -0
  28. package/dist/src/checker/type-operations.d.ts.map +1 -0
  29. package/dist/src/checker/type-operations.js +268 -0
  30. package/dist/src/checker/type-operations.js.map +1 -0
  31. package/dist/src/codegen/emitter.d.ts +83 -0
  32. package/dist/src/codegen/emitter.d.ts.map +1 -0
  33. package/dist/src/codegen/emitter.js +1029 -0
  34. package/dist/src/codegen/emitter.js.map +1 -0
  35. package/dist/src/codegen/helpers.d.ts +7 -0
  36. package/dist/src/codegen/helpers.d.ts.map +1 -0
  37. package/dist/src/codegen/helpers.js +48 -0
  38. package/dist/src/codegen/helpers.js.map +1 -0
  39. package/dist/src/codegen/runtime-imports.d.ts +6 -0
  40. package/dist/src/codegen/runtime-imports.d.ts.map +1 -0
  41. package/dist/src/codegen/runtime-imports.js +45 -0
  42. package/dist/src/codegen/runtime-imports.js.map +1 -0
  43. package/dist/src/codegen/writer.d.ts +14 -0
  44. package/dist/src/codegen/writer.d.ts.map +1 -0
  45. package/dist/src/codegen/writer.js +56 -0
  46. package/dist/src/codegen/writer.js.map +1 -0
  47. package/dist/src/compiler.d.ts +24 -0
  48. package/dist/src/compiler.d.ts.map +1 -0
  49. package/dist/src/compiler.js +97 -0
  50. package/dist/src/compiler.js.map +1 -0
  51. package/dist/src/diagnostics/codes.d.ts +18 -0
  52. package/dist/src/diagnostics/codes.d.ts.map +1 -0
  53. package/dist/src/diagnostics/codes.js +43 -0
  54. package/dist/src/diagnostics/codes.js.map +1 -0
  55. package/dist/src/diagnostics/diagnostic.d.ts +41 -0
  56. package/dist/src/diagnostics/diagnostic.d.ts.map +1 -0
  57. package/dist/src/diagnostics/diagnostic.js +50 -0
  58. package/dist/src/diagnostics/diagnostic.js.map +1 -0
  59. package/dist/src/diagnostics/render.d.ts +44 -0
  60. package/dist/src/diagnostics/render.d.ts.map +1 -0
  61. package/dist/src/diagnostics/render.js +44 -0
  62. package/dist/src/diagnostics/render.js.map +1 -0
  63. package/dist/src/experimental-api.d.ts +19 -0
  64. package/dist/src/experimental-api.d.ts.map +1 -0
  65. package/dist/src/experimental-api.js +17 -0
  66. package/dist/src/experimental-api.js.map +1 -0
  67. package/dist/src/hir/lower.d.ts +6 -0
  68. package/dist/src/hir/lower.d.ts.map +1 -0
  69. package/dist/src/hir/lower.js +124 -0
  70. package/dist/src/hir/lower.js.map +1 -0
  71. package/dist/src/hir/nodes.d.ts +12 -0
  72. package/dist/src/hir/nodes.d.ts.map +1 -0
  73. package/dist/src/hir/nodes.js +2 -0
  74. package/dist/src/hir/nodes.js.map +1 -0
  75. package/dist/src/index.d.ts +2 -0
  76. package/dist/src/index.d.ts.map +1 -0
  77. package/dist/src/index.js +2 -0
  78. package/dist/src/index.js.map +1 -0
  79. package/dist/src/interop/checked-api.d.ts +21 -0
  80. package/dist/src/interop/checked-api.d.ts.map +1 -0
  81. package/dist/src/interop/checked-api.js +46 -0
  82. package/dist/src/interop/checked-api.js.map +1 -0
  83. package/dist/src/interop/decision.d.ts +24 -0
  84. package/dist/src/interop/decision.d.ts.map +1 -0
  85. package/dist/src/interop/decision.js +96 -0
  86. package/dist/src/interop/decision.js.map +1 -0
  87. package/dist/src/interop/frontend-component-emission.d.ts +17 -0
  88. package/dist/src/interop/frontend-component-emission.d.ts.map +1 -0
  89. package/dist/src/interop/frontend-component-emission.js +271 -0
  90. package/dist/src/interop/frontend-component-emission.js.map +1 -0
  91. package/dist/src/interop/jsx-view-validation.d.ts +20 -0
  92. package/dist/src/interop/jsx-view-validation.d.ts.map +1 -0
  93. package/dist/src/interop/jsx-view-validation.js +847 -0
  94. package/dist/src/interop/jsx-view-validation.js.map +1 -0
  95. package/dist/src/interop/operation-api.d.ts +32 -0
  96. package/dist/src/interop/operation-api.d.ts.map +1 -0
  97. package/dist/src/interop/operation-api.js +61 -0
  98. package/dist/src/interop/operation-api.js.map +1 -0
  99. package/dist/src/interop/operation.d.ts +136 -0
  100. package/dist/src/interop/operation.d.ts.map +1 -0
  101. package/dist/src/interop/operation.js +575 -0
  102. package/dist/src/interop/operation.js.map +1 -0
  103. package/dist/src/interop/repetition-host-locator.d.ts +25 -0
  104. package/dist/src/interop/repetition-host-locator.d.ts.map +1 -0
  105. package/dist/src/interop/repetition-host-locator.js +61 -0
  106. package/dist/src/interop/repetition-host-locator.js.map +1 -0
  107. package/dist/src/interop/repetition-host-usage-validation.d.ts +11 -0
  108. package/dist/src/interop/repetition-host-usage-validation.d.ts.map +1 -0
  109. package/dist/src/interop/repetition-host-usage-validation.js +89 -0
  110. package/dist/src/interop/repetition-host-usage-validation.js.map +1 -0
  111. package/dist/src/interop/types.d.ts +365 -0
  112. package/dist/src/interop/types.d.ts.map +1 -0
  113. package/dist/src/interop/types.js +2 -0
  114. package/dist/src/interop/types.js.map +1 -0
  115. package/dist/src/mir/lower.d.ts +4 -0
  116. package/dist/src/mir/lower.d.ts.map +1 -0
  117. package/dist/src/mir/lower.js +131 -0
  118. package/dist/src/mir/lower.js.map +1 -0
  119. package/dist/src/mir/nodes.d.ts +36 -0
  120. package/dist/src/mir/nodes.d.ts.map +1 -0
  121. package/dist/src/mir/nodes.js +2 -0
  122. package/dist/src/mir/nodes.js.map +1 -0
  123. package/dist/src/project/incremental.d.ts +9 -0
  124. package/dist/src/project/incremental.d.ts.map +1 -0
  125. package/dist/src/project/incremental.js +15 -0
  126. package/dist/src/project/incremental.js.map +1 -0
  127. package/dist/src/project/project.d.ts +98 -0
  128. package/dist/src/project/project.d.ts.map +1 -0
  129. package/dist/src/project/project.js +884 -0
  130. package/dist/src/project/project.js.map +1 -0
  131. package/dist/src/public-api.d.ts +45 -0
  132. package/dist/src/public-api.d.ts.map +1 -0
  133. package/dist/src/public-api.js +37 -0
  134. package/dist/src/public-api.js.map +1 -0
  135. package/dist/src/reference/evaluator.d.ts +13 -0
  136. package/dist/src/reference/evaluator.d.ts.map +1 -0
  137. package/dist/src/reference/evaluator.js +304 -0
  138. package/dist/src/reference/evaluator.js.map +1 -0
  139. package/dist/src/selfhost/bootstrap-artifact-normalizer.d.ts +65 -0
  140. package/dist/src/selfhost/bootstrap-artifact-normalizer.d.ts.map +1 -0
  141. package/dist/src/selfhost/bootstrap-artifact-normalizer.js +226 -0
  142. package/dist/src/selfhost/bootstrap-artifact-normalizer.js.map +1 -0
  143. package/dist/src/selfhost/bootstrap-artifact-snapshot.d.ts +23 -0
  144. package/dist/src/selfhost/bootstrap-artifact-snapshot.d.ts.map +1 -0
  145. package/dist/src/selfhost/bootstrap-artifact-snapshot.js +122 -0
  146. package/dist/src/selfhost/bootstrap-artifact-snapshot.js.map +1 -0
  147. package/dist/src/selfhost/bootstrap-compiler-selection.d.ts +36 -0
  148. package/dist/src/selfhost/bootstrap-compiler-selection.d.ts.map +1 -0
  149. package/dist/src/selfhost/bootstrap-compiler-selection.js +52 -0
  150. package/dist/src/selfhost/bootstrap-compiler-selection.js.map +1 -0
  151. package/dist/src/selfhost/bootstrap-execution-probe.d.ts +42 -0
  152. package/dist/src/selfhost/bootstrap-execution-probe.d.ts.map +1 -0
  153. package/dist/src/selfhost/bootstrap-execution-probe.js +115 -0
  154. package/dist/src/selfhost/bootstrap-execution-probe.js.map +1 -0
  155. package/dist/src/selfhost/bootstrap-rollback-decision.d.ts +40 -0
  156. package/dist/src/selfhost/bootstrap-rollback-decision.d.ts.map +1 -0
  157. package/dist/src/selfhost/bootstrap-rollback-decision.js +144 -0
  158. package/dist/src/selfhost/bootstrap-rollback-decision.js.map +1 -0
  159. package/dist/src/selfhost/bootstrap-shadow-history.d.ts +49 -0
  160. package/dist/src/selfhost/bootstrap-shadow-history.d.ts.map +1 -0
  161. package/dist/src/selfhost/bootstrap-shadow-history.js +348 -0
  162. package/dist/src/selfhost/bootstrap-shadow-history.js.map +1 -0
  163. package/dist/src/selfhost/bootstrap-shadow-report.d.ts +43 -0
  164. package/dist/src/selfhost/bootstrap-shadow-report.d.ts.map +1 -0
  165. package/dist/src/selfhost/bootstrap-shadow-report.js +94 -0
  166. package/dist/src/selfhost/bootstrap-shadow-report.js.map +1 -0
  167. package/dist/src/selfhost/bootstrap-stage-executor.d.ts +53 -0
  168. package/dist/src/selfhost/bootstrap-stage-executor.d.ts.map +1 -0
  169. package/dist/src/selfhost/bootstrap-stage-executor.js +159 -0
  170. package/dist/src/selfhost/bootstrap-stage-executor.js.map +1 -0
  171. package/dist/src/selfhost/bootstrap-stage-loader.d.ts +14 -0
  172. package/dist/src/selfhost/bootstrap-stage-loader.d.ts.map +1 -0
  173. package/dist/src/selfhost/bootstrap-stage-loader.js +112 -0
  174. package/dist/src/selfhost/bootstrap-stage-loader.js.map +1 -0
  175. package/dist/src/selfhost/bootstrap-stage-pipeline.d.ts +8 -0
  176. package/dist/src/selfhost/bootstrap-stage-pipeline.d.ts.map +1 -0
  177. package/dist/src/selfhost/bootstrap-stage-pipeline.js +85 -0
  178. package/dist/src/selfhost/bootstrap-stage-pipeline.js.map +1 -0
  179. package/dist/src/selfhost/bootstrap-stage-runner.d.ts +47 -0
  180. package/dist/src/selfhost/bootstrap-stage-runner.d.ts.map +1 -0
  181. package/dist/src/selfhost/bootstrap-stage-runner.js +106 -0
  182. package/dist/src/selfhost/bootstrap-stage-runner.js.map +1 -0
  183. package/dist/src/selfhost/clean-bootstrap-evidence.d.ts +83 -0
  184. package/dist/src/selfhost/clean-bootstrap-evidence.d.ts.map +1 -0
  185. package/dist/src/selfhost/clean-bootstrap-evidence.js +233 -0
  186. package/dist/src/selfhost/clean-bootstrap-evidence.js.map +1 -0
  187. package/dist/src/selfhost/compiler-facade.d.ts +33 -0
  188. package/dist/src/selfhost/compiler-facade.d.ts.map +1 -0
  189. package/dist/src/selfhost/compiler-facade.js +65 -0
  190. package/dist/src/selfhost/compiler-facade.js.map +1 -0
  191. package/dist/src/selfhost/contract.d.ts +151 -0
  192. package/dist/src/selfhost/contract.d.ts.map +1 -0
  193. package/dist/src/selfhost/contract.js +335 -0
  194. package/dist/src/selfhost/contract.js.map +1 -0
  195. package/dist/src/selfhost/differential-artifacts.d.ts +8 -0
  196. package/dist/src/selfhost/differential-artifacts.d.ts.map +1 -0
  197. package/dist/src/selfhost/differential-artifacts.js +50 -0
  198. package/dist/src/selfhost/differential-artifacts.js.map +1 -0
  199. package/dist/src/selfhost/differential-harness.d.ts +91 -0
  200. package/dist/src/selfhost/differential-harness.d.ts.map +1 -0
  201. package/dist/src/selfhost/differential-harness.js +246 -0
  202. package/dist/src/selfhost/differential-harness.js.map +1 -0
  203. package/dist/src/selfhost/full-language-inventory-runner.d.ts +49 -0
  204. package/dist/src/selfhost/full-language-inventory-runner.d.ts.map +1 -0
  205. package/dist/src/selfhost/full-language-inventory-runner.js +225 -0
  206. package/dist/src/selfhost/full-language-inventory-runner.js.map +1 -0
  207. package/dist/src/selfhost/full-language-inventory.d.ts +42 -0
  208. package/dist/src/selfhost/full-language-inventory.d.ts.map +1 -0
  209. package/dist/src/selfhost/full-language-inventory.js +163 -0
  210. package/dist/src/selfhost/full-language-inventory.js.map +1 -0
  211. package/dist/src/selfhost/interop-resolution-witness.d.ts +35 -0
  212. package/dist/src/selfhost/interop-resolution-witness.d.ts.map +1 -0
  213. package/dist/src/selfhost/interop-resolution-witness.js +186 -0
  214. package/dist/src/selfhost/interop-resolution-witness.js.map +1 -0
  215. package/dist/src/selfhost/kernel-model-host-adapter.d.ts +28 -0
  216. package/dist/src/selfhost/kernel-model-host-adapter.d.ts.map +1 -0
  217. package/dist/src/selfhost/kernel-model-host-adapter.js +36 -0
  218. package/dist/src/selfhost/kernel-model-host-adapter.js.map +1 -0
  219. package/dist/src/selfhost/legacy-adapter.d.ts +8 -0
  220. package/dist/src/selfhost/legacy-adapter.d.ts.map +1 -0
  221. package/dist/src/selfhost/legacy-adapter.js +186 -0
  222. package/dist/src/selfhost/legacy-adapter.js.map +1 -0
  223. package/dist/src/selfhost/module-graph.d.ts +57 -0
  224. package/dist/src/selfhost/module-graph.d.ts.map +1 -0
  225. package/dist/src/selfhost/module-graph.js +267 -0
  226. package/dist/src/selfhost/module-graph.js.map +1 -0
  227. package/dist/src/selfhost/mvp-adapter.d.ts +19 -0
  228. package/dist/src/selfhost/mvp-adapter.d.ts.map +1 -0
  229. package/dist/src/selfhost/mvp-adapter.js +186 -0
  230. package/dist/src/selfhost/mvp-adapter.js.map +1 -0
  231. package/dist/src/selfhost/node-executor.d.ts +6 -0
  232. package/dist/src/selfhost/node-executor.d.ts.map +1 -0
  233. package/dist/src/selfhost/node-executor.js +138 -0
  234. package/dist/src/selfhost/node-executor.js.map +1 -0
  235. package/dist/src/selfhost/project-compiler-adapter.d.ts +77 -0
  236. package/dist/src/selfhost/project-compiler-adapter.d.ts.map +1 -0
  237. package/dist/src/selfhost/project-compiler-adapter.js +358 -0
  238. package/dist/src/selfhost/project-compiler-adapter.js.map +1 -0
  239. package/dist/src/selfhost/project-differential-adapter.d.ts +15 -0
  240. package/dist/src/selfhost/project-differential-adapter.d.ts.map +1 -0
  241. package/dist/src/selfhost/project-differential-adapter.js +65 -0
  242. package/dist/src/selfhost/project-differential-adapter.js.map +1 -0
  243. package/dist/src/selfhost/promotion-evidence.d.ts +62 -0
  244. package/dist/src/selfhost/promotion-evidence.d.ts.map +1 -0
  245. package/dist/src/selfhost/promotion-evidence.js +332 -0
  246. package/dist/src/selfhost/promotion-evidence.js.map +1 -0
  247. package/dist/src/selfhost/promotion-policy-replay-v2.d.ts +54 -0
  248. package/dist/src/selfhost/promotion-policy-replay-v2.d.ts.map +1 -0
  249. package/dist/src/selfhost/promotion-policy-replay-v2.js +343 -0
  250. package/dist/src/selfhost/promotion-policy-replay-v2.js.map +1 -0
  251. package/dist/src/selfhost/promotion-shadow-history-v2.d.ts +55 -0
  252. package/dist/src/selfhost/promotion-shadow-history-v2.d.ts.map +1 -0
  253. package/dist/src/selfhost/promotion-shadow-history-v2.js +227 -0
  254. package/dist/src/selfhost/promotion-shadow-history-v2.js.map +1 -0
  255. package/dist/src/selfhost/promotion-subject.d.ts +34 -0
  256. package/dist/src/selfhost/promotion-subject.d.ts.map +1 -0
  257. package/dist/src/selfhost/promotion-subject.js +141 -0
  258. package/dist/src/selfhost/promotion-subject.js.map +1 -0
  259. package/dist/src/selfhost/source-manifest.d.ts +31 -0
  260. package/dist/src/selfhost/source-manifest.d.ts.map +1 -0
  261. package/dist/src/selfhost/source-manifest.js +194 -0
  262. package/dist/src/selfhost/source-manifest.js.map +1 -0
  263. package/dist/src/selfhost/stage-compiler-facade.d.ts +25 -0
  264. package/dist/src/selfhost/stage-compiler-facade.d.ts.map +1 -0
  265. package/dist/src/selfhost/stage-compiler-facade.js +100 -0
  266. package/dist/src/selfhost/stage-compiler-facade.js.map +1 -0
  267. package/dist/src/semantic-evidence/snapshot.d.ts +114 -0
  268. package/dist/src/semantic-evidence/snapshot.d.ts.map +1 -0
  269. package/dist/src/semantic-evidence/snapshot.js +336 -0
  270. package/dist/src/semantic-evidence/snapshot.js.map +1 -0
  271. package/dist/src/source.d.ts +25 -0
  272. package/dist/src/source.d.ts.map +1 -0
  273. package/dist/src/source.js +10 -0
  274. package/dist/src/source.js.map +1 -0
  275. package/dist/src/syntax/cst-to-ast.d.ts +108 -0
  276. package/dist/src/syntax/cst-to-ast.d.ts.map +1 -0
  277. package/dist/src/syntax/cst-to-ast.js +383 -0
  278. package/dist/src/syntax/cst-to-ast.js.map +1 -0
  279. package/dist/src/syntax/documentation.d.ts +11 -0
  280. package/dist/src/syntax/documentation.d.ts.map +1 -0
  281. package/dist/src/syntax/documentation.js +261 -0
  282. package/dist/src/syntax/documentation.js.map +1 -0
  283. package/dist/src/syntax/parser.d.ts +114 -0
  284. package/dist/src/syntax/parser.d.ts.map +1 -0
  285. package/dist/src/syntax/parser.js +970 -0
  286. package/dist/src/syntax/parser.js.map +1 -0
  287. package/dist/src/syntax/syntax-metadata.d.ts +8 -0
  288. package/dist/src/syntax/syntax-metadata.d.ts.map +1 -0
  289. package/dist/src/syntax/syntax-metadata.js +14 -0
  290. package/dist/src/syntax/syntax-metadata.js.map +1 -0
  291. package/dist/src/syntax/tokens.d.ts +96 -0
  292. package/dist/src/syntax/tokens.d.ts.map +1 -0
  293. package/dist/src/syntax/tokens.js +260 -0
  294. package/dist/src/syntax/tokens.js.map +1 -0
  295. package/dist/src/types/types.d.ts +97 -0
  296. package/dist/src/types/types.d.ts.map +1 -0
  297. package/dist/src/types/types.js +105 -0
  298. package/dist/src/types/types.js.map +1 -0
  299. package/package.json +47 -0
  300. package/schema/diagnostics-v1.schema.json +75 -0
@@ -0,0 +1,335 @@
1
+ export const KERNEL_CONTRACT_VERSION = '1';
2
+ export const KERNEL_LANGUAGE_VERSION = '1.0';
3
+ export const KERNEL_INTEROP_MANIFEST_VERSION = '1';
4
+ export class KernelContractError extends Error {
5
+ path;
6
+ name = 'KernelContractError';
7
+ constructor(path, message) {
8
+ super(`${path}: ${message}`);
9
+ this.path = path;
10
+ }
11
+ }
12
+ export function normalizeKernelPath(value, path = '$') {
13
+ if (value.length === 0)
14
+ throw new KernelContractError(path, 'path must not be empty');
15
+ if (value.includes('\0'))
16
+ throw new KernelContractError(path, 'path must not contain NUL');
17
+ const slashPath = value.replaceAll('\\', '/');
18
+ if (slashPath.startsWith('/') || /^[A-Za-z]:\//u.test(slashPath))
19
+ throw new KernelContractError(path, 'path must be project-relative');
20
+ const segments = [];
21
+ for (const segment of slashPath.split('/')) {
22
+ if (segment === '' || segment === '.')
23
+ continue;
24
+ if (segment === '..') {
25
+ if (segments.length === 0)
26
+ throw new KernelContractError(path, 'path must not escape the project root');
27
+ segments.pop();
28
+ continue;
29
+ }
30
+ segments.push(segment);
31
+ }
32
+ if (segments.length === 0)
33
+ throw new KernelContractError(path, 'path must identify a file');
34
+ return segments.join('/');
35
+ }
36
+ export function validateKernelInput(value) {
37
+ assertJsonData(value, '$');
38
+ const input = record(value, '$');
39
+ exactKeys(input, ['contractVersion', 'languageVersion', 'platform', 'entryPath', 'sources', 'interopManifest', 'emit'], '$');
40
+ literal(input.contractVersion, KERNEL_CONTRACT_VERSION, '$.contractVersion');
41
+ literal(input.languageVersion, KERNEL_LANGUAGE_VERSION, '$.languageVersion');
42
+ const platform = oneOf(input.platform, ['node', 'browser', 'neutral'], '$.platform');
43
+ const entryPath = normalizeKernelPath(string(input.entryPath, '$.entryPath'), '$.entryPath');
44
+ const sources = array(input.sources, '$.sources').map((item, index) => validateSource(item, `$.sources[${index}]`));
45
+ if (sources.length === 0)
46
+ throw new KernelContractError('$.sources', 'at least one source is required');
47
+ const paths = new Set();
48
+ for (const source of sources) {
49
+ if (paths.has(source.path))
50
+ throw new KernelContractError('$.sources', `duplicate source path ${source.path}`);
51
+ paths.add(source.path);
52
+ }
53
+ if (!paths.has(entryPath))
54
+ throw new KernelContractError('$.entryPath', 'entryPath must match one source path');
55
+ const interopManifest = validateInteropManifest(input.interopManifest, '$.interopManifest', platform);
56
+ const emit = validateEmit(input.emit, '$.emit');
57
+ return {
58
+ contractVersion: KERNEL_CONTRACT_VERSION,
59
+ languageVersion: KERNEL_LANGUAGE_VERSION,
60
+ platform,
61
+ entryPath,
62
+ sources: [...sources].sort((left, right) => left.path.localeCompare(right.path)),
63
+ interopManifest,
64
+ emit,
65
+ };
66
+ }
67
+ export function validateKernelOutput(value) {
68
+ assertJsonData(value, '$');
69
+ const output = record(value, '$');
70
+ exactKeys(output, ['contractVersion', 'languageVersion', 'platform', 'entryPath', 'accepted', 'diagnostics', 'emittedModules', 'dependencies', 'exportedSymbols', 'stats'], '$');
71
+ literal(output.contractVersion, KERNEL_CONTRACT_VERSION, '$.contractVersion');
72
+ literal(output.languageVersion, KERNEL_LANGUAGE_VERSION, '$.languageVersion');
73
+ oneOf(output.platform, ['node', 'browser', 'neutral'], '$.platform');
74
+ normalizeKernelPath(string(output.entryPath, '$.entryPath'), '$.entryPath');
75
+ boolean(output.accepted, '$.accepted');
76
+ array(output.diagnostics, '$.diagnostics');
77
+ array(output.emittedModules, '$.emittedModules');
78
+ array(output.dependencies, '$.dependencies');
79
+ array(output.exportedSymbols, '$.exportedSymbols');
80
+ validateStats(output.stats, '$.stats');
81
+ return cloneJson(output);
82
+ }
83
+ export function roundTripKernelInput(value) {
84
+ return validateKernelInput(JSON.parse(JSON.stringify(value)));
85
+ }
86
+ export function roundTripKernelOutput(value) {
87
+ return validateKernelOutput(JSON.parse(JSON.stringify(value)));
88
+ }
89
+ function validateSource(value, path) {
90
+ const source = record(value, path);
91
+ exactKeys(source, ['path', 'text'], path);
92
+ return {
93
+ path: normalizeKernelPath(string(source.path, `${path}.path`), `${path}.path`),
94
+ text: string(source.text, `${path}.text`),
95
+ };
96
+ }
97
+ function validateInteropManifest(value, path, platform) {
98
+ const manifest = record(value, path);
99
+ exactKeys(manifest, ['version', 'modules'], path);
100
+ validateInteropManifestVersion(manifest.version, `${path}.version`);
101
+ const modules = array(manifest.modules, `${path}.modules`).map((item, index) => {
102
+ const modulePath = `${path}.modules[${index}]`;
103
+ const module = record(item, modulePath);
104
+ exactKeys(module, ['specifier', 'metadata'], modulePath);
105
+ const specifier = nonEmptyString(module.specifier, `${modulePath}.specifier`);
106
+ return {
107
+ specifier,
108
+ metadata: validateInteropMetadata(module.metadata, `${modulePath}.metadata`, specifier, platform),
109
+ };
110
+ });
111
+ const specifiers = new Set();
112
+ for (const module of modules) {
113
+ if (specifiers.has(module.specifier))
114
+ throw new KernelContractError(`${path}.modules`, `duplicate specifier ${module.specifier}`);
115
+ specifiers.add(module.specifier);
116
+ }
117
+ return { version: KERNEL_INTEROP_MANIFEST_VERSION, modules: [...modules].sort((left, right) => left.specifier.localeCompare(right.specifier)) };
118
+ }
119
+ function validateInteropMetadata(value, path, specifier, platform) {
120
+ const metadata = record(value, path);
121
+ const output = { ...canonicalJsonObject(metadata) };
122
+ if (Object.hasOwn(metadata, 'imports'))
123
+ output.imports = validateInteropImports(metadata.imports, `${path}.imports`);
124
+ if (Object.hasOwn(metadata, 'resolutionWitness')) {
125
+ output.resolutionWitness = validateResolutionWitness(metadata.resolutionWitness, `${path}.resolutionWitness`, specifier, platform);
126
+ }
127
+ return output;
128
+ }
129
+ function validateInteropImports(value, path) {
130
+ const imports = array(value, path).map((item, index) => {
131
+ const importPath = `${path}[${index}]`;
132
+ const entry = record(item, importPath);
133
+ allowedKeys(entry, ['kind', 'importedName'], importPath);
134
+ requiredKeys(entry, ['kind'], importPath);
135
+ const kind = oneOf(entry.kind, ['named', 'default', 'namespace', 'type-only', 'side-effect'], `${importPath}.kind`);
136
+ const hasImportedName = Object.hasOwn(entry, 'importedName');
137
+ if (kind === 'named' || kind === 'type-only') {
138
+ if (!hasImportedName)
139
+ throw new KernelContractError(`${importPath}.importedName`, `importedName is required for ${kind} imports`);
140
+ return { kind, importedName: nonEmptyString(entry.importedName, `${importPath}.importedName`) };
141
+ }
142
+ if (hasImportedName)
143
+ throw new KernelContractError(`${importPath}.importedName`, `importedName is not allowed for ${kind} imports`);
144
+ return { kind };
145
+ });
146
+ const canonical = [...imports].sort((left, right) => {
147
+ const kind = left.kind.localeCompare(right.kind);
148
+ if (kind !== 0)
149
+ return kind;
150
+ return (left.importedName ?? '').localeCompare(right.importedName ?? '');
151
+ });
152
+ const seen = new Set();
153
+ for (const entry of canonical) {
154
+ const key = `${entry.kind}\0${entry.importedName ?? ''}`;
155
+ if (seen.has(key))
156
+ throw new KernelContractError(path, `duplicate import ${entry.kind}${entry.importedName === undefined ? '' : `:${entry.importedName}`}`);
157
+ seen.add(key);
158
+ }
159
+ return canonical;
160
+ }
161
+ function validateResolutionWitness(value, path, specifier, inputPlatform) {
162
+ const witness = record(value, path);
163
+ const allowed = [
164
+ 'moduleSpecifier', 'packageName', 'packageVersion', 'declarationPackageName', 'declarationPackageVersion',
165
+ 'declarationEntry', 'runtimeEntry', 'runtimeFormat', 'conditions', 'platform', 'providerVersion',
166
+ 'declarationGraphHash', 'packageJsonHash', 'declarationPackageJsonHash',
167
+ ];
168
+ allowedKeys(witness, allowed, path);
169
+ requiredKeys(witness, ['moduleSpecifier', 'conditions', 'platform', 'providerVersion'], path);
170
+ const moduleSpecifier = nonEmptyString(witness.moduleSpecifier, `${path}.moduleSpecifier`);
171
+ if (moduleSpecifier !== specifier)
172
+ throw new KernelContractError(`${path}.moduleSpecifier`, `must match module specifier ${JSON.stringify(specifier)}`);
173
+ const platform = oneOf(witness.platform, ['node', 'browser', 'neutral'], `${path}.platform`);
174
+ if (platform !== inputPlatform)
175
+ throw new KernelContractError(`${path}.platform`, `must match input platform ${JSON.stringify(inputPlatform)}`);
176
+ const conditions = array(witness.conditions, `${path}.conditions`).map((item, index) => nonEmptyString(item, `${path}.conditions[${index}]`)).sort();
177
+ const conditionSet = new Set();
178
+ for (const condition of conditions) {
179
+ if (conditionSet.has(condition))
180
+ throw new KernelContractError(`${path}.conditions`, `duplicate condition ${condition}`);
181
+ conditionSet.add(condition);
182
+ }
183
+ const output = {
184
+ moduleSpecifier,
185
+ conditions,
186
+ platform,
187
+ providerVersion: nonEmptyString(witness.providerVersion, `${path}.providerVersion`),
188
+ };
189
+ for (const key of ['packageName', 'packageVersion', 'declarationPackageName', 'declarationPackageVersion', 'declarationEntry', 'runtimeEntry', 'declarationGraphHash', 'packageJsonHash', 'declarationPackageJsonHash']) {
190
+ if (Object.hasOwn(witness, key))
191
+ output[key] = nonEmptyString(witness[key], `${path}.${key}`);
192
+ }
193
+ if (Object.hasOwn(witness, 'runtimeFormat')) {
194
+ output.runtimeFormat = oneOf(witness.runtimeFormat, ['esm', 'commonjs', 'builtin', 'bundler', 'unknown'], `${path}.runtimeFormat`);
195
+ }
196
+ return canonicalJsonObject(output);
197
+ }
198
+ function validateInteropManifestVersion(value, path) {
199
+ if (value !== KERNEL_INTEROP_MANIFEST_VERSION) {
200
+ throw new KernelContractError(path, `unsupported Interop Manifest version ${describeJsonValue(value)}; expected ${JSON.stringify(KERNEL_INTEROP_MANIFEST_VERSION)}`);
201
+ }
202
+ return KERNEL_INTEROP_MANIFEST_VERSION;
203
+ }
204
+ function describeJsonValue(value) {
205
+ const encoded = JSON.stringify(value);
206
+ return encoded === undefined ? typeof value : encoded;
207
+ }
208
+ function validateEmit(value, path) {
209
+ const emit = record(value, path);
210
+ exactKeys(emit, ['target', 'sourceMap', 'sourcesContent'], path);
211
+ literal(emit.target, 'es2022', `${path}.target`);
212
+ return {
213
+ target: 'es2022',
214
+ sourceMap: boolean(emit.sourceMap, `${path}.sourceMap`),
215
+ sourcesContent: boolean(emit.sourcesContent, `${path}.sourcesContent`),
216
+ };
217
+ }
218
+ function validateStats(value, path) {
219
+ const stats = record(value, path);
220
+ const keys = ['parsedModules', 'reusedParsedModules', 'checkedModules', 'reusedCheckedModules', 'emittedModules', 'reusedEmittedModules', 'invalidatedModules'];
221
+ exactKeys(stats, keys, path);
222
+ return {
223
+ parsedModules: nonNegativeInteger(stats.parsedModules, `${path}.parsedModules`),
224
+ reusedParsedModules: nonNegativeInteger(stats.reusedParsedModules, `${path}.reusedParsedModules`),
225
+ checkedModules: nonNegativeInteger(stats.checkedModules, `${path}.checkedModules`),
226
+ reusedCheckedModules: nonNegativeInteger(stats.reusedCheckedModules, `${path}.reusedCheckedModules`),
227
+ emittedModules: nonNegativeInteger(stats.emittedModules, `${path}.emittedModules`),
228
+ reusedEmittedModules: nonNegativeInteger(stats.reusedEmittedModules, `${path}.reusedEmittedModules`),
229
+ invalidatedModules: nonNegativeInteger(stats.invalidatedModules, `${path}.invalidatedModules`),
230
+ };
231
+ }
232
+ function assertJsonData(value, path, seen = new WeakSet()) {
233
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
234
+ return;
235
+ if (typeof value === 'number') {
236
+ if (!Number.isFinite(value))
237
+ throw new KernelContractError(path, 'number must be finite');
238
+ return;
239
+ }
240
+ if (typeof value !== 'object')
241
+ throw new KernelContractError(path, `value must be JSON data, received ${typeof value}`);
242
+ if (seen.has(value))
243
+ throw new KernelContractError(path, 'cyclic values are not allowed');
244
+ seen.add(value);
245
+ if (Array.isArray(value)) {
246
+ for (let index = 0; index < value.length; index++)
247
+ assertJsonData(value[index], `${path}[${index}]`, seen);
248
+ seen.delete(value);
249
+ return;
250
+ }
251
+ const prototype = Object.getPrototypeOf(value);
252
+ if (prototype !== Object.prototype && prototype !== null)
253
+ throw new KernelContractError(path, 'class instances, Error, Map, Set, and host objects are not allowed');
254
+ for (const [key, child] of Object.entries(value))
255
+ assertJsonData(child, `${path}.${key}`, seen);
256
+ seen.delete(value);
257
+ }
258
+ function canonicalJsonObject(value) {
259
+ const output = {};
260
+ for (const key of Object.keys(value).sort()) {
261
+ const child = value[key];
262
+ if (Array.isArray(child))
263
+ output[key] = child.map(item => canonicalJsonValue(item));
264
+ else
265
+ output[key] = canonicalJsonValue(child);
266
+ }
267
+ return output;
268
+ }
269
+ function canonicalJsonValue(value) {
270
+ if (value === null || typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number')
271
+ return value;
272
+ if (Array.isArray(value))
273
+ return value.map(item => canonicalJsonValue(item));
274
+ return canonicalJsonObject(record(value, '$json'));
275
+ }
276
+ function cloneJson(value) {
277
+ return JSON.parse(JSON.stringify(value));
278
+ }
279
+ function record(value, path) {
280
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
281
+ throw new KernelContractError(path, 'expected an object');
282
+ return value;
283
+ }
284
+ function array(value, path) {
285
+ if (!Array.isArray(value))
286
+ throw new KernelContractError(path, 'expected an array');
287
+ return value;
288
+ }
289
+ function string(value, path) {
290
+ if (typeof value !== 'string')
291
+ throw new KernelContractError(path, 'expected a string');
292
+ return value;
293
+ }
294
+ function nonEmptyString(value, path) {
295
+ const result = string(value, path);
296
+ if (result.length === 0)
297
+ throw new KernelContractError(path, 'string must not be empty');
298
+ return result;
299
+ }
300
+ function boolean(value, path) {
301
+ if (typeof value !== 'boolean')
302
+ throw new KernelContractError(path, 'expected a boolean');
303
+ return value;
304
+ }
305
+ function nonNegativeInteger(value, path) {
306
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < 0)
307
+ throw new KernelContractError(path, 'expected a non-negative integer');
308
+ return value;
309
+ }
310
+ function literal(value, expected, path) {
311
+ if (value !== expected)
312
+ throw new KernelContractError(path, `expected ${JSON.stringify(expected)}`);
313
+ return expected;
314
+ }
315
+ function oneOf(value, allowed, path) {
316
+ if (typeof value !== 'string' || !allowed.includes(value))
317
+ throw new KernelContractError(path, `expected one of ${allowed.join(', ')}`);
318
+ return value;
319
+ }
320
+ function allowedKeys(value, allowed, path) {
321
+ const allowedSet = new Set(allowed);
322
+ for (const key of Object.keys(value))
323
+ if (!allowedSet.has(key))
324
+ throw new KernelContractError(`${path}.${key}`, 'unknown property');
325
+ }
326
+ function requiredKeys(value, required, path) {
327
+ for (const key of required)
328
+ if (!Object.hasOwn(value, key))
329
+ throw new KernelContractError(`${path}.${key}`, 'missing property');
330
+ }
331
+ function exactKeys(value, allowed, path) {
332
+ allowedKeys(value, allowed, path);
333
+ requiredKeys(value, allowed, path);
334
+ }
335
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../src/selfhost/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { DifferentialCaseReportV1, DifferentialCorpusReportV1 } from './differential-harness.js';
2
+ export declare function writeDifferentialArtifacts(report: DifferentialCaseReportV1 | DifferentialCorpusReportV1, outputDirectory: string): Promise<{
3
+ readonly jsonPath: string;
4
+ readonly summaryPath: string;
5
+ }>;
6
+ export declare function formatDifferentialSummary(report: DifferentialCaseReportV1): string;
7
+ export declare function formatCorpusSummary(report: DifferentialCorpusReportV1): string;
8
+ //# sourceMappingURL=differential-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"differential-artifacts.d.ts","sourceRoot":"","sources":["../../../src/selfhost/differential-artifacts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEtG,wBAAsB,0BAA0B,CAC/C,MAAM,EAAE,wBAAwB,GAAG,0BAA0B,EAC7D,eAAe,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAOtE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM,CAoBlF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,0BAA0B,GAAG,MAAM,CAgB9E"}
@@ -0,0 +1,50 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import { resolve } from 'node:path';
3
+ export async function writeDifferentialArtifacts(report, outputDirectory) {
4
+ await mkdir(outputDirectory, { recursive: true });
5
+ const jsonPath = resolve(outputDirectory, 'report.json');
6
+ const summaryPath = resolve(outputDirectory, 'summary.md');
7
+ await writeFile(jsonPath, `${JSON.stringify(report, null, '\t')}\n`, 'utf8');
8
+ await writeFile(summaryPath, 'cases' in report ? formatCorpusSummary(report) : formatDifferentialSummary(report), 'utf8');
9
+ return { jsonPath, summaryPath };
10
+ }
11
+ export function formatDifferentialSummary(report) {
12
+ const lines = [
13
+ '# Self-host differential summary',
14
+ '',
15
+ `- Fixture: \`${report.fixtureId}\``,
16
+ `- Kernels: \`${report.leftKernel}\` vs \`${report.rightKernel}\``,
17
+ `- Result: **${report.status.toUpperCase()}**`,
18
+ `- Differences: ${report.differences.length}`,
19
+ `- Unexplained: ${report.unexplainedDifferences.length}`,
20
+ `- Stale expectations: ${report.staleExpectedDivergences.length}`,
21
+ '',
22
+ ];
23
+ if (report.differences.length > 0) {
24
+ lines.push('| Path | Kind | Expected |', '| --- | --- | --- |');
25
+ for (const difference of report.differences) {
26
+ lines.push(`| \`${difference.path}\` | ${difference.kind} | ${report.expectedDifferences.some(item => item.path === difference.path) ? 'yes' : 'no'} |`);
27
+ }
28
+ lines.push('');
29
+ }
30
+ return `${lines.join('\n')}\n`;
31
+ }
32
+ export function formatCorpusSummary(report) {
33
+ const lines = [
34
+ '# Self-host differential corpus',
35
+ '',
36
+ `Result: **${report.passed ? 'PASS' : 'FAIL'}**`,
37
+ '',
38
+ `- Fixtures: ${report.totals.fixtures}`,
39
+ `- Match: ${report.totals.matched}`,
40
+ `- Expected divergence: ${report.totals.expectedDivergence}`,
41
+ `- Failed: ${report.totals.failed}`,
42
+ '',
43
+ '| Fixture | Result | Differences | Unexplained |',
44
+ '| --- | --- | ---: | ---: |',
45
+ ];
46
+ for (const item of report.cases)
47
+ lines.push(`| \`${item.fixtureId}\` | ${item.status} | ${item.differences.length} | ${item.unexplainedDifferences.length} |`);
48
+ return `${lines.join('\n')}\n`;
49
+ }
50
+ //# sourceMappingURL=differential-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"differential-artifacts.js","sourceRoot":"","sources":["../../../src/selfhost/differential-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC/C,MAA6D,EAC7D,eAAuB;IAEvB,MAAM,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC3D,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7E,MAAM,SAAS,CAAC,WAAW,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1H,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAgC;IACzE,MAAM,KAAK,GAAG;QACb,kCAAkC;QAClC,EAAE;QACF,gBAAgB,MAAM,CAAC,SAAS,IAAI;QACpC,gBAAgB,MAAM,CAAC,UAAU,WAAW,MAAM,CAAC,WAAW,IAAI;QAClE,eAAe,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI;QAC9C,kBAAkB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE;QAC7C,kBAAkB,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE;QACxD,yBAAyB,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE;QACjE,EAAE;KACF,CAAC;IACF,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE,qBAAqB,CAAC,CAAC;QAChE,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,IAAI,QAAQ,UAAU,CAAC,IAAI,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAC1J,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAkC;IACrE,MAAM,KAAK,GAAG;QACb,iCAAiC;QACjC,EAAE;QACF,aAAa,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI;QAChD,EAAE;QACF,eAAe,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;QACvC,YAAY,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QACnC,0BAA0B,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE;QAC5D,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACnC,EAAE;QACF,kDAAkD;QAClD,6BAA6B;KAC7B,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,QAAQ,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/J,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { type JsonValue, type KernelInputV1, type KernelOutputV1 } from './contract.js';
2
+ declare const REPORT_SCHEMA_VERSION: 1;
3
+ export interface DifferentialPanicV1 {
4
+ readonly name: string;
5
+ readonly message: string;
6
+ readonly stack: string | null;
7
+ }
8
+ export interface DifferentialExecutionV1 {
9
+ readonly returnValue: JsonValue;
10
+ readonly stdout: string;
11
+ readonly stderr: string;
12
+ readonly exitCode: number;
13
+ readonly signal: string | null;
14
+ readonly panic: DifferentialPanicV1 | null;
15
+ readonly events: readonly string[];
16
+ }
17
+ export interface DifferentialKernelV1 {
18
+ readonly name: string;
19
+ readonly compile: (input: KernelInputV1) => Promise<KernelOutputV1>;
20
+ readonly execute?: (input: KernelInputV1, output: KernelOutputV1) => Promise<DifferentialExecutionV1>;
21
+ }
22
+ export interface ExpectedDivergenceV1 {
23
+ readonly path: string;
24
+ readonly reason: string;
25
+ readonly expiresOn: string;
26
+ }
27
+ export interface DifferentialFixtureV1 {
28
+ readonly id: string;
29
+ readonly tags: readonly string[];
30
+ readonly input: KernelInputV1;
31
+ readonly expectedDivergences?: readonly ExpectedDivergenceV1[];
32
+ }
33
+ export interface DifferentialDifferenceV1 {
34
+ readonly path: string;
35
+ readonly kind: 'missing-left' | 'missing-right' | 'type' | 'value';
36
+ readonly leftPresent: boolean;
37
+ readonly rightPresent: boolean;
38
+ readonly left?: JsonValue;
39
+ readonly right?: JsonValue;
40
+ }
41
+ export interface DifferentialSideResultV1 {
42
+ readonly compiler: {
43
+ readonly output: KernelOutputV1 | null;
44
+ readonly panic: DifferentialPanicV1 | null;
45
+ };
46
+ readonly runtime: DifferentialExecutionV1 | null;
47
+ }
48
+ export interface DifferentialCaseReportV1 {
49
+ readonly schemaVersion: typeof REPORT_SCHEMA_VERSION;
50
+ readonly fixtureId: string;
51
+ readonly leftKernel: string;
52
+ readonly rightKernel: string;
53
+ readonly status: 'match' | 'expected-divergence' | 'failed';
54
+ readonly passed: boolean;
55
+ readonly left: DifferentialSideResultV1;
56
+ readonly right: DifferentialSideResultV1;
57
+ readonly differences: readonly DifferentialDifferenceV1[];
58
+ readonly expectedDifferences: readonly DifferentialDifferenceV1[];
59
+ readonly unexplainedDifferences: readonly DifferentialDifferenceV1[];
60
+ readonly staleExpectedDivergences: readonly ExpectedDivergenceV1[];
61
+ }
62
+ export interface DifferentialCorpusReportV1 {
63
+ readonly schemaVersion: typeof REPORT_SCHEMA_VERSION;
64
+ readonly passed: boolean;
65
+ readonly cases: readonly DifferentialCaseReportV1[];
66
+ readonly totals: {
67
+ readonly fixtures: number;
68
+ readonly matched: number;
69
+ readonly expectedDivergence: number;
70
+ readonly failed: number;
71
+ };
72
+ }
73
+ export declare class DifferentialPolicyError extends Error {
74
+ readonly name = "DifferentialPolicyError";
75
+ }
76
+ export declare function runDifferentialCase({ fixtureId, input: rawInput, left, right, expectedDivergences, today, }: {
77
+ readonly fixtureId: string;
78
+ readonly input: KernelInputV1;
79
+ readonly left: DifferentialKernelV1;
80
+ readonly right: DifferentialKernelV1;
81
+ readonly expectedDivergences?: readonly ExpectedDivergenceV1[];
82
+ readonly today?: string;
83
+ }): Promise<DifferentialCaseReportV1>;
84
+ export declare function runDifferentialCorpus({ fixtures, left, right, today, }: {
85
+ readonly fixtures: readonly DifferentialFixtureV1[];
86
+ readonly left: DifferentialKernelV1;
87
+ readonly right: DifferentialKernelV1;
88
+ readonly today?: string;
89
+ }): Promise<DifferentialCorpusReportV1>;
90
+ export {};
91
+ //# sourceMappingURL=differential-harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"differential-harness.d.ts","sourceRoot":"","sources":["../../../src/selfhost/differential-harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,KAAK,SAAS,EAGd,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,MAAM,eAAe,CAAC;AAEvB,QAAA,MAAM,qBAAqB,EAAG,CAAU,CAAC;AAEzC,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACtG;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC/D;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC;IACnE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,QAAQ,EAAE;QAClB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;QACvC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;KAC3C,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,aAAa,EAAE,OAAO,qBAAqB,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,qBAAqB,GAAG,QAAQ,CAAC;IAC5D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC1D,QAAQ,CAAC,mBAAmB,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAClE,QAAQ,CAAC,sBAAsB,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACrE,QAAQ,CAAC,wBAAwB,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACnE;AAED,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,aAAa,EAAE,OAAO,qBAAqB,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE;QAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACxB,CAAC;CACF;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IACjD,SAAyB,IAAI,6BAA6B;CAC1D;AAED,wBAAsB,mBAAmB,CAAC,EACzC,SAAS,EACT,KAAK,EAAE,QAAQ,EACf,IAAI,EACJ,KAAK,EACL,mBAAwB,EACxB,KAA6C,GAC7C,EAAE;IACF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA4BpC;AAED,wBAAsB,qBAAqB,CAAC,EAC3C,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,KAAK,GACL,EAAE;IACF,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CA0BtC"}