@tinybirdco/sdk 0.0.43 → 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.
Files changed (82) hide show
  1. package/README.md +53 -0
  2. package/dist/cli/commands/init.js +2 -2
  3. package/dist/cli/commands/init.test.js +1 -1
  4. package/dist/cli/commands/init.test.js.map +1 -1
  5. package/dist/cli/commands/migrate.d.ts.map +1 -1
  6. package/dist/cli/commands/migrate.js +4 -3
  7. package/dist/cli/commands/migrate.js.map +1 -1
  8. package/dist/cli/commands/migrate.test.js +42 -4
  9. package/dist/cli/commands/migrate.test.js.map +1 -1
  10. package/dist/client/preview.js +1 -1
  11. package/dist/client/preview.js.map +1 -1
  12. package/dist/codegen/index.js +4 -4
  13. package/dist/codegen/index.js.map +1 -1
  14. package/dist/codegen/index.test.js +3 -3
  15. package/dist/codegen/index.test.js.map +1 -1
  16. package/dist/generator/client.js +1 -1
  17. package/dist/generator/connection.d.ts +1 -1
  18. package/dist/generator/connection.d.ts.map +1 -1
  19. package/dist/generator/connection.js +25 -2
  20. package/dist/generator/connection.js.map +1 -1
  21. package/dist/generator/connection.test.js +37 -14
  22. package/dist/generator/connection.test.js.map +1 -1
  23. package/dist/generator/datasource.d.ts.map +1 -1
  24. package/dist/generator/datasource.js +23 -0
  25. package/dist/generator/datasource.js.map +1 -1
  26. package/dist/generator/datasource.test.js +49 -5
  27. package/dist/generator/datasource.test.js.map +1 -1
  28. package/dist/index.d.ts +5 -5
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +2 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/index.test.d.ts +2 -0
  33. package/dist/index.test.d.ts.map +1 -0
  34. package/dist/index.test.js +12 -0
  35. package/dist/index.test.js.map +1 -0
  36. package/dist/migrate/emit-ts.d.ts.map +1 -1
  37. package/dist/migrate/emit-ts.js +69 -13
  38. package/dist/migrate/emit-ts.js.map +1 -1
  39. package/dist/migrate/parse-connection.d.ts +2 -2
  40. package/dist/migrate/parse-connection.d.ts.map +1 -1
  41. package/dist/migrate/parse-connection.js +61 -18
  42. package/dist/migrate/parse-connection.js.map +1 -1
  43. package/dist/migrate/parse-datasource.d.ts.map +1 -1
  44. package/dist/migrate/parse-datasource.js +31 -0
  45. package/dist/migrate/parse-datasource.js.map +1 -1
  46. package/dist/migrate/types.d.ts +18 -1
  47. package/dist/migrate/types.d.ts.map +1 -1
  48. package/dist/schema/connection.d.ts +49 -6
  49. package/dist/schema/connection.d.ts.map +1 -1
  50. package/dist/schema/connection.js +44 -9
  51. package/dist/schema/connection.js.map +1 -1
  52. package/dist/schema/connection.test.js +72 -17
  53. package/dist/schema/connection.test.js.map +1 -1
  54. package/dist/schema/datasource.d.ts +16 -1
  55. package/dist/schema/datasource.d.ts.map +1 -1
  56. package/dist/schema/datasource.js +3 -0
  57. package/dist/schema/datasource.js.map +1 -1
  58. package/dist/schema/datasource.test.js +21 -0
  59. package/dist/schema/datasource.test.js.map +1 -1
  60. package/package.json +1 -1
  61. package/src/cli/commands/init.test.ts +1 -1
  62. package/src/cli/commands/init.ts +2 -2
  63. package/src/cli/commands/migrate.test.ts +58 -4
  64. package/src/cli/commands/migrate.ts +6 -4
  65. package/src/client/preview.ts +1 -1
  66. package/src/codegen/index.test.ts +3 -3
  67. package/src/codegen/index.ts +4 -4
  68. package/src/generator/client.ts +1 -1
  69. package/src/generator/connection.test.ts +45 -14
  70. package/src/generator/connection.ts +30 -2
  71. package/src/generator/datasource.test.ts +57 -5
  72. package/src/generator/datasource.ts +38 -1
  73. package/src/index.test.ts +13 -0
  74. package/src/index.ts +21 -4
  75. package/src/migrate/emit-ts.ts +80 -16
  76. package/src/migrate/parse-connection.ts +108 -30
  77. package/src/migrate/parse-datasource.ts +46 -1
  78. package/src/migrate/types.ts +24 -2
  79. package/src/schema/connection.test.ts +92 -17
  80. package/src/schema/connection.ts +86 -10
  81. package/src/schema/datasource.test.ts +25 -0
  82. package/src/schema/datasource.ts +21 -1
