feat: add custom fetch support and refactor to named parameters #46
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.
Summary
Adds support for custom fetch implementations to enable usage in restrictive environments like Obsidian plugins, browser extensions, Electron apps, React Native, and enterprise environments with specific networking requirements.
This implementation follows the patterns from Todoist SDK PR #383 while also modernizing the API with named parameters.
Key Changes
Custom Fetch Support
{ baseUrl?, customFetch? }API Modernization
request()function from positional to named parametersrequest({ httpMethod, baseUri, relativePath, apiToken, payload, customFetch })Custom Fetch Interface
Usage Examples
TwistApi with Custom Fetch
OAuth with Custom Fetch
Breaking Changes (Pre-release)
Since this is a pre-release version (0.1.0-alpha.5), breaking changes are acceptable:
TwistApi constructor:
baseUrlparameter moved to options objectnew TwistApi(token, baseUrl?)new TwistApi(token, { baseUrl?, customFetch? })Authentication functions:
baseUrlparameter moved to options objectgetAuthToken(args, baseUrl?)getAuthToken(args, { baseUrl?, customFetch? })Test Coverage
Cross-Platform Benefits
This enables the Twist SDK to work in:
Test Plan
npm test- all 143 tests passnpm run lint:check- no errorsnpm run format:check- all files formatted correctlynpm run build- TypeScript compilation successful🤖 Generated with Claude Code