conversationalist 0.0.2 → 0.0.3

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/context.d.ts CHANGED
@@ -1,5 +1,25 @@
1
- import { type ConversationEnvironment } from './environment';
2
- import type { Conversation, Message } from './types';
1
+ import { type ConversationEnvironment, simpleTokenEstimator } from './environment';
2
+ import type { Conversation, Message, TokenEstimator } from './types';
3
+ export { simpleTokenEstimator };
4
+ /**
5
+ * Estimates total tokens in a conversation using the provided estimator function.
6
+ * If no estimator is provided, the environment's default estimator is used.
7
+ */
8
+ export declare function estimateConversationTokens(conversation: Conversation, estimateTokens?: TokenEstimator, environment?: Partial<ConversationEnvironment>): number;
9
+ /**
10
+ * Options for truncateToTokenLimit.
11
+ */
12
+ export interface TruncateOptions {
13
+ estimateTokens?: TokenEstimator;
14
+ preserveSystemMessages?: boolean;
15
+ preserveLastN?: number;
16
+ }
17
+ /**
18
+ * Truncates conversation to fit within an estimated token limit.
19
+ * Removes oldest messages first while preserving system messages and optionally the last N messages.
20
+ * If no estimator is provided, the environment's default estimator is used.
21
+ */
22
+ export declare function truncateToTokenLimit(conversation: Conversation, maxTokens: number, optionsOrEstimator?: TruncateOptions | TokenEstimator, environment?: Partial<ConversationEnvironment>): Conversation;
3
23
  /**
4
24
  * Returns the last N messages from the conversation.
5
25
  * By default excludes system messages and hidden messages.
@@ -15,21 +35,4 @@ export declare function getRecentMessages(conversation: Conversation, count: num
15
35
  export declare function truncateFromPosition(conversation: Conversation, position: number, options?: {
16
36
  preserveSystemMessages?: boolean;
17
37
  }, environment?: Partial<ConversationEnvironment>): Conversation;
18
- /**
19
- * Estimates total tokens in a conversation using the provided estimator function.
20
- */
21
- export declare function estimateConversationTokens(conversation: Conversation, estimateTokens: (message: Message) => number): number;
22
- /**
23
- * Simple character-based token estimator.
24
- * Approximates ~4 characters per token (rough average for English text).
25
- */
26
- export declare function simpleTokenEstimator(message: Message): number;
27
- /**
28
- * Truncates conversation to fit within an estimated token limit.
29
- * Removes oldest messages first while preserving system messages and optionally the last N messages.
30
- */
31
- export declare function truncateToTokenLimit(conversation: Conversation, maxTokens: number, estimateTokens: (message: Message) => number, options?: {
32
- preserveSystemMessages?: boolean;
33
- preserveLastN?: number;
34
- }, environment?: Partial<ConversationEnvironment>): Conversation;
35
38
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGrD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GACA,aAAa,CAAC,OAAO,CAAC,CAWxB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,EACD,WAAW,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAC7C,YAAY,CAqCd;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAC3C,MAAM,CAKR;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAG7D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,EAC5C,OAAO,CAAC,EAAE;IACR,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,EACD,WAAW,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAC7C,YAAY,CA6Gd"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAG5B,oBAAoB,EACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGrE,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,YAAY,EAC1B,cAAc,CAAC,EAAE,cAAc,EAC/B,WAAW,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAC7C,MAAM,CAqBR;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,eAAe,GAAG,cAAc,EACrD,WAAW,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAC7C,YAAY,CAwId;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GACA,aAAa,CAAC,OAAO,CAAC,CAWxB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,EACD,WAAW,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAC7C,YAAY,CAkCd"}
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { Message, MessagePlugin, TokenEstimator } from './types';
1
2
  /**
2
3
  * Environment functions for conversation operations.
3
4
  * Allows dependency injection for testing and custom ID generation.
@@ -5,9 +6,16 @@
5
6
  export interface ConversationEnvironment {
6
7
  now: () => string;
7
8
  randomId: () => string;
9
+ estimateTokens: TokenEstimator;
10
+ plugins: MessagePlugin[];
8
11
  }
9
12
  /**
10
- * Default environment using Date.toISOString() and crypto.randomUUID().
13
+ * Simple character-based token estimator.
14
+ * Approximates ~4 characters per token (rough average for English text).
15
+ */
16
+ export declare function simpleTokenEstimator(message: Message): number;
17
+ /**
18
+ * Default environment using Date.toISOString(), crypto.randomUUID(), and simple token estimation.
11
19
  */
