mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-01-11 14:52:55 +01:00
9.2 KiB
9.2 KiB
TASK-001 Checklist
Prerequisites
- Phase 1 complete (build is stable)
- Read README.md completely
- Review existing REST node implementation
- Review QueryEditor patterns for visual list builders
- Create branch:
git checkout -b feature/002-robust-http-node
Phase 1: Core Node Implementation (Day 1-2)
1.1 Node Definition
- Create
packages/noodl-runtime/src/nodes/std-library/data/httpnode.js - Define basic node structure (name, category, color, docs)
- Implement static inputs (url, method)
- Implement static outputs (status, success, failure, response)
- Register node in
packages/noodl-runtime/noodl-runtime.js - Verify node appears in Node Picker under "Data"
- Document in CHANGELOG.md
- Confidence level: __/10
1.2 Request Execution
- Implement
doFetchfunction (browser fetch API) - Handle GET requests
- Handle POST/PUT/PATCH with body
- Handle DELETE requests
- Implement timeout handling
- Implement error handling
- Test basic GET request works
- Document in CHANGELOG.md
- Confidence level: __/10
1.3 Dynamic Port Generation
- Implement
setupfunction for editor integration - Parse URL for path parameters (
{param}→ input port) - Generate ports from headers configuration
- Generate ports from query params configuration
- Generate ports from body fields configuration
- Generate ports from response mapping
- Listen for parameter changes → update ports
- Test: adding header creates input port
- Document in CHANGELOG.md
- Confidence level: __/10
Phase 2: Helper Modules (Day 2-3)
2.1 cURL Parser
- Create
packages/noodl-runtime/src/nodes/std-library/data/httpnode/curlParser.js - Parse URL from curl command
- Extract HTTP method (-X flag)
- Extract headers (-H flags)
- Extract query parameters (from URL)
- Extract body (-d or --data flag)
- Detect body type from Content-Type header
- Parse JSON body into fields
- Write unit tests
- Document in CHANGELOG.md
- Confidence level: __/10
2.2 JSONPath Extractor
- Create
packages/noodl-runtime/src/nodes/std-library/data/httpnode/jsonPath.js - Implement basic path extraction (
$.data.value) - Support array access (
$.items[0]) - Support nested paths (
$.data.users[0].name) - Handle null/undefined gracefully
- Write unit tests
- Document in CHANGELOG.md
- Confidence level: __/10
2.3 Authentication Presets
- Create
packages/noodl-runtime/src/nodes/std-library/data/httpnode/authPresets.js - Implement Bearer Token preset
- Implement Basic Auth preset
- Implement API Key preset (header and query variants)
- Test each preset generates correct headers
- Document in CHANGELOG.md
- Confidence level: __/10
2.4 Pagination Strategies
- Create
packages/noodl-runtime/src/nodes/std-library/data/httpnode/pagination.js - Implement Offset/Limit strategy
- Implement Cursor-based strategy
- Implement Page Number strategy
- Implement pagination loop in node
- Test: offset pagination fetches multiple pages
- Document in CHANGELOG.md
- Confidence level: __/10
Phase 3: Editor UI Components (Day 3-5)
3.1 Setup Editor Structure
- Create folder
packages/noodl-editor/src/editor/src/views/panels/propertyeditor/DataProviders/HttpNode/ - Create base
HttpNodeEditor.tsx - Register data provider for HTTP node
- Verify custom panel loads for HTTP node
- Document in CHANGELOG.md
- Confidence level: __/10
3.2 Headers Editor
- Create
HeadersEditor.tsx - Visual list with add/remove buttons
- Key and value inputs for each header
- "Use input port" toggle for dynamic values
- Update node parameters on change
- Test: adding header updates node
- Document in CHANGELOG.md
- Confidence level: __/10
3.3 Query Parameters Editor
- Create
QueryParamsEditor.tsx - Same pattern as HeadersEditor
- Key and value inputs
- "Use input port" toggle
- Update node parameters on change
- Test: adding query param creates port
- Document in CHANGELOG.md
- Confidence level: __/10
3.4 Body Editor
- Create
BodyEditor.tsx - Body type selector (JSON, Form-data, URL-encoded, Raw)
- For JSON: Visual field list editor
- For JSON: Field type selector (string, number, boolean, object, array)
- For Form-data: Key-value list
- For Raw: Text area input
- Update node parameters on change
- Test: JSON fields create input ports
- Document in CHANGELOG.md
- Confidence level: __/10
3.5 Response Mapping Editor
- Create
ResponseMappingEditor.tsx - Output name input
- JSONPath input with examples
- Output type selector
- Add/remove output mappings
- "Test" button to validate path against sample response
- Update node parameters on change
- Test: adding mapping creates output port
- Document in CHANGELOG.md
- Confidence level: __/10
3.6 Authentication Editor
- Create
AuthEditor.tsx - Auth type dropdown (None, Bearer, Basic, API Key)
- Dynamic inputs based on auth type
- Inputs can be static or connected (input ports)
- Update node parameters on change
- Test: Bearer creates Authorization header
- Document in CHANGELOG.md
- Confidence level: __/10
3.7 cURL Import Modal
- Create
CurlImportModal.tsx - "Import cURL" button in node panel
- Modal with text area for pasting
- "Import" button parses and populates fields
- Show preview of detected configuration
- Handle parse errors gracefully
- Test: paste curl → all fields populated
- Document in CHANGELOG.md
- Confidence level: __/10
3.8 Pagination Editor
- Create
PaginationEditor.tsx - Pagination type dropdown (None, Offset, Cursor, Page)
- Dynamic configuration based on type
- Parameter name inputs
- Max pages limit
- Update node parameters on change
- Test: pagination config stored correctly
- Document in CHANGELOG.md
- Confidence level: __/10
Phase 4: Integration & Polish (Day 5-6)
4.1 Wire Everything Together
- Combine all editor components in HttpNodeEditor.tsx
- Ensure parameter changes flow to dynamic ports
- Ensure port values flow to request execution
- Ensure response data flows to output ports
- Test end-to-end: configure → fetch → data on outputs
- Document in CHANGELOG.md
- Confidence level: __/10
4.2 Error Handling & UX
- Clear error messages for network failures
- Clear error messages for invalid JSON response
- Clear error messages for JSONPath extraction failures
- Loading state during request
- Timeout feedback
- Validation for required fields (URL)
- Document in CHANGELOG.md
- Confidence level: __/10
4.3 Inspector Support
- Implement
getInspectInfo()for debugging - Show last request URL
- Show last response status
- Show last response body (truncated)
- Document in CHANGELOG.md
- Confidence level: __/10
Phase 5: Testing & Documentation (Day 6-7)
5.1 Unit Tests
- curlParser.test.js - all parsing scenarios
- jsonPath.test.js - all extraction scenarios
- authPresets.test.js - all auth types
- pagination.test.js - all strategies
- All tests pass
- Document in CHANGELOG.md
- Confidence level: __/10
5.2 Integration Tests
- Create test Noodl project with HTTP node
- Test GET request to public API
- Test POST with JSON body
- Test with authentication
- Test pagination
- Test cURL import
- Test response mapping
- All scenarios work
- Document in CHANGELOG.md
- Confidence level: __/10
5.3 Manual Testing Matrix
- macOS - Editor build works
- Windows - Editor build works
- Basic GET request works
- POST with JSON body works
- cURL import works
- All auth types work
- Pagination works
- Response mapping works
- Document results in CHANGELOG.md
- Confidence level: __/10
5.4 Documentation
- Add node documentation in library/prefabs/http/README.md
- Document all inputs and outputs
- Document authentication options
- Document pagination options
- Add usage examples
- Add cURL import examples
- Update dev-docs if patterns changed
- Document in CHANGELOG.md
- Confidence level: __/10
Phase 6: Completion
6.1 Final Review
- Self-review all changes
- Check for debug console.log statements
- Check for TSFixme comments (avoid adding new ones)
- Verify all TypeScript compiles:
npx tsc --noEmit - Verify editor builds:
npm run build:editor - Verify all success criteria from README met
- Document in CHANGELOG.md
- Final confidence level: __/10
6.2 PR Preparation
- Write comprehensive PR description
- List all files changed with brief explanations
- Note any breaking changes (none expected)
- Add screenshots of editor UI
- Add GIF of cURL import in action
- Create PR
6.3 Post-Merge
- Verify main branch builds
- Announce in community channels
- Gather feedback for iteration
- Note follow-up items in NOTES.md