@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 @@
1
+ {"version":3,"file":"promotion-shadow-history-v2.js","sourceRoot":"","sources":["../../../src/selfhost/promotion-shadow-history-v2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export declare const PROMOTION_SUBJECT_MANIFEST_VERSION: 2;
2
+ export type PromotionSubjectStage = 'required-selfhost' | 'required-compiler' | 'production-default';
3
+ export type PromotionSubjectComponentId = 'bootstrap-policy' | 'compiler-api' | 'compiler-host-artifact' | 'dependency-closure' | 'fixed-seed' | 'interop-abi' | 'js-interop-artifact' | 'release-reproducibility' | 'reviewed-release-artifact' | 'runtime-abi' | 'runtime-artifact' | 'selfhost-host-contract' | 'selfhost-stage3' | 'stdlib-artifact';
4
+ export interface PromotionSubjectComponentInputV2 {
5
+ readonly id: PromotionSubjectComponentId | string;
6
+ readonly sha256: string;
7
+ }
8
+ export interface PromotionSubjectManifestInputV2 {
9
+ readonly version: typeof PROMOTION_SUBJECT_MANIFEST_VERSION;
10
+ readonly stage: PromotionSubjectStage;
11
+ readonly components: readonly PromotionSubjectComponentInputV2[];
12
+ }
13
+ export interface PromotionSubjectComponentV2 {
14
+ readonly id: PromotionSubjectComponentId;
15
+ readonly sha256: string;
16
+ }
17
+ export interface PromotionSubjectManifestV2 {
18
+ readonly version: typeof PROMOTION_SUBJECT_MANIFEST_VERSION;
19
+ readonly stage: PromotionSubjectStage;
20
+ readonly components: readonly PromotionSubjectComponentV2[];
21
+ }
22
+ export interface PromotionSubjectManifestResultV2 {
23
+ readonly manifest: PromotionSubjectManifestV2;
24
+ readonly serialized: string;
25
+ readonly promotionSubjectId: string;
26
+ }
27
+ export declare class PromotionSubjectManifestError extends Error {
28
+ readonly path: string;
29
+ readonly name = "PromotionSubjectManifestError";
30
+ constructor(path: string, message: string);
31
+ }
32
+ export declare function createPromotionSubjectManifest(value: unknown): PromotionSubjectManifestResultV2;
33
+ export declare function promotionSubjectRequiredComponents(stage: PromotionSubjectStage): readonly PromotionSubjectComponentId[];
34
+ //# sourceMappingURL=promotion-subject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promotion-subject.d.ts","sourceRoot":"","sources":["../../../src/selfhost/promotion-subject.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kCAAkC,EAAG,CAAU,CAAC;AAE7D,MAAM,MAAM,qBAAqB,GAC9B,mBAAmB,GACnB,mBAAmB,GACnB,oBAAoB,CAAC;AAExB,MAAM,MAAM,2BAA2B,GACpC,kBAAkB,GAClB,cAAc,GACd,wBAAwB,GACxB,oBAAoB,GACpB,YAAY,GACZ,aAAa,GACb,qBAAqB,GACrB,yBAAyB,GACzB,2BAA2B,GAC3B,aAAa,GACb,kBAAkB,GAClB,wBAAwB,GACxB,iBAAiB,GACjB,iBAAiB,CAAC;AAErB,MAAM,WAAW,gCAAgC;IAChD,QAAQ,CAAC,EAAE,EAAE,2BAA2B,GAAG,MAAM,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,kCAAkC,CAAC;IAC5D,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,SAAS,gCAAgC,EAAE,CAAC;CACjE;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,EAAE,EAAE,2BAA2B,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,OAAO,EAAE,OAAO,kCAAkC,CAAC;IAC5D,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,SAAS,2BAA2B,EAAE,CAAC;CAC5D;AAED,MAAM,WAAW,gCAAgC;IAChD,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACpC;AAED,qBAAa,6BAA8B,SAAQ,KAAK;aAEpB,IAAI,EAAE,MAAM;IAD/C,SAAyB,IAAI,mCAAmC;gBAC7B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAGhE;AA8CD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,gCAAgC,CA8C/F;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,GAAG,SAAS,2BAA2B,EAAE,CAEvH"}
@@ -0,0 +1,141 @@
1
+ import { createHash } from 'node:crypto';
2
+ export const PROMOTION_SUBJECT_MANIFEST_VERSION = 2;
3
+ export class PromotionSubjectManifestError extends Error {
4
+ path;
5
+ name = 'PromotionSubjectManifestError';
6
+ constructor(path, message) {
7
+ super(`${path}: ${message}`);
8
+ this.path = path;
9
+ }
10
+ }
11
+ const sha256Pattern = /^[0-9a-f]{64}$/u;
12
+ const requiredComponentsByStage = {
13
+ 'required-selfhost': [
14
+ 'bootstrap-policy',
15
+ 'fixed-seed',
16
+ 'runtime-abi',
17
+ 'runtime-artifact',
18
+ 'selfhost-host-contract',
19
+ 'selfhost-stage3',
20
+ 'stdlib-artifact',
21
+ ],
22
+ 'required-compiler': [
23
+ 'bootstrap-policy',
24
+ 'compiler-api',
25
+ 'compiler-host-artifact',
26
+ 'dependency-closure',
27
+ 'fixed-seed',
28
+ 'interop-abi',
29
+ 'js-interop-artifact',
30
+ 'runtime-abi',
31
+ 'runtime-artifact',
32
+ 'selfhost-host-contract',
33
+ 'selfhost-stage3',
34
+ 'stdlib-artifact',
35
+ ],
36
+ 'production-default': [
37
+ 'bootstrap-policy',
38
+ 'compiler-api',
39
+ 'compiler-host-artifact',
40
+ 'dependency-closure',
41
+ 'fixed-seed',
42
+ 'interop-abi',
43
+ 'js-interop-artifact',
44
+ 'release-reproducibility',
45
+ 'reviewed-release-artifact',
46
+ 'runtime-abi',
47
+ 'runtime-artifact',
48
+ 'selfhost-host-contract',
49
+ 'selfhost-stage3',
50
+ 'stdlib-artifact',
51
+ ],
52
+ };
53
+ export function createPromotionSubjectManifest(value) {
54
+ const input = record(value, '$');
55
+ exactKeys(input, ['version', 'stage', 'components'], '$');
56
+ if (input.version !== PROMOTION_SUBJECT_MANIFEST_VERSION) {
57
+ throw new PromotionSubjectManifestError('$.version', `expected ${PROMOTION_SUBJECT_MANIFEST_VERSION}`);
58
+ }
59
+ const stage = promotionStage(input.stage, '$.stage');
60
+ const componentValues = array(input.components, '$.components');
61
+ const requiredIds = requiredComponentsByStage[stage];
62
+ const requiredIdSet = new Set(requiredIds);
63
+ const componentsById = new Map();
64
+ for (const [index, valueAtIndex] of componentValues.entries()) {
65
+ const path = `$.components[${index}]`;
66
+ const component = record(valueAtIndex, path);
67
+ exactKeys(component, ['id', 'sha256'], path);
68
+ const id = nonEmptyString(component.id, `${path}.id`);
69
+ if (!requiredIdSet.has(id)) {
70
+ throw new PromotionSubjectManifestError(`${path}.id`, `component ${id} is not part of ${stage}`);
71
+ }
72
+ if (componentsById.has(id)) {
73
+ throw new PromotionSubjectManifestError(`${path}.id`, `duplicate component ${id}`);
74
+ }
75
+ const sha256 = canonicalSha256(component.sha256, `${path}.sha256`);
76
+ componentsById.set(id, { id: id, sha256 });
77
+ }
78
+ const missing = requiredIds.filter(id => !componentsById.has(id));
79
+ if (missing.length > 0) {
80
+ throw new PromotionSubjectManifestError('$.components', `missing required components: ${missing.join(', ')}`);
81
+ }
82
+ if (componentsById.size !== requiredIds.length) {
83
+ throw new PromotionSubjectManifestError('$.components', 'component set does not exactly match the stage contract');
84
+ }
85
+ const manifest = {
86
+ version: PROMOTION_SUBJECT_MANIFEST_VERSION,
87
+ stage,
88
+ components: requiredIds.map(id => componentsById.get(id)),
89
+ };
90
+ const serialized = JSON.stringify(manifest);
91
+ return {
92
+ manifest,
93
+ serialized,
94
+ promotionSubjectId: sha256(serialized),
95
+ };
96
+ }
97
+ export function promotionSubjectRequiredComponents(stage) {
98
+ return [...requiredComponentsByStage[stage]];
99
+ }
100
+ function promotionStage(value, path) {
101
+ if (value === 'required-selfhost' || value === 'required-compiler' || value === 'production-default')
102
+ return value;
103
+ throw new PromotionSubjectManifestError(path, 'expected required-selfhost, required-compiler, or production-default');
104
+ }
105
+ function canonicalSha256(value, path) {
106
+ if (typeof value !== 'string' || !sha256Pattern.test(value)) {
107
+ throw new PromotionSubjectManifestError(path, 'expected lowercase 64-character SHA-256');
108
+ }
109
+ return value;
110
+ }
111
+ function record(value, path) {
112
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
113
+ throw new PromotionSubjectManifestError(path, 'expected an object');
114
+ }
115
+ return value;
116
+ }
117
+ function array(value, path) {
118
+ if (!Array.isArray(value))
119
+ throw new PromotionSubjectManifestError(path, 'expected an array');
120
+ return value;
121
+ }
122
+ function nonEmptyString(value, path) {
123
+ if (typeof value !== 'string' || value.length === 0 || value.trim() !== value) {
124
+ throw new PromotionSubjectManifestError(path, 'expected a non-empty canonical string');
125
+ }
126
+ return value;
127
+ }
128
+ function exactKeys(value, expected, path) {
129
+ const actual = Object.keys(value).sort(compareText);
130
+ const wanted = [...expected].sort(compareText);
131
+ if (JSON.stringify(actual) !== JSON.stringify(wanted)) {
132
+ throw new PromotionSubjectManifestError(path, `expected exactly keys ${wanted.join(', ')}`);
133
+ }
134
+ }
135
+ function sha256(value) {
136
+ return createHash('sha256').update(value, 'utf8').digest('hex');
137
+ }
138
+ function compareText(left, right) {
139
+ return left < right ? -1 : left > right ? 1 : 0;
140
+ }
141
+ //# sourceMappingURL=promotion-subject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promotion-subject.js","sourceRoot":"","sources":["../../../src/selfhost/promotion-subject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { KERNEL_CONTRACT_VERSION, KERNEL_LANGUAGE_VERSION, type KernelInputV1, type KernelPlatform } from './contract.js';
2
+ export declare const KERNEL_SOURCE_MANIFEST_VERSION: "1";
3
+ export interface KernelSourceManifestEntryV1 {
4
+ readonly path: string;
5
+ readonly sourceSha256: string;
6
+ readonly utf8ByteLength: number;
7
+ readonly lineCount: number;
8
+ }
9
+ export interface KernelSourceManifestV1 {
10
+ readonly version: typeof KERNEL_SOURCE_MANIFEST_VERSION;
11
+ readonly contractVersion: typeof KERNEL_CONTRACT_VERSION;
12
+ readonly languageVersion: typeof KERNEL_LANGUAGE_VERSION;
13
+ readonly platform: KernelPlatform;
14
+ readonly entryPath: string;
15
+ readonly sources: readonly KernelSourceManifestEntryV1[];
16
+ }
17
+ export interface KernelSourceManifestResultV1 {
18
+ readonly manifest: KernelSourceManifestV1;
19
+ readonly serialized: string;
20
+ readonly sha256: string;
21
+ }
22
+ export declare class KernelSourceManifestError extends Error {
23
+ readonly path: string;
24
+ readonly name = "KernelSourceManifestError";
25
+ constructor(path: string, message: string);
26
+ }
27
+ export declare function createKernelSourceManifest(value: unknown): KernelSourceManifestResultV1;
28
+ export declare function validateKernelSourceManifest(value: unknown): KernelSourceManifestResultV1;
29
+ export declare function verifyKernelSourceManifest(value: unknown, inputValue: unknown, expectedSha256?: string): KernelSourceManifestResultV1;
30
+ export type { KernelInputV1 };
31
+ //# sourceMappingURL=source-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-manifest.d.ts","sourceRoot":"","sources":["../../../src/selfhost/source-manifest.ts"],"names":[],"mappings":"AACA,OAAO,EACN,uBAAuB,EACvB,uBAAuB,EAGvB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,8BAA8B,EAAG,GAAY,CAAC;AAE3D,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,8BAA8B,CAAC;IACxD,QAAQ,CAAC,eAAe,EAAE,OAAO,uBAAuB,CAAC;IACzD,QAAQ,CAAC,eAAe,EAAE,OAAO,uBAAuB,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,2BAA2B,EAAE,CAAC;CACzD;AAED,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,yBAA0B,SAAQ,KAAK;aAEhB,IAAI,EAAE,MAAM;IAD/C,SAAyB,IAAI,+BAA+B;gBACzB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAGhE;AAID,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,CAWvF;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,CA6BzF;AAED,wBAAgB,0BAA0B,CACzC,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,OAAO,EACnB,cAAc,CAAC,EAAE,MAAM,GACrB,4BAA4B,CAW9B;AA2ID,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,194 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { KERNEL_CONTRACT_VERSION, KERNEL_LANGUAGE_VERSION, normalizeKernelPath, validateKernelInput, } from './contract.js';
3
+ export const KERNEL_SOURCE_MANIFEST_VERSION = '1';
4
+ export class KernelSourceManifestError extends Error {
5
+ path;
6
+ name = 'KernelSourceManifestError';
7
+ constructor(path, message) {
8
+ super(`${path}: ${message}`);
9
+ this.path = path;
10
+ }
11
+ }
12
+ const sha256Pattern = /^[0-9a-f]{64}$/u;
13
+ export function createKernelSourceManifest(value) {
14
+ const input = validateKernelInput(value);
15
+ const sources = input.sources.map(source => sourceManifestEntry(source.path, source.text)).sort(compareSourcePath);
16
+ return resultFor({
17
+ version: KERNEL_SOURCE_MANIFEST_VERSION,
18
+ contractVersion: KERNEL_CONTRACT_VERSION,
19
+ languageVersion: KERNEL_LANGUAGE_VERSION,
20
+ platform: input.platform,
21
+ entryPath: input.entryPath,
22
+ sources,
23
+ });
24
+ }
25
+ export function validateKernelSourceManifest(value) {
26
+ const manifestValue = record(value, '$');
27
+ exactKeys(manifestValue, ['version', 'contractVersion', 'languageVersion', 'platform', 'entryPath', 'sources'], '$');
28
+ literal(manifestValue.version, KERNEL_SOURCE_MANIFEST_VERSION, '$.version');
29
+ literal(manifestValue.contractVersion, KERNEL_CONTRACT_VERSION, '$.contractVersion');
30
+ literal(manifestValue.languageVersion, KERNEL_LANGUAGE_VERSION, '$.languageVersion');
31
+ const platform = oneOf(manifestValue.platform, ['node', 'browser', 'neutral'], '$.platform');
32
+ const entryPath = canonicalPath(manifestValue.entryPath, '$.entryPath');
33
+ const sourceValues = array(manifestValue.sources, '$.sources');
34
+ if (sourceValues.length === 0)
35
+ throw new KernelSourceManifestError('$.sources', 'at least one source entry is required');
36
+ const sources = sourceValues.map((source, index) => validateSourceEntry(source, `$.sources[${index}]`));
37
+ for (let index = 1; index < sources.length; index += 1) {
38
+ const previous = sources[index - 1];
39
+ const current = sources[index];
40
+ if (previous.path >= current.path) {
41
+ throw new KernelSourceManifestError(`$.sources[${index}].path`, 'source entries must be strictly ordered by canonical path');
42
+ }
43
+ }
44
+ if (!sources.some(source => source.path === entryPath)) {
45
+ throw new KernelSourceManifestError('$.entryPath', 'entryPath must match one source entry');
46
+ }
47
+ return resultFor({
48
+ version: KERNEL_SOURCE_MANIFEST_VERSION,
49
+ contractVersion: KERNEL_CONTRACT_VERSION,
50
+ languageVersion: KERNEL_LANGUAGE_VERSION,
51
+ platform,
52
+ entryPath,
53
+ sources,
54
+ });
55
+ }
56
+ export function verifyKernelSourceManifest(value, inputValue, expectedSha256) {
57
+ const actual = validateKernelSourceManifest(value);
58
+ if (expectedSha256 !== undefined) {
59
+ const normalizedExpectedSha256 = normalizedSha256(expectedSha256, '$expectedSha256');
60
+ if (actual.sha256 !== normalizedExpectedSha256) {
61
+ throw new KernelSourceManifestError('$expectedSha256', `expected ${normalizedExpectedSha256}, received ${actual.sha256}`);
62
+ }
63
+ }
64
+ const expected = createKernelSourceManifest(inputValue);
65
+ assertManifestMatches(actual.manifest, expected.manifest);
66
+ return actual;
67
+ }
68
+ function sourceManifestEntry(path, sourceText) {
69
+ const text = normalizeLineEndings(sourceText);
70
+ return {
71
+ path,
72
+ sourceSha256: createHash('sha256').update(text, 'utf8').digest('hex'),
73
+ utf8ByteLength: Buffer.byteLength(text, 'utf8'),
74
+ lineCount: countLines(text),
75
+ };
76
+ }
77
+ function validateSourceEntry(value, path) {
78
+ const source = record(value, path);
79
+ exactKeys(source, ['path', 'sourceSha256', 'utf8ByteLength', 'lineCount'], path);
80
+ return {
81
+ path: canonicalPath(source.path, `${path}.path`),
82
+ sourceSha256: normalizedSha256(source.sourceSha256, `${path}.sourceSha256`),
83
+ utf8ByteLength: nonNegativeSafeInteger(source.utf8ByteLength, `${path}.utf8ByteLength`),
84
+ lineCount: positiveSafeInteger(source.lineCount, `${path}.lineCount`),
85
+ };
86
+ }
87
+ function resultFor(manifest) {
88
+ const serialized = JSON.stringify(manifest);
89
+ return {
90
+ manifest,
91
+ serialized,
92
+ sha256: createHash('sha256').update(serialized, 'utf8').digest('hex'),
93
+ };
94
+ }
95
+ function assertManifestMatches(actual, expected) {
96
+ for (const field of ['version', 'contractVersion', 'languageVersion', 'platform', 'entryPath']) {
97
+ if (actual[field] !== expected[field]) {
98
+ throw new KernelSourceManifestError(`$.${field}`, `expected ${JSON.stringify(expected[field])}, received ${JSON.stringify(actual[field])}`);
99
+ }
100
+ }
101
+ if (actual.sources.length !== expected.sources.length) {
102
+ throw new KernelSourceManifestError('$.sources', `expected ${expected.sources.length} entries, received ${actual.sources.length}`);
103
+ }
104
+ for (let index = 0; index < expected.sources.length; index += 1) {
105
+ const actualSource = actual.sources[index];
106
+ const expectedSource = expected.sources[index];
107
+ for (const field of ['path', 'sourceSha256', 'utf8ByteLength', 'lineCount']) {
108
+ if (actualSource[field] !== expectedSource[field]) {
109
+ throw new KernelSourceManifestError(`$.sources[${index}].${field}`, `expected ${JSON.stringify(expectedSource[field])}, received ${JSON.stringify(actualSource[field])}`);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ function canonicalPath(value, path) {
115
+ const input = string(value, path);
116
+ const normalized = normalizeKernelPath(input, path);
117
+ if (input !== normalized)
118
+ throw new KernelSourceManifestError(path, `path must be canonical (${normalized})`);
119
+ return normalized;
120
+ }
121
+ function normalizeLineEndings(value) {
122
+ return value.replaceAll('\r\n', '\n').replaceAll('\r', '\n');
123
+ }
124
+ function countLines(value) {
125
+ let count = 1;
126
+ for (const character of value)
127
+ if (character === '\n')
128
+ count += 1;
129
+ return count;
130
+ }
131
+ function normalizedSha256(value, path) {
132
+ const hash = string(value, path);
133
+ if (!sha256Pattern.test(hash))
134
+ throw new KernelSourceManifestError(path, 'expected a lowercase SHA-256 value');
135
+ return hash;
136
+ }
137
+ function record(value, path) {
138
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
139
+ throw new KernelSourceManifestError(path, 'expected an object');
140
+ }
141
+ const prototype = Object.getPrototypeOf(value);
142
+ if (prototype !== Object.prototype && prototype !== null) {
143
+ throw new KernelSourceManifestError(path, 'expected a plain data object');
144
+ }
145
+ return value;
146
+ }
147
+ function array(value, path) {
148
+ if (!Array.isArray(value))
149
+ throw new KernelSourceManifestError(path, 'expected an array');
150
+ return value;
151
+ }
152
+ function string(value, path) {
153
+ if (typeof value !== 'string')
154
+ throw new KernelSourceManifestError(path, 'expected a string');
155
+ return value;
156
+ }
157
+ function nonNegativeSafeInteger(value, path) {
158
+ if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {
159
+ throw new KernelSourceManifestError(path, 'expected a non-negative safe integer');
160
+ }
161
+ return value;
162
+ }
163
+ function positiveSafeInteger(value, path) {
164
+ if (typeof value !== 'number' || !Number.isSafeInteger(value) || value <= 0) {
165
+ throw new KernelSourceManifestError(path, 'expected a positive safe integer');
166
+ }
167
+ return value;
168
+ }
169
+ function literal(value, expected, path) {
170
+ if (value !== expected)
171
+ throw new KernelSourceManifestError(path, `expected ${JSON.stringify(expected)}`);
172
+ return expected;
173
+ }
174
+ function oneOf(value, allowed, path) {
175
+ if (typeof value !== 'string' || !allowed.includes(value)) {
176
+ throw new KernelSourceManifestError(path, `expected one of ${allowed.join(', ')}`);
177
+ }
178
+ return value;
179
+ }
180
+ function exactKeys(value, allowed, path) {
181
+ const allowedSet = new Set(allowed);
182
+ for (const key of Object.keys(value)) {
183
+ if (!allowedSet.has(key))
184
+ throw new KernelSourceManifestError(`${path}.${key}`, 'unknown property');
185
+ }
186
+ for (const key of allowed) {
187
+ if (!Object.hasOwn(value, key))
188
+ throw new KernelSourceManifestError(`${path}.${key}`, 'missing property');
189
+ }
190
+ }
191
+ function compareSourcePath(left, right) {
192
+ return left.path < right.path ? -1 : left.path > right.path ? 1 : 0;
193
+ }
194
+ //# sourceMappingURL=source-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-manifest.js","sourceRoot":"","sources":["../../../src/selfhost/source-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { BootstrapStageArtifact } from './bootstrap-stage-executor.js';
2
+ import { type InternalCompilerFacade, type InternalKernelCompiler } from './compiler-facade.js';
3
+ import { type KernelOutputV1 } from './contract.js';
4
+ import type { ProjectCompilerResultV1 } from './project-compiler-adapter.js';
5
+ export interface StageCompilerFacadeDependencies {
6
+ readonly legacyCompiler?: InternalKernelCompiler;
7
+ }
8
+ export interface MaterializedStageCompilerFacade extends InternalCompilerFacade {
9
+ readonly artifactSha256: string;
10
+ readonly candidateRoot: string;
11
+ readonly dispose: () => Promise<void>;
12
+ }
13
+ /**
14
+ * Materialize one verified Stage compiler artifact behind the internal compiler
15
+ * facade. Legacy remains the immutable default; the Stage compiler runs only
16
+ * through an explicit per-call `selection: "self-host"` option.
17
+ *
18
+ * The returned facade owns the candidate directory. Once disposed, every
19
+ * compile call fails closed, including the Legacy path, so callers cannot keep
20
+ * using a resource whose Self-host candidate has already been removed.
21
+ */
22
+ export declare function materializeStageCompilerFacade(artifact: BootstrapStageArtifact, temporaryRoot: string, dependencies?: StageCompilerFacadeDependencies): Promise<MaterializedStageCompilerFacade>;
23
+ /** Convert the validated project-compiler result into the versioned Kernel output contract. */
24
+ export declare function projectCompilerResultToKernelOutput(result: ProjectCompilerResultV1): KernelOutputV1;
25
+ //# sourceMappingURL=stage-compiler-facade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-compiler-facade.d.ts","sourceRoot":"","sources":["../../../src/selfhost/stage-compiler-facade.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAGN,KAAK,sBAAsB,EAG3B,KAAK,sBAAsB,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGN,KAAK,cAAc,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED,MAAM,WAAW,+BAAgC,SAAQ,sBAAsB;IAC9E,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CACnD,QAAQ,EAAE,sBAAsB,EAChC,aAAa,EAAE,MAAM,EACrB,YAAY,GAAE,+BAAoC,GAChD,OAAO,CAAC,+BAA+B,CAAC,CA+B1C;AAED,+FAA+F;AAC/F,wBAAgB,mCAAmC,CAClD,MAAM,EAAE,uBAAuB,GAC7B,cAAc,CAqChB"}
@@ -0,0 +1,100 @@
1
+ import { materializeBootstrapStageCompiler, } from './bootstrap-stage-loader.js';
2
+ import { createInternalCompilerFacade, InternalCompilerFacadeError, } from './compiler-facade.js';
3
+ import { validateKernelOutput, } from './contract.js';
4
+ /**
5
+ * Materialize one verified Stage compiler artifact behind the internal compiler
6
+ * facade. Legacy remains the immutable default; the Stage compiler runs only
7
+ * through an explicit per-call `selection: "self-host"` option.
8
+ *
9
+ * The returned facade owns the candidate directory. Once disposed, every
10
+ * compile call fails closed, including the Legacy path, so callers cannot keep
11
+ * using a resource whose Self-host candidate has already been removed.
12
+ */
13
+ export async function materializeStageCompilerFacade(artifact, temporaryRoot, dependencies = {}) {
14
+ const candidate = await materializeBootstrapStageCompiler(artifact, temporaryRoot);
15
+ let disposed = false;
16
+ const selfHostCompiler = input => {
17
+ assertActive(disposed);
18
+ return projectCompilerResultToKernelOutput(candidate.compiler.compile(input));
19
+ };
20
+ const facadeDependencies = {
21
+ ...(dependencies.legacyCompiler === undefined ? {} : { legacyCompiler: dependencies.legacyCompiler }),
22
+ selfHostCompiler,
23
+ };
24
+ const facade = createInternalCompilerFacade(facadeDependencies);
25
+ return Object.freeze({
26
+ version: facade.version,
27
+ defaultSelection: facade.defaultSelection,
28
+ selfHostAvailable: facade.selfHostAvailable,
29
+ artifactSha256: artifact.sha256,
30
+ candidateRoot: candidate.root,
31
+ async compile(value, options) {
32
+ assertActive(disposed);
33
+ return facade.compile(value, options);
34
+ },
35
+ async dispose() {
36
+ if (disposed)
37
+ return;
38
+ disposed = true;
39
+ await candidate.dispose();
40
+ },
41
+ });
42
+ }
43
+ /** Convert the validated project-compiler result into the versioned Kernel output contract. */
44
+ export function projectCompilerResultToKernelOutput(result) {
45
+ return validateKernelOutput({
46
+ contractVersion: result.contractVersion,
47
+ languageVersion: result.languageVersion,
48
+ platform: result.platform,
49
+ entryPath: result.entryPath,
50
+ accepted: result.accepted,
51
+ diagnostics: result.diagnostics.map(toKernelDiagnostic),
52
+ emittedModules: result.emittedModules.map(module => ({
53
+ sourcePath: module.sourcePath,
54
+ outputPath: module.outputPath,
55
+ code: module.code,
56
+ sourceMap: module.sourceMap,
57
+ })),
58
+ dependencies: result.dependencies.map(dependency => ({
59
+ modulePath: dependency.modulePath,
60
+ sourceKind: dependency.sourceKind,
61
+ specifier: dependency.specifier,
62
+ ...(dependency.resolvedPath === null ? {} : { resolvedPath: dependency.resolvedPath }),
63
+ typeOnly: dependency.typeOnly,
64
+ public: dependency.public,
65
+ })),
66
+ exportedSymbols: result.exportedSymbols.map(symbol => ({
67
+ modulePath: symbol.modulePath,
68
+ name: symbol.name,
69
+ declarationKind: symbol.declarationKind,
70
+ })),
71
+ stats: {
72
+ parsedModules: result.stats.parsedModules,
73
+ reusedParsedModules: result.stats.reusedParsedModules,
74
+ checkedModules: result.stats.checkedModules,
75
+ reusedCheckedModules: result.stats.reusedCheckedModules,
76
+ emittedModules: result.stats.emittedModules,
77
+ reusedEmittedModules: result.stats.reusedEmittedModules,
78
+ invalidatedModules: result.stats.invalidatedModules,
79
+ },
80
+ });
81
+ }
82
+ function toKernelDiagnostic(diagnostic) {
83
+ return {
84
+ code: diagnostic.code,
85
+ severity: diagnostic.severity,
86
+ message: diagnostic.message,
87
+ ...(diagnostic.sourcePath === null ? {} : { sourcePath: diagnostic.sourcePath }),
88
+ span: {
89
+ start: { ...diagnostic.span.start },
90
+ end: { ...diagnostic.span.end },
91
+ },
92
+ ...(diagnostic.notes.length === 0 ? {} : { help: diagnostic.notes.join('\n') }),
93
+ };
94
+ }
95
+ function assertActive(disposed) {
96
+ if (disposed) {
97
+ throw new InternalCompilerFacadeError('facade', 'materialized Stage compiler facade has been disposed');
98
+ }
99
+ }
100
+ //# sourceMappingURL=stage-compiler-facade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-compiler-facade.js","sourceRoot":"","sources":["../../../src/selfhost/stage-compiler-facade.ts"],"names":[],"mappings":"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"}