@meshagent/meshagent-react 0.35.4 → 0.35.6
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 +11 -0
- package/dist/cjs/subscribe-async-gen.js +16 -12
- package/dist/esm/subscribe-async-gen.js +16 -12
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
## [0.35.6]
|
|
2
|
+
- New `@meshagent/meshagent-ts-auth` package provides framework-agnostic OAuth/PKCE login, token storage/refresh, and access-token providers.
|
|
3
|
+
- New `@meshagent/meshagent-react-dev` package adds developer console hooks for logs, terminal sessions, and webterm/ghostty integrations.
|
|
4
|
+
- Breaking: `@meshagent/meshagent-react-auth` now builds on `@meshagent/meshagent-ts-auth` and React Query; built-in auth primitives and the LoginScope component were removed in favor of hook-based APIs.
|
|
5
|
+
- TypeScript storage uploads now honor server-provided `chunk_size` pull headers for adaptive chunking.
|
|
6
|
+
- Async-iterable subscriptions in the React package now call iterator `return()` on unsubscribe to clean up resources.
|
|
7
|
+
- Dependency updates: `react`/`react-dom` ^19.1.8, `@tanstack/react-query`/`@tanstack/react-query-devtools` ^5.95.2, `ghostty-web` ^0.4.0, `wasm-webterm` (GitHub), `jest` ^30.3.0, `@types/jest` ^30.0.0, `ts-jest` ^29.4.6, `esbuild` ^0.25.0, `@types/react` ^19.1.8, `@types/react-dom` ^19.1.8.
|
|
8
|
+
|
|
9
|
+
## [0.35.5]
|
|
10
|
+
- Stability
|
|
11
|
+
|
|
1
12
|
## [0.35.4]
|
|
2
13
|
- Stability
|
|
3
14
|
|
|
@@ -2,32 +2,36 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.subscribe = subscribe;
|
|
4
4
|
function abortableNext(iterator, signal) {
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
signal.addEventListener("abort", () =>
|
|
5
|
+
const nextPromise = iterator.next();
|
|
6
|
+
const abortPromise = new Promise((_, reject) => {
|
|
7
|
+
signal.addEventListener("abort", () => reject(new Error("aborted")), { once: true });
|
|
8
8
|
});
|
|
9
|
-
return Promise.race([
|
|
9
|
+
return Promise.race([nextPromise, abortPromise]);
|
|
10
10
|
}
|
|
11
11
|
function subscribe(iterable, { next, error, complete }) {
|
|
12
12
|
const controller = new AbortController();
|
|
13
|
-
const
|
|
14
|
-
(async () => {
|
|
13
|
+
const iterator = iterable[Symbol.asyncIterator]();
|
|
14
|
+
void (async () => {
|
|
15
15
|
try {
|
|
16
16
|
while (!controller.signal.aborted) {
|
|
17
|
-
const { value, done } = await abortableNext(
|
|
18
|
-
if (done)
|
|
17
|
+
const { value, done } = await abortableNext(iterator, controller.signal);
|
|
18
|
+
if (done) {
|
|
19
19
|
break;
|
|
20
|
+
}
|
|
20
21
|
next(value);
|
|
21
22
|
}
|
|
22
|
-
if (!controller.signal.aborted
|
|
23
|
-
complete();
|
|
23
|
+
if (!controller.signal.aborted) {
|
|
24
|
+
complete?.();
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
catch (err) {
|
|
27
|
-
if (!controller.signal.aborted
|
|
28
|
-
error(err);
|
|
28
|
+
if (!controller.signal.aborted) {
|
|
29
|
+
error?.(err);
|
|
29
30
|
}
|
|
30
31
|
}
|
|
32
|
+
finally {
|
|
33
|
+
await iterator.return?.();
|
|
34
|
+
}
|
|
31
35
|
})();
|
|
32
36
|
return {
|
|
33
37
|
unsubscribe: () => controller.abort(),
|
|
@@ -1,30 +1,34 @@
|
|
|
1
1
|
function abortableNext(iterator, signal) {
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
signal.addEventListener("abort", () =>
|
|
2
|
+
const nextPromise = iterator.next();
|
|
3
|
+
const abortPromise = new Promise((_, reject) => {
|
|
4
|
+
signal.addEventListener("abort", () => reject(new Error("aborted")), { once: true });
|
|
5
5
|
});
|
|
6
|
-
return Promise.race([
|
|
6
|
+
return Promise.race([nextPromise, abortPromise]);
|
|
7
7
|
}
|
|
8
8
|
export function subscribe(iterable, { next, error, complete }) {
|
|
9
9
|
const controller = new AbortController();
|
|
10
|
-
const
|
|
11
|
-
(async () => {
|
|
10
|
+
const iterator = iterable[Symbol.asyncIterator]();
|
|
11
|
+
void (async () => {
|
|
12
12
|
try {
|
|
13
13
|
while (!controller.signal.aborted) {
|
|
14
|
-
const { value, done } = await abortableNext(
|
|
15
|
-
if (done)
|
|
14
|
+
const { value, done } = await abortableNext(iterator, controller.signal);
|
|
15
|
+
if (done) {
|
|
16
16
|
break;
|
|
17
|
+
}
|
|
17
18
|
next(value);
|
|
18
19
|
}
|
|
19
|
-
if (!controller.signal.aborted
|
|
20
|
-
complete();
|
|
20
|
+
if (!controller.signal.aborted) {
|
|
21
|
+
complete?.();
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
catch (err) {
|
|
24
|
-
if (!controller.signal.aborted
|
|
25
|
-
error(err);
|
|
25
|
+
if (!controller.signal.aborted) {
|
|
26
|
+
error?.(err);
|
|
26
27
|
}
|
|
27
28
|
}
|
|
29
|
+
finally {
|
|
30
|
+
await iterator.return?.();
|
|
31
|
+
}
|
|
28
32
|
})();
|
|
29
33
|
return {
|
|
30
34
|
unsubscribe: () => controller.abort(),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshagent/meshagent-react",
|
|
3
|
-
"version": "0.35.
|
|
3
|
+
"version": "0.35.6",
|
|
4
4
|
"description": "Meshagent React Client",
|
|
5
5
|
"homepage": "https://github.com/meshagent/meshagent-react",
|
|
6
6
|
"scripts": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"base-64": "^1.0.0",
|
|
35
35
|
"livekit-client": "^2.15.5",
|
|
36
36
|
"react": "^19.1.0",
|
|
37
|
-
"@meshagent/meshagent": "^0.35.
|
|
37
|
+
"@meshagent/meshagent": "^0.35.6",
|
|
38
38
|
"react-dom": "^19.1.0",
|
|
39
39
|
"typescript": "^5.8.3",
|
|
40
40
|
"uuid": "^11.1.0",
|