refactor: Drop "dom" lib from SDK's TypeScript config and clarify environment usage
#3303
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 removes
"dom"from SDK's TypeScriptlibconfiguration to avoid pulling browser-specific types into the default scope. The SDK is not primarily a browser environment, and having DOM types globally available was masking environment boundaries and weakening type safety.The remaining changes are necessary follow-ups to keep the codebase compiling and to make environment assumptions more explicit.
Changes
TypeScript configuration:
"dom"from thelibarray in bothtsconfig.jsonandtsconfig.jest.jsonto better reflect the intended runtime environment and prevent accidental reliance on browser-only APIs.Type safety and cryptographic key handling:
Updated
cachedJWKinECDSAKeyPairIdentityfromJsonWebKeytowebcrypto.JsonWebKey.Explicitly imported the
webcryptotype from Node’scryptomodule to avoid relying on DOM-provided global types and to clarify the source of the API.This ensures cryptographic types are correctly scoped and remain available after removing the DOM lib.
Documentation and environment targeting:
Added a
@todocomment and a localdomlib reference inRSAKeyPair.tsto document that the file currently mixes browser and Node.js code.This makes the environment dependency explicit and flags the file for future refactoring into environment-specific implementations.