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,308 @@
1
+ "use strict";
2
+ // Template engine for mock responses — logic-free `{{ expr }}` placeholders.
3
+ //
4
+ // Backward compatible with the v1 resolver (backend template-resolver.ts):
5
+ // • A string that is exactly one placeholder keeps the value's type.
6
+ // • Unresolved: `null` for a whole placeholder, `""` inline.
7
+ // • A resolved string that still holds a placeholder is resolved again,
8
+ // up to MAX_DEPTH times.
9
+ // • The 11 v1 `faker.*` generators keep their exact vocabulary.
10
+ //
11
+ // v2 adds scopes (`request.path`, `result`, `record(s)`, paging values,
12
+ // `error.*`, `auth.*`, `session.id`, `mock.*`, `call.count`, login `token`),
13
+ // every core `$random*` generator (`{{$randomCity}}`, or `{{faker.city}}`),
14
+ // `random.uuid|string(n)|pick(a|b)`, and `now.epoch`. All randomness and time
15
+ // come from the injected runtime, so seeds and tests are reproducible.
16
+ // There are no conditionals, loops or helpers on purpose.
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.MOCK_TEMPLATE_CATALOG = exports.templateReferences = exports.resolveTemplateHeaders = exports.resolveMockTemplate = exports.evaluateTemplateExpression = exports.resolveDollarToken = void 0;
19
+ const postman_generators_js_1 = require("../templating/postman-generators.js");
20
+ const random_source_js_1 = require("../templating/random-source.js");
21
+ const util_js_1 = require("./util.js");
22
+ const MAX_DEPTH = 3;
23
+ const PLACEHOLDER = /\{\{\s*([^{}]+?)\s*\}\}/g;
24
+ const WHOLE_PLACEHOLDER = /^\{\{\s*([^{}]+?)\s*\}\}$/;
25
+ const HAS_PLACEHOLDER = /\{\{\s*[^{}]+?\s*\}\}/;
26
+ // ── v1 faker vocabulary (kept verbatim) ───────────────────────────────
27
+ const FIRST_NAMES = [
28
+ "Alex", "Sam", "Taylor", "Jordan", "Casey", "Morgan", "Riley",
29
+ "Quinn", "Avery", "Jamie", "Cameron", "Drew", "Skyler", "Reese",
30
+ ];
31
+ const LAST_NAMES = [
32
+ "Smith", "Johnson", "Lee", "Brown", "Garcia", "Martinez", "Davis",
33
+ "Miller", "Wilson", "Anderson", "Thomas", "Jackson", "White",
34
+ ];
35
+ const COMPANY_SUFFIXES = ["LLC", "Inc.", "Co.", "Ltd.", "Group", "Labs"];
36
+ const STREETS = ["Main", "Oak", "Pine", "Maple", "Cedar", "Elm", "Birch"];
37
+ const STREET_TYPES = ["St", "Ave", "Blvd", "Ln", "Rd"];
38
+ const CITIES = ["Springfield", "Riverside", "Franklin", "Greenville", "Bristol"];
39
+ const LOREM_WORDS = [
40
+ "lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing",
41
+ "elit", "sed", "do", "eiusmod", "tempor", "incididunt", "ut", "labore",
42
+ "et", "dolore", "magna", "aliqua",
43
+ ];
44
+ const pick = (rt, pool) => pool[Math.floor(rt.random.next() * pool.length)] ?? pool[0];
45
+ const int = (rt, min, max) => (0, util_js_1.randomIntBetween)(() => rt.random.next(), min, max);
46
+ const LEGACY_FAKER = {
47
+ email: (rt) => `${pick(rt, FIRST_NAMES).toLowerCase()}.${pick(rt, LAST_NAMES).toLowerCase()}@example.com`,
48
+ uuid: (rt) => (0, util_js_1.randomUuid)(() => rt.random.next()),
49
+ fullName: (rt) => `${pick(rt, FIRST_NAMES)} ${pick(rt, LAST_NAMES)}`,
50
+ firstName: (rt) => pick(rt, FIRST_NAMES),
51
+ lastName: (rt) => pick(rt, LAST_NAMES),
52
+ phone: (rt) => `+1-${int(rt, 200, 998)}-${int(rt, 100, 998)}-${String(int(rt, 0, 9998)).padStart(4, "0")}`,
53
+ address: (rt) => `${int(rt, 1, 9998)} ${pick(rt, STREETS)} ${pick(rt, STREET_TYPES)}, ${pick(rt, CITIES)}`,
54
+ company: (rt) => `${pick(rt, LAST_NAMES)} ${pick(rt, COMPANY_SUFFIXES)}`,
55
+ lorem: (rt) => Array.from({ length: int(rt, 8, 15) }, () => pick(rt, LOREM_WORDS)).join(" "),
56
+ boolean: (rt) => rt.random.next() >= 0.5,
57
+ int: (rt) => int(rt, 0, 999),
58
+ };
59
+ /** `$random*` tokens whose value is not a string. */
60
+ const TYPED_TOKENS = {
61
+ randomint: Number,
62
+ randomboolean: (raw) => raw === "true",
63
+ timestamp: Number,
64
+ randomprice: Number,
65
+ randomlatitude: Number,
66
+ randomlongitude: Number,
67
+ };
68
+ /** Resolve any core `$random*` token reproducibly through the runtime's random source. */
69
+ const resolveDollarToken = (name, rt) => {
70
+ const key = name.replace(/^\$/, "");
71
+ const raw = (0, random_source_js_1.withRandomSource)(() => rt.random.next(), () => (0, postman_generators_js_1.resolveBuiltinDollarToken)(key));
72
+ if (raw === undefined)
73
+ return undefined;
74
+ const coerce = TYPED_TOKENS[key.toLowerCase()];
75
+ return coerce ? coerce(raw) : raw;
76
+ };
77
+ exports.resolveDollarToken = resolveDollarToken;
78
+ const resolveFaker = (name, rt) => {
79
+ const legacy = LEGACY_FAKER[name];
80
+ if (legacy)
81
+ return legacy(rt);
82
+ // faker.city → $randomCity, faker.jobTitle → $randomJobTitle
83
+ const token = `random${name.charAt(0).toUpperCase()}${name.slice(1)}`;
84
+ return (0, exports.resolveDollarToken)(token, rt);
85
+ };
86
+ // ── random.* / now ────────────────────────────────────────────────────
87
+ const evalRandom = (expression, rt) => {
88
+ if (expression === "random.boolean")
89
+ return rt.random.next() >= 0.5;
90
+ if (expression === "random.uuid")
91
+ return (0, util_js_1.randomUuid)(() => rt.random.next());
92
+ const intMatch = expression.match(/^random\.int\(\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/);
93
+ if (intMatch) {
94
+ const min = Number(intMatch[1]);
95
+ const max = Number(intMatch[2]);
96
+ if (Number.isFinite(min) && Number.isFinite(max) && min <= max)
97
+ return int(rt, min, max);
98
+ }
99
+ const floatMatch = expression.match(/^random\.float\(\s*(-?\d+(?:\.\d+)?)\s*,\s*(-?\d+(?:\.\d+)?)\s*\)$/);
100
+ if (floatMatch) {
101
+ const min = Number(floatMatch[1]);
102
+ const max = Number(floatMatch[2]);
103
+ if (Number.isFinite(min) && Number.isFinite(max) && min <= max)
104
+ return rt.random.next() * (max - min) + min;
105
+ }
106
+ const stringMatch = expression.match(/^random\.string\(\s*(\d{1,3})\s*\)$/);
107
+ if (stringMatch) {
108
+ const length = Math.min(128, Math.max(1, Number(stringMatch[1])));
109
+ const alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
110
+ let out = "";
111
+ for (let i = 0; i < length; i += 1)
112
+ out += alphabet[Math.floor(rt.random.next() * alphabet.length)];
113
+ return out;
114
+ }
115
+ const pickMatch = expression.match(/^random\.pick\((.+)\)$/);
116
+ if (pickMatch) {
117
+ const options = pickMatch[1].split("|").map((option) => option.trim()).filter((option) => option.length > 0);
118
+ if (options.length > 0)
119
+ return pick(rt, options);
120
+ }
121
+ return undefined;
122
+ };
123
+ const NOW_OFFSET_RE = /^now\s*([+-])\s*(\d+)\s*([smhd])$/;
124
+ const UNIT_MS = { s: 1_000, m: 60_000, h: 3_600_000, d: 86_400_000 };
125
+ const evalNow = (expression, rt) => {
126
+ if (expression === "now")
127
+ return new Date(rt.now()).toISOString();
128
+ if (expression === "now.epoch")
129
+ return Math.floor(rt.now() / 1000);
130
+ const match = expression.match(NOW_OFFSET_RE);
131
+ if (!match)
132
+ return undefined;
133
+ const sign = match[1] === "+" ? 1 : -1;
134
+ const magnitude = Number(match[2]);
135
+ if (!Number.isFinite(magnitude))
136
+ return undefined;
137
+ return new Date(rt.now() + sign * magnitude * UNIT_MS[match[3]]).toISOString();
138
+ };
139
+ // ── Scopes ────────────────────────────────────────────────────────────
140
+ const evalRequest = (path, scope) => {
141
+ const segments = path.split(".");
142
+ const [head, ...rest] = segments;
143
+ const req = scope.request;
144
+ switch (head) {
145
+ case "params":
146
+ return (0, util_js_1.navigatePath)(req.params, rest);
147
+ case "query":
148
+ return (0, util_js_1.navigatePath)(req.query, rest);
149
+ case "headers":
150
+ if (rest.length === 0)
151
+ return undefined;
152
+ return rest.length === 1
153
+ ? (0, util_js_1.lookupHeader)(req.headers, rest[0])
154
+ : (0, util_js_1.navigatePath)((0, util_js_1.lookupHeader)(req.headers, rest[0]), rest.slice(1));
155
+ case "body":
156
+ return rest.length === 0 ? req.body : (0, util_js_1.navigatePath)(req.body, rest);
157
+ case "method":
158
+ return req.method;
159
+ case "path":
160
+ return req.path;
161
+ case "url":
162
+ return req.url;
163
+ default:
164
+ return undefined;
165
+ }
166
+ };
167
+ const GENERIC_SCOPES = new Set([
168
+ "result", "record", "records", "total", "page", "limit", "totalPages", "outcome", "created",
169
+ "error", "auth", "session", "mock", "call", "token", "expiresIn",
170
+ ]);
171
+ const evaluateTemplateExpression = (expression, scope, rt) => {
172
+ if (expression.startsWith("request."))
173
+ return evalRequest(expression.slice(8), scope);
174
+ if (expression === "request.body" || expression === "request")
175
+ return evalRequest("body", scope);
176
+ if (expression.startsWith("state."))
177
+ return (0, util_js_1.navigatePath)(scope.state ?? {}, expression.slice(6).split("."));
178
+ if (expression.startsWith("faker."))
179
+ return resolveFaker(expression.slice(6), rt);
180
+ if (expression.startsWith("$"))
181
+ return (0, exports.resolveDollarToken)(expression, rt);
182
+ if (expression.startsWith("random."))
183
+ return evalRandom(expression, rt);
184
+ if (expression === "now" || expression.startsWith("now+") || expression.startsWith("now-") || expression === "now.epoch") {
185
+ return evalNow(expression, rt);
186
+ }
187
+ const segments = expression.split(".");
188
+ const head = segments[0];
189
+ if (GENERIC_SCOPES.has(head) || Object.prototype.hasOwnProperty.call(scope, head)) {
190
+ if ((0, util_js_1.isForbiddenKey)(head))
191
+ return undefined;
192
+ const root = scope[head];
193
+ return segments.length === 1 ? root : (0, util_js_1.navigatePath)(root, segments.slice(1));
194
+ }
195
+ return undefined;
196
+ };
197
+ exports.evaluateTemplateExpression = evaluateTemplateExpression;
198
+ const resolveString = (raw, scope, rt, depth) => {
199
+ const whole = WHOLE_PLACEHOLDER.exec(raw);
200
+ if (whole) {
201
+ let value = (0, exports.evaluateTemplateExpression)(whole[1].trim(), scope, rt);
202
+ if (depth < MAX_DEPTH && typeof value === "string" && HAS_PLACEHOLDER.test(value)) {
203
+ value = resolveString(value, scope, rt, depth + 1);
204
+ }
205
+ return value === undefined ? null : value;
206
+ }
207
+ if (!HAS_PLACEHOLDER.test(raw))
208
+ return raw;
209
+ return raw.replace(PLACEHOLDER, (_match, expr) => {
210
+ const value = (0, exports.evaluateTemplateExpression)(expr.trim(), scope, rt);
211
+ if (value === undefined || value === null)
212
+ return "";
213
+ if (typeof value === "object")
214
+ return JSON.stringify(value);
215
+ return String(value);
216
+ });
217
+ };
218
+ const traverse = (node, scope, rt, depth) => {
219
+ if (typeof node === "string")
220
+ return resolveString(node, scope, rt, depth);
221
+ if (Array.isArray(node))
222
+ return node.map((item) => traverse(item, scope, rt, depth));
223
+ if (node && typeof node === "object") {
224
+ const out = {};
225
+ for (const [key, value] of Object.entries(node)) {
226
+ if ((0, util_js_1.isForbiddenKey)(key))
227
+ continue;
228
+ out[key] = traverse(value, scope, rt, depth);
229
+ }
230
+ return out;
231
+ }
232
+ return node;
233
+ };
234
+ /** Resolve every placeholder in a JSON tree. */
235
+ const resolveMockTemplate = (body, scope, rt) => traverse(body, scope, rt, 0);
236
+ exports.resolveMockTemplate = resolveMockTemplate;
237
+ /** Resolve header values (always strings). */
238
+ const resolveTemplateHeaders = (headers, scope, rt) => {
239
+ const out = {};
240
+ if (!headers)
241
+ return out;
242
+ for (const [name, value] of Object.entries(headers)) {
243
+ if ((0, util_js_1.isForbiddenKey)(name))
244
+ continue;
245
+ const resolved = typeof value === "string" ? resolveString(value, scope, rt, 0) : value;
246
+ out[name] = resolved === null || resolved === undefined ? "" : typeof resolved === "object" ? JSON.stringify(resolved) : String(resolved);
247
+ }
248
+ return out;
249
+ };
250
+ exports.resolveTemplateHeaders = resolveTemplateHeaders;
251
+ /** Does a template tree reference `<prefix>` (e.g. `auth.user`)? Used to load data lazily. */
252
+ const templateReferences = (node, prefix) => {
253
+ if (typeof node === "string") {
254
+ PLACEHOLDER.lastIndex = 0;
255
+ let match;
256
+ const re = new RegExp(PLACEHOLDER.source, "g");
257
+ while ((match = re.exec(node)) !== null) {
258
+ const expr = match[1].trim();
259
+ if (expr === prefix || expr.startsWith(`${prefix}.`))
260
+ return true;
261
+ }
262
+ return false;
263
+ }
264
+ if (Array.isArray(node))
265
+ return node.some((item) => (0, exports.templateReferences)(item, prefix));
266
+ if (node && typeof node === "object")
267
+ return Object.values(node).some((value) => (0, exports.templateReferences)(value, prefix));
268
+ return false;
269
+ };
270
+ exports.templateReferences = templateReferences;
271
+ /** Variables the editors offer for autocompletion (provided-only catalog). */
272
+ exports.MOCK_TEMPLATE_CATALOG = [
273
+ { token: "request.params.<name>", description: "Path parameter", group: "Request" },
274
+ { token: "request.query.<name>", description: "Query parameter", group: "Request" },
275
+ { token: "request.headers.<name>", description: "Request header", group: "Request" },
276
+ { token: "request.body", description: "Whole request body", group: "Request" },
277
+ { token: "request.body.<field>", description: "Field from the request body", group: "Request" },
278
+ { token: "request.method", description: "HTTP method", group: "Request" },
279
+ { token: "request.path", description: "Request path", group: "Request" },
280
+ { token: "record", description: "The record a data action read or wrote", group: "Data" },
281
+ { token: "records", description: "Records a list returned", group: "Data" },
282
+ { token: "result", description: "Raw result of a data action", group: "Data" },
283
+ { token: "total", description: "Total matching records", group: "Data" },
284
+ { token: "page", description: "Current page", group: "Data" },
285
+ { token: "limit", description: "Page size", group: "Data" },
286
+ { token: "totalPages", description: "Number of pages", group: "Data" },
287
+ { token: "error.message", description: "Error message (failure outcomes)", group: "Data" },
288
+ { token: "error.field", description: "Field that failed (conflict/validation)", group: "Data" },
289
+ { token: "error.invalidFields", description: "Every invalid field", group: "Data" },
290
+ { token: "auth.sub", description: "Signed-in user id", group: "Sign-in" },
291
+ { token: "auth.user.<field>", description: "Field of the signed-in user", group: "Sign-in" },
292
+ { token: "auth.claims.<name>", description: "Token claim", group: "Sign-in" },
293
+ { token: "session.id", description: "X-Mock-Session value", group: "Session" },
294
+ { token: "state.<key>", description: "Legacy state bucket", group: "State" },
295
+ { token: "faker.email", description: "Fake email", group: "Fake data" },
296
+ { token: "faker.fullName", description: "Fake full name", group: "Fake data" },
297
+ { token: "faker.uuid", description: "Random UUID", group: "Fake data" },
298
+ { token: "$randomCity", description: "Any core $random* generator", group: "Fake data" },
299
+ { token: "random.int(1,100)", description: "Random integer (inclusive)", group: "Random" },
300
+ { token: "random.float(0,1)", description: "Random number", group: "Random" },
301
+ { token: "random.boolean", description: "true or false", group: "Random" },
302
+ { token: "random.uuid", description: "Random UUID", group: "Random" },
303
+ { token: "random.pick(a|b|c)", description: "One of the options", group: "Random" },
304
+ { token: "now", description: "Current time (ISO)", group: "Time" },
305
+ { token: "now+1d", description: "Relative time (s, m, h, d)", group: "Time" },
306
+ { token: "now.epoch", description: "Unix seconds", group: "Time" },
307
+ ];
308
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/mock-engine/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ // `callman-core/mock-engine/testing` — a data-only conformance corpus for
3
+ // MockDataStore implementations. Every store (memory, file, Mongo) must
4
+ // return the same ids, in the same order, with the same total for each
5
+ // list query below. Hosts drive it from their own test runner.
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.MOCK_QUERY_CORPUS = exports.MOCK_QUERY_CORPUS_DEFINITION = void 0;
8
+ exports.MOCK_QUERY_CORPUS_DEFINITION = {
9
+ schemaVersion: 2,
10
+ name: "Conformance",
11
+ resources: [
12
+ {
13
+ resourceId: "res-products",
14
+ name: "products",
15
+ basePath: "/products",
16
+ idField: "id",
17
+ idStrategy: "incremental",
18
+ fields: [
19
+ { name: "name", type: "string", required: true },
20
+ { name: "price", type: "number" },
21
+ { name: "category", type: "string", nullable: true },
22
+ { name: "tags", type: "array", items: { type: "string" } },
23
+ { name: "stock", type: "integer" },
24
+ { name: "active", type: "boolean" },
25
+ { name: "meta", type: "object" },
26
+ ],
27
+ timestamps: { createdAt: null, updatedAt: null },
28
+ list: { envelope: "array", defaultLimit: null, maxLimit: 1000, totalCountHeader: true, linkHeader: true, filterMode: "declared", searchable: true },
29
+ seed: {
30
+ records: [
31
+ { id: 1, name: "Red Mug", price: 9.5, category: "kitchen", tags: ["red", "ceramic"], stock: 10, active: true, meta: { color: "red", size: "M" } },
32
+ { id: 2, name: "Blue Mug", price: 9.5, category: "kitchen", tags: ["blue", "ceramic"], stock: 0, active: false, meta: { color: "blue" } },
33
+ { id: 3, name: "Desk Lamp", price: 34, category: "office", tags: ["light"], stock: 4, active: true, meta: { color: "black", size: "L" } },
34
+ { id: 4, name: "Notebook", price: 3.25, category: "office", tags: [], stock: 120, active: true },
35
+ { id: 5, name: "Red Pen", price: 1.2, category: "office", tags: ["red"], stock: 300, active: true, meta: { color: "red" } },
36
+ { id: 6, name: "Chef Knife", price: 59.99, category: "kitchen", tags: ["steel"], stock: 2, active: true },
37
+ { id: 7, name: "Mystery Box", price: 15, category: null, tags: ["gift", "red"], stock: 1, active: false },
38
+ { id: 8, name: "Blue Pen", price: 1.2, category: "office", tags: ["blue"], stock: 0, active: true, meta: { color: "blue", size: "S" } },
39
+ ],
40
+ },
41
+ },
42
+ ],
43
+ };
44
+ exports.MOCK_QUERY_CORPUS = [
45
+ { name: "everything, insertion order", query: [], ids: [1, 2, 3, 4, 5, 6, 7, 8], total: 8 },
46
+ { name: "equality", query: [["category", "office"]], ids: [3, 4, 5, 8], total: 4 },
47
+ { name: "repeated param is OR", query: [["category", "kitchen"], ["category", "office"]], ids: [1, 2, 3, 4, 5, 6, 8], total: 7 },
48
+ { name: "number equality is typed", query: [["price", "9.5"]], ids: [1, 2], total: 2 },
49
+ { name: "boolean equality is typed", query: [["active", "false"]], ids: [2, 7], total: 2 },
50
+ { name: "null equality on a nullable field", query: [["category", "null"]], ids: [7], total: 1 },
51
+ { name: "_ne", query: [["category_ne", "office"]], ids: [1, 2, 6, 7], total: 4 },
52
+ { name: "_gt / _lte range", query: [["price_gt", "5"], ["price_lte", "34"]], ids: [1, 2, 3, 7], total: 4 },
53
+ { name: "_gte on integers", query: [["stock_gte", "100"]], ids: [4, 5], total: 2 },
54
+ { name: "_in", query: [["id_in", "2,4,6"]], ids: [2, 4, 6], total: 3 },
55
+ { name: "_nin", query: [["category_nin", "kitchen,office"]], ids: [7], total: 1 },
56
+ { name: "_like is a case-insensitive substring", query: [["name_like", "PEN"]], ids: [5, 8], total: 2 },
57
+ { name: "_like does not treat input as a regex", query: [["name_like", "m.g"]], ids: [], total: 0 },
58
+ { name: "_contains on an array", query: [["tags_contains", "red"]], ids: [1, 5, 7], total: 3 },
59
+ { name: "_exists on a missing object", query: [["meta_exists", "false"]], ids: [4, 6, 7], total: 3 },
60
+ { name: "nested path equality", query: [["meta.color", "blue"]], ids: [2, 8], total: 2 },
61
+ { name: "nested _exists", query: [["meta.size_exists", "true"]], ids: [1, 3, 8], total: 3 },
62
+ { name: "full-text q", query: [["q", "mug"]], ids: [1, 2], total: 2 },
63
+ { name: "sort ascending, ties keep insertion order", query: [["_sort", "price"]], ids: [5, 8, 4, 1, 2, 7, 3, 6], total: 8 },
64
+ { name: "sort descending", query: [["_sort", "-stock"]], ids: [5, 4, 1, 3, 6, 7, 2, 8], total: 8 },
65
+ { name: "multi-key sort", query: [["_sort", "category,-price"]], ids: [7, 6, 1, 2, 3, 4, 5, 8], total: 8 },
66
+ { name: "_order=desc", query: [["_sort", "name"], ["_order", "desc"]], ids: [5, 1, 4, 7, 3, 6, 8, 2], total: 8 },
67
+ { name: "_page / _limit", query: [["_page", "2"], ["_limit", "3"]], ids: [4, 5, 6], total: 8 },
68
+ { name: "_start / _end", query: [["_start", "6"], ["_end", "10"]], ids: [7, 8], total: 8 },
69
+ { name: "filter + sort + page", query: [["category", "office"], ["_sort", "-price"], ["_limit", "2"]], ids: [3, 4], total: 4 },
70
+ { name: "undeclared params are ignored (filterMode declared)", query: [["color", "red"]], ids: [1, 2, 3, 4, 5, 6, 7, 8], total: 8 },
71
+ ];
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mock-engine/testing/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ // Mock engine — the single source of truth for mock definitions and the
3
+ // runtime contract shared by the backend (MongoDB storage), the desktop
4
+ // (file storage, Electron main) and the renderer (previews, validation).
5
+ //
6
+ // Everything in this file is type-only; nothing here may import a value.
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mock-engine/types.ts"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,wEAAwE;AACxE,yEAAyE;AACzE,EAAE;AACF,yEAAyE"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ // Small, platform-neutral helpers. Nothing here may import `node:*` or use
3
+ // `Buffer`: the universal half of the engine runs in the renderer too.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.randomObjectId = exports.randomNanoId = exports.randomUuid = exports.randomIntBetween = exports.clamp = exports.firstQueryValue = exports.timingSafeEqualBytes = exports.fromUtf8 = exports.base64UrlDecode = exports.base64UrlEncode = exports.fromHex = exports.toHex = exports.deepClone = exports.lookupHeader = exports.getByPath = exports.navigatePath = exports.isForbiddenKey = exports.isPlainObject = exports.byteLength = exports.utf8 = void 0;
6
+ const encoder = new TextEncoder();
7
+ const utf8 = (value) => encoder.encode(value);
8
+ exports.utf8 = utf8;
9
+ const byteLength = (value) => encoder.encode(value).length;
10
+ exports.byteLength = byteLength;
11
+ const isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
12
+ exports.isPlainObject = isPlainObject;
13
+ const FORBIDDEN_KEYS = new Set(["__proto__", "constructor", "prototype"]);
14
+ const isForbiddenKey = (key) => FORBIDDEN_KEYS.has(key);
15
+ exports.isForbiddenKey = isForbiddenKey;
16
+ /** Navigate a dotted path; refuses prototype keys and non-object hops. */
17
+ const navigatePath = (root, segments) => {
18
+ let cursor = root;
19
+ for (const segment of segments) {
20
+ if (cursor === null || cursor === undefined)
21
+ return undefined;
22
+ if (typeof cursor !== "object")
23
+ return undefined;
24
+ if ((0, exports.isForbiddenKey)(segment))
25
+ return undefined;
26
+ if (!Object.prototype.hasOwnProperty.call(cursor, segment))
27
+ return undefined;
28
+ cursor = cursor[segment];
29
+ }
30
+ return cursor;
31
+ };
32
+ exports.navigatePath = navigatePath;
33
+ const getByPath = (root, path) => path === "" ? root : (0, exports.navigatePath)(root, path.split("."));
34
+ exports.getByPath = getByPath;
35
+ const lookupHeader = (headers, name) => {
36
+ const lower = name.toLowerCase();
37
+ if (Object.prototype.hasOwnProperty.call(headers, lower))
38
+ return headers[lower];
39
+ for (const key of Object.keys(headers)) {
40
+ if (key.toLowerCase() === lower)
41
+ return headers[key];
42
+ }
43
+ return undefined;
44
+ };
45
+ exports.lookupHeader = lookupHeader;
46
+ const deepClone = (value) => {
47
+ if (value === undefined)
48
+ return value;
49
+ if (typeof structuredClone === "function")
50
+ return structuredClone(value);
51
+ return JSON.parse(JSON.stringify(value));
52
+ };
53
+ exports.deepClone = deepClone;
54
+ const toHex = (bytes) => {
55
+ let out = "";
56
+ for (const byte of bytes)
57
+ out += byte.toString(16).padStart(2, "0");
58
+ return out;
59
+ };
60
+ exports.toHex = toHex;
61
+ const fromHex = (hex) => {
62
+ const clean = hex.length % 2 === 0 ? hex : `0${hex}`;
63
+ const out = new Uint8Array(clean.length / 2);
64
+ for (let i = 0; i < out.length; i += 1)
65
+ out[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16);
66
+ return out;
67
+ };
68
+ exports.fromHex = fromHex;
69
+ const BASE64URL = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
70
+ const base64UrlEncode = (bytes) => {
71
+ let out = "";
72
+ let i = 0;
73
+ for (; i + 2 < bytes.length; i += 3) {
74
+ const n = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
75
+ out += BASE64URL[(n >> 18) & 63] + BASE64URL[(n >> 12) & 63] + BASE64URL[(n >> 6) & 63] + BASE64URL[n & 63];
76
+ }
77
+ const rest = bytes.length - i;
78
+ if (rest === 1) {
79
+ const n = bytes[i] << 16;
80
+ out += BASE64URL[(n >> 18) & 63] + BASE64URL[(n >> 12) & 63];
81
+ }
82
+ else if (rest === 2) {
83
+ const n = (bytes[i] << 16) | (bytes[i + 1] << 8);
84
+ out += BASE64URL[(n >> 18) & 63] + BASE64URL[(n >> 12) & 63] + BASE64URL[(n >> 6) & 63];
85
+ }
86
+ return out;
87
+ };
88
+ exports.base64UrlEncode = base64UrlEncode;
89
+ const base64UrlDecode = (value) => {
90
+ const lookup = (char) => {
91
+ const index = BASE64URL.indexOf(char);
92
+ return index;
93
+ };
94
+ const clean = value.replace(/=+$/, "").replace(/\+/g, "-").replace(/\//g, "_");
95
+ const bytes = [];
96
+ let buffer = 0;
97
+ let bits = 0;
98
+ for (const char of clean) {
99
+ const v = lookup(char);
100
+ if (v < 0)
101
+ return null;
102
+ buffer = (buffer << 6) | v;
103
+ bits += 6;
104
+ if (bits >= 8) {
105
+ bits -= 8;
106
+ bytes.push((buffer >> bits) & 0xff);
107
+ }
108
+ }
109
+ return Uint8Array.from(bytes);
110
+ };
111
+ exports.base64UrlDecode = base64UrlDecode;
112
+ const decoder = new TextDecoder();
113
+ const fromUtf8 = (bytes) => decoder.decode(bytes);
114
+ exports.fromUtf8 = fromUtf8;
115
+ /** Constant-time comparison of two equal-length byte arrays. */
116
+ const timingSafeEqualBytes = (a, b) => {
117
+ if (a.length !== b.length)
118
+ return false;
119
+ let diff = 0;
120
+ for (let i = 0; i < a.length; i += 1)
121
+ diff |= a[i] ^ b[i];
122
+ return diff === 0;
123
+ };
124
+ exports.timingSafeEqualBytes = timingSafeEqualBytes;
125
+ /** First value of a parsed query param (Express `qs` may give arrays). */
126
+ const firstQueryValue = (query, name) => {
127
+ const raw = query[name];
128
+ if (raw === undefined || raw === null)
129
+ return undefined;
130
+ if (Array.isArray(raw))
131
+ return raw.length > 0 ? String(raw[0]) : undefined;
132
+ return String(raw);
133
+ };
134
+ exports.firstQueryValue = firstQueryValue;
135
+ const clamp = (value, min, max) => Math.min(max, Math.max(min, value));
136
+ exports.clamp = clamp;
137
+ /** Integer in [min, max] from a [0,1) random source. */
138
+ const randomIntBetween = (next, min, max) => {
139
+ const lo = Math.ceil(Math.min(min, max));
140
+ const hi = Math.floor(Math.max(min, max));
141
+ return Math.floor(next() * (hi - lo + 1)) + lo;
142
+ };
143
+ exports.randomIntBetween = randomIntBetween;
144
+ const HEX = "0123456789abcdef";
145
+ const randomUuid = (next) => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (token) => {
146
+ const v = Math.floor(next() * 16);
147
+ const r = token === "x" ? v : (v & 0x3) | 0x8;
148
+ return HEX[r];
149
+ });
150
+ exports.randomUuid = randomUuid;
151
+ const NANO_ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-";
152
+ const randomNanoId = (next, length = 21) => {
153
+ let out = "";
154
+ for (let i = 0; i < length; i += 1)
155
+ out += NANO_ALPHABET[Math.floor(next() * 64)];
156
+ return out;
157
+ };
158
+ exports.randomNanoId = randomNanoId;
159
+ const randomObjectId = (next, nowMs) => {
160
+ let out = Math.floor(nowMs / 1000).toString(16).padStart(8, "0");
161
+ for (let i = 0; i < 16; i += 1)
162
+ out += HEX[Math.floor(next() * 16)];
163
+ return out;
164
+ };
165
+ exports.randomObjectId = randomObjectId;
166
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/mock-engine/util.ts"],"names":[],"mappings":"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"}