@astrale-os/kernel-client 0.2.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/dist/client/batch.d.ts +26 -0
- package/dist/client/batch.d.ts.map +1 -0
- package/dist/client/batch.js +8 -0
- package/dist/client/batch.js.map +1 -0
- package/dist/client/bound.d.ts +27 -0
- package/dist/client/bound.d.ts.map +1 -0
- package/dist/client/bound.js +14 -0
- package/dist/client/bound.js.map +1 -0
- package/dist/client/client.d.ts +93 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +393 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/config.d.ts +112 -0
- package/dist/client/config.d.ts.map +1 -0
- package/dist/client/config.js +10 -0
- package/dist/client/config.js.map +1 -0
- package/dist/client/fn-map.d.ts +61 -0
- package/dist/client/fn-map.d.ts.map +1 -0
- package/dist/client/fn-map.js +2 -0
- package/dist/client/fn-map.js.map +1 -0
- package/dist/client/freeze.d.ts +32 -0
- package/dist/client/freeze.d.ts.map +1 -0
- package/dist/client/freeze.js +42 -0
- package/dist/client/freeze.js.map +1 -0
- package/dist/client/hooks.d.ts +49 -0
- package/dist/client/hooks.d.ts.map +1 -0
- package/dist/client/hooks.js +2 -0
- package/dist/client/hooks.js.map +1 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -0
- package/dist/delegation/cache.d.ts +133 -0
- package/dist/delegation/cache.d.ts.map +1 -0
- package/dist/delegation/cache.js +258 -0
- package/dist/delegation/cache.js.map +1 -0
- package/dist/delegation/errors.d.ts +44 -0
- package/dist/delegation/errors.d.ts.map +1 -0
- package/dist/delegation/errors.js +62 -0
- package/dist/delegation/errors.js.map +1 -0
- package/dist/delegation/index.d.ts +6 -0
- package/dist/delegation/index.d.ts.map +1 -0
- package/dist/delegation/index.js +4 -0
- package/dist/delegation/index.js.map +1 -0
- package/dist/delegation/policy.d.ts +175 -0
- package/dist/delegation/policy.d.ts.map +1 -0
- package/dist/delegation/policy.js +109 -0
- package/dist/delegation/policy.js.map +1 -0
- package/dist/errors/errors.d.ts +103 -0
- package/dist/errors/errors.d.ts.map +1 -0
- package/dist/errors/errors.js +170 -0
- package/dist/errors/errors.js.map +1 -0
- package/dist/errors/index.d.ts +4 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +3 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/session-error.d.ts +21 -0
- package/dist/errors/session-error.d.ts.map +1 -0
- package/dist/errors/session-error.js +25 -0
- package/dist/errors/session-error.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/pacer/batcher.d.ts +11 -0
- package/dist/pacer/batcher.d.ts.map +1 -0
- package/dist/pacer/batcher.js +15 -0
- package/dist/pacer/batcher.js.map +1 -0
- package/dist/pacer/defaults.d.ts +18 -0
- package/dist/pacer/defaults.d.ts.map +1 -0
- package/dist/pacer/defaults.js +18 -0
- package/dist/pacer/defaults.js.map +1 -0
- package/dist/pacer/index.d.ts +10 -0
- package/dist/pacer/index.d.ts.map +1 -0
- package/dist/pacer/index.js +11 -0
- package/dist/pacer/index.js.map +1 -0
- package/dist/pacer/queue.d.ts +11 -0
- package/dist/pacer/queue.d.ts.map +1 -0
- package/dist/pacer/queue.js +15 -0
- package/dist/pacer/queue.js.map +1 -0
- package/dist/pacer/rate-limiter.d.ts +11 -0
- package/dist/pacer/rate-limiter.d.ts.map +1 -0
- package/dist/pacer/rate-limiter.js +15 -0
- package/dist/pacer/rate-limiter.js.map +1 -0
- package/dist/pacer/retry.d.ts +14 -0
- package/dist/pacer/retry.d.ts.map +1 -0
- package/dist/pacer/retry.js +50 -0
- package/dist/pacer/retry.js.map +1 -0
- package/dist/persistence/index.d.ts +3 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +2 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/persistence.d.ts +52 -0
- package/dist/persistence/persistence.d.ts.map +1 -0
- package/dist/persistence/persistence.js +32 -0
- package/dist/persistence/persistence.js.map +1 -0
- package/dist/pool/errors.d.ts +13 -0
- package/dist/pool/errors.d.ts.map +1 -0
- package/dist/pool/errors.js +16 -0
- package/dist/pool/errors.js.map +1 -0
- package/dist/pool/index.d.ts +4 -0
- package/dist/pool/index.d.ts.map +1 -0
- package/dist/pool/index.js +3 -0
- package/dist/pool/index.js.map +1 -0
- package/dist/pool/pool.d.ts +63 -0
- package/dist/pool/pool.d.ts.map +1 -0
- package/dist/pool/pool.js +87 -0
- package/dist/pool/pool.js.map +1 -0
- package/dist/redirect/errors.d.ts +45 -0
- package/dist/redirect/errors.d.ts.map +1 -0
- package/dist/redirect/errors.js +52 -0
- package/dist/redirect/errors.js.map +1 -0
- package/dist/redirect/index.d.ts +4 -0
- package/dist/redirect/index.d.ts.map +1 -0
- package/dist/redirect/index.js +3 -0
- package/dist/redirect/index.js.map +1 -0
- package/dist/redirect/policy.d.ts +79 -0
- package/dist/redirect/policy.d.ts.map +1 -0
- package/dist/redirect/policy.js +69 -0
- package/dist/redirect/policy.js.map +1 -0
- package/dist/schema/call-args.d.ts +6 -0
- package/dist/schema/call-args.d.ts.map +1 -0
- package/dist/schema/call-args.js +21 -0
- package/dist/schema/call-args.js.map +1 -0
- package/dist/schema/class-proxy.d.ts +8 -0
- package/dist/schema/class-proxy.d.ts.map +1 -0
- package/dist/schema/class-proxy.js +38 -0
- package/dist/schema/class-proxy.js.map +1 -0
- package/dist/schema/extract.d.ts +9 -0
- package/dist/schema/extract.d.ts.map +1 -0
- package/dist/schema/extract.js +16 -0
- package/dist/schema/extract.js.map +1 -0
- package/dist/schema/from-entries.d.ts +12 -0
- package/dist/schema/from-entries.d.ts.map +1 -0
- package/dist/schema/from-entries.js +39 -0
- package/dist/schema/from-entries.js.map +1 -0
- package/dist/schema/index.d.ts +11 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +9 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/node-proxy.d.ts +9 -0
- package/dist/schema/node-proxy.d.ts.map +1 -0
- package/dist/schema/node-proxy.js +32 -0
- package/dist/schema/node-proxy.js.map +1 -0
- package/dist/schema/proxy-types.d.ts +112 -0
- package/dist/schema/proxy-types.d.ts.map +1 -0
- package/dist/schema/proxy-types.js +2 -0
- package/dist/schema/proxy-types.js.map +1 -0
- package/dist/schema/registry.d.ts +51 -0
- package/dist/schema/registry.d.ts.map +1 -0
- package/dist/schema/registry.js +111 -0
- package/dist/schema/registry.js.map +1 -0
- package/dist/schema/resolve.d.ts +26 -0
- package/dist/schema/resolve.d.ts.map +1 -0
- package/dist/schema/resolve.js +27 -0
- package/dist/schema/resolve.js.map +1 -0
- package/dist/schema/typed-client.d.ts +10 -0
- package/dist/schema/typed-client.d.ts.map +1 -0
- package/dist/schema/typed-client.js +26 -0
- package/dist/schema/typed-client.js.map +1 -0
- package/dist/schema/types.d.ts +9 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +2 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/session/bound.d.ts +11 -0
- package/dist/session/bound.d.ts.map +1 -0
- package/dist/session/bound.js +24 -0
- package/dist/session/bound.js.map +1 -0
- package/dist/session/client-session.d.ts +61 -0
- package/dist/session/client-session.d.ts.map +1 -0
- package/dist/session/client-session.js +635 -0
- package/dist/session/client-session.js.map +1 -0
- package/dist/session/config.d.ts +157 -0
- package/dist/session/config.d.ts.map +1 -0
- package/dist/session/config.js +2 -0
- package/dist/session/config.js.map +1 -0
- package/dist/session/errors/index.d.ts +6 -0
- package/dist/session/errors/index.d.ts.map +1 -0
- package/dist/session/errors/index.js +8 -0
- package/dist/session/errors/index.js.map +1 -0
- package/dist/session/errors/session-errors.d.ts +52 -0
- package/dist/session/errors/session-errors.d.ts.map +1 -0
- package/dist/session/errors/session-errors.js +70 -0
- package/dist/session/errors/session-errors.js.map +1 -0
- package/dist/session/forward.d.ts +14 -0
- package/dist/session/forward.d.ts.map +1 -0
- package/dist/session/forward.js +44 -0
- package/dist/session/forward.js.map +1 -0
- package/dist/session/helpers.d.ts +23 -0
- package/dist/session/helpers.d.ts.map +1 -0
- package/dist/session/helpers.js +56 -0
- package/dist/session/helpers.js.map +1 -0
- package/dist/session/hooks.d.ts +140 -0
- package/dist/session/hooks.d.ts.map +1 -0
- package/dist/session/hooks.js +2 -0
- package/dist/session/hooks.js.map +1 -0
- package/dist/session/index.d.ts +6 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +3 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/types.d.ts +38 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +2 -0
- package/dist/session/types.js.map +1 -0
- package/dist/transport/binary.d.ts +15 -0
- package/dist/transport/binary.d.ts.map +1 -0
- package/dist/transport/binary.js +2 -0
- package/dist/transport/binary.js.map +1 -0
- package/dist/transport/contract.d.ts +58 -0
- package/dist/transport/contract.d.ts.map +1 -0
- package/dist/transport/contract.js +11 -0
- package/dist/transport/contract.js.map +1 -0
- package/dist/transport/fetch.d.ts +28 -0
- package/dist/transport/fetch.d.ts.map +1 -0
- package/dist/transport/fetch.js +74 -0
- package/dist/transport/fetch.js.map +1 -0
- package/dist/transport/http-envelope.d.ts +49 -0
- package/dist/transport/http-envelope.d.ts.map +1 -0
- package/dist/transport/http-envelope.js +405 -0
- package/dist/transport/http-envelope.js.map +1 -0
- package/dist/transport/http-routed.d.ts +61 -0
- package/dist/transport/http-routed.d.ts.map +1 -0
- package/dist/transport/http-routed.js +409 -0
- package/dist/transport/http-routed.js.map +1 -0
- package/dist/transport/index.d.ts +8 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +6 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/request-id.d.ts +9 -0
- package/dist/transport/request-id.d.ts.map +1 -0
- package/dist/transport/request-id.js +12 -0
- package/dist/transport/request-id.js.map +1 -0
- package/dist/transport/ws-envelope.d.ts +74 -0
- package/dist/transport/ws-envelope.d.ts.map +1 -0
- package/dist/transport/ws-envelope.js +560 -0
- package/dist/transport/ws-envelope.js.map +1 -0
- package/dist/util/race-signal.d.ts +12 -0
- package/dist/util/race-signal.d.ts.map +1 -0
- package/dist/util/race-signal.js +34 -0
- package/dist/util/race-signal.js.map +1 -0
- package/dist/wire/controller.d.ts +38 -0
- package/dist/wire/controller.d.ts.map +1 -0
- package/dist/wire/controller.js +38 -0
- package/dist/wire/controller.js.map +1 -0
- package/dist/wire/index.d.ts +7 -0
- package/dist/wire/index.d.ts.map +1 -0
- package/dist/wire/index.js +4 -0
- package/dist/wire/index.js.map +1 -0
- package/dist/wire/meta.d.ts +81 -0
- package/dist/wire/meta.d.ts.map +1 -0
- package/dist/wire/meta.js +44 -0
- package/dist/wire/meta.js.map +1 -0
- package/dist/wire/sse.d.ts +67 -0
- package/dist/wire/sse.d.ts.map +1 -0
- package/dist/wire/sse.js +170 -0
- package/dist/wire/sse.js.map +1 -0
- package/package.json +104 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { ClientSession } from './client-session';
|
|
2
|
+
export type { IdentityInput, ClientSessionCallOptions, ClientSessionConfig } from './config';
|
|
3
|
+
export type { BoundClientSessionView, SchemaTypedClientSession } from './types';
|
|
4
|
+
export type { AfterCallCtx, AfterSignalCtx, BeforeCallCtx, DelegationMintCtx, DelegationRefusedCtx, RedirectFollowCtx, RedirectRefusedCtx, ClientSessionErrorCtx, ClientSessionHooks, ClientSessionHop, } from './hooks';
|
|
5
|
+
export { IdentityPickerError, PersistenceLoadFailedError, RegistryWriteFailedError, SchemaOwnershipConflictError, UnresolvedIdentityError, } from './errors/session-errors';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EAAE,aAAa,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC5F,YAAY,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAC/E,YAAY,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAehD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { CredentialInput } from '@astrale-os/kernel-core';
|
|
2
|
+
import type { Schema } from '@astrale-os/kernel-dsl';
|
|
3
|
+
import type { BinaryFns, CallFns, FnMap, SignalFns, StreamFns } from '../client/fn-map';
|
|
4
|
+
import type { ClassNames, ClassProxy, NodeProxy } from '../schema/proxy-types';
|
|
5
|
+
import type { SchemaRegistry } from '../schema/registry';
|
|
6
|
+
import type { FunctionSchema } from '../schema/types';
|
|
7
|
+
import type { BinaryResponse } from '../transport/binary';
|
|
8
|
+
import type { ClientSessionCallOptions } from './config';
|
|
9
|
+
/**
|
|
10
|
+
* Credential-bound view over a `ClientSession`. Mirrors `BoundClientView` but over
|
|
11
|
+
* the orchestration surface — dispatch primitives return the unwrapped
|
|
12
|
+
* post-orchestration shape, not the discriminated `Send*Result` union.
|
|
13
|
+
*/
|
|
14
|
+
export type BoundClientSessionView<M extends FnMap> = {
|
|
15
|
+
readonly default: string;
|
|
16
|
+
readonly registry: SchemaRegistry;
|
|
17
|
+
call<K extends CallFns<M>>(method: K, params: M[K]['params'], opts?: ClientSessionCallOptions): Promise<M[K]['result']>;
|
|
18
|
+
stream<K extends StreamFns<M>>(method: K, params: M[K]['params'], opts?: ClientSessionCallOptions): Promise<AsyncIterable<M[K]['result']>>;
|
|
19
|
+
binary<K extends BinaryFns<M>>(method: K, params: M[K]['params'], opts?: ClientSessionCallOptions): Promise<BinaryResponse>;
|
|
20
|
+
signal<K extends SignalFns<M>>(method: K, params: M[K]['params'], opts?: ClientSessionCallOptions): void;
|
|
21
|
+
describe(method: string): FunctionSchema | undefined;
|
|
22
|
+
withSchema<S extends Schema>(schema: S): SchemaTypedClientSession<S>;
|
|
23
|
+
as(credential: CredentialInput | (() => CredentialInput)): BoundClientSessionView<M>;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Schema-typed proxy dispatched through ClientSession: followed redirects are
|
|
27
|
+
* transparent; refused redirects throw `RedirectRefusedError`.
|
|
28
|
+
*
|
|
29
|
+
* `node` / `static` cover `call` / `stream` / `binary`. Signals remain on
|
|
30
|
+
* `session.signal<K>` — the awaitable-only proxy doesn't mix sync-void and
|
|
31
|
+
* `Promise<R>` shapes.
|
|
32
|
+
*/
|
|
33
|
+
export interface SchemaTypedClientSession<S extends Schema> {
|
|
34
|
+
node<K extends ClassNames<S>>(className: K, nodeId: string): NodeProxy<S, K>;
|
|
35
|
+
static<K extends ClassNames<S>>(className: K): ClassProxy<S, K>;
|
|
36
|
+
readonly schema: S;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACvF,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AAExD;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,KAAK,IAAI;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,IAAI,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EACvB,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EACtB,IAAI,CAAC,EAAE,wBAAwB,GAC9B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC1B,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAC3B,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EACtB,IAAI,CAAC,EAAE,wBAAwB,GAC9B,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACzC,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAC3B,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EACtB,IAAI,CAAC,EAAE,wBAAwB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAAA;IAC1B,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAC3B,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EACtB,IAAI,CAAC,EAAE,wBAAwB,GAC9B,IAAI,CAAA;IACP,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAA;IACpD,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAA;IACpE,EAAE,CAAC,UAAU,EAAE,eAAe,GAAG,CAAC,MAAM,eAAe,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAA;CACrF,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,MAAM;IACxD,IAAI,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5E,MAAM,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BinaryResponse — client-side result for methods with `output: 'binary'`.
|
|
3
|
+
*
|
|
4
|
+
* Distinct from the server-side `BinaryResult` (kernel-api): the client adds
|
|
5
|
+
* a `status` field carrying the HTTP response status, and the body may be a
|
|
6
|
+
* `Uint8Array` (single-shot) or a `ReadableStream<Uint8Array>` (streaming).
|
|
7
|
+
*
|
|
8
|
+
* Returned by `client.binary()` and the route transport's binary path.
|
|
9
|
+
*/
|
|
10
|
+
export type BinaryResponse = {
|
|
11
|
+
readonly contentType: string;
|
|
12
|
+
readonly status: number;
|
|
13
|
+
readonly body: Uint8Array | ReadableStream<Uint8Array>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=binary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../src/transport/binary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;CACvD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/transport/binary.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport contract — the narrow interface every transport class
|
|
3
|
+
* implements. Each method returns a discriminated `Send*Result`
|
|
4
|
+
* natively. Redirects are first-class results, not sentinels or throws.
|
|
5
|
+
* Errors throw typed `WebOSError` subclasses.
|
|
6
|
+
*
|
|
7
|
+
* One instance = one target URL. The `KernelClient` owns composition
|
|
8
|
+
* across transports; the transports own wire mechanics end-to-end.
|
|
9
|
+
*/
|
|
10
|
+
import type { CredentialInput } from '@astrale-os/kernel-core';
|
|
11
|
+
import type { SendBinaryResult, SendResult, SendStreamResult } from '../client/fn-map';
|
|
12
|
+
/** A single call targeted at this transport. */
|
|
13
|
+
export type TransportRequest = {
|
|
14
|
+
method: string;
|
|
15
|
+
params: unknown;
|
|
16
|
+
credential: CredentialInput;
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
/** Per-call timeout override (ms). */
|
|
19
|
+
timeout?: number;
|
|
20
|
+
/** Per-call correlation id — threaded into errors as `details.correlationId`. */
|
|
21
|
+
correlationId?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Per-call URL override. When set, the transport dispatches to this
|
|
24
|
+
* URL instead of its default. The client drives this for redirect
|
|
25
|
+
* follow-ups and multi-kernel dispatch.
|
|
26
|
+
*/
|
|
27
|
+
url?: string;
|
|
28
|
+
/** Target-of-call for instance methods. Forwarded as `KernelRequest.self`. */
|
|
29
|
+
self?: string;
|
|
30
|
+
};
|
|
31
|
+
/** A single batch entry. Only the `http-envelope` transport supports batches. */
|
|
32
|
+
export type BatchEntry<T = unknown> = SendResult<T> | Error;
|
|
33
|
+
/**
|
|
34
|
+
* The common transport surface. Each capability that the transport does
|
|
35
|
+
* NOT express (e.g. `batch` on routed) throws `UnsupportedTransportError`
|
|
36
|
+
* synchronously.
|
|
37
|
+
*/
|
|
38
|
+
export type Transport = {
|
|
39
|
+
/**
|
|
40
|
+
* Target URL this transport dispatches against. `undefined` for
|
|
41
|
+
* routed transports — each call brings its own `remoteUrl` via the
|
|
42
|
+
* schema's route binding, so there's no single base URL to report.
|
|
43
|
+
*/
|
|
44
|
+
readonly url: string | undefined;
|
|
45
|
+
/** Transport identity, reported on every result's `meta.transport`. */
|
|
46
|
+
readonly name: 'http-envelope' | 'ws-envelope' | 'http-routed';
|
|
47
|
+
call(request: TransportRequest): Promise<SendResult<unknown>>;
|
|
48
|
+
stream(request: TransportRequest): Promise<SendStreamResult<unknown>>;
|
|
49
|
+
binary(request: TransportRequest): Promise<SendBinaryResult>;
|
|
50
|
+
signal(request: TransportRequest): void;
|
|
51
|
+
batch(requests: TransportRequest[]): Promise<BatchEntry[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Release any held resources (e.g. an open WebSocket). Idempotent.
|
|
54
|
+
* Safe to call on a transport that was never used.
|
|
55
|
+
*/
|
|
56
|
+
disconnect(): void;
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/transport/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEtF,gDAAgD;AAChD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,eAAe,CAAA;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,iFAAiF;AACjF,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AAE3D;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,aAAa,GAAG,aAAa,CAAA;IAE9D,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7D,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;IACrE,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC5D,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACvC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IAE1D;;;OAGG;IACH,UAAU,IAAI,IAAI,CAAA;CACnB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport contract — the narrow interface every transport class
|
|
3
|
+
* implements. Each method returns a discriminated `Send*Result`
|
|
4
|
+
* natively. Redirects are first-class results, not sentinels or throws.
|
|
5
|
+
* Errors throw typed `WebOSError` subclasses.
|
|
6
|
+
*
|
|
7
|
+
* One instance = one target URL. The `KernelClient` owns composition
|
|
8
|
+
* across transports; the transports own wire mechanics end-to-end.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/transport/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared `fetch` wrapper for kernel HTTP transports.
|
|
3
|
+
*
|
|
4
|
+
* Wraps transport-layer failures into `ConnectionError` so clients see a
|
|
5
|
+
* consistent, identifiable error class instead of raw `TypeError`s. Abort
|
|
6
|
+
* errors pass through unchanged so per-request cancellation still surfaces
|
|
7
|
+
* as `AbortError`.
|
|
8
|
+
*
|
|
9
|
+
* Accepts an optional custom `fetch` implementation for testing or
|
|
10
|
+
* environment shims (default: `globalThis.fetch`).
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Rewrite `*.localhost` URLs to a reachable loopback target — preserving
|
|
14
|
+
* port + path + query.
|
|
15
|
+
*
|
|
16
|
+
* macOS (and Node's libuv-backed `dns.lookup`) only resolve the literal
|
|
17
|
+
* `localhost`; subdomains like `mails.localhost` NXDOMAIN unless added
|
|
18
|
+
* to `/etc/hosts`. Dev presets stamp `mails.localhost` (or
|
|
19
|
+
* `dist.localhost`, …) into `Function.binding.remoteUrl` so domains stay
|
|
20
|
+
* isolated by hostname rather than by port — every redirect-following
|
|
21
|
+
* `astrale call` to a dev worker would NXDOMAIN without this rewrite.
|
|
22
|
+
*
|
|
23
|
+
* Real deployments don't use `.localhost`, so the rewrite is a no-op in
|
|
24
|
+
* prod traffic. (Friction: META_FEEDBACKS M-13 in `domains/mails/`.)
|
|
25
|
+
*/
|
|
26
|
+
export declare function rewriteLocalhostForLoopback(url: string, host?: string): string;
|
|
27
|
+
export declare function safeFetch(url: string, init: RequestInit, fetchImpl?: typeof fetch): Promise<Response>;
|
|
28
|
+
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/transport/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuBH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAuB,GAAG,MAAM,CAe9F;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,SAAS,GAAE,OAAO,KAAyC,GAC1D,OAAO,CAAC,QAAQ,CAAC,CASnB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared `fetch` wrapper for kernel HTTP transports.
|
|
3
|
+
*
|
|
4
|
+
* Wraps transport-layer failures into `ConnectionError` so clients see a
|
|
5
|
+
* consistent, identifiable error class instead of raw `TypeError`s. Abort
|
|
6
|
+
* errors pass through unchanged so per-request cancellation still surfaces
|
|
7
|
+
* as `AbortError`.
|
|
8
|
+
*
|
|
9
|
+
* Accepts an optional custom `fetch` implementation for testing or
|
|
10
|
+
* environment shims (default: `globalThis.fetch`).
|
|
11
|
+
*/
|
|
12
|
+
import { ConnectionError } from '../errors/errors';
|
|
13
|
+
/**
|
|
14
|
+
* Loopback target host. From a host-side process (CLI, dev), `127.0.0.1`
|
|
15
|
+
* reaches any locally-bound listener. From inside the manager container,
|
|
16
|
+
* `127.0.0.1` is the container's own loopback — local listeners on the
|
|
17
|
+
* host are reachable via `host.docker.internal` (Docker Desktop /
|
|
18
|
+
* Linux 20.10+). `ASTRALE_IN_CONTAINER=1` is set in the manager image's
|
|
19
|
+
* compose env (`cli/src/lib/docker.ts`).
|
|
20
|
+
*
|
|
21
|
+
* Mirrors `kernel/adapters/authentication/in-memory/discovery.ts` which
|
|
22
|
+
* needs the same policy on the JWKS-fetch path.
|
|
23
|
+
*/
|
|
24
|
+
function loopbackHost() {
|
|
25
|
+
// `process` is the Node global; narrow via globalThis so workerd /
|
|
26
|
+
// browser bundles still typecheck (they don't ship `process`).
|
|
27
|
+
const proc = globalThis.process;
|
|
28
|
+
const inContainer = proc?.env?.ASTRALE_IN_CONTAINER === '1';
|
|
29
|
+
return inContainer ? 'host.docker.internal' : '127.0.0.1';
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Rewrite `*.localhost` URLs to a reachable loopback target — preserving
|
|
33
|
+
* port + path + query.
|
|
34
|
+
*
|
|
35
|
+
* macOS (and Node's libuv-backed `dns.lookup`) only resolve the literal
|
|
36
|
+
* `localhost`; subdomains like `mails.localhost` NXDOMAIN unless added
|
|
37
|
+
* to `/etc/hosts`. Dev presets stamp `mails.localhost` (or
|
|
38
|
+
* `dist.localhost`, …) into `Function.binding.remoteUrl` so domains stay
|
|
39
|
+
* isolated by hostname rather than by port — every redirect-following
|
|
40
|
+
* `astrale call` to a dev worker would NXDOMAIN without this rewrite.
|
|
41
|
+
*
|
|
42
|
+
* Real deployments don't use `.localhost`, so the rewrite is a no-op in
|
|
43
|
+
* prod traffic. (Friction: META_FEEDBACKS M-13 in `domains/mails/`.)
|
|
44
|
+
*/
|
|
45
|
+
export function rewriteLocalhostForLoopback(url, host = loopbackHost()) {
|
|
46
|
+
let parsed;
|
|
47
|
+
try {
|
|
48
|
+
parsed = new URL(url);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return url;
|
|
52
|
+
}
|
|
53
|
+
// Only `*.localhost` subdomains need help — the literal `localhost`
|
|
54
|
+
// resolves natively (libc, macOS) and rewriting it breaks tests that
|
|
55
|
+
// mock `http://localhost` and clients that intentionally point at it.
|
|
56
|
+
if (parsed.hostname.endsWith('.localhost')) {
|
|
57
|
+
parsed.hostname = host;
|
|
58
|
+
return parsed.toString();
|
|
59
|
+
}
|
|
60
|
+
return url;
|
|
61
|
+
}
|
|
62
|
+
export async function safeFetch(url, init, fetchImpl = globalThis.fetch.bind(globalThis)) {
|
|
63
|
+
const transportUrl = rewriteLocalhostForLoopback(url);
|
|
64
|
+
try {
|
|
65
|
+
return await fetchImpl(transportUrl, init);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
const cause = error instanceof Error ? error : new Error(String(error));
|
|
69
|
+
if (cause.name === 'AbortError')
|
|
70
|
+
throw cause;
|
|
71
|
+
throw new ConnectionError(`Failed to connect to ${url}: ${cause.message}`, { cause });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/transport/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD;;;;;;;;;;GAUG;AACH,SAAS,YAAY;IACnB,mEAAmE;IACnE,+DAA+D;IAC/D,MAAM,IAAI,GAAI,UAAyE,CAAC,OAAO,CAAA;IAC/F,MAAM,WAAW,GAAG,IAAI,EAAE,GAAG,EAAE,oBAAoB,KAAK,GAAG,CAAA;IAC3D,OAAO,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAA;AAC3D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAW,EAAE,IAAI,GAAW,YAAY,EAAE;IACpF,IAAI,MAAW,CAAA;IACf,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,oEAAoE;IACpE,qEAAqE;IACrE,sEAAsE;IACtE,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;QACtB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC1B,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,IAAiB,EACjB,SAAS,GAAiB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IAE3D,MAAM,YAAY,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAA;IACrD,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACvE,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;YAAE,MAAM,KAAK,CAAA;QAC5C,MAAM,IAAI,eAAe,CAAC,wBAAwB,GAAG,KAAK,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IACvF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kernel-envelope HTTP transport.
|
|
3
|
+
*
|
|
4
|
+
* Speaks the kernel envelope (POST /) with JSON or MsgPack codec. Returns
|
|
5
|
+
* discriminated `Send*Result`s natively — redirects are `kind: 'redirect'`
|
|
6
|
+
* results, errors throw typed `WebOSError` subclasses, values carry
|
|
7
|
+
* `meta: WireMeta` populated at receive time.
|
|
8
|
+
*
|
|
9
|
+
* Note: SSE frames are always JSON-text on the wire, even when the
|
|
10
|
+
* transport is configured for `msgpack` — msgpack bytes don't fit SSE's
|
|
11
|
+
* text framing, so the server emits JSON on the SSE channel regardless.
|
|
12
|
+
*/
|
|
13
|
+
import type { SendBinaryResult, SendResult, SendStreamResult } from '../client/fn-map';
|
|
14
|
+
import type { BatchEntry, Transport, TransportRequest } from './contract';
|
|
15
|
+
import { type KernelRetryOptions } from '../pacer/retry';
|
|
16
|
+
export type HttpEnvelopeTransportConfig = {
|
|
17
|
+
url: string;
|
|
18
|
+
codec?: 'json' | 'msgpack';
|
|
19
|
+
requestTimeout?: number;
|
|
20
|
+
headers?: Record<string, string>;
|
|
21
|
+
retry?: KernelRetryOptions;
|
|
22
|
+
/** Custom fetch (testing, environment shims). Default: global fetch. */
|
|
23
|
+
fetch?: typeof fetch;
|
|
24
|
+
};
|
|
25
|
+
export declare class HttpEnvelopeTransport implements Transport {
|
|
26
|
+
readonly name: 'http-envelope';
|
|
27
|
+
readonly url: string;
|
|
28
|
+
private readonly codec;
|
|
29
|
+
private readonly codecName;
|
|
30
|
+
private readonly kernelContentType;
|
|
31
|
+
private readonly defaultTimeout;
|
|
32
|
+
private readonly extraHeaders;
|
|
33
|
+
private readonly retryOpts;
|
|
34
|
+
private readonly fetchImpl;
|
|
35
|
+
constructor(config: HttpEnvelopeTransportConfig);
|
|
36
|
+
disconnect(): void;
|
|
37
|
+
call(request: TransportRequest): Promise<SendResult<unknown>>;
|
|
38
|
+
signal(request: TransportRequest): void;
|
|
39
|
+
batch(requests: TransportRequest[]): Promise<BatchEntry[]>;
|
|
40
|
+
binary(request: TransportRequest): Promise<SendBinaryResult>;
|
|
41
|
+
stream(request: TransportRequest): Promise<SendStreamResult<unknown>>;
|
|
42
|
+
private encodeEnvelope;
|
|
43
|
+
private buildHeaders;
|
|
44
|
+
private targetFor;
|
|
45
|
+
private metaFromResponse;
|
|
46
|
+
private decorate;
|
|
47
|
+
private retryingFetch;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=http-envelope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-envelope.d.ts","sourceRoot":"","sources":["../../src/transport/http-envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAkBH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEtF,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAWzE,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAOrE,MAAM,MAAM,2BAA2B,GAAG;IACxC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CACrB,CAAA;AAED,qBAAa,qBAAsB,YAAW,SAAS;IACrD,QAAQ,CAAC,IAAI,EAAG,eAAe,CAAS;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IAExC,YAAY,MAAM,EAAE,2BAA2B,EAU9C;IAED,UAAU,IAAI,IAAI,CAEjB;IAIK,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAyElE;IAID,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAyBtC;IAIK,KAAK,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA0D/D;IAIK,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoFjE;IAIK,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAqE1E;IAID,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,QAAQ;YAmBF,aAAa;CAyB5B"}
|