local-serverless-stack 0.6.0 → 0.8.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 (215) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +99 -11
  3. package/bin/cli.js +31 -3
  4. package/dist/server/engine/backends/localstack-backend.d.ts +25 -0
  5. package/dist/server/engine/backends/localstack-backend.d.ts.map +1 -0
  6. package/dist/server/engine/backends/localstack-backend.js +199 -0
  7. package/dist/server/engine/backends/localstack-backend.js.map +1 -0
  8. package/dist/server/engine/backends/self-backend.d.ts +32 -0
  9. package/dist/server/engine/backends/self-backend.d.ts.map +1 -0
  10. package/dist/server/engine/backends/self-backend.js +205 -0
  11. package/dist/server/engine/backends/self-backend.js.map +1 -0
  12. package/dist/server/engine/bus.d.ts +10 -0
  13. package/dist/server/engine/bus.d.ts.map +1 -0
  14. package/dist/server/engine/bus.js +24 -0
  15. package/dist/server/engine/bus.js.map +1 -0
  16. package/dist/server/engine/dispatch/dispatcher.d.ts +46 -0
  17. package/dist/server/engine/dispatch/dispatcher.d.ts.map +1 -0
  18. package/dist/server/engine/dispatch/dispatcher.js +312 -0
  19. package/dist/server/engine/dispatch/dispatcher.js.map +1 -0
  20. package/dist/server/engine/dispatch/scheduler.d.ts +47 -0
  21. package/dist/server/engine/dispatch/scheduler.d.ts.map +1 -0
  22. package/dist/server/engine/dispatch/scheduler.js +328 -0
  23. package/dist/server/engine/dispatch/scheduler.js.map +1 -0
  24. package/dist/server/engine/dispatch/sqs-poller.d.ts +25 -0
  25. package/dist/server/engine/dispatch/sqs-poller.d.ts.map +1 -0
  26. package/dist/server/engine/dispatch/sqs-poller.js +242 -0
  27. package/dist/server/engine/dispatch/sqs-poller.js.map +1 -0
  28. package/dist/server/engine/dispatch/stream-tailer.d.ts +22 -0
  29. package/dist/server/engine/dispatch/stream-tailer.d.ts.map +1 -0
  30. package/dist/server/engine/dispatch/stream-tailer.js +205 -0
  31. package/dist/server/engine/dispatch/stream-tailer.js.map +1 -0
  32. package/dist/server/engine/emulators/dynamodb/expressions/decimal.d.ts +5 -0
  33. package/dist/server/engine/emulators/dynamodb/expressions/decimal.d.ts.map +1 -0
  34. package/dist/server/engine/emulators/dynamodb/expressions/decimal.js +91 -0
  35. package/dist/server/engine/emulators/dynamodb/expressions/decimal.js.map +1 -0
  36. package/dist/server/engine/emulators/dynamodb/expressions/evaluate.d.ts +24 -0
  37. package/dist/server/engine/emulators/dynamodb/expressions/evaluate.d.ts.map +1 -0
  38. package/dist/server/engine/emulators/dynamodb/expressions/evaluate.js +183 -0
  39. package/dist/server/engine/emulators/dynamodb/expressions/evaluate.js.map +1 -0
  40. package/dist/server/engine/emulators/dynamodb/expressions/expression-types.d.ts +29 -0
  41. package/dist/server/engine/emulators/dynamodb/expressions/expression-types.d.ts.map +1 -0
  42. package/dist/server/engine/emulators/dynamodb/expressions/expression-types.js +12 -0
  43. package/dist/server/engine/emulators/dynamodb/expressions/expression-types.js.map +1 -0
  44. package/dist/server/engine/emulators/dynamodb/expressions/index.d.ts +13 -0
  45. package/dist/server/engine/emulators/dynamodb/expressions/index.d.ts.map +1 -0
  46. package/dist/server/engine/emulators/dynamodb/expressions/index.js +244 -0
  47. package/dist/server/engine/emulators/dynamodb/expressions/index.js.map +1 -0
  48. package/dist/server/engine/emulators/dynamodb/expressions/lexer.d.ts +11 -0
  49. package/dist/server/engine/emulators/dynamodb/expressions/lexer.d.ts.map +1 -0
  50. package/dist/server/engine/emulators/dynamodb/expressions/lexer.js +109 -0
  51. package/dist/server/engine/emulators/dynamodb/expressions/lexer.js.map +1 -0
  52. package/dist/server/engine/emulators/dynamodb/expressions/parser.d.ts +23 -0
  53. package/dist/server/engine/emulators/dynamodb/expressions/parser.d.ts.map +1 -0
  54. package/dist/server/engine/emulators/dynamodb/expressions/parser.js +541 -0
  55. package/dist/server/engine/emulators/dynamodb/expressions/parser.js.map +1 -0
  56. package/dist/server/engine/emulators/dynamodb/index.d.ts +46 -0
  57. package/dist/server/engine/emulators/dynamodb/index.d.ts.map +1 -0
  58. package/dist/server/engine/emulators/dynamodb/index.js +572 -0
  59. package/dist/server/engine/emulators/dynamodb/index.js.map +1 -0
  60. package/dist/server/engine/emulators/dynamodb/query.d.ts +12 -0
  61. package/dist/server/engine/emulators/dynamodb/query.d.ts.map +1 -0
  62. package/dist/server/engine/emulators/dynamodb/query.js +237 -0
  63. package/dist/server/engine/emulators/dynamodb/query.js.map +1 -0
  64. package/dist/server/engine/emulators/dynamodb/schema.d.ts +58 -0
  65. package/dist/server/engine/emulators/dynamodb/schema.d.ts.map +1 -0
  66. package/dist/server/engine/emulators/dynamodb/schema.js +284 -0
  67. package/dist/server/engine/emulators/dynamodb/schema.js.map +1 -0
  68. package/dist/server/engine/emulators/dynamodb/streams.d.ts +28 -0
  69. package/dist/server/engine/emulators/dynamodb/streams.d.ts.map +1 -0
  70. package/dist/server/engine/emulators/dynamodb/streams.js +100 -0
  71. package/dist/server/engine/emulators/dynamodb/streams.js.map +1 -0
  72. package/dist/server/engine/emulators/events/index.d.ts +53 -0
  73. package/dist/server/engine/emulators/events/index.d.ts.map +1 -0
  74. package/dist/server/engine/emulators/events/index.js +417 -0
  75. package/dist/server/engine/emulators/events/index.js.map +1 -0
  76. package/dist/server/engine/emulators/events/pattern.d.ts +3 -0
  77. package/dist/server/engine/emulators/events/pattern.d.ts.map +1 -0
  78. package/dist/server/engine/emulators/events/pattern.js +125 -0
  79. package/dist/server/engine/emulators/events/pattern.js.map +1 -0
  80. package/dist/server/engine/emulators/lambda-ctl/index.d.ts +55 -0
  81. package/dist/server/engine/emulators/lambda-ctl/index.d.ts.map +1 -0
  82. package/dist/server/engine/emulators/lambda-ctl/index.js +461 -0
  83. package/dist/server/engine/emulators/lambda-ctl/index.js.map +1 -0
  84. package/dist/server/engine/emulators/s3/index.d.ts +45 -0
  85. package/dist/server/engine/emulators/s3/index.d.ts.map +1 -0
  86. package/dist/server/engine/emulators/s3/index.js +591 -0
  87. package/dist/server/engine/emulators/s3/index.js.map +1 -0
  88. package/dist/server/engine/emulators/sns/index.d.ts +22 -0
  89. package/dist/server/engine/emulators/sns/index.d.ts.map +1 -0
  90. package/dist/server/engine/emulators/sns/index.js +135 -0
  91. package/dist/server/engine/emulators/sns/index.js.map +1 -0
  92. package/dist/server/engine/emulators/sqs/index.d.ts +66 -0
  93. package/dist/server/engine/emulators/sqs/index.d.ts.map +1 -0
  94. package/dist/server/engine/emulators/sqs/index.js +552 -0
  95. package/dist/server/engine/emulators/sqs/index.js.map +1 -0
  96. package/dist/server/engine/emulators/sqs/md5.d.ts +8 -0
  97. package/dist/server/engine/emulators/sqs/md5.d.ts.map +1 -0
  98. package/dist/server/engine/emulators/sqs/md5.js +36 -0
  99. package/dist/server/engine/emulators/sqs/md5.js.map +1 -0
  100. package/dist/server/engine/emulators/sqs/queue.d.ts +105 -0
  101. package/dist/server/engine/emulators/sqs/queue.d.ts.map +1 -0
  102. package/dist/server/engine/emulators/sqs/queue.js +371 -0
  103. package/dist/server/engine/emulators/sqs/queue.js.map +1 -0
  104. package/dist/server/engine/emulators/sts.d.ts +8 -0
  105. package/dist/server/engine/emulators/sts.d.ts.map +1 -0
  106. package/dist/server/engine/emulators/sts.js +23 -0
  107. package/dist/server/engine/emulators/sts.js.map +1 -0
  108. package/dist/server/engine/engine-backend.d.ts +17 -0
  109. package/dist/server/engine/engine-backend.d.ts.map +1 -0
  110. package/dist/server/engine/engine-backend.js +7 -0
  111. package/dist/server/engine/engine-backend.js.map +1 -0
  112. package/dist/server/engine/engine-manager.d.ts +22 -0
  113. package/dist/server/engine/engine-manager.d.ts.map +1 -0
  114. package/dist/server/engine/engine-manager.js +74 -0
  115. package/dist/server/engine/engine-manager.js.map +1 -0
  116. package/dist/server/engine/http/aws-chunked.d.ts +3 -0
  117. package/dist/server/engine/http/aws-chunked.d.ts.map +1 -0
  118. package/dist/server/engine/http/aws-chunked.js +50 -0
  119. package/dist/server/engine/http/aws-chunked.js.map +1 -0
  120. package/dist/server/engine/http/errors.d.ts +20 -0
  121. package/dist/server/engine/http/errors.d.ts.map +1 -0
  122. package/dist/server/engine/http/errors.js +43 -0
  123. package/dist/server/engine/http/errors.js.map +1 -0
  124. package/dist/server/engine/http/protocols/aws-json.d.ts +8 -0
  125. package/dist/server/engine/http/protocols/aws-json.d.ts.map +1 -0
  126. package/dist/server/engine/http/protocols/aws-json.js +42 -0
  127. package/dist/server/engine/http/protocols/aws-json.js.map +1 -0
  128. package/dist/server/engine/http/protocols/query-xml.d.ts +7 -0
  129. package/dist/server/engine/http/protocols/query-xml.d.ts.map +1 -0
  130. package/dist/server/engine/http/protocols/query-xml.js +35 -0
  131. package/dist/server/engine/http/protocols/query-xml.js.map +1 -0
  132. package/dist/server/engine/http/router.d.ts +8 -0
  133. package/dist/server/engine/http/router.d.ts.map +1 -0
  134. package/dist/server/engine/http/router.js +391 -0
  135. package/dist/server/engine/http/router.js.map +1 -0
  136. package/dist/server/engine/http/sigv4.d.ts +9 -0
  137. package/dist/server/engine/http/sigv4.d.ts.map +1 -0
  138. package/dist/server/engine/http/sigv4.js +33 -0
  139. package/dist/server/engine/http/sigv4.js.map +1 -0
  140. package/dist/server/engine/http/xml.d.ts +16 -0
  141. package/dist/server/engine/http/xml.d.ts.map +1 -0
  142. package/dist/server/engine/http/xml.js +92 -0
  143. package/dist/server/engine/http/xml.js.map +1 -0
  144. package/dist/server/engine/store/atomic.d.ts +4 -0
  145. package/dist/server/engine/store/atomic.d.ts.map +1 -0
  146. package/dist/server/engine/store/atomic.js +35 -0
  147. package/dist/server/engine/store/atomic.js.map +1 -0
  148. package/dist/server/engine/store/engine-store.d.ts +9 -0
  149. package/dist/server/engine/store/engine-store.d.ts.map +1 -0
  150. package/dist/server/engine/store/engine-store.js +218 -0
  151. package/dist/server/engine/store/engine-store.js.map +1 -0
  152. package/dist/server/engine/store/store-types.d.ts +37 -0
  153. package/dist/server/engine/store/store-types.d.ts.map +1 -0
  154. package/dist/server/engine/store/store-types.js +17 -0
  155. package/dist/server/engine/store/store-types.js.map +1 -0
  156. package/dist/server/engine/store/wal.d.ts +49 -0
  157. package/dist/server/engine/store/wal.d.ts.map +1 -0
  158. package/dist/server/engine/store/wal.js +328 -0
  159. package/dist/server/engine/store/wal.js.map +1 -0
  160. package/dist/server/engine/types.d.ts +137 -0
  161. package/dist/server/engine/types.d.ts.map +1 -0
  162. package/dist/server/engine/types.js +8 -0
  163. package/dist/server/engine/types.js.map +1 -0
  164. package/dist/server/index.js +12 -9
  165. package/dist/server/index.js.map +1 -1
  166. package/dist/server/routes/services.d.ts.map +1 -1
  167. package/dist/server/routes/services.js +2 -0
  168. package/dist/server/routes/services.js.map +1 -1
  169. package/dist/server/services/cloudformation-parser.d.ts +26 -2
  170. package/dist/server/services/cloudformation-parser.d.ts.map +1 -1
  171. package/dist/server/services/cloudformation-parser.js +60 -3
  172. package/dist/server/services/cloudformation-parser.js.map +1 -1
  173. package/dist/server/services/config-manager.d.ts +27 -0
  174. package/dist/server/services/config-manager.d.ts.map +1 -1
  175. package/dist/server/services/config-manager.js +67 -7
  176. package/dist/server/services/config-manager.js.map +1 -1
  177. package/dist/server/services/localstack-manager.d.ts +0 -7
  178. package/dist/server/services/localstack-manager.d.ts.map +1 -1
  179. package/dist/server/services/localstack-manager.js +11 -173
  180. package/dist/server/services/localstack-manager.js.map +1 -1
  181. package/dist/server/services/resource-provisioner.d.ts +6 -0
  182. package/dist/server/services/resource-provisioner.d.ts.map +1 -1
  183. package/dist/server/services/resource-provisioner.js +171 -7
  184. package/dist/server/services/resource-provisioner.js.map +1 -1
  185. package/dist/server/services/service-registrar.js +2 -2
  186. package/dist/server/services/service-registrar.js.map +1 -1
  187. package/dist/ui/assets/ApisPage-a9i2qD0Z.js +1 -0
  188. package/dist/ui/assets/BucketDetailPage-Cz27N0KV.js +1 -0
  189. package/dist/ui/assets/BucketsPage-CZ7wGmUN.js +1 -0
  190. package/dist/ui/assets/{DynamoPage-B1__Rjr2.js → DynamoPage-BZMs1iW8.js} +1 -1
  191. package/dist/ui/assets/DynamoTablePage-BQsGkhtO.js +3 -0
  192. package/dist/ui/assets/LambdaDetailPage-DJb7xqRB.js +4 -0
  193. package/dist/ui/assets/LambdasPage-Ctg1l-Lg.js +1 -0
  194. package/dist/ui/assets/OverviewPage-DiijblCA.js +1 -0
  195. package/dist/ui/assets/QueueDetailPage-DRpSqost.js +1 -0
  196. package/dist/ui/assets/QueuesPage-CY0bDGwV.js +1 -0
  197. package/dist/ui/assets/ServiceDetailPage-CYTEdtts.js +2 -0
  198. package/dist/ui/assets/ServicesPage-OlV_rr-q.js +2 -0
  199. package/dist/ui/assets/index-C1KdKPDS.css +1 -0
  200. package/dist/ui/assets/index-DA_C1HOg.js +36 -0
  201. package/dist/ui/index.html +2 -2
  202. package/package.json +2 -1
  203. package/dist/ui/assets/ApisPage-DdgKjEdS.js +0 -1
  204. package/dist/ui/assets/BucketDetailPage-DZQGxm0y.js +0 -1
  205. package/dist/ui/assets/BucketsPage-xYXzxCvd.js +0 -1
  206. package/dist/ui/assets/DynamoTablePage-BCoxPdXW.js +0 -3
  207. package/dist/ui/assets/LambdaDetailPage-B85CA8tb.js +0 -4
  208. package/dist/ui/assets/LambdasPage-_TtxQMT_.js +0 -1
  209. package/dist/ui/assets/OverviewPage-CqTKTY64.js +0 -1
  210. package/dist/ui/assets/QueueDetailPage-BOr_sImA.js +0 -1
  211. package/dist/ui/assets/QueuesPage-DpByfcM5.js +0 -1
  212. package/dist/ui/assets/ServiceDetailPage-DsWgV-ad.js +0 -2
  213. package/dist/ui/assets/ServicesPage-CGlpsj98.js +0 -2
  214. package/dist/ui/assets/index-BWlB542w.js +0 -36
  215. package/dist/ui/assets/index-EYnsoJOq.css +0 -1