@@ -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
- * Create a Kafka connection
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 { createKafkaConnection } from '@tinybirdco/sdk';
22
+ * import { defineKafkaConnection } from '@tinybirdco/sdk';
18
23
  *
19
- * export const myKafka = createKafkaConnection('my_kafka', {
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 createKafkaConnection(name, options) {
29
- // Validate name is a valid identifier
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;AAkD3D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,OAA+B;IAE/B,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,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,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,iBAAiB,CAC/B,UAAa;IAEb,OAAO,UAAU,CAAC,eAAe,CAAC;AACpC,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 { createKafkaConnection, isConnectionDefinition, isKafkaConnectionDefinition, getConnectionType, } from "./connection.js";
2
+ import { defineKafkaConnection, defineS3Connection, isConnectionDefinition, isKafkaConnectionDefinition, isS3ConnectionDefinition, getConnectionType, } from "./connection.js";
3
3
  describe("Connection Schema", () => {
4
- describe("createKafkaConnection", () => {
4
+ describe("defineKafkaConnection", () => {
5
5
  it("creates a Kafka connection with required fields", () => {
6
- const conn = createKafkaConnection("my_kafka", {
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 = createKafkaConnection("my_kafka", {
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 = createKafkaConnection("scram_kafka", {
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 = createKafkaConnection("scram512_kafka", {
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 = createKafkaConnection("oauth_kafka", {
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 = createKafkaConnection("plaintext_kafka", {
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 = createKafkaConnection("sasl_plaintext_kafka", {
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(() => createKafkaConnection("123invalid", {
59
+ expect(() => defineKafkaConnection("123invalid", {
60
60
  bootstrapServers: "kafka.example.com:9092",
61
61
  })).toThrow("Invalid connection name");
62
- expect(() => createKafkaConnection("my-connection", {
62
+ expect(() => defineKafkaConnection("my-connection", {
63
63
  bootstrapServers: "kafka.example.com:9092",
64
64
  })).toThrow("Invalid connection name");
65
- expect(() => createKafkaConnection("", {
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 = createKafkaConnection("_private_kafka", {
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 = createKafkaConnection("kafka_v2", {
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 = createKafkaConnection("my_kafka", {
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 = createKafkaConnection("my_kafka", {
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 = createKafkaConnection("my_kafka", {
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":"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"}
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;AAsG3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,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"}
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":"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"}
1
+ {"version":3,"file":"datasource.test.js","sourceRoot":"","sources":["../../src/schema/datasource.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tinybirdco/sdk",
3
- "version": "0.0.43",
3
+ "version": "0.0.45",
4
4
  "description": "TypeScript SDK for Tinybird Forward - define datasources and pipes as TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -184,7 +184,7 @@ describe("Init Command", () => {
184
184
  expect(content).toContain("TopPagesOutput");
185
185
 
186
186
  // Check client content
187
- expect(content).toContain("createTinybirdClient");
187
+ expect(content).toContain("new Tinybird");
188
188
  });
189
189
 
190
190
  it("skips tinybird.ts if it already exists", async () => {
@@ -40,7 +40,7 @@ const TINYBIRD_CONTENT = `/**
40
40
  import {
41
41
  defineDatasource,
42
42
  defineEndpoint,
43
- createTinybirdClient,
43
+ Tinybird,
44
44
  node,
45
45
  t,
46
46
  p,
@@ -115,7 +115,7 @@ export type TopPagesOutput = InferOutputRow<typeof topPages>;
115
115
  // Client
116
116
  // ============================================================================
117
117
 
118
- export const tinybird = createTinybirdClient({
118
+ export const tinybird = new Tinybird({
119
119
  datasources: { pageViews },
120
120
  pipes: { topPages },
121
121
  });
@@ -15,11 +15,11 @@ const EXPECTED_COMPLEX_OUTPUT = `/**
15
15
  * Review endpoint output schemas and any defaults before production use.
16
16
  */
17
17
 
18
- import { createKafkaConnection, defineDatasource, definePipe, defineMaterializedView, defineCopyPipe, node, t, engine, column, p } from "@tinybirdco/sdk";
18
+ import { defineKafkaConnection, defineDatasource, definePipe, defineMaterializedView, defineCopyPipe, node, t, engine, column, p } from "@tinybirdco/sdk";
19
19
 
20
20
  // Connections
21
21
 
22
- export const stream = createKafkaConnection("stream", {
22
+ export const stream = defineKafkaConnection("stream", {
23
23
  bootstrapServers: "localhost:9092",
24
24
  securityProtocol: "SASL_SSL",
25
25
  saslMechanism: "PLAIN",
@@ -183,11 +183,11 @@ const EXPECTED_PARTIAL_OUTPUT = `/**
183
183
  * Review endpoint output schemas and any defaults before production use.
184
184
  */
185
185
 
186
- import { createKafkaConnection, defineDatasource, definePipe, defineMaterializedView, defineCopyPipe, node, t, engine, p } from "@tinybirdco/sdk";
186
+ import { defineKafkaConnection, defineDatasource, definePipe, defineMaterializedView, defineCopyPipe, node, t, engine, p } from "@tinybirdco/sdk";
187
187
 
188
188
  // Connections
189
189
 
190
- export const stream = createKafkaConnection("stream", {
190
+ export const stream = defineKafkaConnection("stream", {
191
191
  bootstrapServers: "localhost:9092",
192
192
  });
193
193
 
@@ -561,4 +561,58 @@ TOKEN endpoint_token READ
561
561
  expect(result.outputContent).toBe(EXPECTED_PARTIAL_OUTPUT);
562
562
  expect(fs.existsSync(result.outputPath)).toBe(false);
563
563
  });
564
+
565
+ it("migrates s3 connection and import datasource directives", async () => {
566
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tinybird-migrate-"));
567
+ tempDirs.push(tempDir);
568
+
569
+ writeFile(
570
+ tempDir,
571
+ "s3sample.connection",
572
+ `TYPE s3
573
+ S3_REGION "us-east-1"
574
+ S3_ARN "arn:aws:iam::123456789012:role/tinybird-s3-access"
575
+ `
576
+ );
577
+
578
+ writeFile(
579
+ tempDir,
580
+ "events_landing.datasource",
581
+ `SCHEMA >
582
+ timestamp DateTime,
583
+ session_id String
584
+
585
+ ENGINE "MergeTree"
586
+ ENGINE_SORTING_KEY "timestamp"
587
+ IMPORT_CONNECTION_NAME s3sample
588
+ IMPORT_BUCKET_URI s3://my-bucket/events/*.csv
589
+ IMPORT_SCHEDULE @auto
590
+ IMPORT_FROM_TIMESTAMP 2024-01-01T00:00:00Z
591
+ `
592
+ );
593
+
594
+ const result = await runMigrate({
595
+ cwd: tempDir,
596
+ patterns: ["."],
597
+ strict: true,
598
+ });
599
+
600
+ expect(result.success).toBe(true);
601
+ expect(result.errors).toHaveLength(0);
602
+ expect(result.migrated.filter((resource) => resource.kind === "connection")).toHaveLength(1);
603
+ expect(result.migrated.filter((resource) => resource.kind === "datasource")).toHaveLength(1);
604
+
605
+ const output = fs.readFileSync(result.outputPath, "utf-8");
606
+ expect(output).toContain("defineS3Connection");
607
+ expect(output).toContain('export const s3sample = defineS3Connection("s3sample", {');
608
+ expect(output).toContain('region: "us-east-1"');
609
+ expect(output).toContain(
610
+ 'arn: "arn:aws:iam::123456789012:role/tinybird-s3-access"'
611
+ );
612
+ expect(output).toContain("s3: {");
613
+ expect(output).toContain("connection: s3sample");
614
+ expect(output).toContain('bucketUri: "s3://my-bucket/events/*.csv"');
615
+ expect(output).toContain('schedule: "@auto"');
616
+ expect(output).toContain('fromTimestamp: "2024-01-01T00:00:00Z"');
617
+ });
564
618
  });
@@ -129,15 +129,18 @@ export async function runMigrate(
129
129
  }
130
130
 
131
131
  for (const datasource of parsedDatasources) {
132
+ const referencedConnectionName =
133
+ datasource.kafka?.connectionName ?? datasource.s3?.connectionName;
134
+
132
135
  if (
133
- datasource.kafka &&
134
- !migratedConnectionNames.has(datasource.kafka.connectionName)
136
+ referencedConnectionName &&
137
+ !migratedConnectionNames.has(referencedConnectionName)
135
138
  ) {
136
139
  errors.push({
137
140
  filePath: datasource.filePath,
138
141
  resourceName: datasource.name,
139
142
  resourceKind: datasource.kind,
140
- message: `Datasource references missing/unmigrated connection "${datasource.kafka.connectionName}".`,
143
+ message: `Datasource references missing/unmigrated connection "${referencedConnectionName}".`,
141
144
  });
142
145
  continue;
143
146
  }
@@ -237,4 +240,3 @@ export async function runMigrate(
237
240
  outputContent,
238
241
  };
239
242
  }
240
-
@@ -164,7 +164,7 @@ export async function resolveToken(options?: {
164
164
 
165
165
  if (!configuredToken) {
166
166
  throw new Error(
167
- "TINYBIRD_TOKEN is not configured. Set it in your environment or pass it to createTinybirdClient()."
167
+ "TINYBIRD_TOKEN is not configured. Set it in your environment or pass it to new Tinybird({...})."
168
168
  );
169
169
  }
170
170
 
@@ -304,7 +304,7 @@ describe("generateClientFile", () => {
304
304
 
305
305
  const file = generateClientFile(datasources, pipes);
306
306
 
307
- expect(file).toContain('import { createTinybirdClient } from "@tinybirdco/sdk"');
307
+ expect(file).toContain('import { Tinybird } from "@tinybirdco/sdk"');
308
308
  expect(file).toContain('import { events, type EventsRow } from "./datasources.js"');
309
309
  expect(file).toContain('import { topEvents, type TopEventsParams, type TopEventsOutput } from "./pipes.js"');
310
310
  expect(file).toContain("datasources: { events }");
@@ -321,7 +321,7 @@ describe("generateClientFile", () => {
321
321
  expect(file).toContain('import { dirname } from "path"');
322
322
  // Should derive __configDir from import.meta.url
323
323
  expect(file).toContain("const __configDir = dirname(fileURLToPath(import.meta.url))");
324
- // Should pass configDir to createTinybirdClient
324
+ // Should pass configDir to Tinybird constructor
325
325
  expect(file).toContain("configDir: __configDir");
326
326
  });
327
327
 
@@ -386,6 +386,6 @@ describe("generateAllFiles", () => {
386
386
  expect(result.pipeCount).toBe(1);
387
387
  expect(result.datasourcesContent).toContain("defineDatasource");
388
388
  expect(result.pipesContent).toContain("defineEndpoint");
389
- expect(result.clientContent).toContain("createTinybirdClient");
389
+ expect(result.clientContent).toContain("new Tinybird");
390
390
  });
391
391
  });