fauxqs 2.3.0 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/persistence.js +130 -130
- package/dist/sns/snsStore.d.ts.map +1 -1
- package/dist/sns/snsStore.js +13 -11
- package/dist/sns/snsStore.js.map +1 -1
- package/dist/sqs/actions/createQueue.d.ts.map +1 -1
- package/dist/sqs/actions/createQueue.js +12 -3
- package/dist/sqs/actions/createQueue.js.map +1 -1
- package/package.json +1 -1
package/dist/persistence.js
CHANGED
|
@@ -1,103 +1,103 @@
|
|
|
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_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
|
+
);
|
|
101
101
|
`;
|
|
102
102
|
export class PersistenceManager {
|
|
103
103
|
db;
|
|
@@ -112,41 +112,41 @@ export class PersistenceManager {
|
|
|
112
112
|
}
|
|
113
113
|
prepareStatements() {
|
|
114
114
|
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 (?, ?, ?, ?, ?, ?, ?, ?)
|
|
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 (?, ?, ?, ?, ?, ?, ?, ?)
|
|
118
118
|
`),
|
|
119
119
|
deleteQueue: this.db.prepare("DELETE FROM sqs_queues WHERE name = ?"),
|
|
120
120
|
updateQueueAttributes: this.db.prepare("UPDATE sqs_queues SET attributes = ?, last_modified_timestamp = ? WHERE name = ?"),
|
|
121
121
|
updateQueueSequenceCounter: this.db.prepare("UPDATE sqs_queues SET sequence_counter = ? WHERE name = ?"),
|
|
122
122
|
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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
130
130
|
`),
|
|
131
131
|
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 = ?
|
|
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 = ?
|
|
135
135
|
`),
|
|
136
136
|
deleteQueueMessages: this.db.prepare("DELETE FROM sqs_messages WHERE queue_name = ?"),
|
|
137
137
|
loadMessages: this.db.prepare("SELECT * FROM sqs_messages WHERE queue_name = ?"),
|
|
138
138
|
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 (?, ?, ?, ?, ?)
|
|
139
|
+
insertTopic: this.db.prepare(`
|
|
140
|
+
INSERT OR REPLACE INTO sns_topics (arn, name, attributes, tags, subscription_arns)
|
|
141
|
+
VALUES (?, ?, ?, ?, ?)
|
|
142
142
|
`),
|
|
143
143
|
deleteTopic: this.db.prepare("DELETE FROM sns_topics WHERE arn = ?"),
|
|
144
144
|
updateTopicAttributes: this.db.prepare("UPDATE sns_topics SET attributes = ? WHERE arn = ?"),
|
|
145
145
|
updateTopicSubscriptionArns: this.db.prepare("UPDATE sns_topics SET subscription_arns = ? WHERE arn = ?"),
|
|
146
146
|
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 (?, ?, ?, ?, ?, ?)
|
|
147
|
+
insertSubscription: this.db.prepare(`
|
|
148
|
+
INSERT OR REPLACE INTO sns_subscriptions (arn, topic_arn, protocol, endpoint, confirmed, attributes)
|
|
149
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
150
150
|
`),
|
|
151
151
|
deleteSubscription: this.db.prepare("DELETE FROM sns_subscriptions WHERE arn = ?"),
|
|
152
152
|
updateSubscriptionAttributes: this.db.prepare("UPDATE sns_subscriptions SET attributes = ? WHERE arn = ?"),
|
|
@@ -154,28 +154,28 @@ export class PersistenceManager {
|
|
|
154
154
|
insertBucket: this.db.prepare("INSERT OR REPLACE INTO s3_buckets (name, creation_date, type) VALUES (?, ?, ?)"),
|
|
155
155
|
deleteBucket: this.db.prepare("DELETE FROM s3_buckets WHERE name = ?"),
|
|
156
156
|
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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
163
163
|
`),
|
|
164
164
|
deleteObject: this.db.prepare("DELETE FROM s3_objects WHERE bucket = ? AND key = ?"),
|
|
165
165
|
deleteObjectsByBucket: this.db.prepare("DELETE FROM s3_objects WHERE bucket = ?"),
|
|
166
166
|
deleteAllObjects: this.db.prepare("DELETE FROM s3_objects"),
|
|
167
167
|
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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
173
173
|
`),
|
|
174
174
|
deleteMultipartUpload: this.db.prepare("DELETE FROM s3_multipart_uploads WHERE upload_id = ?"),
|
|
175
175
|
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 (?, ?, ?, ?, ?, ?)
|
|
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 (?, ?, ?, ?, ?, ?)
|
|
179
179
|
`),
|
|
180
180
|
deleteMultipartParts: this.db.prepare("DELETE FROM s3_multipart_parts WHERE upload_id = ?"),
|
|
181
181
|
loadMultipartParts: this.db.prepare("SELECT * FROM s3_multipart_parts WHERE upload_id = ?"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snsStore.d.ts","sourceRoot":"","sources":["../../src/sns/snsStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE/D,qBAAa,QAAQ;IACnB,MAAM,wBAA+B;IACrC,aAAa,+BAAsC;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAEjC,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC9C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACxC,MAAM,EAAE,MAAM,GACb,QAAQ;
|
|
1
|
+
{"version":3,"file":"snsStore.d.ts","sourceRoot":"","sources":["../../src/sns/snsStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE/D,qBAAa,QAAQ;IACnB,MAAM,wBAA+B;IACrC,aAAa,+BAAsC;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAEjC,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC9C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACxC,MAAM,EAAE,MAAM,GACb,QAAQ;IAoDX,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAejC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI3C,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAY1E,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,eAAe,GAAG,SAAS;IAiD9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAejC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIzD,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG;QAAE,aAAa,EAAE,eAAe,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAY/F,wBAAwB,CACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB;QAAE,aAAa,EAAE,eAAe,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAiB3D,QAAQ,IAAI,IAAI;CAIjB"}
|
package/dist/sns/snsStore.js
CHANGED
|
@@ -11,29 +11,31 @@ export class SnsStore {
|
|
|
11
11
|
const arn = snsTopicArn(name, region);
|
|
12
12
|
const existing = this.topics.get(arn);
|
|
13
13
|
if (existing) {
|
|
14
|
-
// One-directional attribute check: only
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
14
|
+
// One-directional attribute check: only reject when a provided attribute value conflicts
|
|
15
|
+
// with an existing value. Missing attributes on the existing topic are not conflicts —
|
|
16
|
+
// they are merged in. This matches real AWS behaviour where CreateTopic is idempotent
|
|
17
|
+
// and allows different callers (e.g. consumer vs publisher in @message-queue-toolkit)
|
|
18
|
+
// to assertTopic with different attribute subsets without conflict.
|
|
19
19
|
if (attributes) {
|
|
20
20
|
for (const [key, value] of Object.entries(attributes)) {
|
|
21
|
-
if (existing.attributes[key] !== value) {
|
|
21
|
+
if (key in existing.attributes && existing.attributes[key] !== value) {
|
|
22
22
|
throw new SnsError("InvalidParameter", "Invalid parameter: Attributes Reason: Topic already exists with different attributes");
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
+
Object.assign(existing.attributes, attributes);
|
|
25
26
|
}
|
|
26
|
-
//
|
|
27
|
+
// One-directional tag check: only reject when a provided tag conflicts with an existing
|
|
28
|
+
// tag value. New tags are merged into the existing topic.
|
|
27
29
|
if (tags) {
|
|
28
30
|
const newTags = new Map(Object.entries(tags));
|
|
29
|
-
if (existing.tags.size !== newTags.size) {
|
|
30
|
-
throw new SnsError("InvalidParameter", "Invalid parameter: Tags Reason: Topic already exists with different tags");
|
|
31
|
-
}
|
|
32
31
|
for (const [key, value] of newTags) {
|
|
33
|
-
if (existing.tags.get(key) !== value) {
|
|
32
|
+
if (existing.tags.has(key) && existing.tags.get(key) !== value) {
|
|
34
33
|
throw new SnsError("InvalidParameter", "Invalid parameter: Tags Reason: Topic already exists with different tags");
|
|
35
34
|
}
|
|
36
35
|
}
|
|
36
|
+
for (const [key, value] of newTags) {
|
|
37
|
+
existing.tags.set(key, value);
|
|
38
|
+
}
|
|
37
39
|
}
|
|
38
40
|
return existing;
|
|
39
41
|
}
|
package/dist/sns/snsStore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snsStore.js","sourceRoot":"","sources":["../../src/sns/snsStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAK/C,MAAM,OAAO,QAAQ;IACnB,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IACrC,aAAa,GAAG,IAAI,GAAG,EAA2B,CAAC;IACnD,MAAM,CAAU;IAChB,GAAG,CAAc;IACjB,WAAW,CAAsB;IAEjC,WAAW,CACT,IAAY,EACZ,UAA8C,EAC9C,IAAwC,EACxC,MAAc;QAEd,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE,CAAC;YACb,
|
|
1
|
+
{"version":3,"file":"snsStore.js","sourceRoot":"","sources":["../../src/sns/snsStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQueue.d.ts","sourceRoot":"","sources":["../../../src/sqs/actions/createQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAI7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,cAAc,GACtB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"createQueue.d.ts","sourceRoot":"","sources":["../../../src/sqs/actions/createQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAI7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,cAAc,GACtB,iBAAiB,CA2EnB"}
|
|
@@ -38,13 +38,22 @@ export function createQueue(body, store, request) {
|
|
|
38
38
|
const arn = sqsQueueArn(queueName, region);
|
|
39
39
|
const existing = store.getQueueByArn(arn);
|
|
40
40
|
if (existing) {
|
|
41
|
-
// Idempotent: same name +
|
|
42
|
-
//
|
|
41
|
+
// Idempotent: same name + compatible attributes = return existing.
|
|
42
|
+
// Only reject when a provided attribute explicitly conflicts with an existing value.
|
|
43
|
+
// Missing attributes on the existing queue are not conflicts — they are merged in.
|
|
43
44
|
for (const key of Object.keys(attributes)) {
|
|
44
|
-
if (SETTABLE_ATTRIBUTES.has(key) &&
|
|
45
|
+
if (SETTABLE_ATTRIBUTES.has(key) &&
|
|
46
|
+
key in existing.attributes &&
|
|
47
|
+
existing.attributes[key] !== attributes[key]) {
|
|
45
48
|
throw new SqsError("QueueNameExists", `A queue already exists with the same name and a different value for attribute ${key}`);
|
|
46
49
|
}
|
|
47
50
|
}
|
|
51
|
+
// Merge new attributes into existing queue
|
|
52
|
+
for (const key of Object.keys(attributes)) {
|
|
53
|
+
if (SETTABLE_ATTRIBUTES.has(key) && !(key in existing.attributes)) {
|
|
54
|
+
existing.attributes[key] = attributes[key];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
48
57
|
return { QueueUrl: existing.url };
|
|
49
58
|
}
|
|
50
59
|
const requestHost = request.headers.host ?? "localhost";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQueue.js","sourceRoot":"","sources":["../../../src/sqs/actions/createQueue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE9E,MAAM,UAAU,WAAW,CACzB,IAA6B,EAC7B,KAAe,EACf,OAAuB;IAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,SAA+B,CAAC;IACvD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,UAAU,GAAI,IAAI,CAAC,UAAqC,IAAI,EAAE,CAAC;IACrE,MAAM,IAAI,GAAI,IAAI,CAAC,IAA+B,IAAI,EAAE,CAAC;IAEzD,kBAAkB;IAClB,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,KAAK,MAAM,CAAC;IAEnD,IAAI,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,+CAA+C;QAC/C,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC;IAChC,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,IAAI,QAAQ,CAChB,uBAAuB,EACvB,yHAAyH,CAC1H,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,IAAI,UAAU,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,yBAAyB,KAAK,SAAS,EAAE,CAAC;YACvD,UAAU,CAAC,yBAAyB,GAAG,OAAO,CAAC;QACjD,CAAC;QACD,IAAI,UAAU,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAChD,UAAU,CAAC,kBAAkB,GAAG,OAAO,CAAC;QAC1C,CAAC;QACD,IAAI,UAAU,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACjD,UAAU,CAAC,mBAAmB,GAAG,UAAU,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,uBAAuB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC;IAE/F,2EAA2E;IAC3E,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,QAAQ,EAAE,CAAC;QACb,
|
|
1
|
+
{"version":3,"file":"createQueue.js","sourceRoot":"","sources":["../../../src/sqs/actions/createQueue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE9E,MAAM,UAAU,WAAW,CACzB,IAA6B,EAC7B,KAAe,EACf,OAAuB;IAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,SAA+B,CAAC;IACvD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,UAAU,GAAI,IAAI,CAAC,UAAqC,IAAI,EAAE,CAAC;IACrE,MAAM,IAAI,GAAI,IAAI,CAAC,IAA+B,IAAI,EAAE,CAAC;IAEzD,kBAAkB;IAClB,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,KAAK,MAAM,CAAC;IAEnD,IAAI,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,+CAA+C;QAC/C,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC;IAChC,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,IAAI,QAAQ,CAChB,uBAAuB,EACvB,yHAAyH,CAC1H,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,IAAI,UAAU,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,yBAAyB,KAAK,SAAS,EAAE,CAAC;YACvD,UAAU,CAAC,yBAAyB,GAAG,OAAO,CAAC;QACjD,CAAC;QACD,IAAI,UAAU,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAChD,UAAU,CAAC,kBAAkB,GAAG,OAAO,CAAC;QAC1C,CAAC;QACD,IAAI,UAAU,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACjD,UAAU,CAAC,mBAAmB,GAAG,UAAU,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,uBAAuB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC;IAE/F,2EAA2E;IAC3E,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,QAAQ,EAAE,CAAC;QACb,mEAAmE;QACnE,qFAAqF;QACrF,mFAAmF;QACnF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,IACE,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC5B,GAAG,IAAI,QAAQ,CAAC,UAAU;gBAC1B,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,EAC5C,CAAC;gBACD,MAAM,IAAI,QAAQ,CAChB,iBAAiB,EACjB,iFAAiF,GAAG,EAAE,CACvF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,2CAA2C;QAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAA8B,CAAC;IAChE,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IACxD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAEtE,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACvE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,EAA8B,CAAC;AAC7D,CAAC"}
|