Skip to content

Commit 24e1cfe

Browse files
committed
refactor(kinesis): extract shared record cache into amplify_record_cache_dart
Create amplify_record_cache_dart package with shared caching infrastructure: - RecordCacheException hierarchy (const constructors) - Record/RecordInput models (partitionKey optional, dataSize caller-computed) - RecordStorage base + SqliteRecordStorage, InMemoryRecordStorage, IndexedDbRecordStorage - RecordCacheDatabase (Drift, parameterized dbPrefix) - Sender interface + SendResult (replaces KDS-specific PutRecordsResult) - RecordClient, AutoFlushScheduler, FlushStrategy, FlushData, RecordData, ClearCacheData - Platform resolution (VM/web/stub conditional exports) Update amplify_kinesis_dart to depend on shared package: - KinesisSender implements Sender interface (sendBatch replaces putRecords) - Partition key validation moved from RecordStorage to AmplifyKinesisClient - createKinesisRecordInputNow computes dataSize with partition key - All test imports updated, zero behavioral change
1 parent deab741 commit 24e1cfe

47 files changed

Lines changed: 1683 additions & 708 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/dependabot.yaml

Lines changed: 724 additions & 72 deletions
Large diffs are not rendered by default.
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Generated with aft. To update, run: `aft generate workflows`
2+
name: amplify_firehose_dart
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- stable
8+
paths:
9+
- '.github/workflows/amplify_firehose_dart.yaml'
10+
- '.github/workflows/dart_vm.yaml'
11+
- 'packages/amplify_core/lib/**/*.dart'
12+
- 'packages/amplify_core/pubspec.yaml'
13+
- 'packages/amplify_foundation/amplify_foundation_dart/lib/**/*.dart'
14+
- 'packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml'
15+
- 'packages/amplify_foundation/amplify_foundation_dart_bridge/lib/**/*.dart'
16+
- 'packages/amplify_foundation/amplify_foundation_dart_bridge/pubspec.yaml'
17+
- 'packages/amplify_lints/lib/**/*.yaml'
18+
- 'packages/amplify_lints/pubspec.yaml'
19+
- 'packages/aws_common/lib/**/*.dart'
20+
- 'packages/aws_common/pubspec.yaml'
21+
- 'packages/aws_signature_v4/lib/**/*.dart'
22+
- 'packages/aws_signature_v4/pubspec.yaml'
23+
- 'packages/common/amplify_db_common_dart/lib/**/*.dart'
24+
- 'packages/common/amplify_db_common_dart/pubspec.yaml'
25+
- 'packages/kinesis/amplify_firehose_dart/**/*.dart'
26+
- 'packages/kinesis/amplify_firehose_dart/**/*.yaml'
27+
- 'packages/kinesis/amplify_firehose_dart/lib/**/*'
28+
- 'packages/kinesis/amplify_firehose_dart/test/**/*'
29+
- 'packages/smithy/smithy/lib/**/*.dart'
30+
- 'packages/smithy/smithy/pubspec.yaml'
31+
- 'packages/smithy/smithy_aws/lib/**/*.dart'
32+
- 'packages/smithy/smithy_aws/pubspec.yaml'
33+
pull_request:
34+
paths:
35+
- '.github/workflows/amplify_firehose_dart.yaml'
36+
- '.github/workflows/dart_vm.yaml'
37+
- 'packages/amplify_core/lib/**/*.dart'
38+
- 'packages/amplify_core/pubspec.yaml'
39+
- 'packages/amplify_foundation/amplify_foundation_dart/lib/**/*.dart'
40+
- 'packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml'
41+
- 'packages/amplify_foundation/amplify_foundation_dart_bridge/lib/**/*.dart'
42+
- 'packages/amplify_foundation/amplify_foundation_dart_bridge/pubspec.yaml'
43+
- 'packages/amplify_lints/lib/**/*.yaml'
44+
- 'packages/amplify_lints/pubspec.yaml'
45+
- 'packages/aws_common/lib/**/*.dart'
46+
- 'packages/aws_common/pubspec.yaml'
47+
- 'packages/aws_signature_v4/lib/**/*.dart'
48+
- 'packages/aws_signature_v4/pubspec.yaml'
49+
- 'packages/common/amplify_db_common_dart/lib/**/*.dart'
50+
- 'packages/common/amplify_db_common_dart/pubspec.yaml'
51+
- 'packages/kinesis/amplify_firehose_dart/**/*.dart'
52+
- 'packages/kinesis/amplify_firehose_dart/**/*.yaml'
53+
- 'packages/kinesis/amplify_firehose_dart/lib/**/*'
54+
- 'packages/kinesis/amplify_firehose_dart/test/**/*'
55+
- 'packages/smithy/smithy/lib/**/*.dart'
56+
- 'packages/smithy/smithy/pubspec.yaml'
57+
- 'packages/smithy/smithy_aws/lib/**/*.dart'
58+
- 'packages/smithy/smithy_aws/pubspec.yaml'
59+
schedule:
60+
- cron: "0 13 * * 1" # Every Monday at 06:00 PST
61+
workflow_dispatch:
62+
defaults:
63+
run:
64+
shell: bash
65+
66+
# These permissions are needed to interact with GitHub's OIDC Token endpoint.
67+
permissions:
68+
id-token: write
69+
contents: read
70+
71+
# Cancels in-progress job when there is another push to same ref.
72+
# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-only-cancel-in-progress-jobs-or-runs-for-the-current-workflow
73+
concurrency:
74+
group: ${{ github.workflow }}-${{ github.ref }}
75+
cancel-in-progress: true
76+
77+
jobs:
78+
test:
79+
uses: ./.github/workflows/dart_vm.yaml
80+
secrets: inherit
81+
with:
82+
package-name: amplify_firehose_dart
83+
working-directory: packages/kinesis/amplify_firehose_dart

