-
Notifications
You must be signed in to change notification settings - Fork 43
Bundle sdk for browser (no polyfills required!), and for Node.js
#3358
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
mondoreale
wants to merge
24
commits into
bundles
Choose a base branch
from
bundle-sdk
base: bundles
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…tils - Move Persistence interface from Persistence.ts to types.ts - Update import in PersistenceManager to use type-only import
…directories - Move `BrowserPersistence` and `ServerPersistence` to `_browser` and `_nodejs` directories respectively. - Rename both classes to `Persistence` with named exports, enabling consistent imports via the `@/` path alias that resolves to the appropriate platform directory at build time.
Switch from Node.js `crypto.randomBytes` to `@noble/post-quantum/utils` `randomBytes` for browser compatibility across encryption utilities and test files.
Replace migrationsPath with migrationsUrl to use import.meta.url in shared code, avoiding path/url imports. Node.js Persistence converts URL to path using fileURLToPath.
The new name matches the pattern.
No such thing anymore. We follow the pattern of exporting everything from `exports.ts`.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
Introduces a Rollup-based bundling system for the SDK, enabling proper platform-specific builds for both Node.js and browser environments with architectural refactoring to support environment-specific code via the
@/path alias pattern.Key Changes
Rollup bundling pipeline - Added
rollup.config.mtsproducing multiple output formats:.js) and CJS (.cjs).js) and CJS (.cjs)<script>tag usagePlatform-specific code organization - Introduced
_browser/and_nodejs/directories with@/path alias that resolves to the correct platform at build time:Persistence: Browser uses IndexedDB, Node.js uses SQLitecreateRSAKeyPair: Browser uses WebCrypto, Node.js uses native cryptoTypeScript configuration refactor - Split into
tsconfig.node.jsonandtsconfig.browser.jsonfor separate compilation targetsBrowser compatibility improvements:
crypto.randomByteswith@noble/post-quantum/utilspublicEncryptandprivateDecryptto@streamr/utilsstream→readable-streamandtimers→timers-browserifyimport.meta.urlfor migrations path instead of__dirname