@shapeshift-labs/frontier-lang-compiler 0.2.157 → 0.2.159

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.
@@ -4,6 +4,7 @@ import type { JsTsProjectSafeMergeMissingEvidenceTelemetry } from './js-ts-proje
4
4
  export interface JsTsProjectSafeMergeSummary {
5
5
  readonly files: number; readonly mergedFiles: number; readonly blockedFiles: number; readonly outputFiles: number;
6
6
  readonly htmlFiles:number; readonly cssFiles:number; readonly htmlCssFiles:number; readonly htmlMergedFiles:number; readonly cssMergedFiles:number; readonly htmlCssMergedFiles:number; readonly htmlBlockedFiles:number; readonly cssBlockedFiles:number; readonly htmlCssBlockedFiles:number; readonly htmlCssBrowserRuntimeProofs:number;
7
+ readonly htmlParserEvidenceFiles:number; readonly cssParserEvidenceFiles:number; readonly htmlCssParserEvidenceFiles:number; readonly htmlParserEvidenceFailedFiles:number; readonly cssParserEvidenceFailedFiles:number; readonly htmlCssParserEvidenceFailedFiles:number;
7
8
  readonly projectGraphConflicts: number; readonly projectGraphDeltaEvidenceIncluded: number; readonly outputProjectGraphConflicts:number; readonly projectGraphCssModuleUseSiteConflicts:number; readonly projectGraphDeltaConflicts: number; readonly projectGraphLimitConflicts: number; readonly projectGraphPublicContractConflicts: number; readonly projectGraphSourceSpanConflicts: number;
8
9
  readonly projectGraphCompilerTypeConflicts: number; readonly projectGraphRuntimeRegionConflicts: number; readonly projectGraphScopeUseDefConflicts: number; readonly projectGraphJsxPropConflicts: number; readonly projectGraphJsxRenderRiskConflicts: number; readonly projectGraphReExportIdentityConflicts: number; readonly projectGraphModuleDeclarationShapeConflicts: number; readonly projectGraphExportAssignmentShapeConflicts: number;
9
10
  readonly projectGraphImportAttributeConflicts: number; readonly projectGraphImportTargetConflicts: number; readonly outputDiagnostics: number; readonly outputDiagnosticConflicts: number; readonly outputDiagnosticErrors: number; readonly outputDiagnosticWarnings: number; readonly outputDeclarations: number; readonly outputDeclarationBytes: number; readonly outputDeclarationConflicts: number; readonly outputDeclarationDiagnosticErrors: number; readonly outputQualityGates: number; readonly outputQualityGateConflicts: number;
@@ -1,4 +1,6 @@
1
1
  const HtmlCssProjectMergeMissingSignals = Object.freeze({
2
+ htmlParserEvidence: 'html-parser-source-evidence-missing',
3
+ cssParserEvidence: 'css-parser-source-evidence-missing',
2
4
  htmlStructuralMerge: 'html-structural-merge-proof-blocked',
3
5
  cssCascadeMerge: 'css-cascade-merge-proof-blocked',
4
6
  htmlCssBrowserRuntimeProof: 'html-css-browser-runtime-proof-not-available'
@@ -6,6 +8,8 @@ const HtmlCssProjectMergeMissingSignals = Object.freeze({
6
8
 
7
9
  function htmlCssProjectMergeMissingEvidenceRoutes(route, signals) {
8
10
  return {
11
+ [signals.htmlParserEvidence]: route('prove-html-parser-source-evidence', 'layout-markup-parser', 'supply-parse5-source-span-and-trivia-evidence'),
12
+ [signals.cssParserEvidence]: route('prove-css-parser-source-evidence', 'layout-style-parser', 'supply-postcss-source-span-and-trivia-evidence'),
9
13
  [signals.htmlStructuralMerge]: route('admit-html-structural-merge', 'layout-markup-graph', 'supply-html-parser-reference-and-boundary-evidence'),
10
14
  [signals.cssCascadeMerge]: route('admit-css-cascade-merge', 'layout-style-graph', 'supply-css-parser-cascade-and-scope-evidence'),
11
15
  [signals.htmlCssBrowserRuntimeProof]: route('prove-html-css-browser-runtime', 'browser-proof', 'attach-browser-runtime-proof-bundle')
@@ -14,6 +18,8 @@ function htmlCssProjectMergeMissingEvidenceRoutes(route, signals) {
14
18
 
15
19
  function htmlCssProjectMergeAdmissionMatrixRows(matrixRow, signals) {
16
20
  return [
21
+ matrixRow('html-parser-source-evidence', 'bounded-evidence', ['html-parser-source-evidence'], [signals.htmlParserEvidence]),
22
+ matrixRow('css-parser-source-evidence', 'bounded-evidence', ['css-parser-source-evidence'], [signals.cssParserEvidence]),
17
23
  matrixRow('html-structural-merge-admission', 'partial', ['html-structural-merge'], [signals.htmlStructuralMerge]),
18
24
  matrixRow('css-cascade-merge-admission', 'partial', ['css-cascade-merge'], [signals.cssCascadeMerge]),
19
25
  matrixRow('html-css-browser-runtime-proof', 'bounded-evidence', ['browser-runtime-proof'], [signals.htmlCssBrowserRuntimeProof])
@@ -22,6 +28,8 @@ function htmlCssProjectMergeAdmissionMatrixRows(matrixRow, signals) {
22
28
 
23
29
  function htmlCssProjectMergeMissingEvidenceItems(summary, signals, missingEvidenceItem) {
24
30
  const items = [];
31
+ if (summary.htmlFiles && summary.htmlParserEvidenceFiles !== summary.htmlFiles) items.push(missingEvidenceItem({ code: signals.htmlParserEvidence, scope: 'layout-markup-parser', kind: 'html-parser-source-evidence', proofLevel: 'html-parser-source-evidence', action: 'review', summary: `HTML project merge has parser/source evidence for ${summary.htmlParserEvidenceFiles}/${summary.htmlFiles} file(s); require parse5 source spans, zero parse errors, and attribute/trivia spans when those surfaces are present before parser evidence admission.` }));
32
+ if (summary.cssFiles && summary.cssParserEvidenceFiles !== summary.cssFiles) items.push(missingEvidenceItem({ code: signals.cssParserEvidence, scope: 'layout-style-parser', kind: 'css-parser-source-evidence', proofLevel: 'css-parser-source-evidence', action: 'review', summary: `CSS project merge has parser/source evidence for ${summary.cssParserEvidenceFiles}/${summary.cssFiles} file(s); require PostCSS rule/declaration spans, raw trivia hashes, and zero parse errors before parser evidence admission.` }));
25
33
  if (summary.htmlBlockedFiles) items.push(missingEvidenceItem({ code: signals.htmlStructuralMerge, scope: 'layout-markup-graph', kind: 'html-structural-merge-proof', proofLevel: 'html-structural-merge', action: 'review', summary: `HTML project merge has ${summary.htmlBlockedFiles} blocked file(s); supply parser/source-span evidence, stable element identity, and runtime-boundary proof before admission.` }));
26
34
  if (summary.cssBlockedFiles) items.push(missingEvidenceItem({ code: signals.cssCascadeMerge, scope: 'layout-style-graph', kind: 'css-cascade-merge-proof', proofLevel: 'css-cascade-merge', action: 'review', summary: `CSS project merge has ${summary.cssBlockedFiles} blocked file(s); supply parser/cascade/scope evidence and keep browser claims false until runtime proof passes.` }));
27
35
  if (summary.htmlCssMergedFiles && !summary.htmlCssBrowserRuntimeProofs) items.push(missingEvidenceItem({ code: signals.htmlCssBrowserRuntimeProof, scope: 'browser-proof', kind: 'browser-runtime-proof', proofLevel: 'browser-runtime-proof', action: 'review', summary: 'HTML/CSS structural source merge was available, but browser DOM/cascade/layout/runtime proof was not attached; keep browser equivalence claims false.', suggestedInput: { browserRuntimeProof: true } }));
@@ -29,6 +37,8 @@ function htmlCssProjectMergeMissingEvidenceItems(summary, signals, missingEviden
29
37
  }
30
38
 
31
39
  function htmlCssProjectMergeMatrixProofStatus(level, summary) {
40
+ if (level === 'html-parser-source-evidence') return summary.htmlFiles ? (summary.htmlParserEvidenceFailedFiles ? 'failed' : summary.htmlParserEvidenceFiles === summary.htmlFiles ? 'passed' : 'missing') : 'absent';
41
+ if (level === 'css-parser-source-evidence') return summary.cssFiles ? (summary.cssParserEvidenceFailedFiles ? 'failed' : summary.cssParserEvidenceFiles === summary.cssFiles ? 'passed' : 'missing') : 'absent';
32
42
  if (level === 'html-structural-merge') return summary.htmlFiles ? (summary.htmlBlockedFiles ? 'failed' : summary.htmlMergedFiles ? 'passed' : 'missing') : 'absent';
33
43
  if (level === 'css-cascade-merge') return summary.cssFiles ? (summary.cssBlockedFiles ? 'failed' : summary.cssMergedFiles ? 'passed' : 'missing') : 'absent';
34
44
  if (level === 'browser-runtime-proof') return summary.htmlCssFiles ? (summary.htmlCssBrowserRuntimeProofs ? 'passed' : 'missing') : 'absent';
@@ -4,6 +4,8 @@ function htmlCssProjectSummary(files) {
4
4
  htmlFiles: htmlFiles.length, cssFiles: cssFiles.length, htmlCssFiles: htmlCssFiles.length,
5
5
  htmlMergedFiles: htmlFiles.filter(isMerged).length, cssMergedFiles: cssFiles.filter(isMerged).length, htmlCssMergedFiles: htmlCssFiles.filter(isMerged).length,
6
6
  htmlBlockedFiles: htmlFiles.filter(isBlocked).length, cssBlockedFiles: cssFiles.filter(isBlocked).length, htmlCssBlockedFiles: htmlCssFiles.filter(isBlocked).length,
7
+ htmlParserEvidenceFiles: htmlFiles.filter(hasHtmlParserEvidence).length, cssParserEvidenceFiles: cssFiles.filter(hasCssParserEvidence).length, htmlCssParserEvidenceFiles: htmlCssFiles.filter((file) => hasHtmlParserEvidence(file) || hasCssParserEvidence(file)).length,
8
+ htmlParserEvidenceFailedFiles: htmlFiles.filter(hasParserEvidenceFailure).length, cssParserEvidenceFailedFiles: cssFiles.filter(hasParserEvidenceFailure).length, htmlCssParserEvidenceFailedFiles: htmlCssFiles.filter(hasParserEvidenceFailure).length,
7
9
  htmlCssBrowserRuntimeProofs: htmlCssFiles.filter(hasBrowserRuntimeProof).length
8
10
  };
9
11
  }
@@ -13,6 +15,15 @@ function isCssProjectFile(file) { return String(file?.language ?? '').toLowerCas
13
15
  function isMerged(file) { return file.status === 'merged'; }
14
16
  function isBlocked(file) { return file.status === 'blocked'; }
15
17
  function stripQuery(sourcePath) { return String(sourcePath ?? '').replace(/[?#].*$/, ''); }
18
+ function hasHtmlParserEvidence(file) {
19
+ const evidence = file?.result?.parserEvidence;
20
+ return evidence?.parseErrors === 0 && evidence.sourceCodeLocationInfo === true && evidence.parserBackedSourceSpans === true && evidence.parserNames?.includes('parse5');
21
+ }
22
+ function hasCssParserEvidence(file) {
23
+ const evidence = file?.result?.parserEvidence;
24
+ return evidence?.parseErrors === 0 && evidence.sourceCodeLocationInfo === true && evidence.parserBackedSourceSpans === true && evidence.parserBackedDeclarationSpans === true && evidence.parserBackedTriviaHashes === true;
25
+ }
26
+ function hasParserEvidenceFailure(file) { return (file?.result?.parserEvidence?.parseErrors ?? 0) > 0; }
16
27
  function hasBrowserRuntimeProof(file) {
17
28
  const admission = file?.result?.admission ?? file?.admission ?? {};
18
29
  return admission.browserRuntimeEquivalenceClaim === true || admission.browserCascadeEquivalenceClaim === true || admission.browserRenderEquivalenceClaim === true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapeshift-labs/frontier-lang-compiler",
3
- "version": "0.2.157",
3
+ "version": "0.2.159",
4
4
  "description": "Compiler facade for Frontier Lang source documents and language projection adapters.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -63,8 +63,8 @@
63
63
  "dependencies": {
64
64
  "@shapeshift-labs/frontier-lang-c": "0.2.9",
65
65
  "@shapeshift-labs/frontier-lang-checker": "0.3.8",
66
- "@shapeshift-labs/frontier-lang-css": "^0.1.5",
67
- "@shapeshift-labs/frontier-lang-html": "^0.1.3",
66
+ "@shapeshift-labs/frontier-lang-css": "^0.1.7",
67
+ "@shapeshift-labs/frontier-lang-html": "^0.1.5",
68
68
  "@shapeshift-labs/frontier-lang-javascript": "0.2.9",
69
69
  "@shapeshift-labs/frontier-lang-kernel": "0.3.12",
70
70
  "@shapeshift-labs/frontier-lang-parser": "0.3.8",