fauxqs 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +1621 -1603
  3. package/dist/initConfig.d.ts +21 -0
  4. package/dist/initConfig.d.ts.map +1 -1
  5. package/dist/initConfig.js +79 -0
  6. package/dist/initConfig.js.map +1 -1
  7. package/dist/persistence.d.ts +3 -0
  8. package/dist/persistence.d.ts.map +1 -1
  9. package/dist/persistence.js +151 -130
  10. package/dist/persistence.js.map +1 -1
  11. package/dist/s3/actions/deleteBucketLifecycleConfiguration.d.ts +8 -0
  12. package/dist/s3/actions/deleteBucketLifecycleConfiguration.d.ts.map +1 -0
  13. package/dist/s3/actions/deleteBucketLifecycleConfiguration.js +10 -0
  14. package/dist/s3/actions/deleteBucketLifecycleConfiguration.js.map +1 -0
  15. package/dist/s3/actions/getBucketLifecycleConfiguration.d.ts +8 -0
  16. package/dist/s3/actions/getBucketLifecycleConfiguration.d.ts.map +1 -0
  17. package/dist/s3/actions/getBucketLifecycleConfiguration.js +14 -0
  18. package/dist/s3/actions/getBucketLifecycleConfiguration.js.map +1 -0
  19. package/dist/s3/actions/putBucketLifecycleConfiguration.d.ts +8 -0
  20. package/dist/s3/actions/putBucketLifecycleConfiguration.d.ts.map +1 -0
  21. package/dist/s3/actions/putBucketLifecycleConfiguration.js +13 -0
  22. package/dist/s3/actions/putBucketLifecycleConfiguration.js.map +1 -0
  23. package/dist/s3/fileS3Persistence.d.ts +2 -0
  24. package/dist/s3/fileS3Persistence.d.ts.map +1 -1
  25. package/dist/s3/fileS3Persistence.js +17 -0
  26. package/dist/s3/fileS3Persistence.js.map +1 -1
  27. package/dist/s3/s3Persistence.d.ts +2 -0
  28. package/dist/s3/s3Persistence.d.ts.map +1 -1
  29. package/dist/s3/s3Router.d.ts.map +1 -1
  30. package/dist/s3/s3Router.js +39 -6
  31. package/dist/s3/s3Router.js.map +1 -1
  32. package/dist/s3/s3Store.d.ts +5 -0
  33. package/dist/s3/s3Store.d.ts.map +1 -1
  34. package/dist/s3/s3Store.js +17 -0
  35. package/dist/s3/s3Store.js.map +1 -1
  36. package/dist/sns/snsStore.d.ts.map +1 -1
  37. package/dist/sns/snsStore.js +13 -11
  38. package/dist/sns/snsStore.js.map +1 -1
  39. package/dist/sqs/actions/createQueue.d.ts.map +1 -1
  40. package/dist/sqs/actions/createQueue.js +12 -3
  41. package/dist/sqs/actions/createQueue.js.map +1 -1
  42. package/package.json +93 -93
@@ -25,6 +25,27 @@ declare const InitConfigSchema: v.ObjectSchema<{
25
25
  readonly buckets: v.OptionalSchema<v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.ObjectSchema<{
26
26
  readonly name: v.StringSchema<undefined>;
27
27
  readonly type: v.OptionalSchema<v.PicklistSchema<["general-purpose", "directory"], undefined>, undefined>;
28
+ readonly lifecycleConfiguration: v.OptionalSchema<v.ObjectSchema<{
29
+ readonly Rules: v.ArraySchema<v.ObjectSchema<{
30
+ readonly ID: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
31
+ readonly Status: v.PicklistSchema<["Enabled", "Disabled"], undefined>;
32
+ readonly Filter: v.OptionalSchema<v.ObjectSchema<{
33
+ readonly Prefix: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
34
+ }, undefined>, undefined>;
35
+ readonly Expiration: v.OptionalSchema<v.ObjectSchema<{
36
+ readonly Days: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
37
+ readonly Date: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
38
+ readonly ExpiredObjectDeleteMarker: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
39
+ }, undefined>, undefined>;
40
+ readonly NoncurrentVersionExpiration: v.OptionalSchema<v.ObjectSchema<{
41
+ readonly NoncurrentDays: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
42
+ readonly NewerNoncurrentVersions: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
43
+ }, undefined>, undefined>;
44
+ readonly AbortIncompleteMultipartUpload: v.OptionalSchema<v.ObjectSchema<{
45
+ readonly DaysAfterInitiation: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
46
+ }, undefined>, undefined>;
47
+ }, undefined>, undefined>;
48
+ }, undefined>, undefined>;
28
49
  }, undefined>], undefined>, undefined>, undefined>;
