Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
e32ae63
init cast client
mbellehumeur Mar 29, 2026
69c4b2f
refactor(castClient): Standardize naming and improve button event han…
mbellehumeur Mar 29, 2026
f55c3a8
feat(castClient): Enhance UI layout and add WATCHER to default subscr…
mbellehumeur Mar 29, 2026
627964f
feat(castClient): Revamp UI layout and enhance connection controls
mbellehumeur Mar 29, 2026
cde974e
feat(castClient): Update CSS class names for consistency and improve …
mbellehumeur Mar 29, 2026
cb96c1a
feat(castClient): Enhance user instructions and improve element refer…
mbellehumeur Mar 30, 2026
2d780a4
update
mbellehumeur Mar 30, 2026
f52209b
feat(castClient): Refactor configuration structure to separate hub an…
mbellehumeur Mar 30, 2026
075b773
fix(cast): Update README and CastClient comments for clarity
mbellehumeur Mar 30, 2026
123260b
feat(castClient): Enhance token handling and subscriber name assignment
mbellehumeur Mar 30, 2026
c17abad
sync with upstream
mbellehumeur Mar 30, 2026
702c5df
sync with upstream
mbellehumeur Mar 30, 2026
dc01f9e
Refactor example
mbellehumeur Mar 30, 2026
69dcc46
chore(bun.lock): Update package versions and add configVersion
mbellehumeur Mar 30, 2026
dc01ecc
chore(bun.lock): Upgrade @cornerstonejs/core and @cornerstonejs/tools…
mbellehumeur Mar 30, 2026
4236662
chore(package): Add 'all' dependency to package.json and bun.lock
mbellehumeur Mar 30, 2026
c62b3d5
chore(dependencies): Update package versions to latest in package.jso…
mbellehumeur Mar 30, 2026
d9a2f37
chore(yarn.lock): Update Babel dependencies to latest versions
mbellehumeur Mar 31, 2026
4a8d4b5
feat(castClient): Refactor Get response handling and update default a…
mbellehumeur Mar 31, 2026
17c87f9
feat(castClient): Add new options for event types and data types in t…
mbellehumeur Mar 31, 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
5,800 changes: 2,956 additions & 2,844 deletions bun.lock

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion lerna.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
"packages/dicomImageLoader",
"packages/ai",
"packages/labelmap-interpolation",
"packages/polymorphic-segmentation"
"packages/polymorphic-segmentation",
"packages/cast"
],
"npmClient": "yarn"
}
148 changes: 76 additions & 72 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"packages/tools",
"packages/ai",
"packages/labelmap-interpolation",
"packages/cast",
"addOns/externals/*",
"addOns/local/*"
],
Expand Down Expand Up @@ -66,68 +67,68 @@
"webpack:watch": "npx lerna run webpack:watch"
},
"devDependencies": {
"@babel/core": "7.26.10",
"@babel/plugin-external-helpers": "7.25.9",
"@babel/core": "7.29.0",
"@babel/plugin-external-helpers": "7.27.1",
"@babel/plugin-proposal-class-properties": "7.18.6",
"@babel/plugin-proposal-object-rest-spread": "7.20.7",
"@babel/plugin-transform-class-static-block": "7.26.0",
"@babel/plugin-transform-runtime": "7.26.10",
"@babel/preset-env": "7.26.9",
"@babel/preset-react": "7.26.3",
"@babel/preset-typescript": "7.26.0",
"@babel/runtime": "7.26.10",
"@babel/runtime-corejs3": "7.26.10",
"@cornerstonejs/calculate-suv": "1.0.3",
"@babel/plugin-transform-class-static-block": "7.28.6",
"@babel/plugin-transform-runtime": "7.29.0",
"@babel/preset-env": "7.29.2",
"@babel/preset-react": "7.28.5",
"@babel/preset-typescript": "7.28.5",
"@babel/runtime": "7.29.2",
"@babel/runtime-corejs3": "7.29.2",
"@cornerstonejs/calculate-suv": "1.1.0",
"@istanbuljs/nyc-config-typescript": "1.0.2",
"@microsoft/api-extractor": "7.57.1",
"@microsoft/tsdoc": "0.15.1",
"@playwright/test": "1.56.1",
"@prettier/plugin-oxc": "0.0.4",
"@rollup/plugin-babel": "6.0.4",
"@microsoft/api-extractor": "7.57.7",
"@microsoft/tsdoc": "0.16.0",
"@playwright/test": "1.58.2",
"@prettier/plugin-oxc": "0.1.3",
"@rollup/plugin-babel": "7.0.0",
"@rollup/plugin-json": "6.1.0",
"@rollup/plugin-node-resolve": "15.3.1",
"@rollup/plugin-typescript": "11.1.6",
"@rspack/cli": "1.6.0",
"@rspack/core": "1.6.0",
"@types/dom-webcodecs": "0.1.14",
"@types/emscripten": "1.40.0",
"@types/jasmine": "4.6.5",
"@types/jest": "29.5.14",
"@rollup/plugin-node-resolve": "16.0.3",
"@rollup/plugin-typescript": "12.3.0",
"@rspack/cli": "1.7.10",
"@rspack/core": "1.7.10",
"@types/dom-webcodecs": "0.1.18",
"@types/emscripten": "1.41.5",
"@types/jasmine": "6.0.0",
"@types/jest": "30.0.0",
"@types/karma": "6.3.9",
"@types/node": "20.17.24",
"@types/react": "17.0.83",
"@types/react-dom": "17.0.26",
"@webgpu/types": "0.1.56",
"acorn": "8.14.1",
"@types/node": "25.5.0",
"@types/react": "19.2.14",
"@types/react-dom": "19.2.3",
"@webgpu/types": "0.1.69",
"acorn": "8.16.0",
"acorn-jsx": "5.3.2",
"ajv": "8.17.1",
"autoprefixer": "10.4.21",
"babel-loader": "9.1.2",
"ajv": "8.18.0",
"autoprefixer": "10.4.27",
"babel-loader": "10.1.1",
"babel-plugin-istanbul": "7.0.1",
"babel-plugin-transform-import-meta": "2.3.2",
"chai": "5.2.0",
"babel-plugin-transform-import-meta": "2.3.3",
"chai": "6.2.2",
"clean-webpack-plugin": "4.0.0",
"commander": "10.0.1",
"commander": "14.0.3",
"concat": "1.0.3",
"core-js": "3.41.0",
"core-js": "3.49.0",
"coverage-istanbul-loader": "3.0.5",
"cross-env": "7.0.3",
"css-loader": "6.11.0",
"cssnano": "6.1.2",
"cross-env": "10.1.0",
"css-loader": "7.1.4",
"cssnano": "7.1.4",
"dicomweb-client": "0.11.2",
"docdash": "1.2.0",
"docdash": "2.0.2",
"dpdm": "4.0.1",
"execa": "7.2.0",
"exports-loader": "3.1.0",
"execa": "9.6.1",
"exports-loader": "5.0.0",
"file-loader": "6.2.0",
"follow-redirects": "1.15.9",
"fs-extra": "10.1.0",
"html-webpack-plugin": "5.6.3",
"follow-redirects": "1.15.11",
"fs-extra": "11.3.4",
"html-webpack-plugin": "5.6.6",
"husky": "9.1.7",
"jasmine": "6.0.0",
"jest": "30.2.0",
"jasmine": "6.1.0",
"jest": "30.3.0",
"jest-canvas-mock": "2.5.2",
"jest-environment-jsdom": "30.2.0",
"jest-environment-jsdom": "30.3.0",
"jest-junit": "16.0.0",
"karma": "6.4.4",
"karma-chrome-launcher": "3.2.0",
Expand All @@ -136,40 +137,40 @@
"karma-junit-reporter": "2.0.1",
"karma-spec-reporter": "0.0.36",
"karma-webpack": "5.0.1",
"lerna": "9.0.4",
"lint-staged": "13.3.0",
"nyc": "17.1.0",
"open-cli": "7.2.0",
"oxlint": "1.9.0",
"lerna": "9.0.7",
"lint-staged": "16.4.0",
"nyc": "18.0.0",
"open-cli": "9.0.0",
"oxlint": "1.57.0",
"path-browserify": "1.0.1",
"playwright-test-coverage": "1.2.12",
"postcss": "8.5.3",
"postcss-import": "15.1.0",
"postcss-loader": "7.3.4",
"postcss-preset-env": "8.5.1",
"prettier": "3.6.2",
"puppeteer": "13.7.0",
"postcss": "8.5.8",
"postcss-import": "16.1.1",
"postcss-loader": "8.2.1",
"postcss-preset-env": "11.2.0",
"prettier": "3.8.1",
"puppeteer": "24.40.0",
"resemblejs": "5.0.0",
"rollup": "3.29.5",
"semver": "7.7.1",
"rollup": "3.30.0",
"semver": "7.7.4",
"shader-loader": "1.3.1",
"shelljs": "0.10.0",
"shx": "0.4.0",
"sinon": "21.0.0",
"sinon": "21.0.3",
"source-map-support": "0.5.21",
"style-loader": "3.3.4",
"stylelint": "15.11.0",
"stylelint-config-recommended": "12.0.0",
"ts-loader": "9.5.1",
"style-loader": "4.0.0",
"stylelint": "17.6.0",
"stylelint-config-recommended": "18.0.0",
"ts-loader": "9.5.4",
"ts-node": "10.9.2",
"typescript": "5.5.4",
"typescript": "6.0.2",
"url-loader": "4.1.1",
"webpack": "5.105.3",
"webpack-bundle-analyzer": "4.10.2",
"webpack-cli": "5.1.4",
"webpack-dev-server": "5.2.2",
"webpack-merge": "5.8.0",
"xml2js": "0.5.0"
"webpack": "5.105.4",
"webpack-bundle-analyzer": "5.3.0",
"webpack-cli": "7.0.2",
"webpack-dev-server": "5.2.3",
"webpack-merge": "6.0.1",
"xml2js": "0.6.2"
},
"lint-staged": {
"packages/**/*.{ts,js,jsx,tsx,json,md,css}": [
Expand Down Expand Up @@ -203,5 +204,8 @@
"serialize-javascript": "7.0.4",
"svgo": "3.3.3",
"flatted": "3.4.0"
},
"dependencies": {
"all": "^0.0.0"
}
}
45 changes: 45 additions & 0 deletions packages/cast/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# @cornerstonejs/cast