.github/workflows/amplify_kinesis.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ on:
2828
- 'packages/kinesis/amplify_kinesis/test/**/*'
2929
- 'packages/kinesis/amplify_kinesis_dart/lib/**/*.dart'
3030
- 'packages/kinesis/amplify_kinesis_dart/pubspec.yaml'
31+
- 'packages/kinesis/amplify_record_cache_dart/lib/**/*.dart'
32+
- 'packages/kinesis/amplify_record_cache_dart/pubspec.yaml'
3133
- 'packages/smithy/smithy/lib/**/*.dart'
3234
- 'packages/smithy/smithy/pubspec.yaml'
3335
- 'packages/smithy/smithy_aws/lib/**/*.dart'
@@ -56,6 +58,8 @@ on:
5658
- 'packages/kinesis/amplify_kinesis/test/**/*'
5759
- 'packages/kinesis/amplify_kinesis_dart/lib/**/*.dart'
5860
- 'packages/kinesis/amplify_kinesis_dart/pubspec.yaml'
61+
- 'packages/kinesis/amplify_record_cache_dart/lib/**/*.dart'
62+
- 'packages/kinesis/amplify_record_cache_dart/pubspec.yaml'
5963
- 'packages/smithy/smithy/lib/**/*.dart'
6064
- 'packages/smithy/smithy/pubspec.yaml'
6165
- 'packages/smithy/smithy_aws/lib/**/*.dart'

.github/workflows/amplify_kinesis_dart.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ on:
2727
- 'packages/kinesis/amplify_kinesis_dart/**/*.yaml'
2828
- 'packages/kinesis/amplify_kinesis_dart/lib/**/*'
2929
- 'packages/kinesis/amplify_kinesis_dart/test/**/*'
30+
- 'packages/kinesis/amplify_record_cache_dart/lib/**/*.dart'
31+
- 'packages/kinesis/amplify_record_cache_dart/pubspec.yaml'
3032
- 'packages/smithy/smithy/lib/**/*.dart'
3133
- 'packages/smithy/smithy/pubspec.yaml'
3234
- 'packages/smithy/smithy_aws/lib/**/*.dart'
@@ -54,6 +56,8 @@ on:
5456
- 'packages/kinesis/amplify_kinesis_dart/**/*.yaml'
5557
- 'packages/kinesis/amplify_kinesis_dart/lib/**/*'
5658
- 'packages/kinesis/amplify_kinesis_dart/test/**/*'
59+
- 'packages/kinesis/amplify_record_cache_dart/lib/**/*.dart'
60+
- 'packages/kinesis/amplify_record_cache_dart/pubspec.yaml'
5761
- 'packages/smithy/smithy/lib/**/*.dart'
5862
- 'packages/smithy/smithy/pubspec.yaml'
5963
- 'packages/smithy/smithy_aws/lib/**/*.dart'

