serverless-spy 0.0.11 → 0.0.14

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 (172) hide show
  1. package/.jsii +7 -4
  2. package/lib/{cjs/cli → cli}/cli.d.ts +0 -0
  3. package/lib/cli/cli.js +87 -0
  4. package/lib/cli/cli.mjs +85 -0
  5. package/lib/{cjs/cli → cli}/ws.d.ts +0 -0
  6. package/lib/cli/ws.js +68 -0
  7. package/lib/cli/ws.mjs +66 -0
  8. package/lib/{cjs/common → common}/getWebSocketUrl.d.ts +0 -0
  9. package/lib/common/getWebSocketUrl.js +57 -0
  10. package/lib/common/getWebSocketUrl.mjs +53 -0
  11. package/lib/common/spyEvents/DynamoDBSpyEvent.d.ts +10 -0
  12. package/lib/common/spyEvents/DynamoDBSpyEvent.js +3 -0
  13. package/lib/common/spyEvents/DynamoDBSpyEvent.mjs +2 -0
  14. package/lib/common/spyEvents/EventBridgeRuleSpyEvent.d.ts +9 -0
  15. package/lib/common/spyEvents/EventBridgeRuleSpyEvent.js +3 -0
  16. package/lib/common/spyEvents/EventBridgeRuleSpyEvent.mjs +2 -0
  17. package/lib/common/spyEvents/EventBridgeSpyEvent.d.ts +9 -0
  18. package/lib/common/spyEvents/EventBridgeSpyEvent.js +3 -0
  19. package/lib/common/spyEvents/EventBridgeSpyEvent.mjs +2 -0
  20. package/lib/common/spyEvents/FunctionConsoleSpyEvent.d.ts +10 -0
  21. package/lib/common/spyEvents/FunctionConsoleSpyEvent.js +3 -0
  22. package/lib/common/spyEvents/FunctionConsoleSpyEvent.mjs +2 -0
  23. package/lib/common/spyEvents/FunctionContext.d.ts +7 -0
  24. package/lib/common/spyEvents/FunctionContext.js +3 -0
  25. package/lib/common/spyEvents/FunctionContext.mjs +2 -0
  26. package/lib/common/spyEvents/FunctionErrorSpyEvent.d.ts +8 -0
  27. package/lib/common/spyEvents/FunctionErrorSpyEvent.js +3 -0
  28. package/lib/common/spyEvents/FunctionErrorSpyEvent.mjs +2 -0
  29. package/lib/common/spyEvents/FunctionRequestSpyEvent.d.ts +7 -0
  30. package/lib/common/spyEvents/FunctionRequestSpyEvent.js +3 -0
  31. package/lib/common/spyEvents/FunctionRequestSpyEvent.mjs +2 -0
  32. package/lib/common/spyEvents/FunctionResponseSpyEvent.d.ts +8 -0
  33. package/lib/common/spyEvents/FunctionResponseSpyEvent.js +3 -0
  34. package/lib/common/spyEvents/FunctionResponseSpyEvent.mjs +2 -0
  35. package/lib/common/spyEvents/S3SpyEvent.d.ts +8 -0
  36. package/lib/common/spyEvents/S3SpyEvent.js +3 -0
  37. package/lib/common/spyEvents/S3SpyEvent.mjs +2 -0
  38. package/lib/common/spyEvents/SnsSubscriptionSpyEvent.d.ts +11 -0
  39. package/lib/common/spyEvents/SnsSubscriptionSpyEvent.js +3 -0
  40. package/lib/common/spyEvents/SnsSubscriptionSpyEvent.mjs +2 -0
  41. package/lib/common/spyEvents/SnsTopicSpyEvent.d.ts +11 -0
  42. package/lib/common/spyEvents/SnsTopicSpyEvent.js +3 -0
  43. package/lib/common/spyEvents/SnsTopicSpyEvent.mjs +2 -0
  44. package/lib/common/spyEvents/SpyEvent.d.ts +3 -0
  45. package/lib/common/spyEvents/SpyEvent.js +3 -0
  46. package/lib/common/spyEvents/SpyEvent.mjs +2 -0
  47. package/lib/common/spyEvents/SpyMessage.d.ts +6 -0
  48. package/lib/common/spyEvents/SpyMessage.js +3 -0
  49. package/lib/common/spyEvents/SpyMessage.mjs +2 -0
  50. package/lib/common/spyEvents/SqsSpyEvent.d.ts +7 -0
  51. package/lib/common/spyEvents/SqsSpyEvent.js +3 -0
  52. package/lib/common/spyEvents/SqsSpyEvent.mjs +2 -0
  53. package/lib/{cjs/index.d.ts → index.d.ts} +0 -0
  54. package/lib/{cjs/index.js → index.js} +1 -1
  55. package/lib/index.mjs +3 -0
  56. package/lib/{cjs/listener → listener}/PrettifyForDisplay.d.ts +0 -0
  57. package/lib/listener/PrettifyForDisplay.js +3 -0
  58. package/lib/listener/PrettifyForDisplay.mjs +2 -0
  59. package/lib/{cjs/listener → listener}/RecursivePartial.d.ts +0 -0
  60. package/lib/listener/RecursivePartial.js +3 -0
  61. package/lib/listener/RecursivePartial.mjs +2 -0
  62. package/lib/{mjs/listener → listener}/SpyHandlers.ts.d.ts +11 -11
  63. package/lib/listener/SpyHandlers.ts.js +3 -0
  64. package/lib/listener/SpyHandlers.ts.mjs +2 -0
  65. package/lib/{mjs/listener → listener}/SpyListener.d.ts +10 -10
  66. package/lib/listener/SpyListener.js +3 -0
  67. package/lib/listener/SpyListener.mjs +2 -0
  68. package/lib/{mjs/listener → listener}/createServerlessSpyListener.d.ts +1 -1
  69. package/lib/listener/createServerlessSpyListener.js +167 -0
  70. package/lib/listener/createServerlessSpyListener.mjs +163 -0
  71. package/lib/{cjs/listener → listener}/index.d.ts +0 -0
  72. package/lib/{cjs/listener → listener}/index.js +1 -1
  73. package/lib/listener/index.mjs +3 -0
  74. package/lib/{cjs/listener → listener}/matchers.d.ts +0 -0
  75. package/lib/listener/matchers.js +55 -0
  76. package/lib/listener/matchers.mjs +55 -0
  77. package/lib/{cjs/listener → listener}/setup.d.ts +0 -0
  78. package/lib/listener/setup.js +21 -0
  79. package/lib/listener/setup.mjs +21 -0
  80. package/lib/{cjs/src → src}/ServerlessSpy.d.ts +0 -0
  81. package/lib/{cjs/src → src}/ServerlessSpy.js +1 -1
  82. package/lib/src/ServerlessSpy.mjs +293 -0
  83. package/lib/{cjs/src → src}/index.d.ts +0 -0
  84. package/lib/{cjs/src → src}/index.js +0 -0
  85. package/lib/src/index.mjs +2 -0
  86. package/listener/SpyHandlers.ts.ts +11 -11
  87. package/listener/SpyListener.ts +10 -10
  88. package/listener/createServerlessSpyListener.ts +4 -5
  89. package/{cli/node_modules → node_modules}/ws/LICENSE +0 -0
  90. package/{cli/node_modules → node_modules}/ws/README.md +0 -0
  91. package/{cli/node_modules → node_modules}/ws/browser.js +0 -0
  92. package/{cli/node_modules → node_modules}/ws/index.js +0 -0
  93. package/{cli/node_modules → node_modules}/ws/lib/buffer-util.js +0 -0
  94. package/{cli/node_modules → node_modules}/ws/lib/constants.js +0 -0
  95. package/{cli/node_modules → node_modules}/ws/lib/event-target.js +0 -0
  96. package/{cli/node_modules → node_modules}/ws/lib/extension.js +0 -0
  97. package/{cli/node_modules → node_modules}/ws/lib/limiter.js +0 -0
  98. package/{cli/node_modules → node_modules}/ws/lib/permessage-deflate.js +0 -0
  99. package/{cli/node_modules → node_modules}/ws/lib/receiver.js +0 -0
  100. package/{cli/node_modules → node_modules}/ws/lib/sender.js +0 -0
  101. package/{cli/node_modules → node_modules}/ws/lib/stream.js +0 -0
  102. package/{cli/node_modules → node_modules}/ws/lib/subprotocol.js +0 -0
  103. package/{cli/node_modules → node_modules}/ws/lib/validation.js +0 -0
  104. package/{cli/node_modules → node_modules}/ws/lib/websocket-server.js +0 -0
  105. package/{cli/node_modules → node_modules}/ws/lib/websocket.js +0 -0
  106. package/{cli/node_modules → node_modules}/ws/package.json +0 -0
  107. package/{cli/node_modules → node_modules}/ws/wrapper.mjs +0 -0
  108. package/package.json +18 -16
  109. package/tsconfig.npm.json +1 -0
  110. package/cli/package-lock.json +0 -2356
  111. package/cli/package.json +0 -14
  112. package/common/package.json +0 -22
  113. package/lib/cjs/cli/cli.js +0 -87
  114. package/lib/cjs/cli/ws.js +0 -68
  115. package/lib/cjs/common/getWebSocketUrl.js +0 -57
  116. package/lib/cjs/listener/PrettifyForDisplay.js +0 -3
  117. package/lib/cjs/listener/RecursivePartial.js +0 -3
  118. package/lib/cjs/listener/SpyHandlers.ts.d.ts +0 -109
  119. package/lib/cjs/listener/SpyHandlers.ts.js +0 -3
  120. package/lib/cjs/listener/SpyListener.d.ts +0 -40
  121. package/lib/cjs/listener/SpyListener.js +0 -3
  122. package/lib/cjs/listener/createServerlessSpyListener.d.ts +0 -13
  123. package/lib/cjs/listener/createServerlessSpyListener.js +0 -167
  124. package/lib/cjs/listener/matchers.js +0 -55
  125. package/lib/cjs/listener/setup.js +0 -21
  126. package/lib/mjs/cli/cli.d.ts +0 -1
  127. package/lib/mjs/cli/cli.js +0 -85
  128. package/lib/mjs/cli/ws.d.ts +0 -1
  129. package/lib/mjs/cli/ws.js +0 -66
  130. package/lib/mjs/common/getWebSocketUrl.d.ts +0 -2
  131. package/lib/mjs/common/getWebSocketUrl.js +0 -53
  132. package/lib/mjs/index.d.ts +0 -2
  133. package/lib/mjs/index.js +0 -3
  134. package/lib/mjs/listener/PrettifyForDisplay.d.ts +0 -3
  135. package/lib/mjs/listener/PrettifyForDisplay.js +0 -2
  136. package/lib/mjs/listener/RecursivePartial.d.ts +0 -4
  137. package/lib/mjs/listener/RecursivePartial.js +0 -2
  138. package/lib/mjs/listener/SpyHandlers.ts.js +0 -2
  139. package/lib/mjs/listener/SpyListener.js +0 -2
  140. package/lib/mjs/listener/createServerlessSpyListener.js +0 -163
  141. package/lib/mjs/listener/index.d.ts +0 -2
  142. package/lib/mjs/listener/index.js +0 -3
  143. package/lib/mjs/listener/matchers.d.ts +0 -0
  144. package/lib/mjs/listener/matchers.js +0 -55
  145. package/lib/mjs/listener/setup.d.ts +0 -0
  146. package/lib/mjs/listener/setup.js +0 -21
  147. package/lib/mjs/src/ServerlessSpy.d.ts +0 -27
  148. package/lib/mjs/src/ServerlessSpy.js +0 -293
  149. package/lib/mjs/src/index.d.ts +0 -1
  150. package/lib/mjs/src/index.js +0 -2
  151. package/listener/node_modules/ws/LICENSE +0 -19
  152. package/listener/node_modules/ws/README.md +0 -495
  153. package/listener/node_modules/ws/browser.js +0 -8
  154. package/listener/node_modules/ws/index.js +0 -13
  155. package/listener/node_modules/ws/lib/buffer-util.js +0 -127
  156. package/listener/node_modules/ws/lib/constants.js +0 -12
  157. package/listener/node_modules/ws/lib/event-target.js +0 -266
  158. package/listener/node_modules/ws/lib/extension.js +0 -203
  159. package/listener/node_modules/ws/lib/limiter.js +0 -55
  160. package/listener/node_modules/ws/lib/permessage-deflate.js +0 -511
  161. package/listener/node_modules/ws/lib/receiver.js +0 -618
  162. package/listener/node_modules/ws/lib/sender.js +0 -478
  163. package/listener/node_modules/ws/lib/stream.js +0 -159
  164. package/listener/node_modules/ws/lib/subprotocol.js +0 -62
  165. package/listener/node_modules/ws/lib/validation.js +0 -125
  166. package/listener/node_modules/ws/lib/websocket-server.js +0 -535
  167. package/listener/node_modules/ws/lib/websocket.js +0 -1305
  168. package/listener/node_modules/ws/package.json +0 -61
  169. package/listener/node_modules/ws/wrapper.mjs +0 -8
  170. package/listener/package.json +0 -19
  171. package/listener/tsconfig.dev.json +0 -16
  172. package/listener/tsconfig.json +0 -16
