reactor-effect-client 0.2.0 → 0.3.0-rc.0
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/README.md +62 -6
- package/dist/FetchHttp.js +1 -1
- package/dist/FetchHttp.js.map +1 -1
- package/dist/PeerFactory.d.ts +13 -2
- package/dist/PeerFactory.d.ts.map +1 -1
- package/dist/PeerFactory.js.map +1 -1
- package/dist/PeerTypes.d.ts +2 -2
- package/dist/PeerTypes.d.ts.map +1 -1
- package/dist/Sequence.d.ts +18 -14
- package/dist/Sequence.d.ts.map +1 -1
- package/dist/Sequence.js +117 -122
- package/dist/Sequence.js.map +1 -1
- package/dist/SessionTypes.d.ts +168 -15
- package/dist/SessionTypes.d.ts.map +1 -1
- package/dist/SessionTypes.js +18 -1
- package/dist/SessionTypes.js.map +1 -1
- package/dist/bytes.js +3 -3
- package/dist/bytes.js.map +1 -1
- package/dist/contract.d.ts +120 -29
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +105 -73
- package/dist/contract.js.map +1 -1
- package/dist/coordinator/_internal/client.d.ts +111 -17
- package/dist/coordinator/_internal/client.d.ts.map +1 -1
- package/dist/coordinator/_internal/client.js +187 -74
- package/dist/coordinator/_internal/client.js.map +1 -1
- package/dist/coordinator/_internal/recording.d.ts +33 -0
- package/dist/coordinator/_internal/recording.d.ts.map +1 -0
- package/dist/coordinator/_internal/recording.js +123 -0
- package/dist/coordinator/_internal/recording.js.map +1 -0
- package/dist/coordinator/_internal/response.d.ts.map +1 -1
- package/dist/coordinator/_internal/response.js +5 -7
- package/dist/coordinator/_internal/response.js.map +1 -1
- package/dist/coordinator/_internal/schemas.d.ts +40 -6
- package/dist/coordinator/_internal/schemas.d.ts.map +1 -1
- package/dist/coordinator/_internal/schemas.js +94 -64
- package/dist/coordinator/_internal/schemas.js.map +1 -1
- package/dist/coordinator/index.d.ts +14 -2
- package/dist/coordinator/index.d.ts.map +1 -1
- package/dist/coordinator/index.js +14 -18
- package/dist/coordinator/index.js.map +1 -1
- package/dist/correlation.d.ts +15 -0
- package/dist/correlation.d.ts.map +1 -1
- package/dist/correlation.js +26 -8
- package/dist/correlation.js.map +1 -1
- package/dist/duration.d.ts +25 -0
- package/dist/duration.d.ts.map +1 -0
- package/dist/duration.js +47 -0
- package/dist/duration.js.map +1 -0
- package/dist/errors.d.ts +1264 -49
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +698 -46
- package/dist/errors.js.map +1 -1
- package/dist/h3/_internal/client.d.ts +2 -2
- package/dist/h3/_internal/client.d.ts.map +1 -1
- package/dist/h3/_internal/client.js +210 -125
- package/dist/h3/_internal/client.js.map +1 -1
- package/dist/h3/_internal/contracts.d.ts.map +1 -1
- package/dist/h3/_internal/contracts.js +2 -2
- package/dist/h3/_internal/contracts.js.map +1 -1
- package/dist/h3/_internal/deployment.d.ts.map +1 -1
- package/dist/h3/_internal/deployment.js +5 -4
- package/dist/h3/_internal/deployment.js.map +1 -1
- package/dist/h3/_internal/evidence.js +1 -1
- package/dist/h3/_internal/evidence.js.map +1 -1
- package/dist/h3/_internal/operations.d.ts +48 -0
- package/dist/h3/_internal/operations.d.ts.map +1 -0
- package/dist/h3/_internal/operations.js +230 -0
- package/dist/h3/_internal/operations.js.map +1 -0
- package/dist/h3/_internal/references.d.ts.map +1 -1
- package/dist/h3/_internal/references.js +3 -8
- package/dist/h3/_internal/references.js.map +1 -1
- package/dist/h3/_internal/request.js +1 -1
- package/dist/h3/_internal/request.js.map +1 -1
- package/dist/h3/_internal/retained.d.ts +22 -0
- package/dist/h3/_internal/retained.d.ts.map +1 -0
- package/dist/h3/_internal/retained.js +89 -0
- package/dist/h3/_internal/retained.js.map +1 -0
- package/dist/h3/_internal/state.d.ts +15 -1
- package/dist/h3/_internal/state.d.ts.map +1 -1
- package/dist/h3/_internal/state.js +69 -29
- package/dist/h3/_internal/state.js.map +1 -1
- package/dist/h3/index.d.ts +1 -1
- package/dist/h3/index.d.ts.map +1 -1
- package/dist/h3/messages.d.ts +118 -109
- package/dist/h3/messages.d.ts.map +1 -1
- package/dist/h3/messages.js +73 -51
- package/dist/h3/messages.js.map +1 -1
- package/dist/h3/types.d.ts +108 -13
- package/dist/h3/types.d.ts.map +1 -1
- package/dist/host.d.ts +6 -6
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +4 -5
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts +13 -6
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +34 -14
- package/dist/json.js.map +1 -1
- package/dist/media-stream.d.ts.map +1 -1
- package/dist/media-stream.js +9 -11
- package/dist/media-stream.js.map +1 -1
- package/dist/observation.d.ts +9 -0
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +20 -18
- package/dist/observation.js.map +1 -1
- package/dist/orchestration/h3-source.d.ts +32 -4
- package/dist/orchestration/h3-source.d.ts.map +1 -1
- package/dist/orchestration/h3-source.js +47 -14
- package/dist/orchestration/h3-source.js.map +1 -1
- package/dist/orchestration/index.d.ts +9 -6
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +5 -3
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/media-buffer.d.ts +12 -4
- package/dist/orchestration/media-buffer.d.ts.map +1 -1
- package/dist/orchestration/media-buffer.js +31 -11
- package/dist/orchestration/media-buffer.js.map +1 -1
- package/dist/orchestration/open-h3.d.ts +65 -0
- package/dist/orchestration/open-h3.d.ts.map +1 -0
- package/dist/orchestration/open-h3.js +65 -0
- package/dist/orchestration/open-h3.js.map +1 -0
- package/dist/orchestration/references.d.ts +5 -1
- package/dist/orchestration/references.d.ts.map +1 -1
- package/dist/orchestration/references.js +37 -34
- package/dist/orchestration/references.js.map +1 -1
- package/dist/orchestration/renewal-state.js +1 -1
- package/dist/orchestration/renewal-state.js.map +1 -1
- package/dist/orchestration/renewal.d.ts +64 -64
- package/dist/orchestration/renewal.d.ts.map +1 -1
- package/dist/orchestration/renewal.js +149 -88
- package/dist/orchestration/renewal.js.map +1 -1
- package/dist/orchestration/request.d.ts +11 -12
- package/dist/orchestration/request.d.ts.map +1 -1
- package/dist/orchestration/request.js +63 -66
- package/dist/orchestration/request.js.map +1 -1
- package/dist/orchestration/routing.d.ts.map +1 -1
- package/dist/orchestration/routing.js +17 -14
- package/dist/orchestration/routing.js.map +1 -1
- package/dist/orchestration/source-slot.d.ts +15 -5
- package/dist/orchestration/source-slot.d.ts.map +1 -1
- package/dist/orchestration/source-slot.js +40 -21
- package/dist/orchestration/source-slot.js.map +1 -1
- package/dist/orchestration/types.d.ts +594 -39
- package/dist/orchestration/types.d.ts.map +1 -1
- package/dist/orchestration/types.js +20 -0
- package/dist/orchestration/types.js.map +1 -1
- package/dist/protobuf.js +2 -2
- package/dist/protobuf.js.map +1 -1
- package/dist/session/_internal/acquire.d.ts +4 -6
- package/dist/session/_internal/acquire.d.ts.map +1 -1
- package/dist/session/_internal/acquire.js +40 -50
- package/dist/session/_internal/acquire.js.map +1 -1
- package/dist/session/_internal/cleanup.d.ts +2 -1
- package/dist/session/_internal/cleanup.d.ts.map +1 -1
- package/dist/session/_internal/cleanup.js +23 -15
- package/dist/session/_internal/cleanup.js.map +1 -1
- package/dist/session/_internal/lifecycle.d.ts +5 -0
- package/dist/session/_internal/lifecycle.d.ts.map +1 -1
- package/dist/session/_internal/lifecycle.js +16 -6
- package/dist/session/_internal/lifecycle.js.map +1 -1
- package/dist/session/_internal/remote.d.ts.map +1 -1
- package/dist/session/_internal/remote.js +16 -7
- package/dist/session/_internal/remote.js.map +1 -1
- package/dist/session/_internal/uploads.d.ts +4 -1
- package/dist/session/_internal/uploads.d.ts.map +1 -1
- package/dist/session/_internal/uploads.js +25 -27
- package/dist/session/_internal/uploads.js.map +1 -1
- package/dist/session/commands.d.ts +1 -21
- package/dist/session/commands.d.ts.map +1 -1
- package/dist/session/commands.js +1 -12
- package/dist/session/commands.js.map +1 -1
- package/dist/session/files.d.ts +10 -2
- package/dist/session/files.d.ts.map +1 -1
- package/dist/session/files.js +11 -16
- package/dist/session/files.js.map +1 -1
- package/dist/session/index.d.ts +6 -6
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js.map +1 -1
- package/dist/session/media.d.ts +53 -6
- package/dist/session/media.d.ts.map +1 -1
- package/dist/session/recorder.d.ts +24 -0
- package/dist/session/recorder.d.ts.map +1 -0
- package/dist/session/recorder.js +19 -0
- package/dist/session/recorder.js.map +1 -0
- package/dist/session.d.ts +5 -4
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +208 -109
- package/dist/session.js.map +1 -1
- package/dist/simulation/_internal/source.d.ts.map +1 -1
- package/dist/simulation/_internal/source.js +57 -48
- package/dist/simulation/_internal/source.js.map +1 -1
- package/dist/simulation/index.d.ts +4 -5
- package/dist/simulation/index.d.ts.map +1 -1
- package/dist/simulation/index.js +3 -4
- package/dist/simulation/index.js.map +1 -1
- package/dist/simulation/types.d.ts +16 -2
- package/dist/simulation/types.d.ts.map +1 -1
- package/dist/stats.d.ts.map +1 -1
- package/dist/stats.js +4 -5
- package/dist/stats.js.map +1 -1
- package/package.json +5 -4
- package/notices/owned-webrtc/Effect-MIT.txt +0 -21
- package/notices/owned-webrtc/IETF.txt +0 -43
- package/notices/owned-webrtc/LICENSE +0 -21
- package/notices/owned-webrtc/UPSTREAM.md +0 -20
- package/notices/owned-webrtc/VP8-ADAPTATION.md +0 -32
- package/notices/owned-webrtc/VP8-AUTHORS.txt +0 -42
- package/notices/owned-webrtc/VP8-LICENSE.txt +0 -25
- package/notices/owned-webrtc/VP8-PATENTS.txt +0 -21
- package/notices/owned-webrtc/Werift-MIT.txt +0 -21
- package/notices/owned-webrtc/libvpx-v1.12.0-LICENSE.txt +0 -28
- package/notices/owned-webrtc/libvpx-v1.12.0-PATENTS.txt +0 -22
- package/notices/owned-webrtc/rfc3711.txt +0 -3139
- package/notices/owned-webrtc/str0m-MIT.txt +0 -7
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type * as Crypto from "effect/Crypto";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import type * as FileSystem from "effect/FileSystem";
|
|
4
|
+
import type * as Path from "effect/Path";
|
|
5
|
+
import * as Schema from "effect/Schema";
|
|
6
|
+
import * as Scope from "effect/Scope";
|
|
7
|
+
import type * as Http from "effect/unstable/http/HttpClient";
|
|
8
|
+
import type { TokenGrant } from "../coordinator/_internal/schemas.js";
|
|
9
|
+
import { AcquisitionFailure } from "../errors.js";
|
|
10
|
+
import type { CommandFailure, PolicyFailure, ReactorError } from "../errors.js";
|
|
11
|
+
import { Client } from "../session/index.js";
|
|
12
|
+
import type { CreateOptions, Session } from "../session/index.js";
|
|
13
|
+
import type { H3Source, SessionSourceOptions } from "./h3-source.js";
|
|
14
|
+
import type { Opened } from "./renewal.js";
|
|
15
|
+
/**
|
|
16
|
+
* A durable owner record of an allocated session, without its token: enough to
|
|
17
|
+
* find the session again and terminate it with the grant's token, which the
|
|
18
|
+
* application stores as it decides.
|
|
19
|
+
*/
|
|
20
|
+
export declare const Allocation: Schema.Struct<{
|
|
21
|
+
readonly sessionId: Schema.String;
|
|
22
|
+
readonly ownership: Schema.Literals<readonly ["owned", "attached"]>;
|
|
23
|
+
readonly model: Schema.String;
|
|
24
|
+
/** When the grant's token expires, in seconds since the epoch. */
|
|
25
|
+
readonly expiresAt: Schema.Finite;
|
|
26
|
+
}>;
|
|
27
|
+
export interface Allocation extends Schema.Schema.Type<typeof Allocation> {
|
|
28
|
+
}
|
|
29
|
+
/** A paid session just allocated, before it connects, and the grant it runs under. */
|
|
30
|
+
export interface Allocated {
|
|
31
|
+
readonly session: Session;
|
|
32
|
+
/** `grant.jwt` stays `Redacted`: how to store it is the application's decision. */
|
|
33
|
+
readonly grant: TokenGrant;
|
|
34
|
+
/** The session's owner record, ready to persist with `Allocation`. */
|
|
35
|
+
readonly allocation: Allocation;
|
|
36
|
+
}
|
|
37
|
+
export interface OpenH3Options<E = never, R = never> {
|
|
38
|
+
/** Mints the session's token. The API key never reaches the opener. */
|
|
39
|
+
readonly mint: Effect.Effect<TokenGrant, ReactorError, R>;
|
|
40
|
+
/**
|
|
41
|
+
* Runs after allocation and before connect, for example to record the owner
|
|
42
|
+
* durably, so a crash after it can still find and terminate the session:
|
|
43
|
+
* terminate and inspect authenticate with the grant's token.
|
|
44
|
+
*/
|
|
45
|
+
readonly onAllocated?: ((allocated: Allocated) => Effect.Effect<void, E, R>) | undefined;
|
|
46
|
+
/** The rest of the create request; the model is H3's and the token is the grant's. */
|
|
47
|
+
readonly create?: Omit<CreateOptions, "model" | "jwt"> | undefined;
|
|
48
|
+
readonly source?: SessionSourceOptions | undefined;
|
|
49
|
+
}
|
|
50
|
+
/** An opened H3 source and its session's granted lifetime: a renewal `open` result. */
|
|
51
|
+
export interface OpenedH3 extends Opened {
|
|
52
|
+
readonly source: H3Source;
|
|
53
|
+
}
|
|
54
|
+
type Bind = (session: Session, options?: SessionSourceOptions) => Effect.Effect<H3Source, ReactorError | PolicyFailure | CommandFailure, Scope.Scope | Crypto.Crypto | FileSystem.FileSystem | Path.Path | Http.HttpClient>;
|
|
55
|
+
/** `openH3` over a given session binder; internal, so tests can supply media. */
|
|
56
|
+
export declare const openH3With: (bind: Bind) => <E = never, R = never>(options: OpenH3Options<E, R>) => Effect.Effect<OpenedH3, AcquisitionFailure | E, R | Client | Scope.Scope | Crypto.Crypto | FileSystem.FileSystem | Path.Path | Http.HttpClient>;
|
|
57
|
+
/**
|
|
58
|
+
* Open a paid H3 session as an orchestration source: mint its token, allocate
|
|
59
|
+
* it, run `onAllocated`, connect, and derive its source. The result is a
|
|
60
|
+
* renewal `open` result, its lifetime the granted session length:
|
|
61
|
+
* `Orchestration.make({ open: openH3(options) })`.
|
|
62
|
+
*/
|
|
63
|
+
export declare const openH3: <E = never, R = never>(options: OpenH3Options<E, R>) => Effect.Effect<OpenedH3, AcquisitionFailure | E, R | Client | Scope.Scope | Crypto.Crypto | FileSystem.FileSystem | Path.Path | Http.HttpClient>;
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=open-h3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-h3.d.ts","sourceRoot":"","sources":["../../src/orchestration/open-h3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Exit from "effect/Exit";
|
|
3
|
+
import * as Schema from "effect/Schema";
|
|
4
|
+
import * as Scope from "effect/Scope";
|
|
5
|
+
import { AcquisitionFailure, isReactorFailure } from "../errors.js";
|
|
6
|
+
import { modelName } from "../h3/profile.js";
|
|
7
|
+
import { noAcquisition } from "../session/_internal/acquire.js";
|
|
8
|
+
import { Client } from "../session/index.js";
|
|
9
|
+
import { fromH3Session } from "./h3-source.js";
|
|
10
|
+
/**
|
|
11
|
+
* A durable owner record of an allocated session, without its token: enough to
|
|
12
|
+
* find the session again and terminate it with the grant's token, which the
|
|
13
|
+
* application stores as it decides.
|
|
14
|
+
*/
|
|
15
|
+
export const Allocation = Schema.Struct({
|
|
16
|
+
sessionId: Schema.String,
|
|
17
|
+
ownership: Schema.Literals(["owned", "attached"]),
|
|
18
|
+
model: Schema.String,
|
|
19
|
+
/** When the grant's token expires, in seconds since the epoch. */
|
|
20
|
+
expiresAt: Schema.Finite,
|
|
21
|
+
});
|
|
22
|
+
/** `openH3` over a given session binder; internal, so tests can supply media. */
|
|
23
|
+
export const openH3With = (bind) => (options) => Effect.gen(function* () {
|
|
24
|
+
const client = yield* Client;
|
|
25
|
+
const grant = yield* options.mint.pipe(Effect.mapError((error) => AcquisitionFailure.from(error, noAcquisition)));
|
|
26
|
+
// A child of the caller's scope owns the paid session, so a failed open
|
|
27
|
+
// releases it now rather than when a longer-lived caller scope closes.
|
|
28
|
+
const scope = yield* Scope.fork(yield* Effect.scope);
|
|
29
|
+
const session = yield* client
|
|
30
|
+
.create({ ...options.create, model: modelName, jwt: grant.jwt })
|
|
31
|
+
.pipe(Scope.provide(scope));
|
|
32
|
+
const open = Effect.gen(function* () {
|
|
33
|
+
if (options.onAllocated !== undefined)
|
|
34
|
+
yield* options.onAllocated({
|
|
35
|
+
session,
|
|
36
|
+
grant,
|
|
37
|
+
allocation: {
|
|
38
|
+
sessionId: session.id,
|
|
39
|
+
ownership: session.ownership,
|
|
40
|
+
model: modelName,
|
|
41
|
+
expiresAt: grant.expiresAt,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
yield* session.connect;
|
|
45
|
+
const source = yield* bind(session, options.source);
|
|
46
|
+
const opened = {
|
|
47
|
+
source,
|
|
48
|
+
// A unit, never a bare number: a bare number is milliseconds.
|
|
49
|
+
lifetime: `${grant.granted.maxSessionSeconds} seconds`,
|
|
50
|
+
};
|
|
51
|
+
return opened;
|
|
52
|
+
}).pipe(Scope.provide(scope));
|
|
53
|
+
return yield* open.pipe(
|
|
54
|
+
// A failure after allocation reports the session's cleanup, as a failed
|
|
55
|
+
// `createConnected` does; an application error from onAllocated stays as it was.
|
|
56
|
+
Effect.catch((error) => session.close.pipe(Effect.flatMap((report) => Effect.fail(isReactorFailure(error) ? AcquisitionFailure.from(error, report) : error)))), Effect.onExit((exit) => (Exit.isFailure(exit) ? Scope.close(scope, exit) : Effect.void)));
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* Open a paid H3 session as an orchestration source: mint its token, allocate
|
|
60
|
+
* it, run `onAllocated`, connect, and derive its source. The result is a
|
|
61
|
+
* renewal `open` result, its lifetime the granted session length:
|
|
62
|
+
* `Orchestration.make({ open: openH3(options) })`.
|
|
63
|
+
*/
|
|
64
|
+
export const openH3 = openH3With(fromH3Session);
|
|
65
|
+
//# sourceMappingURL=open-h3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-h3.js","sourceRoot":"","sources":["../../src/orchestration/open-h3.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type * as Duration from "effect/Duration";
|
|
1
2
|
import * as Effect from "effect/Effect";
|
|
2
3
|
import * as FileSystem from "effect/FileSystem";
|
|
3
4
|
import * as Path from "effect/Path";
|
|
@@ -5,7 +6,10 @@ import * as Http from "effect/unstable/http/HttpClient";
|
|
|
5
6
|
import { ReactorError } from "../errors.js";
|
|
6
7
|
export interface LoadLimits {
|
|
7
8
|
readonly maxBytes: number;
|
|
8
|
-
|
|
9
|
+
/** How long loading one reference may take. A bare number is milliseconds. */
|
|
10
|
+
readonly loadTimeout: Duration.Input;
|
|
11
|
+
/** @deprecated Removed in 0.3.0: use `loadTimeout` (a bare number is milliseconds). */
|
|
12
|
+
readonly timeoutMs?: never;
|
|
9
13
|
}
|
|
10
14
|
/**
|
|
11
15
|
* Every call rereads the URI. The H3 provider deduplicates subsequent uploads by
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../src/orchestration/references.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,IAAI,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../src/orchestration/references.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,KAAK,IAAI,MAAM,iCAAiC,CAAC;AAGxD,OAAO,EAAS,YAAY,EAAE,MAAM,cAAc,CAAC;AAInD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC;IACrC,uFAAuF;IACvF,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;CAC5B;AAqED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QACxB,MAAM,UACH,UAAU,KACjB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAiB1F,CAAC"}
|
|
@@ -3,39 +3,29 @@ import * as FileSystem from "effect/FileSystem";
|
|
|
3
3
|
import * as Path from "effect/Path";
|
|
4
4
|
import * as Schema from "effect/Schema";
|
|
5
5
|
import * as Http from "effect/unstable/http/HttpClient";
|
|
6
|
-
import
|
|
6
|
+
import * as Result from "effect/Result";
|
|
7
|
+
import { duration } from "../duration.js";
|
|
8
|
+
import { parse, ReactorError } from "../errors.js";
|
|
7
9
|
import { collectBytes } from "../bytes.js";
|
|
8
10
|
import { readFileBytes } from "../session/files.js";
|
|
9
|
-
const failure = (message, detail) =>
|
|
11
|
+
const failure = (message, detail) => ReactorError.fromCode("Upload", message, {
|
|
10
12
|
operation: "load reference",
|
|
11
13
|
outcome: "not-submitted",
|
|
12
14
|
...(detail === undefined ? {} : { detail }),
|
|
13
15
|
});
|
|
14
|
-
|
|
15
|
-
* Every call rereads the URI. The H3 provider deduplicates subsequent uploads by
|
|
16
|
-
* the bytes' hash; a URI cache cannot establish that mutable content is unchanged.
|
|
17
|
-
* This loader works independently of any live provider session.
|
|
18
|
-
*/
|
|
19
|
-
export const loadReferenceBytes = (uri, limits) => Effect.gen(function* () {
|
|
20
|
-
if (typeof uri !== "string" ||
|
|
21
|
-
!Number.isSafeInteger(limits.maxBytes) ||
|
|
22
|
-
limits.maxBytes <= 0 ||
|
|
23
|
-
!Number.isFinite(limits.timeoutMs) ||
|
|
24
|
-
limits.timeoutMs <= 0) {
|
|
25
|
-
return yield* Effect.fail(failure("Reference URI and positive finite loading bounds are required"));
|
|
26
|
-
}
|
|
16
|
+
const load = (uri, maxBytes) => Effect.gen(function* () {
|
|
27
17
|
if (uri.startsWith("data:")) {
|
|
28
18
|
const comma = uri.indexOf(",");
|
|
29
19
|
if (comma < 0 || !uri.slice(0, comma).endsWith(";base64"))
|
|
30
|
-
return yield*
|
|
20
|
+
return yield* failure("Only base64 data URIs are supported");
|
|
31
21
|
const encoded = uri.slice(comma + 1);
|
|
32
|
-
if (encoded.length > 4 * Math.ceil(
|
|
33
|
-
return yield*
|
|
34
|
-
const result = Schema.
|
|
22
|
+
if (encoded.length > 4 * Math.ceil(maxBytes / 3))
|
|
23
|
+
return yield* failure("Reference exceeds the byte bound");
|
|
24
|
+
const result = Schema.decodeResult(Schema.Uint8ArrayFromBase64)(encoded);
|
|
35
25
|
if (result._tag === "Failure")
|
|
36
|
-
return yield*
|
|
37
|
-
if (result.success.byteLength >
|
|
38
|
-
return yield*
|
|
26
|
+
return yield* failure("Invalid base64 reference", result.failure);
|
|
27
|
+
if (result.success.byteLength > maxBytes)
|
|
28
|
+
return yield* failure("Reference exceeds the byte bound");
|
|
39
29
|
return result.success;
|
|
40
30
|
}
|
|
41
31
|
if (uri.startsWith("/") || uri.startsWith("file://")) {
|
|
@@ -50,9 +40,7 @@ export const loadReferenceBytes = (uri, limits) => Effect.gen(function* () {
|
|
|
50
40
|
.fromFileUrl(url)
|
|
51
41
|
.pipe(Effect.mapError((cause) => failure("Invalid file URI", cause)));
|
|
52
42
|
});
|
|
53
|
-
return yield* readFileBytes(path,
|
|
54
|
-
? cause
|
|
55
|
-
: failure("Reference file could not be read", cause)));
|
|
43
|
+
return yield* readFileBytes(path, maxBytes).pipe(Effect.mapError((cause) => ReactorError.is(cause) ? cause : failure("Reference file could not be read", cause)));
|
|
56
44
|
}
|
|
57
45
|
if (uri.startsWith("http://") || uri.startsWith("https://")) {
|
|
58
46
|
const http = Http.withScope(yield* Http.HttpClient);
|
|
@@ -61,16 +49,31 @@ export const loadReferenceBytes = (uri, limits) => Effect.gen(function* () {
|
|
|
61
49
|
.get(uri)
|
|
62
50
|
.pipe(Effect.mapError((cause) => failure("Reference download failed", cause)));
|
|
63
51
|
if (response.status < 200 || response.status >= 300)
|
|
64
|
-
return yield*
|
|
52
|
+
return yield* failure(`Reference download returned HTTP ${response.status}`);
|
|
65
53
|
const declared = Number(response.headers["content-length"] ?? "0");
|
|
66
|
-
if (Number.isFinite(declared) && declared >
|
|
67
|
-
return yield*
|
|
68
|
-
return yield* collectBytes(response.stream,
|
|
54
|
+
if (Number.isFinite(declared) && declared > maxBytes)
|
|
55
|
+
return yield* failure("Reference exceeds the byte bound");
|
|
56
|
+
return yield* collectBytes(response.stream, maxBytes).pipe(Effect.mapError((cause) => ReactorError.is(cause) ? cause : failure("Reference download failed", cause)));
|
|
69
57
|
}));
|
|
70
58
|
}
|
|
71
|
-
return yield*
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
59
|
+
return yield* failure("Unsupported reference URI scheme");
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* Every call rereads the URI. The H3 provider deduplicates subsequent uploads by
|
|
63
|
+
* the bytes' hash; a URI cache cannot establish that mutable content is unchanged.
|
|
64
|
+
* This loader works independently of any live provider session.
|
|
65
|
+
*/
|
|
66
|
+
export const loadReferenceBytes = (uri, limits) => Effect.gen(function* () {
|
|
67
|
+
const timeout = parse(() => duration(limits.loadTimeout, "reference load timeout"));
|
|
68
|
+
if (typeof uri !== "string" ||
|
|
69
|
+
!Number.isSafeInteger(limits.maxBytes) ||
|
|
70
|
+
limits.maxBytes <= 0 ||
|
|
71
|
+
Result.isFailure(timeout)) {
|
|
72
|
+
return yield* failure("Reference URI and positive finite loading bounds are required");
|
|
73
|
+
}
|
|
74
|
+
return yield* load(uri, limits.maxBytes).pipe(Effect.timeoutOrElse({
|
|
75
|
+
duration: timeout.success,
|
|
76
|
+
orElse: () => Effect.fail(failure("Reference loading timed out")),
|
|
77
|
+
}));
|
|
78
|
+
});
|
|
76
79
|
//# sourceMappingURL=references.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/orchestration/references.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/orchestration/references.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,7 +35,7 @@ export const recoveryBudget = (source, now, timeoutMs) => Math.min(timeoutMs, Ma
|
|
|
35
35
|
/** Expiry is checked before sequence, queue, or media readiness can delay retirement. */
|
|
36
36
|
export const decideRenewal = (facts) => {
|
|
37
37
|
const current = facts.current;
|
|
38
|
-
if (!facts.running || current
|
|
38
|
+
if (!facts.running || current?.phase._tag !== "Active")
|
|
39
39
|
return "Retain";
|
|
40
40
|
if (expired(current, facts.now))
|
|
41
41
|
return "Expire";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renewal-state.js","sourceRoot":"","sources":["../../src/orchestration/renewal-state.ts"],"names":[],"mappings":"AAeA,kGAAkG;AAClG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAkB,EAAE,KAAuB,EAAe,EAAE;IAC3F,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9D,KAAK,QAAQ;YACX,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,SAAS;oBACZ,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBAClD,KAAK,OAAO;oBACV,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBAC7B;oBACE,OAAO,KAAK,CAAC;YACjB,CAAC;QACH,KAAK,YAAY;YACf,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,SAAS;oBACZ,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBACpF,KAAK,WAAW;oBACd,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBACjE,KAAK,OAAO;oBACV,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBAC7B;oBACE,OAAO,KAAK,CAAC;YACjB,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAkB,EAAW,EAAE,CACtD,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAOtD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAgB,EAAE,GAAW,EAAU,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC1F,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAgB,EAAE,GAAW,EAAW,EAAE,CAChE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AAErD,gGAAgG;AAChG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAgB,EAAE,GAAW,EAAE,SAAiB,EAAU,EAAE,CACzF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAatF,yFAAyF;AACzF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAmB,EAAE;IACpE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"renewal-state.js","sourceRoot":"","sources":["../../src/orchestration/renewal-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,76 +1,76 @@
|
|
|
1
1
|
import * as Crypto from "effect/Crypto";
|
|
2
|
+
import * as Duration from "effect/Duration";
|
|
2
3
|
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Layer from "effect/Layer";
|
|
3
5
|
import * as Scope from "effect/Scope";
|
|
4
|
-
import { ReactorError } from "../errors.js";
|
|
5
|
-
import type { HandleShape, Source } from "./types.js";
|
|
6
|
+
import { AcquisitionFailure, ReactorError } from "../errors.js";
|
|
7
|
+
import type { HandleShape, Renewal, Source } from "./types.js";
|
|
8
|
+
import type { Engine, Handle, Media } from "./types.js";
|
|
9
|
+
export type { MediaTail, Renewal } from "./types.js";
|
|
10
|
+
/** An opened source and how long its remote session may live. */
|
|
11
|
+
export interface Opened {
|
|
12
|
+
readonly source: Source;
|
|
13
|
+
/**
|
|
14
|
+
* The source's remote session lifetime, positive, or `"Infinity"` for a
|
|
15
|
+
* source that never expires. A bare number is milliseconds, so build it with
|
|
16
|
+
* a unit from a grant in seconds: `` `${seconds} seconds` ``.
|
|
17
|
+
*/
|
|
18
|
+
readonly lifetime: Duration.Input;
|
|
19
|
+
}
|
|
6
20
|
export interface Options<R = never> {
|
|
7
|
-
readonly open: Effect.Effect<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
21
|
+
readonly open: Effect.Effect<Opened, ReactorError | AcquisitionFailure, Scope.Scope | R>;
|
|
22
|
+
/**
|
|
23
|
+
* How long before a source's lifetime ends to prepare its replacement; 30
|
|
24
|
+
* seconds by default, and zero prepares at expiry. A bare number is
|
|
25
|
+
* milliseconds, so `lead: 30` is 30 milliseconds.
|
|
26
|
+
*/
|
|
27
|
+
readonly lead?: Duration.Input | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* How long recovering a source's connection may take, and the local cleanup
|
|
30
|
+
* budget of a retired source; 10 seconds by default. A bare number is
|
|
31
|
+
* milliseconds.
|
|
32
|
+
*/
|
|
33
|
+
readonly reconnectTimeout?: Duration.Input | undefined;
|
|
34
|
+
/** @deprecated Removed in 0.3.0: use `lead` (a bare number is milliseconds). */
|
|
35
|
+
readonly leadSeconds?: never;
|
|
36
|
+
/** @deprecated Removed in 0.3.0: use `reconnectTimeout` (a bare number is milliseconds). */
|
|
37
|
+
readonly reconnectTimeoutMs?: never;
|
|
13
38
|
readonly maxSessions?: number;
|
|
14
|
-
|
|
39
|
+
/**
|
|
40
|
+
* The video frames the media output keeps for a reader that has not taken
|
|
41
|
+
* them, 96 by default (4 seconds at 24 fps). Past it the orchestration fails
|
|
42
|
+
* with `Overflow`.
|
|
43
|
+
*/
|
|
44
|
+
readonly maxQueuedVideoFrames?: number;
|
|
45
|
+
/**
|
|
46
|
+
* The interleaved audio samples the media output keeps for a reader that has
|
|
47
|
+
* not taken them, 192,000 by default (4 seconds at 48 kHz). Past it the
|
|
48
|
+
* orchestration fails with `Overflow`.
|
|
49
|
+
*/
|
|
50
|
+
readonly maxQueuedAudioSamples?: number;
|
|
51
|
+
/**
|
|
52
|
+
* Runs for each renewal event, in order, on a reader the handle forks: it
|
|
53
|
+
* never holds the handle's command permit, so a slow observer delays no
|
|
54
|
+
* enqueue or control. A failure is logged and the next event still runs.
|
|
55
|
+
* Events that queue past 4096 end the reader with an `Overflow` warning; use
|
|
56
|
+
* `observe` to read renewals together with the engine events they follow.
|
|
57
|
+
*/
|
|
15
58
|
readonly onRenewal?: (event: Renewal) => Effect.Effect<void>;
|
|
59
|
+
/**
|
|
60
|
+
* @deprecated Removed in 0.3.0: the orchestration logs through Effect's
|
|
61
|
+
* logger at debug level, annotated with `module: "reactor.orchestration"`.
|
|
62
|
+
*/
|
|
63
|
+
readonly log?: never;
|
|
16
64
|
}
|
|
17
|
-
export interface MediaTail {
|
|
18
|
-
readonly video: {
|
|
19
|
-
readonly framesPerSecond: number;
|
|
20
|
-
readonly expectedFrames: number;
|
|
21
|
-
readonly receivedFrames: number;
|
|
22
|
-
readonly status: "not-started" | "count-complete" | "incomplete";
|
|
23
|
-
};
|
|
24
|
-
readonly audio: {
|
|
25
|
-
readonly receivedSamples: number;
|
|
26
|
-
readonly status: "unverified";
|
|
27
|
-
};
|
|
28
|
-
readonly sourceDrops: {
|
|
29
|
-
readonly video: bigint | null;
|
|
30
|
-
readonly audio: bigint | null;
|
|
31
|
-
};
|
|
32
|
-
readonly forwarded: {
|
|
33
|
-
readonly queuedVideoFrames: number;
|
|
34
|
-
readonly queuedAudioSamples: number;
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
export type Renewal = {
|
|
38
|
-
readonly _tag: "Opened";
|
|
39
|
-
readonly sessionId: string;
|
|
40
|
-
readonly maxSeconds: number;
|
|
41
|
-
} | {
|
|
42
|
-
readonly _tag: "Prepared";
|
|
43
|
-
} | {
|
|
44
|
-
readonly _tag: "SetupFailed";
|
|
45
|
-
readonly reason: string;
|
|
46
|
-
readonly consecutive: number;
|
|
47
|
-
} | {
|
|
48
|
-
readonly _tag: "Recovering";
|
|
49
|
-
readonly sessionId: string;
|
|
50
|
-
readonly reason: string;
|
|
51
|
-
} | {
|
|
52
|
-
readonly _tag: "Reconnected";
|
|
53
|
-
readonly sessionId: string;
|
|
54
|
-
readonly generation: bigint;
|
|
55
|
-
} | {
|
|
56
|
-
readonly _tag: "Switched";
|
|
57
|
-
readonly sessionId: string;
|
|
58
|
-
readonly ageSeconds: number;
|
|
59
|
-
readonly tail: MediaTail;
|
|
60
|
-
} | {
|
|
61
|
-
readonly _tag: "Replaced";
|
|
62
|
-
readonly reason: string;
|
|
63
|
-
readonly lostClips: number;
|
|
64
|
-
readonly sessionId: string;
|
|
65
|
-
readonly ageSeconds: number;
|
|
66
|
-
readonly tail: MediaTail;
|
|
67
|
-
} | {
|
|
68
|
-
readonly _tag: "Failed";
|
|
69
|
-
readonly reason: string;
|
|
70
|
-
};
|
|
71
65
|
/**
|
|
72
66
|
* Explicit application policy for renewal, sequence affinity and continuous
|
|
73
67
|
* recovering media. A physical source still owns each connection generation.
|
|
74
68
|
*/
|
|
75
|
-
export declare const make: <R>(options: Options<R>) => Effect.Effect<HandleShape, ReactorError, Scope.Scope | Crypto.Crypto | R>;
|
|
69
|
+
export declare const make: <R>(options: Options<R>) => Effect.Effect<HandleShape, ReactorError | AcquisitionFailure, Scope.Scope | Crypto.Crypto | R>;
|
|
70
|
+
/**
|
|
71
|
+
* The handle's `Engine`, `Media` and `Handle` services from one orchestration,
|
|
72
|
+
* so the three can never come from two paid session chains. Each build of the
|
|
73
|
+
* layer opens its own chain: bind it to a `const` and provide that one value.
|
|
74
|
+
*/
|
|
75
|
+
export declare const layer: <R>(options: Options<R>) => Layer.Layer<Engine | Media | Handle, ReactorError | AcquisitionFailure, Crypto.Crypto | Exclude<R, Scope.Scope>>;
|
|
76
76
|
//# sourceMappingURL=renewal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renewal.d.ts","sourceRoot":"","sources":["../../src/orchestration/renewal.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"renewal.d.ts","sourceRoot":"","sources":["../../src/orchestration/renewal.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,EACL,kBAAkB,EAElB,YAAY,EAIb,MAAM,cAAc,CAAC;AAgBtB,OAAO,KAAK,EAOV,WAAW,EAEX,OAAO,EACP,MAAM,EAEP,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExD,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErD,iEAAiE;AACjE,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC;CACnC;AAED,MAAM,WAAW,OAAO,CAAC,CAAC,GAAG,KAAK;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,kBAAkB,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACzF;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;IACvD,gFAAgF;IAChF,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;IAC7B,4FAA4F;IAC5F,QAAQ,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7D;;;OAGG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;CACtB;AAYD;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,WACX,OAAO,CAAC,CAAC,CAAC,KAClB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,GAAG,kBAAkB,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CA47B5F,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,WACZ,OAAO,CAAC,CAAC,CAAC,KAClB,KAAK,CAAC,KAAK,CACZ,MAAM,GAAG,KAAK,GAAG,MAAM,EACvB,YAAY,GAAG,kBAAkB,EACjC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CACyB,CAAC"}
|