@pact-foundation/pact 10.0.0-beta.9 → 10.0.2

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 (285) hide show
  1. package/CHANGELOG.md +2456 -1
  2. package/CODE_OF_CONDUCT.md +1 -1
  3. package/CONTRIBUTING.md +49 -12
  4. package/MIGRATION.md +77 -0
  5. package/README.md +179 -1273
  6. package/RELEASING.md +63 -59
  7. package/package.json +96 -98
  8. package/src/common/jsonTypes.d.ts +5 -0
  9. package/src/common/jsonTypes.js +3 -0
  10. package/src/common/jsonTypes.js.map +1 -0
  11. package/src/common/logger.d.ts +10 -0
  12. package/src/common/logger.js +32 -0
  13. package/src/common/logger.js.map +1 -0
  14. package/src/common/net.d.ts +9 -0
  15. package/src/common/net.js +82 -0
  16. package/src/common/net.js.map +1 -0
  17. package/{common → src/common}/net.spec.d.ts +0 -0
  18. package/src/common/net.spec.js +69 -0
  19. package/src/common/net.spec.js.map +1 -0
  20. package/src/common/request.d.ts +21 -0
  21. package/src/common/request.js +110 -0
  22. package/src/common/request.js.map +1 -0
  23. package/{common → src/common}/request.spec.d.ts +0 -0
  24. package/src/common/request.spec.js +69 -0
  25. package/src/common/request.spec.js.map +1 -0
  26. package/src/common/spec.d.ts +2 -0
  27. package/src/common/spec.js +22 -0
  28. package/src/common/spec.js.map +1 -0
  29. package/{dsl → src/dsl}/apolloGraphql.d.ts +1 -1
  30. package/{dsl → src/dsl}/apolloGraphql.js +4 -1
  31. package/src/dsl/apolloGraphql.js.map +1 -0
  32. package/{dsl → src/dsl}/apolloGraphql.spec.d.ts +0 -0
  33. package/src/dsl/apolloGraphql.spec.js +74 -0
  34. package/src/dsl/apolloGraphql.spec.js.map +1 -0
  35. package/{dsl → src/dsl}/graphql.d.ts +19 -8
  36. package/{dsl → src/dsl}/graphql.js +59 -31
  37. package/src/dsl/graphql.js.map +1 -0
  38. package/{dsl → src/dsl}/graphql.spec.d.ts +0 -0
  39. package/src/dsl/graphql.spec.js +229 -0
  40. package/src/dsl/graphql.spec.js.map +1 -0
  41. package/{dsl → src/dsl}/interaction.d.ts +22 -20
  42. package/src/dsl/interaction.js +144 -0
  43. package/src/dsl/interaction.js.map +1 -0
  44. package/{dsl → src/dsl}/interaction.spec.d.ts +0 -0
  45. package/src/dsl/interaction.spec.js +214 -0
  46. package/src/dsl/interaction.spec.js.map +1 -0
  47. package/src/dsl/matchers.d.ts +143 -0
  48. package/{dsl → src/dsl}/matchers.js +92 -93
  49. package/src/dsl/matchers.js.map +1 -0
  50. package/{dsl → src/dsl}/matchers.spec.d.ts +0 -0
  51. package/src/dsl/matchers.spec.js +668 -0
  52. package/src/dsl/matchers.spec.js.map +1 -0
  53. package/{dsl → src/dsl}/message.d.ts +32 -12
  54. package/{dsl → src/dsl}/message.js +0 -0
  55. package/{dsl → src/dsl}/message.js.map +1 -1
  56. package/src/dsl/mockService.d.ts +13 -0
  57. package/src/dsl/mockService.js +3 -0
  58. package/src/dsl/mockService.js.map +1 -0
  59. package/{dsl → src/dsl}/options.d.ts +7 -6
  60. package/{dsl → src/dsl}/options.js +0 -0
  61. package/{dsl → src/dsl}/options.js.map +1 -1
  62. package/src/dsl/verifier/index.d.ts +1 -0
  63. package/src/dsl/verifier/index.js +18 -0
  64. package/src/dsl/verifier/index.js.map +1 -0
  65. package/src/dsl/verifier/proxy/hooks.d.ts +4 -0
  66. package/src/dsl/verifier/proxy/hooks.js +109 -0
  67. package/src/dsl/verifier/proxy/hooks.js.map +1 -0
  68. package/src/dsl/verifier/proxy/index.d.ts +1 -0
  69. package/src/dsl/verifier/proxy/index.js +18 -0
  70. package/src/dsl/verifier/proxy/index.js.map +1 -0
  71. package/src/dsl/verifier/proxy/parseBody.d.ts +7 -0
  72. package/src/dsl/verifier/proxy/parseBody.js +22 -0
  73. package/src/dsl/verifier/proxy/parseBody.js.map +1 -0
  74. package/{dsl/mockService.spec.d.ts → src/dsl/verifier/proxy/parseBody.spec.d.ts} +0 -0
  75. package/src/dsl/verifier/proxy/parseBody.spec.js +118 -0
  76. package/src/dsl/verifier/proxy/parseBody.spec.js.map +1 -0
  77. package/src/dsl/verifier/proxy/proxy.d.ts +4 -0
  78. package/src/dsl/verifier/proxy/proxy.js +92 -0
  79. package/src/dsl/verifier/proxy/proxy.js.map +1 -0
  80. package/{dsl/publisher.spec.d.ts → src/dsl/verifier/proxy/proxy.spec.d.ts} +0 -0
  81. package/src/dsl/verifier/proxy/proxy.spec.js +33 -0
  82. package/src/dsl/verifier/proxy/proxy.spec.js.map +1 -0
  83. package/src/dsl/verifier/proxy/stateHandler/index.d.ts +1 -0
  84. package/src/dsl/verifier/proxy/stateHandler/index.js +18 -0
  85. package/src/dsl/verifier/proxy/stateHandler/index.js.map +1 -0
  86. package/src/dsl/verifier/proxy/stateHandler/setupStates.d.ts +3 -0
  87. package/src/dsl/verifier/proxy/stateHandler/setupStates.js +48 -0
  88. package/src/dsl/verifier/proxy/stateHandler/setupStates.js.map +1 -0
  89. package/{dsl/verifier.spec.d.ts → src/dsl/verifier/proxy/stateHandler/setupStates.spec.d.ts} +0 -0
  90. package/src/dsl/verifier/proxy/stateHandler/setupStates.spec.js +191 -0
  91. package/src/dsl/verifier/proxy/stateHandler/setupStates.spec.js.map +1 -0
  92. package/src/dsl/verifier/proxy/stateHandler/stateHandler.d.ts +3 -0
  93. package/src/dsl/verifier/proxy/stateHandler/stateHandler.js +14 -0
  94. package/src/dsl/verifier/proxy/stateHandler/stateHandler.js.map +1 -0
  95. package/{httpPact.spec.d.ts → src/dsl/verifier/proxy/stateHandler/stateHandler.spec.d.ts} +0 -0
  96. package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js +130 -0
  97. package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js.map +1 -0
  98. package/src/dsl/verifier/proxy/tracer.d.ts +3 -0
  99. package/src/dsl/verifier/proxy/tracer.js +52 -0
  100. package/src/dsl/verifier/proxy/tracer.js.map +1 -0
  101. package/src/dsl/verifier/proxy/types.d.ts +48 -0
  102. package/src/dsl/verifier/proxy/types.js +3 -0
  103. package/src/dsl/verifier/proxy/types.js.map +1 -0
  104. package/src/dsl/verifier/types.d.ts +3 -0
  105. package/src/dsl/verifier/types.js +3 -0
  106. package/src/dsl/verifier/types.js.map +1 -0
  107. package/src/dsl/verifier/verifier.d.ts +16 -0
  108. package/src/dsl/verifier/verifier.js +129 -0
  109. package/src/dsl/verifier/verifier.js.map +1 -0
  110. package/{messageConsumerPact.spec.d.ts → src/dsl/verifier/verifier.spec.d.ts} +0 -0
  111. package/src/dsl/verifier/verifier.spec.js +172 -0
  112. package/src/dsl/verifier/verifier.spec.js.map +1 -0
  113. package/{errors → src/errors}/configurationError.d.ts +0 -0
  114. package/{errors → src/errors}/configurationError.js +3 -1
  115. package/src/errors/configurationError.js.map +1 -0
  116. package/{errors → src/errors}/graphQLQueryError.d.ts +0 -0
  117. package/{errors → src/errors}/graphQLQueryError.js +3 -1
  118. package/src/errors/graphQLQueryError.js.map +1 -0
  119. package/{errors → src/errors}/matcherError.d.ts +0 -0
  120. package/{errors → src/errors}/matcherError.js +3 -1
  121. package/src/errors/matcherError.js.map +1 -0
  122. package/{errors → src/errors}/verificationError.d.ts +0 -0
  123. package/{errors → src/errors}/verificationError.js +3 -1
  124. package/src/errors/verificationError.js.map +1 -0
  125. package/src/httpPact/ffi.d.ts +15 -0
  126. package/src/httpPact/ffi.js +91 -0
  127. package/src/httpPact/ffi.js.map +1 -0
  128. package/{messageProviderPact.spec.d.ts → src/httpPact/ffi.spec.d.ts} +0 -0
  129. package/src/httpPact/ffi.spec.js +81 -0
  130. package/src/httpPact/ffi.spec.js.map +1 -0
  131. package/{httpPact.d.ts → src/httpPact/index.d.ts} +12 -12
  132. package/src/httpPact/index.js +311 -0
  133. package/src/httpPact/index.js.map +1 -0
  134. package/{pact-web.spec.d.ts → src/httpPact/index.spec.d.ts} +0 -0
  135. package/src/httpPact/index.spec.js +238 -0
  136. package/src/httpPact/index.spec.js.map +1 -0
  137. package/src/httpPact/tracing.d.ts +1 -0
  138. package/src/httpPact/tracing.js +53 -0
  139. package/src/httpPact/tracing.js.map +1 -0
  140. package/{pact.d.ts → src/index.d.ts} +22 -21
  141. package/src/index.js +107 -0
  142. package/src/index.js.map +1 -0
  143. package/src/messageConsumerPact.d.ts +86 -0
  144. package/src/messageConsumerPact.js +222 -0
  145. package/src/messageConsumerPact.js.map +1 -0
  146. package/src/messageConsumerPact.spec.d.ts +1 -0
  147. package/src/messageConsumerPact.spec.js +117 -0
  148. package/src/messageConsumerPact.spec.js.map +1 -0
  149. package/{messageProviderPact.d.ts → src/messageProviderPact.d.ts} +7 -4
  150. package/src/messageProviderPact.js +190 -0
  151. package/src/messageProviderPact.js.map +1 -0
  152. package/src/messageProviderPact.spec.d.ts +1 -0
  153. package/src/messageProviderPact.spec.js +183 -0
  154. package/src/messageProviderPact.spec.js.map +1 -0
  155. package/{pact.integration.spec.d.ts → src/pact.integration.spec.d.ts} +0 -0
  156. package/{pact.integration.spec.js → src/pact.integration.spec.js} +0 -0
  157. package/src/pact.integration.spec.js.map +1 -0
  158. package/src/v3/display.d.ts +6 -0
  159. package/src/v3/display.js +83 -0
  160. package/src/v3/display.js.map +1 -0
  161. package/src/v3/index.d.ts +17 -0
  162. package/src/v3/index.js +47 -0
  163. package/src/v3/index.js.map +1 -0
  164. package/src/v3/matchers.d.ts +182 -0
  165. package/src/v3/matchers.js +443 -0
  166. package/src/v3/matchers.js.map +1 -0
  167. package/src/v3/matchers.spec.d.ts +1 -0
  168. package/src/v3/matchers.spec.js +461 -0
  169. package/src/v3/matchers.spec.js.map +1 -0
  170. package/src/v3/pact.d.ts +21 -0
  171. package/src/v3/pact.js +236 -0
  172. package/src/v3/pact.js.map +1 -0
  173. package/src/v3/types.d.ts +81 -0
  174. package/src/v3/types.js +11 -0
  175. package/src/v3/types.js.map +1 -0
  176. package/{v3 → src/v3}/xml/xmlBuilder.d.ts +2 -2
  177. package/{v3 → src/v3}/xml/xmlBuilder.js +2 -1
  178. package/src/v3/xml/xmlBuilder.js.map +1 -0
  179. package/src/v3/xml/xmlElement.d.ts +27 -0
  180. package/{v3 → src/v3}/xml/xmlElement.js +21 -15
  181. package/src/v3/xml/xmlElement.js.map +1 -0
  182. package/src/v3/xml/xmlElement.spec.d.ts +1 -0
  183. package/src/v3/xml/xmlElement.spec.js +102 -0
  184. package/src/v3/xml/xmlElement.spec.js.map +1 -0
  185. package/{v3 → src/v3}/xml/xmlNode.d.ts +0 -0
  186. package/{v3 → src/v3}/xml/xmlNode.js +1 -0
  187. package/src/v3/xml/xmlNode.js.map +1 -0
  188. package/src/v3/xml/xmlText.d.ts +7 -0
  189. package/{v3 → src/v3}/xml/xmlText.js +4 -1
  190. package/src/v3/xml/xmlText.js.map +1 -0
  191. package/test/helper.d.ts +1 -0
  192. package/test/helper.js +37 -0
  193. package/test/helper.js.map +1 -0
  194. package/ROADMAP.md +0 -20
  195. package/common/logger.d.ts +0 -7
  196. package/common/logger.js +0 -56
  197. package/common/logger.js.map +0 -1
  198. package/common/metadata.d.ts +0 -0
  199. package/common/metadata.js +0 -2
  200. package/common/metadata.js.map +0 -1
  201. package/common/net.d.ts +0 -9
  202. package/common/net.js +0 -48
  203. package/common/net.js.map +0 -1
  204. package/common/net.spec.js +0 -67
  205. package/common/net.spec.js.map +0 -1
  206. package/common/request.d.ts +0 -14
  207. package/common/request.js +0 -47
  208. package/common/request.js.map +0 -1
  209. package/common/request.spec.js +0 -71
  210. package/common/request.spec.js.map +0 -1
  211. package/common/utils.d.ts +0 -2
  212. package/common/utils.js +0 -10
  213. package/common/utils.js.map +0 -1
  214. package/dsl/apolloGraphql.js.map +0 -1
  215. package/dsl/apolloGraphql.spec.js +0 -47
  216. package/dsl/apolloGraphql.spec.js.map +0 -1
  217. package/dsl/graphql.js.map +0 -1
  218. package/dsl/graphql.spec.js +0 -150
  219. package/dsl/graphql.spec.js.map +0 -1
  220. package/dsl/interaction.js +0 -112
  221. package/dsl/interaction.js.map +0 -1
  222. package/dsl/interaction.spec.js +0 -217
  223. package/dsl/interaction.spec.js.map +0 -1
  224. package/dsl/matchers.d.ts +0 -269
  225. package/dsl/matchers.js.map +0 -1
  226. package/dsl/matchers.spec.js +0 -563
  227. package/dsl/matchers.spec.js.map +0 -1
  228. package/dsl/mockService.d.ts +0 -58
  229. package/dsl/mockService.js +0 -74
  230. package/dsl/mockService.js.map +0 -1
  231. package/dsl/mockService.spec.js +0 -126
  232. package/dsl/mockService.spec.js.map +0 -1
  233. package/dsl/publisher.d.ts +0 -6
  234. package/dsl/publisher.js +0 -19
  235. package/dsl/publisher.js.map +0 -1
  236. package/dsl/publisher.spec.js +0 -21
  237. package/dsl/publisher.spec.js.map +0 -1
  238. package/dsl/verifier.d.ts +0 -39
  239. package/dsl/verifier.js +0 -173
  240. package/dsl/verifier.js.map +0 -1
  241. package/dsl/verifier.spec.js +0 -299
  242. package/dsl/verifier.spec.js.map +0 -1
  243. package/errors/configurationError.js.map +0 -1
  244. package/errors/graphQLQueryError.js.map +0 -1
  245. package/errors/matcherError.js.map +0 -1
  246. package/errors/verificationError.js.map +0 -1
  247. package/httpPact.js +0 -206
  248. package/httpPact.js.map +0 -1
  249. package/httpPact.spec.js +0 -337
  250. package/httpPact.spec.js.map +0 -1
  251. package/messageConsumerPact.d.ts +0 -67
  252. package/messageConsumerPact.js +0 -161
  253. package/messageConsumerPact.js.map +0 -1
  254. package/messageConsumerPact.spec.js +0 -161
  255. package/messageConsumerPact.spec.js.map +0 -1
  256. package/messageProviderPact.js +0 -139
  257. package/messageProviderPact.js.map +0 -1
  258. package/messageProviderPact.spec.js +0 -143
  259. package/messageProviderPact.spec.js.map +0 -1
  260. package/pact-web.d.ts +0 -100
  261. package/pact-web.js +0 -151
  262. package/pact-web.js.map +0 -1
  263. package/pact-web.spec.js +0 -191
  264. package/pact-web.spec.js.map +0 -1
  265. package/pact.integration.spec.js.map +0 -1
  266. package/pact.js +0 -74
  267. package/pact.js.map +0 -1
  268. package/v3/index.d.ts +0 -23
  269. package/v3/index.js +0 -33
  270. package/v3/index.js.map +0 -1
  271. package/v3/matchers.d.ts +0 -199
  272. package/v3/matchers.js +0 -305
  273. package/v3/matchers.js.map +0 -1
  274. package/v3/pact.d.ts +0 -47
  275. package/v3/pact.js +0 -101
  276. package/v3/pact.js.map +0 -1
  277. package/v3/verifier.d.ts +0 -27
  278. package/v3/verifier.js +0 -46
  279. package/v3/verifier.js.map +0 -1
  280. package/v3/xml/xmlBuilder.js.map +0 -1
  281. package/v3/xml/xmlElement.d.ts +0 -34
  282. package/v3/xml/xmlElement.js.map +0 -1
  283. package/v3/xml/xmlNode.js.map +0 -1
  284. package/v3/xml/xmlText.d.ts +0 -6
  285. package/v3/xml/xmlText.js.map +0 -1
