Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR aligns the runner, server, UI, schemas, and docs around two main goals: (1) production-parity header behavior (multi-value + nginx remove semantics) and (2) clearer config/API contracts for HTTP-WASM vs Proxy-WASM, including consistent relative dotenv.path resolution across loading flows.
Changes:
- Add tuple-based internal header storage to correctly support multi-valued headers and nginx-compatible remove/get semantics, plus integration/unit coverage.
- Split test config into HTTP-WASM (
request.path) vs Proxy-WASM (request.url) variants, and update/api/execute, frontend config handling, schemas, and docs accordingly. - Normalize relative
dotenv.pathhandling across server, test framework, and UI, and document the behavior.
Reviewed changes
Copilot reviewed 52 out of 53 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| test-applications/cdn-apps/rust/cdn-headers/src/lib.rs | Adds Rust Proxy-WASM headers validation app used to verify multi-value/remove semantics. |
| test-applications/cdn-apps/rust/cdn-headers/Cargo.toml | Declares the new Rust cdn-headers crate. |
| test-applications/cdn-apps/rust/Cargo.toml | Adds cdn-headers to the Rust workspace members. |
| test-applications/cdn-apps/rust/Cargo.lock | Locks the new cdn-headers workspace package. |
| server/utils/dotenv-loader.ts | Adds resolveDotenvPath() helper for consistent relative path resolution. |
| server/test-framework/suite-runner.ts | Resolves relative dotenv.path against the config file directory in loadConfigFile(). |
| server/server.ts | Applies dotenv path resolution; updates /api/execute to accept path for HTTP-WASM (and url legacy). |
| server/schemas/config.ts | Splits config schema into CDN vs HTTP variants (url vs path) and keeps CDN alias for backward compat. |
| server/runner/types.ts | Adds HeaderTuples type for internal multi-value header storage. |
| server/runner/ProxyWasmRunner.ts | Improves built-in URL detection; strips GET/HEAD bodies for fetch; surfaces http_call failures in logs. |
| server/runner/PropertyAccessControl.ts | Adds request.x_real_ip as a built-in read-only property. |
| server/runner/HostFunctions.ts | Switches internal header maps to tuple arrays; updates header hostcalls accordingly. |
| server/runner/HeaderManager.ts | Adds tuple-based serialize/deserialize/normalize + record/tuple conversion helpers. |
| server/tests/unit/utils/dotenv-loader.test.ts | Adds unit tests for resolveDotenvPath(). |
| server/tests/unit/test-framework/suite-runner.test.ts | Adds unit tests ensuring relative dotenv paths resolve against the config directory. |
| server/tests/unit/schemas/config.test.ts | Adds tests for HTTP-WASM config variant and backward compatibility behavior. |
| server/tests/unit/runner/HeaderManager.test.ts | Adds unit coverage for tuple-based header helpers and duplicate key handling. |
| server/tests/integration/cdn-apps/headers/multi-value-headers.test.ts | Adds integration coverage for multi-value header behavior across variants. |
| schemas/fastedge-config.test.schema.json | Updates JSON Schema to reflect appType-based union (CDN vs HTTP) and request shape differences. |
| schemas/api-config.schema.json | Updates API schema to accept the new config union shape. |
| frontend/src/views/ProxyWasmView/ProxyWasmView.tsx | Stores calculated properties separately (read-only) to avoid feedback loops. |
| frontend/src/stores/types.ts | Adds calculatedProperties to config state; updates TestConfig request type union. |
| frontend/src/stores/slices/requestSlice.ts | Adjusts default request values (GET, empty bodies/headers). |
| frontend/src/stores/slices/requestSlice.test.ts | Updates tests to match new default request values. |
| frontend/src/stores/slices/configSlice.ts | Handles HTTP request export/import with path; adds calculated properties action/state. |
| frontend/src/stores/slices/configSlice.test.ts | Updates expectations for changed defaults and request union typing. |
| frontend/src/stores/index.test.ts | Updates request union access in store composition tests. |
| frontend/src/components/proxy-wasm/ServerPropertiesPanel/ServerPropertiesPanel.tsx | Plumbs calculatedProperties through to the editor. |
| frontend/src/components/proxy-wasm/PropertiesEditor/PropertiesEditor.tsx | Overlays calculated properties into read-only defaults; forces DictionaryInput refresh. |
| frontend/src/components/common/DictionaryInput/DictionaryInput.tsx | Tweaks enabled-state derivation and sync behavior for externally supplied values. |
| frontend/src/components/common/ConfigButtons/ConfigButtons.tsx | Resolves relative dotenv path in VSCode flow; warns about relative paths in browser flows. |
| frontend/src/App.tsx | Stores calculated properties separately on WS events; warns on relative dotenv in drag/drop flow. |
| frontend/src/api/index.ts | Reuses store TestConfig type; sends path for HTTP-WASM execute calls. |
| docs/WEBSOCKET.md | Formatting fixes in event docs table. |
| docs/TEST_FRAMEWORK.md | Updates cross-links (DEBUGGER doc reference). |
| docs/TEST_CONFIG.md | Documents the appType-based config union and url-vs-path request differences. |
| docs/RUNNER.md | Formatting fixes in tables; keeps runner contract documentation aligned. |
| docs/quickstart.md | Updates example config to include appType: "proxy-wasm". |
| docs/INDEX.md | Formatting fixes in exports table. |
| docs/DEBUGGER.md | Formatting fixes in env var table. |
| docs/API.md | Documents /api/execute HTTP-WASM path vs legacy url behavior and updated TestConfig typing. |
| context/FUTURE_ENHANCEMENTS.md | Adds notes on potential dotenv hot reload / secret rollover slot support. |
| context/features/NPM_PACKAGE_PLAN.md | Updates schema file list to match new config schemas. |
| context/features/MULTI_VALUE_HEADERS.md | Adds detailed design/implementation notes for tuple-based headers + nginx behavior parity. |
| context/features/HTTP_WASM_UI.md | Updates docs to reflect { path } in HTTP-WASM client calls. |
| context/features/HTTP_WASM_PREVIEW.md | Updates preview flow description to reference { path }. |
| context/features/HTTP_WASM_IMPLEMENTATION.md | Updates endpoint examples to use path for HTTP-WASM. |
| context/features/HTTP_CALL_IMPLEMENTATION.md | Updates last-updated date; documents GET/HEAD body stripping and log surfacing. |
| context/features/DOTENV.md | Documents relative dotenv resolution behavior across flows; updates file list. |
| context/features/CONFIG_SHARING.md | Updates examples/field notes for appType union and url-vs-path usage. |
| context/features/CONFIG_EDITOR.md | Updates validation notes for url (CDN) vs path (HTTP). |
| context/CONTEXT_INDEX.md | Adds index entry for MULTI_VALUE_HEADERS doc. |
| context/CHANGELOG.md | Adds changelog entries for config schema split, calculated properties, headers parity, and dotenv resolution. |
frontend/src/components/proxy-wasm/PropertiesEditor/PropertiesEditor.tsx
Show resolved
Hide resolved
* Updated dotenvPath to be relative to config files * split test-config files based on appType
qrdl
approved these changes
Apr 2, 2026
Collaborator
Author
|
🎉 This PR is included in version 0.1.4 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.