@mastra/clickhouse 1.0.0-beta.8 → 1.0.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/CHANGELOG.md +993 -0
- package/README.md +1 -1
- package/dist/docs/README.md +31 -0
- package/dist/docs/SKILL.md +32 -0
- package/dist/docs/SOURCE_MAP.json +6 -0
- package/dist/docs/storage/01-reference.md +182 -0
- package/dist/index.cjs +392 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +393 -37
- package/dist/index.js.map +1 -1
- package/dist/storage/db/index.d.ts +50 -0
- package/dist/storage/db/index.d.ts.map +1 -1
- package/dist/storage/db/utils.d.ts.map +1 -1
- package/dist/storage/domains/memory/index.d.ts +2 -2
- package/dist/storage/domains/memory/index.d.ts.map +1 -1
- package/dist/storage/domains/observability/index.d.ts +23 -0
- package/dist/storage/domains/observability/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +42 -9
- package/dist/storage/index.d.ts.map +1 -1
- package/package.json +9 -8
|
@@ -41,6 +41,56 @@ export declare class ClickhouseDB extends MastraBase {
|
|
|
41
41
|
ttl: ClickhouseConfig['ttl'];
|
|
42
42
|
});
|
|
43
43
|
hasColumn(table: string, column: string): Promise<boolean>;
|
|
44
|
+
/**
|
|
45
|
+
* Checks if a table exists in the database.
|
|
46
|
+
*/
|
|
47
|
+
tableExists(tableName: string): Promise<boolean>;
|
|
48
|
+
/**
|
|
49
|
+
* Gets the sorting key (ORDER BY columns) for a table.
|
|
50
|
+
* Returns null if the table doesn't exist.
|
|
51
|
+
*/
|
|
52
|
+
getTableSortingKey(tableName: string): Promise<string | null>;
|
|
53
|
+
/**
|
|
54
|
+
* Checks if migration is needed for the spans table.
|
|
55
|
+
* Returns information about the current state.
|
|
56
|
+
*/
|
|
57
|
+
checkSpansMigrationStatus(tableName: string): Promise<{
|
|
58
|
+
needsMigration: boolean;
|
|
59
|
+
currentSortingKey: string | null;
|
|
60
|
+
}>;
|
|
61
|
+
/**
|
|
62
|
+
* Checks for duplicate (traceId, spanId) combinations in the spans table.
|
|
63
|
+
* Returns information about duplicates for logging/CLI purposes.
|
|
64
|
+
*/
|
|
65
|
+
checkForDuplicateSpans(tableName: string): Promise<{
|
|
66
|
+
hasDuplicates: boolean;
|
|
67
|
+
duplicateCount: number;
|
|
68
|
+
}>;
|
|
69
|
+
/**
|
|
70
|
+
* Migrates the spans table from the old sorting key (createdAt, traceId, spanId)
|
|
71
|
+
* to the new sorting key (traceId, spanId) for proper uniqueness enforcement.
|
|
72
|
+
*
|
|
73
|
+
* This migration:
|
|
74
|
+
* 1. Renames the old table to a backup
|
|
75
|
+
* 2. Creates a new table with the correct sorting key
|
|
76
|
+
* 3. Copies all data from the backup to the new table, deduplicating by (traceId, spanId)
|
|
77
|
+
* using priority-based selection:
|
|
78
|
+
* - First, prefer completed spans (those with endedAt set)
|
|
79
|
+
* - Then prefer the most recently updated span (highest updatedAt)
|
|
80
|
+
* - Finally use creation time as tiebreaker (highest createdAt)
|
|
81
|
+
* 4. Drops the backup table
|
|
82
|
+
*
|
|
83
|
+
* The deduplication strategy matches the PostgreSQL migration (PR #12073) to ensure
|
|
84
|
+
* consistent behavior across storage backends.
|
|
85
|
+
*
|
|
86
|
+
* The migration is idempotent - it only runs if the old sorting key is detected.
|
|
87
|
+
*
|
|
88
|
+
* @returns true if migration was performed, false if not needed
|
|
89
|
+
*/
|
|
90
|
+
migrateSpansTableSortingKey({ tableName, schema, }: {
|
|
91
|
+
tableName: TABLE_NAMES;
|
|
92
|
+
schema: Record<string, StorageColumn>;
|
|
93
|
+
}): Promise<boolean>;
|
|
44
94
|
protected getSqlType(type: StorageColumn['type']): string;
|
|
45
95
|
createTable({ tableName, schema, }: {
|
|
46
96
|
tableName: TABLE_NAMES;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAU/C,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,GAAG,0BAA0B,CAAC;AAE/F;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,sBAAsB,GAAG;IACvE,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;CAC/B,CAoBA;AAED,qBAAa,YAAa,SAAQ,UAAU;IAC1C,SAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBACvB,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAAE,MAAM,EAAE,gBAAgB,CAAC;QAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAA;KAAE;IAQjF,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAShE,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM;IAoBnD,WAAW,CAAC,EAChB,SAAS,EACT,MAAM,GACP,EAAE;QACD,SAAS,EAAE,WAAW,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;KACvC,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/db/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/storage/db/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAYtF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/storage/db/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAYtF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAYrD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAS9D,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,aAAa,GACb,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,KAAK,GACL,MAAM,GACN,OAAO,GACP,SAAS,GACT,MAAM,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE;SACH,QAAQ,IAAI,WAAW,CAAC,CAAC,EAAE;YAC1B,GAAG,CAAC,EAAE;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,YAAY,CAAC;gBAAC,MAAM,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YAChE,OAAO,CAAC,EAAE,OAAO,CAAC;iBACf,SAAS,IAAI,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG;oBACrD,QAAQ,EAAE,MAAM,CAAC;oBACjB,IAAI,EAAE,YAAY,CAAC;oBACnB,MAAM,CAAC,EAAE,MAAM,CAAC;iBACjB;aACF,CAAC,CAAC;SACJ;KACF,CAAC;CACH,CAAC;AAQF,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAiC3C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAEjD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ClickHouseClient } from '@clickhouse/client';
|
|
2
2
|
import type { MastraMessageContentV2 } from '@mastra/core/agent';
|
|
3
3
|
import type { MastraDBMessage, StorageThreadType } from '@mastra/core/memory';
|
|
4
|
-
import type { StorageResourceType, StorageListMessagesInput, StorageListMessagesOutput,
|
|
4
|
+
import type { StorageResourceType, StorageListMessagesInput, StorageListMessagesOutput, StorageListThreadsInput, StorageListThreadsOutput } from '@mastra/core/storage';
|
|
5
5
|
import { MemoryStorage } from '@mastra/core/storage';
|
|
6
6
|
import type { ClickhouseDomainConfig } from '../../db/index.js';
|
|
7
7
|
export declare class MemoryStorageClickhouse extends MemoryStorage {
|
|
@@ -36,7 +36,7 @@ export declare class MemoryStorageClickhouse extends MemoryStorage {
|
|
|
36
36
|
deleteThread({ threadId }: {
|
|
37
37
|
threadId: string;
|
|
38
38
|
}): Promise<void>;
|
|
39
|
-
|
|
39
|
+
listThreads(args: StorageListThreadsInput): Promise<StorageListThreadsOutput>;
|
|
40
40
|
updateMessages(args: {
|
|
41
41
|
messages: (Partial<Omit<MastraDBMessage, 'createdAt'>> & {
|
|
42
42
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAmB,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/memory/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,29 @@ export declare class ObservabilityStorageClickhouse extends ObservabilityStorage
|
|
|
8
8
|
constructor(config: ClickhouseDomainConfig);
|
|
9
9
|
init(): Promise<void>;
|
|
10
10
|
dangerouslyClearAll(): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Manually run the spans migration to deduplicate and update the sorting key.
|
|
13
|
+
* This is intended to be called from the CLI when duplicates are detected.
|
|
14
|
+
*
|
|
15
|
+
* @returns Migration result with status and details
|
|
16
|
+
*/
|
|
17
|
+
migrateSpans(): Promise<{
|
|
18
|
+
success: boolean;
|
|
19
|
+
alreadyMigrated: boolean;
|
|
20
|
+
duplicatesRemoved: number;
|
|
21
|
+
message: string;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Check migration status for the spans table.
|
|
25
|
+
* Returns information about whether migration is needed.
|
|
26
|
+
*/
|
|
27
|
+
checkSpansMigrationStatus(): Promise<{
|
|
28
|
+
needsMigration: boolean;
|
|
29
|
+
hasDuplicates: boolean;
|
|
30
|
+
duplicateCount: number;
|
|
31
|
+
constraintExists: boolean;
|
|
32
|
+
tableName: string;
|
|
33
|
+
}>;
|
|
11
34
|
get tracingStrategy(): {
|
|
12
35
|
preferred: TracingStorageStrategy;
|
|
13
36
|
supported: TracingStorageStrategy[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAGL,oBAAoB,EAIrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGvD,qBAAa,8BAA+B,SAAQ,oBAAoB;;IACtE,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBAGvB,MAAM,EAAE,sBAAsB;IAOpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAGL,oBAAoB,EAIrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGvD,qBAAa,8BAA+B,SAAQ,oBAAoB;;IACtE,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBAGvB,MAAM,EAAE,sBAAsB;IAOpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqDrB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;;;;OAKG;IACG,YAAY,IAAI,OAAO,CAAC;QAC5B,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,OAAO,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAqCF;;;OAGG;IACG,yBAAyB,IAAI,OAAO,CAAC;QACzC,cAAc,EAAE,OAAO,CAAC;QACxB,aAAa,EAAE,OAAO,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAuBF,IAAoB,eAAe,IAAI;QACrC,SAAS,EAAE,sBAAsB,CAAC;QAClC,SAAS,EAAE,sBAAsB,EAAE,CAAC;KACrC,CAQA;IAEK,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B/C,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IA6C3D,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IA6CvE,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA2C9D,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA0D/C,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAyQ9F,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B3D,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuD3D,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBpE"}
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ClickHouseClient } from '@clickhouse/client';
|
|
2
|
-
import {
|
|
1
|
+
import type { ClickHouseClient, ClickHouseClientConfigOptions } from '@clickhouse/client';
|
|
2
|
+
import { MastraCompositeStore } from '@mastra/core/storage';
|
|
3
3
|
import type { TABLE_NAMES, StorageDomains, TABLE_SCHEMAS } from '@mastra/core/storage';
|
|
4
4
|
import { MemoryStorageClickhouse } from './domains/memory/index.js';
|
|
5
5
|
import { ObservabilityStorageClickhouse } from './domains/observability/index.js';
|
|
@@ -24,12 +24,49 @@ type ClickhouseTtlConfig = {
|
|
|
24
24
|
}>;
|
|
25
25
|
};
|
|
26
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* ClickHouse credentials configuration.
|
|
29
|
+
* Requires url, username, and password, plus supports all other ClickHouseClientConfigOptions.
|
|
30
|
+
*/
|
|
31
|
+
type ClickhouseCredentialsConfig = Omit<ClickHouseClientConfigOptions, 'url' | 'username' | 'password'> & {
|
|
32
|
+
/** ClickHouse server URL (required) */
|
|
33
|
+
url: string;
|
|
34
|
+
/** ClickHouse username (required) */
|
|
35
|
+
username: string;
|
|
36
|
+
/** ClickHouse password (required) */
|
|
37
|
+
password: string;
|
|
38
|
+
};
|
|
27
39
|
/**
|
|
28
40
|
* ClickHouse configuration type.
|
|
29
41
|
*
|
|
30
42
|
* Accepts either:
|
|
31
43
|
* - A pre-configured ClickHouse client: `{ id, client, ttl? }`
|
|
32
|
-
* -
|
|
44
|
+
* - ClickHouse credentials with optional advanced options: `{ id, url, username, password, ... }`
|
|
45
|
+
*
|
|
46
|
+
* All ClickHouseClientConfigOptions are supported (database, request_timeout,
|
|
47
|
+
* compression, keep_alive, max_open_connections, etc.).
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* // Simple credentials config
|
|
52
|
+
* const store = new ClickhouseStore({
|
|
53
|
+
* id: 'my-store',
|
|
54
|
+
* url: 'http://localhost:8123',
|
|
55
|
+
* username: 'default',
|
|
56
|
+
* password: '',
|
|
57
|
+
* });
|
|
58
|
+
*
|
|
59
|
+
* // With advanced options
|
|
60
|
+
* const store = new ClickhouseStore({
|
|
61
|
+
* id: 'my-store',
|
|
62
|
+
* url: 'http://localhost:8123',
|
|
63
|
+
* username: 'default',
|
|
64
|
+
* password: '',
|
|
65
|
+
* request_timeout: 60000,
|
|
66
|
+
* compression: { request: true, response: true },
|
|
67
|
+
* keep_alive: { enabled: true },
|
|
68
|
+
* });
|
|
69
|
+
* ```
|
|
33
70
|
*/
|
|
34
71
|
export type ClickhouseConfig = {
|
|
35
72
|
id: string;
|
|
@@ -76,11 +113,7 @@ export type ClickhouseConfig = {
|
|
|
76
113
|
* ```
|
|
77
114
|
*/
|
|
78
115
|
client: ClickHouseClient;
|
|
79
|
-
} |
|
|
80
|
-
url: string;
|
|
81
|
-
username: string;
|
|
82
|
-
password: string;
|
|
83
|
-
});
|
|
116
|
+
} | ClickhouseCredentialsConfig);
|
|
84
117
|
/**
|
|
85
118
|
* ClickHouse storage adapter for Mastra.
|
|
86
119
|
*
|
|
@@ -103,7 +136,7 @@ export type ClickhouseConfig = {
|
|
|
103
136
|
* await observability?.createSpan(span);
|
|
104
137
|
* ```
|
|
105
138
|
*/
|
|
106
|
-
export declare class ClickhouseStore extends
|
|
139
|
+
export declare class ClickhouseStore extends MastraCompositeStore {
|
|
107
140
|
protected db: ClickHouseClient;
|
|
108
141
|
protected ttl: ClickhouseConfig['ttl'];
|
|
109
142
|
stores: StorageDomains;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAG1F,OAAO,EAAwB,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAGjE,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,CAAC;AACxH,YAAY,EAAE,sBAAsB,EAAE,MAAM,MAAM,CAAC;AAEnD,KAAK,YAAY,GACb,YAAY,GACZ,aAAa,GACb,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,KAAK,GACL,MAAM,GACN,OAAO,GACP,SAAS,GACT,MAAM,CAAC;AAEX,KAAK,mBAAmB,GAAG;KACxB,QAAQ,IAAI,WAAW,CAAC,CAAC,EAAE;QAC1B,GAAG,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,YAAY,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAChE,OAAO,CAAC,EAAE,OAAO,CAAC;aACf,SAAS,IAAI,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG;gBACrD,QAAQ,EAAE,MAAM,CAAC;gBACjB,IAAI,EAAE,YAAY,CAAC;gBACnB,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB;SACF,CAAC,CAAC;KACJ;CACF,CAAC;AAEF;;;GAGG;AACH,KAAK,2BAA2B,GAAG,IAAI,CAAC,6BAA6B,EAAE,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG;IACxG,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,CACA;IACE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,EAAE,gBAAgB,CAAC;CAC1B,GACD,2BAA2B,CAC9B,CAAC;AASF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,eAAgB,SAAQ,oBAAoB;IACvD,SAAS,CAAC,EAAE,EAAE,gBAAgB,CAAC;IAC/B,SAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAM;IAE5C,MAAM,EAAE,cAAc,CAAC;gBAEX,MAAM,EAAE,gBAAgB;IAoD9B,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvE,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9E;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAc7B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/clickhouse",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Clickhouse provider for Mastra - includes db storage capabilities",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -28,12 +28,12 @@
|
|
|
28
28
|
"@vitest/ui": "4.0.12",
|
|
29
29
|
"eslint": "^9.37.0",
|
|
30
30
|
"tsup": "^8.5.0",
|
|
31
|
-
"typescript": "^5.
|
|
32
|
-
"vitest": "4.0.
|
|
33
|
-
"@internal/
|
|
34
|
-
"@
|
|
35
|
-
"@
|
|
36
|
-
"@internal/
|
|
31
|
+
"typescript": "^5.9.3",
|
|
32
|
+
"vitest": "4.0.16",
|
|
33
|
+
"@internal/storage-test-utils": "0.0.50",
|
|
34
|
+
"@mastra/core": "1.0.0",
|
|
35
|
+
"@internal/lint": "0.0.54",
|
|
36
|
+
"@internal/types-builder": "0.0.29"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"@mastra/core": ">=1.0.0-0 <2.0.0-0"
|
|
@@ -55,7 +55,8 @@
|
|
|
55
55
|
"node": ">=22.13.0"
|
|
56
56
|
},
|
|
57
57
|
"scripts": {
|
|
58
|
-
"build": "tsup --silent --config tsup.config.ts",
|
|
58
|
+
"build:lib": "tsup --silent --config tsup.config.ts",
|
|
59
|
+
"build:docs": "pnpx tsx ../../scripts/generate-package-docs.ts stores/clickhouse",
|
|
59
60
|
"build:watch": "tsup --watch --silent --config tsup.config.ts",
|
|
60
61
|
"pretest": "docker compose up -d && (for i in $(seq 1 30); do docker compose exec -T db clickhouse-client --query 'SELECT 1' && break || (sleep 1; [ $i -eq 30 ] && exit 1); done)",
|
|
61
62
|
"test": "vitest run",
|