Cast hub networking for browser-based viewers: OAuth client-credentials token, HTTP subscribe/unsubscribe, WebSocket receive, and publish. This package contains transport only; application-specific message handling stays in the host app to implement FHIRcast or other messaging.

## Example

The **Cast client** example under `examples/castClient` mirrors the python Slicer Cast `test-client.html` flow (subscribe, log incoming events, publish) using `CastClient` for all network calls.

From the monorepo root:

```bash
yarn install
yarn workspace @cornerstonejs/cast build:esm
yarn example castClient
```

Then open the dev server URL (default port from `CS3D_PORT` or `3000`). Set **Token endpoint** and **Hub endpoint** to your Cast hub (defaults target `127.0.0.1:2017`). If the hub runs on another origin, ensure CORS allows the example origin.

Optional query parameter: `?topic=your-topic` pre-fills the topic fields.

The full static example index is built with `yarn build-all-examples` (output under `.static-examples/castClient.html`).

## Config Shape

`CastClient` now separates static hub endpoints from session values:

```ts
const client = new CastClient({
hub: {
name: 'demo',
version: '1',
hub_endpoint: 'https://host/api/hub',
token_endpoint: 'https://host/oauth/token',
client_id: 'client_id',
client_secret: 'client_secret',
},
session: {
subscriberName: 'CS3D-EXAMPLE',
topic: 'my-topic',
events: ['*'],
lease: 7200,
actors: ['WORKLIST_CLIENT'],
},
});
```
Loading
Loading