@memberjunction/work-queue-core 0.0.1-seed.1 → 6.2.0-edge.4

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 (131) hide show
  1. package/LICENSE +183 -0
  2. package/README.md +129 -3
  3. package/dist/api/WorkQueueApiPublisher.d.ts +35 -0
  4. package/dist/api/WorkQueueApiPublisher.d.ts.map +1 -0
  5. package/dist/api/WorkQueueApiPublisher.js +136 -0
  6. package/dist/api/WorkQueueApiPublisher.js.map +1 -0
  7. package/dist/api/restContract.d.ts +50 -0
  8. package/dist/api/restContract.d.ts.map +1 -0
  9. package/dist/api/restContract.js +247 -0
  10. package/dist/api/restContract.js.map +1 -0
  11. package/dist/backoff.d.ts +15 -0
  12. package/dist/backoff.d.ts.map +1 -0
  13. package/dist/backoff.js +29 -0
  14. package/dist/backoff.js.map +1 -0
  15. package/dist/compatibility.d.ts +10 -0
  16. package/dist/compatibility.d.ts.map +1 -0
  17. package/dist/compatibility.js +41 -0
  18. package/dist/compatibility.js.map +1 -0
  19. package/dist/envelope.d.ts +33 -0
  20. package/dist/envelope.d.ts.map +1 -0
  21. package/dist/envelope.js +2 -0
  22. package/dist/envelope.js.map +1 -0
  23. package/dist/errors.d.ts +14 -0
  24. package/dist/errors.d.ts.map +1 -0
  25. package/dist/errors.js +23 -0
  26. package/dist/errors.js.map +1 -0
  27. package/dist/filter.d.ts +12 -0
  28. package/dist/filter.d.ts.map +1 -0
  29. package/dist/filter.js +187 -0
  30. package/dist/filter.js.map +1 -0
  31. package/dist/filterTypes.d.ts +25 -0
  32. package/dist/filterTypes.d.ts.map +1 -0
  33. package/dist/filterTypes.js +2 -0
  34. package/dist/filterTypes.js.map +1 -0
  35. package/dist/handler.d.ts +56 -0
  36. package/dist/handler.d.ts.map +1 -0
  37. package/dist/handler.js +25 -0
  38. package/dist/handler.js.map +1 -0
  39. package/dist/index.d.ts +24 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +27 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/manifest.d.ts +46 -0
  44. package/dist/manifest.d.ts.map +1 -0
  45. package/dist/manifest.js +2 -0
  46. package/dist/manifest.js.map +1 -0
  47. package/dist/memory/InMemoryConsumer.d.ts +18 -0
  48. package/dist/memory/InMemoryConsumer.d.ts.map +1 -0
  49. package/dist/memory/InMemoryConsumer.js +36 -0
  50. package/dist/memory/InMemoryConsumer.js.map +1 -0
  51. package/dist/memory/InMemoryOperator.d.ts +13 -0
  52. package/dist/memory/InMemoryOperator.d.ts.map +1 -0
  53. package/dist/memory/InMemoryOperator.js +25 -0
  54. package/dist/memory/InMemoryOperator.js.map +1 -0
  55. package/dist/memory/InMemoryStore.d.ts +82 -0
  56. package/dist/memory/InMemoryStore.d.ts.map +1 -0
  57. package/dist/memory/InMemoryStore.js +436 -0
  58. package/dist/memory/InMemoryStore.js.map +1 -0
  59. package/dist/memory/InMemoryTransport.d.ts +29 -0
  60. package/dist/memory/InMemoryTransport.d.ts.map +1 -0
  61. package/dist/memory/InMemoryTransport.js +48 -0
  62. package/dist/memory/InMemoryTransport.js.map +1 -0
  63. package/dist/operator.d.ts +60 -0
  64. package/dist/operator.d.ts.map +1 -0
  65. package/dist/operator.js +2 -0
  66. package/dist/operator.js.map +1 -0
  67. package/dist/policy.d.ts +24 -0
  68. package/dist/policy.d.ts.map +1 -0
  69. package/dist/policy.js +10 -0
  70. package/dist/policy.js.map +1 -0
  71. package/dist/publishing.d.ts +58 -0
  72. package/dist/publishing.d.ts.map +1 -0
  73. package/dist/publishing.js +40 -0
  74. package/dist/publishing.js.map +1 -0
  75. package/dist/runtime/ConsumerRuntime.d.ts +46 -0
  76. package/dist/runtime/ConsumerRuntime.d.ts.map +1 -0
  77. package/dist/runtime/ConsumerRuntime.js +252 -0
  78. package/dist/runtime/ConsumerRuntime.js.map +1 -0
  79. package/dist/runtime/DeliveryExecution.d.ts +83 -0
  80. package/dist/runtime/DeliveryExecution.d.ts.map +1 -0
  81. package/dist/runtime/DeliveryExecution.js +0 -0
  82. package/dist/runtime/DeliveryExecution.js.map +1 -0
  83. package/dist/runtime/outcomes.d.ts +28 -0
  84. package/dist/runtime/outcomes.d.ts.map +1 -0
  85. package/dist/runtime/outcomes.js +65 -0
  86. package/dist/runtime/outcomes.js.map +1 -0
  87. package/dist/runtime/types.d.ts +14 -0
  88. package/dist/runtime/types.d.ts.map +1 -0
  89. package/dist/runtime/types.js +2 -0
  90. package/dist/runtime/types.js.map +1 -0
  91. package/dist/testing/ConformanceHarness.d.ts +45 -0
  92. package/dist/testing/ConformanceHarness.d.ts.map +1 -0
  93. package/dist/testing/ConformanceHarness.js +2 -0
  94. package/dist/testing/ConformanceHarness.js.map +1 -0
  95. package/dist/testing/ConformanceScenario.d.ts +29 -0
  96. package/dist/testing/ConformanceScenario.d.ts.map +1 -0
  97. package/dist/testing/ConformanceScenario.js +83 -0
  98. package/dist/testing/ConformanceScenario.js.map +1 -0
  99. package/dist/testing/RunConformanceChecks.d.ts +10 -0
  100. package/dist/testing/RunConformanceChecks.d.ts.map +1 -0
  101. package/dist/testing/RunConformanceChecks.js +50 -0
  102. package/dist/testing/RunConformanceChecks.js.map +1 -0
  103. package/dist/testing/assertions.d.ts +13 -0
  104. package/dist/testing/assertions.d.ts.map +1 -0
  105. package/dist/testing/assertions.js +66 -0
  106. package/dist/testing/assertions.js.map +1 -0
  107. package/dist/testing/conformanceCases.d.ts +4 -0
  108. package/dist/testing/conformanceCases.d.ts.map +1 -0
  109. package/dist/testing/conformanceCases.js +359 -0
  110. package/dist/testing/conformanceCases.js.map +1 -0
  111. package/dist/testing/fixtures.d.ts +21 -0
  112. package/dist/testing/fixtures.d.ts.map +1 -0
  113. package/dist/testing/fixtures.js +39 -0
  114. package/dist/testing/fixtures.js.map +1 -0
  115. package/dist/testing/index.d.ts +6 -0
  116. package/dist/testing/index.d.ts.map +1 -0
  117. package/dist/testing/index.js +5 -0
  118. package/dist/testing/index.js.map +1 -0
  119. package/dist/testing/vitest.d.ts +4 -0
  120. package/dist/testing/vitest.d.ts.map +1 -0
  121. package/dist/testing/vitest.js +19 -0
  122. package/dist/testing/vitest.js.map +1 -0
  123. package/dist/transport.d.ts +106 -0
  124. package/dist/transport.d.ts.map +1 -0
  125. package/dist/transport.js +2 -0
  126. package/dist/transport.js.map +1 -0
  127. package/dist/validation.d.ts +26 -0
  128. package/dist/validation.d.ts.map +1 -0
  129. package/dist/validation.js +177 -0
  130. package/dist/validation.js.map +1 -0
  131. package/package.json +46 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeliveryExecution.js","sourceRoot":"","sources":["../../src/runtime/DeliveryExecution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { WorkOutcome } from '../handler.js';
