remove arrow support for natsbridge_csr.js
This commit is contained in:
@@ -275,8 +275,8 @@ end
|
||||
|------|-------------|---------------|----------|-----------|
|
||||
| `text` | Plain text string | UTF-8 bytes | Base64 | All |
|
||||
| `dictionary` | JSON object | JSON string | Base64/JSON | All |
|
||||
| `arrowtable` | Apache Arrow IPC | Arrow IPC stream | Base64/arrow-ipc | Desktop |
|
||||
| `jsontable` | JSON array of objects | JSON string | Base64/json | All |
|
||||
| `arrowtable` | Apache Arrow IPC | Arrow IPC stream | Base64/arrow-ipc | Desktop (Julia/Python/Node.js) |
|
||||
| `jsontable` | JSON array of objects | JSON string | Base64/json | All (including Browser) |
|
||||
| `image` | Binary image data | Raw bytes | Base64 | All |
|
||||
| `audio` | Binary audio data | Raw bytes | Base64 | All |
|
||||
| `video` | Binary video data | Raw bytes | Base64 | All |
|
||||
@@ -442,6 +442,16 @@ class NATSBridge:
|
||||
self.fileserver_url = fileserver_url or self.DEFAULT_FILESERVER_URL
|
||||
```
|
||||
|
||||
### Browser Architecture
|
||||
|
||||
Browser JavaScript has specific constraints due to security and compatibility:
|
||||
|
||||
- **Async/await**: Native async/await support
|
||||
- **No Apache Arrow**: Arrow IPC not available in browsers
|
||||
- **JSON table only**: Use "jsontable" for tabular data
|
||||
- **WebSocket NATS**: Uses nats.ws for browser-compatible NATS connections
|
||||
- **Fetch API**: HTTP file server communication via fetch
|
||||
|
||||
### MicroPython Architecture
|
||||
|
||||
MicroPython has significant constraints:
|
||||
|
||||
@@ -115,8 +115,9 @@ NATSBridge is a cross-platform, bi-directional data bridge that enables seamless
|
||||
| Platform | Minimum Version | Notes |
|
||||
|----------|-----------------|-------|
|
||||
| Julia | 1.7+ | Arrow.jl required for arrowtable support |
|
||||
| Node.js | 16+ | nats.js required |
|
||||
| Node.js | 16+ | nats.js required, Arrow IPC supported |
|
||||
| Python | 3.8+ | pyarrow required for arrowtable support |
|
||||
| Browser | Latest | No Arrow IPC (uses jsontable only) |
|
||||
| MicroPython | 1.19+ | Limited to direct transport |
|
||||
|
||||
---
|
||||
@@ -181,8 +182,8 @@ NATSBridge is a cross-platform, bi-directional data bridge that enables seamless
|
||||
|------|-------|------------|--------|-------------|-------------|
|
||||
| `text` | `String` | `string` | `str` | `str` | Plain text strings |
|
||||
| `dictionary` | `Dict`, `NamedTuple` | `Object`, `Array` | `dict`, `list` | `dict` | JSON-serializable data |
|
||||
| `arrowtable` | `DataFrame`, `Arrow.Table` | `Array<Object>` | `pandas.DataFrame` | ❌ | Tabular data (Arrow IPC) |
|
||||
| `jsontable` | `Vector{NamedTuple}` | `Array<Object>` | `list[dict]` | ⚠️ | Tabular data (JSON) |
|
||||
| `arrowtable` | `DataFrame`, `Arrow.Table` | ❌ (Browser), ✅ (Node.js) | `pandas.DataFrame` | ❌ | Tabular data (Arrow IPC) |
|
||||
| `jsontable` | `Vector{NamedTuple}` | `Array<Object>` | `list[dict]` | ⚠️ | Tabular data (JSON) - **Only table type in Browser** |
|
||||
| `image` | `Vector{UInt8}` | `Uint8Array`, `Buffer` | `bytes` | `bytearray` | Image binary data |
|
||||
| `audio` | `Vector{UInt8}` | `Uint8Array`, `Buffer` | `bytes` | `bytearray` | Audio binary data |
|
||||
| `video` | `Vector{UInt8}` | `Uint8Array`, `Buffer` | `bytes` | `bytearray` | Video binary data |
|
||||
@@ -194,8 +195,8 @@ NATSBridge is a cross-platform, bi-directional data bridge that enables seamless
|
||||
|--------------|-----------------|-------|
|
||||
| `text` | UTF-8 → Base64 | Text must be String type |
|
||||
| `dictionary` | JSON → Base64 | JSON.jl for Julia |
|
||||
| `arrowtable` | Arrow IPC → Base64 | Requires Arrow.jl/pyarrow |
|
||||
| `jsontable` | JSON → Base64 | Human-readable format |
|
||||
| `arrowtable` | Arrow IPC → Base64 | Requires Arrow.jl/pyarrow (Desktop only) |
|
||||
| `jsontable` | JSON → Base64 | Human-readable format - **Browser uses this only** |
|
||||
| `image`/`audio`/`video`/`binary` | Direct → Base64 | Binary data preserved |
|
||||
|
||||
---
|
||||
@@ -294,7 +295,8 @@ NATSBridge is a cross-platform, bi-directional data bridge that enables seamless
|
||||
| Test Scenario | Success Criteria |
|
||||
|-------------|-----------------|
|
||||
| Cross-platform text message | Julia ↔ JavaScript ↔ Python |
|
||||
| Cross-platform tabular data | Arrow IPC round-trip |
|
||||
| Cross-platform tabular data (Desktop) | Arrow IPC round-trip |
|
||||
| Cross-platform tabular data (Browser) | JSON table round-trip |
|
||||
| Large file transfer | File server upload/download |
|
||||
| Multi-payload mixed content | All payload types in one message |
|
||||
|
||||
@@ -356,6 +358,7 @@ function smartreceive(
|
||||
| Python | nats-py | Latest stable |
|
||||
| Python | aiohttp | Latest stable |
|
||||
| Python | pyarrow | Latest stable |
|
||||
| Browser | nats.ws | Latest stable |
|
||||
|
||||
### Optional Dependencies
|
||||
|
||||
@@ -399,7 +402,7 @@ function smartreceive(
|
||||
|
||||
| Version | Supported Platforms |
|
||||
|---------|---------------------|
|
||||
| v1.0.x | Julia 1.7+, Node.js 16+, Python 3.8+, MicroPython 1.19+ |
|
||||
| v1.0.x | Julia 1.7+, Node.js 16+, Python 3.8+, Browser (latest), MicroPython 1.19+ |
|
||||
|
||||
---
|
||||
|
||||
|
||||
17
docs/spec.md
17
docs/spec.md
@@ -176,6 +176,7 @@ await smartsend("/agent/v1/process", data)
|
||||
| All | `String` | `"text"` |
|
||||
| All | `Dict`/`Object` | `"dictionary"` |
|
||||
| Desktop | `DataFrame` | `"arrowtable"` or `"jsontable"` |
|
||||
| Browser | `Array` of objects | `"jsontable"` (only table type) |
|
||||
| All | `Array` of objects | `"jsontable"` |
|
||||
| All | `Uint8Array`/`Buffer`/`bytes` | `"binary"` |
|
||||
| Desktop | `Arrow.Table` | `"arrowtable"` |
|
||||
@@ -203,8 +204,8 @@ await smartsend("/agent/v1/process", data)
|
||||
|-------|-------------|---------------------|------------------|
|
||||
| `text` | Plain text string | All | `base64` |
|
||||
| `dictionary` | JSON object/dictionary | All | `base64`, `json` |
|
||||
| `arrowtable` | Apache Arrow IPC table | Desktop (Julia/JS/Python) | `base64`, `arrow-ipc` |
|
||||
| `jsontable` | JSON array of objects | All | `base64`, `json` |
|
||||
| `arrowtable` | Apache Arrow IPC table | Desktop (Julia/Python/Node.js) | `base64`, `arrow-ipc` |
|
||||
| `jsontable` | JSON array of objects | All (including Browser) | `base64`, `json` |
|
||||
| `image` | Binary image data | All | `base64` |
|
||||
| `audio` | Binary audio data | All | `base64` |
|
||||
| `video` | Binary video data | All | `base64` |
|
||||
@@ -613,7 +614,7 @@ function fileserver_download_handler(
|
||||
|
||||
## Platform-Specific Constraints
|
||||
|
||||
### Desktop (Julia/JS/Python)
|
||||
### Desktop (Julia/Python/Node.js)
|
||||
|
||||
| Feature | Status | Notes |
|
||||
|---------|--------|-------|
|
||||
@@ -623,6 +624,16 @@ function fileserver_download_handler(
|
||||
| File server download | ✅ Supported | HTTP/HTTPS |
|
||||
| Size threshold | 500KB | Configurable |
|
||||
|
||||
### Browser (JavaScript)
|
||||
|
||||
| Feature | Status | Notes |
|
||||
|---------|--------|-------|
|
||||
| Arrow IPC | ❌ Not supported | Apache Arrow not browser-compatible |
|
||||
| JSON table | ✅ Supported | Only table type available in browser |
|
||||
| File server upload | ✅ Supported | HTTP/HTTPS |
|
||||
| File server download | ✅ Supported | HTTP/HTTPS |
|
||||
| Size threshold | 500KB | Configurable |
|
||||
|
||||
### MicroPython
|
||||
|
||||
| Feature | Status | Notes |
|
||||
|
||||
Reference in New Issue
Block a user