electron-effect-rpc 0.3.0 → 0.4.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 +32 -10
- package/dist/kit.d.ts +0 -1
- package/dist/kit.d.ts.map +1 -1
- package/dist/kit.js +0 -4
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +85 -85
- package/dist/types.d.ts +8 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ ESM-capable build pipeline.
|
|
|
13
13
|
- Single shared contract for methods and events.
|
|
14
14
|
- Single shared kit config to eliminate cross-process prefix drift.
|
|
15
15
|
- End-to-end schema validation at IPC boundaries.
|
|
16
|
-
-
|
|
16
|
+
- Effect-first renderer RPC with typed domain and defect channels.
|
|
17
17
|
- Effect-native main handlers with explicit runtime injection.
|
|
18
18
|
- Explicit lifecycle handles and bounded event queue backpressure.
|
|
19
19
|
- Structured diagnostics hooks for decode/protocol/dispatch failures.
|
|
@@ -81,14 +81,11 @@ const mainRpc = ipc.main({
|
|
|
81
81
|
|
|
82
82
|
mainRpc.start();
|
|
83
83
|
|
|
84
|
-
void mainRpc.
|
|
84
|
+
void Effect.runPromise(mainRpc.publish(WorkUnitProgress, {
|
|
85
85
|
requestId: "req-1",
|
|
86
86
|
chunk: "starting",
|
|
87
87
|
done: false,
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
// Effect-native alternative:
|
|
91
|
-
// void Effect.runPromise(mainRpc.publish(WorkUnitProgress, {...}));
|
|
88
|
+
}));
|
|
92
89
|
```
|
|
93
90
|
|
|
94
91
|
### 3) Preload
|
|
@@ -102,10 +99,11 @@ This exposes one global by default: `window.api`.
|
|
|
102
99
|
|
|
103
100
|
### 4) Renderer
|
|
104
101
|
```ts
|
|
102
|
+
import { Effect } from "effect";
|
|
105
103
|
import { ipc, WorkUnitProgress } from "./shared-ipc.ts";
|
|
106
104
|
|
|
107
105
|
const { client, events } = ipc.renderer(window.api);
|
|
108
|
-
const { version } = await client.GetAppVersion();
|
|
106
|
+
const { version } = await Effect.runPromise(client.GetAppVersion());
|
|
109
107
|
|
|
110
108
|
const unsubscribe = events.subscribe(WorkUnitProgress, (payload) => {
|
|
111
109
|
console.log(payload.chunk);
|
|
@@ -130,9 +128,33 @@ declare global {
|
|
|
130
128
|
|
|
131
129
|
## Error Model
|
|
132
130
|
|
|
133
|
-
Domain failures are modeled with tagged error schemas and are
|
|
134
|
-
|
|
135
|
-
and protocol mismatches are surfaced as `RpcDefectError
|
|
131
|
+
Domain failures are modeled with tagged error schemas and are surfaced in the
|
|
132
|
+
Effect error channel as those same tagged values. Unexpected failures,
|
|
133
|
+
transport defects, and protocol mismatches are surfaced as `RpcDefectError`,
|
|
134
|
+
which includes a stable `code` discriminator:
|
|
135
|
+
`request_encoding_failed`, `invoke_failed`,
|
|
136
|
+
`success_payload_decoding_failed`, `failure_payload_decoding_failed`,
|
|
137
|
+
`noerror_contract_violation`, `invalid_response_envelope`,
|
|
138
|
+
`legacy_decode_failed`, and `remote_defect`.
|
|
139
|
+
|
|
140
|
+
## Breaking Changes
|
|
141
|
+
|
|
142
|
+
Renderer RPC methods now return `Effect.Effect` instead of `Promise`, and
|
|
143
|
+
`IpcMainHandle.emit` was removed in favor of `publish`.
|
|
144
|
+
|
|
145
|
+
Before:
|
|
146
|
+
|
|
147
|
+
```ts
|
|
148
|
+
const result = await client.GetAppVersion();
|
|
149
|
+
await mainRpc.emit(WorkUnitProgress, payload);
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
After:
|
|
153
|
+
|
|
154
|
+
```ts
|
|
155
|
+
const result = await Effect.runPromise(client.GetAppVersion());
|
|
156
|
+
await Effect.runPromise(mainRpc.publish(WorkUnitProgress, payload));
|
|
157
|
+
```
|
|
136
158
|
|
|
137
159
|
## Low-Level APIs (Still Supported)
|
|
138
160
|
|
package/dist/kit.d.ts
CHANGED
|
@@ -39,7 +39,6 @@ export type IpcMainHandle<C extends RpcContract<readonly AnyMethod[], readonly A
|
|
|
39
39
|
readonly dispose: () => void;
|
|
40
40
|
readonly isRunning: () => boolean;
|
|
41
41
|
readonly publish: <E extends C["events"][number]>(event: E, payload: RpcEventPayload<E>) => Effect.Effect<void, never>;
|
|
42
|
-
readonly emit: <E extends C["events"][number]>(event: E, payload: RpcEventPayload<E>) => Promise<void>;
|
|
43
42
|
readonly stats: () => {
|
|
44
43
|
readonly queued: number;
|
|
45
44
|
readonly dropped: number;
|
package/dist/kit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kit.d.ts","sourceRoot":"","sources":["../src/kit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"kit.d.ts","sourceRoot":"","sources":["../src/kit.ts"],"names":[],"mappings":"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"}
|
package/dist/kit.js
CHANGED
|
@@ -80,9 +80,6 @@ export function createIpcKit(options) {
|
|
|
80
80
|
function publish(event, payload) {
|
|
81
81
|
return publisher.publish(event, payload);
|
|
82
82
|
}
|
|
83
|
-
function emit(event, payload) {
|
|
84
|
-
return Effect.runPromise(publisher.publish(event, payload));
|
|
85
|
-
}
|
|
86
83
|
return {
|
|
87
84
|
endpoint,
|
|
88
85
|
publisher,
|
|
@@ -91,7 +88,6 @@ export function createIpcKit(options) {
|
|
|
91
88
|
dispose,
|
|
92
89
|
isRunning,
|
|
93
90
|
publish,
|
|
94
|
-
emit,
|
|
95
91
|
stats: publisher.stats,
|
|
96
92
|
};
|
|
97
93
|
};
|
package/dist/renderer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,WAAW,EAIjB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,WAAW,EAIjB,MAAM,eAAe,CAAC;AAOvB,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAGd,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAE3B,KAAK,SAAS,EACd,KAAK,gBAAgB,EAGtB,MAAM,YAAY,CAAC;AAuEpB,wBAAgB,eAAe,CAC7B,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,SAAS,CAAC,EAC9C,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,EAE5C,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EACtC,OAAO,EAAE,gBAAgB,GACxB,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CA0KzC;AAqBD,wBAAgB,qBAAqB,CACnC,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,SAAS,CAAC,EAC9C,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,EAE5C,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EACtC,OAAO,EAAE,sBAAsB,GAC9B,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAyF/C;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/renderer.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as S from "@effect/schema/Schema";
|
|
2
|
-
import { Cause, Exit } from "effect";
|
|
2
|
+
import { Cause, Effect, Exit } from "effect";
|
|
3
3
|
import { exitSchemaFor, isNoErrorSchema, } from "./contract.js";
|
|
4
|
-
import { formatUnknown, parseRpcResponseEnvelope, safelyCall } from "./protocol.js";
|
|
4
|
+
import { formatUnknown, parseRpcResponseEnvelope, safelyCall, } from "./protocol.js";
|
|
5
5
|
import { RpcDefectError, } from "./types.js";
|
|
6
6
|
function requireInvoke(options) {
|
|
7
7
|
if (!options?.invoke) {
|
|
@@ -15,123 +15,123 @@ function requireSubscribe(options) {
|
|
|
15
15
|
}
|
|
16
16
|
return options.subscribe;
|
|
17
17
|
}
|
|
18
|
+
function rpcDefect(code, message, cause) {
|
|
19
|
+
return new RpcDefectError(code, message, cause);
|
|
20
|
+
}
|
|
18
21
|
function decodeLegacyExit(method, raw) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const failureOption = Cause.failureOption(exit.cause);
|
|
26
|
-
if (failureOption._tag === "Some") {
|
|
27
|
-
throw failureOption.value;
|
|
28
|
-
}
|
|
29
|
-
const defectOption = Cause.dieOption(exit.cause);
|
|
30
|
-
if (defectOption._tag === "Some") {
|
|
31
|
-
const defect = defectOption.value;
|
|
32
|
-
if (defect instanceof Error) {
|
|
33
|
-
throw new RpcDefectError(defect.message, defect);
|
|
22
|
+
return Effect.try({
|
|
23
|
+
try: () => S.decodeUnknownSync(exitSchemaFor(method))(raw),
|
|
24
|
+
catch: (cause) => rpcDefect("legacy_decode_failed", `RPC ${method.name} legacy response decoding failed: ${formatUnknown(cause)}`, cause),
|
|
25
|
+
}).pipe(Effect.flatMap((exit) => {
|
|
26
|
+
if (Exit.isSuccess(exit)) {
|
|
27
|
+
return Effect.succeed(exit.value);
|
|
34
28
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
const failureOption = Cause.failureOption(exit.cause);
|
|
30
|
+
if (failureOption._tag === "Some") {
|
|
31
|
+
return Effect.fail(failureOption.value);
|
|
32
|
+
}
|
|
33
|
+
const defectOption = Cause.dieOption(exit.cause);
|
|
34
|
+
if (defectOption._tag === "Some") {
|
|
35
|
+
const defect = defectOption.value;
|
|
36
|
+
const message = defect instanceof Error ? defect.message : String(defect);
|
|
37
|
+
return Effect.fail(rpcDefect("remote_defect", message, defect));
|
|
38
|
+
}
|
|
39
|
+
return Effect.fail(rpcDefect("remote_defect", "RPC call was interrupted or failed unexpectedly", exit.cause));
|
|
40
|
+
}));
|
|
38
41
|
}
|
|
39
42
|
export function createRpcClient(contract, options) {
|
|
40
43
|
const invoke = requireInvoke(options);
|
|
41
44
|
const diagnostics = options?.diagnostics;
|
|
42
45
|
const decodeMode = options?.rpcDecodeMode ?? "envelope";
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
const decodeEnvelope = (method, envelope) => {
|
|
47
|
+
switch (envelope.type) {
|
|
48
|
+
case "success":
|
|
49
|
+
return Effect.try({
|
|
50
|
+
try: () => S.decodeUnknownSync(method.res)(envelope.data),
|
|
51
|
+
catch: (cause) => {
|
|
52
|
+
safelyCall(diagnostics?.onDecodeFailure, {
|
|
53
|
+
scope: "rpc-response",
|
|
54
|
+
name: method.name,
|
|
55
|
+
payload: envelope.data,
|
|
56
|
+
cause,
|
|
57
|
+
});
|
|
58
|
+
return rpcDefect("success_payload_decoding_failed", `RPC ${method.name} success payload decoding failed: ${formatUnknown(cause)}`, cause);
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
case "failure":
|
|
62
|
+
if (isNoErrorSchema(method.err)) {
|
|
63
|
+
return Effect.fail(rpcDefect("noerror_contract_violation", `RPC ${method.name} received a failure for a method that declares NoError`, envelope.error));
|
|
64
|
+
}
|
|
65
|
+
const errorSchema = method.err;
|
|
66
|
+
return Effect.try({
|
|
67
|
+
try: () => S.decodeUnknownSync(errorSchema)(envelope.error.data),
|
|
68
|
+
catch: (cause) => {
|
|
69
|
+
safelyCall(diagnostics?.onDecodeFailure, {
|
|
70
|
+
scope: "rpc-response",
|
|
71
|
+
name: method.name,
|
|
72
|
+
payload: envelope.error,
|
|
73
|
+
cause,
|
|
74
|
+
});
|
|
75
|
+
return rpcDefect("failure_payload_decoding_failed", `RPC ${method.name} failure payload decoding failed: ${formatUnknown(cause)}`, cause);
|
|
76
|
+
},
|
|
77
|
+
}).pipe(Effect.flatMap((decodedError) => Effect.fail(decodedError)));
|
|
78
|
+
case "defect":
|
|
79
|
+
return Effect.fail(rpcDefect("remote_defect", envelope.message, envelope.cause));
|
|
47
80
|
}
|
|
48
|
-
|
|
81
|
+
};
|
|
82
|
+
const call = (method, input) => Effect.try({
|
|
83
|
+
try: () => S.encodeSync(method.req)(input),
|
|
84
|
+
catch: (cause) => {
|
|
49
85
|
safelyCall(diagnostics?.onDecodeFailure, {
|
|
50
86
|
scope: "rpc-request",
|
|
51
87
|
name: method.name,
|
|
52
88
|
payload: input,
|
|
53
89
|
cause,
|
|
54
90
|
});
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
try
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
catch (cause) {
|
|
91
|
+
return rpcDefect("request_encoding_failed", `RPC ${method.name} request encoding failed: ${formatUnknown(cause)}`, cause);
|
|
92
|
+
},
|
|
93
|
+
}).pipe(Effect.flatMap((encoded) => Effect.tryPromise({
|
|
94
|
+
try: () => invoke(method.name, encoded),
|
|
95
|
+
catch: (cause) => {
|
|
62
96
|
safelyCall(diagnostics?.onProtocolError, {
|
|
63
97
|
method: method.name,
|
|
64
98
|
response: undefined,
|
|
65
99
|
cause,
|
|
66
100
|
});
|
|
67
|
-
|
|
68
|
-
}
|
|
101
|
+
return rpcDefect("invoke_failed", `RPC ${method.name} invoke failed: ${formatUnknown(cause)}`, cause);
|
|
102
|
+
},
|
|
103
|
+
})), Effect.flatMap((raw) => {
|
|
69
104
|
const envelope = parseRpcResponseEnvelope(raw);
|
|
70
105
|
if (envelope) {
|
|
71
|
-
|
|
72
|
-
case "success":
|
|
73
|
-
try {
|
|
74
|
-
return S.decodeUnknownSync(method.res)(envelope.data);
|
|
75
|
-
}
|
|
76
|
-
catch (cause) {
|
|
77
|
-
safelyCall(diagnostics?.onDecodeFailure, {
|
|
78
|
-
scope: "rpc-response",
|
|
79
|
-
name: method.name,
|
|
80
|
-
payload: envelope.data,
|
|
81
|
-
cause,
|
|
82
|
-
});
|
|
83
|
-
throw new Error(`RPC ${method.name} success payload decoding failed: ${formatUnknown(cause)}`);
|
|
84
|
-
}
|
|
85
|
-
case "failure":
|
|
86
|
-
if (isNoErrorSchema(method.err)) {
|
|
87
|
-
throw new RpcDefectError(`RPC ${method.name} received a failure for a method that declares NoError`, envelope.error);
|
|
88
|
-
}
|
|
89
|
-
let decodedError;
|
|
90
|
-
try {
|
|
91
|
-
decodedError = S.decodeUnknownSync(method.err)(envelope.error.data);
|
|
92
|
-
}
|
|
93
|
-
catch (cause) {
|
|
94
|
-
safelyCall(diagnostics?.onDecodeFailure, {
|
|
95
|
-
scope: "rpc-response",
|
|
96
|
-
name: method.name,
|
|
97
|
-
payload: envelope.error,
|
|
98
|
-
cause,
|
|
99
|
-
});
|
|
100
|
-
throw new Error(`RPC ${method.name} failure payload decoding failed: ${formatUnknown(cause)}`);
|
|
101
|
-
}
|
|
102
|
-
throw decodedError;
|
|
103
|
-
case "defect":
|
|
104
|
-
throw new RpcDefectError(envelope.message, envelope.cause);
|
|
105
|
-
}
|
|
106
|
+
return decodeEnvelope(method, envelope);
|
|
106
107
|
}
|
|
107
108
|
if (decodeMode === "dual") {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
}
|
|
109
|
+
return decodeLegacyExit(method, raw).pipe(Effect.tapError((cause) => {
|
|
110
|
+
if (cause instanceof RpcDefectError &&
|
|
111
|
+
cause.code === "legacy_decode_failed") {
|
|
112
|
+
return Effect.sync(() => safelyCall(diagnostics?.onProtocolError, {
|
|
113
|
+
method: method.name,
|
|
114
|
+
response: raw,
|
|
115
|
+
cause,
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
return Effect.void;
|
|
119
|
+
}));
|
|
119
120
|
}
|
|
120
|
-
const cause =
|
|
121
|
+
const cause = rpcDefect("invalid_response_envelope", `RPC ${method.name} response was not a valid envelope.`, raw);
|
|
121
122
|
safelyCall(diagnostics?.onProtocolError, {
|
|
122
123
|
method: method.name,
|
|
123
124
|
response: raw,
|
|
124
125
|
cause,
|
|
125
126
|
});
|
|
126
|
-
|
|
127
|
-
};
|
|
127
|
+
return Effect.fail(cause);
|
|
128
|
+
}));
|
|
128
129
|
const client = Object.create(null);
|
|
129
130
|
const clientRecord = client;
|
|
130
131
|
for (const method of contract.methods) {
|
|
131
|
-
const decodeDefaultInput = S.decodeUnknownSync(method.req);
|
|
132
132
|
const caller = (...args) => {
|
|
133
133
|
const payload = args.length === 0
|
|
134
|
-
?
|
|
134
|
+
? {}
|
|
135
135
|
: args[0];
|
|
136
136
|
return call(method, payload);
|
|
137
137
|
};
|
package/dist/types.d.ts
CHANGED
|
@@ -6,15 +6,18 @@ export type Implementations<C extends RpcContract<readonly AnyMethod[], readonly
|
|
|
6
6
|
readonly [Name in C["methods"][number]["name"]]: (input: RpcInput<ExtractMethod<C["methods"], Name>>) => Effect.Effect<RpcOutput<ExtractMethod<C["methods"], Name>>, RpcError<ExtractMethod<C["methods"], Name>>, R>;
|
|
7
7
|
};
|
|
8
8
|
type IsEmptyObject<T> = T extends object ? keyof T extends never ? true : false : false;
|
|
9
|
-
export type
|
|
10
|
-
export type RpcClient<C extends RpcContract<readonly AnyMethod[], readonly AnyEvent[]>> = {
|
|
11
|
-
readonly [Name in C["methods"][number]["name"]]: RpcCaller<ExtractMethod<C["methods"], Name>>;
|
|
12
|
-
};
|
|
9
|
+
export type RpcDefectCode = "request_encoding_failed" | "invoke_failed" | "success_payload_decoding_failed" | "failure_payload_decoding_failed" | "noerror_contract_violation" | "invalid_response_envelope" | "legacy_decode_failed" | "remote_defect";
|
|
13
10
|
export declare class RpcDefectError extends Error {
|
|
11
|
+
readonly code: RpcDefectCode;
|
|
14
12
|
readonly cause: unknown;
|
|
15
13
|
readonly _tag = "RpcDefectError";
|
|
16
|
-
constructor(message: string, cause: unknown);
|
|
14
|
+
constructor(code: RpcDefectCode, message: string, cause: unknown);
|
|
17
15
|
}
|
|
16
|
+
export type RpcMethodError<M extends AnyMethod> = RpcError<M> | RpcDefectError;
|
|
17
|
+
export type RpcCaller<M extends AnyMethod> = IsEmptyObject<RpcInput<M>> extends true ? () => Effect.Effect<RpcOutput<M>, RpcMethodError<M>> : (input: RpcInput<M>) => Effect.Effect<RpcOutput<M>, RpcMethodError<M>>;
|
|
18
|
+
export type RpcClient<C extends RpcContract<readonly AnyMethod[], readonly AnyEvent[]>> = {
|
|
19
|
+
readonly [Name in C["methods"][number]["name"]]: RpcCaller<ExtractMethod<C["methods"], Name>>;
|
|
20
|
+
};
|
|
18
21
|
export type ChannelPrefix = {
|
|
19
22
|
readonly rpc: string;
|
|
20
23
|
readonly event: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EAET,aAAa,EACb,WAAW,EACX,QAAQ,EAER,eAAe,EACf,QAAQ,EAER,SAAS,EAEV,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,SAAS,EACT,SAAS,EACT,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,eAAe,CACzB,CAAC,SAAS,WAAW,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,QAAQ,EAAE,CAAC,EAChE,CAAC,GAAG,KAAK,IACP;IACF,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAC/C,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,KAC/C,MAAM,CAAC,MAAM,CAChB,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,EAC5C,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,EAC3C,CAAC,CACF;CACF,CAAC;AAEF,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACpC,MAAM,CAAC,SAAS,KAAK,GACnB,IAAI,GACJ,KAAK,GACP,KAAK,CAAC;AAEV,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,SAAS,IACvC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACnC,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED