@workglow/storage 0.0.56 → 0.0.58
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/browser.js +1266 -121
- package/dist/browser.js.map +15 -10
- package/dist/bun.js +2017 -252
- package/dist/bun.js.map +19 -12
- package/dist/common-server.d.ts +4 -0
- package/dist/common-server.d.ts.map +1 -1
- package/dist/common.d.ts +2 -0
- package/dist/common.d.ts.map +1 -1
- package/dist/limiter/IRateLimiterStorage.d.ts +81 -0
- package/dist/limiter/IRateLimiterStorage.d.ts.map +1 -0
- package/dist/limiter/InMemoryRateLimiterStorage.d.ts +32 -0
- package/dist/limiter/InMemoryRateLimiterStorage.d.ts.map +1 -0
- package/dist/limiter/IndexedDbRateLimiterStorage.d.ts +52 -0
- package/dist/limiter/IndexedDbRateLimiterStorage.d.ts.map +1 -0
- package/dist/limiter/PostgresRateLimiterStorage.d.ts +54 -0
- package/dist/limiter/PostgresRateLimiterStorage.d.ts.map +1 -0
- package/dist/limiter/SqliteRateLimiterStorage.d.ts +53 -0
- package/dist/limiter/SqliteRateLimiterStorage.d.ts.map +1 -0
- package/dist/limiter/SupabaseRateLimiterStorage.d.ts +53 -0
- package/dist/limiter/SupabaseRateLimiterStorage.d.ts.map +1 -0
- package/dist/node.js +2017 -252
- package/dist/node.js.map +19 -12
- package/dist/queue/IQueueStorage.d.ts +72 -1
- package/dist/queue/IQueueStorage.d.ts.map +1 -1
- package/dist/queue/InMemoryQueueStorage.d.ts +44 -11
- package/dist/queue/InMemoryQueueStorage.d.ts.map +1 -1
- package/dist/queue/IndexedDbQueueStorage.d.ts +70 -5
- package/dist/queue/IndexedDbQueueStorage.d.ts.map +1 -1
- package/dist/queue/PostgresQueueStorage.d.ts +80 -8
- package/dist/queue/PostgresQueueStorage.d.ts.map +1 -1
- package/dist/queue/SqliteQueueStorage.d.ts +90 -34
- package/dist/queue/SqliteQueueStorage.d.ts.map +1 -1
- package/dist/queue/SupabaseQueueStorage.d.ts +98 -4
- package/dist/queue/SupabaseQueueStorage.d.ts.map +1 -1
- package/dist/tabular/ITabularRepository.d.ts +18 -0
- package/dist/tabular/ITabularRepository.d.ts.map +1 -1
- package/dist/tabular/InMemoryTabularRepository.d.ts +9 -1
- package/dist/tabular/InMemoryTabularRepository.d.ts.map +1 -1
- package/dist/tabular/SupabaseTabularRepository.d.ts +21 -1
- package/dist/tabular/SupabaseTabularRepository.d.ts.map +1 -1
- package/dist/tabular/TabularRepository.d.ts +10 -1
- package/dist/tabular/TabularRepository.d.ts.map +1 -1
- package/dist/util/PollingSubscriptionManager.d.ts +112 -0
- package/dist/util/PollingSubscriptionManager.d.ts.map +1 -0
- package/package.json +5 -5
|
@@ -4,8 +4,15 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import type { Sqlite } from "@workglow/sqlite";
|
|
7
|
-
import { IQueueStorage, JobStatus, JobStorageFormat } from "./IQueueStorage";
|
|
7
|
+
import { IQueueStorage, JobStatus, JobStorageFormat, PrefixColumn, QueueChangePayload, QueueStorageOptions, QueueSubscribeOptions } from "./IQueueStorage";
|
|
8
8
|
export declare const SQLITE_QUEUE_STORAGE: import("@workglow/util").ServiceToken<IQueueStorage<any, any>>;
|
|
9
|
+
/**
|
|
10
|
+
* Extended options for SQLite queue storage including prefix support
|
|
11
|
+
*/
|
|
12
|
+
export interface SqliteQueueStorageOptions extends QueueStorageOptions {
|
|
13
|
+
readonly deleteAfterCompletionMs?: number;
|
|
14
|
+
readonly deleteAfterFailureMs?: number;
|
|
15
|
+
}
|
|
9
16
|
/**
|
|
10
17
|
* SQLite implementation of a job queue.
|
|
11
18
|
* Provides storage and retrieval for job execution states using SQLite.
|
|
@@ -13,75 +20,83 @@ export declare const SQLITE_QUEUE_STORAGE: import("@workglow/util").ServiceToken
|
|
|
13
20
|
export declare class SqliteQueueStorage<Input, Output> implements IQueueStorage<Input, Output> {
|
|
14
21
|
protected db: Sqlite.Database;
|
|
15
22
|
protected queueName: string;
|
|
16
|
-
protected options?:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
protected options?: SqliteQueueStorageOptions | undefined;
|
|
24
|
+
/** The prefix column definitions */
|
|
25
|
+
protected readonly prefixes: readonly PrefixColumn[];
|
|
26
|
+
/** The prefix values for filtering */
|
|
27
|
+
protected readonly prefixValues: Readonly<Record<string, string | number>>;
|
|
28
|
+
/** The table name for the job queue */
|
|
29
|
+
protected readonly tableName: string;
|
|
30
|
+
/** Shared polling subscription manager */
|
|
31
|
+
private pollingManager;
|
|
32
|
+
constructor(db: Sqlite.Database, queueName: string, options?: SqliteQueueStorageOptions | undefined);
|
|
33
|
+
/**
|
|
34
|
+
* Gets the SQL column type for a prefix column (SQLite uses TEXT for uuid)
|
|
35
|
+
*/
|
|
36
|
+
private getPrefixColumnType;
|
|
37
|
+
/**
|
|
38
|
+
* Builds the prefix columns SQL for CREATE TABLE
|
|
39
|
+
*/
|
|
40
|
+
private buildPrefixColumnsSql;
|
|
41
|
+
/**
|
|
42
|
+
* Builds prefix column names for use in queries
|
|
43
|
+
*/
|
|
44
|
+
private getPrefixColumnNames;
|
|
45
|
+
/**
|
|
46
|
+
* Builds WHERE clause conditions for prefix filtering
|
|
47
|
+
* @returns The conditions string with placeholders
|
|
48
|
+
*/
|
|
49
|
+
private buildPrefixWhereClause;
|
|
50
|
+
/**
|
|
51
|
+
* Gets prefix values as an array in column order
|
|
52
|
+
*/
|
|
53
|
+
private getPrefixParamValues;
|
|
24
54
|
setupDatabase(): Promise<void>;
|
|
25
55
|
/**
|
|
26
56
|
* Adds a new job to the queue.
|
|
27
57
|
* @param job - The job to add
|
|
28
58
|
* @returns The ID of the added job
|
|
29
59
|
*/
|
|
30
|
-
add(job: JobStorageFormat<Input, Output>): Promise<
|
|
60
|
+
add(job: JobStorageFormat<Input, Output>): Promise<unknown>;
|
|
31
61
|
/**
|
|
32
62
|
* Retrieves a job by its ID.
|
|
33
63
|
* @param id - The ID of the job to retrieve
|
|
34
64
|
* @returns The job if found, undefined otherwise
|
|
35
65
|
*/
|
|
36
|
-
get(id:
|
|
37
|
-
input: string;
|
|
38
|
-
output: string | null;
|
|
39
|
-
progress_details: string | null;
|
|
40
|
-
}) | undefined>;
|
|
66
|
+
get(id: unknown): Promise<JobStorageFormat<Input, Output> | undefined>;
|
|
41
67
|
/**
|
|
42
68
|
* Retrieves a slice of jobs from the queue.
|
|
43
69
|
* @param num - Maximum number of jobs to return
|
|
44
70
|
* @returns An array of jobs
|
|
45
71
|
*/
|
|
46
|
-
peek(status?: JobStatus, num?: number): Promise<
|
|
47
|
-
input: string;
|
|
48
|
-
output: string | null;
|
|
49
|
-
progress_details: string | null;
|
|
50
|
-
})[]>;
|
|
72
|
+
peek(status?: JobStatus, num?: number): Promise<Array<JobStorageFormat<Input, Output>>>;
|
|
51
73
|
/**
|
|
52
74
|
* Aborts a job by setting its status to "ABORTING".
|
|
53
75
|
* This method will signal the corresponding AbortController so that
|
|
54
76
|
* the job's execute() method (if it supports an AbortSignal parameter)
|
|
55
77
|
* can clean up and exit.
|
|
56
78
|
*/
|
|
57
|
-
abort(jobId:
|
|
79
|
+
abort(jobId: unknown): Promise<void>;
|
|
58
80
|
/**
|
|
59
81
|
* Retrieves all jobs for a given job run ID.
|
|
60
82
|
* @param job_run_id - The ID of the job run to retrieve
|
|
61
83
|
* @returns An array of jobs
|
|
62
84
|
*/
|
|
63
|
-
getByRunId(job_run_id: string): Promise<
|
|
64
|
-
input: string;
|
|
65
|
-
output: string | null;
|
|
66
|
-
progress_details: string | null;
|
|
67
|
-
})[]>;
|
|
85
|
+
getByRunId(job_run_id: string): Promise<Array<JobStorageFormat<Input, Output>>>;
|
|
68
86
|
/**
|
|
69
87
|
* Retrieves the next available job that is ready to be processed,
|
|
70
88
|
* and updates its status to PROCESSING.
|
|
71
89
|
*
|
|
90
|
+
* @param workerId - Optional worker ID to associate with the job
|
|
72
91
|
* @returns The next job or undefined if no job is available
|
|
73
92
|
*/
|
|
74
|
-
next(): Promise<
|
|
75
|
-
input: string;
|
|
76
|
-
output: string | null;
|
|
77
|
-
progress_details: string | null;
|
|
78
|
-
}) | undefined>;
|
|
93
|
+
next(workerId?: string): Promise<JobStorageFormat<Input, Output> | undefined>;
|
|
79
94
|
/**
|
|
80
95
|
* Retrieves the number of jobs in the queue with a specific status.
|
|
81
96
|
* @param status - The status of the jobs to count
|
|
82
97
|
* @returns The count of jobs with the specified status
|
|
83
98
|
*/
|
|
84
|
-
size(status?: JobStatus): Promise<
|
|
99
|
+
size(status?: JobStatus): Promise<number>;
|
|
85
100
|
/**
|
|
86
101
|
* Marks a job as complete with its output or error.
|
|
87
102
|
* Enhanced error handling:
|
|
@@ -93,11 +108,11 @@ export declare class SqliteQueueStorage<Input, Output> implements IQueueStorage<
|
|
|
93
108
|
complete(job: JobStorageFormat<Input, Output>): Promise<void>;
|
|
94
109
|
deleteAll(): Promise<void>;
|
|
95
110
|
/**
|
|
96
|
-
* Looks up cached output for a
|
|
111
|
+
* Looks up cached output for a given input
|
|
97
112
|
* Uses input fingerprinting for efficient matching
|
|
98
113
|
* @returns The cached output or null if not found
|
|
99
114
|
*/
|
|
100
|
-
outputForInput(input: Input): Promise<
|
|
115
|
+
outputForInput(input: Input): Promise<Output | null>;
|
|
101
116
|
/**
|
|
102
117
|
* Implements the abstract saveProgress method from JobQueue
|
|
103
118
|
*/
|
|
@@ -112,5 +127,46 @@ export declare class SqliteQueueStorage<Input, Output> implements IQueueStorage<
|
|
|
112
127
|
* @param olderThanMs - Delete jobs completed more than this many milliseconds ago
|
|
113
128
|
*/
|
|
114
129
|
deleteJobsByStatusAndAge(status: JobStatus, olderThanMs: number): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Gets all jobs from the queue that match the current prefix values.
|
|
132
|
+
* Used internally for normal polling-based subscriptions (efficient - filters at DB level).
|
|
133
|
+
*
|
|
134
|
+
* @returns An array of jobs
|
|
135
|
+
*/
|
|
136
|
+
private getAllJobs;
|
|
137
|
+
/**
|
|
138
|
+
* Gets all jobs from the queue with a custom prefix filter.
|
|
139
|
+
* Used for subscriptions with custom prefix filters (filters at DB level).
|
|
140
|
+
*
|
|
141
|
+
* @param prefixFilter - The prefix values to filter by (empty object = all jobs)
|
|
142
|
+
* @returns An array of jobs
|
|
143
|
+
*/
|
|
144
|
+
private getAllJobsWithFilter;
|
|
145
|
+
/**
|
|
146
|
+
* Checks if a prefix filter is custom (different from instance's prefixes).
|
|
147
|
+
*/
|
|
148
|
+
private isCustomPrefixFilter;
|
|
149
|
+
/**
|
|
150
|
+
* Gets or creates the shared polling subscription manager for normal subscriptions.
|
|
151
|
+
* This ensures all normal subscriptions share a single polling loop per interval.
|
|
152
|
+
*/
|
|
153
|
+
private getPollingManager;
|
|
154
|
+
/**
|
|
155
|
+
* Creates a dedicated polling subscription for custom prefix filters.
|
|
156
|
+
* This runs separately from the normal polling manager with DB-level filtering.
|
|
157
|
+
*/
|
|
158
|
+
private subscribeWithCustomPrefixFilter;
|
|
159
|
+
/**
|
|
160
|
+
* Subscribes to changes in the queue.
|
|
161
|
+
* Uses polling since SQLite has no native change notification support.
|
|
162
|
+
*
|
|
163
|
+
* Normal subscriptions (no custom prefix filter) share a single polling loop for efficiency.
|
|
164
|
+
* Custom prefix filter subscriptions get their own dedicated polling loop with DB-level filtering.
|
|
165
|
+
*
|
|
166
|
+
* @param callback - Function called when a change occurs
|
|
167
|
+
* @param options - Subscription options including polling interval and prefix filter
|
|
168
|
+
* @returns Unsubscribe function
|
|
169
|
+
*/
|
|
170
|
+
subscribeToChanges(callback: (change: QueueChangePayload<Input, Output>) => void, options?: QueueSubscribeOptions): () => void;
|
|
115
171
|
}
|
|
116
172
|
//# sourceMappingURL=SqliteQueueStorage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteQueueStorage.d.ts","sourceRoot":"","sources":["../../src/queue/SqliteQueueStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"SqliteQueueStorage.d.ts","sourceRoot":"","sources":["../../src/queue/SqliteQueueStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
7
|
-
import { IQueueStorage, JobStatus, JobStorageFormat } from "./IQueueStorage";
|
|
7
|
+
import { IQueueStorage, JobStatus, JobStorageFormat, PrefixColumn, QueueChangePayload, QueueStorageOptions, QueueSubscribeOptions } from "./IQueueStorage";
|
|
8
8
|
export declare const SUPABASE_QUEUE_STORAGE: import("@workglow/util").ServiceToken<IQueueStorage<any, any>>;
|
|
9
9
|
/**
|
|
10
10
|
* Supabase implementation of a job queue.
|
|
@@ -13,7 +13,37 @@ export declare const SUPABASE_QUEUE_STORAGE: import("@workglow/util").ServiceTok
|
|
|
13
13
|
export declare class SupabaseQueueStorage<Input, Output> implements IQueueStorage<Input, Output> {
|
|
14
14
|
protected readonly client: SupabaseClient;
|
|
15
15
|
protected readonly queueName: string;
|
|
16
|
-
|
|
16
|
+
/** The prefix column definitions */
|
|
17
|
+
protected readonly prefixes: readonly PrefixColumn[];
|
|
18
|
+
/** The prefix values for filtering */
|
|
19
|
+
protected readonly prefixValues: Readonly<Record<string, string | number>>;
|
|
20
|
+
/** The table name for the job queue */
|
|
21
|
+
protected readonly tableName: string;
|
|
22
|
+
/** Realtime channel for subscriptions */
|
|
23
|
+
private realtimeChannel;
|
|
24
|
+
/** Shared polling subscription manager (fallback) */
|
|
25
|
+
private pollingManager;
|
|
26
|
+
constructor(client: SupabaseClient, queueName: string, options?: QueueStorageOptions);
|
|
27
|
+
/**
|
|
28
|
+
* Gets the SQL column type for a prefix column (Supabase supports UUID natively)
|
|
29
|
+
*/
|
|
30
|
+
private getPrefixColumnType;
|
|
31
|
+
/**
|
|
32
|
+
* Builds the prefix columns SQL for CREATE TABLE
|
|
33
|
+
*/
|
|
34
|
+
private buildPrefixColumnsSql;
|
|
35
|
+
/**
|
|
36
|
+
* Builds prefix column names for use in queries
|
|
37
|
+
*/
|
|
38
|
+
private getPrefixColumnNames;
|
|
39
|
+
/**
|
|
40
|
+
* Applies prefix filters to a Supabase query builder
|
|
41
|
+
*/
|
|
42
|
+
private applyPrefixFilters;
|
|
43
|
+
/**
|
|
44
|
+
* Gets prefix values as an object for inserts
|
|
45
|
+
*/
|
|
46
|
+
private getPrefixInsertValues;
|
|
17
47
|
setupDatabase(): Promise<void>;
|
|
18
48
|
/**
|
|
19
49
|
* Adds a new job to the queue.
|
|
@@ -26,7 +56,7 @@ export declare class SupabaseQueueStorage<Input, Output> implements IQueueStorag
|
|
|
26
56
|
* @param id - The ID of the job to retrieve
|
|
27
57
|
* @returns The job if found, undefined otherwise
|
|
28
58
|
*/
|
|
29
|
-
get(id:
|
|
59
|
+
get(id: unknown): Promise<JobStorageFormat<Input, Output> | undefined>;
|
|
30
60
|
/**
|
|
31
61
|
* Retrieves a slice of jobs from the queue.
|
|
32
62
|
* @param status - The status to filter by
|
|
@@ -36,15 +66,23 @@ export declare class SupabaseQueueStorage<Input, Output> implements IQueueStorag
|
|
|
36
66
|
peek(status?: JobStatus, num?: number): Promise<JobStorageFormat<Input, Output>[]>;
|
|
37
67
|
/**
|
|
38
68
|
* Retrieves the next available job that is ready to be processed.
|
|
69
|
+
* @param workerId - Optional worker ID to associate with the job
|
|
39
70
|
* @returns The next job or undefined if no job is available
|
|
40
71
|
*/
|
|
41
|
-
next(): Promise<JobStorageFormat<Input, Output> | undefined>;
|
|
72
|
+
next(workerId?: string): Promise<JobStorageFormat<Input, Output> | undefined>;
|
|
42
73
|
/**
|
|
43
74
|
* Retrieves the number of jobs in the queue with a specific status.
|
|
44
75
|
* @param status - The status of the jobs to count
|
|
45
76
|
* @returns The count of jobs with the specified status
|
|
46
77
|
*/
|
|
47
78
|
size(status?: JobStatus): Promise<number>;
|
|
79
|
+
/**
|
|
80
|
+
* Gets all jobs from the queue that match the current prefix values.
|
|
81
|
+
* Used internally for polling-based subscriptions.
|
|
82
|
+
*
|
|
83
|
+
* @returns An array of jobs
|
|
84
|
+
*/
|
|
85
|
+
private getAllJobs;
|
|
48
86
|
/**
|
|
49
87
|
* Marks a job as complete with its output or error.
|
|
50
88
|
* Enhanced error handling:
|
|
@@ -89,5 +127,61 @@ export declare class SupabaseQueueStorage<Input, Output> implements IQueueStorag
|
|
|
89
127
|
* @param olderThanMs - Delete jobs completed more than this many milliseconds ago
|
|
90
128
|
*/
|
|
91
129
|
deleteJobsByStatusAndAge(status: JobStatus, olderThanMs: number): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Checks if a job from a realtime payload matches the specified prefix filter
|
|
132
|
+
* @param job - The job record from the realtime payload
|
|
133
|
+
* @param prefixFilter - The prefix filter to match against (undefined = use instance prefixes, {} = no filter)
|
|
134
|
+
*/
|
|
135
|
+
private matchesPrefixFilter;
|
|
136
|
+
/**
|
|
137
|
+
* Checks if a prefix filter is custom (different from instance's prefixes).
|
|
138
|
+
*/
|
|
139
|
+
private isCustomPrefixFilter;
|
|
140
|
+
/**
|
|
141
|
+
* Gets all jobs from the queue with a custom prefix filter.
|
|
142
|
+
* Used for subscriptions with custom prefix filters (filters at DB level).
|
|
143
|
+
*
|
|
144
|
+
* @param prefixFilter - The prefix values to filter by (empty object = all jobs)
|
|
145
|
+
* @returns A promise that resolves to an array of jobs
|
|
146
|
+
*/
|
|
147
|
+
private getAllJobsWithFilter;
|
|
148
|
+
/**
|
|
149
|
+
* Subscribes to changes in the queue.
|
|
150
|
+
* Uses Supabase realtime by default.
|
|
151
|
+
*
|
|
152
|
+
* @param callback - Function called when a change occurs
|
|
153
|
+
* @param options - Subscription options including prefix filter
|
|
154
|
+
* @returns Unsubscribe function
|
|
155
|
+
*/
|
|
156
|
+
subscribeToChanges(callback: (change: QueueChangePayload<Input, Output>) => void, options?: QueueSubscribeOptions): () => void;
|
|
157
|
+
/**
|
|
158
|
+
* Subscribe using Supabase realtime (protected).
|
|
159
|
+
*
|
|
160
|
+
* @param callback - Function called when a change occurs
|
|
161
|
+
* @param prefixFilter - Optional prefix filter (undefined = use instance prefixes, {} = no filter)
|
|
162
|
+
* @returns Unsubscribe function
|
|
163
|
+
*/
|
|
164
|
+
protected subscribeToChangesWithRealtime(callback: (change: QueueChangePayload<Input, Output>) => void, prefixFilter?: Readonly<Record<string, string | number>>): () => void;
|
|
165
|
+
/**
|
|
166
|
+
* Gets or creates the shared polling subscription manager for normal subscriptions (fallback).
|
|
167
|
+
* This ensures all normal subscriptions share a single polling loop per interval.
|
|
168
|
+
*/
|
|
169
|
+
private getPollingManager;
|
|
170
|
+
/**
|
|
171
|
+
* Creates a dedicated polling subscription for custom prefix filters (fallback).
|
|
172
|
+
* This runs separately from the normal polling manager with DB-level filtering.
|
|
173
|
+
*/
|
|
174
|
+
private subscribeWithCustomPrefixFilterPolling;
|
|
175
|
+
/**
|
|
176
|
+
* Subscribe using polling (protected, available as fallback).
|
|
177
|
+
*
|
|
178
|
+
* Normal subscriptions (no custom prefix filter) share a single polling loop for efficiency.
|
|
179
|
+
* Custom prefix filter subscriptions get their own dedicated polling loop with DB-level filtering.
|
|
180
|
+
*
|
|
181
|
+
* @param callback - Function called when a change occurs
|
|
182
|
+
* @param options - Subscription options including interval and prefix filter
|
|
183
|
+
* @returns Unsubscribe function
|
|
184
|
+
*/
|
|
185
|
+
protected subscribeToChangesWithPolling(callback: (change: QueueChangePayload<Input, Output>) => void, options?: QueueSubscribeOptions): () => void;
|
|
92
186
|
}
|
|
93
187
|
//# sourceMappingURL=SupabaseQueueStorage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseQueueStorage.d.ts","sourceRoot":"","sources":["../../src/queue/SupabaseQueueStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SupabaseQueueStorage.d.ts","sourceRoot":"","sources":["../../src/queue/SupabaseQueueStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,18 @@ export type TabularEventListeners<PrimaryKey, Entity> = {
|
|
|
18
18
|
export type TabularEventName = keyof TabularEventListeners<any, any>;
|
|
19
19
|
export type TabularEventListener<Event extends TabularEventName, PrimaryKey, Entity> = TabularEventListeners<PrimaryKey, Entity>[Event];
|
|
20
20
|
export type TabularEventParameters<Event extends TabularEventName, PrimaryKey, Entity> = EventParameters<TabularEventListeners<PrimaryKey, Entity>, Event>;
|
|
21
|
+
/**
|
|
22
|
+
* Type of change that occurred in the repository
|
|
23
|
+
*/
|
|
24
|
+
export type TabularChangeType = "INSERT" | "UPDATE" | "DELETE";
|
|
25
|
+
/**
|
|
26
|
+
* Payload describing a change to an entity
|
|
27
|
+
*/
|
|
28
|
+
export interface TabularChangePayload<Entity> {
|
|
29
|
+
readonly type: TabularChangeType;
|
|
30
|
+
readonly old?: Entity;
|
|
31
|
+
readonly new?: Entity;
|
|
32
|
+
}
|
|
21
33
|
export type uuid4 = string;
|
|
22
34
|
export type JSONValue = string | number | boolean | null | JSONValue[] | {
|
|
23
35
|
[key: string]: JSONValue;
|
|
@@ -45,6 +57,12 @@ export interface ITabularRepository<Schema extends DataPortSchemaObject, Primary
|
|
|
45
57
|
once<Event extends TabularEventName>(name: Event, fn: TabularEventListener<Event, PrimaryKey, Entity>): void;
|
|
46
58
|
waitOn<Event extends TabularEventName>(name: Event): Promise<TabularEventParameters<Event, PrimaryKey, Entity>>;
|
|
47
59
|
search(key: Partial<Entity>): Promise<Entity[] | undefined>;
|
|
60
|
+
/**
|
|
61
|
+
* Subscribes to changes in the repository (including remote changes).
|
|
62
|
+
* @param callback - Function called when a change occurs
|
|
63
|
+
* @returns Unsubscribe function
|
|
64
|
+
*/
|
|
65
|
+
subscribeToChanges(callback: (change: TabularChangePayload<Entity>) => void): () => void;
|
|
48
66
|
destroy(): void;
|
|
49
67
|
[Symbol.dispose](): void;
|
|
50
68
|
[Symbol.asyncDispose](): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ITabularRepository.d.ts","sourceRoot":"","sources":["../../src/tabular/ITabularRepository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGnF,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,CAAC;AAErF;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,UAAU,EAAE,MAAM,IAAI;IACtD,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,GAAG,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC3D,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,KAAK,IAAI,CAAC;IACvE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrE,MAAM,MAAM,oBAAoB,CAC9B,KAAK,SAAS,gBAAgB,EAC9B,UAAU,EACV,MAAM,IACJ,qBAAqB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;AAErD,MAAM,MAAM,sBAAsB,CAChC,KAAK,SAAS,gBAAgB,EAC9B,UAAU,EACV,MAAM,IACJ,eAAe,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ITabularRepository.d.ts","sourceRoot":"","sources":["../../src/tabular/ITabularRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { DataPortSchemaObject, FromSchema } from "@workglow/util";
|
|
7
|
-
import { ITabularRepository } from "./ITabularRepository";
|
|
7
|
+
import { ITabularRepository, TabularChangePayload } from "./ITabularRepository";
|
|
8
8
|
import { TabularRepository } from "./TabularRepository";
|
|
9
9
|
export declare const MEMORY_TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<ITabularRepository<any, any, any, any, any>>;
|
|
10
10
|
/**
|
|
@@ -85,6 +85,14 @@ export declare class InMemoryTabularRepository<Schema extends DataPortSchemaObje
|
|
|
85
85
|
* @param operator - The operator to use for comparison
|
|
86
86
|
*/
|
|
87
87
|
deleteSearch(column: keyof Entity, value: Entity[keyof Entity], operator?: "=" | "<" | "<=" | ">" | ">="): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Subscribes to changes in the repository.
|
|
90
|
+
* Since InMemory is both client and server, changes are detected via local events.
|
|
91
|
+
*
|
|
92
|
+
* @param callback - Function called when a change occurs
|
|
93
|
+
* @returns Unsubscribe function
|
|
94
|
+
*/
|
|
95
|
+
subscribeToChanges(callback: (change: TabularChangePayload<Entity>) => void): () => void;
|
|
88
96
|
/**
|
|
89
97
|
* Destroys the repository and frees up resources.
|
|
90
98
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryTabularRepository.d.ts","sourceRoot":"","sources":["../../src/tabular/InMemoryTabularRepository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"InMemoryTabularRepository.d.ts","sourceRoot":"","sources":["../../src/tabular/InMemoryTabularRepository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,oBAAoB,EACpB,UAAU,EAEX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,eAAO,MAAM,yBAAyB,oFAEC,CAAC;AAExC;;;;;;GAMG;AACH,qBAAa,yBAAyB,CACpC,MAAM,SAAS,oBAAoB,EACnC,eAAe,SAAS,aAAa,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,EAEjE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,EAC3B,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,EACjE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,CAC5D,SAAQ,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;IAC7E,oEAAoE;IACpE,MAAM,sBAA6B;IAEnC;;;;;;OAMG;gBAED,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,OAAO,GAAE,KAAK,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,MAAM,CAAC,CAAM;IAKzD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;;;;OAKG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQzC;;;;;OAKG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIlD;;;;;OAKG;IACG,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAOvD;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;IAiCjE;;;;OAIG;IACG,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhC;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;IAK7C;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B;;;;;OAKG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,MAAM,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,MAAM,CAAC,EAC3B,QAAQ,GAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAU,GAC5C,OAAO,CAAC,IAAI,CAAC;IA4BhB;;;;;;OAMG;IACH,kBAAkB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAyBxF;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
7
7
|
import { DataPortSchemaObject, FromSchema, JsonSchema } from "@workglow/util";
|
|
8
8
|
import { BaseSqlTabularRepository } from "./BaseSqlTabularRepository";
|
|
9
|
-
import { ITabularRepository, ValueOptionType } from "./ITabularRepository";
|
|
9
|
+
import { ITabularRepository, TabularChangePayload, ValueOptionType } from "./ITabularRepository";
|
|
10
10
|
export declare const SUPABASE_TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<ITabularRepository<any, any, any, any, any>>;
|
|
11
11
|
/**
|
|
12
12
|
* A Supabase-based tabular repository implementation that extends BaseSqlTabularRepository.
|
|
@@ -18,6 +18,7 @@ export declare const SUPABASE_TABULAR_REPOSITORY: import("@workglow/util").Servi
|
|
|
18
18
|
*/
|
|
19
19
|
export declare class SupabaseTabularRepository<Schema extends DataPortSchemaObject, PrimaryKeyNames extends ReadonlyArray<keyof Schema["properties"]>, Entity = FromSchema<Schema>, PrimaryKey = Pick<Entity, PrimaryKeyNames[number] & keyof Entity>, Value = Omit<Entity, PrimaryKeyNames[number] & keyof Entity>> extends BaseSqlTabularRepository<Schema, PrimaryKeyNames, Entity, PrimaryKey, Value> {
|
|
20
20
|
private client;
|
|
21
|
+
private realtimeChannel;
|
|
21
22
|
/**
|
|
22
23
|
* Creates a new SupabaseTabularRepository instance.
|
|
23
24
|
*
|
|
@@ -128,5 +129,24 @@ export declare class SupabaseTabularRepository<Schema extends DataPortSchemaObje
|
|
|
128
129
|
* @param operator - The operator to use for comparison
|
|
129
130
|
*/
|
|
130
131
|
deleteSearch(column: keyof Entity, value: Entity[keyof Entity], operator?: "=" | "<" | "<=" | ">" | ">="): Promise<void>;
|
|
132
|
+
/**
|
|
133
|
+
* Converts a row from Supabase realtime payload to an Entity with proper type conversions.
|
|
134
|
+
*
|
|
135
|
+
* @param row - The raw row data from Supabase realtime
|
|
136
|
+
* @returns The converted entity
|
|
137
|
+
*/
|
|
138
|
+
private convertRealtimeRow;
|
|
139
|
+
/**
|
|
140
|
+
* Subscribes to changes in the repository using Supabase realtime.
|
|
141
|
+
* Receives notifications for INSERT, UPDATE, and DELETE operations from any source.
|
|
142
|
+
*
|
|
143
|
+
* @param callback - Function called when a change occurs
|
|
144
|
+
* @returns Unsubscribe function
|
|
145
|
+
*/
|
|
146
|
+
subscribeToChanges(callback: (change: TabularChangePayload<Entity>) => void): () => void;
|
|
147
|
+
/**
|
|
148
|
+
* Destroys the repository and frees up resources.
|
|
149
|
+
*/
|
|
150
|
+
destroy(): void;
|
|
131
151
|
}
|
|
132
152
|
//# sourceMappingURL=SupabaseTabularRepository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseTabularRepository.d.ts","sourceRoot":"","sources":["../../src/tabular/SupabaseTabularRepository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SupabaseTabularRepository.d.ts","sourceRoot":"","sources":["../../src/tabular/SupabaseTabularRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { DataPortSchemaObject, EventEmitter, FromSchema } from "@workglow/util";
|
|
7
|
-
import { ITabularRepository, TabularEventListener, TabularEventListeners, TabularEventName, TabularEventParameters, ValueOptionType } from "./ITabularRepository";
|
|
7
|
+
import { ITabularRepository, TabularChangePayload, TabularEventListener, TabularEventListeners, TabularEventName, TabularEventParameters, ValueOptionType } from "./ITabularRepository";
|
|
8
8
|
export declare const TABULAR_REPOSITORY: import("@workglow/util").ServiceToken<ITabularRepository<any, any, any, any, any>>;
|
|
9
9
|
/**
|
|
10
10
|
* Abstract base class for tabular storage repositories.
|
|
@@ -81,6 +81,15 @@ export declare abstract class TabularRepository<Schema extends DataPortSchemaObj
|
|
|
81
81
|
* @returns Promise resolving to an array of combined row objects or undefined if not found
|
|
82
82
|
*/
|
|
83
83
|
abstract search(key: Partial<Entity>): Promise<Entity[] | undefined>;
|
|
84
|
+
/**
|
|
85
|
+
* Subscribes to changes in the repository (including remote changes).
|
|
86
|
+
* Default implementation throws an error - override in subclasses that support subscriptions.
|
|
87
|
+
*
|
|
88
|
+
* @param callback - Function called when a change occurs
|
|
89
|
+
* @returns Unsubscribe function
|
|
90
|
+
* @throws Error if not implemented by the concrete repository
|
|
91
|
+
*/
|
|
92
|
+
subscribeToChanges(_callback: (change: TabularChangePayload<Entity>) => void): () => void;
|
|
84
93
|
protected primaryKeyColumns(): Array<keyof PrimaryKey>;
|
|
85
94
|
protected valueColumns(): Array<keyof Value>;
|
|
86
95
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabularRepository.d.ts","sourceRoot":"","sources":["../../src/tabular/TabularRepository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"TabularRepository.d.ts","sourceRoot":"","sources":["../../src/tabular/TabularRepository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,oBAAoB,EACpB,YAAY,EACZ,UAAU,EAEX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,kBAAkB,oFAE9B,CAAC;AAEF;;;;;;;;GAQG;AACH,8BAAsB,iBAAiB,CACrC,MAAM,SAAS,oBAAoB,EACnC,eAAe,SAAS,aAAa,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,EAEjE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,EAC3B,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,EACjE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,CAC5D,YAAW,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;IAgB/E,SAAS,CAAC,MAAM,EAAE,MAAM;IACxB,SAAS,CAAC,eAAe,EAAE,eAAe;IAhB5C,0CAA0C;IAC1C,SAAS,CAAC,MAAM,0DAAiE;IAEjF,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC;IACzC,SAAS,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IACjD,SAAS,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAE5C;;;;;;OAMG;gBAES,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAC1C,OAAO,GAAE,KAAK,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,MAAM,CAAC,CAAM;IA4EzD,SAAS,CAAC,kBAAkB,CAC1B,UAAU,EAAE,KAAK,CAAC,MAAM,MAAM,CAAC,EAC/B,aAAa,EAAE,KAAK,CAAC,MAAM,MAAM,CAAC,EAAE,GACnC,KAAK,CAAC,MAAM,MAAM,CAAC,EAAE;IAkCxB;;;;OAIG;IACH,EAAE,CAAC,KAAK,SAAS,gBAAgB,EAC/B,IAAI,EAAE,KAAK,EACX,EAAE,EAAE,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;IAKrD;;;;OAIG;IACH,GAAG,CAAC,KAAK,SAAS,gBAAgB,EAChC,IAAI,EAAE,KAAK,EACX,EAAE,EAAE,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;IAKrD;;;;OAIG;IACH,IAAI,CAAC,KAAK,SAAS,gBAAgB,EACjC,IAAI,EAAE,KAAK,EACX,EAAE,EAAE,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;IAKrD;;;;OAIG;IACH,IAAI,CAAC,KAAK,SAAS,gBAAgB,EACjC,IAAI,EAAE,KAAK,EACX,GAAG,IAAI,EAAE,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;IAK5D;;;;OAIG;IACH,MAAM,CAAC,KAAK,SAAS,gBAAgB,EACnC,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAI7D;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IACrD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACxD,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IACnC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CACnB,MAAM,EAAE,MAAM,MAAM,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,MAAM,CAAC,EAC3B,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GACtC,OAAO,CAAC,IAAI,CAAC;IAEhB;;;;;;OAMG;aACa,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;IAE3E;;;;;;;OAOG;IACI,kBAAkB,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAOhG,SAAS,CAAC,iBAAiB,IAAI,KAAK,CAAC,MAAM,UAAU,CAAC;IAQtD,SAAS,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;IAQ5C;;;;;OAKG;IACH,SAAS,CAAC,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,UAAU,CAAA;KAAE;IAuBtF;;;;;OAKG;cACa,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlE;;;;;OAKG;IACH,SAAS,CAAC,2BAA2B,CAAC,GAAG,EAAE,UAAU,GAAG,eAAe,EAAE;IAazE;;;;OAIG;IACI,qBAAqB,CAC1B,kBAAkB,EAAE,KAAK,CAAC,MAAM,MAAM,CAAC,GACtC,KAAK,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS;IAqClC;;OAEG;IACH,OAAO,IAAI,IAAI;IAIT,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAGzB"}
|