@channel.io/app-sdk-server 0.14.0 → 0.15.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/dist/__tests__/datasource-runners.test.d.ts +2 -0
- package/dist/__tests__/datasource-runners.test.d.ts.map +1 -0
- package/dist/__tests__/datasource-runners.test.js +244 -0
- package/dist/__tests__/datasource-runners.test.js.map +1 -0
- package/dist/datasource/arrow.d.ts +18 -1
- package/dist/datasource/arrow.d.ts.map +1 -1
- package/dist/datasource/arrow.js +236 -12
- package/dist/datasource/arrow.js.map +1 -1
- package/dist/datasource/bigquery.d.ts +97 -0
- package/dist/datasource/bigquery.d.ts.map +1 -0
- package/dist/datasource/bigquery.js +297 -0
- package/dist/datasource/bigquery.js.map +1 -0
- package/dist/datasource/grpc.d.ts.map +1 -1
- package/dist/datasource/grpc.js +7 -1
- package/dist/datasource/grpc.js.map +1 -1
- package/dist/datasource/index.d.ts +3 -0
- package/dist/datasource/index.d.ts.map +1 -1
- package/dist/datasource/index.js +3 -0
- package/dist/datasource/index.js.map +1 -1
- package/dist/datasource/policy.d.ts +16 -0
- package/dist/datasource/policy.d.ts.map +1 -0
- package/dist/datasource/policy.js +112 -0
- package/dist/datasource/policy.js.map +1 -0
- package/dist/datasource/postgres.d.ts +32 -0
- package/dist/datasource/postgres.d.ts.map +1 -0
- package/dist/datasource/postgres.js +234 -0
- package/dist/datasource/postgres.js.map +1 -0
- package/dist/datasource/types.d.ts +17 -0
- package/dist/datasource/types.d.ts.map +1 -1
- package/dist/datasource/types.js +14 -0
- package/dist/datasource/types.js.map +1 -1
- package/package.json +26 -3
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { DataSourceTableConfig } from "./policy.js";
|
|
2
|
+
import { type DataSourceQueryExecutor, type ExecuteQueryRequest, type QueryChunkSink } from "./types.js";
|
|
3
|
+
export interface PostgresPoolLike {
|
|
4
|
+
connect(): Promise<PostgresClientLike>;
|
|
5
|
+
end?(): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
export interface PostgresClientLike {
|
|
8
|
+
query(query: unknown, values?: unknown[]): unknown;
|
|
9
|
+
release(error?: unknown): void;
|
|
10
|
+
}
|
|
11
|
+
export interface PostgresDataSourceConfig {
|
|
12
|
+
sources: readonly PostgresDataSourceSourceConfig[];
|
|
13
|
+
defaultBatchSize?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface PostgresDataSourceSourceConfig {
|
|
16
|
+
sourceId: string;
|
|
17
|
+
pool?: PostgresPoolLike;
|
|
18
|
+
connectionString?: string;
|
|
19
|
+
connectionStringEnv?: string;
|
|
20
|
+
tables?: readonly DataSourceTableConfig[];
|
|
21
|
+
batchSize?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare function createPostgresDataSourceExecutor(config: PostgresDataSourceConfig): PostgresDataSourceExecutor;
|
|
24
|
+
export declare class PostgresDataSourceExecutor implements DataSourceQueryExecutor {
|
|
25
|
+
private readonly sources;
|
|
26
|
+
private readonly ownedPools;
|
|
27
|
+
constructor(config: PostgresDataSourceConfig);
|
|
28
|
+
executeQuery(request: ExecuteQueryRequest, sink: QueryChunkSink): Promise<void>;
|
|
29
|
+
close(): Promise<void>;
|
|
30
|
+
private poolForSource;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=postgres.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/datasource/postgres.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,gBAAgB;IAC/B,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACnD,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,wBAAwB,GAC/B,0BAA0B,CAE5B;AAED,qBAAa,0BAA2B,YAAW,uBAAuB;IACxE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqD;IAC7E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;gBAEtD,MAAM,EAAE,wBAAwB;IAatC,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA4E/E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAQd,aAAa;CAsB5B"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { writeRowsAsArrowIpcBatch } from "./arrow.js";
|
|
2
|
+
import { DataSourceByteLimitTracker, queryWithRowLimit, validateReadOnlyQuery } from "./policy.js";
|
|
3
|
+
import { DataSourceErrorCode, DataSourceExecutionError, } from "./types.js";
|
|
4
|
+
const defaultBatchSize = 1024;
|
|
5
|
+
export function createPostgresDataSourceExecutor(config) {
|
|
6
|
+
return new PostgresDataSourceExecutor(config);
|
|
7
|
+
}
|
|
8
|
+
export class PostgresDataSourceExecutor {
|
|
9
|
+
sources = new Map();
|
|
10
|
+
ownedPools = new Map();
|
|
11
|
+
constructor(config) {
|
|
12
|
+
if (config.sources.length === 0) {
|
|
13
|
+
throw new Error("at least one PostgreSQL datasource source is required");
|
|
14
|
+
}
|
|
15
|
+
for (const source of config.sources) {
|
|
16
|
+
const normalized = normalizeSource(source, config.defaultBatchSize);
|
|
17
|
+
if (this.sources.has(normalized.sourceId)) {
|
|
18
|
+
throw new Error(`duplicate datasource source_id: ${normalized.sourceId}`);
|
|
19
|
+
}
|
|
20
|
+
this.sources.set(normalized.sourceId, normalized);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async executeQuery(request, sink) {
|
|
24
|
+
const req = normalizeRequest(request);
|
|
25
|
+
const source = this.sources.get(req.sourceId);
|
|
26
|
+
if (!source) {
|
|
27
|
+
throw new DataSourceExecutionError({
|
|
28
|
+
code: DataSourceErrorCode.SourceNotFound,
|
|
29
|
+
message: `unknown datasource source_id: ${req.sourceId}`,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
validateReadOnlyQuery(req.query, [], source.tables ?? []);
|
|
33
|
+
const pool = await this.poolForSource(source);
|
|
34
|
+
const client = await pool.connect();
|
|
35
|
+
let queryStream;
|
|
36
|
+
let committed = false;
|
|
37
|
+
try {
|
|
38
|
+
await promiseQuery(client, "BEGIN READ ONLY");
|
|
39
|
+
if ((req.timeoutMs ?? 0) > 0) {
|
|
40
|
+
await promiseQuery(client, `SET LOCAL statement_timeout = ${Math.trunc(req.timeoutMs ?? 0)}`);
|
|
41
|
+
}
|
|
42
|
+
const QueryStream = await loadQueryStream();
|
|
43
|
+
queryStream = new QueryStream(queryWithRowLimit(req.query, req.rowLimit), [], {
|
|
44
|
+
batchSize: source.batchSize,
|
|
45
|
+
highWaterMark: source.batchSize,
|
|
46
|
+
rowMode: "array",
|
|
47
|
+
});
|
|
48
|
+
const stream = client.query(queryStream);
|
|
49
|
+
const startedAt = Date.now();
|
|
50
|
+
const byteLimit = new DataSourceByteLimitTracker(req.byteLimit);
|
|
51
|
+
const batch = [];
|
|
52
|
+
let rowCount = 0;
|
|
53
|
+
let schemaSent = false;
|
|
54
|
+
for await (const row of stream) {
|
|
55
|
+
batch.push(row);
|
|
56
|
+
rowCount++;
|
|
57
|
+
if (batch.length >= source.batchSize) {
|
|
58
|
+
schemaSent = flushBatch(sink, queryStream, batch, schemaSent, byteLimit);
|
|
59
|
+
batch.length = 0;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (batch.length > 0) {
|
|
63
|
+
schemaSent = flushBatch(sink, queryStream, batch, schemaSent, byteLimit);
|
|
64
|
+
}
|
|
65
|
+
if (!schemaSent) {
|
|
66
|
+
const fields = fieldsFromQueryStream(queryStream);
|
|
67
|
+
if (fields.length > 0) {
|
|
68
|
+
writeRowsAsArrowIpcBatch(sink, fields, [], {
|
|
69
|
+
sendSchema: true,
|
|
70
|
+
byteLimit,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
await promiseQuery(client, "COMMIT");
|
|
75
|
+
committed = true;
|
|
76
|
+
sink.send({
|
|
77
|
+
result: { rowCount, limitExceeded: false, executionMs: Date.now() - startedAt },
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
queryStream?.destroy?.(error);
|
|
82
|
+
if (!committed) {
|
|
83
|
+
await rollback(client);
|
|
84
|
+
}
|
|
85
|
+
throw toPostgresDataSourceError(error);
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
client.release();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async close() {
|
|
92
|
+
const pools = [...this.ownedPools.values()];
|
|
93
|
+
this.ownedPools.clear();
|
|
94
|
+
for (const pool of pools) {
|
|
95
|
+
await pool.end?.();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async poolForSource(source) {
|
|
99
|
+
if (source.pool) {
|
|
100
|
+
return source.pool;
|
|
101
|
+
}
|
|
102
|
+
const existing = this.ownedPools.get(source.sourceId);
|
|
103
|
+
if (existing) {
|
|
104
|
+
return existing;
|
|
105
|
+
}
|
|
106
|
+
const connectionString = source.connectionString ??
|
|
107
|
+
(source.connectionStringEnv ? process.env[source.connectionStringEnv] : undefined);
|
|
108
|
+
if (!connectionString?.trim()) {
|
|
109
|
+
throw new DataSourceExecutionError({
|
|
110
|
+
code: DataSourceErrorCode.Unavailable,
|
|
111
|
+
message: `PostgreSQL connection string is required for source_id ${source.sourceId}`,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
const pg = await loadPg();
|
|
115
|
+
const pool = new pg.Pool({ connectionString });
|
|
116
|
+
this.ownedPools.set(source.sourceId, pool);
|
|
117
|
+
return pool;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function flushBatch(sink, queryStream, rows, schemaAlreadySent, byteLimit) {
|
|
121
|
+
const fields = fieldsFromQueryStream(queryStream);
|
|
122
|
+
if (fields.length === 0) {
|
|
123
|
+
throw new Error("PostgreSQL query fields are missing");
|
|
124
|
+
}
|
|
125
|
+
const result = writeRowsAsArrowIpcBatch(sink, fields, rows, {
|
|
126
|
+
sendSchema: !schemaAlreadySent,
|
|
127
|
+
byteLimit,
|
|
128
|
+
});
|
|
129
|
+
return schemaAlreadySent || result.schemaSent;
|
|
130
|
+
}
|
|
131
|
+
function normalizeSource(source, defaultBatchSize) {
|
|
132
|
+
const sourceId = source.sourceId.trim();
|
|
133
|
+
if (!sourceId) {
|
|
134
|
+
throw new Error("source_id is required");
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
...source,
|
|
138
|
+
sourceId,
|
|
139
|
+
batchSize: positiveInt(source.batchSize ?? defaultBatchSize, defaultBatchSize),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function positiveInt(value, fallback = defaultBatchSize) {
|
|
143
|
+
if (value === undefined || value <= 0) {
|
|
144
|
+
return fallback > 0 ? fallback : defaultBatchSize;
|
|
145
|
+
}
|
|
146
|
+
return Math.trunc(value);
|
|
147
|
+
}
|
|
148
|
+
function normalizeRequest(request) {
|
|
149
|
+
return {
|
|
150
|
+
sourceId: request.sourceId?.trim() ?? "",
|
|
151
|
+
query: request.query?.trim() ?? "",
|
|
152
|
+
rowLimit: request.rowLimit,
|
|
153
|
+
byteLimit: request.byteLimit,
|
|
154
|
+
timeoutMs: request.timeoutMs,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
function fieldsFromQueryStream(queryStream) {
|
|
158
|
+
const fields = queryStream._result?.fields ?? [];
|
|
159
|
+
return fields.map((field) => ({
|
|
160
|
+
name: field.name,
|
|
161
|
+
dataTypeID: field.dataTypeID,
|
|
162
|
+
nullable: true,
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
async function promiseQuery(client, query) {
|
|
166
|
+
await client.query(query);
|
|
167
|
+
}
|
|
168
|
+
async function rollback(client) {
|
|
169
|
+
try {
|
|
170
|
+
await promiseQuery(client, "ROLLBACK");
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Preserve the original query failure.
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function toPostgresDataSourceError(error) {
|
|
177
|
+
if (error instanceof DataSourceExecutionError) {
|
|
178
|
+
return error;
|
|
179
|
+
}
|
|
180
|
+
if (error instanceof Error) {
|
|
181
|
+
const upstream = {
|
|
182
|
+
engine: "postgresql",
|
|
183
|
+
message: error.message,
|
|
184
|
+
};
|
|
185
|
+
const code = errorCode(error);
|
|
186
|
+
if (code) {
|
|
187
|
+
upstream.code = code;
|
|
188
|
+
}
|
|
189
|
+
return new DataSourceExecutionError({
|
|
190
|
+
code: DataSourceErrorCode.ExternalError,
|
|
191
|
+
message: "PostgreSQL datasource query failed",
|
|
192
|
+
upstream,
|
|
193
|
+
cause: error,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
return error;
|
|
197
|
+
}
|
|
198
|
+
function errorCode(error) {
|
|
199
|
+
const code = error.code;
|
|
200
|
+
return typeof code === "string" ? code : undefined;
|
|
201
|
+
}
|
|
202
|
+
async function loadPg() {
|
|
203
|
+
try {
|
|
204
|
+
return (await importOptionalModule("pg"));
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
throw new DataSourceExecutionError({
|
|
208
|
+
code: DataSourceErrorCode.Unavailable,
|
|
209
|
+
message: `pg is required for PostgreSQL datasource execution: ${errorMessage(error)}`,
|
|
210
|
+
cause: error,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
async function loadQueryStream() {
|
|
215
|
+
try {
|
|
216
|
+
const mod = (await importOptionalModule("pg-query-stream"));
|
|
217
|
+
return mod.default;
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
throw new DataSourceExecutionError({
|
|
221
|
+
code: DataSourceErrorCode.Unavailable,
|
|
222
|
+
message: `pg-query-stream is required for PostgreSQL datasource streaming: ${errorMessage(error)}`,
|
|
223
|
+
cause: error,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
async function importOptionalModule(specifier) {
|
|
228
|
+
const mod = await import(specifier);
|
|
229
|
+
return mod;
|
|
230
|
+
}
|
|
231
|
+
function errorMessage(error) {
|
|
232
|
+
return error instanceof Error ? error.message : String(error);
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=postgres.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/datasource/postgres.ts"],"names":[],"mappings":"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"}
|
|
@@ -96,6 +96,19 @@ export interface DataSourceError {
|
|
|
96
96
|
retryable?: boolean;
|
|
97
97
|
upstream?: UpstreamError;
|
|
98
98
|
}
|
|
99
|
+
export interface DataSourceExecutionErrorOptions {
|
|
100
|
+
code: DataSourceErrorCode;
|
|
101
|
+
message: string;
|
|
102
|
+
retryable?: boolean;
|
|
103
|
+
upstream?: UpstreamError;
|
|
104
|
+
cause?: unknown;
|
|
105
|
+
}
|
|
106
|
+
export declare class DataSourceExecutionError extends Error {
|
|
107
|
+
readonly code: DataSourceErrorCode;
|
|
108
|
+
readonly retryable: boolean;
|
|
109
|
+
readonly upstream?: UpstreamError;
|
|
110
|
+
constructor(options: DataSourceExecutionErrorOptions);
|
|
111
|
+
}
|
|
99
112
|
export interface QueryChunk {
|
|
100
113
|
arrow?: ArrowIpcMessage;
|
|
101
114
|
result?: QueryResult;
|
|
@@ -105,6 +118,10 @@ export interface QueryChunkSink {
|
|
|
105
118
|
send(chunk: QueryChunk): void;
|
|
106
119
|
}
|
|
107
120
|
export type ExecuteQueryHandler = (request: ExecuteQueryRequest, sink: QueryChunkSink) => void | Promise<void>;
|
|
121
|
+
export interface DataSourceQueryExecutor {
|
|
122
|
+
executeQuery(request: ExecuteQueryRequest, sink: QueryChunkSink): Promise<void>;
|
|
123
|
+
close?(): Promise<void>;
|
|
124
|
+
}
|
|
108
125
|
export interface DataSourceServiceHandlers {
|
|
109
126
|
listTables?: (request: ListTablesRequest) => ListTablesResponse | Promise<ListTablesResponse>;
|
|
110
127
|
describeTable?: (request: DescribeTableRequest) => TableDefinition | Promise<TableDefinition>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/datasource/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/datasource/types.ts"],"names":[],"mappings":"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"}
|
package/dist/datasource/types.js
CHANGED
|
@@ -17,4 +17,18 @@ export const DataSourceErrorCode = {
|
|
|
17
17
|
InvalidArgument: 15,
|
|
18
18
|
ExternalError: 16,
|
|
19
19
|
};
|
|
20
|
+
export class DataSourceExecutionError extends Error {
|
|
21
|
+
code;
|
|
22
|
+
retryable;
|
|
23
|
+
upstream;
|
|
24
|
+
constructor(options) {
|
|
25
|
+
super(options.message, { cause: options.cause });
|
|
26
|
+
this.name = "DataSourceExecutionError";
|
|
27
|
+
this.code = options.code;
|
|
28
|
+
this.retryable = options.retryable ?? false;
|
|
29
|
+
if (options.upstream !== undefined) {
|
|
30
|
+
this.upstream = options.upstream;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
20
34
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/datasource/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;IACd,eAAe,EAAE,CAAC;IAClB,gBAAgB,EAAE,CAAC;IACnB,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,CAAC;IACd,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC;IACV,kBAAkB,EAAE,CAAC;IACrB,QAAQ,EAAE,EAAE;IACZ,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,EAAE;IAClB,SAAS,EAAE,EAAE;IACb,iBAAiB,EAAE,EAAE;IACrB,eAAe,EAAE,EAAE;IACnB,aAAa,EAAE,EAAE;CACT,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/datasource/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;IACd,eAAe,EAAE,CAAC;IAClB,gBAAgB,EAAE,CAAC;IACnB,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,CAAC;IACd,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC;IACV,kBAAkB,EAAE,CAAC;IACrB,QAAQ,EAAE,EAAE;IACZ,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,EAAE;IAClB,SAAS,EAAE,EAAE;IACb,iBAAiB,EAAE,EAAE;IACrB,eAAe,EAAE,EAAE;IACnB,aAAa,EAAE,EAAE;CACT,CAAC;AAwGX,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,IAAI,CAAsB;IAC1B,SAAS,CAAU;IACnB,QAAQ,CAAiB;IAElC,YAAY,OAAwC;QAClD,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACnC,CAAC;IACH,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@channel.io/app-sdk-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "NestJS server SDK for Channel.io apps",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,23 +22,42 @@
|
|
|
22
22
|
],
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@grpc/grpc-js": "^1.14.4",
|
|
25
|
-
"apache-arrow": "^21.1.0",
|
|
26
25
|
"protobufjs": "^8.6.5",
|
|
27
26
|
"zod": "^3.24.1",
|
|
28
27
|
"zod-to-json-schema": "^3.24.1",
|
|
29
|
-
"@channel.io/app-sdk-core": "0.
|
|
28
|
+
"@channel.io/app-sdk-core": "0.15.0"
|
|
30
29
|
},
|
|
31
30
|
"peerDependencies": {
|
|
31
|
+
"@google-cloud/bigquery": "^8.3.1",
|
|
32
|
+
"@google-cloud/bigquery-storage": "^5.1.2",
|
|
32
33
|
"@nestjs/common": ">=10.0.0",
|
|
33
34
|
"@nestjs/core": ">=10.0.0",
|
|
35
|
+
"apache-arrow": "^21.1.0",
|
|
36
|
+
"pg": "^8.22.0",
|
|
37
|
+
"pg-query-stream": "^4.16.0",
|
|
34
38
|
"reflect-metadata": ">=0.1.0"
|
|
35
39
|
},
|
|
36
40
|
"peerDependenciesMeta": {
|
|
41
|
+
"@google-cloud/bigquery": {
|
|
42
|
+
"optional": true
|
|
43
|
+
},
|
|
44
|
+
"@google-cloud/bigquery-storage": {
|
|
45
|
+
"optional": true
|
|
46
|
+
},
|
|
37
47
|
"@nestjs/common": {
|
|
38
48
|
"optional": false
|
|
39
49
|
},
|
|
40
50
|
"@nestjs/core": {
|
|
41
51
|
"optional": false
|
|
52
|
+
},
|
|
53
|
+
"apache-arrow": {
|
|
54
|
+
"optional": true
|
|
55
|
+
},
|
|
56
|
+
"pg": {
|
|
57
|
+
"optional": true
|
|
58
|
+
},
|
|
59
|
+
"pg-query-stream": {
|
|
60
|
+
"optional": true
|
|
42
61
|
}
|
|
43
62
|
},
|
|
44
63
|
"devDependencies": {
|
|
@@ -47,6 +66,10 @@
|
|
|
47
66
|
"@nestjs/platform-express": "^10.4.15",
|
|
48
67
|
"@nestjs/testing": "^10.4.15",
|
|
49
68
|
"@types/express": "^5.0.6",
|
|
69
|
+
"@types/pg": "^8.20.0",
|
|
70
|
+
"apache-arrow": "^21.1.0",
|
|
71
|
+
"pg": "^8.22.0",
|
|
72
|
+
"pg-query-stream": "^4.16.0",
|
|
50
73
|
"reflect-metadata": "^0.2.2",
|
|
51
74
|
"rxjs": "^7.8.1",
|
|
52
75
|
"typescript": "^5.7.2",
|