@tinybirdco/sdk 0.0.77 → 0.0.78

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 (63) hide show
  1. package/README.md +27 -2
  2. package/dist/cli/commands/migrate.d.ts.map +1 -1
  3. package/dist/cli/commands/migrate.js +14 -1
  4. package/dist/cli/commands/migrate.js.map +1 -1
  5. package/dist/cli/commands/migrate.test.js +60 -0
  6. package/dist/cli/commands/migrate.test.js.map +1 -1
  7. package/dist/generator/connection.d.ts.map +1 -1
  8. package/dist/generator/connection.js +15 -1
  9. package/dist/generator/connection.js.map +1 -1
  10. package/dist/generator/connection.test.js +10 -1
  11. package/dist/generator/connection.test.js.map +1 -1
  12. package/dist/generator/datasource.d.ts.map +1 -1
  13. package/dist/generator/datasource.js +17 -1
  14. package/dist/generator/datasource.js.map +1 -1
  15. package/dist/generator/datasource.test.js +44 -1
  16. package/dist/generator/datasource.test.js.map +1 -1
  17. package/dist/index.d.ts +3 -3
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/migrate/emit-ts.d.ts.map +1 -1
  22. package/dist/migrate/emit-ts.js +28 -0
  23. package/dist/migrate/emit-ts.js.map +1 -1
  24. package/dist/migrate/parse-connection.d.ts +2 -2
  25. package/dist/migrate/parse-connection.d.ts.map +1 -1
  26. package/dist/migrate/parse-connection.js +60 -6
  27. package/dist/migrate/parse-connection.js.map +1 -1
  28. package/dist/migrate/parse-connection.test.js +18 -0
  29. package/dist/migrate/parse-connection.test.js.map +1 -1
  30. package/dist/migrate/parse-datasource.d.ts.map +1 -1
  31. package/dist/migrate/parse-datasource.js +27 -2
  32. package/dist/migrate/parse-datasource.js.map +1 -1
  33. package/dist/migrate/types.d.ts +15 -1
  34. package/dist/migrate/types.d.ts.map +1 -1
  35. package/dist/schema/connection.d.ts +46 -1
  36. package/dist/schema/connection.d.ts.map +1 -1
  37. package/dist/schema/connection.js +39 -0
  38. package/dist/schema/connection.js.map +1 -1
  39. package/dist/schema/connection.test.js +46 -1
  40. package/dist/schema/connection.test.js.map +1 -1
  41. package/dist/schema/datasource.d.ts +14 -1
  42. package/dist/schema/datasource.d.ts.map +1 -1
  43. package/dist/schema/datasource.js +2 -2
  44. package/dist/schema/datasource.js.map +1 -1
  45. package/dist/schema/datasource.test.js +2 -2
  46. package/dist/schema/datasource.test.js.map +1 -1
  47. package/package.json +1 -1
  48. package/src/cli/commands/migrate.test.ts +95 -0
  49. package/src/cli/commands/migrate.ts +17 -1
  50. package/src/generator/connection.test.ts +17 -0
  51. package/src/generator/connection.ts +18 -0
  52. package/src/generator/datasource.test.ts +54 -1
  53. package/src/generator/datasource.ts +24 -1
  54. package/src/index.ts +5 -0
  55. package/src/migrate/emit-ts.ts +44 -3
  56. package/src/migrate/parse-connection.test.ts +41 -0
  57. package/src/migrate/parse-connection.ts +86 -7
  58. package/src/migrate/parse-datasource.ts +35 -2
  59. package/src/migrate/types.ts +18 -1
  60. package/src/schema/connection.test.ts +65 -0
  61. package/src/schema/connection.ts +76 -1
  62. package/src/schema/datasource.test.ts +2 -2
  63. package/src/schema/datasource.ts +21 -2
