@channel.io/app-sdk-server 0.13.1 → 0.14.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.
Files changed (38) hide show
  1. package/dist/__tests__/datasource.test.d.ts +2 -0
  2. package/dist/__tests__/datasource.test.d.ts.map +1 -0
  3. package/dist/__tests__/datasource.test.js +152 -0
  4. package/dist/__tests__/datasource.test.js.map +1 -0
  5. package/dist/__tests__/testing-utils.test.js +1 -1
  6. package/dist/__tests__/testing-utils.test.js.map +1 -1
  7. package/dist/datasource/arrow.d.ts +10 -0
  8. package/dist/datasource/arrow.d.ts.map +1 -0
  9. package/dist/datasource/arrow.js +37 -0
  10. package/dist/datasource/arrow.js.map +1 -0
  11. package/dist/datasource/grpc.d.ts +28 -0
  12. package/dist/datasource/grpc.d.ts.map +1 -0
  13. package/dist/datasource/grpc.js +286 -0
  14. package/dist/datasource/grpc.js.map +1 -0
  15. package/dist/datasource/index.d.ts +5 -0
  16. package/dist/datasource/index.d.ts.map +1 -0
  17. package/dist/datasource/index.js +5 -0
  18. package/dist/datasource/index.js.map +1 -0
  19. package/dist/datasource/query-handlers.d.ts +32 -0
  20. package/dist/datasource/query-handlers.d.ts.map +1 -0
  21. package/dist/datasource/query-handlers.js +58 -0
  22. package/dist/datasource/query-handlers.js.map +1 -0
  23. package/dist/datasource/types.d.ts +117 -0
  24. package/dist/datasource/types.d.ts.map +1 -0
  25. package/dist/datasource/types.js +20 -0
  26. package/dist/datasource/types.js.map +1 -0
  27. package/dist/decorators/extension-names.d.ts +1 -1
  28. package/dist/decorators/extension-names.d.ts.map +1 -1
  29. package/dist/decorators/extension-names.js +1 -0
  30. package/dist/decorators/extension-names.js.map +1 -1
  31. package/dist/index.d.ts +1 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/nestjs/channel-app.controller.d.ts +2 -2
  36. package/dist/nestjs/channel-app.controller.d.ts.map +1 -1
  37. package/dist/nestjs/channel-app.controller.js.map +1 -1
  38. package/package.json +7 -4
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=datasource.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasource.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/datasource.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,152 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import * as grpc from "@grpc/grpc-js";
3
+ import { createBigQueryQueryHandler, createDataSourceGrpcServer, createPostgresQueryHandler, createRowQueryHandler, DataSourceErrorCode, DataSourceServiceDefinition, } from "../datasource/index.js";
4
+ describe("datasource query handlers", () => {
5
+ it("streams rows as Arrow chunks and a result chunk", async () => {
6
+ const chunks = [];
7
+ const handler = createRowQueryHandler([{ name: "order_id", type: "STRING" }], async () => [
8
+ { order_id: "o-1" },
9
+ ]);
10
+ await handler({ session: { channelId: "channel-1" }, sourceId: "bigquery", query: "select 1" }, {
11
+ send: (chunk) => chunks.push(chunk),
12
+ });
13
+ expect(chunks).toHaveLength(2);
14
+ expect(chunks[0]).toMatchObject({ arrow: {} });
15
+ expect(chunks[1]).toMatchObject({ result: { rowCount: 1 } });
16
+ });
17
+ it("streams async iterable rows in batches", async () => {
18
+ const chunks = [];
19
+ const handler = createRowQueryHandler([{ name: "order_id", type: "STRING" }], async function* () {
20
+ yield { order_id: "o-1" };
21
+ yield { order_id: "o-2" };
22
+ }, { batchSize: 1 });
23
+ await handler({ session: { channelId: "channel-1" }, sourceId: "bigquery", query: "select 1" }, {
24
+ send: (chunk) => chunks.push(chunk),
25
+ });
26
+ expect(chunks).toHaveLength(3);
27
+ expect(chunks[2]).toMatchObject({ result: { rowCount: 2 } });
28
+ });
29
+ it("supports pg-like clients", async () => {
30
+ const chunks = [];
31
+ const handler = createPostgresQueryHandler({
32
+ query: async () => ({ rows: [{ id: 1 }] }),
33
+ }, [{ name: "id", type: "INT64" }]);
34
+ await handler({ session: { channelId: "channel-1" }, sourceId: "postgresql", query: "select 1" }, {
35
+ send: (chunk) => chunks.push(chunk),
36
+ });
37
+ expect(chunks[1]).toMatchObject({ result: { rowCount: 1 } });
38
+ });
39
+ it("supports bigquery-like clients", async () => {
40
+ const chunks = [];
41
+ const handler = createBigQueryQueryHandler({
42
+ query: async () => [[{ id: "o-1" }]],
43
+ }, [{ name: "id", type: "STRING" }]);
44
+ await handler({ session: { channelId: "channel-1" }, sourceId: "bigquery", query: "select 1" }, {
45
+ send: (chunk) => chunks.push(chunk),
46
+ });
47
+ expect(chunks[1]).toMatchObject({ result: { rowCount: 1 } });
48
+ });
49
+ it("prefers BigQuery query streams when available", async () => {
50
+ const chunks = [];
51
+ const handler = createBigQueryQueryHandler({
52
+ query: async () => {
53
+ throw new Error("query should not be used when createQueryStream exists");
54
+ },
55
+ async *createQueryStream() {
56
+ yield { id: "o-1" };
57
+ },
58
+ }, [{ name: "id", type: "STRING" }]);
59
+ await handler({ session: { channelId: "channel-1" }, sourceId: "bigquery", query: "select 1" }, {
60
+ send: (chunk) => chunks.push(chunk),
61
+ });
62
+ expect(chunks[1]).toMatchObject({ result: { rowCount: 1 } });
63
+ });
64
+ it("serves ExecuteQuery over grpc", async () => {
65
+ const server = createDataSourceGrpcServer({
66
+ executeQuery: createRowQueryHandler([{ name: "id", type: "STRING" }], () => [
67
+ { id: "o-1" },
68
+ ]),
69
+ }, { allowedSources: ["bigquery"] });
70
+ const address = await bind(server);
71
+ const client = createClient(address);
72
+ try {
73
+ const chunks = await collectExecuteQuery(client, {
74
+ session: { channelId: "channel-1" },
75
+ sourceId: "bigquery",
76
+ query: "select 1",
77
+ });
78
+ expect(chunks).toHaveLength(2);
79
+ expect(chunks[0]?.arrow?.dataBody?.byteLength).toBeGreaterThan(0);
80
+ expect(chunks[1]).toMatchObject({ result: { rowCount: 1 } });
81
+ }
82
+ finally {
83
+ client.close();
84
+ await forceShutdown(server);
85
+ }
86
+ });
87
+ it("returns terminal error chunks and grpc status", async () => {
88
+ const server = createDataSourceGrpcServer({
89
+ executeQuery: createRowQueryHandler([{ name: "id", type: "STRING" }], () => [
90
+ { id: "o-1" },
91
+ ]),
92
+ }, { allowedSources: ["bigquery"] });
93
+ const address = await bind(server);
94
+ const client = createClient(address);
95
+ try {
96
+ const result = await collectExecuteQueryFailure(client, {
97
+ session: { channelId: "channel-1" },
98
+ sourceId: "postgresql",
99
+ query: "select 1",
100
+ });
101
+ expect(result.chunks[0]).toMatchObject({
102
+ error: { code: DataSourceErrorCode.SourceNotFound },
103
+ });
104
+ expect(result.error.code).toBe(grpc.status.NOT_FOUND);
105
+ }
106
+ finally {
107
+ client.close();
108
+ await forceShutdown(server);
109
+ }
110
+ });
111
+ it("exports datasource error codes", () => {
112
+ expect(DataSourceErrorCode.SourceNotFound).toBe(4);
113
+ });
114
+ });
115
+ function bind(server) {
116
+ return new Promise((resolve, reject) => {
117
+ server.bindAsync("127.0.0.1:0", grpc.ServerCredentials.createInsecure(), (error, port) => {
118
+ if (error) {
119
+ reject(error);
120
+ return;
121
+ }
122
+ resolve(`127.0.0.1:${port}`);
123
+ });
124
+ });
125
+ }
126
+ function createClient(address) {
127
+ const Client = grpc.makeGenericClientConstructor(DataSourceServiceDefinition, "DataSourceService");
128
+ return new Client(address, grpc.credentials.createInsecure());
129
+ }
130
+ function collectExecuteQuery(client, request) {
131
+ return new Promise((resolve, reject) => {
132
+ const chunks = [];
133
+ const stream = client.ExecuteQuery(request);
134
+ stream.on("data", (chunk) => chunks.push(chunk));
135
+ stream.on("error", reject);
136
+ stream.on("end", () => resolve(chunks));
137
+ });
138
+ }
139
+ function collectExecuteQueryFailure(client, request) {
140
+ return new Promise((resolve, reject) => {
141
+ const chunks = [];
142
+ const stream = client.ExecuteQuery(request);
143
+ stream.on("data", (chunk) => chunks.push(chunk));
144
+ stream.on("error", (error) => resolve({ chunks, error }));
145
+ stream.on("end", () => reject(new Error("expected ExecuteQuery to fail")));
146
+ });
147
+ }
148
+ function forceShutdown(server) {
149
+ server.forceShutdown();
150
+ return Promise.resolve();
151
+ }
152
+ //# sourceMappingURL=datasource.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasource.test.js","sourceRoot":"","sources":["../../src/__tests__/datasource.test.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ import "reflect-metadata";
15
15
  import { z } from "zod";
