@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.
@@ -0,0 +1,97 @@
1
+ import type { DataSourceTableConfig } from "./policy.js";
2
+ import { type DataSourceQueryExecutor, type ExecuteQueryRequest, type QueryChunkSink } from "./types.js";
3
+ export interface BigQueryDataSourceConfig {
4
+ projectId: string;
5
+ credentialsJson?: string;
6
+ credentialsJsonEnv?: string;
7
+ credentialsEnvVars?: readonly string[];
8
+ keyFilename?: string;
9
+ clientOptions?: Record<string, unknown>;
10
+ bigQueryClient?: BigQueryClientLike;
11
+ readClient?: BigQueryReadClientLike;
12
+ sources: readonly BigQueryDataSourceSourceConfig[];
13
+ }
14
+ export interface BigQueryDataSourceSourceConfig {
15
+ sourceId: string;
16
+ projectId?: string;
17
+ datasetId: string;
18
+ location?: string;
19
+ tables?: readonly DataSourceTableConfig[];
20
+ maxStreamCount?: number;
21
+ maximumBytesBilled?: string | number | bigint;
22
+ }
23
+ export declare function createBigQueryDataSourceExecutor(config: BigQueryDataSourceConfig): BigQueryDataSourceExecutor;
24
+ export declare class BigQueryDataSourceExecutor implements DataSourceQueryExecutor {
25
+ private readonly config;
26
+ private readonly sources;
27
+ private bigQueryClient?;
28
+ private readClient?;
29
+ constructor(config: BigQueryDataSourceConfig);
30
+ executeQuery(request: ExecuteQueryRequest, sink: QueryChunkSink): Promise<void>;
31
+ close(): Promise<void>;
32
+ private ensureClients;
33
+ }
34
+ export interface BigQueryClientLike {
35
+ createQueryJob(options: BigQueryQueryJobOptions): Promise<[BigQueryJobLike]>;
36
+ }
37
+ export interface BigQueryJobLike {
38
+ getQueryResults(options: Record<string, unknown>): Promise<unknown>;
39
+ getMetadata(): Promise<[BigQueryJobMetadata]>;
40
+ }
41
+ export interface BigQueryReadClientLike {
42
+ createReadSession(request: BigQueryCreateReadSessionRequest): Promise<[BigQueryReadSession]>;
43
+ readRows(request: {
44
+ readStream: string;
45
+ }): AsyncIterable<BigQueryReadRowsResponse>;
46
+ close?(): Promise<void>;
47
+ }
48
+ export interface BigQueryQueryJobOptions {
49
+ query: string;
50
+ useLegacySql: boolean;
51
+ defaultDataset: {
52
+ projectId: string;
53
+ datasetId: string;
54
+ };
55
+ location?: string;
56
+ jobTimeoutMs?: number;
57
+ maximumBytesBilled?: string;
58
+ labels?: Record<string, string>;
59
+ }
60
+ export interface BigQueryJobMetadata {
61
+ configuration?: {
62
+ query?: {
63
+ destinationTable?: Partial<BigQueryTableRef>;
64
+ };
65
+ };
66
+ }
67
+ export interface BigQueryTableRef {
68
+ projectId: string;
69
+ datasetId: string;
70
+ tableId: string;
71
+ }
72
+ export interface BigQueryCreateReadSessionRequest {
73
+ parent: string;
74
+ readSession: {
75
+ table: string;
76
+ dataFormat: "ARROW";
77
+ };
78
+ maxStreamCount: number;
79
+ }
80
+ export interface BigQueryReadSession {
81
+ arrowSchema?: {
82
+ serializedSchema?: unknown;
83
+ } | null;
84
+ streams?: {
85
+ name?: string | null;
86
+ }[] | null;
87
+ }
88
+ export interface BigQueryReadRowsResponse {
89
+ arrowSchema?: {
90
+ serializedSchema?: unknown;
91
+ } | null;
92
+ arrowRecordBatch?: {
93
+ serializedRecordBatch?: unknown;
94
+ } | null;
95
+ rowCount?: unknown;
96
+ }
97
+ //# sourceMappingURL=bigquery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigquery.d.ts","sourceRoot":"","sources":["../../src/datasource/bigquery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,297 @@
1
+ import { DataSourceByteLimitTracker, queryWithRowLimit, validateReadOnlyQuery } from "./policy.js";
2
+ import { DataSourceErrorCode, DataSourceExecutionError, } from "./types.js";
3
+ export function createBigQueryDataSourceExecutor(config) {
4
+ return new BigQueryDataSourceExecutor(config);
5
+ }
6
+ export class BigQueryDataSourceExecutor {
7
+ config;
8
+ sources = new Map();
9
+ bigQueryClient;
10
+ readClient;
11
+ constructor(config) {
12
+ this.config = config;
13
+ const projectId = config.projectId.trim();
14
+ if (!projectId) {
15
+ throw new Error("BigQuery project_id is required");
16
+ }
17
+ if (config.sources.length === 0) {
18
+ throw new Error("at least one BigQuery datasource source is required");
19
+ }
20
+ for (const source of config.sources) {
21
+ const normalized = normalizeSource(source, projectId);
22
+ if (this.sources.has(normalized.sourceId)) {
23
+ throw new Error(`duplicate datasource source_id: ${normalized.sourceId}`);
24
+ }
25
+ this.sources.set(normalized.sourceId, normalized);
26
+ }
27
+ }
28
+ async executeQuery(request, sink) {
29
+ const req = normalizeRequest(request);
30
+ const source = this.sources.get(req.sourceId);
31
+ if (!source) {
32
+ throw new DataSourceExecutionError({
33
+ code: DataSourceErrorCode.SourceNotFound,
34
+ message: `unknown datasource source_id: ${req.sourceId}`,
35
+ });
36
+ }
37
+ validateReadOnlyQuery(req.query, [], source.tables ?? []);
38
+ const startedAt = Date.now();
39
+ const clients = await this.ensureClients();
40
+ const byteLimit = new DataSourceByteLimitTracker(req.byteLimit);
41
+ try {
42
+ const destination = await runQueryJob(clients.bigQueryClient, source, req);
43
+ const rowCount = await streamBigQueryResult(clients.readClient, source, destination, sink, byteLimit);
44
+ sink.send({
45
+ result: { rowCount, limitExceeded: false, executionMs: Date.now() - startedAt },
46
+ });
47
+ }
48
+ catch (error) {
49
+ throw toBigQueryDataSourceError(error);
50
+ }
51
+ }
52
+ async close() {
53
+ if (!this.config.readClient && this.readClient?.close) {
54
+ await this.readClient.close();
55
+ }
56
+ }
57
+ async ensureClients() {
58
+ if (this.bigQueryClient && this.readClient) {
59
+ return { bigQueryClient: this.bigQueryClient, readClient: this.readClient };
60
+ }
61
+ const options = clientOptions(this.config);
62
+ this.bigQueryClient = this.config.bigQueryClient ?? (await createBigQueryClient(options));
63
+ this.readClient = this.config.readClient ?? (await createBigQueryReadClient(options));
64
+ return { bigQueryClient: this.bigQueryClient, readClient: this.readClient };
65
+ }
66
+ }
67
+ async function runQueryJob(client, source, req) {
68
+ const options = {
69
+ query: queryWithRowLimit(req.query, req.rowLimit),
70
+ useLegacySql: false,
71
+ defaultDataset: {
72
+ projectId: source.projectId,
73
+ datasetId: source.datasetId,
74
+ },
75
+ labels: { component: "datasource" },
76
+ };
77
+ if (source.location) {
78
+ options.location = source.location;
79
+ }
80
+ if (req.timeoutMs && req.timeoutMs > 0) {
81
+ options.jobTimeoutMs = Math.trunc(req.timeoutMs);
82
+ }
83
+ if (source.maximumBytesBilled !== undefined) {
84
+ options.maximumBytesBilled = String(source.maximumBytesBilled);
85
+ }
86
+ const [job] = await client.createQueryJob(options);
87
+ const queryResultsOptions = {
88
+ autoPaginate: false,
89
+ maxResults: 0,
90
+ };
91
+ if (source.location) {
92
+ queryResultsOptions["location"] = source.location;
93
+ }
94
+ await job.getQueryResults(queryResultsOptions);
95
+ const [metadata] = await job.getMetadata();
96
+ const table = metadata.configuration?.query?.destinationTable;
97
+ if (!table?.projectId || !table.datasetId || !table.tableId) {
98
+ throw new Error("BigQuery query job destination table is missing");
99
+ }
100
+ return {
101
+ projectId: table.projectId,
102
+ datasetId: table.datasetId,
103
+ tableId: table.tableId,
104
+ };
105
+ }
106
+ async function streamBigQueryResult(client, source, table, sink, byteLimit) {
107
+ const [session] = await client.createReadSession({
108
+ parent: `projects/${source.projectId}`,
109
+ readSession: {
110
+ table: `projects/${table.projectId}/datasets/${table.datasetId}/tables/${table.tableId}`,
111
+ dataFormat: "ARROW",
112
+ },
113
+ maxStreamCount: source.maxStreamCount,
114
+ });
115
+ let schemaSent = false;
116
+ const sessionSchema = bytesFromUnknown(session.arrowSchema?.serializedSchema);
117
+ if (sessionSchema) {
118
+ byteLimit.reserve(sessionSchema.byteLength);
119
+ sink.send({ arrow: { dataHeader: sessionSchema } });
120
+ schemaSent = true;
121
+ }
122
+ let rowCount = 0;
123
+ for (const stream of session.streams ?? []) {
124
+ if (!stream.name) {
125
+ continue;
126
+ }
127
+ const rows = client.readRows({ readStream: stream.name });
128
+ for await (const response of rows) {
129
+ const responseSchema = bytesFromUnknown(response.arrowSchema?.serializedSchema);
130
+ if (responseSchema && !schemaSent) {
131
+ byteLimit.reserve(responseSchema.byteLength);
132
+ sink.send({ arrow: { dataHeader: responseSchema } });
133
+ schemaSent = true;
134
+ }
135
+ const batch = bytesFromUnknown(response.arrowRecordBatch?.serializedRecordBatch);
136
+ if (batch) {
137
+ byteLimit.reserve(batch.byteLength);
138
+ sink.send({ arrow: { dataBody: batch } });
139
+ }
140
+ rowCount += numberFromLong(response.rowCount);
141
+ }
142
+ }
143
+ return rowCount;
144
+ }
145
+ function normalizeSource(source, defaultProjectId) {
146
+ const sourceId = source.sourceId.trim();
147
+ if (!sourceId) {
148
+ throw new Error("source_id is required");
149
+ }
150
+ if (!source.datasetId.trim()) {
151
+ throw new Error(`BigQuery dataset_id is required for source_id ${sourceId}`);
152
+ }
153
+ return {
154
+ ...source,
155
+ sourceId,
156
+ projectId: normalizedProjectId(source.projectId, defaultProjectId),
157
+ maxStreamCount: source.maxStreamCount && source.maxStreamCount > 0 ? Math.trunc(source.maxStreamCount) : 1,
158
+ };
159
+ }
160
+ function normalizedProjectId(projectId, defaultProjectId) {
161
+ const trimmed = projectId?.trim();
162
+ return trimmed && trimmed.length > 0 ? trimmed : defaultProjectId;
163
+ }
164
+ function normalizeRequest(request) {
165
+ return {
166
+ sourceId: request.sourceId?.trim() ?? "",
167
+ query: request.query?.trim() ?? "",
168
+ rowLimit: request.rowLimit,
169
+ byteLimit: request.byteLimit,
170
+ timeoutMs: request.timeoutMs,
171
+ };
172
+ }
173
+ function clientOptions(config) {
174
+ const options = {
175
+ ...config.clientOptions,
176
+ projectId: config.projectId,
177
+ };
178
+ if (config.keyFilename) {
179
+ options["keyFilename"] = config.keyFilename;
180
+ }
181
+ const credentialsJson = credentialJson(config);
182
+ if (credentialsJson) {
183
+ options["credentials"] = JSON.parse(credentialsJson);
184
+ }
185
+ return options;
186
+ }
187
+ function credentialJson(config) {
188
+ if (config.credentialsJson?.trim()) {
189
+ return config.credentialsJson;
190
+ }
191
+ if (config.credentialsJsonEnv?.trim()) {
192
+ const value = process.env[config.credentialsJsonEnv];
193
+ if (value?.trim()) {
194
+ return value;
195
+ }
196
+ }
197
+ for (const envName of config.credentialsEnvVars ?? []) {
198
+ const value = process.env[envName];
199
+ if (value?.trim()) {
200
+ return value;
201
+ }
202
+ }
203
+ return undefined;
204
+ }
205
+ async function createBigQueryClient(options) {
206
+ try {
207
+ const mod = (await importOptionalModule("@google-cloud/bigquery"));
208
+ return new mod.BigQuery(options);
209
+ }
210
+ catch (error) {
211
+ throw new DataSourceExecutionError({
212
+ code: DataSourceErrorCode.Unavailable,
213
+ message: `@google-cloud/bigquery is required for BigQuery datasource execution: ${errorMessage(error)}`,
214
+ cause: error,
215
+ });
216
+ }
217
+ }
218
+ async function createBigQueryReadClient(options) {
219
+ try {
220
+ const mod = (await importOptionalModule("@google-cloud/bigquery-storage"));
221
+ return new mod.BigQueryReadClient(options);
222
+ }
223
+ catch (error) {
224
+ throw new DataSourceExecutionError({
225
+ code: DataSourceErrorCode.Unavailable,
226
+ message: `@google-cloud/bigquery-storage is required for BigQuery Storage streaming: ${errorMessage(error)}`,
227
+ cause: error,
228
+ });
229
+ }
230
+ }
231
+ function bytesFromUnknown(value) {
232
+ if (value === null || value === undefined) {
233
+ return undefined;
234
+ }
235
+ if (value instanceof Uint8Array) {
236
+ return value;
237
+ }
238
+ if (typeof value === "string") {
239
+ return Buffer.from(value, "base64");
240
+ }
241
+ return undefined;
242
+ }
243
+ function numberFromLong(value) {
244
+ if (typeof value === "number") {
245
+ return value;
246
+ }
247
+ if (typeof value === "bigint") {
248
+ return Number(value);
249
+ }
250
+ if (typeof value === "string") {
251
+ const parsed = Number(value);
252
+ return Number.isFinite(parsed) ? parsed : 0;
253
+ }
254
+ if (value && typeof value === "object" && "toString" in value) {
255
+ const objectValue = value;
256
+ if (objectValue.toString === Object.prototype.toString) {
257
+ return 0;
258
+ }
259
+ const parsed = Number(objectValue.toString());
260
+ return Number.isFinite(parsed) ? parsed : 0;
261
+ }
262
+ return 0;
263
+ }
264
+ function toBigQueryDataSourceError(error) {
265
+ if (error instanceof DataSourceExecutionError) {
266
+ return error;
267
+ }
268
+ if (error instanceof Error) {
269
+ const upstream = {
270
+ engine: "bigquery",
271
+ message: error.message,
272
+ };
273
+ const code = errorCode(error);
274
+ if (code) {
275
+ upstream.code = code;
276
+ }
277
+ return new DataSourceExecutionError({
278
+ code: DataSourceErrorCode.ExternalError,
279
+ message: "BigQuery datasource query failed",
280
+ upstream,
281
+ cause: error,
282
+ });
283
+ }
284
+ return error;
285
+ }
286
+ function errorCode(error) {
287
+ const code = error.code;
288
+ return typeof code === "string" ? code : undefined;
289
+ }
290
+ function errorMessage(error) {
291
+ return error instanceof Error ? error.message : String(error);
292
+ }
293
+ async function importOptionalModule(specifier) {
294
+ const mod = await import(specifier);
295
+ return mod;
296
+ }
297
+ //# sourceMappingURL=bigquery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigquery.js","sourceRoot":"","sources":["../../src/datasource/bigquery.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"grpc.d.ts","sourceRoot":"","sources":["../../src/datasource/grpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AAEtC,OAAO,EACL,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAEhB,MAAM,YAAY,CAAC;AAmHpB,QAAA,MAAM,WAAW,+CAA+C,CAAC;AAcjE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;CA0BN,CAAC;AAEnC,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,yBAAyB,EACnC,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAAC,MAAM,CAIb;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,QAAQ,EAAE,yBAAyB,EACnC,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAUN;AA8BD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAOpF;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAA;CAAO,GAC5E,UAAU,CASZ;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAGvD;AA8GD,OAAO,EAAE,WAAW,IAAI,yBAAyB,EAAE,CAAC"}
1
+ {"version":3,"file":"grpc.d.ts","sourceRoot":"","sources":["../../src/datasource/grpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AAEtC,OAAO,EAEL,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAEhB,MAAM,YAAY,CAAC;AAmHpB,QAAA,MAAM,WAAW,+CAA+C,CAAC;AAcjE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;CA0BN,CAAC;AAEnC,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,yBAAyB,EACnC,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAAC,MAAM,CAIb;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,QAAQ,EAAE,yBAAyB,EACnC,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAUN;AA8BD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAOpF;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAA;CAAO,GAC5E,UAAU,CASZ;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CASvD;AA8GD,OAAO,EAAE,WAAW,IAAI,yBAAyB,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import * as grpc from "@grpc/grpc-js";
2
2
  import protobuf from "protobufjs";
3
- import { DataSourceErrorCode, } from "./types.js";
3
+ import { DataSourceExecutionError, DataSourceErrorCode, } from "./types.js";
4
4
  const datasourceProto = `
5
5
  syntax = "proto3";
6
6
  package io.channel.datasource.v1;
@@ -193,6 +193,12 @@ export function errorChunk(code, message, options = {}) {
193
193
  };
194
194
  }
195
195
  export function toErrorChunk(error) {
196
+ if (error instanceof DataSourceExecutionError) {
197
+ return errorChunk(error.code, error.message, {
198
+ retryable: error.retryable,
199
+ upstream: error.upstream,
200
+ });
201
+ }
196
202
  const message = error instanceof Error ? error.message : String(error);
197
203
  return errorChunk(DataSourceErrorCode.ExternalError, message);
198
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grpc.js","sourceRoot":"","sources":["../../src/datasource/grpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grpc.js","sourceRoot":"","sources":["../../src/datasource/grpc.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  export * from "./types.js";
2
2
  export * from "./arrow.js";
3
+ export * from "./policy.js";
3
4
  export * from "./query-handlers.js";
5
+ export * from "./postgres.js";
6
+ export * from "./bigquery.js";
4
7
  export * from "./grpc.js";
5
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/datasource/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/datasource/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
@@ -1,5 +1,8 @@
1
1
  export * from "./types.js";
2
2
  export * from "./arrow.js";
3
+ export * from "./policy.js";
3
4
  export * from "./query-handlers.js";
5
+ export * from "./postgres.js";
6
+ export * from "./bigquery.js";
4
7
  export * from "./grpc.js";
5
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/datasource/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/datasource/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,16 @@
1
+ export interface DataSourceTableConfig {
2
+ name: string;
3
+ tenantColumn?: string;
4
+ }
5
+ export declare function isSingleReadOnlyStatement(query: string): boolean;
6
+ export declare function containsIdentifier(query: string, identifier: string): boolean;
7
+ export declare function referencedTables(query: string, explicitTableNames?: readonly string[], tables?: readonly DataSourceTableConfig[]): string[];
8
+ export declare function validateReadOnlyQuery(query: string, explicitTableNames?: readonly string[], tables?: readonly DataSourceTableConfig[]): void;
9
+ export declare function queryWithRowLimit(query: string, rowLimit: number | undefined): string;
10
+ export declare class DataSourceByteLimitTracker {
11
+ private readonly byteLimit;
12
+ private sentBytes;
13
+ constructor(byteLimit: number | undefined);
14
+ reserve(size: number): void;
15
+ }
16
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/datasource/policy.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA0BD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAUhE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAG7E;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,kBAAkB,GAAE,SAAS,MAAM,EAAO,EAC1C,MAAM,GAAE,SAAS,qBAAqB,EAAO,GAC5C,MAAM,EAAE,CAOV;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,kBAAkB,GAAE,SAAS,MAAM,EAAO,EAC1C,MAAM,GAAE,SAAS,qBAAqB,EAAO,GAC5C,IAAI,CAiCN;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAOrF;AAED,qBAAa,0BAA0B;IAGzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,OAAO,CAAC,SAAS,CAAK;gBAEO,SAAS,EAAE,MAAM,GAAG,SAAS;IAE1D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAa5B"}
@@ -0,0 +1,112 @@
1
+ import { DataSourceErrorCode, DataSourceExecutionError } from "./types.js";
2
+ const blockedSqlKeywords = [
3
+ "alter",
4
+ "analyze",
5
+ "begin",
6
+ "call",
7
+ "commit",
8
+ "copy",
9
+ "create",
10
+ "delete",
11
+ "drop",
12
+ "export",
13
+ "grant",
14
+ "import",
15
+ "insert",
16
+ "load",
17
+ "merge",
18
+ "revoke",
19
+ "rollback",
20
+ "set",
21
+ "truncate",
22
+ "update",
23
+ "vacuum",
24
+ ];
25
+ export function isSingleReadOnlyStatement(query) {
26
+ const normalized = trimSql(query);
27
+ if (!normalized || normalized.includes(";")) {
28
+ return false;
29
+ }
30
+ const lower = normalized.toLowerCase();
31
+ if (!lower.startsWith("select ") && !lower.startsWith("with ")) {
32
+ return false;
33
+ }
34
+ return !blockedSqlKeywords.some((keyword) => containsIdentifier(lower, keyword));
35
+ }
36
+ export function containsIdentifier(query, identifier) {
37
+ const escaped = identifier.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
38
+ return new RegExp(`(^|[^A-Za-z0-9_])${escaped}([^A-Za-z0-9_]|$)`, "i").test(query);
39
+ }
40
+ export function referencedTables(query, explicitTableNames = [], tables = []) {
41
+ if (explicitTableNames.length > 0) {
42
+ return [...explicitTableNames];
43
+ }
44
+ return tables
45
+ .filter((table) => table.name && containsIdentifier(query, table.name))
46
+ .map((table) => table.name);
47
+ }
48
+ export function validateReadOnlyQuery(query, explicitTableNames = [], tables = []) {
49
+ if (!query.trim()) {
50
+ throw new DataSourceExecutionError({
51
+ code: DataSourceErrorCode.InvalidArgument,
52
+ message: "query is required",
53
+ });
54
+ }
55
+ if (!isSingleReadOnlyStatement(query)) {
56
+ throw new DataSourceExecutionError({
57
+ code: DataSourceErrorCode.QueryInvalid,
58
+ message: "query must be a single read-only SELECT statement",
59
+ });
60
+ }
61
+ if (tables.length === 0) {
62
+ return;
63
+ }
64
+ const allowedTables = new Set(tables.map((table) => table.name.toLowerCase()));
65
+ const tableNames = referencedTables(query, explicitTableNames, tables);
66
+ if (tableNames.length === 0) {
67
+ throw new DataSourceExecutionError({
68
+ code: DataSourceErrorCode.QueryInvalid,
69
+ message: "query must reference a supported datasource table",
70
+ });
71
+ }
72
+ for (const tableName of tableNames) {
73
+ if (!allowedTables.has(tableName.toLowerCase())) {
74
+ throw new DataSourceExecutionError({
75
+ code: DataSourceErrorCode.TableNotFound,
76
+ message: `unsupported datasource table: ${tableName}`,
77
+ });
78
+ }
79
+ }
80
+ }
81
+ export function queryWithRowLimit(query, rowLimit) {
82
+ const normalized = trimSql(query);
83
+ const limit = Math.trunc(rowLimit ?? 0);
84
+ if (limit <= 0) {
85
+ return normalized;
86
+ }
87
+ return `SELECT * FROM (${normalized}) AS datasource_query LIMIT ${limit}`;
88
+ }
89
+ export class DataSourceByteLimitTracker {
90
+ byteLimit;
91
+ sentBytes = 0;
92
+ constructor(byteLimit) {
93
+ this.byteLimit = byteLimit;
94
+ }
95
+ reserve(size) {
96
+ const limit = Math.trunc(this.byteLimit ?? 0);
97
+ if (limit <= 0) {
98
+ return;
99
+ }
100
+ this.sentBytes += size;
101
+ if (this.sentBytes > limit) {
102
+ throw new DataSourceExecutionError({
103
+ code: DataSourceErrorCode.LimitExceeded,
104
+ message: "datasource query byte limit exceeded",
105
+ });
106
+ }
107
+ }
108
+ }
109
+ function trimSql(query) {
110
+ return query.trim().replace(/;+$/, "").trim();
111
+ }
112
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/datasource/policy.ts"],"names":[],"mappings":"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"}