@@ -0,0 +1,105 @@
1
+ import type { SqsMessageAttributeValue } from './md5.js';
2
+ export declare const DEFAULT_DEDUP_WINDOW_MS: number;
3
+ export interface StoredMessage {
4
+ messageId: string;
5
+ body: string;
6
+ md5OfBody: string;
7
+ messageAttributes?: Record<string, SqsMessageAttributeValue>;
8
+ md5OfMessageAttributes?: string;
9
+ sentTimestamp: number;
10
+ firstReceiveTimestamp?: number;
11
+ order: number;
12
+ receiveCount: number;
13
+ visibleAt: number;
14
+ receiptHandle?: string;
15
+ messageGroupId?: string;
16
+ messageDeduplicationId?: string;
17
+ sequenceNumber?: string;
18
+ }
19
+ export interface SendMessageOptions {
20
+ body: string;
21
+ delayMs: number;
22
+ messageAttributes?: Record<string, SqsMessageAttributeValue>;
23
+ messageGroupId?: string;
24
+ messageDeduplicationId?: string;
25
+ contentBasedDeduplication?: boolean;
26
+ }
27
+ export interface SendMessageOutcome {
28
+ messageId: string;
29
+ md5OfBody: string;
30
+ md5OfMessageAttributes?: string;
31
+ sequenceNumber?: string;
32
+ deduplicated: boolean;
33
+ }
34
+ export interface ReceiveOptions {
35
+ max: number;
36
+ visibilityMs: number;
37
+ retentionMs: number;
38
+ }
39
+ export interface QueueCounters {
40
+ available: number;
41
+ inFlight: number;
42
+ delayed: number;
43
+ }
44
+ interface DedupEntry {
45
+ messageId: string;
46
+ sequenceNumber?: string;
47
+ expiresAt: number;
48
+ }
49
+ export interface SerializedQueueMessages {
50
+ messages: StoredMessage[];
51
+ orderCounter: number;
52
+ sequenceCounter: number;
53
+ dedup: Array<{
54
+ id: string;
55
+ } & DedupEntry>;
56
+ }
57
+ export type DeleteMessageResult = 'deleted' | 'stale' | 'invalid';
58
+ export type ChangeVisibilityResult = 'changed' | 'not-inflight' | 'invalid';
59
+ export interface SqsQueueOptions {
60
+ fifo?: boolean;
61
+ onVisible?: () => void;
62
+ dedupWindowMs?: number;
63
+ }
64
+ export declare class SqsQueue {
65
+ readonly name: string;
66
+ readonly fifo: boolean;
67
+ private visible;
68
+ private delayed;
69
+ private inflight;
70
+ private groupLocks;
71
+ private dedup;
72
+ private waiters;
73
+ private timer;
74
+ private timerAt;
75
+ private orderCounter;
76
+ private sequenceCounter;
77
+ private readonly onVisible;
78
+ private readonly dedupWindowMs;
79
+ constructor(name: string, options?: SqsQueueOptions);
80
+ send(options: SendMessageOptions): SendMessageOutcome;
81
+ receive(options: ReceiveOptions): StoredMessage[];
82
+ deleteMessage(receiptHandle: string): DeleteMessageResult;
83
+ changeVisibility(receiptHandle: string, visibilityMs: number): ChangeVisibilityResult;
84
+ counters(retentionMs: number): QueueCounters;
85
+ hasDeliverable(retentionMs: number): boolean;
86
+ waitForVisible(timeoutMs: number): Promise<void>;
87
+ purge(): void;
88
+ dispose(): void;
89
+ serialize(): SerializedQueueMessages;
90
+ restore(data: SerializedQueueMessages): void;
91
+ private newReceiptHandle;
92
+ private isOwnHandle;
93
+ private insertVisible;
94
+ private requeue;
95
+ private unlockGroup;
96
+ private pruneDedup;
97
+ private pruneRetention;
98
+ private notifyVisible;
99
+ private addDeadline;
100
+ private armTimer;
101
+ private clearTimer;
102
+ private fireTimer;
103
+ }
104
+ export {};
105
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../../src/server/engine/emulators/sqs/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,371 @@
1
+ // In-memory SQS queue state machine: visibility timeouts, delivery delays,
2
+ // FIFO group serialization and the 5-minute dedup window. Messages are
3
+ // transient dev data — persistence is a graceful-shutdown snapshot via
4
+ // serialize()/restore() (see SqsEmulator.serializeMessages).
5
+ //
6
+ // Timer discipline: ONE unref'd timer per queue, armed to the nearest future
7
+ // deadline (delay expiry or visibility expiry). Adding an earlier deadline
8
+ // re-arms; removals leave the timer to fire spuriously and re-scan — the
9
+ // fire path is the only O(n) walk.
10
+ import crypto from 'crypto';
11
+ import { md5OfMessageAttributes, md5OfMessageBody } from './md5.js';
12
+ export const DEFAULT_DEDUP_WINDOW_MS = 5 * 60 * 1000;
13
+ // FIFO SequenceNumber base: AWS issues 20-digit monotonic values; we mimic
14
+ // the magnitude so string comparisons in app code behave sensibly.
15
+ const SEQUENCE_BASE = 18849496460467900000n;
16
+ export class SqsQueue {
17
+ name;
18
+ fifo;
19
+ visible = [];
20
+ delayed = new Map();
21
+ inflight = new Map();
22
+ // FIFO: messageGroupId -> number of in-flight messages. A group with any
23
+ // in-flight message yields no further messages ("one in-flight batch per
24
+ // group") until they are deleted or become visible again.
25
+ groupLocks = new Map();
26
+ // Insertion-ordered (constant window => expiry-ordered), pruned from the
27
+ // front on each send.
28
+ dedup = new Map();
29
+ waiters = new Set();
30
+ timer = null;
31
+ timerAt = Infinity;
32
+ orderCounter = 0;
33
+ sequenceCounter = 0;
34
+ onVisible;
35
+ dedupWindowMs;
36
+ constructor(name, options = {}) {
37
+ this.name = name;
38
+ this.fifo = options.fifo ?? name.endsWith('.fifo');
39
+ this.onVisible = options.onVisible ?? (() => undefined);
40
+ this.dedupWindowMs = options.dedupWindowMs ?? DEFAULT_DEDUP_WINDOW_MS;
41
+ }
42
+ send(options) {
43
+ const now = Date.now();
44
+ const md5Body = md5OfMessageBody(options.body);
45
+ const md5Attributes = options.messageAttributes && Object.keys(options.messageAttributes).length > 0
46
+ ? md5OfMessageAttributes(options.messageAttributes)
47
+ : undefined;
48
+ let deduplicationId = options.messageDeduplicationId;
49
+ if (this.fifo && !deduplicationId && options.contentBasedDeduplication) {
50
+ deduplicationId = crypto.createHash('sha256').update(options.body, 'utf8').digest('hex');
51
+ }
52
+ if (this.fifo && deduplicationId) {
53
+ this.pruneDedup(now);
54
+ const hit = this.dedup.get(deduplicationId);
55
+ if (hit) {
56
+ return {
57
+ messageId: hit.messageId,
58
+ md5OfBody: md5Body,
59
+ md5OfMessageAttributes: md5Attributes,
60
+ sequenceNumber: hit.sequenceNumber,
61
+ deduplicated: true,
62
+ };
63
+ }
64
+ }
65
+ const message = {
66
+ messageId: crypto.randomUUID(),
67
+ body: options.body,
68
+ md5OfBody: md5Body,
69
+ messageAttributes: options.messageAttributes,
70
+ md5OfMessageAttributes: md5Attributes,
71
+ sentTimestamp: now,
72
+ order: ++this.orderCounter,
73
+ receiveCount: 0,
74
+ visibleAt: now + Math.max(0, options.delayMs),
75
+ messageGroupId: options.messageGroupId,
76
+ messageDeduplicationId: deduplicationId,
77
+ sequenceNumber: this.fifo
78
+ ? (SEQUENCE_BASE + BigInt(++this.sequenceCounter)).toString()
79
+ : undefined,
80
+ };
81
+ if (this.fifo && deduplicationId) {
82
+ this.dedup.set(deduplicationId, {
83
+ messageId: message.messageId,
84
+ sequenceNumber: message.sequenceNumber,
85
+ expiresAt: now + this.dedupWindowMs,
86
+ });
87
+ }
88
+ if (options.delayMs > 0) {
89
+ this.delayed.set(message.messageId, message);
90
+ this.addDeadline(message.visibleAt);
91
+ }
92
+ else {
93
+ this.insertVisible(message);
94
+ this.notifyVisible();
95
+ }
96
+ return {
97
+ messageId: message.messageId,
98
+ md5OfBody: md5Body,
99
+ md5OfMessageAttributes: md5Attributes,
100
+ sequenceNumber: message.sequenceNumber,
101
+ deduplicated: false,
102
+ };
103
+ }
104
+ // Returns the delivered messages with a fresh receiptHandle assigned and
105
+ // receive counters updated; the caller shapes the wire response.
106
+ receive(options) {
107
+ const now = Date.now();
108
+ this.pruneRetention(now, options.retentionMs);
109
+ const blockedGroups = new Set();
110
+ if (this.fifo) {
111
+ for (const [group, locks] of this.groupLocks) {
112
+ if (locks > 0)
113
+ blockedGroups.add(group);
114
+ }
115
+ }
116
+ const taken = [];
117
+ for (const message of this.visible) {
118
+ // Locked FIFO groups are skipped entirely — and skipping one message of
119
+ // a group blocks the rest of that group to preserve in-group order.
120
+ if (this.fifo && message.messageGroupId && blockedGroups.has(message.messageGroupId)) {
121
+ continue;
122
+ }
123
+ taken.push(message);
124
+ if (taken.length >= options.max)
125
+ break;
126
+ }
127
+ if (taken.length === 0)
128
+ return [];
129
+ const takenIds = new Set(taken.map(message => message.messageId));
130
+ this.visible = this.visible.filter(message => !takenIds.has(message.messageId));
131
+ for (const message of taken) {
132
+ message.receiveCount += 1;
133
+ message.firstReceiveTimestamp ??= now;
134
+ message.visibleAt = now + options.visibilityMs;
135
+ message.receiptHandle = this.newReceiptHandle(message.messageId);
136
+ this.inflight.set(message.receiptHandle, message);
137
+ if (this.fifo && message.messageGroupId) {
138
+ this.groupLocks.set(message.messageGroupId, (this.groupLocks.get(message.messageGroupId) ?? 0) + 1);
139
+ }
140
+ this.addDeadline(message.visibleAt);
141
+ }
142
+ return taken;
143
+ }
144
+ // Deleting with a well-formed handle that is no longer in flight is a
145
+ // silent success ('stale'), matching AWS's idempotent DeleteMessage.
146
+ deleteMessage(receiptHandle) {
147
+ const message = this.inflight.get(receiptHandle);
148
+ if (!message) {
149
+ return this.isOwnHandle(receiptHandle) ? 'stale' : 'invalid';
150
+ }
151
+ this.inflight.delete(receiptHandle);
152
+ message.receiptHandle = undefined;
153
+ this.unlockGroup(message);
154
+ return 'deleted';
155
+ }
156
+ changeVisibility(receiptHandle, visibilityMs) {
157
+ const message = this.inflight.get(receiptHandle);
158
+ if (!message) {
159
+ return this.isOwnHandle(receiptHandle) ? 'not-inflight' : 'invalid';
160
+ }
161
+ if (visibilityMs <= 0) {
162
+ this.inflight.delete(receiptHandle);
163
+ this.requeue(message);
164
+ this.notifyVisible();
165
+ return 'changed';
166
+ }
167
+ message.visibleAt = Date.now() + visibilityMs;
168
+ this.addDeadline(message.visibleAt);
169
+ return 'changed';
170
+ }
171
+ counters(retentionMs) {
172
+ this.pruneRetention(Date.now(), retentionMs);
173
+ return {
174
+ available: this.visible.length,
175
+ inFlight: this.inflight.size,
176
+ delayed: this.delayed.size,
177
+ };
178
+ }
179
+ // True when a receive() right now would deliver at least one message (i.e.
180
+ // some visible message belongs to no locked FIFO group).
181
+ hasDeliverable(retentionMs) {
182
+ this.pruneRetention(Date.now(), retentionMs);
183
+ if (!this.fifo)
184
+ return this.visible.length > 0;
185
+ return this.visible.some(message => !message.messageGroupId || (this.groupLocks.get(message.messageGroupId) ?? 0) === 0);
186
+ }
187
+ // Park until a message becomes visible (or deliverable again) or the
188
+ // timeout elapses — the long-poll primitive. Resolved by notifyVisible(),
189
+ // never by polling.
190
+ waitForVisible(timeoutMs) {
191
+ return new Promise(resolve => {
192
+ const waiter = () => {
193
+ clearTimeout(timer);
194
+ this.waiters.delete(waiter);
195
+ resolve();
196
+ };
197
+ const timer = setTimeout(waiter, Math.max(0, timeoutMs));
198
+ this.waiters.add(waiter);
199
+ });
200
+ }
201
+ // PurgeQueue: drops every message (visible, delayed and in flight); the
202
+ // FIFO dedup window and sequence counter survive, as on AWS.
203
+ purge() {
204
+ this.visible = [];
205
+ this.delayed.clear();
206
+ this.inflight.clear();
207
+ this.groupLocks.clear();
208
+ this.clearTimer();
209
+ }
210
+ // Queue deletion: stop the timer and wake parked long-polls so their loops
211
+ // observe the queue is gone.
212
+ dispose() {
213
+ this.purge();
214
+ for (const waiter of [...this.waiters])
215
+ waiter();
216
+ }
217
+ serialize() {
218
+ const all = [...this.visible, ...this.delayed.values(), ...this.inflight.values()];
219
+ return {
220
+ messages: all.map(message => ({ ...message, receiptHandle: undefined })),
221
+ orderCounter: this.orderCounter,
222
+ sequenceCounter: this.sequenceCounter,
223
+ dedup: [...this.dedup.entries()].map(([id, entry]) => ({ id, ...entry })),
224
+ };
225
+ }
226
+ restore(data) {
227
+ const now = Date.now();
228
+ this.orderCounter = data.orderCounter;
229
+ this.sequenceCounter = data.sequenceCounter;
230
+ for (const entry of data.dedup) {
231
+ if (entry.expiresAt > now) {
232
+ this.dedup.set(entry.id, {
233
+ messageId: entry.messageId,
234
+ sequenceNumber: entry.sequenceNumber,
235
+ expiresAt: entry.expiresAt,
236
+ });
237
+ }
238
+ }
239
+ for (const message of data.messages) {
240
+ message.receiptHandle = undefined;
241
+ if (message.visibleAt > now && message.receiveCount === 0) {
242
+ this.delayed.set(message.messageId, message);
243
+ this.addDeadline(message.visibleAt);
244
+ }
245
+ else {
246
+ // In-flight at shutdown: the receipt handle died with the process, so
247
+ // the message becomes visible again immediately (SQS redelivery).
248
+ message.visibleAt = Math.min(message.visibleAt, now);
249
+ this.insertVisible(message);
250
+ }
251
+ }
252
+ }
253
+ // ------------------------------------------------------------------
254
+ // Internals
255
+ // ------------------------------------------------------------------
256
+ newReceiptHandle(messageId) {
257
+ return Buffer.from(`${this.name}|${messageId}|${crypto.randomUUID()}`, 'utf8').toString('base64url');
258
+ }
259
+ // A handle this queue could have issued (whether or not it is still live).
260
+ isOwnHandle(receiptHandle) {
261
+ if (!receiptHandle)
262
+ return false;
263
+ const decoded = Buffer.from(receiptHandle, 'base64url').toString('utf8');
264
+ const parts = decoded.split('|');
265
+ return parts.length === 3 && parts[0] === this.name;
266
+ }
267
+ insertVisible(message) {
268
+ // Binary insert by arrival order: requeues and expired delays land back
269
+ // in their original position among newer arrivals.
270
+ let low = 0;
271
+ let high = this.visible.length;
272
+ while (low < high) {
273
+ const mid = (low + high) >> 1;
274
+ if (this.visible[mid].order < message.order)
275
+ low = mid + 1;
276
+ else
277
+ high = mid;
278
+ }
279
+ this.visible.splice(low, 0, message);
280
+ }
281
+ requeue(message) {
282
+ message.receiptHandle = undefined;
283
+ message.visibleAt = Date.now();
284
+ this.unlockGroup(message);
285
+ this.insertVisible(message);
286
+ }
287
+ unlockGroup(message) {
288
+ if (!this.fifo || !message.messageGroupId)
289
+ return;
290
+ const locks = (this.groupLocks.get(message.messageGroupId) ?? 1) - 1;
291
+ if (locks <= 0) {
292
+ this.groupLocks.delete(message.messageGroupId);
293
+ // The group is deliverable again; wake pollers waiting on it.
294
+ if (this.visible.some(m => m.messageGroupId === message.messageGroupId)) {
295
+ this.notifyVisible();
296
+ }
297
+ }
298
+ else {
299
+ this.groupLocks.set(message.messageGroupId, locks);
300
+ }
301
+ }
302
+ pruneDedup(now) {
303
+ for (const [id, entry] of this.dedup) {
304
+ if (entry.expiresAt > now)
305
+ break;
306
+ this.dedup.delete(id);
307
+ }
308
+ }
309
+ // Retention is enforced lazily at read time. `visible` is sorted by arrival
310
+ // order, so expired messages are always a prefix.
311
+ pruneRetention(now, retentionMs) {
312
+ while (this.visible.length > 0 && this.visible[0].sentTimestamp + retentionMs <= now) {
313
+ this.visible.shift();
314
+ }
315
+ }
316
+ notifyVisible() {
317
+ for (const waiter of [...this.waiters])
318
+ waiter();
319
+ this.onVisible();
320
+ }
321
+ addDeadline(at) {
322
+ if (at >= this.timerAt)
323
+ return;
324
+ this.armTimer(at);
325
+ }
326
+ armTimer(at) {
327
+ this.clearTimer();
328
+ this.timerAt = at;
329
+ this.timer = setTimeout(() => this.fireTimer(), Math.max(0, at - Date.now()));
330
+ this.timer.unref();
331
+ }
332
+ clearTimer() {
333
+ if (this.timer)
334
+ clearTimeout(this.timer);
335
+ this.timer = null;
336
+ this.timerAt = Infinity;
337
+ }
338
+ fireTimer() {
339
+ this.timer = null;
340
+ this.timerAt = Infinity;
341
+ const now = Date.now();
342
+ let becameVisible = false;
343
+ for (const [messageId, message] of this.delayed) {
344
+ if (message.visibleAt <= now) {
345
+ this.delayed.delete(messageId);
346
+ this.insertVisible(message);
347
+ becameVisible = true;
348
+ }
349
+ }
350
+ for (const [handle, message] of this.inflight) {
351
+ if (message.visibleAt <= now) {
352
+ this.inflight.delete(handle);
353
+ message.receiptHandle = undefined;
354
+ this.unlockGroup(message);
355
+ this.insertVisible(message);
356
+ becameVisible = true;
357
+ }
358
+ }
359
+ // Re-arm to the next pending deadline, if any.
360
+ let next = Infinity;
361
+ for (const message of this.delayed.values())
362
+ next = Math.min(next, message.visibleAt);
363
+ for (const message of this.inflight.values())
364
+ next = Math.min(next, message.visibleAt);
365
+ if (next !== Infinity)
366
+ this.armTimer(next);
367
+ if (becameVisible)
368
+ this.notifyVisible();
369
+ }
370
+ }
371
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../../../src/server/engine/emulators/sqs/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { AwsRequest, EngineContext, EngineServiceName, QueryEmulator } from '../types.js';
2
+ export declare class StsEmulator implements QueryEmulator {
3
+ readonly service: EngineServiceName;
4
+ private ctx;
5
+ constructor(ctx: EngineContext);
6
+ handle(action: string, _params: Record<string, string>, _req: AwsRequest): Promise<string>;
7
+ }
8
+ //# sourceMappingURL=sts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sts.d.ts","sourceRoot":"","sources":["../../../../src/server/engine/emulators/sts.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM/F,qBAAa,WAAY,YAAW,aAAa;IAC/C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAS;IAE5C,OAAO,CAAC,GAAG,CAAgB;gBAEf,GAAG,EAAE,aAAa;IAIxB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;CAajG"}
@@ -0,0 +1,23 @@
1
+ // STS stub (Query protocol) — GetCallerIdentity only, per PRD §RF2.5: many
2
+ // application bootstraps call it before anything else and fail confusingly
3
+ // without it. Everything else is explicitly not implemented.
4
+ import { randomUUID } from 'crypto';
5
+ import { notImplemented } from '../http/errors.js';
6
+ import { tag, xmlDocument } from '../http/xml.js';
7
+ const STS_XMLNS = 'https://sts.amazonaws.com/doc/2011-06-15/';
8
+ export class StsEmulator {
9
+ service = 'sts';
10
+ ctx;
11
+ constructor(ctx) {
12
+ this.ctx = ctx;
13
+ }
14
+ async handle(action, _params, _req) {
15
+ if (action !== 'GetCallerIdentity')
16
+ throw notImplemented('sts', action);
17
+ const account = this.ctx.config.account;
18
+ const result = tag('GetCallerIdentityResult', tag('Arn', `arn:aws:iam::${account}:root`) + tag('UserId', account) + tag('Account', account), { escape: false });
19
+ const metadata = tag('ResponseMetadata', tag('RequestId', randomUUID()), { escape: false });
20
+ return xmlDocument(tag('GetCallerIdentityResponse', result + metadata, { attrs: { xmlns: STS_XMLNS }, escape: false }));
21
+ }
22
+ }
23
+ //# sourceMappingURL=sts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sts.js","sourceRoot":"","sources":["../../../../src/server/engine/emulators/sts.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAC3E,6DAA6D;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,SAAS,GAAG,2CAA2C,CAAC;AAE9D,MAAM,OAAO,WAAW;IACb,OAAO,GAAsB,KAAK,CAAC;IAEpC,GAAG,CAAgB;IAE3B,YAAY,GAAkB;QAC5B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,OAA+B,EAAE,IAAgB;QAC5E,IAAI,MAAM,KAAK,mBAAmB;YAAE,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;QACxC,MAAM,MAAM,GAAG,GAAG,CAChB,yBAAyB,EACzB,GAAG,CAAC,KAAK,EAAE,gBAAgB,OAAO,OAAO,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,EAC7F,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;QACF,MAAM,QAAQ,GAAG,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5F,OAAO,WAAW,CAChB,GAAG,CAAC,2BAA2B,EAAE,MAAM,GAAG,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CACpG,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ export interface EngineBackend {
2
+ readonly kind: 'localstack' | 'self';
3
+ start(): Promise<void>;
4
+ stop(): Promise<void>;
5
+ isRunning(): boolean;
6
+ getEndpoint(): string;
7
+ getConfig(): {
8
+ endpoint: string;
9
+ region: string;
10
+ credentials: {
11
+ accessKeyId: string;
12
+ secretAccessKey: string;
13
+ };
14
+ };
15
+ healthDetail(): Record<string, unknown>;
16
+ }
17
+ //# sourceMappingURL=engine-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-backend.d.ts","sourceRoot":"","sources":["../../../src/server/engine/engine-backend.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAAC;IACrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,SAAS,IAAI,OAAO,CAAC;IACrB,WAAW,IAAI,MAAM,CAAC;IACtB,SAAS,IAAI;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/D,CAAC;IACF,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC"}
@@ -0,0 +1,7 @@
1
+ // Lifecycle seam between the orchestrator and whichever AWS provider is
2
+ // active. Provisioning is NOT part of this interface on purpose: both engines
3
+ // are driven through the AWS wire API by the existing SDK-based code
4
+ // (provisioner, explorers, seeds), so the only thing that varies is lifecycle
5
+ // and endpoint. See docs/PRD_SELF_ENGINE.md §5.1.
6
+ export {};
7
+ //# sourceMappingURL=engine-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-backend.js","sourceRoot":"","sources":["../../../src/server/engine/engine-backend.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAC9E,kDAAkD"}
@@ -0,0 +1,22 @@
1
+ export declare class EngineManager {
2
+ private static instance;
3
+ private backend;
4
+ private readonly configManager;
5
+ static getInstance(): EngineManager;
6
+ getKind(): 'localstack' | 'self';
7
+ start(): Promise<void>;
8
+ stop(): Promise<void>;
9
+ isRunning(): boolean;
10
+ getEndpoint(): string;
11
+ getConfig(): {
12
+ endpoint: string;
13
+ region: string;
14
+ credentials: {
15
+ accessKeyId: string;
16
+ secretAccessKey: string;
17
+ };
18
+ };
19
+ healthDetail(): Record<string, unknown>;
20
+ private resolveBackend;
21
+ }
22
+ //# sourceMappingURL=engine-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-manager.d.ts","sourceRoot":"","sources":["../../../src/server/engine/engine-manager.ts"],"names":[],"mappings":"AAUA,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+B;IAE7D,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC,OAAO,IAAI,YAAY,GAAG,MAAM;IAI1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,MAAM;IAMrB,SAAS,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE;IAchH,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;YAWzB,cAAc;CAW7B"}