Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
6245753
Bundle `sdk`
mondoreale Jan 16, 2026
57e5fd0
Include a tersered UMD build of the SDK, too
mondoreale Jan 16, 2026
bd8dfbb
Format
mondoreale Jan 19, 2026
db16a44
Alias `timers` properly
mondoreale Jan 19, 2026
83db66d
refactor(sdk): Rename `Persistence.ts` to `types.ts` in persistence u…
mondoreale Jan 19, 2026
9452c52
Add `@/` path aliases for `_browser` and `_nodejs` folders in SDK
mondoreale Jan 19, 2026
7515432
refactor(sdk): Move persistence implementations to platform-specific …
mondoreale Jan 19, 2026
191b62c
refactor(sdk): Consolidate persistence types into single file
mondoreale Jan 19, 2026
6bff8ad
refactor(sdk): Replace `crypto.randomBytes` with `@noble/post-quantum`
mondoreale Jan 19, 2026
2d2d42a
refactor(sdk): Use cipheriv utils from `@streamr/utils`
mondoreale Jan 19, 2026
a9a5e8e
Format
mondoreale Jan 19, 2026
d0eb9e2
feat(utils): Add `publicEncrypt` and `privateDecrypt`
mondoreale Jan 19, 2026
dbbdaf3
refactor(sdk): Extract `RSAKeyPair` creation to environment-specific …
mondoreale Jan 19, 2026
91bfadd
Swap `stream` to `readable-stream` for browsers
mondoreale Jan 19, 2026
2337482
refactor(sdk): Use URL for migrations path instead of string
mondoreale Jan 19, 2026
b351310
Format
mondoreale Jan 19, 2026
ee5e3b3
breaking: Stick to named export only
mondoreale Jan 19, 2026
ca38e65
Fix build; rename "script" bundle
mondoreale Jan 19, 2026
d792d9c
Fix missing tsconfig (fixes SDK's build)
mondoreale Jan 19, 2026
b1456b5
Re-wire imports (don't import internals via re-exports)
mondoreale Jan 19, 2026
f1a01c7
Fix usage of the `randomBytes` util
mondoreale Jan 19, 2026
a2cfadd
Fix imports from (now-gone) sdk's index file
mondoreale Jan 19, 2026
b674ab7
Bump `@rollup/plugin-commonjs` to the "most common" version
mondoreale Jan 19, 2026
a4b8494
Let's, after all, inline decorator imports
mondoreale Jan 20, 2026
37cb025
Add remaining aliases
mondoreale Jan 20, 2026
b3eedef
Don't use import.meta.url (?)
mondoreale Jan 20, 2026
5eded68
Fix `this` → `undefined` rewrite (use `globalThis`)
mondoreale Jan 20, 2026
94106a9
Resolve yet another circular dependency
mondoreale Jan 21, 2026
4139113
Revert "Resolve yet another circular dependency"
mondoreale Jan 21, 2026
9521faa
Fix circular dependency by removing redundant tsyringe setup
mondoreale Jan 21, 2026
44dab5e
Properly test Persistance (both browser and node versions)
mondoreale Jan 21, 2026
78a89d1
Fix sdk's karma tests (attempt 0)
mondoreale Jan 21, 2026
e91ea3b
Drop sdk's obsolete webpack setup
mondoreale Jan 21, 2026
45ad4d8
Incl. the umd build in the package
mondoreale Jan 21, 2026
a476810
Add `ts-loader` to `browser-test-runner` (it's where it belongs)
mondoreale Jan 21, 2026
3fa22ad
Fix git info passed to jest
mondoreale Jan 21, 2026
d2332a4
Refactor sdk's custom matchers setup
mondoreale Jan 21, 2026
73a0bfc
Fix sdk's karma
mondoreale Jan 21, 2026
928b2e2
Incl. all custom matchers, also in Karma
mondoreale Jan 21, 2026
17a579a
Missing casting
mondoreale Jan 21, 2026
9aed209
Force karma to use cjs build of DHT
mondoreale Jan 21, 2026
45969a5
Update comment for bundled browser dependencies in rollup config
mondoreale Jan 22, 2026
862baa2
There's no `build-browser` anymore – all bundles at once
mondoreale Jan 22, 2026
02430d3
Drill to resolve browser-ready modules + custom `randombytes`
mondoreale Jan 22, 2026
c0d18e0
Make `generateClientId` `process`-less browser-ready
mondoreale Jan 22, 2026
2d3051e
Let `nightwatch` pick `chromedriver` automatically
mondoreale Jan 22, 2026
a55dbe0
Update smoke tests
mondoreale Jan 22, 2026
7243750
Carry up-to-date asn1.js with the package
mondoreale Jan 22, 2026
63cb841
Drop fixed `chromedriver` version
mondoreale Jan 22, 2026
e768bda
Fix UMD script references
mondoreale Jan 22, 2026
7730264
Remove empty chromedriver path
mondoreale Jan 23, 2026
a0ca393
Explain packages bundled directly into browser build of `@streamr/utils`
mondoreale Jan 23, 2026
56c211e
Missed `ripemd160`
mondoreale Jan 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/docs/usage/sdk/how-to-use.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Node.js `20` is the minimum required version, ideally version 22 and later. Node
For usage in the browser include the latest build, e.g. by including a `<script>` tag pointing at a CDN:

```html
<script src="https://unpkg.com/@streamr/sdk/streamr-sdk.web.js"></script>
<script src="https://unpkg.com/@streamr/sdk/exports-umd.js"></script>
```

#### Browser extension
Expand Down
2,472 changes: 421 additions & 2,051 deletions package-lock.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions packages/browser-test-runner/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
"rimraf": "^6.1.2",
"rollup": "^4.55.1",
"rollup-plugin-dts": "^6.3.0",
"ts-loader": "^9.5.4",
"tsx": "^4.21.0",
"webpack": "^5.103.0",
"webpack-cli": "^6.0.1"
Expand Down
2 changes: 1 addition & 1 deletion packages/sdk/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ The Streamr SDK is built for the browser and Node.js environments.

**Browser (Website/WebApps)**
- For usage in the browser include the latest build, e.g. by including a `<script>` tag pointing at a CDN:
- `<script src="https://unpkg.com/@streamr/sdk@latest/streamr-sdk.web.min.js"></script>`
- `<script src="https://unpkg.com/@streamr/sdk@latest/exports-umd.min.js"></script>`
- To use within React, please see [streamr-client-react](https://github.com/streamr-dev/streamr-client-react)

**Browser extension**
Expand Down
2 changes: 1 addition & 1 deletion packages/sdk/bin/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"extends": "..",
"extends": "../tsconfig.node.json",
"include": [
"**/*"
]
Expand Down
35 changes: 35 additions & 0 deletions packages/sdk/createKarmaConfig.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import {
createKarmaConfig as createKarmaConfigUtil,
createWebpackConfig,
} from '@streamr/browser-test-runner'
import { resolve } from 'node:path'

export function createKarmaConfig(testPaths: string[]): ReturnType<typeof createKarmaConfigUtil> {
return createKarmaConfigUtil(
testPaths,
createWebpackConfig({
libraryName: 'sdk',
alias: {
'@jest/globals': resolve(
__dirname,
'test/test-utils/jestGlobalsMock.ts'
),
'@streamr/dht': resolve(__dirname, '../dht/dist/exports-browser.cjs'),
'@': resolve(__dirname, 'src/_browser'),
},
fallback: {
v8: false,
module: false,
},
externals: {
http: 'HTTP',
ws: 'WebSocket',
'node-datachannel': 'commonjs node-datachannel',
express: 'Express',
'node:stream/web': 'stream/web',
'node:timers/promises': 'timers/promises',
},
}),
__dirname
)
}
3 changes: 0 additions & 3 deletions packages/sdk/fix-esm.sh

This file was deleted.

5 changes: 4 additions & 1 deletion packages/sdk/jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,12 @@ const config: Config.InitialOptions = {
setupFilesAfterEnv: [
...defaultConfig.setupFilesAfterEnv,
'./src/setupTsyringe.ts',
'./test/test-utils/customMatchers.ts',
'./test/test-utils/setupCustomMatchers.ts',
'@streamr/test-utils/setupCustomMatchers',
],
moduleNameMapper: {
"^@/(.*)$": "<rootDir>/src/_nodejs/$1",
},
}

export default config
21 changes: 12 additions & 9 deletions packages/sdk/jest.setup.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
// eslint-disable-next-line import/no-extraneous-dependencies
import { GitRevisionPlugin } from 'git-revision-webpack-plugin'
import { execSync } from 'child_process'
import pkg from './package.json'

const execGitCommand = (command: string): string => {
try {
return execSync(command, { encoding: 'utf8' }).trim()
} catch {
return ''
}
}

export default async function setup(): Promise<void> {
if (process.env.GIT_VERSION) {
return
}

const gitRevisionPlugin = new GitRevisionPlugin()

const [GIT_VERSION, GIT_COMMITHASH, GIT_BRANCH] = await Promise.all([
gitRevisionPlugin.version(),
gitRevisionPlugin.commithash(),
gitRevisionPlugin.branch(),
])
const GIT_VERSION = execGitCommand('git describe --always --tags')
const GIT_COMMITHASH = execGitCommand('git rev-parse HEAD')
const GIT_BRANCH = execGitCommand('git rev-parse --abbrev-ref HEAD')

Object.assign(process.env, {
version: pkg.version,
Expand Down
6 changes: 2 additions & 4 deletions packages/sdk/karma-end-to-end.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
import webpackConfig from './webpack-karma.config'
import { createKarmaConfig } from '@streamr/browser-test-runner'

export default createKarmaConfig(['test/end-to-end/**/*.ts'], webpackConfig, __dirname)
import { createKarmaConfig } from './createKarmaConfig'
export default createKarmaConfig(['test/end-to-end/**/*.ts'])
6 changes: 2 additions & 4 deletions packages/sdk/karma-integration.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
import webpackConfig from './webpack-karma.config'
import { createKarmaConfig } from '@streamr/browser-test-runner'

export default createKarmaConfig(['test/integration/**/*.ts'], webpackConfig, __dirname)
import { createKarmaConfig } from './createKarmaConfig'
export default createKarmaConfig(['test/integration/**/*.ts'])
7 changes: 2 additions & 5 deletions packages/sdk/karma-setup.js → packages/sdk/karma-setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,5 @@
* package. See karma-config.js in that package for more details.
*/

import './src/setupTsyringe.ts'
import './test/test-utils/customMatchers'
import { customMatchers } from '@streamr/test-utils'

expect.extend(customMatchers)
import './src/setupTsyringe'
import './test/test-utils/setupCustomMatchers'
6 changes: 2 additions & 4 deletions packages/sdk/karma-unit.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
import webpackConfig from './webpack-karma.config'
import { createKarmaConfig } from '@streamr/browser-test-runner'

export default createKarmaConfig(['test/unit/**/*.ts'], webpackConfig, __dirname)
import { createKarmaConfig } from './createKarmaConfig'
export default createKarmaConfig(['test/unit/**/*.ts'])
80 changes: 36 additions & 44 deletions packages/sdk/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,39 +7,43 @@
"url": "git+https://github.com/streamr-dev/network.git",
"directory": "packages/client"
},
"types": "./dist/types/src/index.d.ts",
"main": "./dist/src/exports-commonjs.js",
"module": "./dist/src/exports-esm.mjs",
"script": "./dist/streamr-sdk.web.min.js",
"browser": {
"./src/utils/persistence/ServerPersistence.ts": "./src/utils/persistence/BrowserPersistence.mts",
"./dist/src/utils/persistence/ServerPersistence.js": "./dist/src/utils/persistence/BrowserPersistence.mjs"
},
"main": "./dist/exports-nodejs.cjs",
"module": "./dist/exports-nodejs.js",
"types": "./dist/exports-nodejs.d.ts",
"script": "./dist/exports-umd.min.js",
"exports": {
"default": {
"types": "./dist/types/src/index.d.ts",
"import": "./dist/src/exports-esm.mjs",
"require": "./dist/src/exports-commonjs.js"
".": {
"types": "./dist/exports-nodejs.d.ts",
"browser": {
"types": "./dist/exports-browser.d.ts",
"import": "./dist/exports-browser.js",
"require": "./dist/exports-browser.cjs",
"default": "./dist/exports-browser.js"
},
"node": "./dist/exports-nodejs.cjs",
"import": "./dist/exports-nodejs.js",
"require": "./dist/exports-nodejs.cjs",
"default": "./dist/exports-nodejs.js"
}
},
"files": [
"dist",
"dist/exports-nodejs.*",
"dist/exports-browser.*",
"dist/exports-umd.*",
"dist/encryption/migrations",
"!*.tsbuildinfo",
"LICENSE",
"README.md",
"readme-header.png"
],
"scripts": {
"prebuild": "node bin/generate-config-validator.js && ./proto.sh",
"postbuild": "./scripts/postbuild.sh && bash fix-esm.sh",
"prebuild": "npm run reset-self && node bin/generate-config-validator.js && ./proto.sh",
"build": "tsc -b",
"build-browser": "npm run build-browser-development && npm run build-browser-production",
"build-browser-development": "NODE_ENV=development webpack --mode=development --progress",
"build-browser-production": "NODE_ENV=production webpack --mode=production --progress",
"postbuild": "NODE_OPTIONS='--import tsx' rollup -c rollup.config.mts",
"check": "tsc -b tsconfig.jest.json",
"reset-self": "rimraf --glob 'dist/**/*.tsbuildinfo'",
"clean": "jest --clearCache --config '{}' || true; rm -rf dist src/generated *.tsbuildinfo node_modules/.cache || true",
"eslint": "eslint --cache --cache-location=node_modules/.cache/.eslintcache/ '*/**/*.{js,ts,mts}'",
"generate-protoc-code": "./proto.sh",
"test": "npm run test-unit && npm run test-integration && npm run test-end-to-end",
"test-unit": "jest --useStderr --forceExit test/unit",
"test-integration": "jest --bail --useStderr --forceExit --testTimeout=40000 test/integration/*.test.*",
Expand All @@ -53,47 +57,34 @@
"author": "Streamr Network AG <contact@streamr.network>",
"license": "Apache-2.0",
"devDependencies": {
"@babel/core": "^7.28.5",
"@babel/plugin-proposal-decorators": "^7.28.0",
"@babel/plugin-transform-modules-commonjs": "^7.27.1",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@jest/globals": "^30.0.5",
"@rollup/plugin-alias": "^6.0.0",
"@rollup/plugin-commonjs": "^29.0.0",
"@rollup/plugin-json": "^6.1.0",
"@rollup/plugin-node-resolve": "^16.0.3",
"@rollup/plugin-terser": "^0.4.4",
"@streamr/test-utils": "103.2.0-experiment.1",
"@types/heap": "^0.2.35",
"@types/lodash": "^4.17.21",
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"babel-loader": "^10.0.0",
"babel-plugin-add-module-exports": "^1.0.4",
"babel-plugin-transform-typescript-metadata": "^0.4.0",
"benchmark": "^2.1.4",
"buffer": "^6.0.3",
"bytes": "^3.1.1",
"chromedriver": "^121.0.2",
"crypto-browserify": "^3.12.1",
"express": "^5.2.0",
"git-revision-webpack-plugin": "^5.0.0",
"jest-leak-detector": "^27.3.1",
"jest-matcher-utils": "^30.0.5",
"lodash-webpack-plugin": "^0.11.6",
"nightwatch": "^3.12.3",
"node-polyfill-webpack-plugin": "^4.1.0",
"terser-webpack-plugin": "^5.3.14",
"ts-loader": "^9.5.4",
"rimraf": "^6.1.2",
"rollup": "^4.55.1",
"rollup-plugin-copy": "^3.5.0",
"rollup-plugin-dts": "^6.3.0",
"ts-node": "^10.9.2",
"tsx": "^4.21.0",
"util": "^0.12.4",
"weak-napi": "^2.0.2",
"webpack": "^5.103.0",
"webpack-bundle-analyzer": "^5.0.1",
"webpack-cli": "^6.0.1",
"webpack-merge": "^6.0.1"
"weak-napi": "^2.0.2"
},
"#IMPORTANT": "babel-runtime must be in dependencies, not devDependencies",
"dependencies": {
"@babel/runtime": "^7.28.4",
"@babel/runtime-corejs3": "^7.28.4",
"@noble/post-quantum": "^0.4.1",
"@protobuf-ts/runtime": "^2.8.2",
"@protobuf-ts/runtime-rpc": "^2.8.2",
Expand All @@ -103,7 +94,6 @@
"@streamr/proto-rpc": "103.2.0-experiment.1",
"@streamr/trackerless-network": "103.2.0-experiment.1",
"@streamr/utils": "103.2.0-experiment.1",
"core-js": "^3.47.0",
"env-paths": "^2.2.1",
"ethers": "^6.13.0",
"eventemitter3": "^5.0.0",
Expand All @@ -113,9 +103,11 @@
"p-limit": "^3.1.0",
"p-memoize": "4.0.4",
"p-throttle": "4.1.1",
"readable-stream": "^4.7.0",
"reflect-metadata": "^0.2.1",
"sqlite": "^5.1.1",
"sqlite3": "^5.1.7",
"timers-browserify": "^2.0.12",
"ts-essentials": "^10.1.1",
"ts-toolbelt": "^9.6.0",
"tsyringe": "^4.10.0",
Expand Down
Loading
Loading