callman-core 1.38.0 → 1.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/dist/host/connections.d.ts +7 -0
  2. package/dist/host/connections.d.ts.map +1 -1
  3. package/dist/host/connections.js +8 -0
  4. package/dist/host/connections.js.map +1 -1
  5. package/dist/host/db/connectionMapping.d.ts +3 -0
  6. package/dist/host/db/connectionMapping.d.ts.map +1 -1
  7. package/dist/host/db/connectionMapping.js +3 -0
  8. package/dist/host/db/connectionMapping.js.map +1 -1
  9. package/dist/host/db/dbErrors.d.ts +9 -0
  10. package/dist/host/db/dbErrors.d.ts.map +1 -0
  11. package/dist/host/db/dbErrors.js +126 -0
  12. package/dist/host/db/dbErrors.js.map +1 -0
  13. package/dist/host/db/mongoAdapter.d.ts.map +1 -1
  14. package/dist/host/db/mongoAdapter.js +12 -2
  15. package/dist/host/db/mongoAdapter.js.map +1 -1
  16. package/dist/host/db/mysqlAdapter.d.ts.map +1 -1
  17. package/dist/host/db/mysqlAdapter.js +2 -1
  18. package/dist/host/db/mysqlAdapter.js.map +1 -1
  19. package/dist/host/db/oracleAdapter.d.ts.map +1 -1
  20. package/dist/host/db/oracleAdapter.js +12 -1
  21. package/dist/host/db/oracleAdapter.js.map +1 -1
  22. package/dist/host/db/oracleConnectString.d.ts.map +1 -1
  23. package/dist/host/db/oracleConnectString.js +13 -4
  24. package/dist/host/db/oracleConnectString.js.map +1 -1
  25. package/dist/host/db/queryExecutor.d.ts.map +1 -1
  26. package/dist/host/db/queryExecutor.js +6 -0
  27. package/dist/host/db/queryExecutor.js.map +1 -1
  28. package/dist/host/db/types.d.ts +16 -0
  29. package/dist/host/db/types.d.ts.map +1 -1
  30. package/dist/host/index.d.ts +1 -0
  31. package/dist/host/index.d.ts.map +1 -1
  32. package/dist/host/index.js +2 -0
  33. package/dist/host/index.js.map +1 -1
  34. package/dist/http/transportError.d.ts +15 -0
  35. package/dist/http/transportError.d.ts.map +1 -0
  36. package/dist/http/transportError.js +70 -0
  37. package/dist/http/transportError.js.map +1 -0
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/mock-engine/auth.d.ts +29 -0
  43. package/dist/mock-engine/auth.d.ts.map +1 -0
  44. package/dist/mock-engine/auth.js +86 -0
  45. package/dist/mock-engine/auth.js.map +1 -0
  46. package/dist/mock-engine/conditions.d.ts +31 -0
  47. package/dist/mock-engine/conditions.d.ts.map +1 -0
  48. package/dist/mock-engine/conditions.js +210 -0
  49. package/dist/mock-engine/conditions.js.map +1 -0
  50. package/dist/mock-engine/constants.d.ts +28 -0
  51. package/dist/mock-engine/constants.d.ts.map +1 -0
  52. package/dist/mock-engine/constants.js +113 -0
  53. package/dist/mock-engine/constants.js.map +1 -0
  54. package/dist/mock-engine/context.d.ts +17 -0
  55. package/dist/mock-engine/context.d.ts.map +1 -0
  56. package/dist/mock-engine/context.js +92 -0
  57. package/dist/mock-engine/context.js.map +1 -0
  58. package/dist/mock-engine/data/actions.d.ts +4 -0
  59. package/dist/mock-engine/data/actions.d.ts.map +1 -0
  60. package/dist/mock-engine/data/actions.js +149 -0
  61. package/dist/mock-engine/data/actions.js.map +1 -0
  62. package/dist/mock-engine/data/query.d.ts +28 -0
  63. package/dist/mock-engine/data/query.d.ts.map +1 -0
  64. package/dist/mock-engine/data/query.js +402 -0
  65. package/dist/mock-engine/data/query.js.map +1 -0
  66. package/dist/mock-engine/data/record-codec.d.ts +28 -0
  67. package/dist/mock-engine/data/record-codec.d.ts.map +1 -0
  68. package/dist/mock-engine/data/record-codec.js +155 -0
  69. package/dist/mock-engine/data/record-codec.js.map +1 -0
  70. package/dist/mock-engine/data/resource-ops.d.ts +53 -0
  71. package/dist/mock-engine/data/resource-ops.d.ts.map +1 -0
  72. package/dist/mock-engine/data/resource-ops.js +461 -0
  73. package/dist/mock-engine/data/resource-ops.js.map +1 -0
  74. package/dist/mock-engine/data/seed.d.ts +21 -0
  75. package/dist/mock-engine/data/seed.d.ts.map +1 -0
  76. package/dist/mock-engine/data/seed.js +239 -0
  77. package/dist/mock-engine/data/seed.js.map +1 -0
  78. package/dist/mock-engine/data/validate-record.d.ts +30 -0
  79. package/dist/mock-engine/data/validate-record.d.ts.map +1 -0
  80. package/dist/mock-engine/data/validate-record.js +165 -0
  81. package/dist/mock-engine/data/validate-record.js.map +1 -0
  82. package/dist/mock-engine/definition.d.ts +31 -0
  83. package/dist/mock-engine/definition.d.ts.map +1 -0
  84. package/dist/mock-engine/definition.js +440 -0
  85. package/dist/mock-engine/definition.js.map +1 -0
  86. package/dist/mock-engine/engine.d.ts +75 -0
  87. package/dist/mock-engine/engine.d.ts.map +1 -0
  88. package/dist/mock-engine/engine.js +828 -0
  89. package/dist/mock-engine/engine.js.map +1 -0
  90. package/dist/mock-engine/faults.d.ts +38 -0
  91. package/dist/mock-engine/faults.d.ts.map +1 -0
  92. package/dist/mock-engine/faults.js +113 -0
  93. package/dist/mock-engine/faults.js.map +1 -0
  94. package/dist/mock-engine/helpers.d.ts +68 -0
  95. package/dist/mock-engine/helpers.d.ts.map +1 -0
  96. package/dist/mock-engine/helpers.js +388 -0
  97. package/dist/mock-engine/helpers.js.map +1 -0
  98. package/dist/mock-engine/import/build.d.ts +16 -0
  99. package/dist/mock-engine/import/build.d.ts.map +1 -0
  100. package/dist/mock-engine/import/build.js +435 -0
  101. package/dist/mock-engine/import/build.js.map +1 -0
  102. package/dist/mock-engine/import/index.d.ts +15 -0
  103. package/dist/mock-engine/import/index.d.ts.map +1 -0
  104. package/dist/mock-engine/import/index.js +92 -0
  105. package/dist/mock-engine/import/index.js.map +1 -0
  106. package/dist/mock-engine/import/openapi.d.ts +10 -0
  107. package/dist/mock-engine/import/openapi.d.ts.map +1 -0
  108. package/dist/mock-engine/import/openapi.js +199 -0
  109. package/dist/mock-engine/import/openapi.js.map +1 -0
  110. package/dist/mock-engine/import/paths.d.ts +16 -0
  111. package/dist/mock-engine/import/paths.d.ts.map +1 -0
  112. package/dist/mock-engine/import/paths.js +64 -0
  113. package/dist/mock-engine/import/paths.js.map +1 -0
  114. package/dist/mock-engine/import/postman.d.ts +21 -0
  115. package/dist/mock-engine/import/postman.d.ts.map +1 -0
  116. package/dist/mock-engine/import/postman.js +241 -0
  117. package/dist/mock-engine/import/postman.js.map +1 -0
  118. package/dist/mock-engine/import/report.d.ts +12 -0
  119. package/dist/mock-engine/import/report.d.ts.map +1 -0
  120. package/dist/mock-engine/import/report.js +39 -0
  121. package/dist/mock-engine/import/report.js.map +1 -0
  122. package/dist/mock-engine/import/types.d.ts +94 -0
  123. package/dist/mock-engine/import/types.d.ts.map +1 -0
  124. package/dist/mock-engine/import/types.js +6 -0
  125. package/dist/mock-engine/import/types.js.map +1 -0
  126. package/dist/mock-engine/index.d.ts +24 -0
  127. package/dist/mock-engine/index.d.ts.map +1 -0
  128. package/dist/mock-engine/index.js +27 -0
  129. package/dist/mock-engine/index.js.map +1 -0
  130. package/dist/mock-engine/legacy-builder.d.ts +27 -0
  131. package/dist/mock-engine/legacy-builder.d.ts.map +1 -0
  132. package/dist/mock-engine/legacy-builder.js +322 -0
  133. package/dist/mock-engine/legacy-builder.js.map +1 -0
  134. package/dist/mock-engine/memory-store.d.ts +73 -0
  135. package/dist/mock-engine/memory-store.d.ts.map +1 -0
  136. package/dist/mock-engine/memory-store.js +314 -0
  137. package/dist/mock-engine/memory-store.js.map +1 -0
  138. package/dist/mock-engine/node/ajv-body-validator.d.ts +13 -0
  139. package/dist/mock-engine/node/ajv-body-validator.d.ts.map +1 -0
  140. package/dist/mock-engine/node/ajv-body-validator.js +158 -0
  141. package/dist/mock-engine/node/ajv-body-validator.js.map +1 -0
  142. package/dist/mock-engine/node/file-store.d.ts +30 -0
  143. package/dist/mock-engine/node/file-store.d.ts.map +1 -0
  144. package/dist/mock-engine/node/file-store.js +116 -0
  145. package/dist/mock-engine/node/file-store.js.map +1 -0
  146. package/dist/mock-engine/node/index.d.ts +5 -0
  147. package/dist/mock-engine/node/index.d.ts.map +1 -0
  148. package/dist/mock-engine/node/index.js +8 -0
  149. package/dist/mock-engine/node/index.js.map +1 -0
  150. package/dist/mock-engine/node/node-http-adapter.d.ts +38 -0
  151. package/dist/mock-engine/node/node-http-adapter.d.ts.map +1 -0
  152. package/dist/mock-engine/node/node-http-adapter.js +215 -0
  153. package/dist/mock-engine/node/node-http-adapter.js.map +1 -0
  154. package/dist/mock-engine/node/vm-regex-runner.d.ts +14 -0
  155. package/dist/mock-engine/node/vm-regex-runner.d.ts.map +1 -0
  156. package/dist/mock-engine/node/vm-regex-runner.js +90 -0
  157. package/dist/mock-engine/node/vm-regex-runner.js.map +1 -0
  158. package/dist/mock-engine/render.d.ts +19 -0
  159. package/dist/mock-engine/render.d.ts.map +1 -0
  160. package/dist/mock-engine/render.js +57 -0
  161. package/dist/mock-engine/render.js.map +1 -0
  162. package/dist/mock-engine/routing.d.ts +48 -0
  163. package/dist/mock-engine/routing.d.ts.map +1 -0
  164. package/dist/mock-engine/routing.js +122 -0
  165. package/dist/mock-engine/routing.js.map +1 -0
  166. package/dist/mock-engine/templates.d.ts +58 -0
  167. package/dist/mock-engine/templates.d.ts.map +1 -0
  168. package/dist/mock-engine/templates.js +300 -0
  169. package/dist/mock-engine/templates.js.map +1 -0
  170. package/dist/mock-engine/testing/index.d.ts +13 -0
  171. package/dist/mock-engine/testing/index.d.ts.map +1 -0
  172. package/dist/mock-engine/testing/index.js +69 -0
  173. package/dist/mock-engine/testing/index.js.map +1 -0
  174. package/dist/mock-engine/types.d.ts +684 -0
  175. package/dist/mock-engine/types.d.ts.map +1 -0
  176. package/dist/mock-engine/types.js +7 -0
  177. package/dist/mock-engine/types.js.map +1 -0
  178. package/dist/mock-engine/util.d.ts +25 -0
  179. package/dist/mock-engine/util.d.ts.map +1 -0
  180. package/dist/mock-engine/util.js +143 -0
  181. package/dist/mock-engine/util.js.map +1 -0
  182. package/dist/openapi/index.d.ts +34 -0
  183. package/dist/openapi/index.d.ts.map +1 -0
  184. package/dist/openapi/index.js +246 -0
  185. package/dist/openapi/index.js.map +1 -0
  186. package/dist/runner/requestRunner.d.ts.map +1 -1
  187. package/dist/runner/requestRunner.js +6 -1
  188. package/dist/runner/requestRunner.js.map +1 -1
  189. package/dist/script/features/random.d.ts.map +1 -1
  190. package/dist/script/features/random.js +3 -1
  191. package/dist/script/features/random.js.map +1 -1
  192. package/dist/script/types.d.ts +5 -0
  193. package/dist/script/types.d.ts.map +1 -1
  194. package/dist/templating/postman-generators.d.ts +5 -0
  195. package/dist/templating/postman-generators.d.ts.map +1 -1
  196. package/dist/templating/postman-generators.js +19 -14
  197. package/dist/templating/postman-generators.js.map +1 -1
  198. package/dist/templating/random-generators.d.ts.map +1 -1
  199. package/dist/templating/random-generators.js +3 -1
  200. package/dist/templating/random-generators.js.map +1 -1
  201. package/dist/templating/random-source.d.ts +12 -0
  202. package/dist/templating/random-source.d.ts.map +1 -0
  203. package/dist/templating/random-source.js +38 -0
  204. package/dist/templating/random-source.js.map +1 -0
  205. package/dist-cjs/host/connections.js +8 -0
  206. package/dist-cjs/host/connections.js.map +1 -1
  207. package/dist-cjs/host/db/connectionMapping.js +3 -0
  208. package/dist-cjs/host/db/connectionMapping.js.map +1 -1
  209. package/dist-cjs/host/db/dbErrors.js +130 -0
  210. package/dist-cjs/host/db/dbErrors.js.map +1 -0
  211. package/dist-cjs/host/db/mongoAdapter.js +12 -2
  212. package/dist-cjs/host/db/mongoAdapter.js.map +1 -1
  213. package/dist-cjs/host/db/mysqlAdapter.js +2 -1
  214. package/dist-cjs/host/db/mysqlAdapter.js.map +1 -1
  215. package/dist-cjs/host/db/oracleAdapter.js +12 -1
  216. package/dist-cjs/host/db/oracleAdapter.js.map +1 -1
  217. package/dist-cjs/host/db/oracleConnectString.js +13 -4
  218. package/dist-cjs/host/db/oracleConnectString.js.map +1 -1
  219. package/dist-cjs/host/db/queryExecutor.js +6 -0
  220. package/dist-cjs/host/db/queryExecutor.js.map +1 -1
  221. package/dist-cjs/host/index.js +5 -2
  222. package/dist-cjs/host/index.js.map +1 -1
  223. package/dist-cjs/http/transportError.js +75 -0
  224. package/dist-cjs/http/transportError.js.map +1 -0
  225. package/dist-cjs/index.js +4 -1
  226. package/dist-cjs/index.js.map +1 -1
  227. package/dist-cjs/mock-engine/auth.js +96 -0
  228. package/dist-cjs/mock-engine/auth.js.map +1 -0
  229. package/dist-cjs/mock-engine/conditions.js +216 -0
  230. package/dist-cjs/mock-engine/conditions.js.map +1 -0
  231. package/dist-cjs/mock-engine/constants.js +116 -0
  232. package/dist-cjs/mock-engine/constants.js.map +1 -0
  233. package/dist-cjs/mock-engine/context.js +99 -0
  234. package/dist-cjs/mock-engine/context.js.map +1 -0
  235. package/dist-cjs/mock-engine/data/actions.js +153 -0
  236. package/dist-cjs/mock-engine/data/actions.js.map +1 -0
  237. package/dist-cjs/mock-engine/data/query.js +413 -0
  238. package/dist-cjs/mock-engine/data/query.js.map +1 -0
  239. package/dist-cjs/mock-engine/data/record-codec.js +165 -0
  240. package/dist-cjs/mock-engine/data/record-codec.js.map +1 -0
  241. package/dist-cjs/mock-engine/data/resource-ops.js +476 -0
  242. package/dist-cjs/mock-engine/data/resource-ops.js.map +1 -0
  243. package/dist-cjs/mock-engine/data/seed.js +246 -0
  244. package/dist-cjs/mock-engine/data/seed.js.map +1 -0
  245. package/dist-cjs/mock-engine/data/validate-record.js +170 -0
  246. package/dist-cjs/mock-engine/data/validate-record.js.map +1 -0
  247. package/dist-cjs/mock-engine/definition.js +454 -0
  248. package/dist-cjs/mock-engine/definition.js.map +1 -0
  249. package/dist-cjs/mock-engine/engine.js +837 -0
  250. package/dist-cjs/mock-engine/engine.js.map +1 -0
  251. package/dist-cjs/mock-engine/faults.js +117 -0
  252. package/dist-cjs/mock-engine/faults.js.map +1 -0
  253. package/dist-cjs/mock-engine/helpers.js +399 -0
  254. package/dist-cjs/mock-engine/helpers.js.map +1 -0
  255. package/dist-cjs/mock-engine/import/build.js +439 -0
  256. package/dist-cjs/mock-engine/import/build.js.map +1 -0
  257. package/dist-cjs/mock-engine/import/index.js +120 -0
  258. package/dist-cjs/mock-engine/import/index.js.map +1 -0
  259. package/dist-cjs/mock-engine/import/openapi.js +203 -0
  260. package/dist-cjs/mock-engine/import/openapi.js.map +1 -0
  261. package/dist-cjs/mock-engine/import/paths.js +72 -0
  262. package/dist-cjs/mock-engine/import/paths.js.map +1 -0
  263. package/dist-cjs/mock-engine/import/postman.js +247 -0
  264. package/dist-cjs/mock-engine/import/postman.js.map +1 -0
  265. package/dist-cjs/mock-engine/import/report.js +43 -0
  266. package/dist-cjs/mock-engine/import/report.js.map +1 -0
  267. package/dist-cjs/mock-engine/import/types.js +7 -0
  268. package/dist-cjs/mock-engine/import/types.js.map +1 -0
  269. package/dist-cjs/mock-engine/index.js +81 -0
  270. package/dist-cjs/mock-engine/index.js.map +1 -0
  271. package/dist-cjs/mock-engine/legacy-builder.js +327 -0
  272. package/dist-cjs/mock-engine/legacy-builder.js.map +1 -0
  273. package/dist-cjs/mock-engine/memory-store.js +318 -0
  274. package/dist-cjs/mock-engine/memory-store.js.map +1 -0
  275. package/dist-cjs/mock-engine/node/ajv-body-validator.js +166 -0
  276. package/dist-cjs/mock-engine/node/ajv-body-validator.js.map +1 -0
  277. package/dist-cjs/mock-engine/node/file-store.js +123 -0
  278. package/dist-cjs/mock-engine/node/file-store.js.map +1 -0
  279. package/dist-cjs/mock-engine/node/index.js +16 -0
  280. package/dist-cjs/mock-engine/node/index.js.map +1 -0
  281. package/dist-cjs/mock-engine/node/node-http-adapter.js +219 -0
  282. package/dist-cjs/mock-engine/node/node-http-adapter.js.map +1 -0
  283. package/dist-cjs/mock-engine/node/vm-regex-runner.js +97 -0
  284. package/dist-cjs/mock-engine/node/vm-regex-runner.js.map +1 -0
  285. package/dist-cjs/mock-engine/render.js +64 -0
  286. package/dist-cjs/mock-engine/render.js.map +1 -0
  287. package/dist-cjs/mock-engine/routing.js +130 -0
  288. package/dist-cjs/mock-engine/routing.js.map +1 -0
  289. package/dist-cjs/mock-engine/templates.js +308 -0
  290. package/dist-cjs/mock-engine/templates.js.map +1 -0
  291. package/dist-cjs/mock-engine/testing/index.js +72 -0
  292. package/dist-cjs/mock-engine/testing/index.js.map +1 -0
  293. package/dist-cjs/mock-engine/types.js +8 -0
  294. package/dist-cjs/mock-engine/types.js.map +1 -0
  295. package/dist-cjs/mock-engine/util.js +166 -0
  296. package/dist-cjs/mock-engine/util.js.map +1 -0
  297. package/dist-cjs/openapi/index.js +257 -0
  298. package/dist-cjs/openapi/index.js.map +1 -0
  299. package/dist-cjs/runner/requestRunner.js +6 -1
  300. package/dist-cjs/runner/requestRunner.js.map +1 -1
  301. package/dist-cjs/script/features/random.js +3 -1
  302. package/dist-cjs/script/features/random.js.map +1 -1
  303. package/dist-cjs/templating/postman-generators.js +21 -15
  304. package/dist-cjs/templating/postman-generators.js.map +1 -1
  305. package/dist-cjs/templating/random-generators.js +3 -1
  306. package/dist-cjs/templating/random-generators.js.map +1 -1
  307. package/dist-cjs/templating/random-source.js +44 -0
  308. package/dist-cjs/templating/random-source.js.map +1 -0
  309. package/package.json +29 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/mock-engine/helpers.ts"],"names":[],"mappings":";AAAA,yEAAyE;AACzE,yEAAyE;AACzE,2EAA2E;AAC3E,oCAAoC;;;AAEpC,iDAAqF;AACrF,mDAA4F;AAC5F,4CAAoD;AACpD,iDAA6E;AAC7E,6CAA4C;AAW5C,uCAA0C;AAc1C,oEAAoE;AAC7D,MAAM,yBAAyB,GAAG,CAAC,KAA+B,EAAW,EAAE;IACpF,MAAM,MAAM,GAAG,IAAA,yBAAY,EAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,KAAK,GAAsB;QAC/B,OAAO,EAAE;YACP,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK;YACtC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,GAAG;YAChC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,GAAG;YAC/B,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE;YACnC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACjC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE;YACrC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI;SAC1B;QACD,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;QACrB,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;QAC9B,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;KACvB,CAAC;IACF,OAAO,IAAA,kCAAmB,EAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChF,CAAC,CAAC;AAnBW,QAAA,yBAAyB,6BAmBpC;AAEF,wEAAwE;AAExE,MAAM,QAAQ,GAAG,qBAAqB,CAAC;AACvC,MAAM,YAAY,GAAG,uEAAuE,CAAC;AAC7F,MAAM,KAAK,GAAG,4BAA4B,CAAC;AAC3C,MAAM,IAAI,GAAG,iEAAiE,CAAC;AAC/E,MAAM,SAAS,GAAG,iBAAiB,CAAC;AAEpC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAwB,EAAE;IAC3D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,IAAA,uBAAa,EAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACpC,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC;QAChD,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACxC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QACtC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,CAAuB,EAAE,CAAuB,EAAwB,EAAE;IAC5F,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChG,MAAM,OAAO,GAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACjF,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChE,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,aAAa,GAA4B;IAC7C,CAAC,YAAY,EAAE,cAAc,CAAC;IAC9B,CAAC,4BAA4B,EAAE,kBAAkB,CAAC;IAClD,CAAC,kCAAkC,EAAE,iBAAiB,CAAC;IACvD,CAAC,wCAAwC,EAAE,0CAA0C,CAAC;IACtF,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACjC,CAAC,WAAW,EAAE,aAAa,CAAC;IAC5B,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAClC,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;IAC9C,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;IAC9C,CAAC,wCAAwC,EAAE,uBAAuB,CAAC;IACnE,CAAC,yBAAyB,EAAE,cAAc,CAAC;IAC3C,CAAC,yCAAyC,EAAE,oBAAoB,CAAC;IACjE,CAAC,2BAA2B,EAAE,YAAY,CAAC;IAC3C,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;IACnD,CAAC,mBAAmB,EAAE,cAAc,CAAC;CACtC,CAAC;AAEK,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,IAAmB,EAAsB,EAAE;IACzF,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,cAAc,CAAC;IAC5C,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,aAAa;QAAE,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACjF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAJW,QAAA,iBAAiB,qBAI5B;AAEK,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;IAClD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACvD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB;AAEF,oFAAoF;AAC7E,MAAM,cAAc,GAAG,CAAC,GAAW,EAAU,EAAE;IACpD,MAAM,KAAK,GAAG,GAAG;SACd,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;SAChC,IAAI,EAAE;SACN,KAAK,CAAC,SAAS,CAAC;SAChB,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAC5C,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzB,OAAO,yCAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AAChE,CAAC,CAAC;AAVW,QAAA,cAAc,kBAUzB;AASF;;;;GAIG;AACI,MAAM,wBAAwB,GAAG,CAAC,MAAe,EAAE,OAA6B,EAAgB,EAAE;IACvG,IAAI,OAAO,GAA8B,EAAE,CAAC;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAa,CAA8B,CAAC;SAC1F,IAAI,IAAA,uBAAa,EAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAE,MAAkC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9I,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAG,MAAkC,CAAC,QAAQ,CAAe,CAAC,MAAM,CAAC,uBAAa,CAA8B,CAAC,CAAC,CAAC,CAAC,MAAiC,CAAC,CAAC;IAC7K,CAAC;IACD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAEjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,sCAAuB,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,SAAS;YACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACvB,CAAC;YACD,IAAI,KAAK,KAAK,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;IACrH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC;IACnH,IAAI,UAAU,GAA+B,MAAM,CAAC;IACpD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAAE,UAAU,GAAG,aAAa,CAAC;aAC3G,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,UAAU,GAAG,MAAM,CAAC;aAClG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,UAAU,GAAG,UAAU,CAAC;;YAC3G,UAAU,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,GAAG,KAAK,OAAO;YAAE,SAAS;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;QACxC,MAAM,KAAK,GAAc,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC1C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAA0B,CAAC;YAC3I,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAChE,IAAI,QAAQ,IAAI,QAAQ,KAAK,OAAO;gBAAE,KAAK,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,QAAmD,EAAE,CAAC;QACpH,CAAC;QACD,IAAI,+CAA+C,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS;QACxE,MAAM,IAAI,GAAG,IAAA,yBAAiB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,IAAI;YAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACjC,IAAI,GAAG,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACrC,CAAC;QACD,IAAI,GAAG,KAAK,UAAU;YAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAErE,OAAO,IAAA,iCAAiB,EAAC;QACvB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;QAChD,OAAO;QACP,UAAU;QACV,MAAM;QACN,UAAU,EAAE;YACV,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW;YACvH,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW;SACxH;QACD,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;KACvF,CAAC,CAAC;AACL,CAAC,CAAC;AAtEW,QAAA,wBAAwB,4BAsEnC;AAEF,wEAAwE;AAExE,yFAAyF;AAClF,MAAM,sBAAsB,GAAG,CAAC,QAAsB,EAAE,WAAqC,QAAQ,EAAE,IAAI,GAAG,CAAC,EAAkC,EAAE;IACxJ,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACzF,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAA,yBAAY,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAChF,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7D,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,QAAQ;YAAE,SAAS;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO;YAAE,SAAS;QAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,UAAU,CAAC,SAAS;YAAE,SAAS;QAC3G,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,UAAU;YAAE,SAAS;QACjD,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,SAAS;QACtD,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,UAAU,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACtE,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAA,4BAAkB,EAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChH,IAAI,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAA,4BAAkB,EAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AA1BW,QAAA,sBAAsB,0BA0BjC;AAaF,MAAM,iBAAiB,GAAG,CAAC,KAAgB,EAAE,QAAgB,EAAU,EAAE;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5G,OAAO,IAAA,sBAAc,EAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF;;;;;GAKG;AACI,MAAM,oBAAoB,GAAG,CAAC,UAA0B,EAAwB,EAAE;IACvF,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4F,CAAC;IACnH,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrC,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;YAAE,SAAS;QACrE,IAAI,QAA4B,CAAC;QACjC,IAAI,UAAiC,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC3D,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO;gBAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;;gBACjE,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACvC,CAAC;;YAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;QAC/E,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;QAC5E,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,UAAU;YAAE,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QACnE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,YAAY,IAAI,EAAE,CAA4B,CAAC;IAE7G,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,MAAM,CAAC,MAAM,oBAAoB,KAAK,CAAC,IAAI,iDAAiD,CAAC,CAAC;YACvH,SAAS;QACX,CAAC;QACD,IAAI,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC;QACzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;YAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAClF,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;QACxE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,MAAM,CAAC,uBAAa,CAA+B,CAAC,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;aACxB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC7I,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,MAAM,QAAQ,GAAG,IAAA,gCAAwB,EAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACnF,IAAI,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,OAAO;YAAE,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC;QACrE,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChL,IAAI,YAAY,EAAE,YAAY,CAAC,EAAE,KAAK,aAAa;YAAE,QAAQ,CAAC,UAAU,GAAG,aAAa,CAAC;QACzF,IAAI,YAAY,EAAE,CAAC;YACjB,QAAQ,CAAC,UAAU,GAAG;gBACpB,SAAS,EAAE,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;gBACnE,SAAS,EAAE,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;aACpE,CAAC;YACF,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;gBAC/D,IAAI,KAAK;oBAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;;oBAC5B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QACD,kDAAkD;QAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;QACrD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS;gBAAE,SAAS;YAChD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;YAC5C,IAAI,MAAM,KAAK,MAAM;gBAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,QAAQ;gBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,MAAM,KAAK,QAAQ;gBAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,MAAM,KAAK,QAAQ;gBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACpF,IAAI,MAAM,KAAK,QAAQ;gBAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAA+B;YAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,OAAO;QACL,UAAU,EAAE,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE;QAClH,OAAO;QACP,eAAe,EAAE,CAAC,GAAG,OAAO,CAAC;QAC7B,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AA9EW,QAAA,oBAAoB,wBA8E/B;AAeF,uEAAuE;AAChE,MAAM,mBAAmB,GAAG,CAAC,KAAwD,EAAkB,EAAE;IAC9G,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxC,IAAI,IAAI,GAAY,KAAK,CAAC,IAAI,CAAC;QAC/B,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,OAAO,KAAK,EAAE;YAAE,IAAI,GAAG,IAAI,CAAC;aAC3B,CAAC;YACJ,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,qDAAqD;gBACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC;oBAAE,OAAO,CAAC,cAAc,CAAC,GAAG,2BAA2B,CAAC;gBACrI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;QACD,OAAO,IAAA,8BAAc,EAAC;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAqB,IAAI,KAAK;YAC/D,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;YACzD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE;YACzE,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;SACrD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM;QACN,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,EAAE,GAAG,sCAAsB,EAAE;KACxC,CAAC;AACJ,CAAC,CAAC;AAjCW,QAAA,mBAAmB,uBAiC9B"}