12
20
  export declare const defaultConversationEnvironment: ConversationEnvironment;
13
21
  /**
@@ -20,4 +28,8 @@ export declare function resolveConversationEnvironment(environment?: Partial<Con
20
28
  * Returns true if the value has environment functions but no role property.
21
29
  */
22
30
  export declare function isConversationEnvironmentParameter(value: unknown): value is Partial<ConversationEnvironment>;
31
+ /**
32
+ * Binds a partial environment to a function that accepts an environment as its last argument.
33
+ */
34
+ export declare function withEnvironment<T extends unknown[], R>(environment: Partial<ConversationEnvironment>, fn: (...args: [...T, Partial<ConversationEnvironment>?]) => R): (...args: T) => R;
23
35
  //# sourceMappingURL=environment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,uBAG5C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,WAAW,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAC7C,uBAAuB,CAKzB;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAM3C"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGtE;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAG7D;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,uBAK5C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,WAAW,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAC7C,uBAAuB,CAQzB;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAW3C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EACpD,WAAW,EAAE,OAAO,CAAC,uBAAuB,CAAC,EAC7C,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,GAC5D,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAEnB"}
@@ -0,0 +1,165 @@
1
+ import { type TruncateOptions } from './context';
2
+ import { type ConversationEnvironment } from './environment';
3
+ import type { Conversation, ConversationHistoryJSON, Message, MessageInput, TokenUsage } from './types';
4
+ /**
5
+ * Event detail for conversation history changes.
6
+ */
7
+ export interface ConversationHistoryEventDetail {
8
+ type: string;
9
+ conversation: Conversation;
10
+ }
11
+ /**
12
+ * Custom event emitted by ConversationHistory.
13
+ */
14
+ export declare class ConversationHistoryEvent extends CustomEvent<ConversationHistoryEventDetail> {
15
+ constructor(type: string, detail: ConversationHistoryEventDetail);
16
+ }
17
+ /**
18
+ * Manages a stack of conversation versions to support undo, redo, and branching.
19
+ */
20
+ export declare class ConversationHistory extends EventTarget {
21
+ private currentNode;
22
+ private environment;
23
+ constructor(initial: Conversation, environment?: Partial<ConversationEnvironment>);
24
+ /**
25
+ * Dispatches a change event.
26
+ */
27
+ private notifyChange;
28
+ /**
29
+ * Overrides addEventListener to optionally return an unsubscribe function.
30
+ * This is a convenience for modern frontend frameworks.
31
+ */
32
+ addEventListener(type: string, callback: ((event: ConversationHistoryEvent) => void) | EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions): void | (() => void);
33
+ /**
34
+ * Subscribes to conversation changes.
35
+ * This follows the Svelte store contract, making ConversationHistory a valid Svelte store.
36
+ * @param run - Callback called with the current conversation whenever it changes.
37
+ * @returns An unsubscribe function.
38
+ */
39
+ subscribe(run: (value: Conversation) => void): () => void;
40
+ /**
41
+ * Returns the current conversation.
42
+ * Useful for useSyncExternalStore in React.
43
+ */
44
+ getSnapshot(): Conversation;
45
+ /**
46
+ * The current conversation state.
47
+ */
48
+ get current(): Conversation;
49
+ /**
50
+ * Whether an undo operation is possible.
51
+ */
52
+ get canUndo(): boolean;
53
+ /**
54
+ * Whether a redo operation is possible.
55
+ */
56
+ get canRedo(): boolean;
57
+ /**
58
+ * Returns the environment associated with this history.
59
+ */
60
+ get env(): ConversationEnvironment;
61
+ /**
62
+ * Returns the number of branches available at the current level.
63
+ */
64
+ get branchCount(): number;
65
+ /**
66
+ * Returns the index of the current branch at this level.
67
+ */
68
+ get branchIndex(): number;
69
+ /**
70
+ * Returns the number of alternate paths available from the current state.
71
+ */
72
+ get redoCount(): number;
73
+ /**
74
+ * Pushes a new conversation state onto the history.
75
+ * If the current state is not a leaf, a new branch is created.
76
+ */
77
+ push(next: Conversation): void;
78
+ /**
79
+ * Reverts to the previous conversation state.
80
+ * @returns The conversation state after undo, or undefined if not possible.
81
+ */
82
+ undo(): Conversation | undefined;
83
+ /**
84
+ * Advances to the next conversation state.
85
+ * @param childIndex - The index of the branch to follow (default: 0).
86
+ * @returns The conversation state after redo, or undefined if not possible.
87
+ */
88
+ redo(childIndex?: number): Conversation | undefined;
89
+ /**
90
+ * Switches to a different branch at the current level.
91
+ * @param index - The index of the sibling branch to switch to.
92
+ * @returns The new conversation state, or undefined if not possible.
93
+ */
94
+ switchToBranch(index: number): Conversation | undefined;
95
+ /**
96
+ * Returns the sequence of conversations from root to current.
97
+ */
98
+ getPath(): Conversation[];
99
+ getMessages(options?: {
100
+ includeHidden?: boolean;
101
+ }): ReadonlyArray<Message>;
102
+ getMessageAtPosition(position: number): Message | undefined;
103
+ getMessageByIdentifier(id: string): Message | undefined;
104
+ searchMessages(predicate: (m: Message) => boolean): Message[];
105
+ getStatistics(): {
106
+ total: number;
107
+ byRole: Record<string, number>;
108
+ hidden: number;
109
+ withImages: number;
110
+ };
111
+ hasSystemMessage(): boolean;
112
+ getFirstSystemMessage(): Message | undefined;
113
+ getSystemMessages(): ReadonlyArray<Message>;
114
+ serialize(): import("./types").ConversationJSON;
115
+ toChatMessages(): import("@lasercat/homogenaize").Message[];
116
+ estimateTokens(estimator?: (message: Message) => number): number;
117
+ getRecentMessages(count: number, options?: {
118
+ includeHidden?: boolean;
119
+ includeSystem?: boolean;
120
+ }): ReadonlyArray<Message>;
121
+ getStreamingMessage(): Message | undefined;
122
+ appendMessages(...inputs: MessageInput[]): void;
123
+ appendUserMessage(content: MessageInput['content'], metadata?: Record<string, unknown>): void;
124
+ appendAssistantMessage(content: MessageInput['content'], metadata?: Record<string, unknown>): void;
125
+ appendSystemMessage(content: string, metadata?: Record<string, unknown>): void;
126
+ prependSystemMessage(content: string, metadata?: Record<string, unknown>): void;
127
+ replaceSystemMessage(content: string, metadata?: Record<string, unknown>): void;
128
+ collapseSystemMessages(): void;
129
+ redactMessageAtPosition(position: number, placeholder?: string): void;
130
+ truncateFromPosition(position: number, options?: {
131
+ preserveSystemMessages?: boolean;
132
+ }): void;
133
+ truncateToTokenLimit(maxTokens: number, options?: TruncateOptions): void;
134
+ appendStreamingMessage(role: 'assistant' | 'user', metadata?: Record<string, unknown>): string;
135
+ updateStreamingMessage(messageId: string, content: string): void;
136
+ finalizeStreamingMessage(messageId: string, options?: {
137
+ tokenUsage?: TokenUsage;
138
+ metadata?: Record<string, unknown>;
139
+ }): void;
140
+ cancelStreamingMessage(messageId: string): void;
141
+ /**
142
+ * Serializes the entire history tree and current state to JSON.
143
+ */
144
+ toJSON(): ConversationHistoryJSON;
145
+ /**
146
+ * Reconstructs a ConversationHistory instance from JSON.
147
+ */
148
+ static from(json: ConversationHistoryJSON, environment?: Partial<ConversationEnvironment>): ConversationHistory;
149
+ /**
150
+ * Binds a function to this history instance.
151
+ * The first argument of the function must be a Conversation.
152
+ * If the function returns a new Conversation, it is automatically pushed to the history.
153
+ */
154
+ bind<T extends unknown[], R>(fn: (conversation: Conversation, ...args: [...T, Partial<ConversationEnvironment>?]) => R): (...args: T) => R;
155
+ /**
156
+ * Cleans up all listeners and resources.
157
+ */
158
+ [Symbol.dispose](): void;
159
+ }
160
+ /**
161
+ * Binds a function's first argument to a ConversationHistory's current state.
162
+ * If the function returns a Conversation, it is pushed to the history.
163
+ */
164
+ export declare function bindToConversationHistory<T extends unknown[], R>(history: ConversationHistory, fn: (conversation: Conversation, ...args: [...T, Partial<ConversationEnvironment>?]) => R): (...args: T) => R;
165
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export type { Conversation, ConversationJSON, ConversationStatus, Message, Messa
5
5
  export { conversationSchema, conversationShape, messageInputSchema, messageJSONSchema, messageRoleSchema, multiModalContentSchema, tokenUsageSchema, toolCallSchema, toolResultSchema, } from './schemas';
6
6
  export type { ConversationEnvironment } from './conversation';
7
7
  export { appendAssistantMessage, appendMessages, appendSystemMessage, appendUserMessage, collapseSystemMessages, computeConversationStatistics, createConversation, deserializeConversation, getConversationMessages, getFirstSystemMessage, getMessageAtPosition, getMessageByIdentifier, getSystemMessages, hasSystemMessage, prependSystemMessage, redactMessageAtPosition, replaceSystemMessage, searchConversationMessages, serializeConversation, toChatMessages, } from './conversation';
8
+ export { withEnvironment } from './environment';
8
9
  export { createMessage } from './utilities';
9
10
  export type { ConversationalistErrorCode } from './errors';
10
11
  export { ConversationalistError, createDuplicateIdError, createInvalidInputError, createInvalidPositionError, createInvalidToolReferenceError, createLockedError, createNotFoundError, createSerializationError, createValidationError, } from './errors';
@@ -12,6 +13,8 @@ export type { ToolCallPair } from './utilities';
12
13
  export { normalizeContent, pairToolCallsWithResults, toMultiModalArray, } from './utilities';
13
14
  export type { ConversationDraft } from './with-conversation';
14
15
  export { pipeConversation, withConversation } from './with-conversation';
16
+ export { bindToConversationHistory, ConversationHistory } from './history';
17
+ export type { ConversationHistoryJSON, HistoryNodeJSON } from './types';
15
18
  export { appendStreamingMessage, cancelStreamingMessage, finalizeStreamingMessage, getStreamingMessage, isStreamingMessage, updateStreamingMessage, } from './streaming';
16
19
  export { estimateConversationTokens, getRecentMessages, simpleTokenEstimator, truncateFromPosition, truncateToTokenLimit, } from './context';
17
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACnE,YAAY,EACV,OAAO,IAAI,eAAe,EAC1B,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAGnB,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,YAAY,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAGlB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACnE,YAAY,EACV,OAAO,IAAI,eAAe,EAC1B,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAGnB,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,YAAY,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAGlB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC3E,YAAY,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAGxE,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,WAAW,CAAC"}