@@ -1,150 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var chai = require("chai");
4
- var chaiAsPromised = require("chai-as-promised");
5
- var graphql_1 = require("./graphql");
6
- var matchers_1 = require("./matchers");
7
- chai.use(chaiAsPromised);
8
- var expect = chai.expect;
9
- describe("GraphQLInteraction", function () {
10
- var interaction;
11
- beforeEach(function () {
12
- interaction = new graphql_1.GraphQLInteraction();
13
- });
14
- describe("#withOperation", function () {
15
- describe("when given a valid operation", function () {
16
- it("creates a GraphQL Interaction", function () {
17
- interaction.uponReceiving("a request");
18
- interaction.withOperation("query");
19
- interaction.withQuery("{ hello }");
20
- var json = interaction.json();
21
- expect(json.request.body.operationName).to.eq("query");
22
- });
23
- });
24
- describe("when given an invalid operation", function () {
25
- it("fails with an error", function () {
26
- expect(interaction.withOperation.bind("aoeu")).to.throw(Error);
27
- });
28
- });
29
- describe("when given a null operation", function () {
30
- it("creates a GrphQL Interaction", function () {
31
- interaction.uponReceiving("a request");
32
- interaction.withOperation(null);
33
- interaction.withQuery("{ hello }");
34
- var json = interaction.json();
35
- expect(json.request.body.operationName).to.eq(null);
36
- });
37
- });
38
- });
39
- describe("#withVariables", function () {
40
- describe("when given a set of variables", function () {
41
- it("adds the variables to the payload", function () {
42
- interaction.uponReceiving("a request");
43
- interaction.withOperation("query");
44
- interaction.withQuery("{ hello }");
45
- interaction.withVariables({
46
- foo: "bar",
47
- });
48
- var json = interaction.json();
49
- expect(json.request.body.variables).to.deep.eq({ foo: "bar" });
50
- });
51
- });
52
- describe("when no variables are provided", function () {
53
- it("does not add the variables property to the payload", function () {
54
- interaction.uponReceiving("a request");
55
- interaction.withOperation("query");
56
- interaction.withQuery("{ hello }");
57
- var json = interaction.json();
58
- expect(json.request.body).to.not.have.property("variables");
59
- });
60
- });
61
- describe("when an empty variables object is presented", function () {
62
- it("adds the variables property to the payload", function () {
63
- interaction.uponReceiving("a request");
64
- interaction.withOperation("query");
65
- interaction.withQuery("{ hello }");
66
- interaction.withVariables({});
67
- var json = interaction.json();
68
- expect(json.request.body).to.have.property("variables");
69
- });
70
- });
71
- });
72
- describe("#withQuery", function () {
73
- beforeEach(function () {
74
- interaction.uponReceiving("a request");
75
- interaction.withOperation("query");
76
- interaction.withQuery("{ hello }");
77
- interaction.withVariables({
78
- foo: "bar",
79
- });
80
- });
81
- describe("when given an empty query", function () {
82
- it("fails with an error", function () {
83
- expect(function () { return interaction.withQuery(null); }).to.throw();
84
- });
85
- });
86
- describe("when given an invalid query", function () {
87
- it("fails with an error", function () {
88
- expect(function () {
89
- return interaction.withQuery("{ not properly terminated");
90
- }).to.throw(Error);
91
- });
92
- });
93
- describe("when given a valid query", function () {
94
- describe("without variables", function () {
95
- it("adds regular expressions for the whitespace in the query", function () {
96
- var json = interaction.json();
97
- expect(matchers_1.isMatcher(json.request.body.query)).to.eq(true);
98
- var r = new RegExp(json.request.body.query.data.matcher.s, "g");
99
- var lotsOfWhitespace = "{ hello\n\n }";
100
- expect(r.test(lotsOfWhitespace)).to.eq(true);
101
- });
102
- });
103
- describe("and variables", function () {
104
- it("adds regular expressions for the whitespace in the query", function () {
105
- interaction.withQuery("{\n Hello(id: $id) {\n name\n }\n }");
106
- interaction.withVariables({
107
- name: "bar",
108
- });
109
- var json = interaction.json();
110
- expect(matchers_1.isMatcher(json.request.body.query)).to.eq(true);
111
- var r = new RegExp(json.request.body.query.data.matcher.s, "g");
112
- var lotsOfWhitespace = "{ Hello(id: $id) { name } }";
113
- expect(r.test(lotsOfWhitespace)).to.eq(true);
114
- });
115
- });
116
- });
117
- });
118
- describe("#json", function () {
119
- context("when query is empty", function () {
120
- it("fails with an error", function () {
121
- expect(function () { return interaction.json(); }).to.throw();
122
- });
123
- });
124
- context("when description is empty", function () {
125
- it("fails with an error", function () {
126
- interaction.withQuery("{ hello }");
127
- return expect(function () { return interaction.json(); }).to.throw();
128
- });
129
- });
130
- describe("when no operation is provided", function () {
131
- it("does not be present in unmarshaled body", function () {
132
- interaction.uponReceiving("a request");
133
- interaction.withQuery("{ hello }");
134
- var json = interaction.json();
135
- expect(json.request.body).to.not.have.property("operationName");
136
- });
137
- });
138
- });
139
- context("when given a valid query", function () {
140
- it("marshals the query to JSON", function () {
141
- interaction.uponReceiving("a request");
142
- interaction.withOperation("query");
143
- interaction.withQuery("{ hello }");
144
- var json = interaction.json();
145
- expect(matchers_1.isMatcher(json.request.body.query)).to.eq(true);
146
- expect(json.request.body.query.getValue()).to.eq("{ hello }");
147
- });
148
- });
149
- });
150
- //# sourceMappingURL=graphql.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graphql.spec.js","sourceRoot":"","sources":["../../src/dsl/graphql.spec.ts"],"names":[],"mappings":"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"}
@@ -1,112 +0,0 @@
1
- "use strict";
2
- /**
3
- * An Interaction is where you define the state of your interaction with a Provider.
4
- * @module Interaction
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- var lodash_1 = require("lodash");
8
- var request_1 = require("../common/request");
9
- var matchers_1 = require("./matchers");
10
- var configurationError_1 = require("../errors/configurationError");
11
- var Interaction = /** @class */ (function () {
12
- function Interaction() {
13
- this.state = {};
14
- }
15
- /**
16
- * Gives a state the provider should be in for this interaction.
17
- * @param {string} providerState - The state of the provider.
18
- * @returns {Interaction} interaction
19
- */
20
- Interaction.prototype.given = function (providerState) {
21
- if (providerState) {
22
- this.state.providerState = providerState;
23
- }
24
- return this;
25
- };
26
- /**
27
- * A free style description of the interaction.
28
- * @param {string} description - A description of the interaction.
29
- * @returns {Interaction} interaction
30
- */
31
- Interaction.prototype.uponReceiving = function (description) {
32
- if (lodash_1.isNil(description)) {
33
- throw new configurationError_1.default("You must provide a description for the interaction.");
34
- }
35
- this.state.description = description;
36
- return this;
37
- };
38
- /**
39
- * The request that represents this interaction triggered by the consumer.
40
- * @param {Object} requestOpts
41
- * @param {string} requestOpts.method - The HTTP method
42
- * @param {string} requestOpts.path - The path of the URL
43
- * @param {string} requestOpts.query - Any query string in the interaction
44
- * @param {Object} requestOpts.headers - A key-value pair oject of headers
45
- * @param {Object} requestOpts.body - The body, in {@link String} format or {@link Object} format
46
- * @returns {Interaction} interaction
47
- */
48
- Interaction.prototype.withRequest = function (requestOpts) {
49
- if (lodash_1.isNil(requestOpts.method)) {
50
- throw new configurationError_1.default("You must provide an HTTP method.");
51
- }
52
- if (lodash_1.keys(request_1.HTTPMethod).indexOf(requestOpts.method.toString()) < 0) {
53
- throw new configurationError_1.default("You must provide a valid HTTP method: " + lodash_1.keys(request_1.HTTPMethod).join(", ") + ".");
54
- }
55
- if (lodash_1.isNil(requestOpts.path)) {
56
- throw new configurationError_1.default("You must provide a path.");
57
- }
58
- if (typeof requestOpts.query === "object") {
59
- this.queryObjectIsValid(requestOpts.query);
60
- }
61
- this.state.request = lodash_1.omitBy(requestOpts, lodash_1.isNil);
62
- return this;
63
- };
64
- /**
65
- * The response expected by the consumer.
66
- * @param {Object} responseOpts
67
- * @param {string} responseOpts.status - The HTTP status
68
- * @param {string} responseOpts.headers
69
- * @param {Object} responseOpts.body
70
- */
71
- Interaction.prototype.willRespondWith = function (responseOpts) {
72
- if (lodash_1.isNil(responseOpts.status) ||
73
- responseOpts.status.toString().trim().length === 0) {
74
- throw new configurationError_1.default("You must provide a status code.");
75
- }
76
- this.state.response = lodash_1.omitBy({
77
- body: responseOpts.body,
78
- headers: responseOpts.headers || undefined,
79
- status: responseOpts.status,
80
- }, lodash_1.isNil);
81
- return this;
82
- };
83
- /**
84
- * Returns the interaction object created.
85
- * @returns {Object}
86
- */
87
- Interaction.prototype.json = function () {
88
- if (lodash_1.isNil(this.state.description)) {
89
- throw new configurationError_1.default("You must provide a description for the Interaction");
90
- }
91
- return this.state;
92
- };
93
- /**
94
- * Returns valid if object or matcher only contains string values
95
- * @param query
96
- */
97
- Interaction.prototype.queryObjectIsValid = function (query) {
98
- Object.values(query).every(function (value) {
99
- if (matchers_1.isMatcher(value) ||
100
- Array.isArray(value) ||
101
- typeof value === "string") {
102
- return;
103
- }
104
- else {
105
- throw new configurationError_1.default("Query must only contain strings.");
106
- }
107
- });
108
- };
109
- return Interaction;
110
- }());
111
- exports.Interaction = Interaction;
112
- //# sourceMappingURL=interaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/dsl/interaction.ts"],"names":[],"mappings":"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"}
@@ -1,217 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var chai = require("chai");
4
- var chaiAsPromised = require("chai-as-promised");
5
- var request_1 = require("../common/request");
6
- var interaction_1 = require("./interaction");
7
- var matchers_1 = require("./matchers");
8
- chai.use(chaiAsPromised);
9
- var expect = chai.expect;
10
- describe("Interaction", function () {
11
- describe("#given", function () {
12
- it("creates Interaction with provider state", function () {
13
- var actual = new interaction_1.Interaction()
14
- .uponReceiving("r")
15
- .given("provider state")
16
- .json();
17
- expect(actual).to.eql({
18
- description: "r",
19
- providerState: "provider state",
20
- });
21
- });
22
- describe("without provider state", function () {
23
- it("creates Interaction when blank", function () {
24
- var actual = new interaction_1.Interaction()
25
- .uponReceiving("r")
26
- .given("")
27
- .json();
28
- expect(actual).to.eql({ description: "r" });
29
- });
30
- it("creates Interaction when nothing is passed", function () {
31
- var actual = new interaction_1.Interaction().uponReceiving("r").json();
32
- expect(actual).to.eql({ description: "r" });
33
- });
34
- });
35
- });
36
- describe("#uponReceiving", function () {
37
- var interaction = new interaction_1.Interaction();
38
- it("throws error when no description provided", function () {
39
- expect(interaction.uponReceiving).to.throw(Error, "You must provide a description for the interaction.");
40
- });
41
- it("has a state with description", function () {
42
- interaction.uponReceiving("an interaction description");
43
- expect(interaction.json()).to.eql({
44
- description: "an interaction description",
45
- });
46
- });
47
- });
48
- describe("#withRequest", function () {
49
- var interaction = new interaction_1.Interaction();
50
- it("throws error when method is not provided", function () {
51
- expect(interaction.withRequest.bind(interaction, {})).to.throw(Error, "You must provide an HTTP method.");
52
- });
53
- it("throws error when an invalid method is provided", function () {
54
- expect(interaction.withRequest.bind(interaction, { method: "FOO" })).to.throw(Error, "You must provide a valid HTTP method: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS.");
55
- });
56
- it("throws error when method is not provided", function () {
57
- expect(interaction.withRequest.bind(interaction, { path: "/" })).to.throw(Error, "You must provide an HTTP method.");
58
- });
59
- it("throws error when path is not provided", function () {
60
- expect(interaction.withRequest.bind(interaction, { method: request_1.HTTPMethod.GET })).to.throw(Error, "You must provide a path.");
61
- });
62
- it("throws error when query object is not a string", function () {
63
- expect(interaction.withRequest.bind(interaction, {
64
- method: request_1.HTTPMethod.GET,
65
- path: "/",
66
- query: { string: false, query: "false" },
67
- })).to.throw(Error, "Query must only contain strings.");
68
- });
69
- describe("with only mandatory params", function () {
70
- var actual = new interaction_1.Interaction()
71
- .uponReceiving("a request")
72
- .withRequest({ method: request_1.HTTPMethod.GET, path: "/search" })
73
- .json();
74
- it("has a state containing only the given keys", function () {
75
- expect(actual).to.have.property("request");
76
- expect(actual.request).to.have.keys("method", "path");
77
- });
78
- it("request has no other keys", function () {
79
- expect(actual.request).to.not.have.keys("query", "headers", "body");
80
- });
81
- });
82
- describe("with all other parameters", function () {
83
- var actual = new interaction_1.Interaction()
84
- .uponReceiving("request")
85
- .withRequest({
86
- body: { id: 1, name: "Test", due: "tomorrow" },
87
- headers: { "Content-Type": "application/json" },
88
- method: request_1.HTTPMethod.GET,
89
- path: "/search",
90
- query: "q=test",
91
- })
92
- .json();
93
- it("has a full state all available keys", function () {
94
- expect(actual).to.have.property("request");
95
- expect(actual.request).to.have.keys("method", "path", "query", "headers", "body");
96
- });
97
- });
98
- describe("query type", function () {
99
- var request = {
100
- body: { id: 1, name: "Test", due: "tomorrow" },
101
- headers: { "Content-Type": "application/json" },
102
- method: request_1.HTTPMethod.GET,
103
- path: "/search",
104
- query: {},
105
- };
106
- it("is passed with matcher", function () {
107
- request.query = {
108
- "id[]": matchers_1.eachLike("1"),
109
- };
110
- expect(new interaction_1.Interaction()
111
- .uponReceiving("request")
112
- .withRequest(request)
113
- .json().request).to.have.any.keys("query");
114
- });
115
- it("is passed with object", function () {
116
- request.query = {
117
- id: "1",
118
- };
119
- expect(new interaction_1.Interaction()
120
- .uponReceiving("request")
121
- .withRequest(request)
122
- .json().request).to.have.any.keys("query");
123
- });
124
- it("is passed with array", function () {
125
- var _a;
126
- request.query = {
127
- id: ["1", "2"],
128
- };
129
- expect((_a = new interaction_1.Interaction()
130
- .uponReceiving("request")
131
- .withRequest(request)
132
- .json().request) === null || _a === void 0 ? void 0 : _a.query).to.deep.eq({ id: ["1", "2"] });
133
- });
134
- });
135
- describe("request body", function () {
136
- it("is included when an empty string is specified", function () {
137
- var actual = new interaction_1.Interaction()
138
- .uponReceiving("request")
139
- .withRequest({
140
- body: "",
141
- method: request_1.HTTPMethod.GET,
142
- path: "/path",
143
- })
144
- .json();
145
- expect(actual.request).to.have.any.keys("body");
146
- });
147
- it("is not included when explicitly set to undefined", function () {
148
- var actual = new interaction_1.Interaction()
149
- .uponReceiving("request")
150
- .withRequest({
151
- body: undefined,
152
- method: request_1.HTTPMethod.GET,
153
- path: "/path",
154
- })
155
- .json();
156
- expect(actual.request).not.to.have.any.keys("body");
157
- });
158
- });
159
- });
160
- describe("#willRespondWith", function () {
161
- var interaction = new interaction_1.Interaction();
162
- it("throws error when status is not provided", function () {
163
- expect(interaction.willRespondWith.bind(interaction, {})).to.throw(Error, "You must provide a status code.");
164
- });
165
- it("throws error when status is blank", function () {
166
- expect(interaction.willRespondWith.bind(interaction, { status: "" })).to.throw(Error, "You must provide a status code.");
167
- });
168
- describe("with only mandatory params", function () {
169
- interaction = new interaction_1.Interaction();
170
- interaction.uponReceiving("request");
171
- interaction.willRespondWith({ status: 200 });
172
- var actual = interaction.json();
173
- it("has a state compacted with only present keys", function () {
174
- expect(actual).to.have.property("response");
175
- expect(actual.response).to.have.keys("status");
176
- });
177
- it("request has no other keys", function () {
178
- expect(actual.response).to.not.have.keys("headers", "body");
179
- });
180
- });
181
- describe("with all other parameters", function () {
182
- interaction = new interaction_1.Interaction();
183
- interaction.uponReceiving("request");
184
- interaction.willRespondWith({
185
- body: { id: 1, name: "Test", due: "tomorrow" },
186
- headers: { "Content-Type": "application/json" },
187
- status: 404,
188
- });
189
- var actual = interaction.json();
190
- it("has a full state all available keys", function () {
191
- expect(actual).to.have.property("response");
192
- expect(actual.response).to.have.keys("status", "headers", "body");
193
- });
194
- });
195
- describe("response body", function () {
196
- it("is included when an empty string is specified", function () {
197
- interaction = new interaction_1.Interaction();
198
- interaction.uponReceiving("request").willRespondWith({
199
- body: "",
200
- status: 204,
201
- });
202
- var actual = interaction.json();
203
- expect(actual.response).to.have.any.keys("body");
204
- });
205
- it("is not included when explicitly set to undefined", function () {
206
- interaction = new interaction_1.Interaction();
207
- interaction.uponReceiving("request").willRespondWith({
208
- body: undefined,
209
- status: 204,
210
- });
211
- var actual = interaction.json();
212
- expect(actual.response).not.to.have.any.keys("body");
213
- });
214
- });
215
- });
216
- });
217
- //# sourceMappingURL=interaction.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interaction.spec.js","sourceRoot":"","sources":["../../src/dsl/interaction.spec.ts"],"names":[],"mappings":";;AAAA,2BAA4B;AAC5B,iDAAkD;AAClD,6CAA8C;AAC9C,6CAA2C;AAC3C,uCAA2C;AAE3C,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AACxB,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;AAE1B,QAAQ,CAAC,aAAa,EAAE;IACtB,QAAQ,CAAC,QAAQ,EAAE;QACjB,EAAE,CAAC,yCAAyC,EAAE;YAC5C,IAAM,MAAM,GAAG,IAAI,yBAAW,EAAE;iBAC7B,aAAa,CAAC,GAAG,CAAC;iBAClB,KAAK,CAAC,gBAAgB,CAAC;iBACvB,IAAI,EAAE,CAAA;YACT,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;gBACpB,WAAW,EAAE,GAAG;gBAChB,aAAa,EAAE,gBAAgB;aAChC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,wBAAwB,EAAE;YACjC,EAAE,CAAC,gCAAgC,EAAE;gBACnC,IAAM,MAAM,GAAG,IAAI,yBAAW,EAAE;qBAC7B,aAAa,CAAC,GAAG,CAAC;qBAClB,KAAK,CAAC,EAAE,CAAC;qBACT,IAAI,EAAE,CAAA;gBACT,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;YAC7C,CAAC,CAAC,CAAA;YACF,EAAE,CAAC,4CAA4C,EAAE;gBAC/C,IAAM,MAAM,GAAG,IAAI,yBAAW,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;gBAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;YAC7C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,gBAAgB,EAAE;QACzB,IAAM,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAA;QAErC,EAAE,CAAC,2CAA2C,EAAE;YAC9C,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CACxC,KAAK,EACL,qDAAqD,CACtD,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8BAA8B,EAAE;YACjC,WAAW,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAA;YACvD,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;gBAChC,WAAW,EAAE,4BAA4B;aAC1C,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,cAAc,EAAE;QACvB,IAAM,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAA;QAErC,EAAE,CAAC,0CAA0C,EAAE;YAC7C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAC5D,KAAK,EACL,kCAAkC,CACnC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iDAAiD,EAAE;YACpD,MAAM,CACJ,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAC7D,CAAC,EAAE,CAAC,KAAK,CACR,KAAK,EACL,qFAAqF,CACtF,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0CAA0C,EAAE;YAC7C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACvE,KAAK,EACL,kCAAkC,CACnC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wCAAwC,EAAE;YAC3C,MAAM,CACJ,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,oBAAU,CAAC,GAAG,EAAE,CAAC,CACtE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gDAAgD,EAAE;YACnD,MAAM,CACJ,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE;gBACxC,MAAM,EAAE,oBAAU,CAAC,GAAG;gBACtB,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;aACzC,CAAC,CACH,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,4BAA4B,EAAE;YACrC,IAAM,MAAM,GAAG,IAAI,yBAAW,EAAE;iBAC7B,aAAa,CAAC,WAAW,CAAC;iBAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,oBAAU,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iBACxD,IAAI,EAAE,CAAA;YAET,EAAE,CAAC,4CAA4C,EAAE;gBAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;gBAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACvD,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,2BAA2B,EAAE;gBAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;YACrE,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,2BAA2B,EAAE;YACpC,IAAM,MAAM,GAAG,IAAI,yBAAW,EAAE;iBAC7B,aAAa,CAAC,SAAS,CAAC;iBACxB,WAAW,CAAC;gBACX,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE;gBAC9C,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,MAAM,EAAE,oBAAU,CAAC,GAAG;gBACtB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,QAAQ;aAChB,CAAC;iBACD,IAAI,EAAE,CAAA;YAET,EAAE,CAAC,qCAAqC,EAAE;gBACxC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;gBAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CACjC,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,EACT,MAAM,CACP,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,YAAY,EAAE;YACrB,IAAM,OAAO,GAAG;gBACd,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE;gBAC9C,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,MAAM,EAAE,oBAAU,CAAC,GAAG;gBACtB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,EAAE;aACV,CAAA;YAED,EAAE,CAAC,wBAAwB,EAAE;gBAC3B,OAAO,CAAC,KAAK,GAAG;oBACd,MAAM,EAAE,mBAAQ,CAAC,GAAG,CAAC;iBACtB,CAAA;gBACD,MAAM,CACJ,IAAI,yBAAW,EAAE;qBACd,aAAa,CAAC,SAAS,CAAC;qBACxB,WAAW,CAAC,OAAO,CAAC;qBACpB,IAAI,EAAE,CAAC,OAAO,CAClB,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC7B,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,uBAAuB,EAAE;gBAC1B,OAAO,CAAC,KAAK,GAAG;oBACd,EAAE,EAAE,GAAG;iBACR,CAAA;gBACD,MAAM,CACJ,IAAI,yBAAW,EAAE;qBACd,aAAa,CAAC,SAAS,CAAC;qBACxB,WAAW,CAAC,OAAO,CAAC;qBACpB,IAAI,EAAE,CAAC,OAAO,CAClB,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC7B,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,sBAAsB,EAAE;;gBACzB,OAAO,CAAC,KAAK,GAAG;oBACd,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;iBACf,CAAA;gBACD,MAAM,OACJ,IAAI,yBAAW,EAAE;qBACd,aAAa,CAAC,SAAS,CAAC;qBACxB,WAAW,CAAC,OAAO,CAAC;qBACpB,IAAI,EAAE,CAAC,OAAO,0CAAE,KAAK,CACzB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,cAAc,EAAE;YACvB,EAAE,CAAC,+CAA+C,EAAE;gBAClD,IAAM,MAAM,GAAG,IAAI,yBAAW,EAAE;qBAC7B,aAAa,CAAC,SAAS,CAAC;qBACxB,WAAW,CAAC;oBACX,IAAI,EAAE,EAAE;oBACR,MAAM,EAAE,oBAAU,CAAC,GAAG;oBACtB,IAAI,EAAE,OAAO;iBACd,CAAC;qBACD,IAAI,EAAE,CAAA;gBAET,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,kDAAkD,EAAE;gBACrD,IAAM,MAAM,GAAG,IAAI,yBAAW,EAAE;qBAC7B,aAAa,CAAC,SAAS,CAAC;qBACxB,WAAW,CAAC;oBACX,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,oBAAU,CAAC,GAAG;oBACtB,IAAI,EAAE,OAAO;iBACd,CAAC;qBACD,IAAI,EAAE,CAAA;gBAET,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACrD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kBAAkB,EAAE;QAC3B,IAAI,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAA;QAEnC,EAAE,CAAC,0CAA0C,EAAE;YAC7C,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAChE,KAAK,EACL,iCAAiC,CAClC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mCAAmC,EAAE;YACtC,MAAM,CACJ,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAC9D,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,4BAA4B,EAAE;YACrC,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAA;YAC/B,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;YACpC,WAAW,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC5C,IAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;YAEjC,EAAE,CAAC,8CAA8C,EAAE;gBACjD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;gBAC3C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAChD,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,2BAA2B,EAAE;gBAC9B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YAC7D,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,2BAA2B,EAAE;YACpC,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAA;YAC/B,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;YACpC,WAAW,CAAC,eAAe,CAAC;gBAC1B,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE;gBAC9C,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,MAAM,EAAE,GAAG;aACZ,CAAC,CAAA;YAEF,IAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;YAEjC,EAAE,CAAC,qCAAqC,EAAE;gBACxC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;gBAC3C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;YACnE,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,eAAe,EAAE;YACxB,EAAE,CAAC,+CAA+C,EAAE;gBAClD,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAA;gBAC/B,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC;oBACnD,IAAI,EAAE,EAAE;oBACR,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAA;gBAEF,IAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;gBACjC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAClD,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,kDAAkD,EAAE;gBACrD,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAA;gBAC/B,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC;oBACnD,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAA;gBAEF,IAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;gBACjC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACtD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}