conversationalist 0.0.5 → 0.0.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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A TypeScript-first library for managing LLM conversation state with **immutable updates**, **type-safe APIs**, and **provider-agnostic adapters**.
4
4
 
5
- [![Tests](https://github.com/stevekinney/conversationalist/actions/workflows/test.yml/badge.svg)](https://github.com/stevekinney/conversationalist/actions/workflows/test.yml)
5
+ [![CI](https://github.com/stevekinney/conversationalist/actions/workflows/ci.yml/badge.svg)](https://github.com/stevekinney/conversationalist/actions/workflows/ci.yml)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
7
 
8
8
  ## What is Conversationalist?
@@ -611,6 +611,112 @@ const restoredWithEnv = ConversationHistory.from(json, {
611
611
  });
612
612
  ```
613
613
 
614
+ ## Advanced Serialization
615
+
616
+ ### Schema Versioning
617
+
618
+ Conversations include a `schemaVersion` field for forward compatibility. When loading older data, use `migrateConversationJSON` to upgrade it to the current schema:
619
+
620
+ ```ts
621
+ import {
622
+ migrateConversationJSON,
623
+ deserializeConversation,
624
+ CURRENT_SCHEMA_VERSION,
625
+ } from 'conversationalist';
626
+
627
+ // Old data without schemaVersion
628
+ const legacyData = JSON.parse(oldStorage);
629
+ const migrated = migrateConversationJSON(legacyData);
630
+ // migrated.schemaVersion === CURRENT_SCHEMA_VERSION
631
+
632
+ const conversation = deserializeConversation(migrated);
633
+ ```
634
+
635
+ ### Serialization Options
636
+
637
+ `serializeConversation` accepts options for controlling the output:
638
+
639
+ ```ts
640
+ import { serializeConversation } from 'conversationalist';
641
+
642
+ const json = serializeConversation(conversation, {
643
+ // Sort keys and messages for stable, diff-friendly output
644
+ deterministic: true,
645
+
646
+ // Remove metadata keys starting with '_' (transient UI state)
647
+ stripTransient: true,
648
+
649
+ // Replace tool arguments with '[REDACTED]'
650
+ redactToolArguments: true,
651
+
652
+ // Replace tool result content with '[REDACTED]'
653
+ redactToolResults: true,
654
+ });
655
+ ```
656
+
657
+ ### Transient Metadata Convention
658
+
659
+ Keys prefixed with `_` are considered transient—temporary UI state that shouldn't be persisted:
660
+
661
+ ```ts
662
+ import {
663
+ isTransientKey,
664
+ stripTransientFromRecord,
665
+ stripTransientMetadata,
666
+ } from 'conversationalist';
667
+
668
+ // Check if a key is transient
669
+ isTransientKey('_tempId'); // true
670
+ isTransientKey('source'); // false
671
+
672
+ // Strip transient keys from a metadata object
673
+ stripTransientFromRecord({ _loading: true, source: 'web' });
674
+ // { source: 'web' }
675
+
676
+ // Strip transient metadata from an entire conversation
677
+ const cleaned = stripTransientMetadata(conversation);
678
+ ```
679
+
680
+ ### Deterministic Output
681
+
682
+ For reproducible snapshots or tests, use the deterministic utilities:
683
+
684
+ ```ts
685
+ import { sortObjectKeys, sortMessagesByPosition } from 'conversationalist';
686
+
687
+ // Sort object keys alphabetically (recursive)
688
+ const sorted = sortObjectKeys({ z: 1, a: 2, nested: { b: 3, a: 4 } });
689
+ // { a: 2, nested: { a: 4, b: 3 }, z: 1 }
690
+
691
+ // Sort messages by position, createdAt, then id
692
+ const orderedMessages = sortMessagesByPosition(messages);
693
+ ```
694
+
695
+ ### Role Labels
696
+
697
+ Export human-readable labels for message roles:
698
+
699
+ ```ts
700
+ import {
701
+ ROLE_LABELS,
702
+ LABEL_TO_ROLE,
703
+ getRoleLabel,
704
+ getRoleFromLabel,
705
+ } from 'conversationalist';
706
+
707
+ // Get display label for a role
708
+ getRoleLabel('tool-use'); // 'Tool Use'
709
+ getRoleLabel('assistant'); // 'Assistant'
710
+
711
+ // Get role from a label
712
+ getRoleFromLabel('Tool Result'); // 'tool-result'
713
+ getRoleFromLabel('Unknown'); // undefined
714
+
715
+ // Access the mappings directly
716
+ ROLE_LABELS['developer']; // 'Developer'
717
+ LABEL_TO_ROLE['System']; // 'system'
718
+ ```
719
+
614
720
  ### Markdown Serialization
615
721
 
616
722
  You can also convert a conversation to Markdown format for human-readable storage or export, and restore it later.
@@ -799,16 +905,19 @@ Svelte 5's runes pair perfectly with **Conversationalist**. You can use the `Con
799
905
 
800
906
  ## API Overview
801
907
 
802
- | Category | Key Functions |
803
- | :--------------- | :------------------------------------------------------------------------------------------------------- |
804
- | **Creation** | `createConversation`, `serializeConversation`, `deserializeConversation` |
805
- | **Appending** | `appendUserMessage`, `appendAssistantMessage`, `appendSystemMessage`, `appendMessages` |
806
- | **Streaming** | `appendStreamingMessage`, `updateStreamingMessage`, `finalizeStreamingMessage`, `cancelStreamingMessage` |
807
- | **Modification** | `redactMessageAtPosition`, `replaceSystemMessage`, `collapseSystemMessages` |
808
- | **Context** | `truncateToTokenLimit`, `getRecentMessages`, `estimateConversationTokens` |
809
- | **Querying** | `getConversationMessages`, `getMessageByIdentifier`, `computeConversationStatistics` |
810
- | **Conversion** | `toMarkdown`, `fromMarkdown`, `toChatMessages`, `pairToolCallsWithResults` |
811
- | **History** | `ConversationHistory`, `bindToConversationHistory` |
908
+ | Category | Key Functions |
909
+ | :---------------- | :------------------------------------------------------------------------------------------------------- |
910
+ | **Creation** | `createConversation`, `serializeConversation`, `deserializeConversation`, `migrateConversationJSON` |
911
+ | **Appending** | `appendUserMessage`, `appendAssistantMessage`, `appendSystemMessage`, `appendMessages` |
912
+ | **Streaming** | `appendStreamingMessage`, `updateStreamingMessage`, `finalizeStreamingMessage`, `cancelStreamingMessage` |
913
+ | **Modification** | `redactMessageAtPosition`, `replaceSystemMessage`, `collapseSystemMessages` |
914
+ | **Context** | `truncateToTokenLimit`, `getRecentMessages`, `estimateConversationTokens` |
915
+ | **Querying** | `getConversationMessages`, `getMessageByIdentifier`, `computeConversationStatistics` |
916
+ | **Conversion** | `toMarkdown`, `fromMarkdown`, `toChatMessages`, `pairToolCallsWithResults` |
917
+ | **Role Labels** | `ROLE_LABELS`, `LABEL_TO_ROLE`, `getRoleLabel`, `getRoleFromLabel` |
918
+ | **Transient** | `isTransientKey`, `stripTransientFromRecord`, `stripTransientMetadata` |
919
+ | **Deterministic** | `sortObjectKeys`, `sortMessagesByPosition` |
920
+ | **History** | `ConversationHistory`, `bindToConversationHistory` |
812
921
 
813
922
  ## Deterministic Environments (Testing)
814
923
 
@@ -4,6 +4,6 @@ export { appendAssistantMessage, appendMessages, appendSystemMessage, appendUser
4
4
  export { computeConversationStatistics, getConversationMessages, getMessageAtPosition, getMessageByIdentifier, searchConversationMessages, } from './query';
5
5
  export { collapseSystemMessages, getFirstSystemMessage, getSystemMessages, hasSystemMessage, prependSystemMessage, replaceSystemMessage, } from './system-messages';
6
6
  export { redactMessageAtPosition } from './modify';
7
- export { deserializeConversation, serializeConversation } from './serialization';
7
+ export { deserializeConversation, migrateConversationJSON, serializeConversation, } from './serialization';
8
8
  export { toChatMessages } from './transform';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGjF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -1,13 +1,51 @@
1
- import type { Conversation, ConversationJSON } from '../types';
1
+ import type { Conversation, ConversationJSON, SerializeOptions } from '../types';
2
+ /**
3
+ * Migrates a conversation JSON object to the current schema version.
4
+ * Handles data from older versions that may not have a schemaVersion field.
5
+ *
6
+ * @param json - The conversation JSON to migrate (may be from an older version)
7
+ * @returns A ConversationJSON with the current schema version
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * // Old data without schemaVersion
12
+ * const old = { id: 'conv-1', status: 'active', ... };
13
+ * const migrated = migrateConversationJSON(old);
14
+ * // migrated.schemaVersion === CURRENT_SCHEMA_VERSION
15
+ * ```
16
+ */
17
+ export declare function migrateConversationJSON(json: unknown): ConversationJSON;
2
18
  /**
3
19
  * Converts a conversation to a plain JSON-serializable object.
4
20
  * Creates deep copies of all nested objects to ensure immutability.
21
+ *
22
+ * @param conversation - The conversation to serialize
23
+ * @param options - Serialization options
24
+ * @returns A JSON-serializable conversation object
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * // Basic serialization
29
+ * const json = serializeConversation(conversation);
30
+ *
31
+ * // With options
32
+ * const json = serializeConversation(conversation, {
33
+ * deterministic: true,
34
+ * stripTransient: true,
35
+ * redactToolArguments: true,
36
+ * });
37
+ * ```
5
38
  */
6
- export declare function serializeConversation(conversation: Conversation): ConversationJSON;
39
+ export declare function serializeConversation(conversation: Conversation, options?: SerializeOptions): ConversationJSON;
7
40
  /**
8
41
  * Reconstructs a conversation from a JSON object.
42
+ * Automatically migrates data from older schema versions.
9
43
  * Validates message positions are contiguous and tool results reference valid calls.
10
44
  * Throws a serialization error if validation fails.
45
+ *
46
+ * @param json - The conversation JSON to deserialize (may be from an older version)
47
+ * @returns A Conversation object
48
+ * @throws {SerializationError} If validation fails
11
49
  */
12
- export declare function deserializeConversation(json: ConversationJSON): Conversation;
50
+ export declare function deserializeConversation(json: unknown): Conversation;
13
51
  //# sourceMappingURL=serialization.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../src/conversation/serialization.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAW,MAAM,UAAU,CAAC;AAIxE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,YAAY,GAAG,gBAAgB,CAuBlF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CA2C5E"}
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../src/conversation/serialization.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAGhB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAUlB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CA2BvE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,YAAY,EAC1B,OAAO,GAAE,gBAAqB,GAC7B,gBAAgB,CAqElB;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CA8CnE"}
@@ -1,6 +1,6 @@
1
1
  import type { Message as ExternalMessage } from '@lasercat/homogenaize';
2
2
  import { type ConversationEnvironment } from './environment';
3
- import type { Conversation, ConversationJSON, ConversationStatus, Message, MessageInput } from './types';
3
+ import type { Conversation, ConversationJSON, ConversationStatus, Message, MessageInput, SerializeOptions } from './types';
4
4
  export type { ConversationEnvironment } from './environment';
5
5
  export declare function createConversation(options?: {
6
6
  id?: string;
@@ -33,7 +33,21 @@ export declare function prependSystemMessage(conversation: Conversation, content
33
33
  export declare function replaceSystemMessage(conversation: Conversation, content: string, metadata?: Record<string, unknown>, environment?: Partial<ConversationEnvironment>): Conversation;
34
34
  export declare function collapseSystemMessages(conversation: Conversation, environment?: Partial<ConversationEnvironment>): Conversation;
35
35
  export declare function redactMessageAtPosition(conversation: Conversation, position: number, placeholder?: string, environment?: Partial<ConversationEnvironment>): Conversation;
36
- export declare function serializeConversation(conversation: Conversation): ConversationJSON;
37
- export declare function deserializeConversation(json: ConversationJSON): Conversation;
36
+ /**
37
+ * Migrates a conversation JSON object to the current schema version.
38
+ * Handles data from older versions that may not have a schemaVersion field.
39
+ */
40
+ export declare function migrateConversationJSON(json: unknown): ConversationJSON;
41
+ /**
42
+ * Converts a conversation to a plain JSON-serializable object.
43
+ * Creates deep copies of all nested objects to ensure immutability.
44
+ */
45
+ export declare function serializeConversation(conversation: Conversation, options?: SerializeOptions): ConversationJSON;
46
+ /**
47
+ * Reconstructs a conversation from a JSON object.
48
+ * Automatically migrates data from older schema versions.
49
+ * Validates message positions are contiguous and tool results reference valid calls.
50
+ */
51
+ export declare function deserializeConversation(json: unknown): Conversation;
38
52
  export declare function toChatMessages(conversation: Conversation): ExternalMessage[];
39
53
  //# sourceMappingURL=conversation.d.ts.map
@@ -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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"}
package/dist/index.d.ts CHANGED
@@ -1,16 +1,17 @@
1
1
  export type { ImageContent, TextContent } from './multi-modal';
2
2
  export { copyContent, copyMultiModalContent } from './multi-modal';
3
3
  export type { Message as ExternalMessage, MultiModalContent, } from '@lasercat/homogenaize';
4
- export type { Conversation, ConversationJSON, ConversationStatus, Message, MessageInput, MessageJSON, MessageRole, TokenUsage, ToolCall, ToolResult, } from './types';
4
+ export type { Conversation, ConversationJSON, ConversationStatus, ExportOptions, Message, MessageInput, MessageJSON, MessageRole, SerializeOptions, TokenUsage, ToMarkdownOptions, ToolCall, ToolResult, } from './types';
5
+ export { CURRENT_SCHEMA_VERSION } from './types';
5
6
  export { conversationSchema, conversationShape, messageInputSchema, messageJSONSchema, messageRoleSchema, multiModalContentSchema, tokenUsageSchema, toolCallSchema, toolResultSchema, } from './schemas';
6
7
  export type { ConversationEnvironment } from './conversation';
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 { appendAssistantMessage, appendMessages, appendSystemMessage, appendUserMessage, collapseSystemMessages, computeConversationStatistics, createConversation, deserializeConversation, getConversationMessages, getFirstSystemMessage, getMessageAtPosition, getMessageByIdentifier, getSystemMessages, hasSystemMessage, migrateConversationJSON, prependSystemMessage, redactMessageAtPosition, replaceSystemMessage, searchConversationMessages, serializeConversation, toChatMessages, } from './conversation';
8
9
  export { withEnvironment } from './environment';
9
10
  export { createMessage } from './utilities';
10
11
  export type { ConversationalistErrorCode } from './errors';
11
12
  export { ConversationalistError, createDuplicateIdError, createInvalidInputError, createInvalidPositionError, createInvalidToolReferenceError, createLockedError, createNotFoundError, createSerializationError, createValidationError, } from './errors';
12
- export type { ToMarkdownOptions, ToolCallPair } from './utilities';
13
- export { fromMarkdown, MarkdownParseError, normalizeContent, pairToolCallsWithResults, toMarkdown, toMultiModalArray, } from './utilities';
13
+ export type { ToolCallPair } from './utilities';
14
+ export { fromMarkdown, getRoleFromLabel, getRoleLabel, isTransientKey, LABEL_TO_ROLE, MarkdownParseError, normalizeContent, pairToolCallsWithResults, ROLE_LABELS, sortMessagesByPosition, sortObjectKeys, stripTransientFromRecord, stripTransientMetadata, toMarkdown, toMultiModalArray, } from './utilities';
14
15
  export type { ConversationDraft } from './with-conversation';
15
16
  export { pipeConversation, withConversation } from './with-conversation';
16
17
  export { bindToConversationHistory, ConversationHistory } from './history';
@@ -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;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,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,UAAU,EACV,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"}
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,aAAa,EACb,OAAO,EACP,YAAY,EACZ,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAGjD,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,uBAAuB,EACvB,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,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,wBAAwB,EACxB,sBAAsB,EACtB,UAAU,EACV,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"}