@@ -84,7 +84,7 @@ describe("Datasource Schema", () => {
84
84
  connection: s3Conn,
85
85
  bucketUri: "s3://my-bucket/events/*.csv",
86
86
  },
87
- })).toThrow("Datasource can only define one ingestion option: `kafka`, `s3`, or `gcs`.");
87
+ })).toThrow("Datasource can only define one ingestion option: `kafka`, `s3`, `gcs`, or `dynamodb`.");
88
88
  expect(() => defineDatasource("events_gcs", {
89
89
  schema: { id: t.string() },
90
90
  kafka: {
@@ -95,7 +95,7 @@ describe("Datasource Schema", () => {
95
95
  connection: gcsConn,
96
96
  bucketUri: "gs://my-bucket/events/*.csv",
97
97
  },
98
- })).toThrow("Datasource can only define one ingestion option: `kafka`, `s3`, or `gcs`.");
98
+ })).toThrow("Datasource can only define one ingestion option: `kafka`, `s3`, `gcs`, or `dynamodb`.");
99
99
  });
100
100
  it("accepts gcs ingestion configuration", () => {
101
101
  const gcsConn = defineGCSConnection("my_gcs", {
@@ -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.77",
3
+ "version": "0.0.78",
4
4
  "description": "TypeScript SDK for Tinybird Forward - define datasources and pipes as TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -716,6 +716,101 @@ IMPORT_SCHEDULE '@on-demand'
716
716
  expect(output).toContain('schedule: "@on-demand"');
717
717
  });
718
718
 
719
+ it("migrates dynamodb connection and import datasource directives", async () => {
720
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tinybird-migrate-"));
721
+ tempDirs.push(tempDir);
722
+
723
+ writeFile(
724
+ tempDir,
725
+ "dynamo_sample.connection",
726
+ `TYPE dynamodb
727
+ DYNAMODB_ARN {{ tb_secret("DYNAMODB_ROLE_ARN") }}
728
+ DYNAMODB_REGION us-east-1
729
+ `
730
+ );
731
+
732
+ writeFile(
733
+ tempDir,
734
+ "events_dynamo.datasource",
735
+ `SCHEMA >
736
+ id String \`json:$.Id\`,
737
+ _record String \`json:$.NewImage\`
738
+
739
+ ENGINE "ReplacingMergeTree"
740
+ ENGINE_SORTING_KEY "id"
741
+ IMPORT_CONNECTION_NAME dynamo_sample
742
+ IMPORT_TABLE_ARN arn:aws:dynamodb:us-east-1:123456789012:table/events
743
+ IMPORT_EXPORT_BUCKET s3://my-export-bucket
744
+ `
745
+ );
746
+
747
+ const result = await runMigrate({
748
+ cwd: tempDir,
749
+ patterns: ["."],
750
+ strict: true,
751
+ });
752
+
753
+ expect(result.success).toBe(true);
754
+ expect(result.errors).toHaveLength(0);
755
+ expect(result.migrated.filter((resource) => resource.kind === "connection")).toHaveLength(1);
756
+ expect(result.migrated.filter((resource) => resource.kind === "datasource")).toHaveLength(1);
757
+
758
+ const output = fs.readFileSync(result.outputPath, "utf-8");
759
+ expect(output).toContain("defineDynamoDBConnection");
760
+ expect(output).toContain('export const dynamoSample = defineDynamoDBConnection("dynamo_sample", {');
761
+ expect(output).toContain('region: "us-east-1"');
762
+ expect(output).toContain('arn: secret("DYNAMODB_ROLE_ARN")');
763
+ expect(output).toContain("dynamodb: {");
764
+ expect(output).toContain("connection: dynamoSample");
765
+ expect(output).toContain(
766
+ 'tableArn: "arn:aws:dynamodb:us-east-1:123456789012:table/events"'
767
+ );
768
+ expect(output).toContain('exportBucket: "s3://my-export-bucket"');
769
+ });
770
+
771
+ it("reports an error when DynamoDB directives use a non-dynamodb connection type", async () => {
772
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tinybird-migrate-"));
773
+ tempDirs.push(tempDir);
774
+
775
+ writeFile(
776
+ tempDir,
777
+ "s3sample.connection",
778
+ `TYPE s3
779
+ S3_REGION us-east-1
780
+ S3_ARN "arn:aws:iam::123456789012:role/tinybird-s3-access"
781
+ `
782
+ );
783
+
784
+ writeFile(
785
+ tempDir,
786
+ "events_dynamo.datasource",
787
+ `SCHEMA >
788
+ id String
789
+
790
+ ENGINE "ReplacingMergeTree"
791
+ ENGINE_SORTING_KEY "id"
792
+ IMPORT_CONNECTION_NAME s3sample
793
+ IMPORT_TABLE_ARN arn:aws:dynamodb:us-east-1:123456789012:table/events
794
+ IMPORT_EXPORT_BUCKET s3://my-export-bucket
795
+ `
796
+ );
797
+
798
+ const result = await runMigrate({
799
+ cwd: tempDir,
800
+ patterns: ["."],
801
+ strict: true,
802
+ });
803
+
804
+ expect(result.success).toBe(false);
805
+ expect(
806
+ result.errors.some((error) =>
807
+ error.message.includes(
808
+ 'Datasource DynamoDB ingestion requires a dynamodb connection, found "s3".'
809
+ )
810
+ )
811
+ ).toBe(true);
812
+ });
813
+
719
814
  it("reports an error when import directives use a non-bucket connection type", async () => {
720
815
  const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tinybird-migrate-"));
721
816
  tempDirs.push(tempDir);
@@ -135,7 +135,8 @@ export async function runMigrate(
135
135
  const referencedConnectionName =
136
136
  datasource.kafka?.connectionName ??
137
137
  datasource.s3?.connectionName ??
138
- datasource.gcs?.connectionName;
138
+ datasource.gcs?.connectionName ??
139
+ datasource.dynamodb?.connectionName;
139
140
 
140
141
  if (
141
142
  referencedConnectionName &&
@@ -186,6 +187,21 @@ export async function runMigrate(
186
187
  }
187
188
  }
188
189
 
190
+ if (datasource.dynamodb) {
191
+ const dynamodbConnectionType = parsedConnectionTypeByName.get(
192
+ datasource.dynamodb.connectionName
193
+ );
194
+ if (dynamodbConnectionType !== "dynamodb") {
195
+ errors.push({
196
+ filePath: datasource.filePath,
197
+ resourceName: datasource.name,
198
+ resourceKind: datasource.kind,
199
+ message: `Datasource DynamoDB ingestion requires a dynamodb connection, found "${dynamodbConnectionType ?? "(none)"}".`,
200
+ });
201
+ continue;
202
+ }
203
+ }
204
+
189
205
  try {
190
206
  validateResourceForEmission(datasource);
191
207
  migrated.push(datasource);
@@ -4,6 +4,7 @@ import {
4
4
  defineKafkaConnection,
5
5
  defineS3Connection,
6
6
  defineGCSConnection,
7
+ defineDynamoDBConnection,
7
8
  } from "../schema/connection.js";
8
9
 
9
10
  describe("Connection Generator", () => {
@@ -218,6 +219,22 @@ describe("Connection Generator", () => {
218
219
  'GCS_SERVICE_ACCOUNT_CREDENTIALS_JSON {{ tb_secret("GCS_SERVICE_ACCOUNT_CREDENTIALS_JSON") }}'
219
220
  );
220
221
  });
222
+
223
+ it("generates DynamoDB connection with arn and region", () => {
224
+ const conn = defineDynamoDBConnection("my_dynamo", {
225
+ region: "us-east-1",
226
+ arn: '{{ tb_secret("DYNAMODB_ROLE_ARN") }}',
227
+ });
228
+
229
+ const result = generateConnection(conn);
230
+
231
+ expect(result.name).toBe("my_dynamo");
232
+ expect(result.content).toBe(
233
+ ['TYPE dynamodb', 'DYNAMODB_ARN {{ tb_secret("DYNAMODB_ROLE_ARN") }}', "DYNAMODB_REGION us-east-1"].join(
234
+ "\n"
235
+ )
236
+ );
237
+ });
221
238
  });
222
239
 
223
240
  describe("generateAllConnections", () => {
@@ -7,10 +7,12 @@ import type {
7
7
  ConnectionDefinition,
8
8
  KafkaConnectionDefinition,
9
9
  GCSConnectionDefinition,
10
+ DynamoDBConnectionDefinition,
10
11
  } from "../schema/connection.js";
11
12
  import {
12
13
  isS3ConnectionDefinition,
13
14
  isGCSConnectionDefinition,
15
+ isDynamoDBConnectionDefinition,
14
16
  type S3ConnectionDefinition,
15
17
  } from "../schema/connection.js";
16
18
 
@@ -123,6 +125,20 @@ function generateGCSConnection(connection: GCSConnectionDefinition): string {
123
125
  return parts.join("\n");
124
126
  }
125
127
 
128
+ /**
129
+ * Generate a DynamoDB connection content
130
+ */
131
+ function generateDynamoDBConnection(connection: DynamoDBConnectionDefinition): string {
132
+ const parts: string[] = [];
133
+ const options = connection.options;
134
+
135
+ parts.push("TYPE dynamodb");
136
+ parts.push(`DYNAMODB_ARN ${options.arn}`);
137
+ parts.push(`DYNAMODB_REGION ${options.region}`);
138
+
139
+ return parts.join("\n");
140
+ }
141
+
126
142
  /**
127
143
  * Generate a .connection file content from a ConnectionDefinition
128
144
  *
@@ -160,6 +176,8 @@ export function generateConnection(
160
176
  content = generateS3Connection(connection);
161
177
  } else if (isGCSConnectionDefinition(connection)) {
162
178
  content = generateGCSConnection(connection);
179
+ } else if (isDynamoDBConnectionDefinition(connection)) {
180
+ content = generateDynamoDBConnection(connection);
163
181
  } else {
164
182
  throw new Error("Unsupported connection type.");
165
183
  }
@@ -1,7 +1,7 @@
1
1
  import { describe, it, expect } from 'vitest';
2
2
  import { generateDatasource, generateAllDatasources } from './datasource.js';
3
3
  import { defineDatasource } from '../schema/datasource.js';
4
- import { defineKafkaConnection, defineS3Connection, defineGCSConnection } from '../schema/connection.js';
4
+ import { defineKafkaConnection, defineS3Connection, defineGCSConnection, defineDynamoDBConnection } from '../schema/connection.js';
5
5
  import { defineToken } from '../schema/token.js';
6
6
  import { t } from '../schema/types.js';
7
7
  import { engine } from '../schema/engines.js';
@@ -629,6 +629,59 @@ describe('Datasource Generator', () => {
629
629
  });
630
630
  });
631
631
 
632
+ describe('DynamoDB configuration', () => {
633
+ it('includes DynamoDB import directives', () => {
634
+ const dynamoConn = defineDynamoDBConnection('my_dynamo', {
635
+ region: 'us-east-1',
636
+ arn: '{{ tb_secret("DYNAMODB_ROLE_ARN") }}',
637
+ });
638
+
639
+ const ds = defineDatasource('dynamo_events', {
640
+ schema: {
641
+ id: t.string(),
642
+ _record: t.string(),
643
+ },
644
+ engine: engine.replacingMergeTree({ sortingKey: ['id'] }),
645
+ dynamodb: {
646
+ connection: dynamoConn,
647
+ tableArn: 'arn:aws:dynamodb:us-east-1:123456789012:table/events',
648
+ exportBucket: 's3://my-export-bucket',
649
+ },
650
+ });
651
+
652
+ const result = generateDatasource(ds);
653
+
654
+ expect(result.content).toContain('IMPORT_CONNECTION_NAME my_dynamo');
655
+ expect(result.content).toContain(
656
+ 'IMPORT_TABLE_ARN arn:aws:dynamodb:us-east-1:123456789012:table/events'
657
+ );
658
+ expect(result.content).toContain('IMPORT_EXPORT_BUCKET s3://my-export-bucket');
659
+ });
660
+
661
+ it('rejects mixing DynamoDB with other ingestion options', () => {
662
+ const dynamoConn = defineDynamoDBConnection('my_dynamo', {
663
+ region: 'us-east-1',
664
+ arn: '{{ tb_secret("DYNAMODB_ROLE_ARN") }}',
665
+ });
666
+ const s3Conn = defineS3Connection('my_s3', {
667
+ region: 'us-east-1',
668
+ arn: 'arn:aws:iam::123456789012:role/x',
669
+ });
670
+
671
+ expect(() =>
672
+ defineDatasource('mixed', {
673
+ schema: { id: t.string() },
674
+ dynamodb: {
675
+ connection: dynamoConn,
676
+ tableArn: 'arn:aws:dynamodb:us-east-1:123456789012:table/events',
677
+ exportBucket: 's3://my-export-bucket',
678
+ },
679
+ s3: { connection: s3Conn, bucketUri: 's3://b/*.csv' },
680
+ })
681
+ ).toThrow('only define one ingestion option');
682
+ });
683
+ });
684
+
632
685
  describe('Token generation', () => {
633
686
  it('generates TOKEN lines with inline config', () => {
634
687
  const ds = defineDatasource('test_ds', {
@@ -10,6 +10,7 @@ import type {
10
10
  KafkaConfig,
11
11
  S3Config,
12
12
  GCSConfig,
13
+ DynamoDBConfig,
13
14
  TokenConfig,
14
15
  DatasourceIndex,
15
16
  } from "../schema/datasource.js";
@@ -199,6 +200,19 @@ function generateImportConfig(importConfig: S3Config | GCSConfig): string {
199
200
  return parts.join("\n");
200
201
  }
201
202
 
203
+ /**
204
+ * Generate DynamoDB import configuration lines
205
+ */
206
+ function generateDynamoDBConfig(dynamodb: DynamoDBConfig): string {
207
+ const parts: string[] = [];
208
+
209
+ parts.push(`IMPORT_CONNECTION_NAME ${dynamodb.connection._name}`);
210
+ parts.push(`IMPORT_TABLE_ARN ${dynamodb.tableArn}`);
211
+ parts.push(`IMPORT_EXPORT_BUCKET ${dynamodb.exportBucket}`);
212
+
213
+ return parts.join("\n");
214
+ }
215
+
202
216
  /**
203
217
  * Generate forward query section
204
218
  */
@@ -318,9 +332,12 @@ export function generateDatasource(
318
332
  datasource.options.kafka,
319
333
  datasource.options.s3,
320
334
  datasource.options.gcs,
335
+ datasource.options.dynamodb,
321
336
  ].filter(Boolean).length;
322
337
  if (ingestionConfigCount > 1) {
323
- throw new Error("Datasource can only define one ingestion option: `kafka`, `s3`, or `gcs`.");
338
+ throw new Error(
339
+ "Datasource can only define one ingestion option: `kafka`, `s3`, `gcs`, or `dynamodb`."
340
+ );
324
341
  }
325
342
 
326
343
  // Add description if present
@@ -369,6 +386,12 @@ export function generateDatasource(
369
386
  parts.push(generateImportConfig(datasource.options.gcs));
370
387
  }
371
388
 
389
+ // Add DynamoDB configuration if present
390
+ if (datasource.options.dynamodb) {
391
+ parts.push("");
392
+ parts.push(generateDynamoDBConfig(datasource.options.dynamodb));
393
+ }
394
+
372
395
  // Add forward query if present
373
396
  const forwardQuery = generateForwardQuery(datasource.options.forwardQuery);
374
397
  if (forwardQuery) {
package/src/index.ts CHANGED
@@ -116,6 +116,7 @@ export type {
116
116
  KafkaConfig,
117
117
  S3Config,
118
118
  GCSConfig,
119
+ DynamoDBConfig,
119
120
  DatasourceIndex,
120
121
  } from "./schema/datasource.js";
121
122
 
@@ -125,10 +126,12 @@ export {
125
126
  createKafkaConnection,
126
127
  defineS3Connection,
127
128
  defineGCSConnection,
129
+ defineDynamoDBConnection,
128
130
  isConnectionDefinition,
129
131
  isKafkaConnectionDefinition,
130
132
  isS3ConnectionDefinition,
131
133
  isGCSConnectionDefinition,
134
+ isDynamoDBConnectionDefinition,
132
135
  getConnectionType,
133
136
  } from "./schema/connection.js";
134
137
  export type {
@@ -142,6 +145,8 @@ export type {
142
145
  S3ConnectionOptions,
143
146
  GCSConnectionDefinition,
144
147
  GCSConnectionOptions,
148
+ DynamoDBConnectionDefinition,
149
+ DynamoDBConnectionOptions,
145
150
  } from "./schema/connection.js";
146
151
 
147
152
  // ============ Token ============
@@ -4,6 +4,7 @@ import { parseLiteralFromDatafile, toTsLiteral } from "./parser-utils.js";
4
4
  import type {
5
5
  DatasourceModel,
6
6
  DatasourceEngineModel,
7
+ DynamoDBConnectionModel,
7
8
  GCSConnectionModel,
8
9
  KafkaConnectionModel,
9
10
  ParsedResource,
@@ -72,6 +73,9 @@ function hasSecretTemplate(resources: ParsedResource[]): boolean {
72
73
  if (resource.arn) values.push(resource.arn);
73
74
  if (resource.accessKey) values.push(resource.accessKey);
74
75
  if (resource.secret) values.push(resource.secret);
76
+ } else if (resource.connectionType === "dynamodb") {
77
+ values.push(resource.region);
78
+ values.push(resource.arn);
75
79
  } else {
76
80
  values.push(resource.serviceAccountCredentialsJson);
77
81
  }
@@ -95,6 +99,10 @@ function hasSecretTemplate(resources: ParsedResource[]): boolean {
95
99
  if (resource.gcs.schedule) values.push(resource.gcs.schedule);
96
100
  if (resource.gcs.fromTimestamp) values.push(resource.gcs.fromTimestamp);
97
101
  }
102
+ if (resource.dynamodb) {
103
+ values.push(resource.dynamodb.tableArn);
104
+ values.push(resource.dynamodb.exportBucket);
105
+ }
98
106
  continue;
99
107
  }
100
108
  }
@@ -388,6 +396,15 @@ function emitDatasource(ds: DatasourceModel): string {
388
396
  lines.push(" },");
389
397
  }
390
398
 
399
+ if (ds.dynamodb) {
400
+ const connectionVar = toCamelCase(ds.dynamodb.connectionName);
401
+ lines.push(" dynamodb: {");
402
+ lines.push(` connection: ${connectionVar},`);
403
+ lines.push(` tableArn: ${emitStringOrSecret(ds.dynamodb.tableArn)},`);
404
+ lines.push(` exportBucket: ${emitStringOrSecret(ds.dynamodb.exportBucket)},`);
405
+ lines.push(" },");
406
+ }
407
+
391
408
  if (ds.forwardQuery) {
392
409
  lines.push(" forwardQuery: `");
393
410
  lines.push(escapeTemplateLiteral(ds.forwardQuery));
@@ -416,7 +433,11 @@ function emitDatasource(ds: DatasourceModel): string {
416
433
  }
417
434
 
418
435
  function emitConnection(
419
- connection: KafkaConnectionModel | S3ConnectionModel | GCSConnectionModel
436
+ connection:
437
+ | KafkaConnectionModel
438
+ | S3ConnectionModel
439
+ | GCSConnectionModel
440
+ | DynamoDBConnectionModel
420
441
  ): string {
421
442
  const variableName = toCamelCase(connection.name);
422
443
  const lines: string[] = [];
@@ -486,6 +507,17 @@ function emitConnection(
486
507
  return lines.join("\n");
487
508
  }
488
509
 
510
+ if (connection.connectionType === "dynamodb") {
511
+ lines.push(
512
+ `export const ${variableName} = defineDynamoDBConnection(${escapeString(connection.name)}, {`
513
+ );
514
+ lines.push(` region: ${emitStringOrSecret(connection.region)},`);
515
+ lines.push(` arn: ${emitStringOrSecret(connection.arn)},`);
516
+ lines.push("});");
517
+ lines.push("");
518
+ return lines.join("\n");
519
+ }
520
+
489
521
  lines.push(
490
522
  `export const ${variableName} = defineGCSConnection(${escapeString(connection.name)}, {`
491
523
  );
@@ -625,8 +657,13 @@ function emitPipe(pipe: PipeModel): string {
625
657
 
626
658
  export function emitMigrationFileContent(resources: ParsedResource[]): string {
627
659
  const connections = resources.filter(
628
- (resource): resource is KafkaConnectionModel | S3ConnectionModel | GCSConnectionModel =>
629
- resource.kind === "connection"
660
+ (
661
+ resource
662
+ ): resource is
663
+ | KafkaConnectionModel
664
+ | S3ConnectionModel
665
+ | GCSConnectionModel
666
+ | DynamoDBConnectionModel => resource.kind === "connection"
630
667
  );
631
668
  const datasources = resources.filter(
632
669
  (resource): resource is DatasourceModel => resource.kind === "datasource"
@@ -655,6 +692,9 @@ export function emitMigrationFileContent(resources: ParsedResource[]): string {
655
692
  if (connections.some((connection) => connection.connectionType === "gcs")) {
656
693
  imports.add("defineGCSConnection");
657
694
  }
695
+ if (connections.some((connection) => connection.connectionType === "dynamodb")) {
696
+ imports.add("defineDynamoDBConnection");
697
+ }
658
698
  if (needsParams) {
659
699
  imports.add("p");
660
700
  }
@@ -672,6 +712,7 @@ export function emitMigrationFileContent(resources: ParsedResource[]): string {
672
712
  "defineKafkaConnection",
673
713
  "defineS3Connection",
674
714
  "defineGCSConnection",
715
+ "defineDynamoDBConnection",
675
716
  "defineDatasource",
676
717
  "definePipe",
677
718
  "defineMaterializedView",
@@ -122,4 +122,45 @@ KAFKA_SASL_OAUTHBEARER_AWS_EXTERNAL_ID {{ tb_secret("KAFKA_AWS_EXTERNAL_ID") }}`
122
122
  '{{ tb_secret("KAFKA_AWS_EXTERNAL_ID") }}'
123
123
  );
124
124
  });
125
+
126
+ it("parses basic DynamoDB connection", () => {
127
+ const result = parseConnectionFile(
128
+ resource(
129
+ "my_dynamo",
130
+ `TYPE dynamodb
131
+ DYNAMODB_ARN {{ tb_secret("DYNAMODB_ROLE_ARN") }}
132
+ DYNAMODB_REGION us-east-1`
133
+ )
134
+ );
135
+
136
+ expect(result.connectionType).toBe("dynamodb");
137
+ expect(result).toHaveProperty("arn", '{{ tb_secret("DYNAMODB_ROLE_ARN") }}');
138
+ expect(result).toHaveProperty("region", "us-east-1");
139
+ });
140
+
141
+ it("throws when DynamoDB connection is missing DYNAMODB_ARN", () => {
142
+ expect(() =>
143
+ parseConnectionFile(
144
+ resource(
145
+ "my_dynamo",
146
+ `TYPE dynamodb
147
+ DYNAMODB_REGION us-east-1`
148
+ )
149
+ )
150
+ ).toThrow("DYNAMODB_ARN is required");
151
+ });
152
+
153
+ it("throws when DynamoDB connection mixes S3 directives", () => {
154
+ expect(() =>
155
+ parseConnectionFile(
156
+ resource(
157
+ "my_dynamo",
158
+ `TYPE dynamodb
159
+ DYNAMODB_ARN {{ tb_secret("DYNAMODB_ROLE_ARN") }}
160
+ DYNAMODB_REGION us-east-1
161
+ S3_ARN arn:aws:iam::1:role/x`
162
+ )
163
+ )
164
+ ).toThrow("Kafka/S3/GCS directives are not valid for dynamodb connections.");
165
+ });
125
166
  });