@tinybirdco/sdk 0.0.44 → 0.0.45
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/README.md +53 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +4 -3
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/migrate.test.js +42 -4
- package/dist/cli/commands/migrate.test.js.map +1 -1
- package/dist/generator/connection.d.ts +1 -1
- package/dist/generator/connection.d.ts.map +1 -1
- package/dist/generator/connection.js +25 -2
- package/dist/generator/connection.js.map +1 -1
- package/dist/generator/connection.test.js +37 -14
- package/dist/generator/connection.test.js.map +1 -1
- package/dist/generator/datasource.d.ts.map +1 -1
- package/dist/generator/datasource.js +23 -0
- package/dist/generator/datasource.js.map +1 -1
- package/dist/generator/datasource.test.js +49 -5
- package/dist/generator/datasource.test.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/migrate/emit-ts.d.ts.map +1 -1
- package/dist/migrate/emit-ts.js +69 -13
- package/dist/migrate/emit-ts.js.map +1 -1
- package/dist/migrate/parse-connection.d.ts +2 -2
- package/dist/migrate/parse-connection.d.ts.map +1 -1
- package/dist/migrate/parse-connection.js +61 -18
- package/dist/migrate/parse-connection.js.map +1 -1
- package/dist/migrate/parse-datasource.d.ts.map +1 -1
- package/dist/migrate/parse-datasource.js +31 -0
- package/dist/migrate/parse-datasource.js.map +1 -1
- package/dist/migrate/types.d.ts +18 -1
- package/dist/migrate/types.d.ts.map +1 -1
- package/dist/schema/connection.d.ts +49 -6
- package/dist/schema/connection.d.ts.map +1 -1
- package/dist/schema/connection.js +44 -9
- package/dist/schema/connection.js.map +1 -1
- package/dist/schema/connection.test.js +72 -17
- package/dist/schema/connection.test.js.map +1 -1
- package/dist/schema/datasource.d.ts +16 -1
- package/dist/schema/datasource.d.ts.map +1 -1
- package/dist/schema/datasource.js +3 -0
- package/dist/schema/datasource.js.map +1 -1
- package/dist/schema/datasource.test.js +21 -0
- package/dist/schema/datasource.test.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/commands/migrate.test.ts +58 -4
- package/src/cli/commands/migrate.ts +6 -4
- package/src/generator/connection.test.ts +45 -14
- package/src/generator/connection.ts +30 -2
- package/src/generator/datasource.test.ts +57 -5
- package/src/generator/datasource.ts +38 -1
- package/src/index.ts +12 -1
- package/src/migrate/emit-ts.ts +80 -16
- package/src/migrate/parse-connection.ts +108 -30
- package/src/migrate/parse-datasource.ts +46 -1
- package/src/migrate/types.ts +24 -2
- package/src/schema/connection.test.ts +92 -17
- package/src/schema/connection.ts +86 -10
- package/src/schema/datasource.test.ts +25 -0
- package/src/schema/datasource.ts +21 -1
package/dist/migrate/types.d.ts
CHANGED
|
@@ -37,6 +37,12 @@ export interface DatasourceKafkaModel {
|
|
|
37
37
|
groupId?: string;
|
|
38
38
|
autoOffsetReset?: "earliest" | "latest";
|
|
39
39
|
}
|
|
40
|
+
export interface DatasourceS3Model {
|
|
41
|
+
connectionName: string;
|
|
42
|
+
bucketUri: string;
|
|
43
|
+
schedule?: string;
|
|
44
|
+
fromTimestamp?: string;
|
|
45
|
+
}
|
|
40
46
|
export interface DatasourceTokenModel {
|
|
41
47
|
name: string;
|
|
42
48
|
scope: "READ" | "APPEND";
|
|
@@ -49,6 +55,7 @@ export interface DatasourceModel {
|
|
|
49
55
|
columns: DatasourceColumnModel[];
|
|
50
56
|
engine: DatasourceEngineModel;
|
|
51
57
|
kafka?: DatasourceKafkaModel;
|
|
58
|
+
s3?: DatasourceS3Model;
|
|
52
59
|
forwardQuery?: string;
|
|
53
60
|
tokens: DatasourceTokenModel[];
|
|
54
61
|
sharedWith: string[];
|
|
@@ -98,7 +105,17 @@ export interface KafkaConnectionModel {
|
|
|
98
105
|
secret?: string;
|
|
99
106
|
sslCaPem?: string;
|
|
100
107
|
}
|
|
101
|
-
export
|
|
108
|
+
export interface S3ConnectionModel {
|
|
109
|
+
kind: "connection";
|
|
110
|
+
name: string;
|
|
111
|
+
filePath: string;
|
|
112
|
+
connectionType: "s3";
|
|
113
|
+
region: string;
|
|
114
|
+
arn?: string;
|
|
115
|
+
accessKey?: string;
|
|
116
|
+
secret?: string;
|
|
117
|
+
}
|
|
118
|
+
export type ParsedResource = DatasourceModel | PipeModel | KafkaConnectionModel | S3ConnectionModel;
|
|
102
119
|
export interface MigrationResult {
|
|
103
120
|
success: boolean;
|
|
104
121
|
outputPath: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/migrate/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/migrate/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Connection definition for Tinybird
|
|
3
|
-
* Define external connections (Kafka, etc.) as TypeScript with full type safety
|
|
3
|
+
* Define external connections (Kafka, S3, etc.) as TypeScript with full type safety
|
|
4
4
|
*/
|
|
5
5
|
declare const CONNECTION_BRAND: unique symbol;
|
|
6
6
|
/**
|
|
@@ -42,12 +42,39 @@ export interface KafkaConnectionDefinition {
|
|
|
42
42
|
/** Kafka options */
|
|
43
43
|
readonly options: KafkaConnectionOptions;
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Options for defining an S3 connection
|
|
47
|
+
*/
|
|
48
|
+
export interface S3ConnectionOptions {
|
|
49
|
+
/** S3 bucket region (for example: us-east-1) */
|
|
50
|
+
region: string;
|
|
51
|
+
/** IAM role ARN used by Tinybird to access the bucket */
|
|
52
|
+
arn?: string;
|
|
53
|
+
/** S3 access key for key/secret auth */
|
|
54
|
+
accessKey?: string;
|
|
55
|
+
/** S3 secret key for key/secret auth */
|
|
56
|
+
secret?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* S3-specific connection definition
|
|
60
|
+
*/
|
|
61
|
+
export interface S3ConnectionDefinition {
|
|
62
|
+
readonly [CONNECTION_BRAND]: true;
|
|
63
|
+
/** Connection name */
|
|
64
|
+
readonly _name: string;
|
|
65
|
+
/** Type marker for inference */
|
|
66
|
+
readonly _type: "connection";
|
|
67
|
+
/** Connection type */
|
|
68
|
+
readonly _connectionType: "s3";
|
|
69
|
+
/** S3 options */
|
|
70
|
+
readonly options: S3ConnectionOptions;
|
|
71
|
+
}
|
|
45
72
|
/**
|
|
46
73
|
* A connection definition - union of all connection types
|
|
47
74
|
*/
|
|
48
|
-
export type ConnectionDefinition = KafkaConnectionDefinition;
|
|
75
|
+
export type ConnectionDefinition = KafkaConnectionDefinition | S3ConnectionDefinition;
|
|
49
76
|
/**
|
|
50
|
-
*
|
|
77
|
+
* Define a Kafka connection
|
|
51
78
|
*
|
|
52
79
|
* @param name - The connection name (must be valid identifier)
|
|
53
80
|
* @param options - Kafka connection configuration
|
|
@@ -55,9 +82,9 @@ export type ConnectionDefinition = KafkaConnectionDefinition;
|
|
|
55
82
|
*
|
|
56
83
|
* @example
|
|
57
84
|
* ```ts
|
|
58
|
-
* import {
|
|
85
|
+
* import { defineKafkaConnection } from '@tinybirdco/sdk';
|
|
59
86
|
*
|
|
60
|
-
* export const myKafka =
|
|
87
|
+
* export const myKafka = defineKafkaConnection('my_kafka', {
|
|
61
88
|
* bootstrapServers: 'kafka.example.com:9092',
|
|
62
89
|
* securityProtocol: 'SASL_SSL',
|
|
63
90
|
* saslMechanism: 'PLAIN',
|
|
@@ -66,7 +93,19 @@ export type ConnectionDefinition = KafkaConnectionDefinition;
|
|
|
66
93
|
* });
|
|
67
94
|
* ```
|
|
68
95
|
*/
|
|
69
|
-
export declare function
|
|
96
|
+
export declare function defineKafkaConnection(name: string, options: KafkaConnectionOptions): KafkaConnectionDefinition;
|
|
97
|
+
/**
|
|
98
|
+
* @deprecated Use defineKafkaConnection instead.
|
|
99
|
+
*/
|
|
100
|
+
export declare const createKafkaConnection: typeof defineKafkaConnection;
|
|
101
|
+
/**
|
|
102
|
+
* Define an S3 connection
|
|
103
|
+
*
|
|
104
|
+
* @param name - The connection name (must be valid identifier)
|
|
105
|
+
* @param options - S3 connection configuration
|
|
106
|
+
* @returns A connection definition that can be used in a project
|
|
107
|
+
*/
|
|
108
|
+
export declare function defineS3Connection(name: string, options: S3ConnectionOptions): S3ConnectionDefinition;
|
|
70
109
|
/**
|
|
71
110
|
* Check if a value is a connection definition
|
|
72
111
|
*/
|
|
@@ -75,6 +114,10 @@ export declare function isConnectionDefinition(value: unknown): value is Connect
|
|
|
75
114
|
* Check if a value is a Kafka connection definition
|
|
76
115
|
*/
|
|
77
116
|
export declare function isKafkaConnectionDefinition(value: unknown): value is KafkaConnectionDefinition;
|
|
117
|
+
/**
|
|
118
|
+
* Check if a value is an S3 connection definition
|
|
119
|
+
*/
|
|
120
|
+
export declare function isS3ConnectionDefinition(value: unknown): value is S3ConnectionDefinition;
|
|
78
121
|
/**
|
|
79
122
|
* Get the connection type from a connection definition
|
|
80
123
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/schema/connection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,QAAA,MAAM,gBAAgB,eAAoC,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAEhF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,eAAe,GAAG,eAAe,GAAG,aAAa,CAAC;AAE7F;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,wCAAwC;IACxC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC;IAClC,sBAAsB;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,sBAAsB;IACtB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,oBAAoB;IACpB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/schema/connection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,QAAA,MAAM,gBAAgB,eAAoC,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAEhF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,eAAe,GAAG,eAAe,GAAG,aAAa,CAAC;AAE7F;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,wCAAwC;IACxC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC;IAClC,sBAAsB;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,sBAAsB;IACtB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,oBAAoB;IACpB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC;IAClC,sBAAsB;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,sBAAsB;IACtB,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC;IAC/B,iBAAiB;IACjB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,GAAG,sBAAsB,CAAC;AAUtF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,sBAAsB,GAC9B,yBAAyB,CAU3B;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,8BAAwB,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,mBAAmB,GAC3B,sBAAsB,CAoBxB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAOpF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,yBAAyB,CAE9F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAExF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,oBAAoB,EAC9D,UAAU,EAAE,CAAC,GACZ,CAAC,CAAC,iBAAiB,CAAC,CAEtB"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Connection definition for Tinybird
|
|
3
|
-
* Define external connections (Kafka, etc.) as TypeScript with full type safety
|
|
3
|
+
* Define external connections (Kafka, S3, etc.) as TypeScript with full type safety
|
|
4
4
|
*/
|
|
5
5
|
// Symbol for brand typing - use Symbol.for() for global registry
|
|
6
6
|
// This ensures the same symbol is used across module instances
|
|
7
7
|
const CONNECTION_BRAND = Symbol.for("tinybird.connection");
|
|
8
|
+
function validateConnectionName(name) {
|
|
9
|
+
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name)) {
|
|
10
|
+
throw new Error(`Invalid connection name: "${name}". Must start with a letter or underscore and contain only alphanumeric characters and underscores.`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
8
13
|
/**
|
|
9
|
-
*
|
|
14
|
+
* Define a Kafka connection
|
|
10
15
|
*
|
|
11
16
|
* @param name - The connection name (must be valid identifier)
|
|
12
17
|
* @param options - Kafka connection configuration
|
|
@@ -14,9 +19,9 @@ const CONNECTION_BRAND = Symbol.for("tinybird.connection");
|
|
|
14
19
|
*
|
|
15
20
|
* @example
|
|
16
21
|
* ```ts
|
|
17
|
-
* import {
|
|
22
|
+
* import { defineKafkaConnection } from '@tinybirdco/sdk';
|
|
18
23
|
*
|
|
19
|
-
* export const myKafka =
|
|
24
|
+
* export const myKafka = defineKafkaConnection('my_kafka', {
|
|
20
25
|
* bootstrapServers: 'kafka.example.com:9092',
|
|
21
26
|
* securityProtocol: 'SASL_SSL',
|
|
22
27
|
* saslMechanism: 'PLAIN',
|
|
@@ -25,11 +30,8 @@ const CONNECTION_BRAND = Symbol.for("tinybird.connection");
|
|
|
25
30
|
* });
|
|
26
31
|
* ```
|
|
27
32
|
*/
|
|
28
|
-
export function
|
|
29
|
-
|
|
30
|
-
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name)) {
|
|
31
|
-
throw new Error(`Invalid connection name: "${name}". Must start with a letter or underscore and contain only alphanumeric characters and underscores.`);
|
|
32
|
-
}
|
|
33
|
+
export function defineKafkaConnection(name, options) {
|
|
34
|
+
validateConnectionName(name);
|
|
33
35
|
return {
|
|
34
36
|
[CONNECTION_BRAND]: true,
|
|
35
37
|
_name: name,
|
|
@@ -38,6 +40,33 @@ export function createKafkaConnection(name, options) {
|
|
|
38
40
|
options,
|
|
39
41
|
};
|
|
40
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* @deprecated Use defineKafkaConnection instead.
|
|
45
|
+
*/
|
|
46
|
+
export const createKafkaConnection = defineKafkaConnection;
|
|
47
|
+
/**
|
|
48
|
+
* Define an S3 connection
|
|
49
|
+
*
|
|
50
|
+
* @param name - The connection name (must be valid identifier)
|
|
51
|
+
* @param options - S3 connection configuration
|
|
52
|
+
* @returns A connection definition that can be used in a project
|
|
53
|
+
*/
|
|
54
|
+
export function defineS3Connection(name, options) {
|
|
55
|
+
validateConnectionName(name);
|
|
56
|
+
if (!options.arn && !(options.accessKey && options.secret)) {
|
|
57
|
+
throw new Error("S3 connection requires either `arn` or both `accessKey` and `secret`.");
|
|
58
|
+
}
|
|
59
|
+
if ((options.accessKey && !options.secret) || (!options.accessKey && options.secret)) {
|
|
60
|
+
throw new Error("S3 connection `accessKey` and `secret` must be provided together.");
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
[CONNECTION_BRAND]: true,
|
|
64
|
+
_name: name,
|
|
65
|
+
_type: "connection",
|
|
66
|
+
_connectionType: "s3",
|
|
67
|
+
options,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
41
70
|
/**
|
|
42
71
|
* Check if a value is a connection definition
|
|
43
72
|
*/
|
|
@@ -53,6 +82,12 @@ export function isConnectionDefinition(value) {
|
|
|
53
82
|
export function isKafkaConnectionDefinition(value) {
|
|
54
83
|
return isConnectionDefinition(value) && value._connectionType === "kafka";
|
|
55
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Check if a value is an S3 connection definition
|
|
87
|
+
*/
|
|
88
|
+
export function isS3ConnectionDefinition(value) {
|
|
89
|
+
return isConnectionDefinition(value) && value._connectionType === "s3";
|
|
90
|
+
}
|
|
56
91
|
/**
|
|
57
92
|
* Get the connection type from a connection definition
|
|
58
93
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/schema/connection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iEAAiE;AACjE,+DAA+D;AAC/D,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/schema/connection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iEAAiE;AACjE,+DAA+D;AAC/D,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AA+E3D,SAAS,sBAAsB,CAAC,IAAY;IAC1C,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,qGAAqG,CACvI,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,OAA+B;IAE/B,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAE7B,OAAO;QACL,CAAC,gBAAgB,CAAC,EAAE,IAAI;QACxB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,YAAY;QACnB,eAAe,EAAE,OAAO;QACxB,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,OAA4B;IAE5B,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAED,OAAO;QACL,CAAC,gBAAgB,CAAC,EAAE,IAAI;QACxB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,YAAY;QACnB,eAAe,EAAE,IAAI;QACrB,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,gBAAgB,IAAI,KAAK;QACxB,KAAiC,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAC9D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,eAAe,KAAK,OAAO,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAa;IAEb,OAAO,UAAU,CAAC,eAAe,CAAC;AACpC,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
|
-
import {
|
|
2
|
+
import { defineKafkaConnection, defineS3Connection, isConnectionDefinition, isKafkaConnectionDefinition, isS3ConnectionDefinition, getConnectionType, } from "./connection.js";
|
|
3
3
|
describe("Connection Schema", () => {
|
|
4
|
-
describe("
|
|
4
|
+
describe("defineKafkaConnection", () => {
|
|
5
5
|
it("creates a Kafka connection with required fields", () => {
|
|
6
|
-
const conn =
|
|
6
|
+
const conn = defineKafkaConnection("my_kafka", {
|
|
7
7
|
bootstrapServers: "kafka.example.com:9092",
|
|
8
8
|
});
|
|
9
9
|
expect(conn._name).toBe("my_kafka");
|
|
@@ -12,7 +12,7 @@ describe("Connection Schema", () => {
|
|
|
12
12
|
expect(conn.options.bootstrapServers).toBe("kafka.example.com:9092");
|
|
13
13
|
});
|
|
14
14
|
it("creates a Kafka connection with all options", () => {
|
|
15
|
-
const conn =
|
|
15
|
+
const conn = defineKafkaConnection("my_kafka", {
|
|
16
16
|
bootstrapServers: "kafka.example.com:9092",
|
|
17
17
|
securityProtocol: "SASL_SSL",
|
|
18
18
|
saslMechanism: "PLAIN",
|
|
@@ -27,59 +27,94 @@ describe("Connection Schema", () => {
|
|
|
27
27
|
expect(conn.options.sslCaPem).toBe('{{ tb_secret("KAFKA_CA_CERT") }}');
|
|
28
28
|
});
|
|
29
29
|
it("supports different SASL mechanisms", () => {
|
|
30
|
-
const scramConn =
|
|
30
|
+
const scramConn = defineKafkaConnection("scram_kafka", {
|
|
31
31
|
bootstrapServers: "kafka.example.com:9092",
|
|
32
32
|
saslMechanism: "SCRAM-SHA-256",
|
|
33
33
|
});
|
|
34
34
|
expect(scramConn.options.saslMechanism).toBe("SCRAM-SHA-256");
|
|
35
|
-
const scram512Conn =
|
|
35
|
+
const scram512Conn = defineKafkaConnection("scram512_kafka", {
|
|
36
36
|
bootstrapServers: "kafka.example.com:9092",
|
|
37
37
|
saslMechanism: "SCRAM-SHA-512",
|
|
38
38
|
});
|
|
39
39
|
expect(scram512Conn.options.saslMechanism).toBe("SCRAM-SHA-512");
|
|
40
|
-
const oauthConn =
|
|
40
|
+
const oauthConn = defineKafkaConnection("oauth_kafka", {
|
|
41
41
|
bootstrapServers: "kafka.example.com:9092",
|
|
42
42
|
saslMechanism: "OAUTHBEARER",
|
|
43
43
|
});
|
|
44
44
|
expect(oauthConn.options.saslMechanism).toBe("OAUTHBEARER");
|
|
45
45
|
});
|
|
46
46
|
it("supports different security protocols", () => {
|
|
47
|
-
const plaintext =
|
|
47
|
+
const plaintext = defineKafkaConnection("plaintext_kafka", {
|
|
48
48
|
bootstrapServers: "localhost:9092",
|
|
49
49
|
securityProtocol: "PLAINTEXT",
|
|
50
50
|
});
|
|
51
51
|
expect(plaintext.options.securityProtocol).toBe("PLAINTEXT");
|
|
52
|
-
const saslPlaintext =
|
|
52
|
+
const saslPlaintext = defineKafkaConnection("sasl_plaintext_kafka", {
|
|
53
53
|
bootstrapServers: "localhost:9092",
|
|
54
54
|
securityProtocol: "SASL_PLAINTEXT",
|
|
55
55
|
});
|
|
56
56
|
expect(saslPlaintext.options.securityProtocol).toBe("SASL_PLAINTEXT");
|
|
57
57
|
});
|
|
58
58
|
it("throws error for invalid connection name", () => {
|
|
59
|
-
expect(() =>
|
|
59
|
+
expect(() => defineKafkaConnection("123invalid", {
|
|
60
60
|
bootstrapServers: "kafka.example.com:9092",
|
|
61
61
|
})).toThrow("Invalid connection name");
|
|
62
|
-
expect(() =>
|
|
62
|
+
expect(() => defineKafkaConnection("my-connection", {
|
|
63
63
|
bootstrapServers: "kafka.example.com:9092",
|
|
64
64
|
})).toThrow("Invalid connection name");
|
|
65
|
-
expect(() =>
|
|
65
|
+
expect(() => defineKafkaConnection("", {
|
|
66
66
|
bootstrapServers: "kafka.example.com:9092",
|
|
67
67
|
})).toThrow("Invalid connection name");
|
|
68
68
|
});
|
|
69
69
|
it("allows valid naming patterns", () => {
|
|
70
|
-
const conn1 =
|
|
70
|
+
const conn1 = defineKafkaConnection("_private_kafka", {
|
|
71
71
|
bootstrapServers: "kafka.example.com:9092",
|
|
72
72
|
});
|
|
73
73
|
expect(conn1._name).toBe("_private_kafka");
|
|
74
|
-
const conn2 =
|
|
74
|
+
const conn2 = defineKafkaConnection("kafka_v2", {
|
|
75
75
|
bootstrapServers: "kafka.example.com:9092",
|
|
76
76
|
});
|
|
77
77
|
expect(conn2._name).toBe("kafka_v2");
|
|
78
78
|
});
|
|
79
79
|
});
|
|
80
|
+
describe("defineS3Connection", () => {
|
|
81
|
+
it("creates an S3 connection with IAM role auth", () => {
|
|
82
|
+
const conn = defineS3Connection("my_s3", {
|
|
83
|
+
region: "us-east-1",
|
|
84
|
+
arn: "arn:aws:iam::123456789012:role/tinybird-s3-access",
|
|
85
|
+
});
|
|
86
|
+
expect(conn._name).toBe("my_s3");
|
|
87
|
+
expect(conn._type).toBe("connection");
|
|
88
|
+
expect(conn._connectionType).toBe("s3");
|
|
89
|
+
expect(conn.options.region).toBe("us-east-1");
|
|
90
|
+
expect(conn.options.arn).toBe("arn:aws:iam::123456789012:role/tinybird-s3-access");
|
|
91
|
+
});
|
|
92
|
+
it("creates an S3 connection with access key auth", () => {
|
|
93
|
+
const conn = defineS3Connection("my_s3", {
|
|
94
|
+
region: "us-east-1",
|
|
95
|
+
accessKey: '{{ tb_secret("S3_ACCESS_KEY") }}',
|
|
96
|
+
secret: '{{ tb_secret("S3_SECRET") }}',
|
|
97
|
+
});
|
|
98
|
+
expect(conn.options.accessKey).toBe('{{ tb_secret("S3_ACCESS_KEY") }}');
|
|
99
|
+
expect(conn.options.secret).toBe('{{ tb_secret("S3_SECRET") }}');
|
|
100
|
+
});
|
|
101
|
+
it("throws when auth config is incomplete", () => {
|
|
102
|
+
expect(() => defineS3Connection("my_s3", {
|
|
103
|
+
region: "us-east-1",
|
|
104
|
+
})).toThrow("S3 connection requires either `arn` or both `accessKey` and `secret`.");
|
|
105
|
+
expect(() => defineS3Connection("my_s3", {
|
|
106
|
+
region: "us-east-1",
|
|
107
|
+
accessKey: "key-only",
|
|
108
|
+
})).toThrow("S3 connection requires either `arn` or both `accessKey` and `secret`.");
|
|
109
|
+
expect(() => defineS3Connection("my_s3", {
|
|
110
|
+
region: "us-east-1",
|
|
111
|
+
secret: "secret-only",
|
|
112
|
+
})).toThrow("S3 connection requires either `arn` or both `accessKey` and `secret`.");
|
|
113
|
+
});
|
|
114
|
+
});
|
|
80
115
|
describe("isConnectionDefinition", () => {
|
|
81
116
|
it("returns true for valid connection", () => {
|
|
82
|
-
const conn =
|
|
117
|
+
const conn = defineKafkaConnection("my_kafka", {
|
|
83
118
|
bootstrapServers: "kafka.example.com:9092",
|
|
84
119
|
});
|
|
85
120
|
expect(isConnectionDefinition(conn)).toBe(true);
|
|
@@ -95,7 +130,7 @@ describe("Connection Schema", () => {
|
|
|
95
130
|
});
|
|
96
131
|
describe("isKafkaConnectionDefinition", () => {
|
|
97
132
|
it("returns true for Kafka connection", () => {
|
|
98
|
-
const conn =
|
|
133
|
+
const conn = defineKafkaConnection("my_kafka", {
|
|
99
134
|
bootstrapServers: "kafka.example.com:9092",
|
|
100
135
|
});
|
|
101
136
|
expect(isKafkaConnectionDefinition(conn)).toBe(true);
|
|
@@ -105,13 +140,33 @@ describe("Connection Schema", () => {
|
|
|
105
140
|
expect(isKafkaConnectionDefinition(null)).toBe(false);
|
|
106
141
|
});
|
|
107
142
|
});
|
|
143
|
+
describe("isS3ConnectionDefinition", () => {
|
|
144
|
+
it("returns true for S3 connection", () => {
|
|
145
|
+
const conn = defineS3Connection("my_s3", {
|
|
146
|
+
region: "us-east-1",
|
|
147
|
+
arn: "arn:aws:iam::123456789012:role/tinybird-s3-access",
|
|
148
|
+
});
|
|
149
|
+
expect(isS3ConnectionDefinition(conn)).toBe(true);
|
|
150
|
+
});
|
|
151
|
+
it("returns false for non-S3 objects", () => {
|
|
152
|
+
expect(isS3ConnectionDefinition({})).toBe(false);
|
|
153
|
+
expect(isS3ConnectionDefinition(null)).toBe(false);
|
|
154
|
+
});
|
|
155
|
+
});
|
|
108
156
|
describe("getConnectionType", () => {
|
|
109
157
|
it("returns the connection type", () => {
|
|
110
|
-
const conn =
|
|
158
|
+
const conn = defineKafkaConnection("my_kafka", {
|
|
111
159
|
bootstrapServers: "kafka.example.com:9092",
|
|
112
160
|
});
|
|
113
161
|
expect(getConnectionType(conn)).toBe("kafka");
|
|
114
162
|
});
|
|
163
|
+
it("returns the s3 connection type", () => {
|
|
164
|
+
const conn = defineS3Connection("my_s3", {
|
|
165
|
+
region: "us-east-1",
|
|
166
|
+
arn: "arn:aws:iam::123456789012:role/tinybird-s3-access",
|
|
167
|
+
});
|
|
168
|
+
expect(getConnectionType(conn)).toBe("s3");
|
|
169
|
+
});
|
|
115
170
|
});
|
|
116
171
|
});
|
|
117
172
|
//# sourceMappingURL=connection.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.test.js","sourceRoot":"","sources":["../../src/schema/connection.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connection.test.js","sourceRoot":"","sources":["../../src/schema/connection.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { AnyTypeValidator } from "./types.js";
|
|
6
6
|
import type { EngineConfig } from "./engines.js";
|
|
7
|
-
import type { KafkaConnectionDefinition } from "./connection.js";
|
|
7
|
+
import type { KafkaConnectionDefinition, S3ConnectionDefinition } from "./connection.js";
|
|
8
8
|
import type { TokenDefinition, DatasourceTokenScope } from "./token.js";
|
|
9
9
|
declare const DATASOURCE_BRAND: unique symbol;
|
|
10
10
|
/**
|
|
@@ -57,6 +57,19 @@ export interface KafkaConfig {
|
|
|
57
57
|
/** Where to start reading: 'earliest' or 'latest' (default: 'latest') */
|
|
58
58
|
autoOffsetReset?: "earliest" | "latest";
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* S3 import configuration for a datasource
|
|
62
|
+
*/
|
|
63
|
+
export interface S3Config {
|
|
64
|
+
/** S3 connection to use */
|
|
65
|
+
connection: S3ConnectionDefinition;
|
|
66
|
+
/** S3 bucket URI, for example: s3://my-bucket/path/*.csv */
|
|
67
|
+
bucketUri: string;
|
|
68
|
+
/** Import schedule, for example: @auto or @once */
|
|
69
|
+
schedule?: string;
|
|
70
|
+
/** Incremental import lower bound timestamp expression */
|
|
71
|
+
fromTimestamp?: string;
|
|
72
|
+
}
|
|
60
73
|
/**
|
|
61
74
|
* Options for defining a datasource
|
|
62
75
|
*/
|
|
@@ -84,6 +97,8 @@ export interface DatasourceOptions<TSchema extends SchemaDefinition> {
|
|
|
84
97
|
forwardQuery?: string;
|
|
85
98
|
/** Kafka ingestion configuration */
|
|
86
99
|
kafka?: KafkaConfig;
|
|
100
|
+
/** S3 ingestion configuration */
|
|
101
|
+
s3?: S3Config;
|
|
87
102
|
}
|
|
88
103
|
/**
|
|
89
104
|
* A datasource definition with full type information
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasource.d.ts","sourceRoot":"","sources":["../../src/schema/datasource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"datasource.d.ts","sourceRoot":"","sources":["../../src/schema/datasource.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,9 @@ export function defineDatasource(name, options) {
|
|
|
39
39
|
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name)) {
|
|
40
40
|
throw new Error(`Invalid datasource name: "${name}". Must start with a letter or underscore and contain only alphanumeric characters and underscores.`);
|
|
41
41
|
}
|
|
42
|
+
if (options.kafka && options.s3) {
|
|
43
|
+
throw new Error("Datasource cannot define both `kafka` and `s3` ingestion options.");
|
|
44
|
+
}
|
|
42
45
|
return {
|
|
43
46
|
[DATASOURCE_BRAND]: true,
|
|
44
47
|
_name: name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../src/schema/datasource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,iEAAiE;AACjE,+DAA+D;AAC/D,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../src/schema/datasource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,iEAAiE;AACjE,+DAA+D;AAC/D,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAsH3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,OAAmC;IAEnC,sCAAsC;IACtC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,qGAAqG,CACvI,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAED,OAAO;QACL,CAAC,gBAAgB,CAAC,EAAE,IAAI;QACxB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,gBAAgB,IAAI,KAAK;QACxB,KAAiC,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAC9D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAA2C;IACvE,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,MAA0B,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA2C;IAC3E,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAe;IAEf,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAsB,CAAC;AAClD,CAAC;AAOD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,MAAM,CACpB,IAAO,EACP,OAA2C;IAE3C,OAAO;QACL,IAAI;QACJ,GAAG,OAAO;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { describe, it, expect } from "vitest";
|
|
|
2
2
|
import { defineDatasource, isDatasourceDefinition, getColumnType, getColumnJsonPath, getColumnNames, column, } from "./datasource.js";
|
|
3
3
|
import { t } from "./types.js";
|
|
4
4
|
import { engine } from "./engines.js";
|
|
5
|
+
import { defineKafkaConnection, defineS3Connection } from "./connection.js";
|
|
5
6
|
describe("Datasource Schema", () => {
|
|
6
7
|
describe("defineDatasource", () => {
|
|
7
8
|
it("creates a datasource with required fields", () => {
|
|
@@ -61,6 +62,26 @@ describe("Datasource Schema", () => {
|
|
|
61
62
|
});
|
|
62
63
|
expect(ds2._name).toBe("events_v2");
|
|
63
64
|
});
|
|
65
|
+
it("throws when both kafka and s3 ingestion are configured", () => {
|
|
66
|
+
const kafkaConn = defineKafkaConnection("my_kafka", {
|
|
67
|
+
bootstrapServers: "kafka.example.com:9092",
|
|
68
|
+
});
|
|
69
|
+
const s3Conn = defineS3Connection("my_s3", {
|
|
70
|
+
region: "us-east-1",
|
|
71
|
+
arn: "arn:aws:iam::123456789012:role/tinybird-s3-access",
|
|
72
|
+
});
|
|
73
|
+
expect(() => defineDatasource("events", {
|
|
74
|
+
schema: { id: t.string() },
|
|
75
|
+
kafka: {
|
|
76
|
+
connection: kafkaConn,
|
|
77
|
+
topic: "events",
|
|
78
|
+
},
|
|
79
|
+
s3: {
|
|
80
|
+
connection: s3Conn,
|
|
81
|
+
bucketUri: "s3://my-bucket/events/*.csv",
|
|
82
|
+
},
|
|
83
|
+
})).toThrow("Datasource cannot define both `kafka` and `s3` ingestion options.");
|
|
84
|
+
});
|
|
64
85
|
});
|
|
65
86
|
describe("isDatasourceDefinition", () => {
|
|
66
87
|
it("returns true for valid datasource", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasource.test.js","sourceRoot":"","sources":["../../src/schema/datasource.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,MAAM,GACP,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"datasource.test.js","sourceRoot":"","sources":["../../src/schema/datasource.test.ts"],"names":[],"mappings":"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"}
|