@shapeshift-labs/frontier-lang-compiler 0.2.149 → 0.2.151

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 (280) hide show
  1. package/README.md +315 -9
  2. package/bench/real-repo-corpus-checkout-identity.mjs +134 -0
  3. package/bench/real-repo-corpus-checkout-proof.mjs +263 -0
  4. package/bench/real-repo-corpus-command-execution.mjs +314 -0
  5. package/bench/real-repo-corpus-evidence.mjs +165 -0
  6. package/bench/real-repo-corpus-suite.mjs +273 -0
  7. package/bench/smoke.mjs +109 -7
  8. package/dist/declarations/import-adapter-core.d.ts +4 -3
  9. package/dist/declarations/import-adapter-options-native.d.ts +21 -0
  10. package/dist/declarations/js-ts-project-merge-admission-routes.d.ts +35 -0
  11. package/dist/declarations/js-ts-project-merge-commonjs-interop.d.ts +29 -0
  12. package/dist/declarations/js-ts-project-merge-confidence.d.ts +64 -0
  13. package/dist/declarations/js-ts-project-merge-declaration-emit-parity.d.ts +37 -0
  14. package/dist/declarations/js-ts-project-merge-declarations.d.ts +65 -0
  15. package/dist/declarations/js-ts-project-merge-diagnostics.d.ts +97 -0
  16. package/dist/declarations/js-ts-project-merge-global-augmentation.d.ts +30 -0
  17. package/dist/declarations/js-ts-project-merge-jsx-render-branch.d.ts +48 -0
  18. package/dist/declarations/js-ts-project-merge-proof-levels.d.ts +109 -0
  19. package/dist/declarations/js-ts-project-merge-quality-gates.d.ts +38 -0
  20. package/dist/declarations/js-ts-project-merge-semantic-equivalence-proof.d.ts +45 -0
  21. package/dist/declarations/js-ts-project-merge-tsconfig.d.ts +43 -0
  22. package/dist/declarations/js-ts-safe-merge.d.ts +47 -0
  23. package/dist/declarations/js-ts-safe-project-merge.d.ts +120 -38
  24. package/dist/declarations/native-project-compiler-assignability-oracle.d.ts +41 -0
  25. package/dist/declarations/native-project-compiler-callable-signatures.d.ts +31 -0
  26. package/dist/declarations/native-project-compiler-class-member-runtime-proof.d.ts +87 -0
  27. package/dist/declarations/native-project-compiler-composite-types.d.ts +23 -0
  28. package/dist/declarations/native-project-compiler-enum-proof.d.ts +58 -0
  29. package/dist/declarations/native-project-compiler-index-signature.d.ts +7 -0
  30. package/dist/declarations/native-project-compiler-public-api-source-binding.d.ts +8 -0
  31. package/dist/declarations/native-project-compiler-scope.d.ts +37 -0
  32. package/dist/declarations/native-project-compiler-type-reference-targets.d.ts +38 -0
  33. package/dist/declarations/native-project-css-modules.d.ts +90 -0
  34. package/dist/declarations/native-project-decorator-metadata.d.ts +126 -0
  35. package/dist/declarations/native-project-jsx-graph.d.ts +313 -0
  36. package/dist/declarations/native-project-module-declarations.d.ts +52 -0
  37. package/dist/declarations/native-project-module-resolution.d.ts +76 -1
  38. package/dist/declarations/native-project-runtime-effect-target.d.ts +29 -0
  39. package/dist/declarations/native-project-runtime-executable-effect-evidence.d.ts +107 -0
  40. package/dist/declarations/native-project-runtime-mutation-target.d.ts +33 -0
  41. package/dist/declarations/native-project-runtime-promise-chain.d.ts +30 -0
  42. package/dist/declarations/native-project-runtime-promise-combinator.d.ts +22 -0
  43. package/dist/declarations/native-project-runtime-reachability.d.ts +30 -0
  44. package/dist/declarations/native-project-runtime-resource-management.d.ts +27 -0
  45. package/dist/declarations/native-project-runtime-yield-delegation.d.ts +10 -0
  46. package/dist/declarations/native-project-scope-template-reference.d.ts +13 -0
  47. package/dist/declarations/native-project-source-evidence.d.ts +8 -0
  48. package/dist/declarations/native-project.d.ts +40 -39
  49. package/dist/declarations/semantic-edit-script.d.ts +10 -8
  50. package/dist/declarations/semantic-graph-layers.d.ts +79 -0
  51. package/dist/declarations/semantic-patch-bundle-composition.d.ts +62 -0
  52. package/dist/declarations/semantic-sidecar.d.ts +3 -2
  53. package/dist/declarations/semantic-structural-diff.d.ts +94 -0
  54. package/dist/declarations/source-preservation.d.ts +32 -1
  55. package/dist/declarations/target-adapters.d.ts +22 -2
  56. package/dist/index.d.ts +32 -0
  57. package/dist/index.js +6 -0
  58. package/dist/internal/index-impl/compileNativeSource.js +53 -5
  59. package/dist/internal/index-impl/createLightweightNativeImport.js +58 -4
  60. package/dist/internal/index-impl/createNativeImportFromSyntaxAst.js +17 -1
  61. package/dist/internal/index-impl/createNativeImportFromTypeScriptAst.js +28 -4
  62. package/dist/internal/index-impl/createNativeProjectImportResult.js +31 -27
  63. package/dist/internal/index-impl/createNativeProjectModuleResolutionFromPackageManifests.js +145 -0
  64. package/dist/internal/index-impl/createNativeSourcePreservation.js +34 -7
  65. package/dist/internal/index-impl/createSemanticImportSidecar.js +27 -1
  66. package/dist/internal/index-impl/createTypeScriptCompilerNativeImporterAdapter.js +16 -5
  67. package/dist/internal/index-impl/dynamicImportExpressionMetadata.js +80 -0
  68. package/dist/internal/index-impl/importMetaUrlDependencyMetadata.js +176 -0
  69. package/dist/internal/index-impl/importNativeSource.js +2 -3
  70. package/dist/internal/index-impl/moduleImportAttributeMetadata.js +232 -0
  71. package/dist/internal/index-impl/projectSemanticEditScriptToSource.js +8 -1
  72. package/dist/internal/index-impl/projectSymbolGraphClassStaticBlocks.js +148 -0
  73. package/dist/internal/index-impl/projectSymbolGraphCompilerAdvancedTypeMetadata.js +45 -0
  74. package/dist/internal/index-impl/projectSymbolGraphCompilerCallableSignatureEquivalence.js +107 -0
  75. package/dist/internal/index-impl/projectSymbolGraphCompilerClassPrivateAccessorRuntimeProof.js +280 -0
  76. package/dist/internal/index-impl/projectSymbolGraphCompilerClassShapeEquivalence.js +103 -0
  77. package/dist/internal/index-impl/projectSymbolGraphCompilerConditionalTypeEquivalence.js +242 -0
  78. package/dist/internal/index-impl/projectSymbolGraphCompilerDecoratorRuntimeProof.js +197 -0
  79. package/dist/internal/index-impl/projectSymbolGraphCompilerEnumEquivalence.js +188 -0
  80. package/dist/internal/index-impl/projectSymbolGraphCompilerFacts.js +244 -0
  81. package/dist/internal/index-impl/projectSymbolGraphCompilerIndexSignatureEquivalence.js +58 -0
  82. package/dist/internal/index-impl/projectSymbolGraphCompilerMetadata.js +168 -0
  83. package/dist/internal/index-impl/projectSymbolGraphCompilerTypeEquivalence.js +199 -0
  84. package/dist/internal/index-impl/projectSymbolGraphCompilerTypeEquivalenceProof.js +204 -0
  85. package/dist/internal/index-impl/projectSymbolGraphCompilerTypeReferenceTargetEquivalence.js +99 -0
  86. package/dist/internal/index-impl/projectSymbolGraphCssModuleRecords.js +264 -0
  87. package/dist/internal/index-impl/projectSymbolGraphCssModuleScanners.js +242 -0
  88. package/dist/internal/index-impl/projectSymbolGraphCssModuleUtils.js +152 -0
  89. package/dist/internal/index-impl/projectSymbolGraphCssModules.js +82 -0
  90. package/dist/internal/index-impl/projectSymbolGraphJsxComponentImports.js +170 -0
  91. package/dist/internal/index-impl/projectSymbolGraphJsxComponentProviderLookup.js +167 -0
  92. package/dist/internal/index-impl/projectSymbolGraphJsxComponentWrappers.js +150 -0
  93. package/dist/internal/index-impl/projectSymbolGraphJsxContextTargets.js +71 -0
  94. package/dist/internal/index-impl/projectSymbolGraphJsxContextValues.js +212 -0
  95. package/dist/internal/index-impl/projectSymbolGraphJsxEventHandlers.js +172 -0
  96. package/dist/internal/index-impl/projectSymbolGraphJsxHookEffects.js +124 -0
  97. package/dist/internal/index-impl/projectSymbolGraphJsxHooks.js +281 -0
  98. package/dist/internal/index-impl/projectSymbolGraphJsxMemberComponents.js +139 -0
  99. package/dist/internal/index-impl/projectSymbolGraphJsxPropFlows.js +320 -0
  100. package/dist/internal/index-impl/projectSymbolGraphJsxPropValues.js +145 -0
  101. package/dist/internal/index-impl/projectSymbolGraphJsxProviderFlows.js +133 -0
  102. package/dist/internal/index-impl/projectSymbolGraphJsxRecords.js +315 -0
  103. package/dist/internal/index-impl/projectSymbolGraphJsxRenderCollections.js +155 -0
  104. package/dist/internal/index-impl/projectSymbolGraphJsxRenderReturns.js +291 -0
  105. package/dist/internal/index-impl/projectSymbolGraphJsxRenderRisk.js +279 -0
  106. package/dist/internal/index-impl/projectSymbolGraphModuleDeclarationShapes.js +138 -0
  107. package/dist/internal/index-impl/projectSymbolGraphModuleResolution.js +89 -87
  108. package/dist/internal/index-impl/projectSymbolGraphPackageConditions.js +314 -0
  109. package/dist/internal/index-impl/projectSymbolGraphReExportImportTargets.js +43 -0
  110. package/dist/internal/index-impl/projectSymbolGraphReExports.js +55 -1
  111. package/dist/internal/index-impl/projectSymbolGraphRuntimeRegions.js +108 -0
  112. package/dist/internal/index-impl/projectSymbolGraphScopeUseDefAliases.js +307 -0
  113. package/dist/internal/index-impl/projectSymbolGraphScopeUseDefLexical.js +320 -0
  114. package/dist/internal/index-impl/projectSymbolGraphScopeUseDefOwners.js +50 -0
  115. package/dist/internal/index-impl/projectSymbolGraphScopeUseDefRecordBuilders.js +112 -0
  116. package/dist/internal/index-impl/projectSymbolGraphScopeUseDefRecords.js +238 -0
  117. package/dist/internal/index-impl/projectSymbolGraphScopeUseDefStructural.js +104 -0
  118. package/dist/internal/index-impl/projectSymbolGraphScopeUseDefStructuralNormalize.js +242 -0
  119. package/dist/internal/index-impl/projectSymbolGraphScopeUseDefUseHashes.js +107 -0
  120. package/dist/internal/index-impl/projectSymbolGraphSourceMapGeneratedBoundary.js +111 -0
  121. package/dist/internal/index-impl/projectSymbolGraphSourceRecords.js +268 -0
  122. package/dist/internal/index-impl/projectSymbolGraphSourceRecordsOwnership.js +309 -0
  123. package/dist/internal/index-impl/replaySemanticEditProjection.js +53 -39
  124. package/dist/internal/index-impl/runtimeOrderEvidenceBinding.js +151 -0
  125. package/dist/internal/index-impl/runtimeOrderProofSurfaces.js +253 -0
  126. package/dist/internal/index-impl/semanticEditCallsiteArgumentMerge.js +319 -0
  127. package/dist/internal/index-impl/semanticEditExplicitSourceReplacement.js +7 -2
  128. package/dist/internal/index-impl/semanticEditProjectionRecord.js +8 -0
  129. package/dist/internal/index-impl/semanticEditReplayDiagnostics.js +7 -2
  130. package/dist/internal/index-impl/semanticEditReplayOutputBinding.js +61 -0
  131. package/dist/internal/index-impl/semanticEditReplayRerunRoute.js +27 -0
  132. package/dist/internal/index-impl/semanticEditReplaySourceReplacement.js +6 -1
  133. package/dist/internal/index-impl/semanticEditRuntimeOrderReasons.js +320 -0
  134. package/dist/internal/index-impl/semanticEditScriptClassification.js +90 -5
  135. package/dist/internal/index-impl/semanticEditScripts.js +42 -5
  136. package/dist/internal/index-impl/semanticEditTypeSyntaxReasons.js +134 -0
  137. package/dist/internal/index-impl/semanticIndexFromNativeDeclarations.js +11 -5
  138. package/dist/internal/index-impl/semanticPatchBundleComposition.js +166 -0
  139. package/dist/internal/index-impl/semanticStructuralDiffRecords.js +150 -0
  140. package/dist/internal/index-impl/sourceMapGeneratedBoundaryGate.js +185 -0
  141. package/dist/internal/index-impl/staticMemberLiteral.js +31 -0
  142. package/dist/internal/index-impl/staticOptionalMemberReference.js +22 -0
  143. package/dist/internal/index-impl/syntaxAstSourcePreservation.js +273 -0
  144. package/dist/internal/index-impl/syntaxCommonJsModuleDeclarationEntries.js +297 -0
  145. package/dist/internal/index-impl/syntaxModuleDeclarationEntries.js +56 -132
  146. package/dist/internal/index-impl/syntaxModuleEntryRecords.js +160 -0
  147. package/dist/internal/index-impl/typeScriptCompilerAdvancedTypeShapes.js +160 -0
  148. package/dist/internal/index-impl/typeScriptCompilerAssignabilityOracle.js +97 -0
  149. package/dist/internal/index-impl/typeScriptCompilerClassApi.js +238 -0
  150. package/dist/internal/index-impl/typeScriptCompilerDecoratorMetadata.js +290 -0
  151. package/dist/internal/index-impl/typeScriptCompilerEnumShape.js +279 -0
  152. package/dist/internal/index-impl/typeScriptCompilerFacts.js +294 -0
  153. package/dist/internal/index-impl/typeScriptCompilerInferenceSyntax.js +170 -0
  154. package/dist/internal/index-impl/typeScriptCompilerReferenceGraph.js +186 -0
  155. package/dist/internal/index-impl/typeScriptCompilerSymbolIdentity.js +294 -0
  156. package/dist/internal/index-impl/typeScriptCompilerTypeReferenceTargets.js +142 -0
  157. package/dist/internal/index-impl/typeScriptDeclaration.js +10 -38
  158. package/dist/internal/index-impl/typeScriptModuleDeclarationEntries.js +52 -15
  159. package/dist/internal/index-impl/typeScriptSourceFilePreservation.js +296 -0
  160. package/dist/js-ts-safe-member-class-invariants.js +247 -0
  161. package/dist/js-ts-safe-member-merge-result.js +23 -3
  162. package/dist/js-ts-safe-member-merge.js +28 -4
  163. package/dist/js-ts-safe-merge-binding-patterns.js +170 -0
  164. package/dist/js-ts-safe-merge-context.js +1 -0
  165. package/dist/js-ts-safe-merge-jsx-attribute-fallback.js +314 -0
  166. package/dist/js-ts-safe-merge-jsx-attribute-parser.js +277 -0
  167. package/dist/js-ts-safe-merge-jsx-child-expression-fallback.js +161 -0
  168. package/dist/js-ts-safe-merge-jsx-child-expression-merge.js +319 -0
  169. package/dist/js-ts-safe-merge-jsx-child-expression-parser.js +300 -0
  170. package/dist/js-ts-safe-merge-parse-declarations.js +46 -2
  171. package/dist/js-ts-safe-merge-parse-statements.js +8 -0
  172. package/dist/js-ts-safe-merge-plan.js +3 -1
  173. package/dist/js-ts-safe-merge-semantic-edit-fallback.js +49 -0
  174. package/dist/js-ts-safe-merge-source-shape-fallbacks.js +5 -1
  175. package/dist/js-ts-safe-merge-top-level-rename-fallback.js +31 -5
  176. package/dist/js-ts-safe-merge-top-level-rename-result.js +7 -2
  177. package/dist/js-ts-safe-merge-variable-declarator-fallback.js +124 -6
  178. package/dist/js-ts-safe-merge-variable-declarator-parser.js +34 -4
  179. package/dist/js-ts-safe-merge.js +136 -0
  180. package/dist/js-ts-safe-project-merge-admission-routes.js +216 -0
  181. package/dist/js-ts-safe-project-merge-admission.js +161 -0
  182. package/dist/js-ts-safe-project-merge-ambient.js +110 -0
  183. package/dist/js-ts-safe-project-merge-core.js +85 -0
  184. package/dist/js-ts-safe-project-merge-css-module-conflicts.js +60 -0
  185. package/dist/js-ts-safe-project-merge-declaration-emit-parity.js +186 -0
  186. package/dist/js-ts-safe-project-merge-declarations.js +227 -0
  187. package/dist/js-ts-safe-project-merge-diagnostics-metadata.js +42 -0
  188. package/dist/js-ts-safe-project-merge-diagnostics-ts.js +73 -0
  189. package/dist/js-ts-safe-project-merge-diagnostics.js +283 -0
  190. package/dist/js-ts-safe-project-merge-evidence-routing.js +38 -0
  191. package/dist/js-ts-safe-project-merge-files.js +70 -0
  192. package/dist/js-ts-safe-project-merge-global-augmentation-compatibility.js +99 -0
  193. package/dist/js-ts-safe-project-merge-graph-conflicts.js +90 -2
  194. package/dist/js-ts-safe-project-merge-graph-delta-commonjs-interop.js +108 -0
  195. package/dist/js-ts-safe-project-merge-graph-delta-compiler-conflicts.js +179 -0
  196. package/dist/js-ts-safe-project-merge-graph-delta-compiler-details.js +189 -0
  197. package/dist/js-ts-safe-project-merge-graph-delta-conflicts.js +51 -184
  198. package/dist/js-ts-safe-project-merge-graph-delta-identity-conflicts.js +202 -0
  199. package/dist/js-ts-safe-project-merge-graph-delta-inference-syntax.js +80 -0
  200. package/dist/js-ts-safe-project-merge-graph-delta-module-declarations.js +155 -0
  201. package/dist/js-ts-safe-project-merge-graph-limits.js +16 -1
  202. package/dist/js-ts-safe-project-merge-graph.js +37 -5
  203. package/dist/js-ts-safe-project-merge-import-removal.js +292 -0
  204. package/dist/js-ts-safe-project-merge-jsx-graph-conflict-details.js +235 -0
  205. package/dist/js-ts-safe-project-merge-jsx-graph-conflicts.js +173 -0
  206. package/dist/js-ts-safe-project-merge-jsx-prop-contracts.js +86 -0
  207. package/dist/js-ts-safe-project-merge-jsx-render-branch-proof.js +189 -0
  208. package/dist/js-ts-safe-project-merge-missing-evidence.js +310 -0
  209. package/dist/js-ts-safe-project-merge-move-rename.js +209 -0
  210. package/dist/js-ts-safe-project-merge-proof-conflicts.js +44 -0
  211. package/dist/js-ts-safe-project-merge-proof-levels.js +320 -0
  212. package/dist/js-ts-safe-project-merge-quality-gates.js +140 -0
  213. package/dist/js-ts-safe-project-merge-routing-calibration.js +125 -0
  214. package/dist/js-ts-safe-project-merge-runtime-region-conflicts.js +156 -0
  215. package/dist/js-ts-safe-project-merge-scope-use-def-conflicts.js +292 -0
  216. package/dist/js-ts-safe-project-merge-semantic-equivalence-proof.js +175 -0
  217. package/dist/js-ts-safe-project-merge-semantic-replay-proof.js +311 -0
  218. package/dist/js-ts-safe-project-merge-semantic-replay-routes.js +179 -0
  219. package/dist/js-ts-safe-project-merge-source-span-conflicts.js +310 -0
  220. package/dist/js-ts-safe-project-merge-source-span-roundtrip-proof.js +172 -0
  221. package/dist/js-ts-safe-project-merge-split-merge-admission.js +96 -0
  222. package/dist/js-ts-safe-project-merge-split-merge-records.js +320 -0
  223. package/dist/js-ts-safe-project-merge-split-merge-shapes.js +234 -0
  224. package/dist/js-ts-safe-project-merge-split-merge.js +218 -0
  225. package/dist/js-ts-safe-project-merge-summary.js +320 -0
  226. package/dist/js-ts-safe-project-merge-symbol-move-admission.js +63 -0
  227. package/dist/js-ts-safe-project-merge-symbol-move-default-admission.js +143 -0
  228. package/dist/js-ts-safe-project-merge-symbol-move-risks.js +213 -0
  229. package/dist/js-ts-safe-project-merge-symbol-move.js +316 -0
  230. package/dist/js-ts-safe-project-merge-symbol-rename-admission.js +59 -0
  231. package/dist/js-ts-safe-project-merge-symbol-rename-default-admission.js +111 -0
  232. package/dist/js-ts-safe-project-merge-symbol-rename.js +319 -0
  233. package/dist/js-ts-safe-project-merge-ts-options.js +205 -0
  234. package/dist/js-ts-safe-project-merge-ts-program.js +268 -0
  235. package/dist/js-ts-safe-project-merge-typed-property-rename-rebase-utils.js +69 -0
  236. package/dist/js-ts-safe-project-merge-typed-property-rename-rebase.js +317 -0
  237. package/dist/js-ts-safe-project-merge-unsupported-surfaces.js +319 -0
  238. package/dist/js-ts-safe-project-merge.js +171 -172
  239. package/dist/js-ts-semantic-scope-use-def-bindings.js +287 -0
  240. package/dist/js-ts-semantic-scope-use-def-scan.js +241 -0
  241. package/dist/js-ts-semantic-scope-use-def-utils.js +132 -0
  242. package/dist/js-ts-semantic-scope-use-def.js +217 -0
  243. package/dist/lightweight-dependency-effects.js +28 -4
  244. package/dist/lightweight-dependency-relations.js +13 -7
  245. package/dist/lightweight-dependency-top-level.js +63 -0
  246. package/dist/native-import-language-profiles.js +27 -1
  247. package/dist/native-js-ts-importers.js +9 -5
  248. package/dist/native-parser-ast-format-profiles.js +12 -0
  249. package/dist/native-parser-html-css-format-profiles.js +85 -0
  250. package/dist/native-region-scanner-core.js +5 -3
  251. package/dist/native-region-scanner-js-commonjs.js +155 -0
  252. package/dist/native-region-scanner-js-imports.js +51 -13
  253. package/dist/native-region-scanner-js-reexports.js +79 -0
  254. package/dist/native-region-scanner-js-ts-helpers.js +23 -0
  255. package/dist/native-source-ledger-helpers.js +1 -1
  256. package/dist/native-source-ledger.js +24 -10
  257. package/dist/native-source-maps-ecma426.js +316 -0
  258. package/dist/native-source-maps.js +36 -6
  259. package/dist/native-source-preservation-ownership.js +292 -0
  260. package/dist/native-source-preservation-scanner.js +63 -25
  261. package/dist/native-source-preservation-types.d.ts +3 -0
  262. package/dist/semantic-import-effect-occurrences.js +242 -0
  263. package/dist/semantic-import-effect-regions.js +95 -58
  264. package/dist/semantic-import-graph-layers.js +224 -0
  265. package/dist/semantic-import-runtime-conditional-evidence.js +135 -0
  266. package/dist/semantic-import-runtime-effect-target-evidence.js +145 -0
  267. package/dist/semantic-import-runtime-exit-evidence.js +32 -0
  268. package/dist/semantic-import-runtime-import-meta-evidence.js +33 -0
  269. package/dist/semantic-import-runtime-mutation-evidence.js +155 -0
  270. package/dist/semantic-import-runtime-order-evidence.js +318 -0
  271. package/dist/semantic-import-runtime-promise-chain-evidence.js +103 -0
  272. package/dist/semantic-import-runtime-promise-combinator-evidence.js +166 -0
  273. package/dist/semantic-import-runtime-reachability-evidence.js +269 -0
  274. package/dist/semantic-import-runtime-resource-management-evidence.js +293 -0
  275. package/dist/semantic-import-runtime-switch-evidence.js +304 -0
  276. package/dist/semantic-import-runtime-throw-evidence.js +44 -0
  277. package/dist/semantic-import-runtime-try-finally-evidence.js +172 -0
  278. package/dist/semantic-import-sidecar-entry.js +4 -0
  279. package/dist/semantic-import-source-preservation.js +6 -2
  280. package/package.json +1 -1