29
50
  }, undefined>;
30
51
  export type FauxqsInitConfig = v.InferOutput<typeof InitConfigSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"initConfig.d.ts","sourceRoot":"","sources":["../src/initConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAI7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAiC/C,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;aAMpB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,aAAa,EAAE,uBAAuB,EAAE,CAAC;IACzC,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAElE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAG7D;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC,WAAW,CA6Fb"}
1
+ {"version":3,"file":"initConfig.d.ts","sourceRoot":"","sources":["../src/initConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAI7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAkE/C,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAMpB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,aAAa,EAAE,uBAAuB,EAAE,CAAC;IACzC,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAElE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAG7D;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC,WAAW,CAmGb"}
@@ -21,11 +21,33 @@ const SubscriptionSchema = v.object({
21
21
  region: v.optional(v.string()),
22
22
  attributes: v.optional(StringRecordSchema),
23
23
  });
24
+ const LifecycleRuleSchema = v.object({
25
+ ID: v.optional(v.string()),
26
+ Status: v.picklist(["Enabled", "Disabled"]),
27
+ Filter: v.optional(v.object({
28
+ Prefix: v.optional(v.string()),
29
+ })),
30
+ Expiration: v.optional(v.object({
31
+ Days: v.optional(v.number()),
32
+ Date: v.optional(v.string()),
33
+ ExpiredObjectDeleteMarker: v.optional(v.boolean()),
34
+ })),
35
+ NoncurrentVersionExpiration: v.optional(v.object({
36
+ NoncurrentDays: v.optional(v.number()),
37
+ NewerNoncurrentVersions: v.optional(v.number()),
38
+ })),
39
+ AbortIncompleteMultipartUpload: v.optional(v.object({
40
+ DaysAfterInitiation: v.optional(v.number()),
41
+ })),
42
+ });
24
43
  const BucketSchema = v.union([
25
44
  v.string(),
26
45
  v.object({
27
46
  name: v.string(),
28
47
  type: v.optional(v.picklist(["general-purpose", "directory"])),
48
+ lifecycleConfiguration: v.optional(v.object({
49
+ Rules: v.array(LifecycleRuleSchema),
50
+ })),
29
51
  }),
30
52
  ]);
31
53
  const InitConfigSchema = v.object({
@@ -115,6 +137,9 @@ export function applyInitConfig(config, sqsStore, snsStore, s3Store, context) {
115
137
  }
116
138
  else {
117
139
  s3Store.createBucket(entry.name, entry.type);
140
+ if (entry.lifecycleConfiguration) {
141
+ s3Store.putBucketLifecycleConfiguration(entry.name, lifecycleConfigToXml(entry.lifecycleConfiguration));
142
+ }
118
143
  }
119
144
  bucketResults.push({ name, created: !existed });
120
145
  }
@@ -126,4 +151,58 @@ export function applyInitConfig(config, sqsStore, snsStore, s3Store, context) {
126
151
  buckets: bucketResults,
127
152
  };
128
153
  }
154
+ function lifecycleConfigToXml(config) {
155
+ const rules = config.Rules.map((rule) => {
156
+ const parts = [];
157
+ if (rule.ID)
158
+ parts.push(`<ID>${escapeXml(rule.ID)}</ID>`);
159
+ if (rule.Filter) {
160
+ if (rule.Filter.Prefix !== undefined) {
161
+ parts.push(`<Filter><Prefix>${escapeXml(rule.Filter.Prefix)}</Prefix></Filter>`);
162
+ }
163
+ else {
164
+ parts.push("<Filter><Prefix></Prefix></Filter>");
165
+ }
166
+ }
167
+ parts.push(`<Status>${rule.Status}</Status>`);
168
+ if (rule.Expiration) {
169
+ const exp = [];
170
+ if (rule.Expiration.Days !== undefined)
171
+ exp.push(`<Days>${rule.Expiration.Days}</Days>`);
172
+ if (rule.Expiration.Date)
173
+ exp.push(`<Date>${escapeXml(rule.Expiration.Date)}</Date>`);
174
+ if (rule.Expiration.ExpiredObjectDeleteMarker !== undefined) {
175
+ exp.push(`<ExpiredObjectDeleteMarker>${rule.Expiration.ExpiredObjectDeleteMarker}</ExpiredObjectDeleteMarker>`);
176
+ }
177
+ parts.push(`<Expiration>${exp.join("")}</Expiration>`);
178
+ }
179
+ if (rule.NoncurrentVersionExpiration) {
180
+ const nve = [];
181
+ if (rule.NoncurrentVersionExpiration.NoncurrentDays !== undefined) {
182
+ nve.push(`<NoncurrentDays>${rule.NoncurrentVersionExpiration.NoncurrentDays}</NoncurrentDays>`);
183
+ }
184
+ if (rule.NoncurrentVersionExpiration.NewerNoncurrentVersions !== undefined) {
185
+ nve.push(`<NewerNoncurrentVersions>${rule.NoncurrentVersionExpiration.NewerNoncurrentVersions}</NewerNoncurrentVersions>`);
186
+ }
187
+ parts.push(`<NoncurrentVersionExpiration>${nve.join("")}</NoncurrentVersionExpiration>`);
188
+ }
189
+ if (rule.AbortIncompleteMultipartUpload) {
190
+ const aimu = [];
191
+ if (rule.AbortIncompleteMultipartUpload.DaysAfterInitiation !== undefined) {
192
+ aimu.push(`<DaysAfterInitiation>${rule.AbortIncompleteMultipartUpload.DaysAfterInitiation}</DaysAfterInitiation>`);
193
+ }
194
+ parts.push(`<AbortIncompleteMultipartUpload>${aimu.join("")}</AbortIncompleteMultipartUpload>`);
195
+ }
196
+ return `<Rule>${parts.join("")}</Rule>`;
197
+ });
198
+ return `<LifecycleConfiguration>${rules.join("")}</LifecycleConfiguration>`;
199
+ }
200
+ function escapeXml(str) {
201
+ return str
202
+ .replaceAll("&", "&amp;")
203
+ .replaceAll("<", "&lt;")
204
+ .replaceAll(">", "&gt;")
205
+ .replaceAll('"', "&quot;")
206
+ .replaceAll("'", "&apos;");
207
+ }
129
208
  //# sourceMappingURL=initConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"initConfig.js","sourceRoot":"","sources":["../src/initConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initConfig.js","sourceRoot":"","sources":["../src/initConfig.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,8 @@ export declare class PersistenceManager implements S3PersistenceProvider {
30
30
  updateSubscriptionAttributes(arn: string, attributes: Record<string, string>): void;
31
31
  insertBucket(name: string, creationDate: Date, type: BucketType): void;
32
32
  deleteBucket(name: string): void;
33
+ saveBucketLifecycleConfiguration(bucket: string, config: string): void;
34
+ deleteBucketLifecycleConfiguration(bucket: string): void;
33
35
  upsertObject(bucket: string, obj: S3Object): void;
34
36
  deleteObject(bucket: string, key: string): void;
35
37
  deleteObjectsByBucket(bucket: string): void;
@@ -51,6 +53,7 @@ export declare class PersistenceManager implements S3PersistenceProvider {
51
53
  private loadSnsTopics;
52
54
  private loadSnsSubscriptions;
53
55
  private loadS3Buckets;
56
+ private loadS3BucketLifecycleConfigurations;
54
57
  private loadS3Objects;
55
58
  private loadS3MultipartUploads;
56
59
  close(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"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"}
@@ -1,103 +1,108 @@
1
1
  import { mkdirSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { DatabaseSync } from "node:sqlite";
4
- const SCHEMA = `
5
- CREATE TABLE IF NOT EXISTS sqs_queues (
6
- name TEXT PRIMARY KEY,
7
- url TEXT NOT NULL,
8
- arn TEXT NOT NULL,
9
- attributes TEXT NOT NULL,
10
- tags TEXT NOT NULL,
11
- created_timestamp INTEGER NOT NULL,
12
- last_modified_timestamp INTEGER NOT NULL,
13
- sequence_counter INTEGER NOT NULL DEFAULT 0
14
- );
15
-
16
- CREATE TABLE IF NOT EXISTS sqs_messages (
17
- message_id TEXT PRIMARY KEY,
18
- queue_name TEXT NOT NULL REFERENCES sqs_queues(name) ON DELETE CASCADE,
19
- body TEXT NOT NULL,
20
- md5_of_body TEXT NOT NULL,
21
- message_attributes TEXT NOT NULL,
22
- md5_of_message_attributes TEXT NOT NULL,
23
- sent_timestamp INTEGER NOT NULL,
24
- approximate_receive_count INTEGER NOT NULL DEFAULT 0,
25
- approximate_first_receive_timestamp INTEGER,
26
- delay_until INTEGER,
27
- message_group_id TEXT,
28
- message_deduplication_id TEXT,
29
- sequence_number TEXT,
30
- receipt_handle TEXT,
31
- visibility_deadline INTEGER
32
- );
33
-
34
- CREATE TABLE IF NOT EXISTS sns_topics (
35
- arn TEXT PRIMARY KEY,
36
- name TEXT NOT NULL,
37
- attributes TEXT NOT NULL,
38
- tags TEXT NOT NULL,
39
- subscription_arns TEXT NOT NULL
40
- );
41
-
42
- CREATE TABLE IF NOT EXISTS sns_subscriptions (
43
- arn TEXT PRIMARY KEY,
44
- topic_arn TEXT NOT NULL,
45
- protocol TEXT NOT NULL,
46
- endpoint TEXT NOT NULL,
47
- confirmed INTEGER NOT NULL DEFAULT 0,
48
- attributes TEXT NOT NULL
49
- );
50
-
51
- CREATE TABLE IF NOT EXISTS s3_buckets (
52
- name TEXT PRIMARY KEY,
53
- creation_date TEXT NOT NULL,
54
- type TEXT NOT NULL DEFAULT 'general-purpose'
55
- );
56
-
57
- CREATE TABLE IF NOT EXISTS s3_objects (
58
- bucket TEXT NOT NULL,
59
- key TEXT NOT NULL,
60
- body BLOB NOT NULL,
61
- content_type TEXT NOT NULL,
62
- content_length INTEGER NOT NULL,
63
- etag TEXT NOT NULL,
64
- last_modified TEXT NOT NULL,
65
- metadata TEXT NOT NULL,
66
- content_language TEXT,
67
- content_disposition TEXT,
68
- cache_control TEXT,
69
- content_encoding TEXT,
70
- parts TEXT,
71
- checksum_algorithm TEXT,
72
- checksum_value TEXT,
73
- checksum_type TEXT,
74
- part_checksums TEXT,
75
- PRIMARY KEY (bucket, key)
76
- );
77
-
78
- CREATE TABLE IF NOT EXISTS s3_multipart_uploads (
79
- upload_id TEXT PRIMARY KEY,
80
- bucket TEXT NOT NULL,
81
- key TEXT NOT NULL,
82
- content_type TEXT NOT NULL,
83
- metadata TEXT NOT NULL,
84
- initiated TEXT NOT NULL,
85
- content_language TEXT,
86
- content_disposition TEXT,
87
- cache_control TEXT,
88
- content_encoding TEXT,
89
- checksum_algorithm TEXT
90
- );
91
-
92
- CREATE TABLE IF NOT EXISTS s3_multipart_parts (
93
- upload_id TEXT NOT NULL REFERENCES s3_multipart_uploads(upload_id) ON DELETE CASCADE,
94
- part_number INTEGER NOT NULL,
95
- body BLOB NOT NULL,
96
- etag TEXT NOT NULL,
97
- last_modified TEXT NOT NULL,
98
- checksum_value TEXT,
99
- PRIMARY KEY (upload_id, part_number)
100
- );
4
+ const SCHEMA = `
5
+ CREATE TABLE IF NOT EXISTS sqs_queues (
6
+ name TEXT PRIMARY KEY,
7
+ url TEXT NOT NULL,
8
+ arn TEXT NOT NULL,
9
+ attributes TEXT NOT NULL,
10
+ tags TEXT NOT NULL,
11
+ created_timestamp INTEGER NOT NULL,
12
+ last_modified_timestamp INTEGER NOT NULL,
13
+ sequence_counter INTEGER NOT NULL DEFAULT 0
14
+ );
15
+
16
+ CREATE TABLE IF NOT EXISTS sqs_messages (
17
+ message_id TEXT PRIMARY KEY,
18
+ queue_name TEXT NOT NULL REFERENCES sqs_queues(name) ON DELETE CASCADE,
19
+ body TEXT NOT NULL,
20
+ md5_of_body TEXT NOT NULL,
21
+ message_attributes TEXT NOT NULL,
22
+ md5_of_message_attributes TEXT NOT NULL,
23
+ sent_timestamp INTEGER NOT NULL,
24
+ approximate_receive_count INTEGER NOT NULL DEFAULT 0,
25
+ approximate_first_receive_timestamp INTEGER,
26
+ delay_until INTEGER,
27
+ message_group_id TEXT,
28
+ message_deduplication_id TEXT,
29
+ sequence_number TEXT,
30
+ receipt_handle TEXT,
31
+ visibility_deadline INTEGER
32
+ );
33
+
34
+ CREATE TABLE IF NOT EXISTS sns_topics (
35
+ arn TEXT PRIMARY KEY,
36
+ name TEXT NOT NULL,
37
+ attributes TEXT NOT NULL,
38
+ tags TEXT NOT NULL,
39
+ subscription_arns TEXT NOT NULL
40
+ );
41
+
42
+ CREATE TABLE IF NOT EXISTS sns_subscriptions (
43
+ arn TEXT PRIMARY KEY,
44
+ topic_arn TEXT NOT NULL,
45
+ protocol TEXT NOT NULL,
46
+ endpoint TEXT NOT NULL,
47
+ confirmed INTEGER NOT NULL DEFAULT 0,
48
+ attributes TEXT NOT NULL
49
+ );
50
+
51
+ CREATE TABLE IF NOT EXISTS s3_buckets (
52
+ name TEXT PRIMARY KEY,
53
+ creation_date TEXT NOT NULL,
54
+ type TEXT NOT NULL DEFAULT 'general-purpose'
55
+ );
56
+
57
+ CREATE TABLE IF NOT EXISTS s3_bucket_lifecycle_configurations (
58
+ bucket TEXT PRIMARY KEY REFERENCES s3_buckets(name) ON DELETE CASCADE,
59
+ configuration TEXT NOT NULL
60
+ );
61
+
62
+ CREATE TABLE IF NOT EXISTS s3_objects (
63
+ bucket TEXT NOT NULL,
64
+ key TEXT NOT NULL,
65
+ body BLOB NOT NULL,
66
+ content_type TEXT NOT NULL,
67
+ content_length INTEGER NOT NULL,
68
+ etag TEXT NOT NULL,
69
+ last_modified TEXT NOT NULL,
70
+ metadata TEXT NOT NULL,
71
+ content_language TEXT,
72
+ content_disposition TEXT,
73
+ cache_control TEXT,
74
+ content_encoding TEXT,
75
+ parts TEXT,
76
+ checksum_algorithm TEXT,
77
+ checksum_value TEXT,
78
+ checksum_type TEXT,
79
+ part_checksums TEXT,
80
+ PRIMARY KEY (bucket, key)
81
+ );
82
+
83
+ CREATE TABLE IF NOT EXISTS s3_multipart_uploads (
84
+ upload_id TEXT PRIMARY KEY,
85
+ bucket TEXT NOT NULL,
86
+ key TEXT NOT NULL,
87
+ content_type TEXT NOT NULL,
88
+ metadata TEXT NOT NULL,
89
+ initiated TEXT NOT NULL,
90
+ content_language TEXT,
91
+ content_disposition TEXT,
92
+ cache_control TEXT,
93
+ content_encoding TEXT,
94
+ checksum_algorithm TEXT
95
+ );
96
+
97
+ CREATE TABLE IF NOT EXISTS s3_multipart_parts (
98
+ upload_id TEXT NOT NULL REFERENCES s3_multipart_uploads(upload_id) ON DELETE CASCADE,
99
+ part_number INTEGER NOT NULL,
100
+ body BLOB NOT NULL,
101
+ etag TEXT NOT NULL,
102
+ last_modified TEXT NOT NULL,
103
+ checksum_value TEXT,
104
+ PRIMARY KEY (upload_id, part_number)
105
+ );
101
106
  `;
102
107
  export class PersistenceManager {
103
108
  db;
@@ -112,41 +117,41 @@ export class PersistenceManager {
112
117
  }
113
118
  prepareStatements() {
114
119
  return {
115
- insertQueue: this.db.prepare(`
116
- INSERT OR REPLACE INTO sqs_queues (name, url, arn, attributes, tags, created_timestamp, last_modified_timestamp, sequence_counter)
117
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
120
+ insertQueue: this.db.prepare(`
121
+ INSERT OR REPLACE INTO sqs_queues (name, url, arn, attributes, tags, created_timestamp, last_modified_timestamp, sequence_counter)
122
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
118
123
  `),
119
124
  deleteQueue: this.db.prepare("DELETE FROM sqs_queues WHERE name = ?"),
120
125
  updateQueueAttributes: this.db.prepare("UPDATE sqs_queues SET attributes = ?, last_modified_timestamp = ? WHERE name = ?"),
121
126
  updateQueueSequenceCounter: this.db.prepare("UPDATE sqs_queues SET sequence_counter = ? WHERE name = ?"),
122
127
  loadQueues: this.db.prepare("SELECT * FROM sqs_queues"),
123
- insertMessage: this.db.prepare(`
124
- INSERT OR REPLACE INTO sqs_messages (
125
- message_id, queue_name, body, md5_of_body, message_attributes, md5_of_message_attributes,
126
- sent_timestamp, approximate_receive_count, approximate_first_receive_timestamp,
127
- delay_until, message_group_id, message_deduplication_id, sequence_number,
128
- receipt_handle, visibility_deadline
129
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
128
+ insertMessage: this.db.prepare(`
129
+ INSERT OR REPLACE INTO sqs_messages (
130
+ message_id, queue_name, body, md5_of_body, message_attributes, md5_of_message_attributes,
131
+ sent_timestamp, approximate_receive_count, approximate_first_receive_timestamp,
132
+ delay_until, message_group_id, message_deduplication_id, sequence_number,
133
+ receipt_handle, visibility_deadline
134
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
130
135
  `),
131
136
  deleteMessage: this.db.prepare("DELETE FROM sqs_messages WHERE message_id = ?"),
132
- updateMessageInflight: this.db.prepare(`
133
- UPDATE sqs_messages SET receipt_handle = ?, visibility_deadline = ?, approximate_receive_count = ?, approximate_first_receive_timestamp = ?
134
- WHERE message_id = ?
137
+ updateMessageInflight: this.db.prepare(`
138
+ UPDATE sqs_messages SET receipt_handle = ?, visibility_deadline = ?, approximate_receive_count = ?, approximate_first_receive_timestamp = ?
139
+ WHERE message_id = ?
135
140
  `),
136
141
  deleteQueueMessages: this.db.prepare("DELETE FROM sqs_messages WHERE queue_name = ?"),
137
142
  loadMessages: this.db.prepare("SELECT * FROM sqs_messages WHERE queue_name = ?"),
138
143
  deleteAllMessages: this.db.prepare("DELETE FROM sqs_messages"),
139
- insertTopic: this.db.prepare(`
140
- INSERT OR REPLACE INTO sns_topics (arn, name, attributes, tags, subscription_arns)
141
- VALUES (?, ?, ?, ?, ?)
144
+ insertTopic: this.db.prepare(`
145
+ INSERT OR REPLACE INTO sns_topics (arn, name, attributes, tags, subscription_arns)
146
+ VALUES (?, ?, ?, ?, ?)
142
147
  `),
143
148
  deleteTopic: this.db.prepare("DELETE FROM sns_topics WHERE arn = ?"),
144
149
  updateTopicAttributes: this.db.prepare("UPDATE sns_topics SET attributes = ? WHERE arn = ?"),
145
150
  updateTopicSubscriptionArns: this.db.prepare("UPDATE sns_topics SET subscription_arns = ? WHERE arn = ?"),
146
151
  loadTopics: this.db.prepare("SELECT * FROM sns_topics"),
147
- insertSubscription: this.db.prepare(`
148
- INSERT OR REPLACE INTO sns_subscriptions (arn, topic_arn, protocol, endpoint, confirmed, attributes)
149
- VALUES (?, ?, ?, ?, ?, ?)
152
+ insertSubscription: this.db.prepare(`
153
+ INSERT OR REPLACE INTO sns_subscriptions (arn, topic_arn, protocol, endpoint, confirmed, attributes)
154
+ VALUES (?, ?, ?, ?, ?, ?)
150
155
  `),
151
156
  deleteSubscription: this.db.prepare("DELETE FROM sns_subscriptions WHERE arn = ?"),
152
157
  updateSubscriptionAttributes: this.db.prepare("UPDATE sns_subscriptions SET attributes = ? WHERE arn = ?"),
@@ -154,28 +159,31 @@ export class PersistenceManager {
154
159
  insertBucket: this.db.prepare("INSERT OR REPLACE INTO s3_buckets (name, creation_date, type) VALUES (?, ?, ?)"),
155
160
  deleteBucket: this.db.prepare("DELETE FROM s3_buckets WHERE name = ?"),
156
161
  loadBuckets: this.db.prepare("SELECT * FROM s3_buckets"),
157
- upsertObject: this.db.prepare(`
158
- INSERT OR REPLACE INTO s3_objects (
159
- bucket, key, body, content_type, content_length, etag, last_modified, metadata,
160
- content_language, content_disposition, cache_control, content_encoding,
161
- parts, checksum_algorithm, checksum_value, checksum_type, part_checksums
162
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
162
+ saveBucketLifecycleConfiguration: this.db.prepare("INSERT OR REPLACE INTO s3_bucket_lifecycle_configurations (bucket, configuration) VALUES (?, ?)"),
163
+ deleteBucketLifecycleConfiguration: this.db.prepare("DELETE FROM s3_bucket_lifecycle_configurations WHERE bucket = ?"),
164
+ loadBucketLifecycleConfigurations: this.db.prepare("SELECT * FROM s3_bucket_lifecycle_configurations"),
165
+ upsertObject: this.db.prepare(`
166
+ INSERT OR REPLACE INTO s3_objects (
167
+ bucket, key, body, content_type, content_length, etag, last_modified, metadata,
168
+ content_language, content_disposition, cache_control, content_encoding,
169
+ parts, checksum_algorithm, checksum_value, checksum_type, part_checksums
170
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
163
171
  `),
164
172
  deleteObject: this.db.prepare("DELETE FROM s3_objects WHERE bucket = ? AND key = ?"),
165
173
  deleteObjectsByBucket: this.db.prepare("DELETE FROM s3_objects WHERE bucket = ?"),
166
174
  deleteAllObjects: this.db.prepare("DELETE FROM s3_objects"),
167
175
  loadObjectsMeta: this.db.prepare("SELECT bucket, key, content_type, content_length, etag, last_modified, metadata, content_language, content_disposition, cache_control, content_encoding, parts, checksum_algorithm, checksum_value, checksum_type, part_checksums FROM s3_objects"),
168
- insertMultipartUpload: this.db.prepare(`
169
- INSERT OR REPLACE INTO s3_multipart_uploads (
170
- upload_id, bucket, key, content_type, metadata, initiated,
171
- content_language, content_disposition, cache_control, content_encoding, checksum_algorithm
172
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
176
+ insertMultipartUpload: this.db.prepare(`
177
+ INSERT OR REPLACE INTO s3_multipart_uploads (
178
+ upload_id, bucket, key, content_type, metadata, initiated,
179
+ content_language, content_disposition, cache_control, content_encoding, checksum_algorithm
180
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
173
181
  `),
174
182
  deleteMultipartUpload: this.db.prepare("DELETE FROM s3_multipart_uploads WHERE upload_id = ?"),
175
183
  loadMultipartUploads: this.db.prepare("SELECT * FROM s3_multipart_uploads"),
176
- upsertMultipartPart: this.db.prepare(`
177
- INSERT OR REPLACE INTO s3_multipart_parts (upload_id, part_number, body, etag, last_modified, checksum_value)
178
- VALUES (?, ?, ?, ?, ?, ?)
184
+ upsertMultipartPart: this.db.prepare(`
185
+ INSERT OR REPLACE INTO s3_multipart_parts (upload_id, part_number, body, etag, last_modified, checksum_value)
186
+ VALUES (?, ?, ?, ?, ?, ?)
179
187
  `),
180
188
  deleteMultipartParts: this.db.prepare("DELETE FROM s3_multipart_parts WHERE upload_id = ?"),
181
189
  loadMultipartParts: this.db.prepare("SELECT * FROM s3_multipart_parts WHERE upload_id = ?"),
@@ -257,6 +265,12 @@ export class PersistenceManager {
257
265
  deleteBucket(name) {
258
266
  this.stmts.deleteBucket.run(name);
259
267
  }
268
+ saveBucketLifecycleConfiguration(bucket, config) {
269
+ this.stmts.saveBucketLifecycleConfiguration.run(bucket, config);
270
+ }
271
+ deleteBucketLifecycleConfiguration(bucket) {
272
+ this.stmts.deleteBucketLifecycleConfiguration.run(bucket);
273
+ }
260
274
  // ── S3 Object write-through ──
261
275
  upsertObject(bucket, obj) {
262
276
  this.stmts.upsertObject.run(bucket, obj.key, obj.body, obj.contentType, obj.contentLength, obj.etag, obj.lastModified.toISOString(), JSON.stringify(obj.metadata), obj.contentLanguage ?? null, obj.contentDisposition ?? null, obj.cacheControl ?? null, obj.contentEncoding ?? null, obj.parts ? JSON.stringify(obj.parts) : null, obj.checksumAlgorithm ?? null, obj.checksumValue ?? null, obj.checksumType ?? null, obj.partChecksums ? JSON.stringify(obj.partChecksums) : null);
@@ -344,6 +358,7 @@ export class PersistenceManager {
344
358
  }
345
359
  loadS3(s3Store) {
346
360
  this.loadS3Buckets(s3Store);
361
+ this.loadS3BucketLifecycleConfigurations(s3Store);
347
362
  this.loadS3Objects(s3Store);
348
363
  this.loadS3MultipartUploads(s3Store);
349
364
  }
@@ -456,6 +471,12 @@ export class PersistenceManager {
456
471
  s3Store.setBucketCreationDate(row.name, new Date(row.creation_date));
457
472
  }
458
473
  }
474
+ loadS3BucketLifecycleConfigurations(s3Store) {
475
+ const rows = this.stmts.loadBucketLifecycleConfigurations.all();
476
+ for (const row of rows) {
477
+ s3Store.restoreBucketLifecycleConfiguration(row.bucket, row.configuration);
478
+ }
479
+ }
459
480
  loadS3Objects(s3Store) {
460
481
  // Load metadata only — bodies are read on demand via readBody()
461
482
  const rows = this.stmts.loadObjectsMeta.all();