@@ -1,163 +0,0 @@
1
- import { getWebSocketUrl } from 'serverless-spy-common/getWebSocketUrl';
2
- import WebSocket from 'ws';
3
- export async function createServerlessSpyListener(params) {
4
- const urlSigned = await getWebSocketUrl(params.serverlessSpyWsUrl, params.credentials);
5
- const ws = new WebSocket(urlSigned);
6
- const messages = [];
7
- let trackers = [];
8
- let closed = false;
9
- const functionPrefix = 'waitFor';
10
- let connectionOpenResolve;
11
- let waitForConnection = new Promise((resolve) => {
12
- connectionOpenResolve = resolve;
13
- });
14
- ws.on('open', () => {
15
- console.log('connected ' + new Date().toISOString());
16
- connectionOpenResolve(undefined);
17
- });
18
- ws.on('message', (data) => {
19
- if (closed)
20
- return;
21
- console.log(`From server: ${data}`);
22
- const message = JSON.parse(data.toString());
23
- message.serviceKeyForFunction = message.serviceKey.replace(/#/g, '');
24
- if (message.serviceKey.startsWith('Function')) {
25
- message.functionContextAwsRequestId = message.data.context.awsRequestId;
26
- }
27
- messages.push(message);
28
- resolveOldTrackerWithNewMessage(message);
29
- });
30
- ws.on('close', () => {
31
- closed = true;
32
- // console.log("disconnected " + new Date().toISOString());
33
- });
34
- const trackerMatchMessage = (tracker, message) => {
35
- if (tracker.finished)
36
- return;
37
- if ((tracker.serviceKey && tracker.serviceKey === message.serviceKey) ||
38
- (tracker.serviceKeyForFunction &&
39
- tracker.serviceKeyForFunction === message.serviceKeyForFunction)) {
40
- if (trackerMatchCondition(tracker, message)) {
41
- tracker.finished = true;
42
- const spyAndJestMatchers = {
43
- getData: () => message.data,
44
- };
45
- const serviceKeyForFunction = tracker.serviceKeyForFunction;
46
- if (serviceKeyForFunction &&
47
- serviceKeyForFunction.startsWith('Function') &&
48
- (serviceKeyForFunction.endsWith('Request') ||
49
- serviceKeyForFunction.endsWith('Console'))) {
50
- let serviceKeyForFunctionResponse = serviceKeyForFunction;
51
- if (serviceKeyForFunctionResponse.endsWith('Request')) {
52
- serviceKeyForFunctionResponse =
53
- serviceKeyForFunctionResponse.substring(0, serviceKeyForFunctionResponse.length - 'Request'.length);
54
- }
55
- else if (serviceKeyForFunctionResponse.endsWith('Console')) {
56
- serviceKeyForFunctionResponse =
57
- serviceKeyForFunctionResponse.substring(0, serviceKeyForFunctionResponse.length - 'Console'.length);
58
- }
59
- serviceKeyForFunctionResponse += 'Response';
60
- spyAndJestMatchers.followedByResponse = (paramsW) => {
61
- return createWaitForXXXFunc(serviceKeyForFunctionResponse, paramsW, message.data.context.awsRequestId)();
62
- };
63
- }
64
- const proxy = new Proxy(spyAndJestMatchers, {
65
- get: function (target, objectKey) {
66
- if (target.hasOwnProperty(objectKey)) {
67
- return target[objectKey];
68
- }
69
- else if (objectKey !== 'then') {
70
- return function () {
71
- const jestFunctionToExecute = expect(message.data)[objectKey];
72
- jestFunctionToExecute.apply(undefined, arguments);
73
- return proxy;
74
- };
75
- }
76
- },
77
- });
78
- tracker.promiseResolve(proxy);
79
- return true;
80
- }
81
- }
82
- return false;
83
- };
84
- const resolveTrackerInOldMessages = (tracker) => {
85
- for (const message of messages) {
86
- if (trackerMatchMessage(tracker, message)) {
87
- return true;
88
- }
89
- }
90
- return false;
91
- };
92
- const resolveOldTrackerWithNewMessage = (message) => {
93
- for (let index = 0; index < trackers.length; index++) {
94
- const tracker = trackers[index];
95
- if (trackerMatchMessage(tracker, message)) {
96
- trackers = trackers.splice(index, 1);
97
- return true;
98
- }
99
- }
100
- return false;
101
- };
102
- const spyListener = {};
103
- spyListener.stop = () => {
104
- closed = true;
105
- ws.close();
106
- };
107
- const proxy = new Proxy(spyListener, {
108
- get: function (target, objectKey) {
109
- if (target.hasOwnProperty(objectKey)) {
110
- return target[objectKey];
111
- }
112
- else if (typeof objectKey === 'string' &&
113
- objectKey.startsWith(functionPrefix)) {
114
- const paramsW = arguments[0];
115
- const serviceKeyForFunction = objectKey.substring(functionPrefix.length);
116
- return createWaitForXXXFunc(serviceKeyForFunction, paramsW);
117
- }
118
- },
119
- });
120
- await waitForConnection;
121
- return proxy;
122
- function trackerMatchCondition(tracker, message) {
123
- const matchCondition = (tracker.condition && tracker.condition(message.data)) ||
124
- !tracker.condition;
125
- const matchRequestId = (tracker.functionContextAwsRequestId &&
126
- tracker.functionContextAwsRequestId ===
127
- message.functionContextAwsRequestId) ||
128
- !tracker.functionContextAwsRequestId;
129
- if (tracker.functionContextAwsRequestId) {
130
- console.log(`${tracker.functionContextAwsRequestId} - ${message.functionContextAwsRequestId}`);
131
- }
132
- return matchCondition && matchRequestId;
133
- }
134
- function createWaitForXXXFunc(serviceKeyForFunction, paramsW, functionContextAwsRequestId) {
135
- let tracker;
136
- const promise = new Promise((resolve, reject) => {
137
- tracker = {
138
- finished: false,
139
- promiseResolve: resolve,
140
- promiseReject: reject,
141
- serviceKeyForFunction,
142
- functionContextAwsRequestId,
143
- };
144
- });
145
- return function waitForXXXFunc() {
146
- tracker.condition = paramsW?.condition;
147
- const timer = setTimeout(() => {
148
- if (tracker.finished)
149
- return;
150
- tracker.finished = true;
151
- tracker.promiseReject(new Error(`Timeout waiting for Serverless Spy message ${serviceKeyForFunction}`));
152
- }, paramsW?.timoutMs || 10000);
153
- promise.finally(() => {
154
- clearTimeout(timer);
155
- });
156
- if (!resolveTrackerInOldMessages(tracker)) {
157
- trackers.push(tracker);
158
- }
159
- return promise;
160
- };
161
- }
162
- }
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlU2VydmVybGVzc1NweUxpc3RlbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGlzdGVuZXIvY3JlYXRlU2VydmVybGVzc1NweUxpc3RlbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUl4RSxPQUFPLFNBQVMsTUFBTSxJQUFJLENBQUM7QUFRM0IsTUFBTSxDQUFDLEtBQUssVUFBVSwyQkFBMkIsQ0FDL0MsTUFBbUM7SUFFbkMsTUFBTSxTQUFTLEdBQUcsTUFBTSxlQUFlLENBQ3JDLE1BQU0sQ0FBQyxrQkFBa0IsRUFDekIsTUFBTSxDQUFDLFdBQVcsQ0FDbkIsQ0FBQztJQUNGLE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sUUFBUSxHQUF3QixFQUFFLENBQUM7SUFDekMsSUFBSSxRQUFRLEdBQWMsRUFBRSxDQUFDO0lBQzdCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNuQixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDakMsSUFBSSxxQkFBK0MsQ0FBQztJQUVwRCxJQUFJLGlCQUFpQixHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDOUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDO0lBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNyRCxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNILEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDeEIs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RTtnQkFDbkIsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN6QyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3hCO1lBRUQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbmltcG9ydCB7IENyZWRlbnRpYWxzIH0gZnJvbSAnQGF3cy1zZGsvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0V2ViU29ja2V0VXJsIH0gZnJvbSAnc2VydmVybGVzcy1zcHktY29tbW9uL2dldFdlYlNvY2tldFVybCc7XG5pbXBvcnQgeyBGdW5jdGlvblJlcXVlc3RTcHlFdmVudCB9IGZyb20gJ3NlcnZlcmxlc3Mtc3B5LWNvbW1vbi9zcHlFdmVudHMvRnVuY3Rpb25SZXF1ZXN0U3B5RXZlbnQnO1xuaW1wb3J0IHsgU3B5RXZlbnQgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL1NweUV2ZW50JztcbmltcG9ydCB7IFNweU1lc3NhZ2UgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL1NweU1lc3NhZ2UnO1xuaW1wb3J0IFdlYlNvY2tldCBmcm9tICd3cyc7XG5pbXBvcnQgeyBTcHlMaXN0ZW5lciB9IGZyb20gJy4vU3B5TGlzdGVuZXInO1xuXG50eXBlIFNlcnZlcmxlc3NTcHlMaXN0ZW5lclBhcmFtcyA9IHtcbiAgc2VydmVybGVzc1NweVdzVXJsOiBzdHJpbmc7XG4gIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHM7XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2VydmVybGVzc1NweUxpc3RlbmVyPFRTcHlFdmVudHM+KFxuICBwYXJhbXM6IFNlcnZlcmxlc3NTcHlMaXN0ZW5lclBhcmFtc1xuKSB7XG4gIGNvbnN0IHVybFNpZ25lZCA9IGF3YWl0IGdldFdlYlNvY2tldFVybChcbiAgICBwYXJhbXMuc2VydmVybGVzc1NweVdzVXJsLFxuICAgIHBhcmFtcy5jcmVkZW50aWFsc1xuICApO1xuICBjb25zdCB3cyA9IG5ldyBXZWJTb2NrZXQodXJsU2lnbmVkKTtcbiAgY29uc3QgbWVzc2FnZXM6IFNweU1lc3NhZ2VTdG9yYWdlW10gPSBbXTtcbiAgbGV0IHRyYWNrZXJzOiBUcmFja2VyW10gPSBbXTtcbiAgbGV0IGNsb3NlZCA9IGZhbHNlO1xuICBjb25zdCBmdW5jdGlvblByZWZpeCA9ICd3YWl0Rm9yJztcbiAgbGV0IGNvbm5lY3Rpb25PcGVuUmVzb2x2ZTogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkO1xuXG4gIGxldCB3YWl0Rm9yQ29ubmVjdGlvbiA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29ubmVjdGlvbk9wZW5SZXNvbHZlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgd3Mub24oJ29wZW4nLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ2Nvbm5lY3RlZCAnICsgbmV3IERhdGUoKS50b0lTT1N0cmluZygpKTtcbiAgICBjb25uZWN0aW9uT3BlblJlc29sdmUodW5kZWZpbmVkKTtcbiAgfSk7XG4gIHdzLm9uKCdtZXNzYWdlJywgKGRhdGEpID0+IHtcbiAgICBpZiAoY2xvc2VkKSByZXR1cm47XG5cbiAgICBjb25zb2xlLmxvZyhgRnJvbSBzZXJ2ZXI6ICR7ZGF0YX1gKTtcblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBKU09OLnBhcnNlKGRhdGEudG9TdHJpbmcoKSkgYXMgU3B5TWVzc2FnZVN0b3JhZ2U7XG5cbiAgICBtZXNzYWdlLnNlcnZpY2VLZXlGb3JGdW5jdGlvbiA9IG1lc3NhZ2Uuc2VydmljZUtleS5yZXBsYWNlKC8jL2csICcnKTtcblxuICAgIGlmIChtZXNzYWdlLnNlcnZpY2VLZXkuc3RhcnRzV2l0aCgnRnVuY3Rpb24nKSkge1xuICAgICAgbWVzc2FnZS5mdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQgPSAoXG4gICAgICAgIG1lc3NhZ2UuZGF0YSBhcyBGdW5jdGlvblJlcXVlc3RTcHlFdmVudFxuICAgICAgKS5jb250ZXh0LmF3c1JlcXVlc3RJZDtcbiAgICB9XG5cbiAgICBtZXNzYWdlcy5wdXNoKG1lc3NhZ2UpO1xuICAgIHJlc29sdmVPbGRUcmFja2VyV2l0aE5ld01lc3NhZ2UobWVzc2FnZSk7XG4gIH0pO1xuICB3cy5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAvLyBjb25zb2xlLmxvZyhcImRpc2Nvbm5lY3RlZCBcIiArIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSk7XG4gIH0pO1xuXG4gIGNvbnN0IHRyYWNrZXJNYXRjaE1lc3NhZ2UgPSAoXG4gICAgdHJhY2tlcjogVHJhY2tlcixcbiAgICBtZXNzYWdlOiBTcHlNZXNzYWdlU3RvcmFnZVxuICApID0+IHtcbiAgICBpZiAodHJhY2tlci5maW5pc2hlZCkgcmV0dXJuO1xuXG4gICAgaWYgKFxuICAgICAgKHRyYWNrZXIuc2VydmljZUtleSAmJiB0cmFja2VyLnNlcnZpY2VLZXkgPT09IG1lc3NhZ2Uuc2VydmljZUtleSkgfHxcbiAgICAgICh0cmFja2VyLnNlcnZpY2VLZXlGb3JGdW5jdGlvbiAmJlxuICAgICAgICB0cmFja2VyLnNlcnZpY2VLZXlGb3JGdW5jdGlvbiA9PT0gbWVzc2FnZS5zZXJ2aWNlS2V5Rm9yRnVuY3Rpb24pXG4gICAgKSB7XG4gICAgICBpZiAodHJhY2tlck1hdGNoQ29uZGl0aW9uKHRyYWNrZXIsIG1lc3NhZ2UpKSB7XG4gICAgICAgIHRyYWNrZXIuZmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IHNweUFuZEplc3RNYXRjaGVyczogYW55ID0ge1xuICAgICAgICAgIGdldERhdGE6ICgpID0+IG1lc3NhZ2UuZGF0YSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzZXJ2aWNlS2V5Rm9yRnVuY3Rpb24gPSB0cmFja2VyLnNlcnZpY2VLZXlGb3JGdW5jdGlvbjtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHNlcnZpY2VLZXlGb3JGdW5jdGlvbiAmJlxuICAgICAgICAgIHNlcnZpY2VLZXlGb3JGdW5jdGlvbi5zdGFydHNXaXRoKCdGdW5jdGlvbicpICYmXG4gICAgICAgICAgKHNlcnZpY2VLZXlGb3JGdW5jdGlvbi5lbmRzV2l0aCgnUmVxdWVzdCcpIHx8XG4gICAgICAgICAgICBzZXJ2aWNlS2V5Rm9yRnVuY3Rpb24uZW5kc1dpdGgoJ0NvbnNvbGUnKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGV0IHNlcnZpY2VLZXlGb3JGdW5jdGlvblJlc3BvbnNlID0gc2VydmljZUtleUZvckZ1bmN0aW9uO1xuXG4gICAgICAgICAgaWYgKHNlcnZpY2VLZXlGb3JGdW5jdGlvblJlc3BvbnNlLmVuZHNXaXRoKCdSZXF1ZXN0JykpIHtcbiAgICAgICAgICAgIHNlcnZpY2VLZXlGb3JGdW5jdGlvblJlc3BvbnNlID1cbiAgICAgICAgICAgICAgc2VydmljZUtleUZvckZ1bmN0aW9uUmVzcG9uc2Uuc3Vic3RyaW5nKFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgc2VydmljZUtleUZvckZ1bmN0aW9uUmVzcG9uc2UubGVuZ3RoIC0gJ1JlcXVlc3QnLmxlbmd0aFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc2VydmljZUtleUZvckZ1bmN0aW9uUmVzcG9uc2UuZW5kc1dpdGgoJ0NvbnNvbGUnKSkge1xuICAgICAgICAgICAgc2VydmljZUtleUZvckZ1bmN0aW9uUmVzcG9uc2UgPVxuICAgICAgICAgICAgICBzZXJ2aWNlS2V5Rm9yRnVuY3Rpb25SZXNwb25zZS5zdWJzdHJpbmcoXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlS2V5Rm9yRnVuY3Rpb25SZXNwb25zZS5sZW5ndGggLSAnQ29uc29sZScubGVuZ3RoXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2VydmljZUtleUZvckZ1bmN0aW9uUmVzcG9uc2UgKz0gJ1Jlc3BvbnNlJztcblxuICAgICAgICAgIHNweUFuZEplc3RNYXRjaGVycy5mb2xsb3dlZEJ5UmVzcG9uc2UgPSAocGFyYW1zVzogV2FpdEZvclBhcmFtcykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVdhaXRGb3JYWFhGdW5jKFxuICAgICAgICAgICAgICBzZXJ2aWNlS2V5Rm9yRnVuY3Rpb25SZXNwb25zZSxcbiAgICAgICAgICAgICAgcGFyYW1zVyxcbiAgICAgICAgICAgICAgKG1lc3NhZ2UuZGF0YSBhcyBGdW5jdGlvblJlcXVlc3RTcHlFdmVudCkuY29udGV4dC5hd3NSZXF1ZXN0SWRcbiAgICAgICAgICAgICkoKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJveHkgPSBuZXcgUHJveHkoc3B5QW5kSmVzdE1hdGNoZXJzLCB7XG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIG9iamVjdEtleTogc3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAodGFyZ2V0Lmhhc093blByb3BlcnR5KG9iamVjdEtleSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtvYmplY3RLZXldO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvYmplY3RLZXkgIT09ICd0aGVuJykge1xuICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGplc3RGdW5jdGlvblRvRXhlY3V0ZSA9IChleHBlY3QobWVzc2FnZS5kYXRhKSBhcyBhbnkpW1xuICAgICAgICAgICAgICAgICAgb2JqZWN0S2V5XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICBqZXN0RnVuY3Rpb25Ub0V4ZWN1dGUuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm94eTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICB0cmFja2VyLnByb21pc2VSZXNvbHZlKHByb3h5KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBjb25zdCByZXNvbHZlVHJhY2tlckluT2xkTWVzc2FnZXMgPSAodHJhY2tlcjogVHJhY2tlcikgPT4ge1xuICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiBtZXNzYWdlcykge1xuICAgICAgaWYgKHRyYWNrZXJNYXRjaE1lc3NhZ2UodHJhY2tlciwgbWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IHJlc29sdmVPbGRUcmFja2VyV2l0aE5ld01lc3NhZ2UgPSAobWVzc2FnZTogU3B5TWVzc2FnZVN0b3JhZ2UpID0+IHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdHJhY2tlcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCB0cmFja2VyID0gdHJhY2tlcnNbaW5kZXhdO1xuICAgICAgaWYgKHRyYWNrZXJNYXRjaE1lc3NhZ2UodHJhY2tlciwgbWVzc2FnZSkpIHtcbiAgICAgICAgdHJhY2tlcnMgPSB0cmFja2Vycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgY29uc3Qgc3B5TGlzdGVuZXIgPSB7fSBhcyBTcHlMaXN0ZW5lcjxUU3B5RXZlbnRzPjtcblxuICBzcHlMaXN0ZW5lci5zdG9wID0gKCkgPT4ge1xuICAgIGNsb3NlZCA9IHRydWU7XG4gICAgd3MuY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBwcm94eSA9IG5ldyBQcm94eShzcHlMaXN0ZW5lciwge1xuICAgIGdldDogZnVuY3Rpb24gKHRhcmdldDogYW55LCBvYmplY3RLZXk6IHN0cmluZykge1xuICAgICAgaWYgKHRhcmdldC5oYXNPd25Qcm9wZXJ0eShvYmplY3RLZXkpKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXRbb2JqZWN0S2V5XTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHR5cGVvZiBvYmplY3RLZXkgPT09ICdzdHJpbmcnICYmXG4gICAgICAgIG9iamVjdEtleS5zdGFydHNXaXRoKGZ1bmN0aW9uUHJlZml4KVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtc1cgPSBhcmd1bWVudHNbMF0gYXMgV2FpdEZvclBhcmFtcztcbiAgICAgICAgY29uc3Qgc2VydmljZUtleUZvckZ1bmN0aW9uID0gb2JqZWN0S2V5LnN1YnN0cmluZyhcbiAgICAgICAgICBmdW5jdGlvblByZWZpeC5sZW5ndGhcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gY3JlYXRlV2FpdEZvclhYWEZ1bmMoc2VydmljZUtleUZvckZ1bmN0aW9uLCBwYXJhbXNXKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICBhd2FpdCB3YWl0Rm9yQ29ubmVjdGlvbjtcblxuICByZXR1cm4gcHJveHkgYXMgU3B5TGlzdGVuZXI8VFNweUV2ZW50cz47XG5cbiAgZnVuY3Rpb24gdHJhY2tlck1hdGNoQ29uZGl0aW9uKHRyYWNrZXI6IFRyYWNrZXIsIG1lc3NhZ2U6IFNweU1lc3NhZ2VTdG9yYWdlKSB7XG4gICAgY29uc3QgbWF0Y2hDb25kaXRpb24gPVxuICAgICAgKHRyYWNrZXIuY29uZGl0aW9uICYmIHRyYWNrZXIuY29uZGl0aW9uKG1lc3NhZ2UuZGF0YSkpIHx8XG4gICAgICAhdHJhY2tlci5jb25kaXRpb247XG5cbiAgICBjb25zdCBtYXRjaFJlcXVlc3RJZCA9XG4gICAgICAodHJhY2tlci5mdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQgJiZcbiAgICAgICAgdHJhY2tlci5mdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQgPT09XG4gICAgICAgICAgbWVzc2FnZS5mdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQpIHx8XG4gICAgICAhdHJhY2tlci5mdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQ7XG5cbiAgICBpZiAodHJhY2tlci5mdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgJHt0cmFja2VyLmZ1bmN0aW9uQ29udGV4dEF3c1JlcXVlc3RJZH0gLSAke21lc3NhZ2UuZnVuY3Rpb25Db250ZXh0QXdzUmVxdWVzdElkfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoQ29uZGl0aW9uICYmIG1hdGNoUmVxdWVzdElkO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlV2FpdEZvclhYWEZ1bmMoXG4gICAgc2VydmljZUtleUZvckZ1bmN0aW9uOiBzdHJpbmcsXG4gICAgcGFyYW1zVzogV2FpdEZvclBhcmFtczxTcHlFdmVudD4sXG4gICAgZnVuY3Rpb25Db250ZXh0QXdzUmVxdWVzdElkPzogc3RyaW5nXG4gICkge1xuICAgIGxldCB0cmFja2VyOiBUcmFja2VyO1xuXG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyYWNrZXIgPSB7XG4gICAgICAgIGZpbmlzaGVkOiBmYWxzZSxcbiAgICAgICAgcHJvbWlzZVJlc29sdmU6IHJlc29sdmUsXG4gICAgICAgIHByb21pc2VSZWplY3Q6IHJlamVjdCxcbiAgICAgICAgc2VydmljZUtleUZvckZ1bmN0aW9uLFxuICAgICAgICBmdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHdhaXRGb3JYWFhGdW5jKCkge1xuICAgICAgdHJhY2tlci5jb25kaXRpb24gPSBwYXJhbXNXPy5jb25kaXRpb247XG5cbiAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0cmFja2VyLmZpbmlzaGVkKSByZXR1cm47XG4gICAgICAgIHRyYWNrZXIuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICB0cmFja2VyLnByb21pc2VSZWplY3QoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFRpbWVvdXQgd2FpdGluZyBmb3IgU2VydmVybGVzcyBTcHkgbWVzc2FnZSAke3NlcnZpY2VLZXlGb3JGdW5jdGlvbn1gXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSwgcGFyYW1zVz8udGltb3V0TXMgfHwgMTAwMDApO1xuXG4gICAgICBwcm9taXNlLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzb2x2ZVRyYWNrZXJJbk9sZE1lc3NhZ2VzKHRyYWNrZXIpKSB7XG4gICAgICAgIHRyYWNrZXJzLnB1c2godHJhY2tlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYWl0Rm9yUGFyYW1zPFRTcHlFdmVudCBleHRlbmRzIFNweUV2ZW50ID0gU3B5RXZlbnQ+IHtcbiAgY29uZGl0aW9uPzogKGV2ZW50OiBUU3B5RXZlbnQpID0+IGJvb2xlYW47XG4gIHRpbW91dE1zPzogbnVtYmVyO1xufVxuXG50eXBlIFRyYWNrZXIgPSB7XG4gIHByb21pc2VSZXNvbHZlOiAoZGF0YTogYW55KSA9PiB2b2lkO1xuICBwcm9taXNlUmVqZWN0OiAoZGF0YTogYW55KSA9PiB2b2lkO1xuICBmaW5pc2hlZDogYm9vbGVhbjtcbiAgc2VydmljZUtleT86IHN0cmluZztcbiAgc2VydmljZUtleUZvckZ1bmN0aW9uPzogc3RyaW5nO1xuICBjb25kaXRpb24/OiAoZGF0YTogYW55KSA9PiBib29sZWFuO1xuICB0aW1vdXRNcz86IG51bWJlcjtcbiAgZnVuY3Rpb25Db250ZXh0QXdzUmVxdWVzdElkPzogc3RyaW5nO1xufTtcblxudHlwZSBTcHlNZXNzYWdlU3RvcmFnZSA9IFNweU1lc3NhZ2UgJiB7XG4gIHNlcnZpY2VLZXlGb3JGdW5jdGlvbjogc3RyaW5nO1xuICBmdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQ/OiBzdHJpbmc7XG59O1xuIl19
@@ -1,2 +0,0 @@
1
- export * from './createServerlessSpyListener';
2
- export * from './SpyListener';
@@ -1,3 +0,0 @@
1
- export * from './createServerlessSpyListener';
2
- export * from './SpyListener';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saXN0ZW5lci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jcmVhdGVTZXJ2ZXJsZXNzU3B5TGlzdGVuZXInO1xuZXhwb3J0ICogZnJvbSAnLi9TcHlMaXN0ZW5lcic7XG4iXX0=
File without changes
@@ -1,55 +0,0 @@
1
- "use strict";
2
- /*
3
- // import { ServerlessSpyListener } from "./ServerlessSpyListener";
4
-
5
- type CustomMatcherResult = {
6
- message: () => string;
7
- pass: boolean;
8
- };
9
-
10
- export const toReceiveEvent = async (
11
- spy: any,
12
- serviceKey: string,
13
- condition?: (data: any) => boolean
14
- ): Promise<CustomMatcherResult> => {
15
- console.log('NOTRI');
16
-
17
- await sleep(3000);
18
-
19
- // console.log("SPY", spy);
20
- // const events = await spy.awaitEvents((events) => {
21
- // return events.some((event) => event["detail-type"] === expected);
22
- // });
23
-
24
- // const pass = events.some((event) => event["detail-type"] === expected);
25
-
26
- // const message = pass
27
- // ? () => {
28
- // return (
29
- // matcherHint("toHaveEventWithDetailType", "eventsSpy", "detail-type") +
30
- // "\n\n" +
31
- // `Expected: not ${printExpected(expected)}\n` +
32
- // `Number of events: ${printReceived(events.length)}`
33
- // );
34
- // }
35
- // : () => {
36
- // return (
37
- // matcherHint("toHaveEventWithDetailType", "eventsSpy", "detail-type") +
38
- // "\n\n" +
39
- // `Expected: ${printExpected(expected)}\n` +
40
- // (events.length > 0
41
- // ? `Received: ${printReceived(events[0]?.["detail-type"])}`
42
- // : `Number of events: ${printReceived(events.length)}`)
43
- // );
44
- // };
45
-
46
- return { message: () => 'OK', pass: true };
47
- };
48
-
49
- function sleep(ms: number) {
50
- return new Promise((resolve) => {
51
- setTimeout(resolve, ms);
52
- });
53
- }
54
- */
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2hlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saXN0ZW5lci9tYXRjaGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFvREUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuLy8gaW1wb3J0IHsgU2VydmVybGVzc1NweUxpc3RlbmVyIH0gZnJvbSBcIi4vU2VydmVybGVzc1NweUxpc3RlbmVyXCI7XG5cbnR5cGUgQ3VzdG9tTWF0Y2hlclJlc3VsdCA9IHtcbiAgbWVzc2FnZTogKCkgPT4gc3RyaW5nO1xuICBwYXNzOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvUmVjZWl2ZUV2ZW50ID0gYXN5bmMgKFxuICBzcHk6IGFueSxcbiAgc2VydmljZUtleTogc3RyaW5nLFxuICBjb25kaXRpb24/OiAoZGF0YTogYW55KSA9PiBib29sZWFuXG4pOiBQcm9taXNlPEN1c3RvbU1hdGNoZXJSZXN1bHQ+ID0+IHtcbiAgY29uc29sZS5sb2coJ05PVFJJJyk7XG5cbiAgYXdhaXQgc2xlZXAoMzAwMCk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTUFlcIiwgc3B5KTtcbiAgLy8gY29uc3QgZXZlbnRzID0gYXdhaXQgc3B5LmF3YWl0RXZlbnRzKChldmVudHMpID0+IHtcbiAgLy8gICByZXR1cm4gZXZlbnRzLnNvbWUoKGV2ZW50KSA9PiBldmVudFtcImRldGFpbC10eXBlXCJdID09PSBleHBlY3RlZCk7XG4gIC8vIH0pO1xuXG4gIC8vIGNvbnN0IHBhc3MgPSBldmVudHMuc29tZSgoZXZlbnQpID0+IGV2ZW50W1wiZGV0YWlsLXR5cGVcIl0gPT09IGV4cGVjdGVkKTtcblxuICAvLyBjb25zdCBtZXNzYWdlID0gcGFzc1xuICAvLyAgID8gKCkgPT4ge1xuICAvLyAgICAgICByZXR1cm4gKFxuICAvLyAgICAgICAgIG1hdGNoZXJIaW50KFwidG9IYXZlRXZlbnRXaXRoRGV0YWlsVHlwZVwiLCBcImV2ZW50c1NweVwiLCBcImRldGFpbC10eXBlXCIpICtcbiAgLy8gICAgICAgICBcIlxcblxcblwiICtcbiAgLy8gICAgICAgICBgRXhwZWN0ZWQ6IG5vdCAke3ByaW50RXhwZWN0ZWQoZXhwZWN0ZWQpfVxcbmAgK1xuICAvLyAgICAgICAgIGBOdW1iZXIgb2YgZXZlbnRzOiAke3ByaW50UmVjZWl2ZWQoZXZlbnRzLmxlbmd0aCl9YFxuICAvLyAgICAgICApO1xuICAvLyAgICAgfVxuICAvLyAgIDogKCkgPT4ge1xuICAvLyAgICAgICByZXR1cm4gKFxuICAvLyAgICAgICAgIG1hdGNoZXJIaW50KFwidG9IYXZlRXZlbnRXaXRoRGV0YWlsVHlwZVwiLCBcImV2ZW50c1NweVwiLCBcImRldGFpbC10eXBlXCIpICtcbiAgLy8gICAgICAgICBcIlxcblxcblwiICtcbiAgLy8gICAgICAgICBgRXhwZWN0ZWQ6ICR7cHJpbnRFeHBlY3RlZChleHBlY3RlZCl9XFxuYCArXG4gIC8vICAgICAgICAgKGV2ZW50cy5sZW5ndGggPiAwXG4gIC8vICAgICAgICAgICA/IGBSZWNlaXZlZDogJHtwcmludFJlY2VpdmVkKGV2ZW50c1swXT8uW1wiZGV0YWlsLXR5cGVcIl0pfWBcbiAgLy8gICAgICAgICAgIDogYE51bWJlciBvZiBldmVudHM6ICR7cHJpbnRSZWNlaXZlZChldmVudHMubGVuZ3RoKX1gKVxuICAvLyAgICAgICApO1xuICAvLyAgICAgfTtcblxuICByZXR1cm4geyBtZXNzYWdlOiAoKSA9PiAnT0snLCBwYXNzOiB0cnVlIH07XG59O1xuXG5mdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpO1xuICB9KTtcbn1cbiovXG4iXX0=
File without changes
@@ -1,21 +0,0 @@
1
- "use strict";
2
- // import * as matchers from './matchers';
3
- // if (expect !== undefined) {
4
- // expect.extend(matchers);
5
- // } else {
6
- // /* eslint-disable no-console */
7
- // console.error(
8
- // "Unable to find Jest's global expect." +
9
- // '\nPlease check you have added jest-extended correctly to your jest configuration.' +
10
- // '\nSee https://github.com/jest-community/jest-extended#setup for help.'
11
- // );
12
- // /* eslint-enable no-console */
13
- // }
14
- // declare global {
15
- // namespace jest {
16
- // interface Matchers<R> {
17
- // toReceiveEvent(serviceKey: string, condition?: (data: any) => boolean): R;
18
- // }
19
- // }
20
- // }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saXN0ZW5lci9zZXR1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMENBQTBDO0FBRTFDLDhCQUE4QjtBQUM5Qiw2QkFBNkI7QUFDN0IsV0FBVztBQUNYLG9DQUFvQztBQUNwQyxtQkFBbUI7QUFDbkIsK0NBQStDO0FBQy9DLDhGQUE4RjtBQUM5RixnRkFBZ0Y7QUFDaEYsT0FBTztBQUNQLG1DQUFtQztBQUNuQyxJQUFJO0FBRUosbUJBQW1CO0FBQ25CLHFCQUFxQjtBQUNyQiw4QkFBOEI7QUFDOUIsbUZBQW1GO0FBQ25GLFFBQVE7QUFDUixNQUFNO0FBQ04sSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCAqIGFzIG1hdGNoZXJzIGZyb20gJy4vbWF0Y2hlcnMnO1xuXG4vLyBpZiAoZXhwZWN0ICE9PSB1bmRlZmluZWQpIHtcbi8vICAgZXhwZWN0LmV4dGVuZChtYXRjaGVycyk7XG4vLyB9IGVsc2Uge1xuLy8gICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vLyAgIGNvbnNvbGUuZXJyb3IoXG4vLyAgICAgXCJVbmFibGUgdG8gZmluZCBKZXN0J3MgZ2xvYmFsIGV4cGVjdC5cIiArXG4vLyAgICAgICAnXFxuUGxlYXNlIGNoZWNrIHlvdSBoYXZlIGFkZGVkIGplc3QtZXh0ZW5kZWQgY29ycmVjdGx5IHRvIHlvdXIgamVzdCBjb25maWd1cmF0aW9uLicgK1xuLy8gICAgICAgJ1xcblNlZSBodHRwczovL2dpdGh1Yi5jb20vamVzdC1jb21tdW5pdHkvamVzdC1leHRlbmRlZCNzZXR1cCBmb3IgaGVscC4nXG4vLyAgICk7XG4vLyAgIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuLy8gfVxuXG4vLyBkZWNsYXJlIGdsb2JhbCB7XG4vLyAgIG5hbWVzcGFjZSBqZXN0IHtcbi8vICAgICBpbnRlcmZhY2UgTWF0Y2hlcnM8Uj4ge1xuLy8gICAgICAgdG9SZWNlaXZlRXZlbnQoc2VydmljZUtleTogc3RyaW5nLCBjb25kaXRpb24/OiAoZGF0YTogYW55KSA9PiBib29sZWFuKTogUjtcbi8vICAgICB9XG4vLyAgIH1cbi8vIH1cbiJdfQ==
@@ -1,27 +0,0 @@
1
- import { Construct, IConstruct } from 'constructs';
2
- export declare class ServerlessSpy extends Construct {
3
- private extensionLayer;
4
- private table;
5
- private webSocketApi;
6
- private ownContructs;
7
- private functionSubscriptionPool;
8
- private functionSubscriptionMain;
9
- private webSocketStage;
10
- wsUrl: string;
11
- constructor(scope: Construct, id: string);
12
- private iterateAllElements;
13
- private interceptSqs;
14
- private createFunctionForSubscription;
15
- private interceptS3;
16
- private interceptDynamodb;
17
- private interceptEventBusRule;
18
- private interceptEventBus;
19
- private interceptSnsTopic;
20
- private interceptSnsSubscription;
21
- private provideFunctionForSubscription;
22
- private interceptFunction;
23
- getConstructName(construct: IConstruct): string;
24
- private getTopic;
25
- private getEventBridge;
26
- private findElement;
27
- }