@channel.io/app-sdk-core 0.13.1 → 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.
Files changed (94) hide show
  1. package/dist/extensions/datasource.d.ts +522 -0
  2. package/dist/extensions/datasource.d.ts.map +1 -0
  3. package/dist/extensions/datasource.js +193 -0
  4. package/dist/extensions/datasource.js.map +1 -0
  5. package/dist/extensions/function-schemas.d.ts +17428 -0
  6. package/dist/extensions/function-schemas.d.ts.map +1 -0
  7. package/dist/extensions/function-schemas.js +459 -0
  8. package/dist/extensions/function-schemas.js.map +1 -0
  9. package/dist/extensions/index.d.ts +2 -0
  10. package/dist/extensions/index.d.ts.map +1 -1
  11. package/dist/extensions/index.js +4 -0
  12. package/dist/extensions/index.js.map +1 -1
  13. package/dist/extensions/interfaces/datasource.d.ts +29 -0
  14. package/dist/extensions/interfaces/datasource.d.ts.map +1 -0
  15. package/dist/extensions/interfaces/datasource.js +6 -0
  16. package/dist/extensions/interfaces/datasource.js.map +1 -0
  17. package/dist/extensions/interfaces/index.d.ts +1 -0
  18. package/dist/extensions/interfaces/index.d.ts.map +1 -1
  19. package/dist/extensions/interfaces/index.js +1 -0
  20. package/dist/extensions/interfaces/index.js.map +1 -1
  21. package/dist/extensions/messaging.d.ts +59 -55
  22. package/dist/extensions/messaging.d.ts.map +1 -1
  23. package/dist/extensions/messaging.js.map +1 -1
  24. package/dist/extensions/proto-contracts.d.ts +183 -0
  25. package/dist/extensions/proto-contracts.d.ts.map +1 -0
  26. package/dist/extensions/proto-contracts.js +2 -0
  27. package/dist/extensions/proto-contracts.js.map +1 -0
  28. package/dist/gen/channel/app/sdk/v1/common.d.ts +586 -0
  29. package/dist/gen/channel/app/sdk/v1/common.d.ts.map +1 -0
  30. package/dist/gen/channel/app/sdk/v1/common.js +201 -0
  31. package/dist/gen/channel/app/sdk/v1/common.js.map +1 -0
  32. package/dist/gen/channel/app/sdk/v1/common.zod.d.ts +970 -0
  33. package/dist/gen/channel/app/sdk/v1/common.zod.d.ts.map +1 -0
  34. package/dist/gen/channel/app/sdk/v1/common.zod.js +230 -0
  35. package/dist/gen/channel/app/sdk/v1/common.zod.js.map +1 -0
  36. package/dist/gen/channel/app/sdk/v1/context.d.ts +52 -0
  37. package/dist/gen/channel/app/sdk/v1/context.d.ts.map +1 -0
  38. package/dist/gen/channel/app/sdk/v1/context.js +8 -0
  39. package/dist/gen/channel/app/sdk/v1/context.js.map +1 -0
  40. package/dist/gen/channel/app/sdk/v1/context.zod.d.ts +190 -0
  41. package/dist/gen/channel/app/sdk/v1/context.zod.d.ts.map +1 -0
  42. package/dist/gen/channel/app/sdk/v1/context.zod.js +41 -0
  43. package/dist/gen/channel/app/sdk/v1/context.zod.js.map +1 -0
  44. package/dist/gen/channel/app/sdk/v1/error.d.ts +8 -0
  45. package/dist/gen/channel/app/sdk/v1/error.d.ts.map +1 -0
  46. package/dist/gen/channel/app/sdk/v1/error.js +8 -0
  47. package/dist/gen/channel/app/sdk/v1/error.js.map +1 -0
  48. package/dist/gen/channel/app/sdk/v1/error.zod.d.ts +19 -0
  49. package/dist/gen/channel/app/sdk/v1/error.zod.d.ts.map +1 -0
  50. package/dist/gen/channel/app/sdk/v1/error.zod.js +9 -0
  51. package/dist/gen/channel/app/sdk/v1/error.zod.js.map +1 -0
  52. package/dist/gen/channel/app/sdk/v1/extension.d.ts +1131 -0
  53. package/dist/gen/channel/app/sdk/v1/extension.d.ts.map +1 -0
  54. package/dist/gen/channel/app/sdk/v1/extension.js +7 -0
  55. package/dist/gen/channel/app/sdk/v1/extension.js.map +1 -0
  56. package/dist/gen/channel/app/sdk/v1/extension.zod.d.ts +14581 -0
  57. package/dist/gen/channel/app/sdk/v1/extension.zod.d.ts.map +1 -0
  58. package/dist/gen/channel/app/sdk/v1/extension.zod.js +1018 -0
  59. package/dist/gen/channel/app/sdk/v1/extension.zod.js.map +1 -0
  60. package/dist/gen/channel/app/sdk/v1/function.d.ts +29 -0
  61. package/dist/gen/channel/app/sdk/v1/function.d.ts.map +1 -0
  62. package/dist/gen/channel/app/sdk/v1/function.js +7 -0
  63. package/dist/gen/channel/app/sdk/v1/function.js.map +1 -0
  64. package/dist/gen/channel/app/sdk/v1/function.zod.d.ts +288 -0
  65. package/dist/gen/channel/app/sdk/v1/function.zod.d.ts.map +1 -0
  66. package/dist/gen/channel/app/sdk/v1/function.zod.js +26 -0
  67. package/dist/gen/channel/app/sdk/v1/function.zod.js.map +1 -0
  68. package/dist/gen/channel/app/sdk/v1/native.d.ts +51 -0
  69. package/dist/gen/channel/app/sdk/v1/native.d.ts.map +1 -0
  70. package/dist/gen/channel/app/sdk/v1/native.js +7 -0
  71. package/dist/gen/channel/app/sdk/v1/native.js.map +1 -0
  72. package/dist/gen/channel/app/sdk/v1/native.zod.d.ts +356 -0
  73. package/dist/gen/channel/app/sdk/v1/native.zod.d.ts.map +1 -0
  74. package/dist/gen/channel/app/sdk/v1/native.zod.js +52 -0
  75. package/dist/gen/channel/app/sdk/v1/native.zod.js.map +1 -0
  76. package/dist/gen/google/protobuf/struct.d.ts +71 -0
  77. package/dist/gen/google/protobuf/struct.d.ts.map +1 -0
  78. package/dist/gen/google/protobuf/struct.js +19 -0
  79. package/dist/gen/google/protobuf/struct.js.map +1 -0
  80. package/dist/gen/io/channel/datasource/v1/datasource.d.ts +143 -0
  81. package/dist/gen/io/channel/datasource/v1/datasource.d.ts.map +1 -0
  82. package/dist/gen/io/channel/datasource/v1/datasource.js +36 -0
  83. package/dist/gen/io/channel/datasource/v1/datasource.js.map +1 -0
  84. package/dist/gen/io/channel/datasource/v1/datasource.zod.d.ts +598 -0
  85. package/dist/gen/io/channel/datasource/v1/datasource.zod.d.ts.map +1 -0
  86. package/dist/gen/io/channel/datasource/v1/datasource.zod.js +88 -0
  87. package/dist/gen/io/channel/datasource/v1/datasource.zod.js.map +1 -0
  88. package/dist/index.d.ts +7 -0
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +8 -0
  91. package/dist/index.js.map +1 -1
  92. package/dist/types/extension.d.ts +1 -1
  93. package/dist/types/extension.d.ts.map +1 -1
  94. package/package.json +3 -3
