feat: Add Cloudflare Workers support to Twilio SDK #1129
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.
This PR implements cross-platform compatibility for the Twilio Node.js SDK, enabling it to run in Cloudflare Workers and other JavaScript runtimes without Node.js-specific dependencies.
Problem
The Twilio SDK previously failed in Cloudflare Workers with the error:
This occurred because the SDK relied on Node.js-specific modules like
fs
,https
,Buffer
, andprocess
that aren't available in the Workers runtime.Solution
Implemented automatic runtime detection and conditional module loading:
src/base/runtime.ts
) - Detects Node.js vs Cloudflare Workers vs Browser environmentssrc/base/FetchRequestClient.ts
) - Uses fetch API instead of axios for non-Node.js environmentsUsage in Cloudflare Workers
Benefits
Files Changed
src/base/runtime.ts
- New runtime detection utilitiessrc/base/FetchRequestClient.ts
- New fetch-based HTTP clientsrc/base/RequestClient.ts
- Updated to auto-select HTTP implementationsrc/base/BaseTwilio.ts
- Cross-platform environment variable handlingsrc/auth_strategy/BasicAuthStrategy.ts
- Cross-platform base64 encodingsrc/auth_strategy/TokenAuthStrategy.ts
- Conditional JWT parsingThe implementation maintains full backward compatibility while extending support to new JavaScript runtimes.
Fixes #1096.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.