@shapeshift-labs/frontier-lang-compiler 0.2.177 → 0.2.179

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.
@@ -10,7 +10,7 @@ export interface JsTsProjectSafeMergeSummary {
10
10
  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;
11
11
  readonly htmlParserEvidenceFiles:number; readonly cssParserEvidenceFiles:number; readonly htmlCssParserEvidenceFiles:number; readonly htmlParserEvidenceFailedFiles:number; readonly cssParserEvidenceFailedFiles:number; readonly htmlCssParserEvidenceFailedFiles:number;
12
12
  readonly htmlIdentityEvidenceFiles:number; readonly cssSelectorTargetEvidenceFiles:number; readonly htmlCssStructuralTargetEvidenceFiles:number; readonly cssSelectorTargetGraphEvidenceFiles:number; readonly cssSelectorSpecificityEvidenceFiles:number; readonly cssSelectorTargetMoveFiles:number; readonly htmlExplicitIdentityEvidenceFiles:number; readonly htmlPathOnlyIdentityResidualFiles:number; readonly htmlDuplicateIdentityEvidenceFiles:number; readonly htmlDuplicateIdentityKeys:number; readonly htmlRuntimeBoundaryEvidenceFiles:number; readonly htmlFrameworkBoundaryEvidenceFiles:number; readonly htmlProofGapBlockedFiles:number; readonly htmlIdentityEvidenceFailedFiles:number; readonly cssSelectorTargetConflictFiles:number; readonly htmlCssStructuralTargetEvidenceFailedFiles:number; readonly cssSelectorTargetRebasedFiles:number;
13
- readonly cssScopedCascadeFiles:number; readonly cssScopedCascadeEvidenceFiles:number; readonly cssScopedCascadeBlockedFiles:number; readonly cssDependencySurfaceFiles:number; readonly cssDependencyGraphEvidenceFiles:number; readonly cssDependencyGraphMissingProofFiles:number; readonly cssDependencyGraphBlockedFiles:number;
13
+ readonly cssScopedCascadeFiles:number; readonly cssScopedCascadeEvidenceFiles:number; readonly cssScopedCascadeBlockedFiles:number; readonly cssDuplicateCascadeKeyBlockedFiles:number; readonly cssDependencySurfaceFiles:number; readonly cssDependencyGraphEvidenceFiles:number; readonly cssDependencyGraphMissingProofFiles:number; readonly cssDependencyGraphBlockedFiles:number;
14
14
  readonly projectGraphConflicts: number; readonly projectGraphDeltaEvidenceIncluded: number; readonly projectGraphEvidenceIncluded: number; readonly outputProjectGraphConflicts:number; readonly projectGraphCssModuleUseSiteConflicts:number; readonly projectGraphDeltaConflicts: number; readonly projectGraphCssModuleUseSiteBlockers:number; readonly projectGraphLimitConflicts: number; readonly projectGraphCssModuleUseSiteGraphs:number; readonly projectGraphCssModuleUseSites:number; readonly projectGraphCssModuleImportBindings:number; readonly projectGraphPublicContractConflicts: number; readonly projectGraphSourceSpanConflicts: number;
15
15
  readonly projectGraphCompilerTypeConflicts: number; readonly projectGraphRuntimeRegionConflicts: number; readonly projectGraphScopeUseDefConflicts: number; readonly projectGraphJsxPropConflicts: number; readonly projectGraphJsxRenderRiskConflicts: number; readonly projectGraphReExportIdentityConflicts: number; readonly projectGraphModuleDeclarationShapeConflicts: number; readonly projectGraphExportAssignmentShapeConflicts: number;
16
16
  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;
@@ -42,7 +42,7 @@ function htmlCssProjectMergeMissingEvidenceItems(summary, signals, missingEviden
42
42
  if (summary.htmlFiles && summary.htmlIdentityEvidenceFiles !== summary.htmlFiles) items.push(missingEvidenceItem({ code: signals.htmlIdentityEvidence, scope: 'layout-markup-identity', kind: 'html-identity-evidence', proofLevel: 'html-identity-evidence', action: 'review', summary: `HTML project merge has structural identity evidence for ${summary.htmlIdentityEvidenceFiles}/${summary.htmlFiles} file(s) with ${summary.htmlDuplicateIdentityEvidenceFiles ?? 0} duplicate identity evidence file(s); require parser-backed structural spans, unique explicit identity keys, and stable explicit/path identity accounting before structural admission.` }));
43
43
  if (summary.cssFiles && (summary.cssSelectorTargetEvidenceFiles !== summary.cssFiles || summary.cssSelectorTargetConflictFiles)) items.push(missingEvidenceItem({ code: signals.cssSelectorTargetEvidence, scope: 'layout-style-targets', kind: 'css-selector-target-evidence', proofLevel: 'css-selector-target-evidence', action: 'review', summary: `CSS project merge has selector-target evidence for ${summary.cssSelectorTargetEvidenceFiles}/${summary.cssFiles} file(s) with ${summary.cssSelectorTargetConflictFiles} selector target conflict(s); require selector target graph and proven rebase before target-moving merges.` }));
44
44
  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); for runtime-boundary changes attach htmlRuntimeBoundaryProofsByPath[sourcePath] with exact base/worker/head/output binding, and for duplicate identity keys make explicit HTML identities unique before admission.`, suggestedInput: { htmlRuntimeBoundaryProofsByPath: true, htmlUniqueExplicitIdentityKeys: true } }));
45
- 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), including ${summary.cssScopedCascadeBlockedFiles} scoped cascade proof block(s); supply parser/cascade/scope evidence, require scopedCascadeGraphHash for changed declarations under @media/@supports/@container/@layer/@scope or nested scopes, and keep browser claims false until runtime proof passes.` }));
45
+ 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), including ${summary.cssDuplicateCascadeKeyBlockedFiles ?? 0} duplicate cascade-key blocker(s) and ${summary.cssScopedCascadeBlockedFiles} scoped cascade proof block(s); supply parser/cascade/scope evidence, require ordered cascade occurrence evidence for duplicate same-property declarations, require scopedCascadeGraphHash for changed declarations under @media/@supports/@container/@layer/@scope or nested scopes, and keep browser claims false until runtime proof passes.` }));
46
46
  if (summary.cssDependencySurfaceFiles && (summary.cssDependencyGraphEvidenceFiles !== summary.cssDependencySurfaceFiles || summary.cssDependencyGraphMissingProofFiles || summary.cssDependencyGraphBlockedFiles)) items.push(missingEvidenceItem({ code: signals.cssDependencyGraphEvidence, scope: 'layout-style-graph', kind: 'css-dependency-graph-evidence', proofLevel: 'css-dependency-graph', action: 'review', summary: `CSS project merge has dependency graph evidence for ${summary.cssDependencyGraphEvidenceFiles}/${summary.cssDependencySurfaceFiles} dependency-surface file(s), ${summary.cssDependencyGraphMissingProofFiles} missing dependency graph proof(s), and ${summary.cssDependencyGraphBlockedFiles} dependency blocker(s); require custom property, var() fallback, @keyframes/animation-name, @font-face, and url() asset graph evidence before cascade/browser equivalence claims.`, suggestedInput: { cssDependencyGraphEvidence: true } }));
47
47
  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 } }));
48
48
  return items;
@@ -13,6 +13,7 @@ function htmlCssProjectSummary(files) {
13
13
  htmlIdentityEvidenceFailedFiles: htmlFiles.filter(hasHtmlIdentityEvidenceFailure).length, cssSelectorTargetConflictFiles: cssFiles.filter(hasCssSelectorTargetConflict).length, htmlCssStructuralTargetEvidenceFailedFiles: htmlCssFiles.filter((file) => hasHtmlIdentityEvidenceFailure(file) || hasCssSelectorTargetConflict(file)).length,
14
14
  cssSelectorTargetRebasedFiles: cssFiles.filter(hasCssSelectorTargetRebase).length,
15
15
  cssScopedCascadeFiles: cssFiles.filter(hasCssScopedCascadeScope).length, cssScopedCascadeEvidenceFiles: cssFiles.filter(hasCssScopedCascadeEvidence).length, cssScopedCascadeBlockedFiles: cssFiles.filter(hasCssScopedCascadeMissingProof).length,
16
+ cssDuplicateCascadeKeyBlockedFiles: cssFiles.filter(hasCssDuplicateCascadeKeyConflict).length,
16
17
  cssDependencySurfaceFiles: cssFiles.filter(hasCssDependencySurface).length, cssDependencyGraphEvidenceFiles: cssFiles.filter((file) => hasCssDependencySurface(file) && hasCssDependencyGraphEvidence(file)).length, cssDependencyGraphMissingProofFiles: cssFiles.filter(hasCssDependencyGraphMissingProof).length, cssDependencyGraphBlockedFiles: cssFiles.filter(hasCssDependencyGraphBlockedConflict).length,
17
18
  htmlCssBrowserRuntimeProofs: htmlCssFiles.filter(hasBrowserRuntimeProof).length
18
19
  };
@@ -81,6 +82,9 @@ function hasFrameworkBoundaryConflict(file) {
81
82
  return (file?.result?.conflicts ?? file?.conflicts ?? []).some((conflict) => HtmlFrameworkBoundaryReasonCodes.has(conflict?.details?.reasonCode));
82
83
  }
83
84
  function hasCssSelectorTargetRebase(file) { return (file?.result?.selectorTargetEvidence?.rebasedChangeCount ?? 0) > 0; }
85
+ function hasCssDuplicateCascadeKeyConflict(file) {
86
+ return cssFileConflicts(file).some((conflict) => conflict.code === 'css-duplicate-cascade-key-blocked' || conflict?.details?.reasonCode === 'css-duplicate-cascade-key-order-unproved');
87
+ }
84
88
  function hasCssScopedCascadeScope(file) {
85
89
  return cssScopedRuleCount(file) > 0 || hasCssScopedCascadeProofReason(file) || file?.result?.parserEvidence?.scopedCascadeGraphHashPresent === false;
86
90
  }
@@ -131,6 +131,12 @@ function htmlProofGapConflict(id, sourcePath, reasonCode, details = {}, code = '
131
131
 
132
132
  function htmlProofGapSummary(reasonCode) {
133
133
  if (reasonCode === 'html-duplicate-explicit-identity') return 'Duplicate explicit HTML identity keys make structural target admission ambiguous.';
134
+ if (reasonCode === 'script-runtime-boundary') return 'HTML script execution can mutate document, module, network, and global runtime behavior and requires source-bound host evidence.';
135
+ if (reasonCode === 'style-runtime-boundary') return 'HTML style blocks affect browser cascade and rendering and require source-bound host evidence.';
136
+ if (reasonCode === 'template-runtime-boundary') return 'HTML template content can be cloned, stamped, or consumed by host code and requires source-bound host evidence.';
137
+ if (reasonCode === 'slot-runtime-boundary') return 'HTML slots participate in shadow-DOM distribution and require source-bound host evidence.';
138
+ if (reasonCode === 'custom-element-runtime-boundary') return 'Custom element upgrade, lifecycle, attributes, and shadow behavior require source-bound host evidence.';
139
+ if (reasonCode === 'framework-directive-boundary') return 'Framework directive attributes are interpreted by framework runtimes and require source-bound host evidence.';
134
140
  if (reasonCode === 'event-handler-runtime-boundary') return 'HTML event handler attributes execute in the browser runtime and require source-bound host evidence.';
135
141
  if (reasonCode === 'inline-style-runtime-boundary') return 'HTML inline style attributes affect browser cascade and rendering and require source-bound host evidence.';
136
142
  if (reasonCode === 'iframe-runtime-boundary' || reasonCode === 'iframe-srcdoc-runtime-boundary') return reasonCode === 'iframe-runtime-boundary' ? 'HTML iframe runtime attributes affect nested browsing-context execution and require source-bound host evidence.' : 'HTML iframe srcdoc attributes define nested browsing-context content and require source-bound host evidence.';
@@ -145,6 +151,12 @@ function htmlProofGapSummary(reasonCode) {
145
151
 
146
152
  function htmlProofGapNextProof(reasonCode) {
147
153
  if (reasonCode === 'html-duplicate-explicit-identity') return 'Rename duplicate explicit HTML identity keys or supply parser-backed identity evidence with unique explicitIdentityKeys on every side.';
154
+ if (reasonCode === 'script-runtime-boundary') return 'Attach htmlRuntimeBoundaryProofsByPath[sourcePath] with kind html-source-bound-runtime-boundary-proof, status passed, sourcePath, reasonCode, side, boundary "html-script-runtime", and exact base/worker/head/output source text or hashes.';
155
+ if (reasonCode === 'style-runtime-boundary') return 'Attach htmlRuntimeBoundaryProofsByPath[sourcePath] with kind html-source-bound-runtime-boundary-proof, status passed, sourcePath, reasonCode, side, boundary "html-style-runtime", and exact base/worker/head/output source text or hashes.';
156
+ if (reasonCode === 'template-runtime-boundary') return 'Attach htmlRuntimeBoundaryProofsByPath[sourcePath] with kind html-source-bound-runtime-boundary-proof, status passed, sourcePath, reasonCode, side, boundary "html-template-runtime", and exact base/worker/head/output source text or hashes.';
157
+ if (reasonCode === 'slot-runtime-boundary') return 'Attach htmlRuntimeBoundaryProofsByPath[sourcePath] with kind html-source-bound-runtime-boundary-proof, status passed, sourcePath, reasonCode, side, boundary "html-slot-runtime", and exact base/worker/head/output source text or hashes.';
158
+ if (reasonCode === 'custom-element-runtime-boundary') return 'Attach htmlRuntimeBoundaryProofsByPath[sourcePath] with kind html-source-bound-runtime-boundary-proof, status passed, sourcePath, reasonCode, side, boundary "html-custom-element-runtime", and exact base/worker/head/output source text or hashes.';
159
+ if (reasonCode === 'framework-directive-boundary') return 'Attach htmlRuntimeBoundaryProofsByPath[sourcePath] with kind html-source-bound-runtime-boundary-proof, status passed, sourcePath, reasonCode, side, boundary "html-framework-directive", boundaryAttributes for the changed directive attributes, and exact base/worker/head/output source text or hashes.';
148
160
  if (reasonCode === 'event-handler-runtime-boundary') return 'Attach htmlRuntimeBoundaryProofsByPath[sourcePath] with kind html-source-bound-runtime-boundary-proof, status passed, sourcePath, reasonCode, side, boundary, boundaryAttributes, and exact base/worker/head/output source text or hashes.';
149
161
  if (reasonCode === 'inline-style-runtime-boundary') return 'Attach htmlRuntimeBoundaryProofsByPath[sourcePath] with kind html-source-bound-runtime-boundary-proof, status passed, sourcePath, reasonCode, side, boundary "html-inline-style-attribute", boundaryAttributes ["style"], and exact base/worker/head/output source text or hashes.';
150
162
  if (reasonCode === 'iframe-runtime-boundary' || reasonCode === 'iframe-srcdoc-runtime-boundary') return 'Attach htmlRuntimeBoundaryProofsByPath[sourcePath] with kind html-source-bound-runtime-boundary-proof, status passed, sourcePath, reasonCode, side, boundary, boundaryAttributes, and exact base/worker/head/output source text or hashes.';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapeshift-labs/frontier-lang-compiler",
3
- "version": "0.2.177",
3
+ "version": "0.2.179",
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.15",
67
- "@shapeshift-labs/frontier-lang-html": "^0.1.13",
66
+ "@shapeshift-labs/frontier-lang-css": "^0.1.16",
67
+ "@shapeshift-labs/frontier-lang-html": "^0.1.14",
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",