mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-01-12 15:22:55 +01:00
Tasks completed to update Storybook and Typescript versions. Please see phase-1-summary.md for details
This commit is contained in:
274
dev-docs/tasks/phase-2/TASK-001-http-node.md/CHECKLIST.md
Normal file
274
dev-docs/tasks/phase-2/TASK-001-http-node.md/CHECKLIST.md
Normal file
@@ -0,0 +1,274 @@
|
||||
# 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 `doFetch` function (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 `setup` function 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
|
||||
Reference in New Issue
Block a user