@urun-sh/core 0.2.21 → 0.2.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/README.md +12 -3
- package/dist/index.browser.d.mts +10 -2
- package/dist/index.browser.d.ts +10 -2
- package/dist/index.browser.js +2 -2
- package/dist/index.browser.mjs +1 -1
- package/dist/index.d.mts +10 -2
- package/dist/index.d.ts +10 -2
- package/dist/index.js +4 -4
- package/dist/index.mjs +1 -1
- package/dist/internal.browser.d.mts +1 -1
- package/dist/internal.browser.d.ts +1 -1
- package/dist/internal.d.mts +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/{stream-data-bZAHTqK-.d.mts → stream-data-BQso6wNv.d.mts} +1 -67
- package/dist/{stream-data-bZAHTqK-.d.ts → stream-data-BQso6wNv.d.ts} +1 -67
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
- Removed the dead compositing-era scene-graph type exports (`Layer`, `SceneContext`,
|
|
6
|
+
`SceneGraph`, `LayoutConfig`, `LayoutContext`) — they documented `useScene()`/`useLayout()`
|
|
7
|
+
hooks that no longer exist anywhere. Type-only removal; no runtime surface change.
|
|
8
|
+
Guarded by `compositing-era-removed.test.ts`.
|
|
9
|
+
|
|
5
10
|
- Add owner-only `Session.end()` for acknowledged terminal release through the existing authenticated session-request release endpoint. It returns a typed `ended`/`canceled` outcome, memoizes concurrent and repeated calls, and leaves `disconnect()` as the reconnectable transport-detach primitive. Consume-only viewer handles reject terminal release with `SessionEndUnavailableError`; release failures reject with `SessionEndError`.
|
|
6
11
|
|
|
7
12
|
## 0.2.19
|
package/README.md
CHANGED
|
@@ -26,7 +26,7 @@ const session = app.generate({ prompt: 'A sunset' })
|
|
|
26
26
|
// arrive ASYNCHRONOUSLY — subscribe with `.on('track', …)`; never read `.track` once.
|
|
27
27
|
const video = session.stream('video')
|
|
28
28
|
video.on('track', (track) => {
|
|
29
|
-
videoElement.srcObject = new MediaStream([track])
|
|
29
|
+
if (track) videoElement.srcObject = new MediaStream([track])
|
|
30
30
|
})
|
|
31
31
|
|
|
32
32
|
// Drive the app by writing DESIRED state into the control doc; the runtime reactively
|
|
@@ -70,13 +70,22 @@ second hand-poll (`pipeline.bind` / `stage.bind(doc, mapping)` are retired). Kee
|
|
|
70
70
|
- `session.stream(name)` — get a named symmetric stream (media or data); first use decides direction.
|
|
71
71
|
- `session.stream(name).track` — read the latest inbound track (consume side).
|
|
72
72
|
- `session.stream(name).on('track', cb)` — subscribe to inbound tracks as they arrive.
|
|
73
|
-
- `session.stream(name).attach(track)` — produce: send a local browser track upstream.
|
|
74
|
-
- `session.stream(name).
|
|
73
|
+
- `session.stream(name).attach(track)` — produce: send a local browser MIC/AUDIO track upstream.
|
|
74
|
+
- `session.stream(name).attachVideo(track)` — produce: send a local browser VIDEO track upstream
|
|
75
|
+
(a later call swaps the source via `replaceTrack`). `detach()` / `detachVideo()` stop producing.
|
|
76
|
+
- `session.stream(name).emit(payload)` / `.messages()` — the DATA lane: produce a payload on the
|
|
77
|
+
named stream / consume it as an async iterable (subscribing is opt-in).
|
|
75
78
|
- `session.stream(name).seek(seconds)` — seek a persisted finite stream to seconds from start.
|
|
76
79
|
- `session.stream(name).seek('live')` — return a live stream to the live edge.
|
|
77
80
|
- `session.doc(name).get()` — read the merged document snapshot.
|
|
78
81
|
- `session.doc(name).set(patch)` — write desired state into a session document.
|
|
79
82
|
- `session.doc(name).on('change', cb)` — react to runtime-published document changes.
|
|
83
|
+
- `session.request(payload)` / `.requestStream(payload)` / `.complete(payload)` — correlated
|
|
84
|
+
request/response riding a session doc (reconnect-safe); `requestStream` yields incremental deltas.
|
|
85
|
+
- `session.onPhase(cb)` / `session.whenLive()` — the nine honest lifecycle phases and the
|
|
86
|
+
"is media ready?" gate (rejects with a typed `SessionFailedError`).
|
|
87
|
+
- `session.end()` / `session.disconnect()` — terminal release vs. detach-and-stay-reconnectable.
|
|
88
|
+
- `Session.attach(sessionId, options)` — join a running session as a consume-only viewer.
|
|
80
89
|
- `createStore(options)` — content-addressed global store: `get(key)` / `has(key)` reads and
|
|
81
90
|
`on(name, cb)` / `emit(name, data)` global streams. (App-scoped `store.cache` is a runtime
|
|
82
91
|
concern; content-addressed blobs — `store.model`/`store.path`/`store.repo` — are not app-scoped.)
|
package/dist/index.browser.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as AppOptions, c as App$1,
|
|
2
|
-
export { b as ActivationState,
|
|
1
|
+
import { d as AppOptions, c as App$1, J as SessionPhase, Q as SessionStatus, N as SessionPhaseName, A as AccessTokenOptions$1, x as RuntimeArtifact, y as RuntimeArtifactDownload, R as Recording, S as Session$1, C as ChannelEndpoint, Z as TransportSession, e as AttachOptions, E as SessionDiagnostic, a as ActivationEvent, u as RecordingsAccessor, z as RuntimeArtifactsAccessor, H as SessionEndResult, T as SessionStream$1, Y as StreamDataTransport, G as SessionDocumentImpl, X as StreamChunkOptions, i as ChunkReadable, P as Presence, m as DocConnector, v as RequestOptions, w as RequestStreamOptions, W as StoreOptions, V as Store, g as ChannelMultiplexer, I as SessionFailureKind, $ as TransportState } from './stream-data-BQso6wNv.mjs';
|
|
2
|
+
export { b as ActivationState, M as MediaChunkBinding, n as MediaChunkSource, o as MediaChunkSourceFactory, p as MediaRecorderChunkSourceOptions, q as PresenceState, r as RecordingBucket, s as RecordingLifecycle, t as RecordingStatus, B as RuntimeAvailability, F as SessionDocument, K as SessionPhaseError, U as SessionText, a3 as isPendingRecording, a4 as mediaRecorderChunkSource } from './stream-data-BQso6wNv.mjs';
|
|
3
3
|
import 'yjs';
|
|
4
4
|
import 'y-protocols/awareness';
|
|
5
5
|
|
|
@@ -845,6 +845,10 @@ declare class WebTransportSession implements MediaSession {
|
|
|
845
845
|
readonly kind: "webtransport";
|
|
846
846
|
private wt;
|
|
847
847
|
private decoder;
|
|
848
|
+
|
|
849
|
+
private decoderConfig;
|
|
850
|
+
|
|
851
|
+
private decoderErrorsAt;
|
|
848
852
|
private writer;
|
|
849
853
|
private deadCb;
|
|
850
854
|
private deadFired;
|
|
@@ -869,6 +873,8 @@ declare class WebTransportSession implements MediaSession {
|
|
|
869
873
|
jitterMs: number;
|
|
870
874
|
};
|
|
871
875
|
private initDecoder;
|
|
876
|
+
|
|
877
|
+
private onDecoderError;
|
|
872
878
|
private datagramLoop;
|
|
873
879
|
private decodeFrame;
|
|
874
880
|
private sendControl;
|
|
@@ -943,6 +949,8 @@ declare class FrameReassembler {
|
|
|
943
949
|
|
|
944
950
|
push(chunk: Uint8Array): void;
|
|
945
951
|
|
|
952
|
+
requireKeyframe(): void;
|
|
953
|
+
|
|
946
954
|
drainWindow(): {
|
|
947
955
|
bytes: number;
|
|
948
956
|
delivered: number;
|
package/dist/index.browser.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as AppOptions, c as App$1,
|
|
2
|
-
export { b as ActivationState,
|
|
1
|
+
import { d as AppOptions, c as App$1, J as SessionPhase, Q as SessionStatus, N as SessionPhaseName, A as AccessTokenOptions$1, x as RuntimeArtifact, y as RuntimeArtifactDownload, R as Recording, S as Session$1, C as ChannelEndpoint, Z as TransportSession, e as AttachOptions, E as SessionDiagnostic, a as ActivationEvent, u as RecordingsAccessor, z as RuntimeArtifactsAccessor, H as SessionEndResult, T as SessionStream$1, Y as StreamDataTransport, G as SessionDocumentImpl, X as StreamChunkOptions, i as ChunkReadable, P as Presence, m as DocConnector, v as RequestOptions, w as RequestStreamOptions, W as StoreOptions, V as Store, g as ChannelMultiplexer, I as SessionFailureKind, $ as TransportState } from './stream-data-BQso6wNv.js';
|
|
2
|
+
export { b as ActivationState, M as MediaChunkBinding, n as MediaChunkSource, o as MediaChunkSourceFactory, p as MediaRecorderChunkSourceOptions, q as PresenceState, r as RecordingBucket, s as RecordingLifecycle, t as RecordingStatus, B as RuntimeAvailability, F as SessionDocument, K as SessionPhaseError, U as SessionText, a3 as isPendingRecording, a4 as mediaRecorderChunkSource } from './stream-data-BQso6wNv.js';
|
|
3
3
|
import 'yjs';
|
|
4
4
|
import 'y-protocols/awareness';
|
|
5
5
|
|
|
@@ -845,6 +845,10 @@ declare class WebTransportSession implements MediaSession {
|
|
|
845
845
|
readonly kind: "webtransport";
|
|
846
846
|
private wt;
|
|
847
847
|
private decoder;
|
|
848
|
+
|
|
849
|
+
private decoderConfig;
|
|
850
|
+
|
|
851
|
+
private decoderErrorsAt;
|
|
848
852
|
private writer;
|
|
849
853
|
private deadCb;
|
|
850
854
|
private deadFired;
|
|
@@ -869,6 +873,8 @@ declare class WebTransportSession implements MediaSession {
|
|
|
869
873
|
jitterMs: number;
|
|
870
874
|
};
|
|
871
875
|
private initDecoder;
|
|
876
|
+
|
|
877
|
+
private onDecoderError;
|
|
872
878
|
private datagramLoop;
|
|
873
879
|
private decodeFrame;
|
|
874
880
|
private sendControl;
|
|
@@ -943,6 +949,8 @@ declare class FrameReassembler {
|
|
|
943
949
|
|
|
944
950
|
push(chunk: Uint8Array): void;
|
|
945
951
|
|
|
952
|
+
requireKeyframe(): void;
|
|
953
|
+
|
|
946
954
|
drainWindow(): {
|
|
947
955
|
bytes: number;
|
|
948
956
|
delivered: number;
|