@@ -0,0 +1,193 @@
1
+ import { z } from "zod";
2
+ const DataSourceNonEmptyStringSchema = z.string().min(1);
3
+ export const DataSourceDialectSchema = z.enum(["postgresql", "bigquery"]);
4
+ export const DataSourceTableTypeSchema = z.enum(["table", "view", "materialized_view", "external"]);
5
+ export const DataSourceCatalogSchema = z.object({
6
+ alias: DataSourceNonEmptyStringSchema,
7
+ displayName: z.string().optional(),
8
+ dialect: DataSourceDialectSchema,
9
+ active: z.boolean().optional(),
10
+ });
11
+ export const DataSourceTableSchema = z.object({
12
+ name: DataSourceNonEmptyStringSchema,
13
+ localCatalogAlias: z.string().optional(),
14
+ description: z.string().optional(),
15
+ estimatedRowCount: z.number().int().nonnegative().optional(),
16
+ updatedAt: z.number().int().nonnegative().optional(),
17
+ tableType: DataSourceTableTypeSchema.optional(),
18
+ });
19
+ export const DataSourceColumnSchema = z.object({
20
+ name: DataSourceNonEmptyStringSchema,
21
+ type: DataSourceNonEmptyStringSchema,
22
+ nullable: z.boolean(),
23
+ description: z.string().optional(),
24
+ partitionKey: z.boolean().optional(),
25
+ precision: z.number().int().nonnegative().optional(),
26
+ scale: z.number().int().nonnegative().optional(),
27
+ });
28
+ export const DataSourceTableDefinitionSchema = z.object({
29
+ table: DataSourceTableSchema,
30
+ columns: z.array(DataSourceColumnSchema),
31
+ primaryKey: z.array(DataSourceNonEmptyStringSchema).optional(),
32
+ });
33
+ export const DataSourceTableListingSchema = z.object({
34
+ table: DataSourceTableSchema,
35
+ searchText: z.string().optional(),
36
+ tags: z.array(DataSourceNonEmptyStringSchema).optional(),
37
+ });
38
+ export const ListCatalogsInputSchema = z.object({});
39
+ export const ListCatalogsOutputSchema = z.object({
40
+ catalogs: z.array(DataSourceCatalogSchema),
41
+ });
42
+ export const ListTablesInputSchema = z.object({
43
+ localCatalogAlias: z.string().optional(),
44
+ updatedAfter: z.string().optional(),
45
+ limit: z.number().int().positive().optional(),
46
+ pageToken: z.string().optional(),
47
+ });
48
+ export const ListTablesOutputSchema = z.object({
49
+ tables: z.array(DataSourceTableListingSchema),
50
+ nextPageToken: z.string().optional(),
51
+ metadataVersion: z.string().optional(),
52
+ });
53
+ export const DescribeTableInputSchema = z.object({
54
+ localCatalogAlias: z.string().optional(),
55
+ tableName: DataSourceNonEmptyStringSchema,
56
+ includeSample: z.boolean().optional(),
57
+ });
58
+ export const DescribeTableOutputSchema = z.object({
59
+ definition: DataSourceTableDefinitionSchema,
60
+ sample: z.array(z.record(z.string(), z.unknown())).optional(),
61
+ metadataVersion: z.string().optional(),
62
+ });
63
+ export const DataSourceSamplePolicy = {
64
+ maxRows: 10,
65
+ maxBytes: 64 * 1024,
66
+ };
67
+ export function validateDataSourceSample(definition, sample) {
68
+ if (sample.length > DataSourceSamplePolicy.maxRows) {
69
+ throw new Error(`DataSource sample must have at most ${DataSourceSamplePolicy.maxRows} rows`);
70
+ }
71
+ const encoded = JSON.stringify(sample);
72
+ if (utf8ByteLength(encoded) > DataSourceSamplePolicy.maxBytes) {
73
+ throw new Error(`DataSource sample must be at most ${DataSourceSamplePolicy.maxBytes} bytes`);
74
+ }
75
+ const columns = new Set(definition.columns.map((column) => column.name));
76
+ sample.forEach((row, rowIndex) => {
77
+ for (const key of Object.keys(row)) {
78
+ if (!columns.has(key)) {
79
+ throw new Error(`DataSource sample row ${rowIndex} has unknown column: ${key}`);
80
+ }
81
+ }
82
+ });
83
+ }
84
+ export function createDataSourceExtension(provider) {
85
+ return {
86
+ name: "datasource",
87
+ systemVersion: "v1",
88
+ groups: {
89
+ catalog: {
90
+ listCatalogs: {
91
+ description: "Return datasource catalogs exposed by this app.",
92
+ input: ListCatalogsInputSchema,
93
+ output: ListCatalogsOutputSchema,
94
+ handler: async (ctx, input) => {
95
+ const params = ListCatalogsInputSchema.parse(input);
96
+ return ListCatalogsOutputSchema.parse(await provider.listCatalogs(ctx, params));
97
+ },
98
+ },
99
+ listTables: {
100
+ description: "Return lightweight datasource table metadata.",
101
+ input: ListTablesInputSchema,
102
+ output: ListTablesOutputSchema,
103
+ handler: async (ctx, input) => {
104
+ const params = ListTablesInputSchema.parse(input);
105
+ return ListTablesOutputSchema.parse(await provider.listTables(ctx, params));
106
+ },
107
+ },
108
+ describeTable: {
109
+ description: "Return detailed datasource table metadata.",
110
+ input: DescribeTableInputSchema,
111
+ output: DescribeTableOutputSchema,
112
+ handler: async (ctx, input) => {
113
+ const params = DescribeTableInputSchema.parse(input);
114
+ const output = DescribeTableOutputSchema.parse(await provider.describeTable(ctx, params));
115
+ if (output.sample) {
116
+ validateDataSourceSample(output.definition, output.sample);
117
+ }
118
+ return output;
119
+ },
120
+ },
121
+ },
122
+ },
123
+ };
124
+ }
125
+ export function createStaticDataSourceExtension(metadata) {
126
+ const catalogs = metadata.catalogs.map((catalog) => DataSourceCatalogSchema.parse(catalog));
127
+ const tables = metadata.tables.map((table) => DataSourceTableListingSchema.parse(table));
128
+ const definitions = new Map(metadata.definitions.map((definition) => {
129
+ const parsed = DataSourceTableDefinitionSchema.parse(definition);
130
+ return [tableKey(parsed.table.localCatalogAlias, parsed.table.name), parsed];
131
+ }));
132
+ return createDataSourceExtension({
133
+ listCatalogs: () => ({ catalogs }),
134
+ listTables: (_ctx, input) => {
135
+ const offset = parsePageToken(input.pageToken);
136
+ const filtered = tables.filter((table) => !input.localCatalogAlias || table.table.localCatalogAlias === input.localCatalogAlias);
137
+ const limit = input.limit ?? filtered.length;
138
+ const end = Math.min(offset + limit, filtered.length);
139
+ return {
140
+ tables: filtered.slice(offset, end),
141
+ ...(end < filtered.length ? { nextPageToken: String(end) } : {}),
142
+ };
143
+ },
144
+ describeTable: (_ctx, input) => {
145
+ const definition = definitions.get(tableKey(input.localCatalogAlias, input.tableName));
146
+ if (!definition) {
147
+ throw new Error("DataSource table definition not found");
148
+ }
149
+ const sample = metadata.samples?.[tableKey(input.localCatalogAlias, input.tableName)];
150
+ if (input.includeSample && sample) {
151
+ validateDataSourceSample(definition, sample);
152
+ return { definition, sample };
153
+ }
154
+ return { definition };
155
+ },
156
+ });
157
+ }
158
+ function tableKey(localCatalogAlias, tableName) {
159
+ return `${localCatalogAlias ?? ""}\u0000${tableName}`;
160
+ }
161
+ function parsePageToken(pageToken) {
162
+ if (!pageToken) {
163
+ return 0;
164
+ }
165
+ const offset = Number(pageToken);
166
+ if (!Number.isInteger(offset) || offset < 0) {
167
+ throw new Error("DataSource pageToken must be a non-negative offset");
168
+ }
169
+ return offset;
170
+ }
171
+ function utf8ByteLength(value) {
172
+ let bytes = 0;
173
+ for (let index = 0; index < value.length; index += 1) {
174
+ const codePoint = value.codePointAt(index) ?? 0;
175
+ if (codePoint > 0xffff) {
176
+ index += 1;
177
+ }
178
+ if (codePoint <= 0x7f) {
179
+ bytes += 1;
180
+ }
181
+ else if (codePoint <= 0x7ff) {
182
+ bytes += 2;
183
+ }
184
+ else if (codePoint <= 0xffff) {
185
+ bytes += 3;
186
+ }
187
+ else {
188
+ bytes += 4;
189
+ }
190
+ }
191
+ return bytes;
192
+ }
193
+ //# sourceMappingURL=datasource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../src/extensions/datasource.ts"],"names":[],"mappings":"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"}