16
16
  import { Extension, Func, Ctx, Input, InputSchema, OutputSchema, Description, } from "../decorators/index.js";
17
17
  import { createMockContext, createTestExtension } from "../testing/index.js";
18
- import { OnMediumMessageCreatedInputSchema, } from "@channel.io/app-sdk-core";
18
+ import { OnMediumMessageCreatedInputSchema, } from "../../../core/src/index.js";
19
19
  // Test extension for testing utilities
20
20
  const TestInputSchema = z.object({
21
21
  name: z.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"testing-utils.test.js","sourceRoot":"","sources":["../../src/__tests__/testing-utils.test.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,SAAS,EACT,IAAI,EACJ,GAAG,EACH,KAAK,EACL,WAAW,EACX,YAAY,EACZ,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,iCAAiC,GAGlC,MAAM,0BAA0B,CAAC;AAElC,uCAAuC;AACvC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;KAC7B,CAAC;CACH,CAAC,CAAC;AAGH,IAAM,aAAa,GAAnB,MAAM,aAAa;IAKX,AAAN,KAAK,CAAC,KAAK,CACF,GAAY,EACV,MAAuC;QAEhD,OAAO;YACL,QAAQ,EAAE,UAAU,MAAM,CAAC,IAAI,cAAc,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;SAC9D,CAAC;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,QAAQ,CAAQ,GAAY,EAAW,MAAyB;QACpE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;IACjE,CAAC;CACF,CAAA;AAbO;IAJL,IAAI,CAAC,YAAY,CAAC;IAClB,WAAW,CAAC,cAAc,CAAC;IAC3B,WAAW,CAAC,eAAe,CAAC;IAC5B,YAAY,CAAC,gBAAgB,CAAC;IAE5B,WAAA,GAAG,EAAE,CAAA;IACL,WAAA,KAAK,EAAE,CAAA;;;;0CAKT;AAGK;IADL,IAAI,CAAC,eAAe,CAAC;IACN,WAAA,GAAG,EAAE,CAAA;IAAgB,WAAA,KAAK,EAAE,CAAA;;;;6CAE3C;AAjBG,aAAa;IADlB,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;GAC/C,aAAa,CAkBlB;AAGD,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAGpB,AAAN,KAAK,CAAC,sBAAsB,CAAU,MAAmC;QACvE,OAAO;YACL,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc;YAC9C,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;YACnC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;YACxC,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;YACtC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW;SACzC,CAAC;IACJ,CAAC;IAIK,AAAN,KAAK,CAAC,WAAW,CAAU,MAAiD;QAC1E,OAAO;YACL,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,gBAAgB;SAClD,CAAC;IACJ,CAAC;CACF,CAAA;AAjBO;IAFL,IAAI,CAAC,8BAA8B,CAAC;IACpC,WAAW,CAAC,iCAAiC,CAAC;IACjB,WAAA,KAAK,EAAE,CAAA;;;;oEAQpC;AAIK;IAFL,IAAI,CAAC,mBAAmB,CAAC;IACzB,WAAW,CAAC,yBAAyB,CAAC;IACpB,WAAA,KAAK,EAAE,CAAA;;;;yDAIzB;AAnBG,sBAAsB;IAD3B,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;GAChD,sBAAsB,CAoB3B;AAED,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;YAEhC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,GAAG,GAAG,iBAAiB,CAAC;gBAC5B,SAAS,EAAE,gBAAgB;gBAC3B,UAAU,EAAE,MAAM;gBAClB,QAAQ,EAAE,UAAU;gBACpB,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE;oBACN,UAAU,EAAE,WAAW;iBACxB;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACzB,UAAU,EAAE,WAAW;aACxB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAEtF,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC9C,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,cAAc;aAAG;YAEvB,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,YAAY,CAG/B,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAEnC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,YAAY,CAG/B,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAEnE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,eAAe,EACf,EAAE,KAAK,EAAE,EAAE,EAAE,CACd,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAE5D,MAAM,MAAM,CACV,YAAY,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,4BAA4B;aACvE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAE5D,MAAM,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;YAErE,MAAM,MAAM,CACV,YAAY,CAAC,8BAA8B,EAAE;gBAC3C,SAAS,EAAE;oBACT,EAAE,EAAE,aAAa;oBACjB,UAAU,EAAE,WAAW;oBACvB,OAAO,EAAE,QAAQ;oBACjB,WAAW,EAAE,KAAK;oBAClB,gBAAgB,EAAE,SAAS;oBAC3B,OAAO,EAAE,GAAG;oBACZ,YAAY,EAAE,IAAI;iBACnB;gBACD,OAAO,EAAE;oBACP,EAAE,EAAE,WAAW;oBACf,UAAU,EAAE,WAAW;oBACvB,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,aAAa;oBACtB,WAAW,EAAE,MAAM;oBACnB,SAAS,EAAE,QAAQ;oBACnB,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,sBAAsB;oBAClC,UAAU,EAAE,OAAO;oBACnB,OAAO,EAAE,GAAG;iBACb;aACF,CAAC,CACH,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACjB,cAAc,EAAE,SAAS;gBACzB,SAAS,EAAE,OAAO;gBAClB,eAAe,EAAE,GAAG;gBACpB,cAAc,EAAE,GAAG;gBACnB,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;YAErE,MAAM,MAAM,CACV,YAAY,CAAC,8BAA8B,EAAE;gBAC3C,QAAQ,EAAE;oBACR,EAAE,EAAE,aAAa;oBACjB,SAAS,EAAE,WAAW;oBACtB,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,KAAK;oBACjB,cAAc,EAAE,aAAa;iBAC9B;gBACD,SAAS,EAAE;oBACT,gBAAgB,EAAE,aAAa;iBAChC;gBACD,OAAO,EAAE;oBACP,EAAE,EAAE,WAAW;oBACf,SAAS,EAAE,WAAW;oBACtB,QAAQ,EAAE,UAAU;oBACpB,MAAM,EAAE,aAAa;oBACrB,UAAU,EAAE,MAAM;oBAClB,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,IAAI;oBACd,SAAS,EAAE,sBAAsB;oBACjC,SAAS,EAAE,YAAY;oBACvB,UAAU,EAAE,YAAY;iBACzB;aACF,CAAC,CACH,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACjB,cAAc,EAAE,aAAa;gBAC7B,SAAS,EAAE,YAAY;gBACvB,eAAe,EAAE,SAAS;gBAC1B,cAAc,EAAE,SAAS;gBACzB,WAAW,EAAE,SAAS;aACvB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;YAErE,MAAM,MAAM,CACV,YAAY,CAAC,mBAAmB,EAAE;gBAChC,SAAS,EAAE;oBACT,gBAAgB,EAAE,SAAS;iBAC5B;aACF,CAAC,CACH,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACjB,cAAc,EAAE,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAE5D,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"testing-utils.test.js","sourceRoot":"","sources":["../../src/__tests__/testing-utils.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { QueryChunk } from "./types.js";
2
+ export interface ArrowColumn {
3
+ name: string;
4
+ type?: string;
5
+ }
6
+ export type ArrowRow = Record<string, unknown>;
7
+ export declare function encodeRowsToArrowIPC(columns: ArrowColumn[], rows: ArrowRow[]): Uint8Array;
8
+ export declare function arrowRowsChunk(columns: ArrowColumn[], rows: ArrowRow[]): QueryChunk;
9
+ export declare function resultChunk(rowCount: number, limitExceeded?: boolean, executionMs?: number): QueryChunk;
10
+ //# sourceMappingURL=arrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrow.d.ts","sourceRoot":"","sources":["../../src/datasource/arrow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAUzF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAMnF;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,UAAQ,EAAE,WAAW,SAAI,GAAG,UAAU,CAQhG"}
@@ -0,0 +1,37 @@
1
+ import { tableFromArrays, tableToIPC } from "apache-arrow";
2
+ export function encodeRowsToArrowIPC(columns, rows) {
3
+ if (columns.length === 0) {
4
+ throw new Error("columns are required");
5
+ }
6
+ const arrays = {};
7
+ for (const column of columns) {
8
+ arrays[column.name] = rows.map((row) => normalizeValue(row[column.name]));
9
+ }
10
+ return tableToIPC(tableFromArrays(arrays), "stream");
11
+ }
12
+ export function arrowRowsChunk(columns, rows) {
13
+ return {
14
+ arrow: {
15
+ dataBody: encodeRowsToArrowIPC(columns, rows),
16
+ },
17
+ };
18
+ }
19
+ export function resultChunk(rowCount, limitExceeded = false, executionMs = 0) {
20
+ return {
21
+ result: {
22
+ rowCount,
23
+ limitExceeded,
24
+ executionMs,
25
+ },
26
+ };
27
+ }
28
+ function normalizeValue(value) {
29
+ if (value instanceof Date) {
30
+ return value.toISOString();
31
+ }
32
+ if (typeof value === "bigint") {
33
+ return Number(value);
34
+ }
35
+ return value;
36
+ }
37
+ //# sourceMappingURL=arrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrow.js","sourceRoot":"","sources":["../../src/datasource/arrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAU3D,MAAM,UAAU,oBAAoB,CAAC,OAAsB,EAAE,IAAgB;IAC3E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAsB,EAAE,IAAgB;IACrE,OAAO;QACL,KAAK,EAAE;YACL,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC;SAC9C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,aAAa,GAAG,KAAK,EAAE,WAAW,GAAG,CAAC;IAClF,OAAO;QACL,MAAM,EAAE;YACN,QAAQ;YACR,aAAa;YACb,WAAW;SACZ;KACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,28 @@
1
+ import * as grpc from "@grpc/grpc-js";
2
+ import { DataSourceErrorCode, type DataSourceError, type DataSourceGrpcOptions, type DataSourceServiceHandlers, type ExecuteQueryRequest, type QueryChunk } from "./types.js";
3
+ declare const serviceName = "io.channel.datasource.v1.DataSourceService";
4
+ export declare const DataSourceServiceDefinition: {
5
+ ListTables: grpc.MethodDefinition<unknown, unknown>;
6
+ DescribeTable: grpc.MethodDefinition<unknown, unknown>;
7
+ SearchTables: grpc.MethodDefinition<unknown, unknown>;
8
+ ExecuteQuery: {
9
+ path: string;
10
+ requestStream: false;
11
+ responseStream: true;
12
+ requestSerialize: grpc.serialize<unknown>;
13
+ requestDeserialize: grpc.deserialize<ExecuteQueryRequest>;
14
+ responseSerialize: grpc.serialize<unknown>;
15
+ responseDeserialize: grpc.deserialize<QueryChunk>;
16
+ originalName: string;
17
+ };
18
+ };
19
+ export declare function createDataSourceGrpcServer(handlers: DataSourceServiceHandlers, options?: DataSourceGrpcOptions): grpc.Server;
20
+ export declare function addDataSourceService(server: grpc.Server, handlers: DataSourceServiceHandlers, options?: DataSourceGrpcOptions): void;
21
+ export declare function arrowChunk(dataBody: Uint8Array, dataHeader?: Uint8Array): QueryChunk;
22
+ export declare function errorChunk(code: DataSourceErrorCode, message: string, options?: {
23
+ retryable?: boolean;
24
+ upstream?: DataSourceError["upstream"];
25
+ }): QueryChunk;
26
+ export declare function toErrorChunk(error: unknown): QueryChunk;
27
+ export { serviceName as DataSourceGrpcServiceName };
28
+ //# sourceMappingURL=grpc.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,286 @@
1
+ import * as grpc from "@grpc/grpc-js";
2
+ import protobuf from "protobufjs";
3
+ import { DataSourceErrorCode, } from "./types.js";
4
+ const datasourceProto = `
5
+ syntax = "proto3";
6
+ package io.channel.datasource.v1;
7
+
8
+ service DataSourceService {
9
+ rpc ListTables(ListTablesRequest) returns (ListTablesResponse);
10
+ rpc DescribeTable(DescribeTableRequest) returns (TableDefinition);
11
+ rpc SearchTables(SearchTablesRequest) returns (SearchTablesResponse);
12
+ rpc ExecuteQuery(ExecuteQueryRequest) returns (stream QueryChunk);
13
+ }
14
+
15
+ message SessionContext {
16
+ string account = 1;
17
+ string channel_id = 2;
18
+ optional string kernel_token = 3;
19
+ string team_member_id = 4;
20
+ optional string datasource_token = 5;
21
+ }
22
+
23
+ message Table {
24
+ string name = 1;
25
+ string description = 2;
26
+ int64 estimated_row_count = 3;
27
+ int64 updated_at = 4;
28
+ int32 table_type = 5;
29
+ }
30
+
31
+ message Column {
32
+ string name = 1;
33
+ string type = 2;
34
+ bool nullable = 3;
35
+ string description = 4;
36
+ bool partition_key = 5;
37
+ int32 precision = 6;
38
+ int32 scale = 7;
39
+ }
40
+
41
+ message TableDefinition {
42
+ Table table = 1;
43
+ repeated Column columns = 2;
44
+ repeated string primary_key = 3;
45
+ }
46
+
47
+ message ListTablesRequest {
48
+ SessionContext session = 1;
49
+ string source_id = 2;
50
+ optional string table_name_filter_pattern = 3;
51
+ }
52
+
53
+ message ListTablesResponse {
54
+ repeated Table tables = 1;
55
+ }
56
+
57
+ message DescribeTableRequest {
58
+ SessionContext session = 1;
59
+ string source_id = 2;
60
+ string table = 3;
61
+ }
62
+
63
+ message SearchTablesRequest {
64
+ SessionContext session = 1;
65
+ string source_id = 2;
66
+ repeated string queries = 3;
67
+ int32 limit = 4;
68
+ }
69
+
70
+ message SearchTablesResponse {
71
+ repeated Table tables = 1;
72
+ }
73
+
74
+ message ExecuteQueryRequest {
75
+ SessionContext session = 1;
76
+ string source_id = 2;
77
+ string query = 3;
78
+ int64 row_limit = 4;
79
+ int64 byte_limit = 5;
80
+ int64 timeout_ms = 6;
81
+ }
82
+
83
+ message ArrowIpcMessage {
84
+ bytes data_header = 1;
85
+ bytes data_body = 2;
86
+ }
87
+
88
+ message QueryChunk {
89
+ oneof payload {
90
+ ArrowIpcMessage arrow = 1;
91
+ QueryResult result = 2;
92
+ DataSourceError error = 3;
93
+ }
94
+ }
95
+
96
+ message QueryResult {
97
+ int64 row_count = 1;
98
+ bool limit_exceeded = 2;
99
+ int64 execution_ms = 3;
100
+ }
101
+
102
+ message DataSourceError {
103
+ int32 code = 1;
104
+ string message = 2;
105
+ bool retryable = 3;
106
+ UpstreamError upstream = 4;
107
+ }
108
+
109
+ message UpstreamError {
110
+ string engine = 1;
111
+ string code = 2;
112
+ string message = 3;
113
+ }
114
+ `;
115
+ const root = protobuf.parse(datasourceProto).root;
116
+ const serviceName = "io.channel.datasource.v1.DataSourceService";
117
+ const servicePath = "/io.channel.datasource.v1.DataSourceService";
118
+ const messageTypes = {
119
+ ListTablesRequest: root.lookupType("io.channel.datasource.v1.ListTablesRequest"),
120
+ ListTablesResponse: root.lookupType("io.channel.datasource.v1.ListTablesResponse"),
121
+ DescribeTableRequest: root.lookupType("io.channel.datasource.v1.DescribeTableRequest"),
122
+ TableDefinition: root.lookupType("io.channel.datasource.v1.TableDefinition"),
123
+ SearchTablesRequest: root.lookupType("io.channel.datasource.v1.SearchTablesRequest"),
124
+ SearchTablesResponse: root.lookupType("io.channel.datasource.v1.SearchTablesResponse"),
125
+ ExecuteQueryRequest: root.lookupType("io.channel.datasource.v1.ExecuteQueryRequest"),
126
+ QueryChunk: root.lookupType("io.channel.datasource.v1.QueryChunk"),
127
+ };
128
+ export const DataSourceServiceDefinition = {
129
+ ListTables: unaryMethod("ListTables", messageTypes.ListTablesRequest, messageTypes.ListTablesResponse),
130
+ DescribeTable: unaryMethod("DescribeTable", messageTypes.DescribeTableRequest, messageTypes.TableDefinition),
131
+ SearchTables: unaryMethod("SearchTables", messageTypes.SearchTablesRequest, messageTypes.SearchTablesResponse),
132
+ ExecuteQuery: {
133
+ path: `${servicePath}/ExecuteQuery`,
134
+ requestStream: false,
135
+ responseStream: true,
136
+ requestSerialize: serializer(messageTypes.ExecuteQueryRequest),
137
+ requestDeserialize: deserializer(messageTypes.ExecuteQueryRequest),
138
+ responseSerialize: serializer(messageTypes.QueryChunk),
139
+ responseDeserialize: deserializer(messageTypes.QueryChunk),
140
+ originalName: "executeQuery",
141
+ },
142
+ };
143
+ export function createDataSourceGrpcServer(handlers, options = {}) {
144
+ const server = new grpc.Server();
145
+ addDataSourceService(server, handlers, options);
146
+ return server;
147
+ }
148
+ export function addDataSourceService(server, handlers, options = {}) {
149
+ const allowedSources = new Set(options.allowedSources ?? []);
150
+ server.addService(DataSourceServiceDefinition, {
151
+ ListTables: unaryHandler(handlers.listTables),
152
+ DescribeTable: unaryHandler(handlers.describeTable),
153
+ SearchTables: unaryHandler(handlers.searchTables),
154
+ ExecuteQuery: (call) => {
155
+ void handleExecuteQuery(call, handlers, allowedSources);
156
+ },
157
+ });
158
+ }
159
+ async function handleExecuteQuery(call, handlers, allowedSources) {
160
+ const validationError = validateExecuteQueryRequest(call.request, allowedSources);
161
+ if (validationError) {
162
+ writeTerminalError(call, errorChunk(validationError.code, validationError.message), validationError.status, validationError.message);
163
+ return;
164
+ }
165
+ const sink = {
166
+ send: (chunk) => call.write(chunk),
167
+ };
168
+ try {
169
+ await handlers.executeQuery(call.request, sink);
170
+ call.end();
171
+ }
172
+ catch (error) {
173
+ const message = error instanceof Error ? error.message : String(error);
174
+ writeTerminalError(call, toErrorChunk(error), grpc.status.UNKNOWN, message);
175
+ }
176
+ }
177
+ export function arrowChunk(dataBody, dataHeader) {
178
+ return {
179
+ arrow: {
180
+ ...(dataHeader ? { dataHeader } : {}),
181
+ dataBody,
182
+ },
183
+ };
184
+ }
185
+ export function errorChunk(code, message, options = {}) {
186
+ return {
187
+ error: {
188
+ code,
189
+ message,
190
+ retryable: options.retryable ?? false,
191
+ ...(options.upstream ? { upstream: options.upstream } : {}),
192
+ },
193
+ };
194
+ }
195
+ export function toErrorChunk(error) {
196
+ const message = error instanceof Error ? error.message : String(error);
197
+ return errorChunk(DataSourceErrorCode.ExternalError, message);
198
+ }
199
+ function unaryMethod(name, requestType, responseType) {
200
+ return {
201
+ path: `${servicePath}/${name}`,
202
+ requestStream: false,
203
+ responseStream: false,
204
+ requestSerialize: serializer(requestType),
205
+ requestDeserialize: deserializer(requestType),
206
+ responseSerialize: serializer(responseType),
207
+ responseDeserialize: deserializer(responseType),
208
+ originalName: name.charAt(0).toLowerCase() + name.slice(1),
209
+ };
210
+ }
211
+ function unaryHandler(handler) {
212
+ return (call, callback) => {
213
+ void (async () => {
214
+ if (!handler) {
215
+ callback({ code: grpc.status.UNIMPLEMENTED, message: "method is not implemented" });
216
+ return;
217
+ }
218
+ try {
219
+ callback(null, await handler(call.request));
220
+ }
221
+ catch (error) {
222
+ callback({
223
+ code: grpc.status.INTERNAL,
224
+ message: error instanceof Error ? error.message : String(error),
225
+ });
226
+ }
227
+ })();
228
+ };
229
+ }
230
+ function serializer(type) {
231
+ return (value) => Buffer.from(type.encode(type.fromObject(value)).finish());
232
+ }
233
+ function deserializer(type) {
234
+ return (buffer) => type.toObject(type.decode(buffer), {
235
+ longs: Number,
236
+ enums: Number,
237
+ bytes: Uint8Array,
238
+ defaults: false,
239
+ arrays: true,
240
+ objects: true,
241
+ });
242
+ }
243
+ function validateExecuteQueryRequest(request, allowedSources) {
244
+ if (!request.session) {
245
+ return {
246
+ code: DataSourceErrorCode.InvalidArgument,
247
+ status: grpc.status.INVALID_ARGUMENT,
248
+ message: "session is required",
249
+ };
250
+ }
251
+ if (!request.sourceId) {
252
+ return {
253
+ code: DataSourceErrorCode.InvalidArgument,
254
+ status: grpc.status.INVALID_ARGUMENT,
255
+ message: "source_id is required",
256
+ };
257
+ }
258
+ if (allowedSources.size > 0 && !allowedSources.has(request.sourceId)) {
259
+ return {
260
+ code: DataSourceErrorCode.SourceNotFound,
261
+ status: grpc.status.NOT_FOUND,
262
+ message: "source_id is not registered",
263
+ };
264
+ }
265
+ if (!request.query?.trim()) {
266
+ return {
267
+ code: DataSourceErrorCode.InvalidArgument,
268
+ status: grpc.status.INVALID_ARGUMENT,
269
+ message: "query is required",
270
+ };
271
+ }
272
+ return undefined;
273
+ }
274
+ function writeTerminalError(call, chunk, code, message) {
275
+ call.write(chunk, () => {
276
+ call.emit("error", grpcStatus(code, message));
277
+ });
278
+ }
279
+ function grpcStatus(code, message) {
280
+ const error = new Error(message);
281
+ error.code = code;
282
+ error.details = message;
283
+ return error;
284
+ }
285
+ export { serviceName as DataSourceGrpcServiceName };
286
+ //# sourceMappingURL=grpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grpc.js","sourceRoot":"","sources":["../../src/datasource/grpc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from "./types.js";
2
+ export * from "./arrow.js";
3
+ export * from "./query-handlers.js";
4
+ export * from "./grpc.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ export * from "./types.js";
2
+ export * from "./arrow.js";
3
+ export * from "./query-handlers.js";
4
+ export * from "./grpc.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,32 @@
1
+ import { type ArrowColumn, type ArrowRow } from "./arrow.js";
2
+ import type { ExecuteQueryHandler } from "./types.js";
3
+ export interface RowQueryHandlerOptions {
4
+ batchSize?: number;
5
+ }
6
+ export type RowSource = Iterable<ArrowRow> | AsyncIterable<ArrowRow>;
7
+ export type RowReader = (query: string, request: Parameters<ExecuteQueryHandler>[0]) => RowSource | Promise<RowSource>;
8
+ export declare function createRowQueryHandler(columns: ArrowColumn[], reader: RowReader, options?: RowQueryHandlerOptions): ExecuteQueryHandler;
9
+ export interface PostgresLikeClient {
10
+ query(query: string): Promise<{
11
+ rows: ArrowRow[];
12
+ }> | {
13
+ rows: ArrowRow[];
14
+ };
15
+ }
16
+ export declare function createPostgresQueryHandler(client: PostgresLikeClient, columns: ArrowColumn[], options?: RowQueryHandlerOptions): ExecuteQueryHandler;
17
+ export interface BigQueryLikeClient {
18
+ query(query: string | {
19
+ query: string;
20
+ [key: string]: unknown;
21
+ }): Promise<[ArrowRow[], unknown?] | ArrowRow[]>;
22
+ createQueryStream?: (query: string | {
23
+ query: string;
24
+ [key: string]: unknown;
25
+ }) => RowSource;
26
+ }
27
+ export interface BigQueryQueryHandlerOptions extends RowQueryHandlerOptions {
28
+ queryOptions?: Record<string, unknown>;
29
+ preferQueryStream?: boolean;
30
+ }
31
+ export declare function createBigQueryQueryHandler(client: BigQueryLikeClient, columns: ArrowColumn[], options?: BigQueryQueryHandlerOptions): ExecuteQueryHandler;
32
+ //# sourceMappingURL=query-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-handlers.d.ts","sourceRoot":"","sources":["../../src/datasource/query-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAErE,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KACxC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAEpC,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,WAAW,EAAE,EACtB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,sBAA2B,GACnC,mBAAmB,CAqBrB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC,GAAG;QAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC;CAC5E;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,WAAW,EAAE,EACtB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,mBAAmB,CASrB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CACH,KAAK,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GACxD,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC;IAChD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,SAAS,CAAC;CAC9F;AAED,MAAM,WAAW,2BAA4B,SAAQ,sBAAsB;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,WAAW,EAAE,EACtB,OAAO,GAAE,2BAAgC,GACxC,mBAAmB,CAmBrB"}
@@ -0,0 +1,58 @@
1
+ import { arrowRowsChunk, resultChunk } from "./arrow.js";
2
+ export function createRowQueryHandler(columns, reader, options = {}) {
3
+ const batchSize = options.batchSize && options.batchSize > 0 ? options.batchSize : 1024;
4
+ return async (request, sink) => {
5
+ const startedAt = Date.now();
6
+ const rows = toAsyncRows(await reader(request.query ?? "", request));
7
+ let rowCount = 0;
8
+ let batch = [];
9
+ for await (const row of rows) {
10
+ rowCount += 1;
11
+ batch.push(row);
12
+ if (batch.length >= batchSize) {
13
+ sink.send(arrowRowsChunk(columns, batch));
14
+ batch = [];
15
+ }
16
+ }
17
+ if (batch.length > 0) {
18
+ sink.send(arrowRowsChunk(columns, batch));
19
+ }
20
+ sink.send(resultChunk(rowCount, false, Date.now() - startedAt));
21
+ };
22
+ }
23
+ export function createPostgresQueryHandler(client, columns, options) {
24
+ return createRowQueryHandler(columns, async (query) => {
25
+ const result = await client.query(query);
26
+ return result.rows;
27
+ }, options);
28
+ }
29
+ export function createBigQueryQueryHandler(client, columns, options = {}) {
30
+ return createRowQueryHandler(columns, async (query) => {
31
+ const request = options.queryOptions && Object.keys(options.queryOptions).length > 0
32
+ ? { ...options.queryOptions, query }
33
+ : query;
34
+ if (options.preferQueryStream !== false && client.createQueryStream) {
35
+ return client.createQueryStream(request);
36
+ }
37
+ const result = await client.query(request);
38
+ if (Array.isArray(result[0])) {
39
+ return result[0];
40
+ }
41
+ return result;
42
+ }, options);
43
+ }
44
+ async function* toAsyncRows(source) {
45
+ if (isAsyncIterable(source)) {
46
+ for await (const row of source) {
47
+ yield row;
48
+ }
49
+ return;
50
+ }
51
+ for (const row of source) {
52
+ yield row;
53
+ }
54
+ }
55
+ function isAsyncIterable(source) {
56
+ return Symbol.asyncIterator in source;
57
+ }
58
+ //# sourceMappingURL=query-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-handlers.js","sourceRoot":"","sources":["../../src/datasource/query-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ export declare const DataSourceErrorCode: {
2
+ readonly Unspecified: 0;
3
+ readonly Unavailable: 1;
4
+ readonly Unauthenticated: 2;
5
+ readonly PermissionDenied: 3;
6
+ readonly SourceNotFound: 4;
7
+ readonly QueryInvalid: 5;
8
+ readonly QueryFailed: 6;
9
+ readonly LimitExceeded: 7;
10
+ readonly Timeout: 8;
11
+ readonly UpstreamAuthFailed: 9;
12
+ readonly Internal: 10;
13
+ readonly TableNotFound: 11;
14
+ readonly ColumnNotFound: 12;
15
+ readonly Cancelled: 13;
16
+ readonly ResourceExhausted: 14;
17
+ readonly InvalidArgument: 15;
18
+ readonly ExternalError: 16;
19
+ };
20
+ export type DataSourceErrorCode = (typeof DataSourceErrorCode)[keyof typeof DataSourceErrorCode];
21
+ export interface SessionContext {
22
+ account?: string;
23
+ channelId?: string;
24
+ kernelToken?: string;
25
+ teamMemberId?: string;
26
+ datasourceToken?: string;
27
+ }
28
+ export interface ListTablesRequest {
29
+ session?: SessionContext;
30
+ sourceId?: string;
31
+ tableNameFilterPattern?: string;
32
+ }
33
+ export interface Table {
34
+ name?: string;
35
+ description?: string;
36
+ estimatedRowCount?: number;
37
+ updatedAt?: number;
38
+ tableType?: number;
39
+ }
40
+ export interface ListTablesResponse {
41
+ tables?: Table[];
42
+ }
43
+ export interface DescribeTableRequest {
44
+ session?: SessionContext;
45
+ sourceId?: string;
46
+ table?: string;
47
+ }
48
+ export interface Column {
49
+ name?: string;
50
+ type?: string;
51
+ nullable?: boolean;
52
+ description?: string;
53
+ partitionKey?: boolean;
54
+ precision?: number;
55
+ scale?: number;
56
+ }
57
+ export interface TableDefinition {
58
+ table?: Table;
59
+ columns?: Column[];
60
+ primaryKey?: string[];
61
+ }
62
+ export interface SearchTablesRequest {
63
+ session?: SessionContext;
64
+ sourceId?: string;
65
+ queries?: string[];
66
+ limit?: number;
67
+ }
68
+ export interface SearchTablesResponse {
69
+ tables?: Table[];
70
+ }
71
+ export interface ExecuteQueryRequest {
72
+ session?: SessionContext;
73
+ sourceId?: string;
74
+ query?: string;
75
+ rowLimit?: number;
76
+ byteLimit?: number;
77
+ timeoutMs?: number;
78
+ }
79
+ export interface ArrowIpcMessage {
80
+ dataHeader?: Uint8Array;
81
+ dataBody?: Uint8Array;
82
+ }
83
+ export interface QueryResult {
84
+ rowCount?: number;
85
+ limitExceeded?: boolean;
86
+ executionMs?: number;
87
+ }
88
+ export interface UpstreamError {
89
+ engine?: string;
90
+ code?: string;
91
+ message?: string;
92
+ }
93
+ export interface DataSourceError {
94
+ code?: DataSourceErrorCode;
95
+ message?: string;
96
+ retryable?: boolean;
97
+ upstream?: UpstreamError;
98
+ }
99
+ export interface QueryChunk {
100
+ arrow?: ArrowIpcMessage;
101
+ result?: QueryResult;
102
+ error?: DataSourceError;
103
+ }
104
+ export interface QueryChunkSink {
105
+ send(chunk: QueryChunk): void;
106
+ }
107
+ export type ExecuteQueryHandler = (request: ExecuteQueryRequest, sink: QueryChunkSink) => void | Promise<void>;
108
+ export interface DataSourceServiceHandlers {
109
+ listTables?: (request: ListTablesRequest) => ListTablesResponse | Promise<ListTablesResponse>;
110
+ describeTable?: (request: DescribeTableRequest) => TableDefinition | Promise<TableDefinition>;
111
+ searchTables?: (request: SearchTablesRequest) => SearchTablesResponse | Promise<SearchTablesResponse>;
112
+ executeQuery: ExecuteQueryHandler;
113
+ }
114
+ export interface DataSourceGrpcOptions {
115
+ allowedSources?: string[];
116
+ }
117
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/datasource/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export const DataSourceErrorCode = {
2
+ Unspecified: 0,
3
+ Unavailable: 1,
4
+ Unauthenticated: 2,
5
+ PermissionDenied: 3,
6
+ SourceNotFound: 4,
7
+ QueryInvalid: 5,
8
+ QueryFailed: 6,
9
+ LimitExceeded: 7,
10
+ Timeout: 8,
11
+ UpstreamAuthFailed: 9,
12
+ Internal: 10,
13
+ TableNotFound: 11,
14
+ ColumnNotFound: 12,
15
+ Cancelled: 13,
16
+ ResourceExhausted: 14,
17
+ InvalidArgument: 15,
18
+ ExternalError: 16,
19
+ };
20
+ //# sourceMappingURL=types.js.map
@@ -0,0 +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,3 +1,3 @@
1
- export declare const SDK_EXTENSION_NAMES: readonly ["oauth", "apikey", "config", "calendar", "messaging", "messenger", "command", "widget", "customtab", "hook", "polling", "store", "commerce", "order", "wms", "alfTask"];
1
+ export declare const SDK_EXTENSION_NAMES: readonly ["oauth", "apikey", "config", "calendar", "messaging", "messenger", "command", "widget", "customtab", "hook", "polling", "store", "datasource", "commerce", "order", "wms", "alfTask"];
2
2
  export type SdkExtensionName = (typeof SDK_EXTENSION_NAMES)[number];
3
3
  //# sourceMappingURL=extension-names.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension-names.d.ts","sourceRoot":"","sources":["../../src/decorators/extension-names.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,mLAiBtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"extension-names.d.ts","sourceRoot":"","sources":["../../src/decorators/extension-names.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,iMAkBtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -11,6 +11,7 @@ export const SDK_EXTENSION_NAMES = [
11
11
  "hook",
12
12
  "polling",
13
13
  "store",
14
+ "datasource",
14
15
  "commerce",
15
16
  "order",
16
17
  "wms",
@@ -1 +1 @@
1
- {"version":3,"file":"extension-names.js","sourceRoot":"","sources":["../../src/decorators/extension-names.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,WAAW;IACX,WAAW;IACX,SAAS;IACT,QAAQ;IACR,WAAW;IACX,MAAM;IACN,SAAS;IACT,OAAO;IACP,UAAU;IACV,OAAO;IACP,KAAK;IACL,SAAS;CACD,CAAC"}
1
+ {"version":3,"file":"extension-names.js","sourceRoot":"","sources":["../../src/decorators/extension-names.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,WAAW;IACX,WAAW;IACX,SAAS;IACT,QAAQ;IACR,WAAW;IACX,MAAM;IACN,SAAS;IACT,OAAO;IACP,YAAY;IACZ,UAAU;IACV,OAAO;IACP,KAAK;IACL,SAAS;CACD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * from "./token/index.js";
6
6
  export * from "./appstore/index.js";
7
7
  export * from "./guards/index.js";
8
8
  export * from "./native/index.js";
9
+ export * from "./datasource/index.js";
9
10
  export * from "./simple/index.js";
10
11
  export * from "./testing/index.js";
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAC;AAGzC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAC;AAGzC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -14,6 +14,8 @@ export * from "./appstore/index.js";
14
14
  export * from "./guards/index.js";
15
15
  // Export native function client
16
16
  export * from "./native/index.js";
17
+ // Export datasource gRPC helpers
18
+ export * from "./datasource/index.js";
17
19
  // Export simple MCP-like API
18
20
  export * from "./simple/index.js";
19
21
  // Export testing utilities
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,0BAA0B,CAAC;AAEzC,mCAAmC;AACnC,cAAc,mBAAmB,CAAC;AAElC,oBAAoB;AACpB,cAAc,uBAAuB,CAAC;AAEtC,2BAA2B;AAC3B,cAAc,sBAAsB,CAAC;AAErC,oCAAoC;AACpC,cAAc,kBAAkB,CAAC;AAEjC,mCAAmC;AACnC,cAAc,qBAAqB,CAAC;AAEpC,+BAA+B;AAC/B,cAAc,mBAAmB,CAAC;AAElC,gCAAgC;AAChC,cAAc,mBAAmB,CAAC;AAElC,6BAA6B;AAC7B,cAAc,mBAAmB,CAAC;AAElC,2BAA2B;AAC3B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,0BAA0B,CAAC;AAEzC,mCAAmC;AACnC,cAAc,mBAAmB,CAAC;AAElC,oBAAoB;AACpB,cAAc,uBAAuB,CAAC;AAEtC,2BAA2B;AAC3B,cAAc,sBAAsB,CAAC;AAErC,oCAAoC;AACpC,cAAc,kBAAkB,CAAC;AAEjC,mCAAmC;AACnC,cAAc,qBAAqB,CAAC;AAEpC,+BAA+B;AAC/B,cAAc,mBAAmB,CAAC;AAElC,gCAAgC;AAChC,cAAc,mBAAmB,CAAC;AAElC,iCAAiC;AACjC,cAAc,uBAAuB,CAAC;AAEtC,6BAA6B;AAC7B,cAAc,mBAAmB,CAAC;AAElC,2BAA2B;AAC3B,cAAc,oBAAoB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type FunctionCallRequest } from "@channel.io/app-sdk-core";
1
+ import { type FunctionCallRequest, type FunctionCallResponse } from "@channel.io/app-sdk-core";
2
2
  import { ChannelAppService } from "./channel-app.service.js";
3
3
  export declare class ChannelAppController {
4
4
  private readonly channelAppService;
@@ -8,7 +8,7 @@ export declare class ChannelAppController {
8
8
  * Versioned endpoint: PUT /functions/:version
9
9
  * ch-app-store calls this endpoint with systemVersion (e.g., /functions/v1)
10
10
  */
11
- handleVersionedFunctions(version: string, body: FunctionCallRequest): Promise<import("@channel.io/app-sdk-core").FunctionCallResponse<unknown>>;
11
+ handleVersionedFunctions(version: string, body: FunctionCallRequest): Promise<FunctionCallResponse>;
12
12
  /**
13
13
  * Common request handler
14
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"channel-app.controller.d.ts","sourceRoot":"","sources":["../../src/nestjs/channel-app.controller.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,mBAAmB,EAGzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,qBACa,oBAAoB;IAGnB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAF9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;gBAEnC,iBAAiB,EAAE,iBAAiB;IAEjE;;;OAGG;IAEG,wBAAwB,CACV,OAAO,EAAE,MAAM,EACzB,IAAI,EAAE,mBAAmB;IAKnC;;OAEG;YACW,aAAa;CAqC5B"}
1
+ {"version":3,"file":"channel-app.controller.d.ts","sourceRoot":"","sources":["../../src/nestjs/channel-app.controller.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAG1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,qBACa,oBAAoB;IAGnB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAF9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;gBAEnC,iBAAiB,EAAE,iBAAiB;IAEjE;;;OAGG;IAEG,wBAAwB,CACV,OAAO,EAAE,MAAM,EACzB,IAAI,EAAE,mBAAmB,GAChC,OAAO,CAAC,oBAAoB,CAAC;IAIhC;;OAEG;YACW,aAAa;CAwC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"channel-app.controller.js","sourceRoot":"","sources":["../../src/nestjs/channel-app.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAEL,qBAAqB,EACrB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGtD,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAGF;IAFZ,MAAM,GAAG,IAAI,MAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAEhE,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAAG,CAAC;IAErE;;;OAGG;IAEG,AAAN,KAAK,CAAC,wBAAwB,CACV,OAAe,EACzB,IAAyB;QAEjC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,IAAyB,EAAE,OAAgB;QACrE,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;YAEzE,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;gBAC3C,MAAM,IAAI,aAAa,CACrB;oBACE,KAAK,EAAE,oBAAoB;oBAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,EACD,UAAU,CAAC,SAAS,CACrB,CAAC;YACJ,CAAC;YAED,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACrC,MAAM,IAAI,aAAa,CACrB;oBACE,KAAK,EAAE,kBAAkB;oBACzB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,EACD,UAAU,CAAC,WAAW,CACvB,CAAC;YACJ,CAAC;YAED,6BAA6B;YAC7B,MAAM,IAAI,aAAa,CACrB;gBACE,KAAK,EAAE,gBAAgB;gBACvB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAClE,EACD,UAAU,CAAC,qBAAqB,CACjC,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AA/CO;IADL,GAAG,CAAC,UAAU,CAAC;IAEb,WAAA,KAAK,CAAC,SAAS,CAAC,CAAA;IAChB,WAAA,IAAI,EAAE,CAAA;;;;oEAGR;AAfU,oBAAoB;IADhC,UAAU,CAAC,WAAW,CAAC;qCAI0B,iBAAiB;GAHtD,oBAAoB,CAyDhC"}
1
+ {"version":3,"file":"channel-app.controller.js","sourceRoot":"","sources":["../../src/nestjs/channel-app.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAGL,qBAAqB,EACrB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGtD,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAGF;IAFZ,MAAM,GAAG,IAAI,MAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAEhE,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAAG,CAAC;IAErE;;;OAGG;IAEG,AAAN,KAAK,CAAC,wBAAwB,CACV,OAAe,EACzB,IAAyB;QAEjC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CACzB,IAAyB,EACzB,OAAgB;QAEhB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;YAEzE,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;gBAC3C,MAAM,IAAI,aAAa,CACrB;oBACE,KAAK,EAAE,oBAAoB;oBAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,EACD,UAAU,CAAC,SAAS,CACrB,CAAC;YACJ,CAAC;YAED,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACrC,MAAM,IAAI,aAAa,CACrB;oBACE,KAAK,EAAE,kBAAkB;oBACzB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,EACD,UAAU,CAAC,WAAW,CACvB,CAAC;YACJ,CAAC;YAED,6BAA6B;YAC7B,MAAM,IAAI,aAAa,CACrB;gBACE,KAAK,EAAE,gBAAgB;gBACvB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAClE,EACD,UAAU,CAAC,qBAAqB,CACjC,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAlDO;IADL,GAAG,CAAC,UAAU,CAAC;IAEb,WAAA,KAAK,CAAC,SAAS,CAAC,CAAA;IAChB,WAAA,IAAI,EAAE,CAAA;;;;oEAGR;AAfU,oBAAoB;IADhC,UAAU,CAAC,WAAW,CAAC;qCAI0B,iBAAiB;GAHtD,oBAAoB,CA4DhC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@channel.io/app-sdk-server",
3
- "version": "0.13.1",
3
+ "version": "0.14.0",
4
4
  "description": "NestJS server SDK for Channel.io apps",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -21,9 +21,12 @@
21
21
  "dist"
22
22
  ],
23
23
  "dependencies": {
24
+ "@grpc/grpc-js": "^1.14.4",
25
+ "apache-arrow": "^21.1.0",
26
+ "protobufjs": "^8.6.5",
24
27
  "zod": "^3.24.1",
25
28
  "zod-to-json-schema": "^3.24.1",
26
- "@channel.io/app-sdk-core": "0.13.1"
29
+ "@channel.io/app-sdk-core": "0.14.0"
27
30
  },
28
31
  "peerDependencies": {
29
32
  "@nestjs/common": ">=10.0.0",
@@ -51,8 +54,8 @@
51
54
  },
52
55
  "repository": {
53
56
  "type": "git",
54
- "url": "https://github.com/channel-io/app-sdk.git",
55
- "directory": "packages/server"
57
+ "url": "https://github.com/channel-io/cht-app-sdk.git",
58
+ "directory": "ts/packages/server"
56
59
  },
57
60
  "license": "MIT",
58
61
  "publishConfig": {