@@ -0,0 +1,197 @@
1
+ import { hashSemanticValue } from '@shapeshift-labs/frontier-lang-kernel';
2
+
3
+ const DecoratorRuntimeExecutionProofSchema = 'frontier.lang.typescript.decoratorRuntimeExecutionProof.v1';
4
+ const DecoratorRuntimeExecutionProofKind = 'frontier.lang.typescript.decoratorRuntimeExecutionProof';
5
+ const DecoratorRuntimeExecutionBoundCode = 'decorator-runtime-execution-proof-bound';
6
+ const DecoratorRuntimeExecutionRouteId = 'prove-decorator-runtime-execution-equivalence';
7
+ const DecoratorRuntimeExecutionRouteLane = 'decorator-runtime-boundaries';
8
+ const DecoratorRuntimeExecutionRouteNext = 'supply-decorator-runtime-execution-proof';
9
+ const PassedStatuses = new Set(['passed', 'verified']);
10
+
11
+ function decoratorRuntimeExecutionProjection(value, counts, source = {}) {
12
+ const metadataProof = objectRecord(value.decoratorMetadataProof);
13
+ if (!metadataProof || counts.decoratorMetadataCount <= 0) return { record: {} };
14
+ const binding = decoratorRuntimeExecutionProofBinding(value, counts, source);
15
+ return {
16
+ binding,
17
+ record: compactRecord({
18
+ decoratorMetadataProof: boundDecoratorMetadataProof(metadataProof, binding),
19
+ decoratorRuntimeExecutionHash: binding.decoratorRuntimeExecutionHash,
20
+ decoratorRuntimeExecutionProof: binding.proof,
21
+ decoratorRuntimeExecutionProofReasonCodes: binding.passed ? undefined : nonEmptyArray(binding.reasonCodes)
22
+ })
23
+ };
24
+ }
25
+
26
+ function decoratorRuntimeExecutionProofBinding(value, counts, source = {}) {
27
+ if (counts.decoratorMetadataCount <= 0) return { passed: false, evidenceIds: [], reasonCodes: [] };
28
+ const proof = decoratorRuntimeExecutionProofCandidate(value);
29
+ if (!proof) return {
30
+ passed: false,
31
+ evidenceIds: [],
32
+ reasonCodes: ['typescript-decorator-runtime-execution-proof-missing']
33
+ };
34
+ const expectedHash = decoratorRuntimeExecutionHash(value, counts, source, proof);
35
+ const reasonCodes = [];
36
+ reasonCodes.push(...missingDecoratorRuntimeTraceHashReasonCodes(proof));
37
+ if (!PassedStatuses.has(String(proof.status ?? ''))) reasonCodes.push('typescript-decorator-runtime-execution-proof-status-not-passed');
38
+ if (proof.schema !== DecoratorRuntimeExecutionProofSchema && proof.kind !== DecoratorRuntimeExecutionProofKind) {
39
+ reasonCodes.push('typescript-decorator-runtime-execution-proof-schema-missing');
40
+ }
41
+ if (proof.sourcePath !== source.sourcePath) reasonCodes.push('typescript-decorator-runtime-execution-proof-source-path-mismatch');
42
+ if (proof.sourceHash !== source.sourceHash) reasonCodes.push('typescript-decorator-runtime-execution-proof-source-hash-mismatch');
43
+ if (proof.decoratorMetadataHash !== value.decoratorMetadataHash) reasonCodes.push('typescript-decorator-runtime-execution-proof-metadata-hash-mismatch');
44
+ if (Number(proof.decoratorMetadataCount) !== Number(counts.decoratorMetadataCount)) {
45
+ reasonCodes.push('typescript-decorator-runtime-execution-proof-count-mismatch');
46
+ }
47
+ if (!proof.decoratorRuntimeExecutionHash) {
48
+ reasonCodes.push('typescript-decorator-runtime-execution-proof-execution-hash-missing');
49
+ } else if (expectedHash && proof.decoratorRuntimeExecutionHash !== expectedHash) {
50
+ reasonCodes.push('typescript-decorator-runtime-execution-proof-execution-hash-mismatch');
51
+ }
52
+ if (proof.autoMergeClaim !== false || proof.semanticEquivalenceClaim !== false || proof.runtimeEquivalenceClaim !== false
53
+ || proof.decoratorExecutionEquivalenceClaim !== false || proof.decoratorEmitRuntimeEquivalenceClaim !== false) {
54
+ reasonCodes.push('typescript-decorator-runtime-execution-proof-claim-flags-missing');
55
+ }
56
+ return {
57
+ passed: reasonCodes.length === 0,
58
+ evidenceIds: uniqueStrings([proof.id, proof.evidenceId, ...arrayValue(proof.evidenceIds)]),
59
+ reasonCodes: uniqueStrings(reasonCodes),
60
+ decoratorRuntimeExecutionHash: expectedHash,
61
+ proof: compactRecord({
62
+ id: proof.id,
63
+ evidenceId: proof.evidenceId,
64
+ schema: proof.schema,
65
+ kind: proof.kind,
66
+ status: proof.status,
67
+ sourcePath: proof.sourcePath,
68
+ sourceHash: proof.sourceHash,
69
+ decoratorMetadataHash: proof.decoratorMetadataHash,
70
+ decoratorMetadataCount: proof.decoratorMetadataCount,
71
+ decoratorRuntimeExecutionHash: proof.decoratorRuntimeExecutionHash,
72
+ ...decoratorRuntimeTraceHashes(proof),
73
+ command: proof.command,
74
+ traceHash: proof.traceHash,
75
+ evidenceHash: proof.evidenceHash,
76
+ autoMergeClaim: false,
77
+ semanticEquivalenceClaim: false,
78
+ runtimeEquivalenceClaim: false,
79
+ decoratorExecutionEquivalenceClaim: false,
80
+ decoratorEmitRuntimeEquivalenceClaim: false
81
+ })
82
+ };
83
+ }
84
+
85
+ function decoratorRuntimeExecutionHash(value, counts, source = {}, proof = {}) {
86
+ const traceHashes = decoratorRuntimeTraceHashes(proof);
87
+ if (requiredDecoratorRuntimeTraceHashKeys().some((key) => !traceHashes[key])) return undefined;
88
+ return hashSemanticValue({
89
+ kind: 'frontier.lang.typescript.decoratorRuntimeExecutionProof.values',
90
+ sourcePath: source.sourcePath,
91
+ sourceHash: source.sourceHash,
92
+ decoratorMetadataHash: value.decoratorMetadataHash,
93
+ decoratorMetadataCount: counts.decoratorMetadataCount,
94
+ classDecoratorCount: counts.classDecoratorCount || undefined,
95
+ memberDecoratorCount: counts.memberDecoratorCount || undefined,
96
+ parameterDecoratorCount: counts.parameterDecoratorCount || undefined,
97
+ traceHashes
98
+ });
99
+ }
100
+
101
+ function boundDecoratorMetadataProof(metadataProof, binding) {
102
+ if (!binding.passed) return compactRecord({
103
+ ...metadataProof,
104
+ decoratorRuntimeExecutionHash: binding.decoratorRuntimeExecutionHash,
105
+ decoratorRuntimeExecutionProof: binding.proof,
106
+ decoratorRuntimeExecutionProofReasonCodes: nonEmptyArray(binding.reasonCodes),
107
+ runtimeExecutionEquivalenceGap: boundDecoratorRuntimeExecutionGap(metadataProof.runtimeExecutionEquivalenceGap, binding)
108
+ });
109
+ const { runtimeExecutionEquivalenceGap: _gap, conflictRouting: _routing, ...baseProof } = metadataProof;
110
+ return compactRecord({
111
+ ...baseProof,
112
+ proofScope: 'static-decorator-metadata-and-source-bound-runtime-execution',
113
+ decoratorRuntimeExecutionHash: binding.decoratorRuntimeExecutionHash,
114
+ decoratorRuntimeExecutionProof: binding.proof,
115
+ conflictRouting: decoratorRuntimeProofRouting(binding, baseProof.decoratorMetadataHash),
116
+ autoMergeClaim: false,
117
+ semanticEquivalenceClaim: false,
118
+ runtimeEquivalenceClaim: false,
119
+ decoratorExecutionEquivalenceClaim: false
120
+ });
121
+ }
122
+
123
+ function boundDecoratorRuntimeExecutionGap(gap, binding) {
124
+ if (!gap) return undefined;
125
+ return compactRecord({
126
+ ...gap,
127
+ decoratorRuntimeExecutionHash: binding.decoratorRuntimeExecutionHash,
128
+ proofReasonCodes: nonEmptyArray(binding.reasonCodes),
129
+ proofEvidenceIds: nonEmptyArray(binding.evidenceIds)
130
+ });
131
+ }
132
+
133
+ function decoratorRuntimeProofRouting(binding, decoratorMetadataHash) {
134
+ return {
135
+ status: 'proof-bound',
136
+ conflictCode: 'project-public-compiler-type-delta-conflict',
137
+ reasonCode: DecoratorRuntimeExecutionBoundCode,
138
+ branchDivergenceSignal: 'decoratorMetadataHash',
139
+ routeId: DecoratorRuntimeExecutionRouteId,
140
+ routeLane: DecoratorRuntimeExecutionRouteLane,
141
+ routeNext: DecoratorRuntimeExecutionRouteNext,
142
+ decoratorMetadataHash,
143
+ decoratorRuntimeExecutionHash: binding.decoratorRuntimeExecutionHash,
144
+ proofEvidenceIds: nonEmptyArray(binding.evidenceIds),
145
+ failClosed: false,
146
+ autoMergeClaim: false,
147
+ semanticEquivalenceClaim: false,
148
+ runtimeEquivalenceClaim: false,
149
+ decoratorExecutionEquivalenceClaim: false
150
+ };
151
+ }
152
+
153
+ function decoratorRuntimeExecutionProofCandidate(value) {
154
+ return objectRecord(value.decoratorRuntimeExecutionProof)
155
+ ?? objectRecord(value.decoratorRuntimeExecutionEvidence)
156
+ ?? objectRecord(value.decoratorMetadataProof?.decoratorRuntimeExecutionProof)
157
+ ?? objectRecord(value.decoratorMetadataProof?.runtimeExecutionProof);
158
+ }
159
+
160
+ function missingDecoratorRuntimeTraceHashReasonCodes(proof) {
161
+ const hashes = decoratorRuntimeTraceHashes(proof);
162
+ return requiredDecoratorRuntimeTraceHashKeys()
163
+ .filter((key) => !hashes[key])
164
+ .map((key) => `typescript-decorator-runtime-execution-proof-${key.replace(/Hash$/, '').replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`)}-hash-missing`);
165
+ }
166
+
167
+ function requiredDecoratorRuntimeTraceHashKeys() {
168
+ return [
169
+ 'decoratorFactoryCallOrderHash',
170
+ 'decoratorInvocationOrderHash',
171
+ 'decoratorSideEffectTraceHash',
172
+ 'decoratorResultApplicationHash',
173
+ 'decoratorEmitRuntimeEquivalenceHash'
174
+ ];
175
+ }
176
+
177
+ function decoratorRuntimeTraceHashes(proof) {
178
+ return compactRecord({
179
+ decoratorFactoryCallOrderHash: proof.decoratorFactoryCallOrderHash,
180
+ decoratorInvocationOrderHash: proof.decoratorInvocationOrderHash,
181
+ decoratorSideEffectTraceHash: proof.decoratorSideEffectTraceHash,
182
+ decoratorResultApplicationHash: proof.decoratorResultApplicationHash,
183
+ decoratorEmitRuntimeEquivalenceHash: proof.decoratorEmitRuntimeEquivalenceHash
184
+ });
185
+ }
186
+
187
+ function arrayValue(value) { return Array.isArray(value) ? value : []; }
188
+ function objectRecord(value) { return value && typeof value === 'object' && !Array.isArray(value) ? value : undefined; }
189
+ function compactRecord(record) { return Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined)); }
190
+ function nonEmptyArray(value) { return Array.isArray(value) && value.length ? value : undefined; }
191
+ function uniqueStrings(values) { return [...new Set(values.filter((value) => typeof value === 'string' && value.length > 0))]; }
192
+
193
+ export {
194
+ decoratorRuntimeExecutionHash,
195
+ decoratorRuntimeExecutionProjection,
196
+ decoratorRuntimeExecutionProofBinding
197
+ };
@@ -0,0 +1,188 @@
1
+ import { hashSemanticValue } from '@shapeshift-labs/frontier-lang-kernel';
2
+
3
+ const EnumShapeTypeEquivalenceProofKind = 'typescript-checker-public-api-enum-runtime-shape-equivalence';
4
+ const ComputedEnumRuntimeValueProofSchema = 'frontier.lang.typescript.computedEnumRuntimeValueProof.v1';
5
+ const ComputedEnumRuntimeValueProofKind = 'frontier.lang.typescript.computedEnumRuntimeValueProof';
6
+ const PassedStatuses = new Set(['passed', 'verified']);
7
+
8
+ function enumRuntimeShapeHash(value, counts) {
9
+ return counts.enumMemberCount > 0 ? value.enumRuntimeShapeHash : undefined;
10
+ }
11
+
12
+ function enumUnsupportedReasonCodes(value, counts, source = {}) {
13
+ const reasonCodes = [];
14
+ if (counts.enumMemberCount > 0) reasonCodes.push('typescript-enum-runtime-shape-equivalence-unproven');
15
+ const computedProof = computedEnumRuntimeValueProofBinding(value, counts, source);
16
+ if (counts.enumComputedMemberCount > 0 && !computedProof.passed) {
17
+ reasonCodes.push('typescript-enum-computed-runtime-value-equivalence-unproven');
18
+ reasonCodes.push(...computedProof.reasonCodes);
19
+ }
20
+ return reasonCodes;
21
+ }
22
+
23
+ function enumProofKind(counts) {
24
+ return counts.enumMemberCount > 0 ? EnumShapeTypeEquivalenceProofKind : undefined;
25
+ }
26
+
27
+ function enumProofLevel(counts) {
28
+ return counts.enumMemberCount > 0 ? 'enum-runtime-shape' : undefined;
29
+ }
30
+
31
+ function enumCheckerInvariant(counts) {
32
+ return counts.enumMemberCount > 0 ? 'enum member names, order, initializer texts, and constant runtime values complete' : undefined;
33
+ }
34
+
35
+ function enumRequiredSignals(counts) {
36
+ if (counts.enumMemberCount <= 0) return [];
37
+ return [
38
+ 'compiler-enum-member-count',
39
+ 'compiler-enum-member-names',
40
+ 'compiler-enum-member-value-texts',
41
+ 'compiler-enum-member-initializer-texts',
42
+ counts.enumComputedMemberCount > 0 ? 'compiler-enum-computed-runtime-value-proof' : undefined
43
+ ].filter(Boolean);
44
+ }
45
+
46
+ function missingEnumEquivalenceSignals(value, counts) {
47
+ if (counts.enumMemberCount <= 0) return [];
48
+ const members = arrayValue(value.enumMembers);
49
+ const missing = [];
50
+ if (members.length !== counts.enumMemberCount) missing.push('compiler-enum-member-count');
51
+ if (members.length !== counts.enumMemberCount || members.some((member) => !member.name)) missing.push('compiler-enum-member-names');
52
+ if (members.length !== counts.enumMemberCount || members.some((member) => member.valueText === undefined && !member.computed)) missing.push('compiler-enum-member-value-texts');
53
+ if (!value.enumRuntimeShapeHash) missing.push('compiler-enum-runtime-shape-hash');
54
+ return missing;
55
+ }
56
+
57
+ function enumUnsupportedSignals(value, counts, source = {}) {
58
+ if (counts.enumComputedMemberCount <= 0) return [];
59
+ return computedEnumRuntimeValueProofBinding(value, counts, source).passed
60
+ ? []
61
+ : ['compiler-enum-computed-runtime-value'];
62
+ }
63
+
64
+ function enumCheckerEvidence(value, counts) {
65
+ if (counts.enumMemberCount <= 0) return {};
66
+ const members = arrayValue(value.enumMembers);
67
+ return compactRecord({
68
+ enumKind: value.enumKind,
69
+ constEnum: value.constEnum,
70
+ declareEnum: value.declareEnum,
71
+ enumDeclarationCount: value.enumDeclarationCount,
72
+ enumMemberCount: counts.enumMemberCount,
73
+ enumNumericMemberCount: counts.enumNumericMemberCount || undefined,
74
+ enumStringMemberCount: counts.enumStringMemberCount || undefined,
75
+ enumAutoMemberCount: counts.enumAutoMemberCount || undefined,
76
+ enumComputedMemberCount: counts.enumComputedMemberCount || undefined,
77
+ enumRuntimeShapeHash: value.enumRuntimeShapeHash,
78
+ enumMemberNames: members.map((member) => member.name),
79
+ enumMemberValueTexts: members.map((member) => member.valueText),
80
+ enumMemberInitializerTexts: members.map((member) => member.initializerText),
81
+ enumMembers: nonEmptyArray(members)
82
+ });
83
+ }
84
+
85
+ function computedEnumRuntimeValueProofBinding(value, counts, source = {}) {
86
+ if (counts.enumComputedMemberCount <= 0) return { passed: false, evidenceIds: [], reasonCodes: [] };
87
+ const proof = computedEnumRuntimeValueProofCandidate(value);
88
+ const expectedHash = computedEnumRuntimeValueHash(value, source);
89
+ if (!proof) return {
90
+ passed: false,
91
+ evidenceIds: [],
92
+ reasonCodes: ['typescript-computed-enum-runtime-value-proof-missing'],
93
+ computedEnumRuntimeValueHash: expectedHash
94
+ };
95
+ const reasonCodes = [];
96
+ if (!PassedStatuses.has(String(proof.status ?? ''))) reasonCodes.push('typescript-computed-enum-runtime-value-proof-status-not-passed');
97
+ if (proof.schema !== ComputedEnumRuntimeValueProofSchema && proof.kind !== ComputedEnumRuntimeValueProofKind) reasonCodes.push('typescript-computed-enum-runtime-value-proof-schema-missing');
98
+ if (proof.sourcePath !== source.sourcePath) reasonCodes.push('typescript-computed-enum-runtime-value-proof-source-path-mismatch');
99
+ if (proof.sourceHash !== source.sourceHash) reasonCodes.push('typescript-computed-enum-runtime-value-proof-source-hash-mismatch');
100
+ if (proof.enumRuntimeShapeHash !== value.enumRuntimeShapeHash) reasonCodes.push('typescript-computed-enum-runtime-value-proof-enum-shape-hash-mismatch');
101
+ if (value.enumEmittedRuntimeShapeHash && !proof.enumEmittedRuntimeShapeHash) reasonCodes.push('typescript-computed-enum-emitted-runtime-shape-proof-missing');
102
+ if (proof.enumEmittedRuntimeShapeHash && proof.enumEmittedRuntimeShapeHash !== value.enumEmittedRuntimeShapeHash) reasonCodes.push('typescript-computed-enum-emitted-runtime-shape-proof-mismatch');
103
+ if (Number(proof.enumComputedMemberCount) !== Number(counts.enumComputedMemberCount)) reasonCodes.push('typescript-computed-enum-runtime-value-proof-member-count-mismatch');
104
+ if (computedRuntimeValueMissing(value)) reasonCodes.push('typescript-computed-enum-runtime-value-proof-runtime-value-missing');
105
+ if (proof.computedEnumRuntimeValueHash !== expectedHash) reasonCodes.push('typescript-computed-enum-runtime-value-proof-value-hash-mismatch');
106
+ if (!proof.traceHash) reasonCodes.push('typescript-computed-enum-runtime-value-proof-trace-hash-missing');
107
+ if (!proof.evidenceHash) reasonCodes.push('typescript-computed-enum-runtime-value-proof-evidence-hash-missing');
108
+ if (proof.autoMergeClaim !== false || proof.semanticEquivalenceClaim !== false || proof.runtimeEquivalenceClaim !== false
109
+ || proof.computedEnumRuntimeEvaluationEquivalenceClaim !== false) {
110
+ reasonCodes.push('typescript-computed-enum-runtime-value-proof-claim-flags-missing');
111
+ }
112
+ return {
113
+ passed: reasonCodes.length === 0,
114
+ evidenceIds: uniqueStrings([proof.id, proof.evidenceId, ...arrayValue(proof.evidenceIds)]),
115
+ reasonCodes: uniqueStrings(reasonCodes),
116
+ computedEnumRuntimeValueHash: expectedHash,
117
+ proof: compactRecord({
118
+ id: proof.id,
119
+ evidenceId: proof.evidenceId,
120
+ status: proof.status,
121
+ sourcePath: proof.sourcePath,
122
+ sourceHash: proof.sourceHash,
123
+ enumRuntimeShapeHash: proof.enumRuntimeShapeHash,
124
+ enumEmittedRuntimeShapeHash: proof.enumEmittedRuntimeShapeHash,
125
+ enumComputedMemberCount: proof.enumComputedMemberCount,
126
+ computedMembers: nonEmptyArray(arrayValue(proof.computedMembers)),
127
+ computedEnumRuntimeValueHash: proof.computedEnumRuntimeValueHash,
128
+ command: proof.command,
129
+ traceHash: proof.traceHash,
130
+ evidenceHash: proof.evidenceHash,
131
+ autoMergeClaim: false,
132
+ semanticEquivalenceClaim: false,
133
+ runtimeEquivalenceClaim: false,
134
+ computedEnumRuntimeEvaluationEquivalenceClaim: false
135
+ })
136
+ };
137
+ }
138
+
139
+ function computedEnumRuntimeValueProofCandidate(value) {
140
+ return objectValue(value.computedEnumRuntimeValueProof)
141
+ ?? objectValue(value.computedEnumRuntimeValueEvidence)
142
+ ?? objectValue(value.enumRuntimeShapeProof?.computedEnumRuntimeValueProof);
143
+ }
144
+
145
+ function computedRuntimeValueMissing(value) {
146
+ return arrayValue(value.enumMembers)
147
+ .filter((member) => member?.computed === true)
148
+ .some((member) => member.runtimeValueText === undefined || member.runtimeValueKind === undefined);
149
+ }
150
+
151
+ function computedEnumRuntimeValueHash(value, source = {}) {
152
+ const computedMembers = arrayValue(value.enumMembers).filter((member) => member?.computed === true);
153
+ if (!computedMembers.length) return undefined;
154
+ return hashSemanticValue({
155
+ kind: 'frontier.lang.typescript.computedEnumRuntimeValueProof.values',
156
+ sourcePath: source.sourcePath,
157
+ sourceHash: source.sourceHash,
158
+ enumRuntimeShapeHash: value.enumRuntimeShapeHash,
159
+ computedMembers: computedMembers.map((member) => compactRecord({
160
+ name: member.name,
161
+ ordinal: member.ordinal,
162
+ declarationOrdinal: member.declarationOrdinal,
163
+ initializerText: member.initializerText,
164
+ runtimeValueText: member.runtimeValueText,
165
+ runtimeValueKind: member.runtimeValueKind
166
+ }))
167
+ });
168
+ }
169
+
170
+ function arrayValue(value) { return Array.isArray(value) ? value : []; }
171
+ function objectValue(value) { return value && typeof value === 'object' && !Array.isArray(value) ? value : undefined; }
172
+ function nonEmptyArray(value) { return Array.isArray(value) && value.length ? value : undefined; }
173
+ function compactRecord(record) { return Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined)); }
174
+ function uniqueStrings(values) { return [...new Set(values.filter((value) => typeof value === 'string' && value.length > 0))]; }
175
+
176
+ export {
177
+ computedEnumRuntimeValueHash,
178
+ computedEnumRuntimeValueProofBinding,
179
+ enumCheckerEvidence,
180
+ enumCheckerInvariant,
181
+ enumProofKind,
182
+ enumProofLevel,
183
+ enumRequiredSignals,
184
+ enumRuntimeShapeHash,
185
+ enumUnsupportedReasonCodes,
186
+ enumUnsupportedSignals,
187
+ missingEnumEquivalenceSignals
188
+ };
@@ -0,0 +1,244 @@
1
+ import { idFragment, uniqueStrings } from '../../native-import-utils.js';
2
+ import { compilerAdvancedTypeMetadata } from './projectSymbolGraphCompilerAdvancedTypeMetadata.js';
3
+ import { compilerCallableSignatureEquivalenceRecord } from './projectSymbolGraphCompilerCallableSignatureEquivalence.js';
4
+ import {
5
+ compilerAssignabilityOracleMetadata,
6
+ compilerClassMemberShapeMetadata,
7
+ compilerDecoratorMetadata,
8
+ compilerEnumShapeMetadata,
9
+ compilerTypeInferenceSyntaxMetadata
10
+ } from './projectSymbolGraphCompilerMetadata.js';
11
+ import { compilerTypeEquivalenceRecord } from './projectSymbolGraphCompilerTypeEquivalence.js';
12
+
13
+ function createProjectCompilerGraphRecords(semanticIndex, symbolsById, documentsById, publicContractRegions) {
14
+ const facts = semanticIndex?.facts ?? [];
15
+ const symbolDocuments = symbolSourceDocuments(semanticIndex?.relations ?? [], documentsById);
16
+ const publicSymbolIds = new Set((publicContractRegions ?? []).map((region) => region.symbolId).filter(Boolean));
17
+ const compilerSymbolBySubject = new Map(facts
18
+ .filter((fact) => fact.predicate === 'compilerSymbol')
19
+ .map((fact) => [fact.subjectId, compilerSymbolRecord(fact, symbolsById.get(fact.subjectId), symbolDocuments.get(fact.subjectId), publicSymbolIds)])
20
+ .filter(([, record]) => Boolean(record)));
21
+ return {
22
+ compilerSymbolRecords: uniqueRecords([...compilerSymbolBySubject.values()]),
23
+ compilerTypeRecords: uniqueRecords(facts
24
+ .filter((fact) => fact.predicate === 'compilerType')
25
+ .map((fact) => compilerTypeRecord(fact, symbolsById.get(fact.subjectId), symbolDocuments.get(fact.subjectId), publicSymbolIds, compilerSymbolBySubject.get(fact.subjectId)))
26
+ .filter(Boolean))
27
+ };
28
+ }
29
+
30
+ function compilerSymbolRecord(fact, symbol, document, publicSymbolIds) {
31
+ const value = objectValue(fact.value);
32
+ return compactRecord({
33
+ id: `compiler_symbol_${idFragment(fact.id)}`,
34
+ symbolId: fact.subjectId,
35
+ sourceDocumentId: document?.id,
36
+ sourcePath: document?.path,
37
+ sourceHash: document?.sourceHash,
38
+ symbolName: symbol?.name,
39
+ symbolKind: symbol?.kind,
40
+ identityHash: value.identityHash,
41
+ localName: value.localName,
42
+ targetName: value.targetName,
43
+ fullyQualifiedName: value.fullyQualifiedName,
44
+ flags: value.flags,
45
+ targetFlags: value.targetFlags,
46
+ declarations: value.declarations,
47
+ aliased: value.aliased,
48
+ publicContract: publicSymbolIds.has(fact.subjectId) || symbol?.metadata?.publicContract || undefined,
49
+ factId: fact.id,
50
+ evidenceIds: fact.evidenceIds
51
+ });
52
+ }
53
+
54
+ function compilerTypeRecord(fact, symbol, document, publicSymbolIds, compilerSymbol) {
55
+ const value = objectValue(fact.value);
56
+ const publicContract = publicSymbolIds.has(fact.subjectId) || symbol?.metadata?.publicContract || undefined;
57
+ const sourceBinding = { sourcePath: document?.path, sourceHash: document?.sourceHash, publicContract: publicContract === true };
58
+ const callSignatureCount = arrayLength(value.callSignatures);
59
+ const constructSignatureCount = arrayLength(value.constructSignatures);
60
+ const overloadSignatureCount = callSignatureCount + constructSignatureCount;
61
+ const declarationCount = numberValue(compilerSymbol?.declarations);
62
+ const typeParameterCount = numberValue(value.typeParameterCount) ?? arrayLength(value.typeParameters);
63
+ const typeParameterDefaultCount = numberValue(value.typeParameterDefaultCount) ?? compilerTypeParameterDefaultCount(value.typeParameters);
64
+ const typeParameterConstraintCount = numberValue(value.typeParameterConstraintCount) ?? compilerTypeParameterConstraintCount(value.typeParameters);
65
+ const propertyCount = arrayLength(value.properties);
66
+ const propertyOptionalCount = compilerPropertyOptionalCount(value.properties);
67
+ const propertyReadonlyCount = compilerPropertyReadonlyCount(value.properties);
68
+ const indexSignatureCount = numberValue(value.indexSignatureCount) ?? arrayLength(value.indexSignatures);
69
+ const indexSignatureReadonlyCount = numberValue(value.indexSignatureReadonlyCount) ?? compilerIndexSignatureReadonlyCount(value.indexSignatures);
70
+ const constructorSignatureCount = numberValue(value.constructorSignatureCount) ?? arrayLength(value.constructorSignatures);
71
+ const classHeritageCount = numberValue(value.classHeritageCount) ?? arrayLength(value.classHeritage);
72
+ const advancedType = compilerAdvancedTypeMetadata(value);
73
+ const enumShape = compilerEnumShapeMetadata(value);
74
+ const typeInferenceSyntax = compilerTypeInferenceSyntaxMetadata(value, sourceBinding);
75
+ const classMemberShape = compilerClassMemberShapeMetadata(value, sourceBinding);
76
+ const decoratorMetadata = compilerDecoratorMetadata(value, sourceBinding);
77
+ const assignabilityOracle = compilerAssignabilityOracleMetadata(value);
78
+ const callableEquivalence = compilerCallableSignatureEquivalenceRecord(value, { callSignatureCount, constructSignatureCount, evidenceIds: fact.evidenceIds }, sourceBinding);
79
+ const typeEquivalence = compilerTypeEquivalenceRecord(value, compilerSymbol, {
80
+ overloadSignatureCount,
81
+ callSignatureCount,
82
+ constructSignatureCount,
83
+ declarationCount,
84
+ typeParameterCount,
85
+ typeParameterDefaultCount,
86
+ typeParameterConstraintCount,
87
+ propertyCount,
88
+ propertyOptionalCount,
89
+ propertyReadonlyCount,
90
+ indexSignatureCount,
91
+ indexSignatureReadonlyCount,
92
+ constructorSignatureCount,
93
+ classHeritageCount,
94
+ ...assignabilityOracle.counts,
95
+ ...classMemberShape.counts,
96
+ ...decoratorMetadata.counts, ...enumShape.counts, ...advancedType.counts, evidenceIds: fact.evidenceIds
97
+ }, sourceBinding);
98
+ const typeEquivalenceStatus = typeEquivalence.status ?? callableEquivalence.status;
99
+ const typeEquivalenceProof = typeEquivalence.proof ?? callableEquivalence.proof;
100
+ const typeEquivalenceCheckerEvidence = typeEquivalence.checkerEvidence ?? callableEquivalence.checkerEvidence;
101
+ return compactRecord({
102
+ id: `compiler_type_${idFragment(fact.id)}`,
103
+ symbolId: fact.subjectId,
104
+ sourceDocumentId: document?.id,
105
+ sourcePath: document?.path,
106
+ sourceHash: document?.sourceHash,
107
+ symbolName: symbol?.name,
108
+ symbolKind: symbol?.kind,
109
+ compilerSymbolIdentityHash: compilerSymbol?.identityHash,
110
+ fullyQualifiedName: compilerSymbol?.fullyQualifiedName,
111
+ localName: compilerSymbol?.localName,
112
+ declarationCount,
113
+ identityHash: value.identityHash,
114
+ typeText: value.typeText,
115
+ apparentTypeText: value.apparentTypeText,
116
+ apiSignatureHash: value.apiSignatureHash,
117
+ callSignatureCount: callSignatureCount || undefined,
118
+ constructSignatureCount: constructSignatureCount || undefined,
119
+ overloadSignatureCount: overloadSignatureCount > 1 ? overloadSignatureCount : undefined,
120
+ typeParameterCount: typeParameterCount || undefined,
121
+ typeParameterDefaultCount: typeParameterDefaultCount || undefined,
122
+ typeParameterConstraintCount: typeParameterConstraintCount || undefined,
123
+ propertyCount: propertyCount || undefined,
124
+ propertyOptionalCount: propertyOptionalCount || undefined,
125
+ propertyReadonlyCount: propertyReadonlyCount || undefined,
126
+ indexSignatureCount: indexSignatureCount || undefined,
127
+ indexSignatureReadonlyCount: indexSignatureReadonlyCount || undefined,
128
+ constructorSignatureCount: constructorSignatureCount || undefined,
129
+ classHeritageCount: classHeritageCount || undefined,
130
+ ...assignabilityOracle.record,
131
+ ...classMemberShape.record,
132
+ ...decoratorMetadata.record,
133
+ ...enumShape.record,
134
+ ...advancedType.record,
135
+ ...typeInferenceSyntax.record,
136
+ typeEquivalenceStatus,
137
+ typeEquivalenceReasonCodes: nonEmptyArray(uniqueStrings([...(typeEquivalence.reasonCodes ?? []), ...(callableEquivalence.reasonCodes ?? [])])),
138
+ typeEquivalenceCallSignatureSetHash: callableEquivalence.callSignatureSetHash,
139
+ typeEquivalenceConstructSignatureSetHash: callableEquivalence.constructSignatureSetHash,
140
+ typeEquivalenceSignatureSetHash: typeEquivalence.signatureSetHash,
141
+ typeEquivalenceTypeParameterSetHash: typeEquivalence.typeParameterSetHash,
142
+ typeEquivalencePropertySetHash: typeEquivalence.propertySetHash,
143
+ typeEquivalenceIndexSignatureSetHash: typeEquivalence.indexSignatureSetHash,
144
+ typeEquivalenceConstructorSetHash: typeEquivalence.constructorSetHash,
145
+ typeEquivalenceClassHeritageHash: typeEquivalence.classHeritageHash,
146
+ typeEquivalenceAssignabilityOracleHash: typeEquivalence.assignabilityOracleHash,
147
+ typeEquivalencePrivateClassMemberSetHash: typeEquivalence.privateClassMemberSetHash,
148
+ typeEquivalenceAccessorFieldSetHash: typeEquivalence.accessorFieldSetHash,
149
+ classPrivateAccessorRuntimeHash: classMemberShape.record.classPrivateAccessorRuntimeHash,
150
+ classPrivateAccessorRuntimeProof: classMemberShape.record.classPrivateAccessorRuntimeProof,
151
+ classPrivateAccessorRuntimeProofReasonCodes: classMemberShape.record.classPrivateAccessorRuntimeProofReasonCodes,
152
+ typeEquivalenceEnumRuntimeShapeHash: typeEquivalence.enumRuntimeShapeHash,
153
+ typeEquivalenceEnumEmittedRuntimeShapeHash: typeEquivalence.enumEmittedRuntimeShapeHash,
154
+ typeEquivalenceConditionalTypeSetHash: typeEquivalence.conditionalTypeSetHash,
155
+ typeEquivalenceIndexedAccessTypeSetHash: typeEquivalence.indexedAccessTypeSetHash,
156
+ typeEquivalenceMappedTypeSetHash: typeEquivalence.mappedTypeSetHash,
157
+ typeEquivalenceKeyofTypeOperatorSetHash: typeEquivalence.keyofTypeOperatorSetHash,
158
+ typeEquivalenceTypeReferenceTargetSetHash: typeEquivalence.typeReferenceTargetSetHash,
159
+ typeEquivalenceTemplateLiteralTypeSetHash: typeEquivalence.templateLiteralTypeSetHash,
160
+ typeEquivalenceInferTypeSetHash: typeEquivalence.inferTypeSetHash,
161
+ typeEquivalenceUnionTypeSetHash: typeEquivalence.unionTypeSetHash,
162
+ typeEquivalenceIntersectionTypeSetHash: typeEquivalence.intersectionTypeSetHash,
163
+ typeEquivalenceTupleTypeSetHash: typeEquivalence.tupleTypeSetHash,
164
+ typeEquivalenceProof,
165
+ typeEquivalenceCheckerEvidence,
166
+ callableSignatureEquivalenceProof: callableEquivalence.proof,
167
+ typeParameters: value.typeParameters,
168
+ properties: value.properties,
169
+ indexSignatures: value.indexSignatures,
170
+ assignabilityOracle: value.assignabilityOracle,
171
+ callSignatures: value.callSignatures,
172
+ constructSignatures: value.constructSignatures,
173
+ constructorSignatures: value.constructorSignatures,
174
+ classHeritage: value.classHeritage,
175
+ privateClassMembers: value.privateClassMembers,
176
+ accessorFieldMembers: value.accessorFieldMembers,
177
+ classMemberShapeProof: classMemberShape.record.classMemberShapeProof,
178
+ decoratorMetadata: decoratorMetadata.record.decoratorMetadata,
179
+ decoratorMetadataProof: decoratorMetadata.record.decoratorMetadataProof,
180
+ decoratorRuntimeExecutionHash: decoratorMetadata.record.decoratorRuntimeExecutionHash,
181
+ decoratorRuntimeExecutionProof: decoratorMetadata.record.decoratorRuntimeExecutionProof,
182
+ decoratorRuntimeExecutionProofReasonCodes: decoratorMetadata.record.decoratorRuntimeExecutionProofReasonCodes,
183
+ enumMembers: value.enumMembers,
184
+ enumEmittedRuntimeShapeHash: value.enumEmittedRuntimeShapeHash,
185
+ enumRuntimeShapeProof: value.enumRuntimeShapeProof,
186
+ typeInferenceSyntax: value.typeInferenceSyntax,
187
+ typeInferenceSyntaxProof: typeInferenceSyntax.record.typeInferenceSyntaxProof,
188
+ typeReferenceTargets: value.typeReferenceTargets,
189
+ flags: value.flags,
190
+ objectFlags: value.objectFlags,
191
+ intrinsicName: value.intrinsicName,
192
+ publicContract,
193
+ factId: fact.id,
194
+ evidenceIds: fact.evidenceIds
195
+ });
196
+ }
197
+
198
+ function compilerTypeParameterDefaultCount(typeParameters) {
199
+ return arrayValue(typeParameters).filter((parameter) => parameter?.hasDefault).length;
200
+ }
201
+
202
+ function compilerTypeParameterConstraintCount(typeParameters) {
203
+ return arrayValue(typeParameters).filter((parameter) => parameter?.hasConstraint).length;
204
+ }
205
+
206
+ function compilerPropertyOptionalCount(properties) {
207
+ return arrayValue(properties).filter((property) => property?.optional === true).length;
208
+ }
209
+
210
+ function compilerPropertyReadonlyCount(properties) {
211
+ return arrayValue(properties).filter((property) => property?.readonly === true).length;
212
+ }
213
+
214
+ function compilerIndexSignatureReadonlyCount(signatures) {
215
+ return arrayValue(signatures).filter((signature) => signature?.readonly === true).length;
216
+ }
217
+
218
+ function symbolSourceDocuments(relations, documentsById) {
219
+ const result = new Map();
220
+ for (const relation of relations) {
221
+ if (!relation?.targetId || result.has(relation.targetId)) continue;
222
+ const document = documentsById.get(relation.sourceId);
223
+ if (document) result.set(relation.targetId, document);
224
+ }
225
+ return result;
226
+ }
227
+
228
+ function objectValue(value) { return value && typeof value === 'object' && !Array.isArray(value) ? value : {}; }
229
+ function arrayValue(value) { return Array.isArray(value) ? value : []; }
230
+ function compactRecord(record) { return Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined)); }
231
+ function arrayLength(value) { return Array.isArray(value) ? value.length : 0; }
232
+ function numberValue(value) { return Number.isFinite(value) ? value : undefined; }
233
+ function nonEmptyArray(value) { return Array.isArray(value) && value.length ? value : undefined; }
234
+ function uniqueRecords(records) {
235
+ const seen = new Set();
236
+ return records.filter((record) => {
237
+ const key = record.id ?? JSON.stringify(record);
238
+ if (seen.has(key)) return false;
239
+ seen.add(key);
240
+ return true;
241
+ });
242
+ }
243
+
244
+ export { createProjectCompilerGraphRecords };