@mionjs/run-types 0.8.7 → 0.8.10

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 (396) hide show
  1. package/.dist/cjs/index.d.ts +1 -0
  2. package/.dist/cjs/index.d.ts.map +1 -0
  3. package/.dist/cjs/src/constants.d.ts +1 -0
  4. package/.dist/cjs/src/constants.d.ts.map +1 -0
  5. package/.dist/cjs/src/constants.functions.d.ts +1 -0
  6. package/.dist/cjs/src/constants.functions.d.ts.map +1 -0
  7. package/.dist/cjs/src/constants.kind.d.ts +1 -0
  8. package/.dist/cjs/src/constants.kind.d.ts.map +1 -0
  9. package/.dist/cjs/src/createRunType.cjs +3 -1
  10. package/.dist/cjs/src/createRunType.cjs.map +1 -1
  11. package/.dist/cjs/src/createRunType.d.ts +1 -0
  12. package/.dist/cjs/src/createRunType.d.ts.map +1 -0
  13. package/.dist/cjs/src/createRunTypeFunctions.d.ts +1 -0
  14. package/.dist/cjs/src/createRunTypeFunctions.d.ts.map +1 -0
  15. package/.dist/cjs/src/formats.runtype.d.ts +1 -0
  16. package/.dist/cjs/src/formats.runtype.d.ts.map +1 -0
  17. package/.dist/cjs/src/jitCompilers/binary/binarySpec/binaryHelpers.d.ts +1 -0
  18. package/.dist/cjs/src/jitCompilers/binary/binarySpec/binaryHelpers.d.ts.map +1 -0
  19. package/.dist/cjs/src/jitCompilers/binary/fromBinary.cjs +1 -1
  20. package/.dist/cjs/src/jitCompilers/binary/fromBinary.cjs.map +1 -1
  21. package/.dist/cjs/src/jitCompilers/binary/fromBinary.d.ts +1 -0
  22. package/.dist/cjs/src/jitCompilers/binary/fromBinary.d.ts.map +1 -0
  23. package/.dist/cjs/src/jitCompilers/binary/toBinary.cjs +1 -1
  24. package/.dist/cjs/src/jitCompilers/binary/toBinary.cjs.map +1 -1
  25. package/.dist/cjs/src/jitCompilers/binary/toBinary.d.ts +1 -0
  26. package/.dist/cjs/src/jitCompilers/binary/toBinary.d.ts.map +1 -0
  27. package/.dist/cjs/src/jitCompilers/equalsHelpers.d.ts +1 -0
  28. package/.dist/cjs/src/jitCompilers/equalsHelpers.d.ts.map +1 -0
  29. package/.dist/cjs/src/jitCompilers/json/jsonSpec/jsonHelpers.d.ts +1 -0
  30. package/.dist/cjs/src/jitCompilers/json/jsonSpec/jsonHelpers.d.ts.map +1 -0
  31. package/.dist/cjs/src/jitCompilers/json/stringifyJson.cjs +1 -1
  32. package/.dist/cjs/src/jitCompilers/json/stringifyJson.cjs.map +1 -1
  33. package/.dist/cjs/src/jitCompilers/json/stringifyJson.d.ts +1 -0
  34. package/.dist/cjs/src/jitCompilers/json/stringifyJson.d.ts.map +1 -0
  35. package/.dist/cjs/src/jitCompilers/json/stringifySpec/stringifyHelpers.d.ts +1 -0
  36. package/.dist/cjs/src/jitCompilers/json/stringifySpec/stringifyHelpers.d.ts.map +1 -0
  37. package/.dist/cjs/src/jitCompilers/json/toJsCode.d.ts +1 -0
  38. package/.dist/cjs/src/jitCompilers/json/toJsCode.d.ts.map +1 -0
  39. package/.dist/cjs/src/lib/baseRunTypeFormat.d.ts +1 -0
  40. package/.dist/cjs/src/lib/baseRunTypeFormat.d.ts.map +1 -0
  41. package/.dist/cjs/src/lib/baseRunTypes.d.ts +1 -0
  42. package/.dist/cjs/src/lib/baseRunTypes.d.ts.map +1 -0
  43. package/.dist/cjs/src/lib/createJitFunction.d.ts +1 -0
  44. package/.dist/cjs/src/lib/createJitFunction.d.ts.map +1 -0
  45. package/.dist/cjs/src/lib/dkProxy.d.ts +1 -0
  46. package/.dist/cjs/src/lib/dkProxy.d.ts.map +1 -0
  47. package/.dist/cjs/src/lib/formats.d.ts +1 -0
  48. package/.dist/cjs/src/lib/formats.d.ts.map +1 -0
  49. package/.dist/cjs/src/lib/guards.d.ts +1 -0
  50. package/.dist/cjs/src/lib/guards.d.ts.map +1 -0
  51. package/.dist/cjs/src/lib/jitFnCompiler.d.ts +1 -0
  52. package/.dist/cjs/src/lib/jitFnCompiler.d.ts.map +1 -0
  53. package/.dist/cjs/src/lib/jitFnsRegistry.d.ts +1 -0
  54. package/.dist/cjs/src/lib/jitFnsRegistry.d.ts.map +1 -0
  55. package/.dist/cjs/src/lib/typeId.d.ts +1 -0
  56. package/.dist/cjs/src/lib/typeId.d.ts.map +1 -0
  57. package/.dist/cjs/src/lib/utils.d.ts +1 -0
  58. package/.dist/cjs/src/lib/utils.d.ts.map +1 -0
  59. package/.dist/cjs/src/mocking/constants.mock.d.ts +1 -0
  60. package/.dist/cjs/src/mocking/constants.mock.d.ts.map +1 -0
  61. package/.dist/cjs/src/mocking/mockRegistry.d.ts +1 -0
  62. package/.dist/cjs/src/mocking/mockRegistry.d.ts.map +1 -0
  63. package/.dist/cjs/src/mocking/mockType.cjs +46 -1
  64. package/.dist/cjs/src/mocking/mockType.cjs.map +1 -1
  65. package/.dist/cjs/src/mocking/mockType.d.ts +1 -0
  66. package/.dist/cjs/src/mocking/mockType.d.ts.map +1 -0
  67. package/.dist/cjs/src/mocking/mockUtils.d.ts +1 -0
  68. package/.dist/cjs/src/mocking/mockUtils.d.ts.map +1 -0
  69. package/.dist/cjs/src/nodes/atomic/any.d.ts +1 -0
  70. package/.dist/cjs/src/nodes/atomic/any.d.ts.map +1 -0
  71. package/.dist/cjs/src/nodes/atomic/bigInt.d.ts +1 -0
  72. package/.dist/cjs/src/nodes/atomic/bigInt.d.ts.map +1 -0
  73. package/.dist/cjs/src/nodes/atomic/boolean.d.ts +1 -0
  74. package/.dist/cjs/src/nodes/atomic/boolean.d.ts.map +1 -0
  75. package/.dist/cjs/src/nodes/atomic/date.d.ts +1 -0
  76. package/.dist/cjs/src/nodes/atomic/date.d.ts.map +1 -0
  77. package/.dist/cjs/src/nodes/atomic/enum.d.ts +1 -0
  78. package/.dist/cjs/src/nodes/atomic/enum.d.ts.map +1 -0
  79. package/.dist/cjs/src/nodes/atomic/enumMember.d.ts +1 -0
  80. package/.dist/cjs/src/nodes/atomic/enumMember.d.ts.map +1 -0
  81. package/.dist/cjs/src/nodes/atomic/literal.d.ts +1 -0
  82. package/.dist/cjs/src/nodes/atomic/literal.d.ts.map +1 -0
  83. package/.dist/cjs/src/nodes/atomic/never.d.ts +1 -0
  84. package/.dist/cjs/src/nodes/atomic/never.d.ts.map +1 -0
  85. package/.dist/cjs/src/nodes/atomic/null.d.ts +1 -0
  86. package/.dist/cjs/src/nodes/atomic/null.d.ts.map +1 -0
  87. package/.dist/cjs/src/nodes/atomic/number.d.ts +1 -0
  88. package/.dist/cjs/src/nodes/atomic/number.d.ts.map +1 -0
  89. package/.dist/cjs/src/nodes/atomic/object.d.ts +1 -0
  90. package/.dist/cjs/src/nodes/atomic/object.d.ts.map +1 -0
  91. package/.dist/cjs/src/nodes/atomic/regexp.d.ts +1 -0
  92. package/.dist/cjs/src/nodes/atomic/regexp.d.ts.map +1 -0
  93. package/.dist/cjs/src/nodes/atomic/string.d.ts +1 -0
  94. package/.dist/cjs/src/nodes/atomic/string.d.ts.map +1 -0
  95. package/.dist/cjs/src/nodes/atomic/symbol.d.ts +1 -0
  96. package/.dist/cjs/src/nodes/atomic/symbol.d.ts.map +1 -0
  97. package/.dist/cjs/src/nodes/atomic/undefined.d.ts +1 -0
  98. package/.dist/cjs/src/nodes/atomic/undefined.d.ts.map +1 -0
  99. package/.dist/cjs/src/nodes/atomic/unknown.d.ts +1 -0
  100. package/.dist/cjs/src/nodes/atomic/unknown.d.ts.map +1 -0
  101. package/.dist/cjs/src/nodes/atomic/void.d.ts +1 -0
  102. package/.dist/cjs/src/nodes/atomic/void.d.ts.map +1 -0
  103. package/.dist/cjs/src/nodes/collection/class.d.ts +1 -0
  104. package/.dist/cjs/src/nodes/collection/class.d.ts.map +1 -0
  105. package/.dist/cjs/src/nodes/collection/functionParams.d.ts +1 -0
  106. package/.dist/cjs/src/nodes/collection/functionParams.d.ts.map +1 -0
  107. package/.dist/cjs/src/nodes/collection/interface.d.ts +1 -0
  108. package/.dist/cjs/src/nodes/collection/interface.d.ts.map +1 -0
  109. package/.dist/cjs/src/nodes/collection/intersection.d.ts +1 -0
  110. package/.dist/cjs/src/nodes/collection/intersection.d.ts.map +1 -0
  111. package/.dist/cjs/src/nodes/collection/templateLiteral.cjs +73 -0
  112. package/.dist/cjs/src/nodes/collection/templateLiteral.cjs.map +1 -0
  113. package/.dist/cjs/src/nodes/collection/templateLiteral.d.ts +16 -0
  114. package/.dist/cjs/src/nodes/collection/templateLiteral.d.ts.map +1 -0
  115. package/.dist/cjs/src/nodes/collection/tuple.d.ts +1 -0
  116. package/.dist/cjs/src/nodes/collection/tuple.d.ts.map +1 -0
  117. package/.dist/cjs/src/nodes/collection/union.d.ts +1 -0
  118. package/.dist/cjs/src/nodes/collection/union.d.ts.map +1 -0
  119. package/.dist/cjs/src/nodes/collection/unionDiscriminator.d.ts +1 -0
  120. package/.dist/cjs/src/nodes/collection/unionDiscriminator.d.ts.map +1 -0
  121. package/.dist/cjs/src/nodes/function/function.d.ts +1 -0
  122. package/.dist/cjs/src/nodes/function/function.d.ts.map +1 -0
  123. package/.dist/cjs/src/nodes/member/array.d.ts +1 -0
  124. package/.dist/cjs/src/nodes/member/array.d.ts.map +1 -0
  125. package/.dist/cjs/src/nodes/member/callSignature.d.ts +1 -0
  126. package/.dist/cjs/src/nodes/member/callSignature.d.ts.map +1 -0
  127. package/.dist/cjs/src/nodes/member/genericMember.d.ts +1 -0
  128. package/.dist/cjs/src/nodes/member/genericMember.d.ts.map +1 -0
  129. package/.dist/cjs/src/nodes/member/indexProperty.cjs +69 -22
  130. package/.dist/cjs/src/nodes/member/indexProperty.cjs.map +1 -1
  131. package/.dist/cjs/src/nodes/member/indexProperty.d.ts +2 -0
  132. package/.dist/cjs/src/nodes/member/indexProperty.d.ts.map +1 -0
  133. package/.dist/cjs/src/nodes/member/method.d.ts +1 -0
  134. package/.dist/cjs/src/nodes/member/method.d.ts.map +1 -0
  135. package/.dist/cjs/src/nodes/member/methodSignature.d.ts +1 -0
  136. package/.dist/cjs/src/nodes/member/methodSignature.d.ts.map +1 -0
  137. package/.dist/cjs/src/nodes/member/param.d.ts +1 -0
  138. package/.dist/cjs/src/nodes/member/param.d.ts.map +1 -0
  139. package/.dist/cjs/src/nodes/member/property.d.ts +1 -0
  140. package/.dist/cjs/src/nodes/member/property.d.ts.map +1 -0
  141. package/.dist/cjs/src/nodes/member/restParams.d.ts +1 -0
  142. package/.dist/cjs/src/nodes/member/restParams.d.ts.map +1 -0
  143. package/.dist/cjs/src/nodes/member/tupleMember.d.ts +1 -0
  144. package/.dist/cjs/src/nodes/member/tupleMember.d.ts.map +1 -0
  145. package/.dist/cjs/src/nodes/native/Iterable.d.ts +1 -0
  146. package/.dist/cjs/src/nodes/native/Iterable.d.ts.map +1 -0
  147. package/.dist/cjs/src/nodes/native/map.d.ts +1 -0
  148. package/.dist/cjs/src/nodes/native/map.d.ts.map +1 -0
  149. package/.dist/cjs/src/nodes/native/nonSerializable.d.ts +1 -0
  150. package/.dist/cjs/src/nodes/native/nonSerializable.d.ts.map +1 -0
  151. package/.dist/cjs/src/nodes/native/promise.d.ts +1 -0
  152. package/.dist/cjs/src/nodes/native/promise.d.ts.map +1 -0
  153. package/.dist/cjs/src/nodes/native/set.d.ts +1 -0
  154. package/.dist/cjs/src/nodes/native/set.d.ts.map +1 -0
  155. package/.dist/cjs/src/run-types-pure-fns.d.ts +1 -0
  156. package/.dist/cjs/src/run-types-pure-fns.d.ts.map +1 -0
  157. package/.dist/cjs/src/types.d.ts +1 -0
  158. package/.dist/cjs/src/types.d.ts.map +1 -0
  159. package/.dist/esm/index.d.ts +1 -0
  160. package/.dist/esm/index.d.ts.map +1 -0
  161. package/.dist/esm/src/constants.d.ts +1 -0
  162. package/.dist/esm/src/constants.d.ts.map +1 -0
  163. package/.dist/esm/src/constants.functions.d.ts +1 -0
  164. package/.dist/esm/src/constants.functions.d.ts.map +1 -0
  165. package/.dist/esm/src/constants.kind.d.ts +1 -0
  166. package/.dist/esm/src/constants.kind.d.ts.map +1 -0
  167. package/.dist/esm/src/createRunType.d.ts +1 -0
  168. package/.dist/esm/src/createRunType.d.ts.map +1 -0
  169. package/.dist/esm/src/createRunType.js +3 -1
  170. package/.dist/esm/src/createRunType.js.map +1 -1
  171. package/.dist/esm/src/createRunTypeFunctions.d.ts +1 -0
  172. package/.dist/esm/src/createRunTypeFunctions.d.ts.map +1 -0
  173. package/.dist/esm/src/formats.runtype.d.ts +1 -0
  174. package/.dist/esm/src/formats.runtype.d.ts.map +1 -0
  175. package/.dist/esm/src/jitCompilers/binary/binarySpec/binaryHelpers.d.ts +1 -0
  176. package/.dist/esm/src/jitCompilers/binary/binarySpec/binaryHelpers.d.ts.map +1 -0
  177. package/.dist/esm/src/jitCompilers/binary/fromBinary.d.ts +1 -0
  178. package/.dist/esm/src/jitCompilers/binary/fromBinary.d.ts.map +1 -0
  179. package/.dist/esm/src/jitCompilers/binary/fromBinary.js +1 -1
  180. package/.dist/esm/src/jitCompilers/binary/fromBinary.js.map +1 -1
  181. package/.dist/esm/src/jitCompilers/binary/toBinary.d.ts +1 -0
  182. package/.dist/esm/src/jitCompilers/binary/toBinary.d.ts.map +1 -0
  183. package/.dist/esm/src/jitCompilers/binary/toBinary.js +1 -1
  184. package/.dist/esm/src/jitCompilers/binary/toBinary.js.map +1 -1
  185. package/.dist/esm/src/jitCompilers/equalsHelpers.d.ts +1 -0
  186. package/.dist/esm/src/jitCompilers/equalsHelpers.d.ts.map +1 -0
  187. package/.dist/esm/src/jitCompilers/json/jsonSpec/jsonHelpers.d.ts +1 -0
  188. package/.dist/esm/src/jitCompilers/json/jsonSpec/jsonHelpers.d.ts.map +1 -0
  189. package/.dist/esm/src/jitCompilers/json/stringifyJson.d.ts +1 -0
  190. package/.dist/esm/src/jitCompilers/json/stringifyJson.d.ts.map +1 -0
  191. package/.dist/esm/src/jitCompilers/json/stringifyJson.js +1 -1
  192. package/.dist/esm/src/jitCompilers/json/stringifyJson.js.map +1 -1
  193. package/.dist/esm/src/jitCompilers/json/stringifySpec/stringifyHelpers.d.ts +1 -0
  194. package/.dist/esm/src/jitCompilers/json/stringifySpec/stringifyHelpers.d.ts.map +1 -0
  195. package/.dist/esm/src/jitCompilers/json/toJsCode.d.ts +1 -0
  196. package/.dist/esm/src/jitCompilers/json/toJsCode.d.ts.map +1 -0
  197. package/.dist/esm/src/lib/baseRunTypeFormat.d.ts +1 -0
  198. package/.dist/esm/src/lib/baseRunTypeFormat.d.ts.map +1 -0
  199. package/.dist/esm/src/lib/baseRunTypes.d.ts +1 -0
  200. package/.dist/esm/src/lib/baseRunTypes.d.ts.map +1 -0
  201. package/.dist/esm/src/lib/createJitFunction.d.ts +1 -0
  202. package/.dist/esm/src/lib/createJitFunction.d.ts.map +1 -0
  203. package/.dist/esm/src/lib/dkProxy.d.ts +1 -0
  204. package/.dist/esm/src/lib/dkProxy.d.ts.map +1 -0
  205. package/.dist/esm/src/lib/formats.d.ts +1 -0
  206. package/.dist/esm/src/lib/formats.d.ts.map +1 -0
  207. package/.dist/esm/src/lib/guards.d.ts +1 -0
  208. package/.dist/esm/src/lib/guards.d.ts.map +1 -0
  209. package/.dist/esm/src/lib/jitFnCompiler.d.ts +1 -0
  210. package/.dist/esm/src/lib/jitFnCompiler.d.ts.map +1 -0
  211. package/.dist/esm/src/lib/jitFnsRegistry.d.ts +1 -0
  212. package/.dist/esm/src/lib/jitFnsRegistry.d.ts.map +1 -0
  213. package/.dist/esm/src/lib/typeId.d.ts +1 -0
  214. package/.dist/esm/src/lib/typeId.d.ts.map +1 -0
  215. package/.dist/esm/src/lib/utils.d.ts +1 -0
  216. package/.dist/esm/src/lib/utils.d.ts.map +1 -0
  217. package/.dist/esm/src/mocking/constants.mock.d.ts +1 -0
  218. package/.dist/esm/src/mocking/constants.mock.d.ts.map +1 -0
  219. package/.dist/esm/src/mocking/mockRegistry.d.ts +1 -0
  220. package/.dist/esm/src/mocking/mockRegistry.d.ts.map +1 -0
  221. package/.dist/esm/src/mocking/mockType.d.ts +1 -0
  222. package/.dist/esm/src/mocking/mockType.d.ts.map +1 -0
  223. package/.dist/esm/src/mocking/mockType.js +47 -2
  224. package/.dist/esm/src/mocking/mockType.js.map +1 -1
  225. package/.dist/esm/src/mocking/mockUtils.d.ts +1 -0
  226. package/.dist/esm/src/mocking/mockUtils.d.ts.map +1 -0
  227. package/.dist/esm/src/mocking/mockUtils.js +1 -1
  228. package/.dist/esm/src/nodes/atomic/any.d.ts +1 -0
  229. package/.dist/esm/src/nodes/atomic/any.d.ts.map +1 -0
  230. package/.dist/esm/src/nodes/atomic/bigInt.d.ts +1 -0
  231. package/.dist/esm/src/nodes/atomic/bigInt.d.ts.map +1 -0
  232. package/.dist/esm/src/nodes/atomic/boolean.d.ts +1 -0
  233. package/.dist/esm/src/nodes/atomic/boolean.d.ts.map +1 -0
  234. package/.dist/esm/src/nodes/atomic/date.d.ts +1 -0
  235. package/.dist/esm/src/nodes/atomic/date.d.ts.map +1 -0
  236. package/.dist/esm/src/nodes/atomic/enum.d.ts +1 -0
  237. package/.dist/esm/src/nodes/atomic/enum.d.ts.map +1 -0
  238. package/.dist/esm/src/nodes/atomic/enumMember.d.ts +1 -0
  239. package/.dist/esm/src/nodes/atomic/enumMember.d.ts.map +1 -0
  240. package/.dist/esm/src/nodes/atomic/literal.d.ts +1 -0
  241. package/.dist/esm/src/nodes/atomic/literal.d.ts.map +1 -0
  242. package/.dist/esm/src/nodes/atomic/never.d.ts +1 -0
  243. package/.dist/esm/src/nodes/atomic/never.d.ts.map +1 -0
  244. package/.dist/esm/src/nodes/atomic/null.d.ts +1 -0
  245. package/.dist/esm/src/nodes/atomic/null.d.ts.map +1 -0
  246. package/.dist/esm/src/nodes/atomic/number.d.ts +1 -0
  247. package/.dist/esm/src/nodes/atomic/number.d.ts.map +1 -0
  248. package/.dist/esm/src/nodes/atomic/object.d.ts +1 -0
  249. package/.dist/esm/src/nodes/atomic/object.d.ts.map +1 -0
  250. package/.dist/esm/src/nodes/atomic/regexp.d.ts +1 -0
  251. package/.dist/esm/src/nodes/atomic/regexp.d.ts.map +1 -0
  252. package/.dist/esm/src/nodes/atomic/string.d.ts +1 -0
  253. package/.dist/esm/src/nodes/atomic/string.d.ts.map +1 -0
  254. package/.dist/esm/src/nodes/atomic/symbol.d.ts +1 -0
  255. package/.dist/esm/src/nodes/atomic/symbol.d.ts.map +1 -0
  256. package/.dist/esm/src/nodes/atomic/undefined.d.ts +1 -0
  257. package/.dist/esm/src/nodes/atomic/undefined.d.ts.map +1 -0
  258. package/.dist/esm/src/nodes/atomic/unknown.d.ts +1 -0
  259. package/.dist/esm/src/nodes/atomic/unknown.d.ts.map +1 -0
  260. package/.dist/esm/src/nodes/atomic/void.d.ts +1 -0
  261. package/.dist/esm/src/nodes/atomic/void.d.ts.map +1 -0
  262. package/.dist/esm/src/nodes/collection/class.d.ts +1 -0
  263. package/.dist/esm/src/nodes/collection/class.d.ts.map +1 -0
  264. package/.dist/esm/src/nodes/collection/functionParams.d.ts +1 -0
  265. package/.dist/esm/src/nodes/collection/functionParams.d.ts.map +1 -0
  266. package/.dist/esm/src/nodes/collection/interface.d.ts +1 -0
  267. package/.dist/esm/src/nodes/collection/interface.d.ts.map +1 -0
  268. package/.dist/esm/src/nodes/collection/intersection.d.ts +1 -0
  269. package/.dist/esm/src/nodes/collection/intersection.d.ts.map +1 -0
  270. package/.dist/esm/src/nodes/collection/templateLiteral.d.ts +16 -0
  271. package/.dist/esm/src/nodes/collection/templateLiteral.d.ts.map +1 -0
  272. package/.dist/esm/src/nodes/collection/templateLiteral.js +73 -0
  273. package/.dist/esm/src/nodes/collection/templateLiteral.js.map +1 -0
  274. package/.dist/esm/src/nodes/collection/tuple.d.ts +1 -0
  275. package/.dist/esm/src/nodes/collection/tuple.d.ts.map +1 -0
  276. package/.dist/esm/src/nodes/collection/union.d.ts +1 -0
  277. package/.dist/esm/src/nodes/collection/union.d.ts.map +1 -0
  278. package/.dist/esm/src/nodes/collection/unionDiscriminator.d.ts +1 -0
  279. package/.dist/esm/src/nodes/collection/unionDiscriminator.d.ts.map +1 -0
  280. package/.dist/esm/src/nodes/function/function.d.ts +1 -0
  281. package/.dist/esm/src/nodes/function/function.d.ts.map +1 -0
  282. package/.dist/esm/src/nodes/member/array.d.ts +1 -0
  283. package/.dist/esm/src/nodes/member/array.d.ts.map +1 -0
  284. package/.dist/esm/src/nodes/member/callSignature.d.ts +1 -0
  285. package/.dist/esm/src/nodes/member/callSignature.d.ts.map +1 -0
  286. package/.dist/esm/src/nodes/member/genericMember.d.ts +1 -0
  287. package/.dist/esm/src/nodes/member/genericMember.d.ts.map +1 -0
  288. package/.dist/esm/src/nodes/member/indexProperty.d.ts +2 -0
  289. package/.dist/esm/src/nodes/member/indexProperty.d.ts.map +1 -0
  290. package/.dist/esm/src/nodes/member/indexProperty.js +70 -23
  291. package/.dist/esm/src/nodes/member/indexProperty.js.map +1 -1
  292. package/.dist/esm/src/nodes/member/method.d.ts +1 -0
  293. package/.dist/esm/src/nodes/member/method.d.ts.map +1 -0
  294. package/.dist/esm/src/nodes/member/methodSignature.d.ts +1 -0
  295. package/.dist/esm/src/nodes/member/methodSignature.d.ts.map +1 -0
  296. package/.dist/esm/src/nodes/member/param.d.ts +1 -0
  297. package/.dist/esm/src/nodes/member/param.d.ts.map +1 -0
  298. package/.dist/esm/src/nodes/member/property.d.ts +1 -0
  299. package/.dist/esm/src/nodes/member/property.d.ts.map +1 -0
  300. package/.dist/esm/src/nodes/member/restParams.d.ts +1 -0
  301. package/.dist/esm/src/nodes/member/restParams.d.ts.map +1 -0
  302. package/.dist/esm/src/nodes/member/tupleMember.d.ts +1 -0
  303. package/.dist/esm/src/nodes/member/tupleMember.d.ts.map +1 -0
  304. package/.dist/esm/src/nodes/native/Iterable.d.ts +1 -0
  305. package/.dist/esm/src/nodes/native/Iterable.d.ts.map +1 -0
  306. package/.dist/esm/src/nodes/native/map.d.ts +1 -0
  307. package/.dist/esm/src/nodes/native/map.d.ts.map +1 -0
  308. package/.dist/esm/src/nodes/native/nonSerializable.d.ts +1 -0
  309. package/.dist/esm/src/nodes/native/nonSerializable.d.ts.map +1 -0
  310. package/.dist/esm/src/nodes/native/promise.d.ts +1 -0
  311. package/.dist/esm/src/nodes/native/promise.d.ts.map +1 -0
  312. package/.dist/esm/src/nodes/native/set.d.ts +1 -0
  313. package/.dist/esm/src/nodes/native/set.d.ts.map +1 -0
  314. package/.dist/esm/src/run-types-pure-fns.d.ts +1 -0
  315. package/.dist/esm/src/run-types-pure-fns.d.ts.map +1 -0
  316. package/.dist/esm/src/types.d.ts +1 -0
  317. package/.dist/esm/src/types.d.ts.map +1 -0
  318. package/index.ts +70 -0
  319. package/package.json +8 -4
  320. package/src/constants.functions.ts +196 -0
  321. package/src/constants.kind.ts +76 -0
  322. package/src/constants.ts +85 -0
  323. package/src/createRunType.ts +322 -0
  324. package/src/createRunTypeFunctions.ts +93 -0
  325. package/src/formats.runtype.ts +35 -0
  326. package/src/jitCompilers/binary/binarySPEC.md +138 -0
  327. package/src/jitCompilers/binary/binarySpec/binaryHelpers.ts +118 -0
  328. package/src/jitCompilers/binary/fromBinary.ts +493 -0
  329. package/src/jitCompilers/binary/toBinary.ts +436 -0
  330. package/src/jitCompilers/equalsHelpers.ts +62 -0
  331. package/src/jitCompilers/json/jsonSpec/jsonHelpers.ts +64 -0
  332. package/src/jitCompilers/json/stringifyJson.ts +476 -0
  333. package/src/jitCompilers/json/stringifySpec/stringifyHelpers.ts +59 -0
  334. package/src/jitCompilers/json/toJsCode.ts +182 -0
  335. package/src/jitCompilers/serialization-suite.ts +1689 -0
  336. package/src/jitCompilers/xyz-Template/fromXYZ.ts +212 -0
  337. package/src/jitCompilers/xyz-Template/toXYZ.ts +217 -0
  338. package/src/jitCompilers/xyz-Template/xyzReadme.md +6 -0
  339. package/src/jitCompilers/xyz-Template/xyzSpec/xyzHelpers.ts +66 -0
  340. package/src/lib/baseRunTypeFormat.ts +320 -0
  341. package/src/lib/baseRunTypes.ts +367 -0
  342. package/src/lib/createJitFunction.ts +87 -0
  343. package/src/lib/dkProxy.ts +47 -0
  344. package/src/lib/formats.ts +144 -0
  345. package/src/lib/guards.ts +290 -0
  346. package/src/lib/jitFnCompiler.ts +783 -0
  347. package/src/lib/jitFnsRegistry.ts +53 -0
  348. package/src/lib/typeId.ts +225 -0
  349. package/src/lib/utils.ts +402 -0
  350. package/src/mocking/constants.mock.ts +87 -0
  351. package/src/mocking/mockRegistry.ts +20 -0
  352. package/src/mocking/mockType.ts +409 -0
  353. package/src/mocking/mockUtils.ts +82 -0
  354. package/src/nodes/atomic/any.ts +22 -0
  355. package/src/nodes/atomic/bigInt.ts +26 -0
  356. package/src/nodes/atomic/boolean.ts +26 -0
  357. package/src/nodes/atomic/date.ts +26 -0
  358. package/src/nodes/atomic/enum.ts +23 -0
  359. package/src/nodes/atomic/enumMember.ts +29 -0
  360. package/src/nodes/atomic/literal.ts +125 -0
  361. package/src/nodes/atomic/never.ts +26 -0
  362. package/src/nodes/atomic/null.ts +26 -0
  363. package/src/nodes/atomic/number.ts +26 -0
  364. package/src/nodes/atomic/object.ts +20 -0
  365. package/src/nodes/atomic/regexp.ts +29 -0
  366. package/src/nodes/atomic/string.ts +20 -0
  367. package/src/nodes/atomic/symbol.ts +31 -0
  368. package/src/nodes/atomic/undefined.ts +23 -0
  369. package/src/nodes/atomic/unknown.ts +10 -0
  370. package/src/nodes/atomic/void.ts +26 -0
  371. package/src/nodes/collection/class.ts +36 -0
  372. package/src/nodes/collection/functionParams.ts +42 -0
  373. package/src/nodes/collection/interface.ts +300 -0
  374. package/src/nodes/collection/intersection.ts +30 -0
  375. package/src/nodes/collection/templateLiteral.ts +87 -0
  376. package/src/nodes/collection/tuple.ts +80 -0
  377. package/src/nodes/collection/union.ts +205 -0
  378. package/src/nodes/collection/unionDiscriminator.ts +259 -0
  379. package/src/nodes/function/function.ts +166 -0
  380. package/src/nodes/member/array.ts +150 -0
  381. package/src/nodes/member/callSignature.ts +34 -0
  382. package/src/nodes/member/genericMember.ts +63 -0
  383. package/src/nodes/member/indexProperty.ts +174 -0
  384. package/src/nodes/member/method.ts +30 -0
  385. package/src/nodes/member/methodSignature.ts +31 -0
  386. package/src/nodes/member/param.ts +22 -0
  387. package/src/nodes/member/property.ts +75 -0
  388. package/src/nodes/member/restParams.ts +22 -0
  389. package/src/nodes/member/tupleMember.ts +93 -0
  390. package/src/nodes/native/Iterable.ts +153 -0
  391. package/src/nodes/native/map.ts +91 -0
  392. package/src/nodes/native/nonSerializable.ts +42 -0
  393. package/src/nodes/native/promise.ts +43 -0
  394. package/src/nodes/native/set.ts +56 -0
  395. package/src/run-types-pure-fns.ts +116 -0
  396. package/src/types.ts +206 -0