2
+ import type { SubscriptionPolicy } from '../policy.js';
3
+ export declare const MAX_ATTEMPTS_EXCEEDED_REASON = "MaxAttemptsExceeded";
4
+ /** Matches WorkQueueDelivery.DeadLetterReason nvarchar(100). */
5
+ export declare const MAX_DEAD_LETTER_REASON_LENGTH = 100;
6
+ export interface HandlerResult {
7
+ Outcome: WorkOutcome;
8
+ ErrorText: string | null;
9
+ }
10
+ export type SettleAction = {
11
+ Kind: 'Complete';
12
+ } | {
13
+ Kind: 'Retry';
14
+ DelaySeconds: number;
15
+ Error: string;
16
+ } | {
17
+ Kind: 'DeadLetter';
18
+ Reason: string;
19
+ Error: string | null;
20
+ };
21
+ export declare function IsWorkOutcome(value: unknown): value is WorkOutcome;
22
+ export declare function MapHandlerReturn(value: unknown): HandlerResult;
23
+ export declare function MapThrownError(error: unknown): HandlerResult;
24
+ /** "Name: message" followed by stack frames when available. */
25
+ export declare function DescribeError(error: unknown): string;
26
+ export declare function ErrorMessageOf(error: unknown): string;
27
+ export declare function ResolveSettleAction(result: HandlerResult, attempt: number, policy: SubscriptionPolicy, random?: () => number): SettleAction;
28
+ //# sourceMappingURL=outcomes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outcomes.d.ts","sourceRoot":"","sources":["../../src/runtime/outcomes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEpD,eAAO,MAAM,4BAA4B,wBAAwB,CAAC;AAClE,gEAAgE;AAChE,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAKjD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,YAAY,GAClB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEnE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAWlE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAK9D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAQ5D;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOpD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAErD;AAED,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,EAC1B,MAAM,CAAC,EAAE,MAAM,MAAM,GACtB,YAAY,CAad"}
@@ -0,0 +1,65 @@
1
+ import { ComputeBackoffSeconds } from '../backoff.js';
2
+ import { FatalWorkError, TransientWorkError } from '../errors.js';
3
+ import { Outcome } from '../handler.js';
4
+ export const MAX_ATTEMPTS_EXCEEDED_REASON = 'MaxAttemptsExceeded';
5
+ /** Matches WorkQueueDelivery.DeadLetterReason nvarchar(100). */
6
+ export const MAX_DEAD_LETTER_REASON_LENGTH = 100;
7
+ const INVALID_RETURN_TEXT = 'Handler returned no valid outcome';
8
+ const DEFAULT_RETRY_ERROR = 'Retry requested by handler';
9
+ export function IsWorkOutcome(value) {
10
+ if (typeof value !== 'object' || value === null || !('Kind' in value)) {
11
+ return false;
12
+ }
13
+ if (value.Kind === 'Complete') {
14
+ return true;
15
+ }
16
+ if (value.Kind === 'Retry') {
17
+ return !('DelaySeconds' in value) || value.DelaySeconds === undefined || typeof value.DelaySeconds === 'number';
18
+ }
19
+ return value.Kind === 'DeadLetter' && 'Reason' in value && typeof value.Reason === 'string';
20
+ }
21
+ export function MapHandlerReturn(value) {
22
+ if (IsWorkOutcome(value)) {
23
+ return { Outcome: value, ErrorText: null };
24
+ }
25
+ return { Outcome: Outcome.Retry(INVALID_RETURN_TEXT), ErrorText: INVALID_RETURN_TEXT };
26
+ }
27
+ export function MapThrownError(error) {
28
+ if (error instanceof FatalWorkError) {
29
+ return { Outcome: Outcome.DeadLetter(error.message), ErrorText: DescribeError(error) };
30
+ }
31
+ if (error instanceof TransientWorkError) {
32
+ return { Outcome: Outcome.Retry(error.message, error.RetryAfterSeconds), ErrorText: DescribeError(error) };
33
+ }
34
+ return { Outcome: Outcome.Retry(ErrorMessageOf(error)), ErrorText: DescribeError(error) };
35
+ }
36
+ /** "Name: message" followed by stack frames when available. */
37
+ export function DescribeError(error) {
38
+ if (!(error instanceof Error)) {
39
+ return String(error);
40
+ }
41
+ const header = `${error.name}: ${error.message}`;
42
+ const frames = (error.stack ?? '').split('\n').slice(1).join('\n');
43
+ return frames.length > 0 ? `${header}\n${frames}` : header;
44
+ }
45
+ export function ErrorMessageOf(error) {
46
+ return error instanceof Error ? error.message : String(error);
47
+ }
48
+ export function ResolveSettleAction(result, attempt, policy, random) {
49
+ const outcome = result.Outcome;
50
+ if (outcome.Kind === 'Complete') {
51
+ return { Kind: 'Complete' };
52
+ }
53
+ if (outcome.Kind === 'DeadLetter') {
54
+ return { Kind: 'DeadLetter', Reason: truncate(outcome.Reason, MAX_DEAD_LETTER_REASON_LENGTH), Error: result.ErrorText };
55
+ }
56
+ const error = result.ErrorText ?? outcome.Reason ?? DEFAULT_RETRY_ERROR;
57
+ if (attempt >= policy.MaxAttempts) {
58
+ return { Kind: 'DeadLetter', Reason: MAX_ATTEMPTS_EXCEEDED_REASON, Error: error };
59
+ }
60
+ return { Kind: 'Retry', DelaySeconds: ComputeBackoffSeconds(policy, attempt, outcome.DelaySeconds, random), Error: error };
61
+ }
62
+ function truncate(text, maxLength) {
63
+ return text.length <= maxLength ? text : `${text.slice(0, maxLength - 1)}…`;
64
+ }
65
+ //# sourceMappingURL=outcomes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outcomes.js","sourceRoot":"","sources":["../../src/runtime/outcomes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface ConsumerRuntimeOptions {
2
+ /** Maximum handlers in flight for this subscription on this host. */
3
+ Concurrency: number;
4
+ ReceiveBatchSize: number;
5
+ /** Long-poll wait passed to ITransportConsumer.Receive (SQS: up to 20). Default 0. */
6
+ ReceiveWaitSeconds?: number;
7
+ IdlePollMinMs: number;
8
+ IdlePollMaxMs: number;
9
+ /** How long Stop() waits for handlers; also how long a cancelled handler gets before its cancel is acknowledged anyway. */
10
+ ShutdownDrainMs: number;
11
+ /** Local-clock allowance when enforcing the lease horizon. Default 5000. */
12
+ LeaseExpiryGraceMs?: number;
13
+ }
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACnC,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,2HAA2H;IAC3H,eAAe,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import type { ITransportDriver, SubscriptionBinding, TopicBinding, TransportCapabilities } from '../transport.js';
2
+ import type { SubscriptionBindingOverrides } from './fixtures.js';
3
+ export interface ConformanceTraits {
4
+ /** true for SQS-like transports where Release consumes a receive (attempt). */
5
+ ReleaseConsumesAttempt: boolean;
6
+ /** true when an expired lease on the final attempt dead-letters as 'LeaseExpired' (Database-like). */
7
+ ExpiredLeaseDeadLetters: boolean;
8
+ /** waitSeconds passed to Receive (eventually consistent transports need > 0). */
9
+ ReceiveWaitSeconds: number;
10
+ /**
11
+ * Cases the TEST ENVIRONMENT cannot run faithfully, keyed by case Id with the reason. For a transport whose
12
+ * emulator diverges from the real service (LocalStack does not expire SQS receipt handles, so stale-lease fencing
13
+ * cannot be observed there). The case is reported Skipped with the reason; it is never a statement about the
14
+ * transport, whose real behaviour must be confirmed against the service itself.
15
+ */
16
+ EnvironmentSkips?: Record<string, string>;
17
+ }
18
+ export interface ConformanceHarness {
19
+ readonly Capabilities: TransportCapabilities;
20
+ readonly Traits: ConformanceTraits;
21
+ /** A driver for one case; resources may be shared across cases because names are unique. */
22
+ CreateDriver(): Promise<ITransportDriver>;
23
+ CreateTopic(driver: ITransportDriver, name: string, overrides?: Partial<TopicBinding>): Promise<TopicBinding>;
24
+ CreateSubscription(driver: ITransportDriver, topic: TopicBinding, name: string, overrides?: SubscriptionBindingOverrides): Promise<SubscriptionBinding>;
25
+ /** Advance the transport's clock (fake) or wait in real time. */
26
+ AdvanceTime(ms: number): Promise<void>;
27
+ /** Called once per case, after the case finishes, with the driver it created. */
28
+ Dispose?(driver: ITransportDriver): Promise<void>;
29
+ }
30
+ export interface ConformanceCase {
31
+ Id: string;
32
+ Title: string;
33
+ /** A skip reason when the harness cannot run this case, otherwise null. */
34
+ Gate(harness: ConformanceHarness): string | null;
35
+ /** Throws ConformanceAssertionError on failure. Disposes its own driver. */
36
+ Run(harness: ConformanceHarness): Promise<void>;
37
+ }
38
+ export interface ConformanceCheckResult {
39
+ Id: string;
40
+ Title: string;
41
+ Status: 'Passed' | 'Failed' | 'Skipped';
42
+ Detail: string | null;
43
+ DurationMs: number;
44
+ }
45
+ //# sourceMappingURL=ConformanceHarness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConformanceHarness.d.ts","sourceRoot":"","sources":["../../src/testing/ConformanceHarness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC/G,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAC9B,+EAA+E;IAC/E,sBAAsB,EAAE,OAAO,CAAC;IAChC,sGAAsG;IACtG,uBAAuB,EAAE,OAAO,CAAC;IACjC,iFAAiF;IACjF,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,4FAA4F;IAC5F,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1C,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9G,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxJ,iEAAiE;IACjE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,iFAAiF;IACjF,OAAO,CAAC,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAAC;IACjD,4EAA4E;IAC5E,GAAG,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,sBAAsB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ConformanceHarness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConformanceHarness.js","sourceRoot":"","sources":["../../src/testing/ConformanceHarness.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import type { ITransportOperator } from '../operator.js';
2
+ import type { PublishRequest, PublishResult } from '../publishing.js';
3
+ import type { ITransportConsumer, ITransportDriver, ReceivedDelivery, SubscriptionBinding, TopicBinding } from '../transport.js';
4
+ import type { ConformanceHarness } from './ConformanceHarness.js';
5
+ import type { SubscriptionBindingOverrides } from './fixtures.js';
6
+ /** One driver, one topic and named subscriptions for a single conformance case. */
7
+ export declare class ConformanceScenario {
8
+ private readonly harness;
9
+ readonly Driver: ITransportDriver;
10
+ readonly Topic: TopicBinding;
11
+ private readonly subscriptions;
12
+ private readonly consumers;
13
+ private constructor();
14
+ static Open(harness: ConformanceHarness, driver: ITransportDriver, topicOverrides: Partial<TopicBinding>): Promise<ConformanceScenario>;
15
+ get Operator(): ITransportOperator;
16
+ AddSubscription(key: string, overrides: SubscriptionBindingOverrides): Promise<void>;
17
+ Subscription(key: string): SubscriptionBinding;
18
+ Consumer(key: string): ITransportConsumer;
19
+ Publish(requests: PublishRequest[]): Promise<PublishResult[]>;
20
+ Receive(key: string, max?: number): Promise<ReceivedDelivery[]>;
21
+ DeadLetterID(key: string, messageID: string): Promise<string>;
22
+ Close(): Promise<void>;
23
+ }
24
+ /** Opens a scenario, runs the case body, then always closes consumers and disposes the driver. */
25
+ export declare function WithScenario(harness: ConformanceHarness, topicOverrides: Partial<TopicBinding>, subscriptions: [string, SubscriptionBindingOverrides][], body: (scenario: ConformanceScenario) => Promise<void>): Promise<void>;
26
+ /** Sorted values of each delivery's `n` attribute, the numbering every case publishes with. */
27
+ export declare function Numbers(deliveries: ReceivedDelivery[]): string[];
28
+ export declare function Keyed(n: string, key?: string): PublishRequest;
29
+ //# sourceMappingURL=ConformanceScenario.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConformanceScenario.d.ts","sourceRoot":"","sources":["../../src/testing/ConformanceScenario.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE9H,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAS/D,mFAAmF;AACnF,qBAAa,mBAAmB;IAKxB,OAAO,CAAC,QAAQ,CAAC,OAAO;aACR,MAAM,EAAE,gBAAgB;aACxB,KAAK,EAAE,YAAY;IANvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;IACxE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IAEnE,OAAO;WAMa,IAAI,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAKpJ,IAAW,QAAQ,IAAI,kBAAkB,CAExC;IAEY,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB;IAI9C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAUzC,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAI7D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIrD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAKtC;AAED,kGAAkG;AAClG,wBAAsB,YAAY,CAC9B,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,EACrC,aAAa,EAAE,CAAC,MAAM,EAAE,4BAA4B,CAAC,EAAE,EACvD,IAAI,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,GACvD,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,+FAA+F;AAC/F,wBAAgB,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,GAAG,MAAM,EAAE,CAEhE;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,cAAc,CAE1D"}
@@ -0,0 +1,83 @@
1
+ import { Fail } from './assertions.js';
2
+ import { BuildMessages } from './fixtures.js';
3
+ let nameCounter = 0;
4
+ function uniqueName(prefix) {
5
+ nameCounter += 1;
6
+ return `${prefix}-${Date.now().toString(36)}-${nameCounter}`;
7
+ }
8
+ /** One driver, one topic and named subscriptions for a single conformance case. */
9
+ export class ConformanceScenario {
10
+ constructor(harness, Driver, Topic) {
11
+ this.harness = harness;
12
+ this.Driver = Driver;
13
+ this.Topic = Topic;
14
+ this.subscriptions = new Map();
15
+ this.consumers = new Map();
16
+ }
17
+ static async Open(harness, driver, topicOverrides) {
18
+ const topic = await harness.CreateTopic(driver, uniqueName('wqc-topic'), topicOverrides);
19
+ return new ConformanceScenario(harness, driver, topic);
20
+ }
21
+ get Operator() {
22
+ return this.Driver.Operator();
23
+ }
24
+ async AddSubscription(key, overrides) {
25
+ this.subscriptions.set(key, await this.harness.CreateSubscription(this.Driver, this.Topic, uniqueName(`wqc-${key}`), overrides));
26
+ }
27
+ Subscription(key) {
28
+ return this.subscriptions.get(key) ?? Fail(`Scenario has no subscription '${key}'`);
29
+ }
30
+ Consumer(key) {
31
+ const existing = this.consumers.get(key);
32
+ if (existing !== undefined) {
33
+ return existing;
34
+ }
35
+ const created = this.Driver.OpenConsumer(this.Subscription(key));
36
+ this.consumers.set(key, created);
37
+ return created;
38
+ }
39
+ Publish(requests) {
40
+ return this.Driver.Publish(this.Topic, BuildMessages(this.Topic, requests), [...this.subscriptions.values()]);
41
+ }
42
+ Receive(key, max = 10) {
43
+ return this.Consumer(key).Receive(max, this.harness.Traits.ReceiveWaitSeconds, new AbortController().signal);
44
+ }
45
+ async DeadLetterID(key, messageID) {
46
+ const page = await this.Operator.ListDeadLetters(this.Subscription(key), null, 100);
47
+ const record = page?.Items.find((item) => item.Message.MessageID === messageID);
48
+ return record?.DeliveryID ?? Fail(`No dead letter listed for message ${messageID}`);
49
+ }
50
+ async Close() {
51
+ for (const consumer of this.consumers.values()) {
52
+ await consumer.Close();
53
+ }
54
+ }
55
+ }
56
+ /** Opens a scenario, runs the case body, then always closes consumers and disposes the driver. */
57
+ export async function WithScenario(harness, topicOverrides, subscriptions, body) {
58
+ const driver = await harness.CreateDriver();
59
+ let scenario = null;
60
+ try {
61
+ scenario = await ConformanceScenario.Open(harness, driver, topicOverrides);
62
+ for (const [key, overrides] of subscriptions) {
63
+ await scenario.AddSubscription(key, overrides);
64
+ }
65
+ await body(scenario);
66
+ }
67
+ finally {
68
+ if (scenario !== null) {
69
+ await scenario.Close();
70
+ }
71
+ if (harness.Dispose !== undefined) {
72
+ await harness.Dispose(driver);
73
+ }
74
+ }
75
+ }
76
+ /** Sorted values of each delivery's `n` attribute, the numbering every case publishes with. */
77
+ export function Numbers(deliveries) {
78
+ return deliveries.map((delivery) => delivery.Message.Attributes['n'] ?? '').sort();
79
+ }
80
+ export function Keyed(n, key = 'k') {
81
+ return { PartitionKey: key, Attributes: { n } };
82
+ }
83
+ //# sourceMappingURL=ConformanceScenario.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConformanceScenario.js","sourceRoot":"","sources":["../../src/testing/ConformanceScenario.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ConformanceCheckResult, ConformanceHarness } from './ConformanceHarness.js';
2
+ /**
3
+ * Runs every conformance case sequentially and reports each outcome. Never throws: a gated case is
4
+ * Skipped with its reason, and any error (assertion or otherwise) makes the case Failed. Each case
5
+ * disposes its own driver (see WithScenario). Usable outside vitest, e.g. from an integration runner.
6
+ */
7
+ export declare function RunConformanceChecks(harness: ConformanceHarness): Promise<ConformanceCheckResult[]>;
8
+ /** The harness's environment skip for a case, or null. Exported so the vitest adapter reports it identically. */
9
+ export declare function EnvironmentSkipReason(harness: ConformanceHarness, caseId: string): string | null;
10
+ //# sourceMappingURL=RunConformanceChecks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunConformanceChecks.d.ts","sourceRoot":"","sources":["../../src/testing/RunConformanceChecks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAGvF;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAkBzG;AAED,iHAAiH;AACjH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGhG"}
@@ -0,0 +1,50 @@
1
+ import { ConformanceAssertionError } from './assertions.js';
2
+ import { CONFORMANCE_CASES } from './conformanceCases.js';
3
+ /**
4
+ * Runs every conformance case sequentially and reports each outcome. Never throws: a gated case is
5
+ * Skipped with its reason, and any error (assertion or otherwise) makes the case Failed. Each case
6
+ * disposes its own driver (see WithScenario). Usable outside vitest, e.g. from an integration runner.
7
+ */
8
+ export async function RunConformanceChecks(harness) {
9
+ const results = [];
10
+ for (const conformanceCase of CONFORMANCE_CASES) {
11
+ const base = { Id: conformanceCase.Id, Title: conformanceCase.Title };
12
+ const skipReason = EnvironmentSkipReason(harness, conformanceCase.Id) ?? gateSafely(conformanceCase.Gate.bind(conformanceCase), harness);
13
+ if (skipReason !== null) {
14
+ results.push({ ...base, Status: 'Skipped', Detail: skipReason, DurationMs: 0 });
15
+ continue;
16
+ }
17
+ const startedAt = Date.now();
18
+ try {
19
+ await conformanceCase.Run(harness);
20
+ results.push({ ...base, Status: 'Passed', Detail: null, DurationMs: Date.now() - startedAt });
21
+ }
22
+ catch (error) {
23
+ results.push({ ...base, Status: 'Failed', Detail: describeFailure(error), DurationMs: Date.now() - startedAt });
24
+ }
25
+ }
26
+ return results;
27
+ }
28
+ /** The harness's environment skip for a case, or null. Exported so the vitest adapter reports it identically. */
29
+ export function EnvironmentSkipReason(harness, caseId) {
30
+ const reason = harness.Traits.EnvironmentSkips?.[caseId];
31
+ return reason === undefined ? null : `environment: ${reason}`;
32
+ }
33
+ function gateSafely(gate, harness) {
34
+ try {
35
+ return gate(harness);
36
+ }
37
+ catch (error) {
38
+ return `Gate failed: ${describeFailure(error)}`;
39
+ }
40
+ }
41
+ function describeFailure(error) {
42
+ if (error instanceof ConformanceAssertionError) {
43
+ return error.message;
44
+ }
45
+ if (error instanceof Error) {
46
+ return `${error.name}: ${error.message}`;
47
+ }
48
+ return String(error);
49
+ }
50
+ //# sourceMappingURL=RunConformanceChecks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunConformanceChecks.js","sourceRoot":"","sources":["../../src/testing/RunConformanceChecks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAA2B;IAClE,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,KAAK,MAAM,eAAe,IAAI,iBAAiB,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC;QACtE,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;QACzI,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YAChF,SAAS;QACb,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC;YACD,MAAM,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;QAClG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;QACpH,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,qBAAqB,CAAC,OAA2B,EAAE,MAAc;IAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC;IACzD,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,MAAM,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,UAAU,CAAC,IAAoD,EAAE,OAA2B;IACjG,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,gBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;IACpD,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACnC,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC,OAAO,CAAC;IACzB,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /** Thrown by conformance cases when a transport does not behave as the contract requires. */
2
+ export declare class ConformanceAssertionError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ /** Structural equality for JSON-like values (primitives, arrays, plain objects). */
6
+ export declare function IsDeepEqual(actual: unknown, expected: unknown): boolean;
7
+ export declare function AssertEqual(actual: unknown, expected: unknown, label: string): void;
8
+ /** Every property of `expected` must be deep-equal on `actual`; other properties are ignored. */
9
+ export declare function AssertMatch(actual: unknown, expected: Record<string, unknown>, label: string): void;
10
+ export declare function AssertLength(items: readonly unknown[], expected: number, label: string): void;
11
+ export declare function AssertTrue(condition: boolean, label: string): void;
12
+ export declare function Fail(message: string): never;
13
+ //# sourceMappingURL=assertions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../src/testing/assertions.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,qBAAa,yBAA0B,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI9B;AAED,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAavE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAInF;AAED,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CASnG;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI7F;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIlE;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAE3C"}
@@ -0,0 +1,66 @@
1
+ /** Thrown by conformance cases when a transport does not behave as the contract requires. */
2
+ export class ConformanceAssertionError extends Error {
3
+ constructor(message) {
4
+ super(message);
5
+ this.name = 'ConformanceAssertionError';
6
+ }
7
+ }
8
+ /** Structural equality for JSON-like values (primitives, arrays, plain objects). */
9
+ export function IsDeepEqual(actual, expected) {
10
+ if (Object.is(actual, expected)) {
11
+ return true;
12
+ }
13
+ if (Array.isArray(actual) || Array.isArray(expected)) {
14
+ return Array.isArray(actual) && Array.isArray(expected) && actual.length === expected.length && actual.every((item, index) => IsDeepEqual(item, expected[index]));
15
+ }
16
+ if (!isRecord(actual) || !isRecord(expected)) {
17
+ return false;
18
+ }
19
+ const actualKeys = Object.keys(actual);
20
+ const expectedKeys = Object.keys(expected);
21
+ return actualKeys.length === expectedKeys.length && expectedKeys.every((key) => Object.prototype.hasOwnProperty.call(actual, key) && IsDeepEqual(actual[key], expected[key]));
22
+ }
23
+ export function AssertEqual(actual, expected, label) {
24
+ if (!IsDeepEqual(actual, expected)) {
25
+ Fail(`${label}: expected ${render(expected)} but got ${render(actual)}`);
26
+ }
27
+ }
28
+ /** Every property of `expected` must be deep-equal on `actual`; other properties are ignored. */
29
+ export function AssertMatch(actual, expected, label) {
30
+ if (!isRecord(actual)) {
31
+ Fail(`${label}: expected an object but got ${render(actual)}`);
32
+ }
33
+ for (const [key, value] of Object.entries(expected)) {
34
+ if (!IsDeepEqual(actual[key], value)) {
35
+ Fail(`${label}: expected ${key} ${render(value)} but got ${render(actual[key])}`);
36
+ }
37
+ }
38
+ }
39
+ export function AssertLength(items, expected, label) {
40
+ if (items.length !== expected) {
41
+ Fail(`${label}: expected ${expected} items but got ${items.length}`);
42
+ }
43
+ }
44
+ export function AssertTrue(condition, label) {
45
+ if (!condition) {
46
+ Fail(`${label}: expected true`);
47
+ }
48
+ }
49
+ export function Fail(message) {
50
+ throw new ConformanceAssertionError(message);
51
+ }
52
+ function render(value) {
53
+ if (value === undefined) {
54
+ return 'undefined';
55
+ }
56
+ try {
57
+ return JSON.stringify(value);
58
+ }
59
+ catch {
60
+ return String(value);
61
+ }
62
+ }
63
+ function isRecord(value) {
64
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
65
+ }
66
+ //# sourceMappingURL=assertions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../src/testing/assertions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ConformanceCase } from './ConformanceHarness.js';
2
+ /** The transport conformance cases (spec 02 §6), in execution order. */
3
+ export declare const CONFORMANCE_CASES: readonly ConformanceCase[];
4
+ //# sourceMappingURL=conformanceCases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformanceCases.d.ts","sourceRoot":"","sources":["../../src/testing/conformanceCases.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,sBAAsB,CAAC;AAiahF,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAGvD,CAAC"}