.github/workflows/amplify_kinesis_example.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ on:
5757
- 'packages/kinesis/amplify_kinesis/pubspec.yaml'
5858
- 'packages/kinesis/amplify_kinesis_dart/lib/**/*.dart'
5959
- 'packages/kinesis/amplify_kinesis_dart/pubspec.yaml'
60+
- 'packages/kinesis/amplify_record_cache_dart/lib/**/*.dart'
61+
- 'packages/kinesis/amplify_record_cache_dart/pubspec.yaml'
6062
- 'packages/secure_storage/amplify_secure_storage/android/**/*'
6163
- 'packages/secure_storage/amplify_secure_storage/ios/**/*'
6264
- 'packages/secure_storage/amplify_secure_storage/lib/**/*.dart'
@@ -127,6 +129,8 @@ on:
127129
- 'packages/kinesis/amplify_kinesis/pubspec.yaml'
128130
- 'packages/kinesis/amplify_kinesis_dart/lib/**/*.dart'
129131
- 'packages/kinesis/amplify_kinesis_dart/pubspec.yaml'
132+
- 'packages/kinesis/amplify_record_cache_dart/lib/**/*.dart'
133+
- 'packages/kinesis/amplify_record_cache_dart/pubspec.yaml'
130134
- 'packages/secure_storage/amplify_secure_storage/android/**/*'
131135
- 'packages/secure_storage/amplify_secure_storage/ios/**/*'
132136
- 'packages/secure_storage/amplify_secure_storage/lib/**/*.dart'
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# Generated with aft. To update, run: `aft generate workflows`
2+
name: amplify_record_cache_dart
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- stable
8+
paths:
9+
- '.github/workflows/amplify_record_cache_dart.yaml'
10+
- '.github/workflows/dart_vm.yaml'
11+
- 'packages/amplify_core/lib/**/*.dart'
12+
- 'packages/amplify_core/pubspec.yaml'
13+
- 'packages/amplify_foundation/amplify_foundation_dart/lib/**/*.dart'
14+
- 'packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml'
15+
- 'packages/amplify_lints/lib/**/*.yaml'
16+
- 'packages/amplify_lints/pubspec.yaml'
17+
- 'packages/aws_common/lib/**/*.dart'
18+
- 'packages/aws_common/pubspec.yaml'
19+
- 'packages/aws_signature_v4/lib/**/*.dart'
20+
- 'packages/aws_signature_v4/pubspec.yaml'
21+
- 'packages/common/amplify_db_common_dart/lib/**/*.dart'
22+
- 'packages/common/amplify_db_common_dart/pubspec.yaml'
23+
- 'packages/kinesis/amplify_record_cache_dart/**/*.dart'
24+
- 'packages/kinesis/amplify_record_cache_dart/**/*.yaml'
25+
- 'packages/kinesis/amplify_record_cache_dart/lib/**/*'
26+
- 'packages/kinesis/amplify_record_cache_dart/test/**/*'
27+
- 'packages/smithy/smithy/lib/**/*.dart'
28+
- 'packages/smithy/smithy/pubspec.yaml'
29+
pull_request:
30+
paths:
31+
- '.github/workflows/amplify_record_cache_dart.yaml'
32+
- '.github/workflows/dart_vm.yaml'
33+
- 'packages/amplify_core/lib/**/*.dart'
34+
- 'packages/amplify_core/pubspec.yaml'
35+
- 'packages/amplify_foundation/amplify_foundation_dart/lib/**/*.dart'
36+
- 'packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml'
37+
- 'packages/amplify_lints/lib/**/*.yaml'
38+
- 'packages/amplify_lints/pubspec.yaml'
39+
- 'packages/aws_common/lib/**/*.dart'
40+
- 'packages/aws_common/pubspec.yaml'
41+
- 'packages/aws_signature_v4/lib/**/*.dart'
42+
- 'packages/aws_signature_v4/pubspec.yaml'
43+
- 'packages/common/amplify_db_common_dart/lib/**/*.dart'
44+
- 'packages/common/amplify_db_common_dart/pubspec.yaml'
45+
- 'packages/kinesis/amplify_record_cache_dart/**/*.dart'
46+
- 'packages/kinesis/amplify_record_cache_dart/**/*.yaml'
47+
- 'packages/kinesis/amplify_record_cache_dart/lib/**/*'
48+
- 'packages/kinesis/amplify_record_cache_dart/test/**/*'
49+
- 'packages/smithy/smithy/lib/**/*.dart'
50+
- 'packages/smithy/smithy/pubspec.yaml'
51+
schedule:
52+
- cron: "0 13 * * 1" # Every Monday at 06:00 PST
53+
workflow_dispatch:
54+
defaults:
55+
run:
56+
shell: bash
57+
58+
# These permissions are needed to interact with GitHub's OIDC Token endpoint.
59+
permissions:
60+
id-token: write
61+
contents: read
62+
63+
# Cancels in-progress job when there is another push to same ref.
64+
# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-only-cancel-in-progress-jobs-or-runs-for-the-current-workflow
65+
concurrency:
66+
group: ${{ github.workflow }}-${{ github.ref }}
67+
cancel-in-progress: true
68+
69+
jobs:
70+
test:
71+
uses: ./.github/workflows/dart_vm.yaml
72+
secrets: inherit
73+
with:
74+
package-name: amplify_record_cache_dart
75+
working-directory: packages/kinesis/amplify_record_cache_dart

packages/kinesis/amplify_kinesis_dart/lib/amplify_kinesis_dart.dart

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,22 @@
44
/// Amplify Kinesis Data Streams client for Dart.
55
library;
66

7+
// Re-export shared types used in the public API
8+
export 'package:amplify_record_cache_dart/amplify_record_cache_dart.dart'
9+
show
10+
FlushStrategy,
11+
FlushInterval,
12+
FlushNone,
13+
FlushData,
14+
RecordData,
15+
ClearCacheData;
16+
717
// Main client
818
export 'src/amplify_kinesis_client.dart';
919
// Options
1020
export 'src/amplify_kinesis_client_options.dart';
1121
// Exceptions
1222
export 'src/exception/amplify_kinesis_exception.dart';
13-
// Flush strategies
14-
export 'src/flush_strategy/flush_strategy.dart';
15-
// Return types
16-
export 'src/model/clear_cache_data.dart';
17-
export 'src/model/flush_data.dart';
18-
export 'src/model/record_data.dart';
1923
// SDK client (for escape hatch)
2024
export 'src/sdk/kinesis.dart'
2125
show

0 commit comments

Comments
 (0)