@@ -0,0 +1,87 @@
1
+ /* ########
2
+ * 2024 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+
8
+ import {MockOptions} from '../types.ts';
9
+
10
+ export const mockRegExpsList = [
11
+ /abc/, // Matches the string 'abc'
12
+ /def/, // Matches the string 'def'
13
+ /123/, // Matches the string '123'
14
+ /xyz/, // Matches the string 'xyz'
15
+ /[\w]+/, // Matches one or more word characters
16
+ /\d{3}-\d{3}-\d{4}/, // Matches a phone number in the format XXX-XXX-XXXX
17
+ /[A-Z]/, // Matches a single uppercase letter
18
+ /[a-z]/, // Matches a single lowercase letter
19
+ /\d+/, // Matches one or more digits
20
+ /\s+/, // Matches one or more whitespace characters
21
+ /^https:\/\/[\w.-]+\.[a-zA-Z]{2,}$/i, // Matches a URL starting with http:// or https://
22
+ /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/i, // Matches an email address
23
+ /\b\d{2}\/\d{2}\/\d{4}\b/, // Matches a date in the format MM/DD/YYYY
24
+ /\b\d{1,2}:\d{2}\b/, // Matches a time in the format HH:MM
25
+ /\b\d{1,2}:\d{2}:\d{2}\b/, // Matches a time in the format HH:MM:SS
26
+ /\b\d{1,2}\/\d{1,2}\/\d{2}\b/, // Matches a date in the format M/D/YY
27
+ /\b\d{1,2}\/\d{1,2}\/\d{4}\b/, // Matches a date in the format M/D/YYYY
28
+ /\b\d{1,2}:\d{2}:\d{2} [AP]M\b/, // Matches a time in the format HH:MM:SS AM/PM
29
+ /\b\d{1,2}:\d{2} [AP]M\b/, // Matches a time in the format HH:MM AM/PM
30
+ /abc/gi, // Matches the string 'abc' with the global and case-insensitive flags
31
+ /['"]/, // regexp that contains single and double quotes
32
+ /\/(.*)\/(.*)?/, // regexp that contains a slash
33
+ /\/\//, // regexp that contains two slashes
34
+ /`/, // regexp that contains backticks
35
+ /\/\\\//, // regexp double scaped \\
36
+ ];
37
+
38
+ export const stringCharSet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 .>?<~!@#$%^&*()_+-=[]{}|;:,';
39
+ export const emailLocalPartSymbols = '._%-';
40
+
41
+ export const anyValuesList = [
42
+ {},
43
+ {hello: 'world'},
44
+ [],
45
+ [1, 3, 'hello'],
46
+ 'hello',
47
+ 1234,
48
+ BigInt(1),
49
+ true,
50
+ false,
51
+ null,
52
+ undefined,
53
+ Symbol('hello'),
54
+ -124,
55
+ 0,
56
+ 124,
57
+ 0.1,
58
+ -0.1,
59
+ Infinity,
60
+ NaN,
61
+ new Date(),
62
+ /abc/,
63
+ new Map([
64
+ ['zero', 0],
65
+ ['one', 1],
66
+ ['two', 2],
67
+ ['three', 3],
68
+ ['four', 4],
69
+ ]),
70
+ new Set(['zero', 1, 2, 3, 'four']),
71
+ ];
72
+
73
+ export const mockObjectList = [{}, {a: 1}, {b: 2}, {a: 1, b: 'hello'}, {a: 1, b: 2, c: 3}, {a: 'hello', b: 2, c: 'wold', d: 4}];
74
+
75
+ export const defaultMockOptions = {
76
+ anyValuesList,
77
+ promiseTimeOut: 1,
78
+ regexpList: mockRegExpsList,
79
+ maxRandomStringLength: 100,
80
+ stringCharSet,
81
+ maxRandomItemsLength: 60,
82
+ /** probability to generate options types, number between 0 and 1 */
83
+ optionalProbability: 0.5,
84
+ objectList: mockObjectList,
85
+ maxStackDepth: 50,
86
+ maxMockRecursion: 10,
87
+ } satisfies MockOptions;
@@ -0,0 +1,20 @@
1
+ /* ########
2
+ * 2025 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+
8
+ import {JitFnCompiler} from '../lib/jitFnCompiler.ts';
9
+
10
+ // TODO, as mock could return results async with mock promises
11
+ // we might need an unique JitCompiler, for each mock to avoid problems with the stack
12
+ const mockCompCache = new Map<string, JitFnCompiler>();
13
+
14
+ export function getMockCompiler(fnHash: string): JitFnCompiler {
15
+ return mockCompCache.get(fnHash)!;
16
+ }
17
+
18
+ export function setMockCompiler(fnHash: string, comp: JitFnCompiler): void {
19
+ mockCompCache.set(fnHash, comp);
20
+ }
@@ -0,0 +1,409 @@
1
+ /* ########
2
+ * 2025 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+
8
+ import {ReflectionKind} from '@deepkit/type';
9
+ import type {MockOptions, Mutable, RunTypeOptions} from '../types.ts';
10
+ import type {BaseRunType} from '../lib/baseRunTypes.ts';
11
+ import {mockString, mockNumber, mockBoolean, mockBigInt, mockDate, random, mockRegExp, mockSymbol, mockAny} from './mockUtils.ts';
12
+ import {stringCharSet} from './constants.mock.ts';
13
+ import {ClassRunType} from '../nodes/collection/class.ts';
14
+ import type {PropertyRunType} from '../nodes/member/property.ts';
15
+ import type {MapRunType} from '../nodes/native/map.ts';
16
+ import type {SetRunType} from '../nodes/native/set.ts';
17
+ import type {InterfaceRunType} from '../nodes/collection/interface.ts';
18
+ import type {TupleRunType} from '../nodes/collection/tuple.ts';
19
+ import type {FunctionParamsRunType} from '../nodes/collection/functionParams.ts';
20
+ import type {UnionRunType} from '../nodes/collection/union.ts';
21
+ import type {EnumRunType} from '../nodes/atomic/enum.ts';
22
+ import type {PromiseRunType} from '../nodes/native/promise.ts';
23
+ import type {ParameterRunType} from '../nodes/member/param.ts';
24
+ import type {RestParamsRunType} from '../nodes/member/restParams.ts';
25
+ import {ReflectionSubKind} from '../constants.kind.ts';
26
+ import {NonSerializableRunType} from '../nodes/native/nonSerializable.ts';
27
+ import {IndexSignatureRunType} from '../nodes/member/indexProperty.ts';
28
+ import {getRunTypeFormat, getRunTypeTransformer} from '../lib/formats.ts';
29
+ import {JIT_STACK_TRACE_MESSAGE} from '../constants.ts';
30
+ import {JitFunctions} from '../constants.functions.ts';
31
+ import type {ArrayRunType} from '../nodes/member/array.ts';
32
+ import {getJitUtils} from '@mionjs/core';
33
+ import {MockJitCompiler, type JitFnCompiler} from '../lib/jitFnCompiler.ts';
34
+
35
+ export function mockType(runType: BaseRunType, comp: JitFnCompiler, stack: BaseRunType[] = []): any {
36
+ // TODO: we could use JitCompiler functionality here to controls the stack etc
37
+ stack.push(runType);
38
+ const mockNestLevel = stack.filter((rt) => rt === runType).length;
39
+ const rtOpts = comp.opts;
40
+ const updatedOps = mockNestLevel ? getMockOptionsForNestedElements(rtOpts, mockNestLevel) : comp.opts;
41
+ (comp as Mutable<JitFnCompiler>).opts = updatedOps;
42
+ // Just one type validator allowed per type, and is responsible to mock the value,
43
+ // ie: email and uuid should contain the logic to generate a valid value
44
+ const typeValidator = getRunTypeFormat(runType);
45
+ let mocked = typeValidator ? typeValidator.mock(updatedOps, runType) : _mockType(runType, comp, stack);
46
+ (comp as Mutable<JitFnCompiler>).opts = rtOpts;
47
+ // once mocked multiple type transformers can be applied to the mocked value
48
+ const typeTransformer = getRunTypeTransformer(runType);
49
+ if (typeTransformer) {
50
+ const compiledFormatter = runType.createJitCompiledFunction(JitFunctions.format.id);
51
+ mocked = compiledFormatter.isNoop ? mocked : compiledFormatter.fn(mocked);
52
+ }
53
+ stack.pop();
54
+ return mocked;
55
+ }
56
+
57
+ // reduces all probabilities within the MockOptions to prevent infinite loops
58
+ // each time mocking is a level deeper, the probabilities to generate an optional property should be reduced
59
+ // this does not prevent infinite loops on types with circular references that are non optional,
60
+ // we probably should throw an error in this case but these kind of types are technically not possible in real world so we can ignore them for now
61
+ function getMockOptionsForNestedElements(opts: RunTypeOptions, nestLevel: number): RunTypeOptions {
62
+ const mOps = opts.mock as MockOptions;
63
+ const maxDepth = mOps.maxMockRecursion;
64
+ const divisor = nestLevel;
65
+ const {optionalProbability, maxRandomItemsLength: maxRandomArrayLength, optionalPropertyProbability, arrayLength} = mOps;
66
+ const newProv = nestLevel >= maxDepth ? 0 : optionalProbability / divisor;
67
+ const newMaxLength = nestLevel >= maxDepth ? 0 : Math.round(maxRandomArrayLength / divisor);
68
+ // console.log(`divisor: ${divisor} | newMaxLength: ${newMaxLength} | newProv: ${newProv}`);
69
+ const ret = {
70
+ mock: {
71
+ ...mOps,
72
+ optionalProbability: newProv,
73
+ maxRandomItemsLength: newMaxLength,
74
+ },
75
+ } satisfies RunTypeOptions;
76
+ if (optionalPropertyProbability) {
77
+ const entries = Object.entries(optionalPropertyProbability).map(([key, value]) => {
78
+ const newProv = nestLevel > maxDepth ? 0 : value / divisor;
79
+ return [key, value / newProv];
80
+ });
81
+ ret.mock.optionalPropertyProbability = Object.fromEntries(entries);
82
+ }
83
+ if (arrayLength) {
84
+ const newLength = nestLevel >= maxDepth ? 0 : Math.round(arrayLength / divisor);
85
+ ret.mock.arrayLength = newLength;
86
+ }
87
+ if (ret.mock.parentObj) ret.mock.parentObj = {}; // prevents mocking objects with circular references
88
+ return ret;
89
+ }
90
+
91
+ /**
92
+ * Centralized mock function with a giant switch statement that handles all node types.
93
+ * This function is similar to createRunType in runType.ts but for mocking.
94
+ */
95
+ function _mockType(runType: BaseRunType, comp: JitFnCompiler, stack: BaseRunType[]): any {
96
+ // Handle circular references
97
+ const mOps = comp.opts.mock as MockOptions;
98
+ const recursionLevel = stack.filter((rt) => rt === runType).length;
99
+ const src = runType.src;
100
+ const kind = src.kind;
101
+ if (recursionLevel > mOps.maxMockRecursion) return undefined;
102
+
103
+ switch (kind) {
104
+ case ReflectionKind.never:
105
+ throw new Error('Cannot mock never type.' + printStackTrace(comp, stack));
106
+ case ReflectionKind.any:
107
+ case ReflectionKind.unknown:
108
+ return mockAny(mOps.anyValuesList);
109
+ // Atomic types
110
+ case ReflectionKind.string:
111
+ return mockString(mOps.stringLength || random(1, mOps.maxRandomStringLength), mOps.stringCharSet || stringCharSet);
112
+ case ReflectionKind.number:
113
+ return mockNumber(mOps.minNumber, mOps.maxNumber);
114
+ case ReflectionKind.boolean:
115
+ return mockBoolean();
116
+ case ReflectionKind.bigint:
117
+ return mockBigInt(mOps.minNumber, mOps.maxNumber);
118
+ case ReflectionKind.null:
119
+ return null;
120
+ case ReflectionKind.undefined:
121
+ return undefined;
122
+ case ReflectionKind.void:
123
+ return undefined;
124
+ case ReflectionKind.regexp:
125
+ return mockRegExp(mOps.regexpList);
126
+ case ReflectionKind.symbol:
127
+ return mockSymbol(mOps.symbolName, mOps.symbolLength, mOps.symbolCharSet);
128
+ case ReflectionKind.literal:
129
+ return src.literal;
130
+ case ReflectionKind.object:
131
+ return mOps.objectList[random(0, mOps.objectList.length - 1)];
132
+ case ReflectionKind.enum: {
133
+ const rt = runType as EnumRunType;
134
+ const i = mOps.enumIndex || random(0, rt.src.values.length - 1);
135
+ return rt.src.values[i];
136
+ }
137
+ case ReflectionKind.enumMember:
138
+ throw new Error('Mock enum member is not supported.' + printStackTrace(comp, stack));
139
+ // Collection types
140
+ case ReflectionKind.array: {
141
+ const rt = runType as ArrayRunType;
142
+ const length = mOps.arrayLength ?? random(0, mOps.maxRandomItemsLength);
143
+ if (length === 0) return [];
144
+ return Array.from({length}, () => mockType(rt.getMemberType(), comp, stack));
145
+ }
146
+
147
+ case ReflectionKind.tuple: {
148
+ const rt = runType as TupleRunType;
149
+ const options = mOps.tupleOptions;
150
+ const params = rt.getChildRunTypes().map((p, i) => mockType(p, getChildOpts(comp, options?.[i]), stack));
151
+ if (rt.hasRestParameter(comp)) {
152
+ return [...params.slice(0, -1), ...params[params.length - 1]];
153
+ }
154
+ return params;
155
+ }
156
+ case ReflectionKind.intersection:
157
+ case ReflectionKind.objectLiteral: {
158
+ if (runType instanceof NonSerializableRunType) {
159
+ throw new Error(`Mock is disabled for Non Serializable types.` + printStackTrace(comp, stack));
160
+ } else {
161
+ const rt = runType as InterfaceRunType;
162
+ if (rt.isCallable()) return mockType(rt.getCallSignature()!, comp, stack);
163
+ let obj: Record<string | number, any> = mOps.parentObj || {};
164
+ rt.getChildRunTypes().forEach((prop) => {
165
+ if (prop instanceof IndexSignatureRunType) {
166
+ obj = {...obj, ...mockType(prop, comp, stack)};
167
+ return;
168
+ }
169
+ const name = (prop as PropertyRunType).getChildVarName(comp);
170
+ const isMethod = prop.src.kind === ReflectionKind.method || prop.src.kind === ReflectionKind.methodSignature;
171
+ if (isMethod) return; // skip mocking methods
172
+ obj[name] = mockType(prop, comp, stack);
173
+ });
174
+ return obj;
175
+ }
176
+ }
177
+ case ReflectionKind.class:
178
+ return _mockClass(runType, comp, stack);
179
+ case ReflectionKind.union: {
180
+ const rt = runType as UnionRunType;
181
+ if (mOps.unionIndex && (mOps.unionIndex < 0 || mOps.unionIndex >= rt.getChildRunTypes().length)) {
182
+ throw new Error(
183
+ 'unionIndex must be between 0 and the number of types in the union.' + printStackTrace(comp, stack)
184
+ );
185
+ }
186
+ const index = mOps?.unionIndex ?? random(0, rt.getChildRunTypes().length - 1);
187
+ return mockType(rt.getChildRunTypes()[index], comp, stack);
188
+ }
189
+
190
+ case ReflectionKind.function:
191
+ case ReflectionKind.callSignature:
192
+ case ReflectionKind.method:
193
+ case ReflectionKind.methodSignature:
194
+ if (runType.src.subKind === ReflectionSubKind.params) {
195
+ const rt = runType as FunctionParamsRunType;
196
+ const options = mOps.tupleOptions;
197
+ const params = rt.getParamRunTypes(comp).map((p, i) => mockType(p, getChildOpts(comp, options?.[i]), stack));
198
+ if (rt.hasRestParameter(comp)) {
199
+ return [...params.slice(0, -1), ...params[params.length - 1]];
200
+ }
201
+ return params;
202
+ } else if (runType.src.kind === ReflectionKind.method || runType.src.kind === ReflectionKind.methodSignature) {
203
+ return undefined; // Skip methods silently
204
+ } else {
205
+ throw new Error('Mock is not allowed, call mockParams or mockReturn instead.' + printStackTrace(comp, stack));
206
+ }
207
+ case ReflectionKind.promise: {
208
+ const rt = runType as PromiseRunType;
209
+ const timeOut = mOps.promiseTimeOut || 1;
210
+ return new Promise((resolve, reject) => {
211
+ if (timeOut > 0) {
212
+ setTimeout(() => {
213
+ if (mOps.promiseReject) reject(mOps.promiseReject);
214
+ else resolve(mockType(rt.getMemberType(), comp, stack));
215
+ }, timeOut);
216
+ return;
217
+ }
218
+ if (mOps.promiseReject) reject(mOps.promiseReject);
219
+ else resolve(mockType(rt.getMemberType(), comp, stack));
220
+ });
221
+ }
222
+ // Member types
223
+ case ReflectionKind.tupleMember:
224
+ case ReflectionKind.parameter: {
225
+ const rt = runType as ParameterRunType;
226
+ if (!rt.getJitChild(comp)) return undefined; // non serializable types are set to undefined
227
+ if (rt.isOptional() && !rt.isRest()) {
228
+ const probability = mOps.optionalProbability;
229
+ if (probability < 0 || probability > 1)
230
+ throw new Error('optionalProbability must be between 0 and 1' + printStackTrace(comp, stack));
231
+ if (Math.random() > probability) {
232
+ return undefined;
233
+ }
234
+ }
235
+ return mockType(rt.getMemberType(), comp, stack);
236
+ }
237
+ case ReflectionKind.propertySignature:
238
+ case ReflectionKind.property: {
239
+ const rt = runType as PropertyRunType;
240
+ const probability = mOps.optionalPropertyProbability?.[rt.getChildVarName(comp)] ?? mOps.optionalProbability;
241
+ if (probability < 0 || probability > 1)
242
+ throw new Error('optionalProbability must be between 0 and 1' + printStackTrace(comp, stack));
243
+ if (rt.src.optional && Math.random() > probability) return undefined;
244
+ return mockType(rt.getMemberType(), comp, stack);
245
+ }
246
+
247
+ case ReflectionKind.rest: {
248
+ const rt = runType as RestParamsRunType;
249
+ const length = random(0, mOps.maxRandomItemsLength);
250
+ const items: any[] = [];
251
+ for (let i = 0; i < length; i++) {
252
+ items.push(mockType(rt.getMemberType(), comp, stack));
253
+ }
254
+ return items;
255
+ }
256
+ case ReflectionKind.indexSignature: {
257
+ const rt = runType as IndexSignatureRunType;
258
+ const length = random(0, mOps.maxRandomItemsLength);
259
+ const parentObj = mOps.parentObj || {};
260
+ for (let i = 0; i < length; i++) {
261
+ let propName: number | string | symbol;
262
+ switch (true) {
263
+ case !!(rt.src.index.kind === ReflectionKind.number):
264
+ propName = i;
265
+ break;
266
+ case !!(rt.src.index.kind === ReflectionKind.string):
267
+ propName = `key${i}`;
268
+ break;
269
+ case !!(rt.src.index.kind === ReflectionKind.symbol):
270
+ propName = Symbol.for(`key${i}`);
271
+ break;
272
+ case !!(rt.src.index.kind === ReflectionKind.templateLiteral): {
273
+ // walk the template literal spans to produce a key that matches the pattern.
274
+ // retry a few times on collision since narrow patterns (eg `id-${number}`) can repeat.
275
+ const tplTypes = ((rt.src.index as any).types as any[]) || [];
276
+ const buildKey = () =>
277
+ tplTypes
278
+ .map((part: any) => {
279
+ switch (part.kind) {
280
+ case ReflectionKind.literal:
281
+ return String(part.literal);
282
+ case ReflectionKind.number:
283
+ return String(mockNumber(mOps.minNumber, mOps.maxNumber));
284
+ case ReflectionKind.string:
285
+ case ReflectionKind.any:
286
+ case ReflectionKind.infer:
287
+ return mockString(
288
+ mOps.stringLength || random(1, mOps.maxRandomStringLength),
289
+ mOps.stringCharSet || stringCharSet
290
+ );
291
+ default:
292
+ throw new Error(`Unsupported template literal span kind: ${part.kind}`);
293
+ }
294
+ })
295
+ .join('');
296
+ let candidate = buildKey();
297
+ for (let r = 0; r < 5 && candidate in parentObj; r++) candidate = buildKey();
298
+ propName = candidate;
299
+ break;
300
+ }
301
+ default:
302
+ throw new Error('Invalid index signature type.');
303
+ }
304
+ parentObj[propName] = mockType(rt.getMemberType(), comp, stack);
305
+ }
306
+ return parentObj;
307
+ }
308
+
309
+ case ReflectionKind.templateLiteral: {
310
+ // walk the spans and emit a string for each: literal verbatim, string/any/infer => mockString,
311
+ // number => stringified mockNumber. The concatenated value is, by construction,
312
+ // accepted by the validation regex emitted by TemplateLiteralRunType.
313
+ const types = (src as any).types as any[];
314
+ return types
315
+ .map((part: any) => {
316
+ switch (part.kind) {
317
+ case ReflectionKind.literal:
318
+ return String(part.literal);
319
+ case ReflectionKind.number:
320
+ return String(mockNumber(mOps.minNumber, mOps.maxNumber));
321
+ case ReflectionKind.string:
322
+ case ReflectionKind.any:
323
+ case ReflectionKind.infer:
324
+ return mockString(
325
+ mOps.stringLength || random(1, mOps.maxRandomStringLength),
326
+ mOps.stringCharSet || stringCharSet
327
+ );
328
+ default:
329
+ throw new Error(
330
+ `Unsupported template literal span kind: ${part.kind}` + printStackTrace(comp, stack)
331
+ );
332
+ }
333
+ })
334
+ .join('');
335
+ }
336
+ case ReflectionKind.infer:
337
+ case ReflectionKind.typeParameter:
338
+ default:
339
+ throw new Error(`Cant mock Unsupported RunType: ${runType.getTypeName()}` + printStackTrace(comp, stack));
340
+ }
341
+ }
342
+
343
+ function _mockClass(runType: BaseRunType, comp: JitFnCompiler, stack: BaseRunType[]) {
344
+ const mOps = comp.opts.mock as MockOptions;
345
+ switch (runType.src.subKind) {
346
+ case ReflectionSubKind.date:
347
+ return mockDate(mOps.minDate, mOps.maxDate);
348
+ case ReflectionSubKind.map: {
349
+ const rt = runType as MapRunType;
350
+ const mockMap = new Map();
351
+ const length = mOps.arrayLength ?? random(0, mOps.maxRandomItemsLength);
352
+ for (let i = 0; i < length; i++) {
353
+ const keyType = mockType(rt.keyRT, comp, stack);
354
+ const valueType = mockType(rt.valueRT, comp, stack);
355
+ mockMap.set(keyType, valueType);
356
+ }
357
+ return mockMap;
358
+ }
359
+ case ReflectionSubKind.set: {
360
+ const rt = runType as SetRunType;
361
+ const mockSet = new Set();
362
+ const length = mOps.arrayLength ?? random(0, mOps.maxRandomItemsLength);
363
+ for (let i = 0; i < length; i++) {
364
+ const value = mockType(rt.keyRT, comp, stack);
365
+ mockSet.add(value);
366
+ }
367
+ return mockSet;
368
+ }
369
+ case ReflectionSubKind.nonSerializable:
370
+ throw new Error(`Mock is disabled for Non Serializable types.` + printStackTrace(comp, stack));
371
+ default: {
372
+ if (!(runType instanceof ClassRunType)) {
373
+ throw new Error(`Cant mock Unsupported RunType: ${runType.getTypeName()}` + printStackTrace(comp, stack));
374
+ }
375
+ const rt = runType as ClassRunType;
376
+ const isSerializable = rt.isClassWithEmptyConstructor();
377
+ const deserializeFn = getJitUtils().getDeserializeFn(rt.getClassName());
378
+ if (!deserializeFn && !isSerializable) {
379
+ throw new Error(
380
+ `Class ${rt.getClassName()} can not be mocked. Be sure to register a deserialize function first with jiUtils.${getJitUtils().setDeserializeFn.name}` +
381
+ printStackTrace(comp, stack)
382
+ );
383
+ }
384
+ const instance = deserializeFn ? {} : new rt.src.classType();
385
+ // only properties that are used in jit operations are mocked, there properties should be initialized in the constructor
386
+ rt.getJitChildren(comp).forEach((prop) => {
387
+ const name = (prop as PropertyRunType).getChildVarName(comp);
388
+ if (prop instanceof IndexSignatureRunType) mockType(prop, comp, stack);
389
+ const mocked = mockType(prop, comp, stack);
390
+ if ((prop as PropertyRunType).src.optional && mocked === undefined) return;
391
+ instance[name] = mockType(prop, comp, stack);
392
+ });
393
+ if (deserializeFn) return deserializeFn(instance);
394
+ if (isSerializable) return instance;
395
+ throw new Error(`Class ${rt.getClassName()} can not be mocked.` + printStackTrace(comp, stack));
396
+ }
397
+ }
398
+ }
399
+
400
+ function getChildOpts(comp: JitFnCompiler, mockOpts?: MockOptions): JitFnCompiler {
401
+ if (!mockOpts) return comp;
402
+ const newOpts = {...comp.opts, mock: mockOpts};
403
+ return new MockJitCompiler(comp.rootType, newOpts, comp, comp.jitFnHash, comp.typeID);
404
+ }
405
+
406
+ function printStackTrace(comp: JitFnCompiler, stack: BaseRunType[]) {
407
+ const separator = '.';
408
+ return JIT_STACK_TRACE_MESSAGE + stack.map((rt) => comp.getTypeTraceInfo(rt)).join(separator);
409
+ }
@@ -0,0 +1,82 @@
1
+ /* ########
2
+ * 2024 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+
8
+ import {anyValuesList, stringCharSet} from './constants.mock.ts';
9
+ import {mockRegExpsList} from './constants.mock.ts';
10
+
11
+ export function mockBoolean(): boolean {
12
+ return Math.random() < 0.5;
13
+ }
14
+
15
+ export function mockBigInt(min = 0, max = 10000): bigint {
16
+ return BigInt(random(min, max));
17
+ }
18
+
19
+ export function mockString(length = random(0, 30), allowedChars = stringCharSet, disallowedChars: string = ''): string {
20
+ if (allowedChars.length === 0) throw new Error('Can not generate random string as allowedChars cannot be empty');
21
+ const allowedCharSet = allowedChars
22
+ .split('')
23
+ .filter((char) => !disallowedChars.includes(char))
24
+ .join('');
25
+ if (allowedCharSet.length === 0)
26
+ throw new Error('Can not generate random string as allowedChars and disallowedChars are mutually exclusive');
27
+ return Array.from({length}, () => allowedCharSet[random(0, allowedCharSet.length - 1)]).join('');
28
+ }
29
+
30
+ export function mockSymbol(name?: string, length?: number, charsSet?: string): symbol {
31
+ const symbolName = name ?? mockString(length, charsSet);
32
+ return Symbol(symbolName);
33
+ }
34
+
35
+ export function mockRegExp(list = mockRegExpsList): RegExp {
36
+ return list[random(0, list.length - 1)];
37
+ }
38
+
39
+ /**
40
+ * Generates a random number between min and max, both inclusive.
41
+ * @param min 0 by default
42
+ * @param max 10000 by default
43
+ * @returns random number
44
+ */
45
+ export function mockNumber(min = 0, max = 10000): number {
46
+ if (min > max) {
47
+ throw new Error('min cannot be greater than max');
48
+ }
49
+ return random(min, max);
50
+ }
51
+
52
+ /**
53
+ * Generates a random date between minDate and maxDate, both inclusive.
54
+ * @param minDate 0 by default
55
+ * @param maxDate Date.now() by default
56
+ */
57
+ export function mockDate(minDate: Date | number = new Date(0), maxDate: Date | number = new Date()): Date {
58
+ const min = typeof minDate === 'number' ? minDate : minDate.getTime();
59
+ const max = typeof maxDate === 'number' ? maxDate : maxDate.getTime();
60
+ if (min > max) {
61
+ throw new Error('minDate cannot be greater than maxDate');
62
+ }
63
+ return new Date(random(min, max));
64
+ }
65
+
66
+ export function mockAny(anyList = anyValuesList): any {
67
+ return anyList[random(0, anyList.length - 1)];
68
+ }
69
+
70
+ /** Generates a random number between min and max, both inclusive */
71
+ export function random(min: number = 0, max = 10000): number {
72
+ return Math.floor(Math.random() * (max - min + 1)) + min;
73
+ }
74
+
75
+ export function randomItem<T>(list: T[]): T {
76
+ return list[random(0, list.length - 1)];
77
+ }
78
+
79
+ export function mockRecursiveEmptyArray(depth: number, length: number) {
80
+ if (depth === 0) return [];
81
+ return Array.from({length}, () => mockRecursiveEmptyArray(depth - 1, length));
82
+ }
@@ -0,0 +1,22 @@
1
+ /* ########
2
+ * 2024 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+
8
+ import {type TypeAny, type TypeUnknown} from '@deepkit/type';
9
+ import {AtomicRunType} from '../../lib/baseRunTypes.ts';
10
+ import type {JitCode} from '../../types.ts';
11
+ import {JitFnCompiler} from '../../lib/jitFnCompiler.ts';
12
+
13
+ export class AnyRunType extends AtomicRunType<TypeAny | TypeUnknown> {
14
+ emitIsType(comp: JitFnCompiler): JitCode {
15
+ const isRoot = comp.getNestLevel(this) === 0;
16
+ if (isRoot) return {code: undefined, type: 'E'};
17
+ return {code: 'true', type: 'E'};
18
+ }
19
+ emitTypeErrors(): JitCode {
20
+ return {code: undefined, type: 'S'};
21
+ }
22
+ }
@@ -0,0 +1,26 @@
1
+ /* ########
2
+ * 2024 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+
8
+ import type {TypeBigInt} from '@deepkit/type';
9
+ import type {JitFnCompiler, JitErrorsFnCompiler} from '../../lib/jitFnCompiler.ts';
10
+ import type {JitCode} from '../../types.ts';
11
+ import {AtomicRunType} from '../../lib/baseRunTypes.ts';
12
+
13
+ export class BigIntRunType extends AtomicRunType<TypeBigInt> {
14
+ emitIsType(comp: JitFnCompiler): JitCode {
15
+ return {code: `typeof ${comp.vλl} === 'bigint'`, type: 'E'};
16
+ }
17
+ emitTypeErrors(comp: JitErrorsFnCompiler): JitCode {
18
+ return {code: `if (typeof ${comp.vλl} !== 'bigint') ${comp.callJitErr(this)}`, type: 'S'};
19
+ }
20
+ emitPrepareForJson(comp: JitFnCompiler): JitCode {
21
+ return {code: `${comp.vλl}.toString()`, type: 'E'};
22
+ }
23
+ emitRestoreFromJson(comp: JitFnCompiler): JitCode {
24
+ return {code: `BigInt(${comp.vλl})`, type: 'E'};
25
+ }
26
+ }
@@ -0,0 +1,26 @@
1
+ /* ########
2
+ * 2024 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+
8
+ import type {TypeBoolean} from '@deepkit/type';
9
+ import type {JitCode} from '../../types.ts';
10
+ import type {JitFnCompiler, JitErrorsFnCompiler} from '../../lib/jitFnCompiler.ts';
11
+ import {AtomicRunType} from '../../lib/baseRunTypes.ts';
12
+
13
+ export class BooleanRunType extends AtomicRunType<TypeBoolean> {
14
+ emitIsType(comp: JitFnCompiler): JitCode {
15
+ return {code: `typeof ${comp.vλl} === 'boolean'`, type: 'E'};
16
+ }
17
+ emitTypeErrors(comp: JitErrorsFnCompiler): JitCode {
18
+ return {code: `if (typeof ${comp.vλl} !== 'boolean') ${comp.callJitErr(this)}`, type: 'S'};
19
+ }
20
+ emitPrepareForJson(): JitCode {
21
+ return {code: undefined, type: 'S'};
22
+ }
23
+ emitRestoreFromJson(): JitCode {
24
+ return {code: undefined, type: 'S'};
25
+ }
26
+ }