@keyframelabs/sdk 0.1.5 → 0.1.7
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 +34 -6
- package/dist/PersonaSession.d.ts +12 -10
- package/dist/PersonaSession.d.ts.map +1 -1
- package/dist/PersonaSession.js +28 -47
- package/dist/PersonaSession.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -128,12 +128,13 @@ The client instance returned by `createClient()`.
|
|
|
128
128
|
|
|
129
129
|
#### Methods
|
|
130
130
|
|
|
131
|
-
| Method
|
|
132
|
-
|
|
|
133
|
-
| `connect`
|
|
134
|
-
| `sendAudio`
|
|
135
|
-
| `interrupt`
|
|
136
|
-
| `
|
|
131
|
+
| Method | Signature | Description |
|
|
132
|
+
| ------------ | ---------------------------------------------- | ------------------------------------------------ |
|
|
133
|
+
| `connect` | `() => Promise<void>` | Connect to the session. |
|
|
134
|
+
| `sendAudio` | `(pcmData: ArrayBuffer \| Int16Array) => void` | Send 24 kHz 16-bit PCM audio. |
|
|
135
|
+
| `interrupt` | `() => void` | Signal an interruption and clear pending frames. |
|
|
136
|
+
| `setEmotion` | `(emotion: Emotion) => Promise<void>` | Set the avatar's emotional expression. |
|
|
137
|
+
| `close` | `() => void` | Close the session and release resources. |
|
|
137
138
|
|
|
138
139
|
#### Properties
|
|
139
140
|
|
|
@@ -141,6 +142,33 @@ The client instance returned by `createClient()`.
|
|
|
141
142
|
| -------- | ---------------------------------------------------------- | ---------------------- |
|
|
142
143
|
| `state` | `'disconnected' \| 'connecting' \| 'connected' \| 'error'` | Current session state. |
|
|
143
144
|
|
|
145
|
+
### Types
|
|
146
|
+
|
|
147
|
+
#### `Emotion`
|
|
148
|
+
|
|
149
|
+
Emotion states for avatar expression:
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
type Emotion = 'neutral' | 'angry' | 'sad' | 'happy';
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Emotion Controls
|
|
156
|
+
|
|
157
|
+
You can dynamically change the avatar's emotional expression using the `setEmotion` method:
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
// Set the avatar to show happiness
|
|
161
|
+
await client.setEmotion('happy');
|
|
162
|
+
|
|
163
|
+
// React to user sentiment
|
|
164
|
+
await client.setEmotion('sad');
|
|
165
|
+
|
|
166
|
+
// Return to neutral
|
|
167
|
+
await client.setEmotion('neutral');
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
The avatar will blend its facial expression and demeanor to match the specified emotion. This can be triggered manually or in response to sentiment analysis, LLM output, or other signals from your application.
|
|
171
|
+
|
|
144
172
|
## License
|
|
145
173
|
|
|
146
174
|
MIT
|
package/dist/PersonaSession.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - Receiving video from "persona"
|
|
9
9
|
* - Interrupt signaling
|
|
10
10
|
*/
|
|
11
|
-
import type { PersonaSessionOptions, SessionState } from './types.js';
|
|
11
|
+
import type { Emotion, PersonaSessionOptions, SessionState } from './types.js';
|
|
12
12
|
/**
|
|
13
13
|
* PersonaSession manages the connection between your app and a Persona avatar.
|
|
14
14
|
*
|
|
@@ -35,7 +35,6 @@ export declare class PersonaSession {
|
|
|
35
35
|
private _state;
|
|
36
36
|
private byteStreamWriter;
|
|
37
37
|
private writeQueue;
|
|
38
|
-
private autoFlushTimer;
|
|
39
38
|
constructor(options: PersonaSessionOptions);
|
|
40
39
|
/** Current session state */
|
|
41
40
|
get state(): SessionState;
|
|
@@ -53,11 +52,6 @@ export declare class PersonaSession {
|
|
|
53
52
|
* @param pcmData - 16-bit PCM audio at 24kHz
|
|
54
53
|
*/
|
|
55
54
|
sendAudio(pcmData: Uint8Array): void;
|
|
56
|
-
/**
|
|
57
|
-
* Schedule auto-flush after a timeout.
|
|
58
|
-
* Called on each sendAudio() to reset the timer.
|
|
59
|
-
*/
|
|
60
|
-
private scheduleAutoFlush;
|
|
61
55
|
/**
|
|
62
56
|
* Flush all pending audio writes.
|
|
63
57
|
* Call before close to ensure all audio is sent.
|
|
@@ -66,9 +60,8 @@ export declare class PersonaSession {
|
|
|
66
60
|
/**
|
|
67
61
|
* End the current audio turn and flush any buffered data.
|
|
68
62
|
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* if you need immediate flushing.
|
|
63
|
+
* Call this when the voice agent signals that all audio for a turn
|
|
64
|
+
* has been sent (e.g., on the agent's turnEnd event).
|
|
72
65
|
*/
|
|
73
66
|
endAudioTurn(): Promise<void>;
|
|
74
67
|
/**
|
|
@@ -81,6 +74,15 @@ export declare class PersonaSession {
|
|
|
81
74
|
* while the agent is still talking).
|
|
82
75
|
*/
|
|
83
76
|
interrupt(): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Set the avatar's emotional expression.
|
|
79
|
+
*
|
|
80
|
+
* Changes the avatar's facial expression and demeanor to match
|
|
81
|
+
* the specified emotion.
|
|
82
|
+
*
|
|
83
|
+
* @param emotion - The emotion to express ('neutral', 'angry', 'sad', 'happy')
|
|
84
|
+
*/
|
|
85
|
+
setEmotion(emotion: Emotion): Promise<void>;
|
|
84
86
|
/**
|
|
85
87
|
* Close the session and clean up resources.
|
|
86
88
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonaSession.d.ts","sourceRoot":"","sources":["../src/PersonaSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH,OAAO,KAAK,EAEV,qBAAqB,EACrB,YAAY,EACb,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"PersonaSession.d.ts","sourceRoot":"","sources":["../src/PersonaSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH,OAAO,KAAK,EAEV,OAAO,EACP,qBAAqB,EACrB,YAAY,EACb,MAAM,YAAY,CAAC;AAwBpB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CACS;IACxB,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,gBAAgB,CAAiC;IAGzD,OAAO,CAAC,UAAU,CAAoC;gBAE1C,OAAO,EAAE,qBAAqB;IAI1C,4BAA4B;IAC5B,IAAI,KAAK,IAAI,YAAY,CAExB;IAED,OAAO,CAAC,QAAQ;IAOhB;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B9B,OAAO,CAAC,kBAAkB;IAiC1B;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAyBpC;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;;;OAKG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBnC;;;;;;;;OAQG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBhC;;;;;;;OAOG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBjD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB7B"}
|
package/dist/PersonaSession.js
CHANGED
|
@@ -28,8 +28,6 @@ function mapDisconnectReason(reason) {
|
|
|
28
28
|
const AUDIO_STREAM_TOPIC = 'lk.audio_stream';
|
|
29
29
|
/** DataStream topic for control messages (interrupt, etc.) */
|
|
30
30
|
const CONTROL_STREAM_TOPIC = 'lk.control';
|
|
31
|
-
/** Auto-flush timeout in ms after last audio chunk */
|
|
32
|
-
const AUTO_FLUSH_TIMEOUT_MS = 300;
|
|
33
31
|
/**
|
|
34
32
|
* PersonaSession manages the connection between your app and a Persona avatar.
|
|
35
33
|
*
|
|
@@ -57,8 +55,6 @@ export class PersonaSession {
|
|
|
57
55
|
byteStreamWriter = null;
|
|
58
56
|
// Write queue for proper ordering and completion tracking
|
|
59
57
|
writeQueue = Promise.resolve();
|
|
60
|
-
// Auto-flush timer for turn end detection
|
|
61
|
-
autoFlushTimer = null;
|
|
62
58
|
constructor(options) {
|
|
63
59
|
this.options = { ...options };
|
|
64
60
|
}
|
|
@@ -144,7 +140,7 @@ export class PersonaSession {
|
|
|
144
140
|
}
|
|
145
141
|
// Chain writes to ensure ordering and track completion
|
|
146
142
|
// Lazily create ByteStreamWriter if needed (e.g., after endAudioTurn closed it)
|
|
147
|
-
console.
|
|
143
|
+
console.debug(`[PersonaSession] Writing ${pcmData.length} bytes to ByteStream`);
|
|
148
144
|
this.writeQueue = this.writeQueue
|
|
149
145
|
.then(async () => {
|
|
150
146
|
if (!this.byteStreamWriter && this.room) {
|
|
@@ -158,23 +154,6 @@ export class PersonaSession {
|
|
|
158
154
|
.catch((err) => {
|
|
159
155
|
console.warn('[PersonaSession] Failed to write audio:', err);
|
|
160
156
|
});
|
|
161
|
-
// Schedule auto-flush after timeout (reset on each audio chunk)
|
|
162
|
-
this.scheduleAutoFlush();
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Schedule auto-flush after a timeout.
|
|
166
|
-
* Called on each sendAudio() to reset the timer.
|
|
167
|
-
*/
|
|
168
|
-
scheduleAutoFlush() {
|
|
169
|
-
if (this.autoFlushTimer) {
|
|
170
|
-
clearTimeout(this.autoFlushTimer);
|
|
171
|
-
}
|
|
172
|
-
this.autoFlushTimer = setTimeout(() => {
|
|
173
|
-
if (this.byteStreamWriter) {
|
|
174
|
-
console.log('[PersonaSession] Auto-flush: no audio for', AUTO_FLUSH_TIMEOUT_MS, 'ms');
|
|
175
|
-
this.endAudioTurn();
|
|
176
|
-
}
|
|
177
|
-
}, AUTO_FLUSH_TIMEOUT_MS);
|
|
178
157
|
}
|
|
179
158
|
/**
|
|
180
159
|
* Flush all pending audio writes.
|
|
@@ -186,16 +165,10 @@ export class PersonaSession {
|
|
|
186
165
|
/**
|
|
187
166
|
* End the current audio turn and flush any buffered data.
|
|
188
167
|
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
* if you need immediate flushing.
|
|
168
|
+
* Call this when the voice agent signals that all audio for a turn
|
|
169
|
+
* has been sent (e.g., on the agent's turnEnd event).
|
|
192
170
|
*/
|
|
193
171
|
async endAudioTurn() {
|
|
194
|
-
// Clear auto-flush timer to prevent double-flush
|
|
195
|
-
if (this.autoFlushTimer) {
|
|
196
|
-
clearTimeout(this.autoFlushTimer);
|
|
197
|
-
this.autoFlushTimer = null;
|
|
198
|
-
}
|
|
199
172
|
console.debug('[PersonaSession] endAudioTurn() called, awaiting writeQueue...');
|
|
200
173
|
await this.writeQueue;
|
|
201
174
|
console.debug('[PersonaSession] writeQueue complete, closing stream...');
|
|
@@ -223,37 +196,45 @@ export class PersonaSession {
|
|
|
223
196
|
* while the agent is still talking).
|
|
224
197
|
*/
|
|
225
198
|
async interrupt() {
|
|
226
|
-
// Clear auto-flush timer - we're interrupting, don't need to flush
|
|
227
|
-
if (this.autoFlushTimer) {
|
|
228
|
-
clearTimeout(this.autoFlushTimer);
|
|
229
|
-
this.autoFlushTimer = null;
|
|
230
|
-
}
|
|
231
199
|
if (!this.room || this._state !== 'connected') {
|
|
232
200
|
console.warn('[PersonaSession] interrupt() called but not connected');
|
|
233
201
|
return;
|
|
234
202
|
}
|
|
235
203
|
try {
|
|
236
|
-
console.
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
destinationIdentities: [this.options.agentIdentity],
|
|
240
|
-
});
|
|
241
|
-
await writer.write(new TextEncoder().encode('interrupt'));
|
|
242
|
-
await writer.close();
|
|
204
|
+
console.log('[PersonaSession] Sending interrupt');
|
|
205
|
+
await this.room.localParticipant.publishData(new TextEncoder().encode('interrupt'), { reliable: false, topic: CONTROL_STREAM_TOPIC, destinationIdentities: [this.options.agentIdentity] });
|
|
206
|
+
console.log('[PersonaSession] Interrupt sent');
|
|
243
207
|
}
|
|
244
208
|
catch (error) {
|
|
245
209
|
console.warn('[PersonaSession] Failed to send interrupt:', error);
|
|
246
210
|
}
|
|
247
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Set the avatar's emotional expression.
|
|
214
|
+
*
|
|
215
|
+
* Changes the avatar's facial expression and demeanor to match
|
|
216
|
+
* the specified emotion.
|
|
217
|
+
*
|
|
218
|
+
* @param emotion - The emotion to express ('neutral', 'angry', 'sad', 'happy')
|
|
219
|
+
*/
|
|
220
|
+
async setEmotion(emotion) {
|
|
221
|
+
if (!this.room || this._state !== 'connected') {
|
|
222
|
+
console.warn('[PersonaSession] setEmotion() called but not connected');
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
try {
|
|
226
|
+
console.debug('[PersonaSession] Setting emotion:', emotion);
|
|
227
|
+
await this.room.localParticipant.publishData(new TextEncoder().encode(`emotion:${emotion}`), { reliable: false, topic: CONTROL_STREAM_TOPIC, destinationIdentities: [this.options.agentIdentity] });
|
|
228
|
+
console.debug('[PersonaSession] Emotion sent:', emotion);
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
console.warn('[PersonaSession] Failed to set emotion:', error);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
248
234
|
/**
|
|
249
235
|
* Close the session and clean up resources.
|
|
250
236
|
*/
|
|
251
237
|
async close() {
|
|
252
|
-
// Clear auto-flush timer
|
|
253
|
-
if (this.autoFlushTimer) {
|
|
254
|
-
clearTimeout(this.autoFlushTimer);
|
|
255
|
-
this.autoFlushTimer = null;
|
|
256
|
-
}
|
|
257
238
|
// Wait for pending writes to complete before closing
|
|
258
239
|
await this.flush();
|
|
259
240
|
// Close byte stream
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonaSession.js","sourceRoot":"","sources":["../src/PersonaSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,IAAI,EACJ,SAAS,EACT,KAAK,EAGL,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"PersonaSession.js","sourceRoot":"","sources":["../src/PersonaSession.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -30,6 +30,6 @@ import type { PersonaSessionOptions } from './types.js';
|
|
|
30
30
|
*/
|
|
31
31
|
declare const createClient: (options: PersonaSessionOptions) => PersonaSession;
|
|
32
32
|
export { createClient, PersonaSession };
|
|
33
|
-
export type { CloseReason, PersonaSessionOptions, SessionState, } from './types.js';
|
|
33
|
+
export type { CloseReason, Emotion, PersonaSessionOptions, SessionState, } from './types.js';
|
|
34
34
|
export { SAMPLE_RATE, base64ToBytes, bytesToBase64, createEventEmitter, resamplePcm, } from './audio-utils.js';
|
|
35
35
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;GAKG;AACH,QAAA,MAAM,YAAY,GAAI,SAAS,qBAAqB,KAAG,cAEtD,CAAC;AAGF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAGxC,YAAY,EACV,WAAW,EACX,qBAAqB,EACrB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,WAAW,GACZ,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;GAKG;AACH,QAAA,MAAM,YAAY,GAAI,SAAS,qBAAqB,KAAG,cAEtD,CAAC;AAGF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAGxC,YAAY,EACV,WAAW,EACX,OAAO,EACP,qBAAqB,EACrB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,WAAW,GACZ,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CAAC,OAA8B,EAAkB,EAAE;IACtE,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,OAAO;AACP,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CAAC,OAA8B,EAAkB,EAAE;IACtE,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,OAAO;AACP,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAUxC,YAAY;AACZ,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,WAAW,GACZ,MAAM,kBAAkB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared types for Persona SDK.
|
|
3
3
|
*/
|
|
4
|
+
/** Emotion states for avatar expression */
|
|
5
|
+
export type Emotion = 'neutral' | 'angry' | 'sad' | 'happy';
|
|
4
6
|
/** Session state machine */
|
|
5
7
|
export type SessionState = 'disconnected' | 'connecting' | 'connected' | 'error';
|
|
6
8
|
/** Reason for session close */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,4BAA4B;AAC5B,MAAM,MAAM,YAAY,GACpB,cAAc,GACd,YAAY,GACZ,WAAW,GACX,OAAO,CAAC;AAEZ,+BAA+B;AAC/B,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,cAAc,GACd,iBAAiB,GACjB,qBAAqB,GACrB,SAAS,CAAC;AAEd,4CAA4C;AAC5C,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IAEtB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEjD,2CAA2C;IAC3C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEjD,wCAAwC;IACxC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAE9C,sBAAsB;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CACzC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,2CAA2C;AAC3C,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AAE5D,4BAA4B;AAC5B,MAAM,MAAM,YAAY,GACpB,cAAc,GACd,YAAY,GACZ,WAAW,GACX,OAAO,CAAC;AAEZ,+BAA+B;AAC/B,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,cAAc,GACd,iBAAiB,GACjB,qBAAqB,GACrB,SAAS,CAAC;AAEd,4CAA4C;AAC5C,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IAEtB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEjD,2CAA2C;IAC3C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEjD,wCAAwC;IACxC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAE9C,sBAAsB;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CACzC"}
|