feat(http): expand static node:http parity (#403)

- Add typed HTTP header validation, outgoing header APIs, and lifecycle state.
- Emit 100, 102, and string-valued 103 informational responses in C and LLVM.
- Cover the behavior with differential fixtures and update compatibility data.
This commit is contained in:
Chris Tate
2026-09-24 00:36:10 -05:00
committed by GitHub
parent 6242053fc9
commit 3f0de2167c
20 changed files with 1380 additions and 350 deletions
@@ -8,8 +8,8 @@
"tiers": {
"static": {
"replace-refusal": 46,
"verify-gap": 2672,
"audit-partial": 494,
"verify-gap": 2642,
"audit-partial": 524,
"classify": 2,
"implement": 81
},
@@ -47149,12 +47149,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.request.getHeader",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "partial",
@@ -47184,12 +47186,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.request.getHeaderNames",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -47217,12 +47221,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.request.getHeaders",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -47250,12 +47256,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.request.getRawHeaderNames",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -47283,12 +47291,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.request.hasHeader",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -47316,12 +47326,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.request.removeHeader",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "partial",
@@ -47351,12 +47363,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.request.setHeader",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "partial",
@@ -47700,12 +47714,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.path",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -47733,12 +47749,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.method",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -47766,12 +47784,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.host",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -47799,12 +47819,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.protocol",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -47898,12 +47920,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.writableEnded",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -48568,12 +48592,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.listening",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -49333,12 +49359,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.response.getHeaderNames",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -49366,12 +49394,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.response.getHeaders",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -49618,12 +49648,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.response.writeContinue",
"tests": [
"tests/corpus/2956-http-static-informational.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -49651,12 +49683,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.response.writeEarlyHints",
"tests": [
"tests/corpus/2956-http-static-informational.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -49721,12 +49755,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.response.writeProcessing",
"tests": [
"tests/corpus/2956-http-static-informational.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -49820,12 +49856,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.headersSent",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -49952,12 +49990,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.statusCode",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -50051,12 +50091,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.writableEnded",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -50319,12 +50361,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.complete",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -50456,12 +50500,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.httpVersion",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -50489,12 +50535,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.method",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -50626,12 +50674,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.statusCode",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -50768,12 +50818,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.url",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -51514,12 +51566,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.headersSent",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -51618,12 +51672,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.writableEnded",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -52108,12 +52164,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.http.validateHeaderName",
"tests": [
"tests/corpus/2953-http-header-validation.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -52141,12 +52199,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:http",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:http.http.validateHeaderValue",
"tests": [
"tests/corpus/2953-http-header-validation.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -555,9 +555,9 @@
"apiEntries": 174,
"static": {
"supported": 0,
"partial": 40,
"partial": 70,
"refused": 0,
"not-implemented": 134,
"not-implemented": 104,
"by-design": 0,
"unreviewed": 0,
"not-applicable": 0
@@ -62161,6 +62161,10 @@
"tests/corpus/2700-http-static-trailers.ts",
"tests/corpus/2701-http-static-trailer-wire.ts",
"tests/corpus/2702-http-static-trailer-end.ts",
"tests/corpus/2953-http-header-validation.ts",
"tests/corpus/2954-http-outgoing-headers.ts",
"tests/corpus/2955-http-static-state.ts",
"tests/corpus/2956-http-static-informational.ts",
"tests/fixtures/server/cases/http-trailers/main.ts"
]
},
@@ -62828,8 +62832,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.request.getHeader",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "partial",
@@ -62858,8 +62865,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.request.getHeaderNames",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -62885,8 +62895,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.request.getHeaders",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -62912,8 +62925,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.request.getRawHeaderNames",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -62939,8 +62955,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.request.hasHeader",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -62966,8 +62985,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.request.removeHeader",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "partial",
@@ -62996,8 +63018,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.request.setHeader",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "partial",
@@ -63291,8 +63316,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.path",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -63318,8 +63346,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.method",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -63345,8 +63376,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.host",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -63372,8 +63406,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.protocol",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -63453,8 +63490,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.writableEnded",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -64006,8 +64046,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.listening",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -64648,8 +64691,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.response.getHeaderNames",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -64675,8 +64721,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.response.getHeaders",
"tests": [
"tests/corpus/2954-http-outgoing-headers.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -64890,8 +64939,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.response.writeContinue",
"tests": [
"tests/corpus/2956-http-static-informational.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -64917,8 +64969,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.response.writeEarlyHints",
"tests": [
"tests/corpus/2956-http-static-informational.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -64976,8 +65031,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.response.writeProcessing",
"tests": [
"tests/corpus/2956-http-static-informational.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -65057,8 +65115,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.headersSent",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -65165,8 +65226,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.statusCode",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -65246,8 +65310,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.writableEnded",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -65468,8 +65535,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.complete",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -65582,8 +65652,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.httpVersion",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -65609,8 +65682,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.method",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -65723,8 +65799,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.statusCode",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -65843,8 +65922,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.url",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -66461,8 +66543,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.headersSent",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -66548,8 +66633,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.writableEnded",
"tests": [
"tests/corpus/2955-http-static-state.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -66963,8 +67051,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.http.validateHeaderName",
"tests": [
"tests/corpus/2953-http-header-validation.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -66990,8 +67081,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:http"
"status": "partial",
"evidence": "compiler-feature:http.http.validateHeaderValue",
"tests": [
"tests/corpus/2953-http-header-validation.ts"
]
},
"dynamic": {
"status": "not-implemented",
+17
View File
@@ -599,6 +599,23 @@ function publicDetail(tier) {
if (source.startsWith("compiler-feature:stream.") || source.startsWith("compiler-feature:webstreams.")) {
return "Implemented for the documented static async-iteration subset.";
}
if (source.startsWith("compiler-feature:http.http.validateHeader")) {
return "Static header validation is implemented for the tested call shapes.";
}
if (source.startsWith("compiler-feature:http.request.getHeader") ||
source.startsWith("compiler-feature:http.request.getRawHeaderNames") ||
source.startsWith("compiler-feature:http.request.hasHeader") ||
source.startsWith("compiler-feature:http.request.removeHeader") ||
source.startsWith("compiler-feature:http.request.setHeader") ||
source.startsWith("compiler-feature:http.response.getHeader")) {
return "Static outgoing header reads and mutations support the tested string-value shapes.";
}
if (/^compiler-feature:http\.(?:path|method|host|protocol|listening|headersSent|writableEnded|complete|httpVersion|url|statusCode)$/.test(source)) {
return "Static HTTP request metadata and message state support the tested lifecycle.";
}
if (/^compiler-feature:http\.response\.write(?:Continue|Processing|EarlyHints)$/.test(source)) {
return "Static HTTP/1.1 informational responses support the tested no-callback forms; Early Hints accepts string-valued fields.";
}
return "Implemented for the documented scriptc module-loader subset.";
}
if (source.startsWith("compiler-chapter-policy:")) {
@@ -79,6 +79,10 @@
"stdlib.abort": ["tests/harness/fetch-conformance.test.ts"]
},
"features": [
{ "chapter": "http", "signatures": ["`http.validateHeaderName(name[, label])`", "`http.validateHeaderValue(name, value)`"], "status": "partial", "evidence": ["tests/corpus/2953-http-header-validation.ts"] },
{ "chapter": "http", "signatures": ["`request.getHeader(name)`", "`request.getHeaderNames()`", "`request.getHeaders()`", "`request.getRawHeaderNames()`", "`request.hasHeader(name)`", "`request.removeHeader(name)`", "`request.setHeader(name, value)`", "`response.getHeaderNames()`", "`response.getHeaders()`"], "status": "partial", "evidence": ["tests/corpus/2954-http-outgoing-headers.ts"] },
{ "chapter": "http", "signatures": ["`path` Type: {string} The request path.", "`method` Type: {string} The request method.", "`host` Type: {string} The request host.", "`protocol` Type: {string} The request protocol.", "`listening` Type: {boolean} Indicates whether or not the server is listening for connections.", "`headersSent` Type: {boolean}", "`writableEnded` Type: {boolean}", "`complete` Type: {boolean}", "`httpVersion` Type: {string}", "`method` Type: {string}", "`url` Type: {string}", "`statusCode` Type: {number}", "`statusCode` Type: {number} **Default:** `200`"], "status": "partial", "evidence": ["tests/corpus/2955-http-static-state.ts"] },
{ "chapter": "http", "signatures": ["`response.writeContinue()`", "`response.writeProcessing()`", "`response.writeEarlyHints(hints[, callback])`"], "status": "partial", "evidence": ["tests/corpus/2956-http-static-informational.ts"] },
{ "chapter": "http", "signatures": ["`request.cork()`", "`request.flushHeaders()`", "`request.uncork()`", "`response.addTrailers(headers)`", "`response.cork()`", "`response.flushHeaders()`", "`response.uncork()`", "`headersDistinct` Type: {Object}", "`rawTrailers` Type: {string\\[]}", "`trailers` Type: {Object}", "`trailersDistinct` Type: {Object}", "`outgoingMessage.addTrailers(headers)`", "`outgoingMessage.cork()`", "`outgoingMessage.flushHeaders()`", "`outgoingMessage.uncork()`", "`writableCorked` Type: {number}"], "status": "partial", "evidence": ["tests/corpus/2700-http-static-trailers.ts", "tests/corpus/2701-http-static-trailer-wire.ts", "tests/corpus/2702-http-static-trailer-end.ts", "tests/fixtures/server/cases/http-trailers/main.ts"] },
{ "chapter": "buffer", "signatures": ["`buf.readBigInt64BE([offset])`", "`buf.readBigInt64LE([offset])`", "`buf.readBigUInt64BE([offset])`", "`buf.readBigUInt64LE([offset])`", "`buf.writeBigInt64BE(value[, offset])`", "`buf.writeBigInt64LE(value[, offset])`", "`buf.writeBigUInt64BE(value[, offset])`", "`buf.writeBigUInt64LE(value[, offset])`"], "status": "supported", "evidence": ["tests/corpus/2902-bigint-bytes.ts", "tests/corpus/2904-bigint-errors.ts"] },
{ "chapter": "environment_variables", "symbols": ["export"], "status": "not-applicable" },