@@ -0,0 +1,439 @@
1
+ "use strict";
2
+ // Normalized operations → mock definition draft.
3
+ //
4
+ // `auto` mode looks for CRUD groups — `GET|POST /things` + `GET|PUT|PATCH|
5
+ // DELETE /things/:id` — and turns each into a resource: fields from the
6
+ // schema (or inferred from examples), real examples as seed records, only
7
+ // the endpoints the source had. Everything else becomes a static route;
8
+ // extra responses become variants picked with `X-Mock-Response-Code` /
9
+ // `X-Mock-Response-Name` (the Postman mock convention).
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.buildDefinitionFromOperations = exports.DEFAULT_IMPORT_LIMITS = void 0;
12
+ const conditions_js_1 = require("../conditions.js");
13
+ const constants_js_1 = require("../constants.js");
14
+ const definition_js_1 = require("../definition.js");
15
+ const helpers_js_1 = require("../helpers.js");
16
+ const util_js_1 = require("../util.js");
17
+ const paths_js_1 = require("./paths.js");
18
+ const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
19
+ const OBJECT_ID = /^[0-9a-f]{24}$/i;
20
+ const JSON_TYPE = /json/i;
21
+ const BODY_METHODS = new Set(["POST", "PUT", "PATCH"]);
22
+ const ENVELOPE_KEYS = [
23
+ ["data", "data-meta"],
24
+ ["items", "items"],
25
+ ];
26
+ exports.DEFAULT_IMPORT_LIMITS = {
27
+ maxRoutes: constants_js_1.MOCK_DEFINITION_LIMITS.maxRoutes,
28
+ maxResources: 20,
29
+ maxSeedRecords: 1000,
30
+ maxVariantsPerRoute: 10,
31
+ };
32
+ const primaryResponse = (op) => op.responses.find((response) => response.status >= 200 && response.status < 300) ?? op.responses[0];
33
+ const schemaType = (schema) => {
34
+ const type = schema.type;
35
+ if (Array.isArray(type))
36
+ return type.find((entry) => entry !== "null");
37
+ return typeof type === "string" ? type : (0, util_js_1.isPlainObject)(schema.properties) ? "object" : undefined;
38
+ };
39
+ /** The record schema behind a list response: items of an array, or of `data` / `items`. */
40
+ const listShape = (response) => {
41
+ if (!response)
42
+ return null;
43
+ const body = response.body;
44
+ const schema = response.schema ?? undefined;
45
+ if (Array.isArray(body) || (schema && schemaType(schema) === "array")) {
46
+ const itemSchema = schema && (0, util_js_1.isPlainObject)(schema.items) ? schema.items : undefined;
47
+ return { envelope: "array", itemSchema, samples: Array.isArray(body) ? body : [] };
48
+ }
49
+ for (const [key, envelope] of ENVELOPE_KEYS) {
50
+ const value = (0, util_js_1.isPlainObject)(body) ? body[key] : undefined;
51
+ const propSchema = schema && (0, util_js_1.isPlainObject)(schema.properties) ? schema.properties[key] : undefined;
52
+ if (Array.isArray(value) || ((0, util_js_1.isPlainObject)(propSchema) && schemaType(propSchema) === "array")) {
53
+ const itemSchema = (0, util_js_1.isPlainObject)(propSchema) && (0, util_js_1.isPlainObject)(propSchema.items) ? propSchema.items : undefined;
54
+ return { envelope, itemSchema, samples: Array.isArray(value) ? value : [] };
55
+ }
56
+ }
57
+ return null;
58
+ };
59
+ const fieldType = (prop) => {
60
+ const type = schemaType(prop);
61
+ const format = typeof prop.format === "string" ? prop.format : "";
62
+ if (type === "string") {
63
+ if (format === "email")
64
+ return "email";
65
+ if (format === "uuid")
66
+ return "uuid";
67
+ if (format === "date")
68
+ return "date";
69
+ if (format === "date-time")
70
+ return "datetime";
71
+ if (format === "password")
72
+ return "password";
73
+ return "string";
74
+ }
75
+ if (type === "integer")
76
+ return "integer";
77
+ if (type === "number")
78
+ return "number";
79
+ if (type === "boolean")
80
+ return "boolean";
81
+ if (type === "array")
82
+ return "array";
83
+ if (type === "object")
84
+ return "object";
85
+ return "string";
86
+ };
87
+ const fieldsFromSchema = (schema, required) => {
88
+ if (!schema || !(0, util_js_1.isPlainObject)(schema.properties))
89
+ return null;
90
+ const fields = [];
91
+ for (const [name, raw] of Object.entries(schema.properties)) {
92
+ if (!(0, util_js_1.isPlainObject)(raw) || !constants_js_1.MOCK_FIELD_NAME_PATTERN.test(name))
93
+ continue;
94
+ const type = fieldType(raw);
95
+ const field = { name, type };
96
+ if (required.has(name))
97
+ field.required = true;
98
+ const types = Array.isArray(raw.type) ? raw.type : [];
99
+ if (types.includes("null"))
100
+ field.nullable = true;
101
+ if (Array.isArray(raw.enum)) {
102
+ const values = raw.enum.filter((value) => typeof value === "string" || typeof value === "number");
103
+ if (values.length > 0 && values.length <= 100)
104
+ field.enum = values;
105
+ }
106
+ if (typeof raw.minLength === "number")
107
+ field.minLength = raw.minLength;
108
+ if (typeof raw.maxLength === "number")
109
+ field.maxLength = raw.maxLength;
110
+ if (typeof raw.minimum === "number")
111
+ field.min = raw.minimum;
112
+ if (typeof raw.maximum === "number")
113
+ field.max = raw.maximum;
114
+ if (typeof raw.pattern === "string" && raw.pattern.length <= 512 && !(0, conditions_js_1.describeUnsafePattern)(raw.pattern))
115
+ field.pattern = raw.pattern;
116
+ if (raw.readOnly === true)
117
+ field.readOnly = true;
118
+ if (raw.writeOnly === true)
119
+ field.writeOnly = true;
120
+ if (type === "array" && (0, util_js_1.isPlainObject)(raw.items)) {
121
+ const itemType = fieldType(raw.items);
122
+ if (itemType !== "array" && itemType !== "password")
123
+ field.items = { type: itemType };
124
+ }
125
+ if (!field.enum) {
126
+ const hint = (0, helpers_js_1.fakerHintForField)(name, type);
127
+ if (hint)
128
+ field.fakerHint = hint;
129
+ }
130
+ if (type === "email") {
131
+ field.unique = true;
132
+ field.uniqueCaseInsensitive = true;
133
+ }
134
+ fields.push(field);
135
+ if (fields.length >= constants_js_1.MOCK_DEFINITION_LIMITS.maxFieldsPerResource)
136
+ break;
137
+ }
138
+ return fields;
139
+ };
140
+ const mergeFields = (primary, extra) => {
141
+ const byName = new Map(primary.map((field) => [field.name, field]));
142
+ for (const field of extra) {
143
+ const existing = byName.get(field.name);
144
+ if (!existing)
145
+ byName.set(field.name, field);
146
+ else if (field.required)
147
+ existing.required = true;
148
+ }
149
+ return [...byName.values()].slice(0, constants_js_1.MOCK_DEFINITION_LIMITS.maxFieldsPerResource);
150
+ };
151
+ const findCrudGroups = (operations) => {
152
+ const groups = new Map();
153
+ const groupFor = (base) => {
154
+ const existing = groups.get(base);
155
+ if (existing)
156
+ return existing;
157
+ const created = { base, ops: {} };
158
+ groups.set(base, created);
159
+ return created;
160
+ };
161
+ for (const op of operations) {
162
+ if (!(0, paths_js_1.hasParams)(op.path)) {
163
+ if (op.path === "/")
164
+ continue;
165
+ if (op.method === "GET")
166
+ groupFor(op.path).ops.list ??= op;
167
+ else if (op.method === "POST")
168
+ groupFor(op.path).ops.create ??= op;
169
+ continue;
170
+ }
171
+ const item = (0, paths_js_1.splitItemPath)(op.path);
172
+ if (!item || (0, paths_js_1.hasParams)(item.base) || item.base === "/")
173
+ continue;
174
+ const endpoint = op.method === "GET" ? "get" : op.method === "PUT" ? "replace" : op.method === "PATCH" ? "patch" : op.method === "DELETE" ? "delete" : null;
175
+ if (!endpoint)
176
+ continue;
177
+ const group = groupFor(item.base);
178
+ if (group.ops[endpoint])
179
+ continue;
180
+ group.ops[endpoint] = op;
181
+ group.param ??= item.param;
182
+ }
183
+ return [...groups.values()].filter((group) => {
184
+ // The list must actually return a list.
185
+ if (group.ops.list && !listShape(primaryResponse(group.ops.list)))
186
+ delete group.ops.list;
187
+ const count = Object.keys(group.ops).length;
188
+ return count >= 2 && Boolean(group.ops.list || group.ops.get);
189
+ });
190
+ };
191
+ const idStrategyFor = (idSchema, ids) => {
192
+ if (idSchema) {
193
+ const type = schemaType(idSchema);
194
+ if (type === "integer" || type === "number")
195
+ return "incremental";
196
+ if (idSchema.format === "uuid")
197
+ return "uuid";
198
+ }
199
+ if (ids.length > 0) {
200
+ if (ids.every((id) => typeof id === "number" && Number.isInteger(id)))
201
+ return "incremental";
202
+ if (ids.every((id) => typeof id === "string" && UUID.test(id)))
203
+ return "uuid";
204
+ if (ids.every((id) => typeof id === "string" && OBJECT_ID.test(id)))
205
+ return "objectId";
206
+ return "nanoid";
207
+ }
208
+ return "uuid";
209
+ };
210
+ const resourceFromGroup = (group, name, report, limits) => {
211
+ const list = group.ops.list ? listShape(primaryResponse(group.ops.list)) : null;
212
+ const getResponse = group.ops.get ? primaryResponse(group.ops.get) : undefined;
213
+ const createResponse = group.ops.create ? primaryResponse(group.ops.create) : undefined;
214
+ const recordSchema = list?.itemSchema ??
215
+ (getResponse?.schema && schemaType(getResponse.schema) === "object" ? getResponse.schema : undefined) ??
216
+ (createResponse?.schema && schemaType(createResponse.schema) === "object" ? createResponse.schema : undefined);
217
+ const createSchema = group.ops.create?.requestSchema ?? undefined;
218
+ const required = new Set(Array.isArray(createSchema?.required) ? createSchema.required : []);
219
+ // Real (non-generated) examples become seed records.
220
+ const samples = [];
221
+ const realList = group.ops.list ? primaryResponse(group.ops.list) : undefined;
222
+ if (list && realList && !realList.generated)
223
+ samples.push(...list.samples.filter(util_js_1.isPlainObject));
224
+ if (getResponse && !getResponse.generated && (0, util_js_1.isPlainObject)(getResponse.body))
225
+ samples.push(getResponse.body);
226
+ let fields = fieldsFromSchema(recordSchema, required);
227
+ const requestFields = fieldsFromSchema(createSchema ?? undefined, required);
228
+ let resource;
229
+ if (fields || requestFields) {
230
+ fields = mergeFields(fields ?? [], requestFields ?? []);
231
+ const names = new Set(fields.map((field) => field.name));
232
+ const idField = ["id", "_id", group.param ?? "", `${(0, helpers_js_1.singularize)(name)}Id`, "uuid"].find((candidate) => candidate && names.has(candidate)) ?? "id";
233
+ const idSchema = recordSchema && (0, util_js_1.isPlainObject)(recordSchema.properties) ? recordSchema.properties[idField] : undefined;
234
+ const ids = samples.map((sample) => sample[idField]).filter((id) => id !== undefined && id !== null);
235
+ const createdAt = ["createdAt", "created_at", "createdOn", "dateCreated"].find((candidate) => names.has(candidate)) ?? null;
236
+ const updatedAt = ["updatedAt", "updated_at", "updatedOn", "modifiedAt", "dateModified"].find((candidate) => names.has(candidate)) ?? null;
237
+ resource = (0, definition_js_1.normalizeResource)({
238
+ name,
239
+ basePath: group.base,
240
+ idField,
241
+ idStrategy: idStrategyFor(idSchema, ids),
242
+ fields: fields.filter((field) => field.name !== idField && field.name !== createdAt && field.name !== updatedAt),
243
+ timestamps: { createdAt, updatedAt },
244
+ });
245
+ }
246
+ else {
247
+ resource = (0, helpers_js_1.inferResourceFromRecords)(samples, { name, basePath: group.base, keepAsSeed: false });
248
+ if (samples.length === 0)
249
+ report.add("info", "RESOURCE_SCHEMALESS", group.base, `"${name}" has no schema or example: it accepts any JSON fields.`);
250
+ }
251
+ // The item path's param, when it names another field (`/users/:username`).
252
+ if (group.param && group.param !== resource.idField && resource.fields.some((field) => field.name === group.param)) {
253
+ resource.lookupField = group.param;
254
+ }
255
+ // Only the endpoints the source had.
256
+ for (const endpoint of constants_js_1.MOCK_RESOURCE_ENDPOINTS)
257
+ resource.endpoints[endpoint].enabled = Boolean(group.ops[endpoint]);
258
+ if (list)
259
+ resource.list.envelope = list.envelope;
260
+ if (list?.envelope === "data-meta")
261
+ resource.list.defaultLimit = 20;
262
+ // Keep the source's success status codes where they differ from ours.
263
+ const createStatus = createResponse?.status;
264
+ if (createStatus && createStatus !== 201 && createStatus >= 200 && createStatus < 300) {
265
+ resource.endpoints.create.responses = { created: { statusCode: createStatus } };
266
+ }
267
+ const deleteStatus = group.ops.delete ? primaryResponse(group.ops.delete)?.status : undefined;
268
+ if (deleteStatus && deleteStatus !== 204 && deleteStatus >= 200 && deleteStatus < 300) {
269
+ const deleteResponse = primaryResponse(group.ops.delete);
270
+ resource.endpoints.delete.responses = {
271
+ success: { statusCode: deleteStatus, ...(deleteResponse && !deleteResponse.generated && deleteResponse.body !== undefined ? { body: deleteResponse.body } : { body: null }) },
272
+ };
273
+ }
274
+ // Seed: real examples first, then generated records so lists aren't empty.
275
+ const idField = resource.idField;
276
+ const seen = new Set();
277
+ const unique = samples.filter((sample) => {
278
+ const id = sample[idField];
279
+ if (id === undefined || id === null)
280
+ return true;
281
+ const key = `${typeof id}:${String(id)}`;
282
+ if (seen.has(key))
283
+ return false;
284
+ seen.add(key);
285
+ return true;
286
+ });
287
+ const records = unique.slice(0, limits.maxSeedRecords);
288
+ resource.seed = {
289
+ ...(records.length > 0 ? { records } : {}),
290
+ ...(records.length < 5 && resource.fields.length > 0 ? { generate: 5 - records.length } : {}),
291
+ };
292
+ if (!resource.seed.records && !resource.seed.generate)
293
+ delete resource.seed;
294
+ return resource;
295
+ };
296
+ const responseConfig = (response) => {
297
+ if (!response)
298
+ return { type: "static", statusCode: 200, headers: {}, body: {} };
299
+ const headers = { ...(response.headers ?? {}) };
300
+ let body = response.body;
301
+ const contentType = response.contentType ?? Object.entries(headers).find(([key]) => key.toLowerCase() === "content-type")?.[1];
302
+ if (typeof body === "string" && contentType && JSON_TYPE.test(contentType)) {
303
+ try {
304
+ body = JSON.parse(body);
305
+ }
306
+ catch {
307
+ // Keep the text as it is.
308
+ }
309
+ }
310
+ if (contentType && !JSON_TYPE.test(contentType) && !Object.keys(headers).some((key) => key.toLowerCase() === "content-type")) {
311
+ headers["Content-Type"] = contentType;
312
+ }
313
+ return { type: "static", statusCode: response.status, headers, body: body === undefined ? (response.status === 204 ? null : {}) : body };
314
+ };
315
+ const routeFromOperation = (op, options, limits) => {
316
+ const primary = primaryResponse(op);
317
+ const variants = [];
318
+ let priority = 0;
319
+ for (const response of op.responses) {
320
+ if (response === primary || variants.length >= limits.maxVariantsPerRoute)
321
+ continue;
322
+ const rules = [{ field: "headers.x-mock-response-code", operator: "equals", value: String(response.status) }];
323
+ if (response.name)
324
+ rules.push({ field: "headers.x-mock-response-name", operator: "equals", value: response.name });
325
+ variants.push({
326
+ variantId: `v${priority + 1}`,
327
+ priority: priority++,
328
+ condition: { type: "any", rules },
329
+ response: responseConfig(response),
330
+ });
331
+ }
332
+ const route = {
333
+ routeId: "",
334
+ method: op.method,
335
+ path: op.path,
336
+ ...(op.name ? { name: op.name.slice(0, 120) } : {}),
337
+ response: responseConfig(primary),
338
+ variants,
339
+ behavior: { delay: { mode: "none" } },
340
+ };
341
+ if (options.validateRequests !== false && op.requestSchema && BODY_METHODS.has(op.method)) {
342
+ route.requestValidation = { mode: "schema", schema: op.requestSchema };
343
+ }
344
+ return route;
345
+ };
346
+ const buildDefinitionFromOperations = (operations, meta, options, report) => {
347
+ const limits = { ...exports.DEFAULT_IMPORT_LIMITS, ...(options.limits ?? {}) };
348
+ // Same method + path twice: the first wins.
349
+ const seen = new Set();
350
+ const unique = [];
351
+ for (const op of operations) {
352
+ const key = `${op.method} ${op.path}`;
353
+ if (seen.has(key)) {
354
+ report.group("warning", "DUPLICATE_OPERATION", op.where, "Operations with the same method and path were merged: the first one is used.");
355
+ continue;
356
+ }
357
+ seen.add(key);
358
+ unique.push(op);
359
+ }
360
+ const resources = [];
361
+ const consumed = new Set();
362
+ if (options.mode !== "routes") {
363
+ const taken = new Set();
364
+ for (const group of findCrudGroups(unique)) {
365
+ if (resources.length >= limits.maxResources) {
366
+ report.add("warning", "RESOURCE_LIMIT", group.base, `Only ${limits.maxResources} resources are created per import; the rest stay routes.`);
367
+ break;
368
+ }
369
+ const lastSegment = group.base.split("/").filter(Boolean).pop() ?? "items";
370
+ let name = (0, helpers_js_1.toResourceName)(lastSegment);
371
+ for (let i = 2; taken.has(name); i += 1)
372
+ name = `${(0, helpers_js_1.toResourceName)(lastSegment)}${i}`;
373
+ taken.add(name);
374
+ const resource = resourceFromGroup(group, name, report, limits);
375
+ resources.push(resource);
376
+ for (const op of Object.values(group.ops))
377
+ if (op)
378
+ consumed.add(op);
379
+ const endpoints = constants_js_1.MOCK_RESOURCE_ENDPOINTS.filter((endpoint) => group.ops[endpoint]).join(", ");
380
+ report.add("info", "RESOURCE_CREATED", group.base, `Became the "${name}" resource (${endpoints}) with a real data store: writes persist and lists filter, sort and page.`);
381
+ if (Object.values(group.ops).some((op) => op?.secured)) {
382
+ report.add("warning", "AUTH_NOT_SIMULATED", group.base, `The source requires credentials for "${name}". Turn on User sign-in in the mock settings to simulate it; until then requests are accepted without a token.`);
383
+ }
384
+ }
385
+ }
386
+ const routes = [];
387
+ const resourceByBase = new Map(resources.map((resource) => [resource.basePath, resource]));
388
+ let variantRoutes = 0;
389
+ for (const op of unique) {
390
+ if (consumed.has(op))
391
+ continue;
392
+ if (routes.length >= limits.maxRoutes) {
393
+ report.add("lost", "ROUTE_LIMIT", op.where, `Only ${limits.maxRoutes} routes fit in one mock; the remaining operations were not imported.`);
394
+ break;
395
+ }
396
+ const route = routeFromOperation(op, options, limits);
397
+ if (route.variants.length > 0)
398
+ variantRoutes += 1;
399
+ // `PUT /pets` with the id in the body updates the record.
400
+ const owner = resourceByBase.get(op.path);
401
+ if (owner && (op.method === "PUT" || op.method === "PATCH")) {
402
+ route.action = {
403
+ operation: "update",
404
+ resource: owner.name,
405
+ match: [{ field: owner.idField, value: `{{request.body.${owner.idField}}}` }],
406
+ mode: op.method === "PUT" ? "replace" : "merge",
407
+ };
408
+ report.add("info", "ACTION_UPDATE_BY_BODY_ID", op.where, `Updates the "${owner.name}" record whose ${owner.idField} is in the request body.`);
409
+ }
410
+ // `GET /pets/findByStatus?status=…`, `/pets/search?q=…` filter the records.
411
+ const finder = resourceByBase.get(op.path.replace(/\/[^/]+$/, "") || "/");
412
+ if (!route.action && finder && op.method === "GET" && !(0, paths_js_1.hasParams)(op.path) && /\/(find[A-Z_-]?\w*|search|filter|query)$/i.test(op.path)) {
413
+ route.action = { operation: "find", resource: finder.name, find: { useRequestQuery: true } };
414
+ report.add("info", "ACTION_FIND", op.where, `Returns "${finder.name}" records filtered by the query string.`);
415
+ }
416
+ routes.push(route);
417
+ }
418
+ if (variantRoutes > 0) {
419
+ report.add("info", "RESPONSE_VARIANTS", meta.name ?? "Mock", `${variantRoutes} route(s) have more than one answer: send X-Mock-Response-Code (e.g. 404) or X-Mock-Response-Name to pick one.`);
420
+ }
421
+ if (meta.secured && resources.length === 0) {
422
+ report.add("warning", "AUTH_NOT_SIMULATED", meta.name ?? "Mock", "The source requires credentials. The mock accepts every request until you turn on User sign-in or an access token in its settings.");
423
+ }
424
+ const seedRecords = resources.reduce((sum, resource) => sum + (resource.seed?.records?.length ?? 0), 0);
425
+ return {
426
+ definition: {
427
+ schemaVersion: 2,
428
+ ...(meta.name ? { name: meta.name } : {}),
429
+ ...(meta.description ? { description: meta.description } : {}),
430
+ routes: routes.map(({ routeId: _routeId, ...route }) => route),
431
+ resources,
432
+ },
433
+ routes: routes.length,
434
+ resources: resources.length,
435
+ seedRecords,
436
+ };
437
+ };
438
+ exports.buildDefinitionFromOperations = buildDefinitionFromOperations;
439
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/mock-engine/import/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ // Mock import: OpenAPI 3.x / Swagger 2.0, Postman v2.x and Callman
3
+ // collection exports → a mock definition draft plus a report of what was
4
+ // converted, what needs attention and what could not be kept.
5
+ //
6
+ // Hosts read files and URLs themselves (the server never fetches a URL) and
7
+ // pass the text or the parsed object here.
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.importMockDefinition = exports.detectMockImportFormatFromObject = exports.MockImportError = exports.MockImportReportCollector = exports.redactSecrets = exports.splitItemPath = exports.pathParams = exports.toParamName = exports.toMockPath = exports.buildDefinitionFromOperations = exports.DEFAULT_IMPORT_LIMITS = void 0;
24
+ const index_js_1 = require("../../openapi/index.js");
25
+ const util_js_1 = require("../util.js");
26
+ const build_js_1 = require("./build.js");
27
+ const openapi_js_1 = require("./openapi.js");
28
+ const postman_js_1 = require("./postman.js");
29
+ const report_js_1 = require("./report.js");
30
+ __exportStar(require("./types.js"), exports);
31
+ var build_js_2 = require("./build.js");
32
+ Object.defineProperty(exports, "DEFAULT_IMPORT_LIMITS", { enumerable: true, get: function () { return build_js_2.DEFAULT_IMPORT_LIMITS; } });
33
+ Object.defineProperty(exports, "buildDefinitionFromOperations", { enumerable: true, get: function () { return build_js_2.buildDefinitionFromOperations; } });
34
+ var paths_js_1 = require("./paths.js");
35
+ Object.defineProperty(exports, "toMockPath", { enumerable: true, get: function () { return paths_js_1.toMockPath; } });
36
+ Object.defineProperty(exports, "toParamName", { enumerable: true, get: function () { return paths_js_1.toParamName; } });
37
+ Object.defineProperty(exports, "pathParams", { enumerable: true, get: function () { return paths_js_1.pathParams; } });
38
+ Object.defineProperty(exports, "splitItemPath", { enumerable: true, get: function () { return paths_js_1.splitItemPath; } });
39
+ var postman_js_2 = require("./postman.js");
40
+ Object.defineProperty(exports, "redactSecrets", { enumerable: true, get: function () { return postman_js_2.redactSecrets; } });
41
+ var report_js_2 = require("./report.js");
42
+ Object.defineProperty(exports, "MockImportReportCollector", { enumerable: true, get: function () { return report_js_2.MockImportReportCollector; } });
43
+ class MockImportError extends Error {
44
+ code;
45
+ constructor(message, code) {
46
+ super(message);
47
+ this.code = code;
48
+ this.name = "MockImportError";
49
+ }
50
+ }
51
+ exports.MockImportError = MockImportError;
52
+ /** Which mock import format is this parsed document? */
53
+ const detectMockImportFormatFromObject = (doc) => {
54
+ if (!(0, util_js_1.isPlainObject)(doc))
55
+ return null;
56
+ if ((0, index_js_1.isOpenApiDocument)(doc))
57
+ return "openapi";
58
+ if ("collection" in doc && Array.isArray(doc.requests))
59
+ return "callman";
60
+ const info = (0, util_js_1.isPlainObject)(doc.info) ? doc.info : null;
61
+ const schema = info && typeof info.schema === "string" ? info.schema : "";
62
+ if (schema.includes("schema.getpostman.com") || (info && Array.isArray(doc.item)))
63
+ return "postman";
64
+ return null;
65
+ };
66
+ exports.detectMockImportFormatFromObject = detectMockImportFormatFromObject;
67
+ const parseInput = (input, parseYaml) => {
68
+ if ((0, util_js_1.isPlainObject)(input))
69
+ return input;
70
+ if (typeof input !== "string")
71
+ throw new MockImportError("Send the file content as text or a parsed object", "MOCK_IMPORT_UNREADABLE");
72
+ const text = input.replace(/^/, "");
73
+ try {
74
+ const parsed = JSON.parse(text);
75
+ if ((0, util_js_1.isPlainObject)(parsed))
76
+ return parsed;
77
+ }
78
+ catch {
79
+ // Not JSON — try YAML below.
80
+ }
81
+ if (parseYaml) {
82
+ try {
83
+ const parsed = parseYaml(text);
84
+ if ((0, util_js_1.isPlainObject)(parsed))
85
+ return parsed;
86
+ }
87
+ catch {
88
+ // Fall through.
89
+ }
90
+ }
91
+ throw new MockImportError(parseYaml ? "The file is not valid JSON or YAML" : "The file is not valid JSON (YAML needs a YAML loader)", "MOCK_IMPORT_UNREADABLE");
92
+ };
93
+ /** Turn an OpenAPI / Postman / Callman document into a mock definition draft. */
94
+ const importMockDefinition = (input, options = {}) => {
95
+ const doc = parseInput(input, options.parseYaml);
96
+ const format = options.format ?? (0, exports.detectMockImportFormatFromObject)(doc);
97
+ if (!format) {
98
+ throw new MockImportError("Unsupported file: import an OpenAPI/Swagger document, a Postman collection or a Callman collection", "MOCK_IMPORT_UNSUPPORTED");
99
+ }
100
+ const report = new report_js_1.MockImportReportCollector();
101
+ const parsed = format === "openapi"
102
+ ? (0, openapi_js_1.parseOpenApiOperations)(doc, options, report)
103
+ : format === "postman"
104
+ ? (0, postman_js_1.parsePostmanOperations)(doc, options, report)
105
+ : (0, postman_js_1.parseCallmanOperations)(doc, options, report);
106
+ if (parsed.operations.length === 0) {
107
+ throw new MockImportError("The file has no requests or operations to mock", "MOCK_IMPORT_EMPTY");
108
+ }
109
+ const name = options.name ?? parsed.name;
110
+ const built = (0, build_js_1.buildDefinitionFromOperations)(parsed.operations, { name, description: parsed.description, secured: parsed.secured }, options, report);
111
+ return {
112
+ format,
113
+ ...(name ? { name } : {}),
114
+ definition: built.definition,
115
+ report: report.build(format),
116
+ stats: { operations: parsed.operations.length, routes: built.routes, resources: built.resources, seedRecords: built.seedRecords },
117
+ };
118
+ };
119
+ exports.importMockDefinition = importMockDefinition;
120
+ //# sourceMappingURL=index.js.map