@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,93 @@
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 {JitFunctions} from './constants.functions.ts';
9
+ import {ReceiveType} from '@deepkit/type';
10
+ import {runType} from './createRunType.ts';
11
+ import {RunTypeOptions} from './types.ts';
12
+ import {
13
+ FromBinaryFn,
14
+ IsTypeFn,
15
+ JsonStringifyFn,
16
+ PrepareForJsonFn,
17
+ RestoreFromJsonFn,
18
+ ToBinaryFn,
19
+ ToCodeFn,
20
+ TypeErrorsFn,
21
+ } from '@mionjs/core';
22
+ import {BaseRunType} from './lib/baseRunTypes.ts';
23
+ import {registerJitFunctionCompiler} from './lib/jitFnsRegistry.ts';
24
+
25
+ // All these functions are async because they might need to compile the jit function first
26
+ // At the moment they are compiled synchronously, but in the future they might be async
27
+ // Also some the src code to compile or functionality of the JIT functions might be loaded dynamically
28
+ // ie: mocking functionality is loaded only when mockTypeFn is called
29
+
30
+ /** Returns a function that checks if the given value is of the specified type. */
31
+ export async function createIsTypeFn<T>(opts?: RunTypeOptions, type?: ReceiveType<T>): Promise<IsTypeFn> {
32
+ const rt = runType(type);
33
+ return rt.createJitFunction(JitFunctions.isType, opts);
34
+ }
35
+
36
+ /** Returns a function that get Type error data. */
37
+ export async function createTypeErrorsFn<T>(opts?: RunTypeOptions, type?: ReceiveType<T>): Promise<TypeErrorsFn> {
38
+ const rt = runType(type);
39
+ return rt.createJitFunction(JitFunctions.typeErrors, opts);
40
+ }
41
+
42
+ /**
43
+ * Returns a function that prepares a javascript type to be compatible with json.stringify.
44
+ * Allows json.stringify special types like dates, bigints, maps, set, etc... that are not supported by json.stringify
45
+ */
46
+ export async function createPrepareForJsonFn<T>(opts?: RunTypeOptions, type?: ReceiveType<T>): Promise<PrepareForJsonFn> {
47
+ const rt = runType(type);
48
+ return rt.createJitFunction(JitFunctions.prepareForJson, opts);
49
+ }
50
+
51
+ /**
52
+ * Returns a function that restores a javascript type from json.parse.
53
+ * Allows restoring special types like dates, bigints, maps, set, etc... that are not supported by json.parse
54
+ * */
55
+ export async function createRestoreFromJsonFn<T>(opts?: RunTypeOptions, type?: ReceiveType<T>): Promise<RestoreFromJsonFn> {
56
+ const rt = runType(type);
57
+ return rt.createJitFunction(JitFunctions.restoreFromJson, opts);
58
+ }
59
+
60
+ /**
61
+ * Returns a function that stringifies a javascript value to a json string.
62
+ * Stringifies special types like dates, bigints, maps, set, etc...
63
+ * Is equivalent to calling prepareForJson and then json.stringify but more efficient.
64
+ */
65
+ export async function createStringifyJsonFn<T>(opts?: RunTypeOptions, type?: ReceiveType<T>): Promise<JsonStringifyFn> {
66
+ const rt = runType(type);
67
+ return rt.createJitFunction(JitFunctions.stringifyJson, opts);
68
+ }
69
+
70
+ /** Returns a function that serializes any type value to a binary format. */
71
+ export async function createToBinaryFn<T>(opts?: RunTypeOptions, type?: ReceiveType<T>): Promise<ToBinaryFn> {
72
+ const rt = runType(type);
73
+ return rt.createJitFunction(JitFunctions.toBinary, opts);
74
+ }
75
+
76
+ /** Returns a function that deserializes a binary value to the specified type. */
77
+ export async function createFromBinaryFn<T>(opts?: RunTypeOptions, type?: ReceiveType<T>): Promise<FromBinaryFn> {
78
+ const rt = runType(type);
79
+ return rt.createJitFunction(JitFunctions.fromBinary, opts);
80
+ }
81
+
82
+ /** Returns a function that converts a value to javascript code, including set etc */
83
+ export function createToJavascriptFn<T>(opts?: RunTypeOptions, type?: ReceiveType<T>): ToCodeFn {
84
+ const rt = runType(type);
85
+ return rt.createJitFunction(JitFunctions.toJSCode, opts);
86
+ }
87
+
88
+ /** Returns a function that mocks a value of the specified type. */
89
+ export async function createMockTypeFn<T>(type?: ReceiveType<T>): Promise<(opts?: Partial<RunTypeOptions>) => T> {
90
+ const rt = runType(type) as BaseRunType;
91
+ await registerJitFunctionCompiler(JitFunctions.mock);
92
+ return (opts?: Partial<RunTypeOptions>) => rt.mockType(opts) as T;
93
+ }
@@ -0,0 +1,35 @@
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
+ // ###################### Types FORMATS #####################
8
+
9
+ import {TypeAnnotation} from '@deepkit/core';
10
+ // ⚠️ CRITICAL: Do NOT use `import type` - Deepkit needs the actual import for reflection!
11
+ import {TypeFormatParams, Brand, TypeFormatPrimitives} from '@mionjs/core';
12
+
13
+ /**
14
+ * A base type that satisfies some extra constrains. (at the moment only Branded types of strings and numbers are supported)
15
+ * ie: an Alphanumeric type is an string that only allow letters and numbers.
16
+ * ie: in Integer type is a number that only allow integer values.
17
+ *
18
+ * TypeFormat is the equivalent ot TypeAnnotation in DK but with slight modifications @deepkit/type<TypeAnnotation>
19
+ *
20
+ * @param BaseType - The base type (string, number, or bigint)
21
+ * @param Name - The format name used for runtime validation
22
+ * @param P - Format parameters for validation rules
23
+ * @param BrandName - Optional brand name for nominal typing (defaults to never = no brand)
24
+ *
25
+ * When BrandName is provided, the type becomes nominally branded, preventing
26
+ * accidental assignment of plain strings/numbers to branded types.
27
+ * */
28
+ export type TypeFormat<
29
+ BaseType extends TypeFormatPrimitives,
30
+ Name extends string,
31
+ P extends TypeFormatParams,
32
+ BrandName extends string = never,
33
+ > = [BrandName] extends [never]
34
+ ? BaseType & TypeAnnotation<Name, P>
35
+ : Brand<BaseType, BrandName> & TypeAnnotation<Name, P & {brand: BrandName}>;
@@ -0,0 +1,138 @@
1
+ # Binary Serialization/Deserialization Specification
2
+
3
+ ## Overview
4
+
5
+ This document specifies the implementation of JIT Binary serialization and deserialization for the Mion run-types package.
6
+ All binary serialization and deserialization functions are based on the [seqproto](https://github.com/oramasearch/seqproto) library that is highly optimized for js engines and multi-platform.
7
+
8
+ This spec is designed to work and support all TypeScript features, like Unions, Intersections, etc. while leveraging seqproto's high-performance encoding strategies.
9
+
10
+ All data is encoded/decoded into a single [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) using **32-bit aligned** memory access patterns for optimal CPU performance.
11
+
12
+ ## SeqProto Alignment Strategy
13
+
14
+ Following seqproto's approach, all data is **32-bit aligned** (4-byte boundaries) for optimal performance:
15
+
16
+ - **Index tracking**: All positions tracked in 32-bit units
17
+ - **Memory access**: Direct typed array access (`uint32Array[index]`, `float32Array[index]`)
18
+ - **String encoding**: Uses `TextEncoder.encodeInto()` for zero-allocation encoding
19
+ - **Buffer management**: Pre-allocated reusable buffers with simple index reset
20
+
21
+ All functions used for encoding/decoding follow seqproto's optimized patterns and can be used in any JavaScript environment.
22
+
23
+ ## Headers and Type Markers
24
+
25
+ Some variable length types and object properties require additional information. For these cases, we use **32-bit type markers** to indicate the length or type of the data that follows.
26
+
27
+ ### SeqProto Type Headers (32-bit aligned)
28
+
29
+ SeqProto uses type markers for number encoding. All headers are 32-bit values:
30
+
31
+ | Header | Value | Description |
32
+ | ------------- | ----- | ----------------------- |
33
+ | `TYPE_FLOAT` | 0 | 32-bit IEEE 754 float |
34
+ | `TYPE_UINT32` | 1 | 32-bit unsigned integer |
35
+ | `TYPE_INT32` | 2 | 32-bit signed integer |
36
+
37
+ ### Object Property Headers (Mion-specific)
38
+
39
+ SeqProto doesn't handle object properties, so we define our own property encoding system:
40
+
41
+ | Header Type | Bit Layout | Description | Max Values |
42
+ | -------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------- |
43
+ | **Known Property** | no header required | Index of the property in the Type definition, optional props that are not defined are not serialized | 65536 properties |
44
+ | **Unknown Property** | `[length + string prop name]` | Dynamic property name | Unlimited |
45
+
46
+ ### Arrays
47
+
48
+ | Collection | Bit Layout | Description |
49
+ | ---------- | --------------------- | ------------------------------------ |
50
+ | **Array** | `[length + elements]` | Length as uint32, number of elements |
51
+
52
+ ### Number Types (Type-Aware Encoding)
53
+
54
+ Following seqproto's number encoding strategy:
55
+
56
+ | Type | Bytes | Bit Layout | Notes |
57
+ | ---------------------- | ----- | ----------------------- | ------------------------------- |
58
+ | **Integer (positive)** | 4 | `TYPE_UINT32` + `value` | `value >= 0 && value % 1 === 0` |
59
+ | **Integer (negative)** | 4 | `TYPE_INT32` + `value` | `value < 0 && value % 1 === 0` |
60
+ | **Float** | 4 | `TYPE_FLOAT` + `value` | `value % 1 !== 0` |
61
+ | **BigInt** | 8 | `TYPE_BIGINT` + `value` | |
62
+
63
+ ### Primitive Types (32-bit Aligned)
64
+
65
+ | Type | Bytes | Notes |
66
+ | ------------- | ----- | ----------------------------------------------------------------- |
67
+ | **Boolean** | 4 | 32-bit aligned for performance |
68
+ | **Null** | 4 | null is serialized as 0 |
69
+ | **Undefined** | 4 | undefined is serialized as -1, undefined props are not serialized |
70
+ | **Date** | 8 | serialized as number |
71
+
72
+ ### String Types (Zero-Allocation Encoding)
73
+
74
+ | Type | Bit Layout | Notes |
75
+ | ---------- | ------------------- | --------------------- |
76
+ | **String** | `[length, content]` | byte length is 32 bit |
77
+ | **RegExp** | `[source, flags]` | |
78
+
79
+ ## Complex Types (SeqProto-Compatible)
80
+
81
+ ### Collection Types
82
+
83
+ | Type | Encoding Strategy | Notes |
84
+ | ---------- | ------------------------------------------------------------------------------------------ | -------------------------------- |
85
+ | **Array** | `uint32Array[index++] = TYPE_ARRAY; uint32Array[index++] = length; [encode each element]` | Length + elements |
86
+ | **Object** | `uint32Array[index++] = TYPE_OBJECT; uint32Array[index++] = propCount; [encode each prop]` | Property count + key-value pairs |
87
+ | **Map** | Serialize as Array of `[key, value]` tuples | Use seqproto function |
88
+ | **Set** | Serialize as Array of values | Use seqproto function |
89
+ | **Class** | Serialize as data only, functions are not serialized. | Use object function |
90
+
91
+ ### Object Serialization
92
+
93
+ Object are serialized with all required props in order, this guarantee fast and simple sequential serialization/deserialization.
94
+ Optional props are serialized as [`optional props bitmap + optional props values`].
95
+ The bitmap for optional props is variable length but determined at compile time depending on the number of optional props min length is 4 bytes, and then the optional props.
96
+ Each bit in the bitmap represents whether the corresponding optional prop is present or not. so the number of optional props corresponds to the number of bits to 1 in the bitmap.
97
+
98
+ ### Object Properties (32-bit Aligned)
99
+
100
+ | Property Type | Bit Layout | Encoding | Notes |
101
+ | ---------------------- | ------------------------------------------------- | ------------------------------------------- | -------------------------------------------------- |
102
+ | **Non Optional props** | `value` | `[encode value]` | Serialized in order they are declared in the type. |
103
+ | **Optional props** | `[optional props bitmap + optional props values]` | | |
104
+ | **Unknown Props** | `[string prop name + value]` | `serializeString(propName); [encode value]` | used inIndexSignature or Records |
105
+
106
+ ### TypeScript Features
107
+
108
+ | Feature | Encoding Strategy | Notes |
109
+ | ----------------- | ---------------------------------------------------------------------------------------------- | ------------------ |
110
+ | **Union Types** | `uint32Array[index++] = TYPE_UNION; uint32Array[index++] = discriminatorIndex; [encode value]` | Type index + value |
111
+ | **Tuple** | Serialize as Array | Fixed-length array |
112
+ | **Enum** | `[type, value]` where type indicates string or number | |
113
+ | **Literal Types** | Serialize underlying value | |
114
+
115
+ #### TypeScript Features
116
+
117
+ **Maps and Sets**:
118
+
119
+ ```typescript
120
+ // Map<K,V> → Array<[K,V]> → Binary Array of tuples [K,V]
121
+ // Set<T> → Array<T> → Binary Array
122
+ ```
123
+
124
+ **Union Types**:
125
+
126
+ ```typescript
127
+ // Discriminated unions use type field for variant identification
128
+ // Primitive unions encode based on runtime type detection
129
+ // [discriminator, value]
130
+ ```
131
+
132
+ **Complex Collections**:
133
+
134
+ ```typescript
135
+ // Tuples → Arrays with fixed length validation
136
+ // Records → Objects with dynamic key validation
137
+ // Classes → Objects with constructor information
138
+ ```
@@ -0,0 +1,118 @@
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 {JitFunctions} from '../../../constants.functions.ts';
9
+ import {FunctionRunType} from '../../../nodes/function/function.ts';
10
+ import type {DataViewDeserializer, DataViewSerializer, StrictArrayBuffer} from '@mionjs/core';
11
+ import type {InterfaceRunType} from '../../../nodes/collection/interface.ts';
12
+ import type {RunType} from '../../../types.ts';
13
+ import {createDataViewDeserializer, createDataViewSerializer, setSerializationOptions, getENV} from '@mionjs/core';
14
+ import {afterAll, expect} from 'vitest';
15
+
16
+ const DEBUG = getENV('DEBUG_JIT') === 'print';
17
+ /** maps a binary serializer to json serializer */
18
+ const toJsonSerializers: Map<(v: any) => any, (v: any) => string> = new Map();
19
+
20
+ setSerializationOptions({bufferSize: 1024});
21
+ export const serContext: DataViewSerializer = createDataViewSerializer('test');
22
+ export const desContext: DataViewDeserializer = createDataViewDeserializer('test', new ArrayBuffer(0));
23
+
24
+ const SERIALIZE_FN = JitFunctions.toBinary;
25
+ const DESERIALIZE_FN = JitFunctions.fromBinary;
26
+
27
+ export function createSerializationFns(rt: RunType) {
28
+ const toBinary = rt.createJitFunction(SERIALIZE_FN);
29
+ const fromBinary = rt.createJitFunction(DESERIALIZE_FN);
30
+ const serialize = (v: any) => (toBinary(v, serContext), serContext.getBuffer());
31
+ const deserialize = (data: StrictArrayBuffer) => (desContext.setBuffer(data), fromBinary(undefined, desContext));
32
+ if (DEBUG) {
33
+ const toJson = rt.createJitFunction(JitFunctions.prepareForJson);
34
+ const stringify = (v: any) => JSON.stringify(toJson(v));
35
+ toJsonSerializers.set(serialize, stringify);
36
+ }
37
+ return {serialize, deserialize};
38
+ }
39
+
40
+ export function createSerializationParamsFn(rt: FunctionRunType, sliceStart?: number) {
41
+ const params = typeof sliceStart === 'number' ? {paramsSlice: {start: sliceStart}} : undefined;
42
+ const toBinary = rt.createJitParamsFunction(SERIALIZE_FN, params);
43
+ const fromBinary = rt.createJitParamsFunction(DESERIALIZE_FN, params);
44
+ const serialize = (v: any) => (toBinary(v, serContext), serContext.getBuffer());
45
+ const deserialize = (data: StrictArrayBuffer) => (desContext.setBuffer(data), fromBinary(undefined, desContext));
46
+ if (DEBUG) {
47
+ const toJson = rt.createJitParamsFunction(JitFunctions.prepareForJson, params);
48
+ const stringify = (v: any) => JSON.stringify(toJson(v));
49
+ toJsonSerializers.set(serialize, stringify);
50
+ }
51
+ return {serialize, deserialize};
52
+ }
53
+
54
+ export function createSerializationReturnFn(rt: FunctionRunType) {
55
+ const toBinary = rt.createJitReturnFunction(SERIALIZE_FN);
56
+ const fromBinary = rt.createJitReturnFunction(DESERIALIZE_FN);
57
+ const serialize = (v: any) => (toBinary(v, serContext), serContext.getBuffer());
58
+ const deserialize = (data: StrictArrayBuffer) => (desContext.setBuffer(data), fromBinary(undefined, desContext));
59
+ if (DEBUG) {
60
+ const toJson = rt.createJitReturnFunction(JitFunctions.prepareForJson);
61
+ const stringify = (v: any) => JSON.stringify(toJson(v));
62
+ toJsonSerializers.set(serialize, stringify);
63
+ }
64
+ return {serialize, deserialize};
65
+ }
66
+
67
+ export function createSerializationCallSignatureParamsFn(rt: InterfaceRunType) {
68
+ const callSignature = rt.getCallSignature()!;
69
+ const toBinary = callSignature.createJitParamsFunction(SERIALIZE_FN);
70
+ const fromBinary = callSignature.createJitParamsFunction(DESERIALIZE_FN);
71
+ const serialize = (v: any) => (toBinary(v, serContext), serContext.getBuffer());
72
+ const deserialize = (data: StrictArrayBuffer) => (desContext.setBuffer(data), fromBinary(undefined, desContext));
73
+ if (DEBUG) {
74
+ const toJson = callSignature.createJitParamsFunction(JitFunctions.prepareForJson);
75
+ const stringify = (v: any) => JSON.stringify(toJson(v));
76
+ toJsonSerializers.set(serialize, stringify);
77
+ }
78
+ return {serialize, deserialize};
79
+ }
80
+
81
+ export function createSerializationCallSignatureReturnFn(rt: InterfaceRunType) {
82
+ const callSignature = rt.getCallSignature()!;
83
+ const toBinary = callSignature.createJitReturnFunction(SERIALIZE_FN);
84
+ const fromBinary = callSignature.createJitReturnFunction(DESERIALIZE_FN);
85
+ const serialize = (v: any) => (toBinary(v, serContext), serContext.getBuffer());
86
+ const deserialize = (data: StrictArrayBuffer) => (desContext.setBuffer(data), fromBinary(undefined, desContext));
87
+ if (DEBUG) {
88
+ const toJson = callSignature.createJitReturnFunction(JitFunctions.prepareForJson);
89
+ const stringify = (v: any) => JSON.stringify(toJson(v));
90
+ toJsonSerializers.set(serialize, stringify);
91
+ }
92
+ return {serialize, deserialize};
93
+ }
94
+
95
+ const sizesEntries: any[] = [];
96
+ const valuesEntries: any[] = [];
97
+
98
+ export function roundTrip(serialize: (v: any) => StrictArrayBuffer, deserialize: (v: StrictArrayBuffer) => any, value: any) {
99
+ serContext.reset();
100
+ const serialized = serialize(value);
101
+ const deserialized = deserialize(serialized);
102
+ if (DEBUG) {
103
+ const stringify = toJsonSerializers.get(serialize)!;
104
+ let json: number | string = '';
105
+ // eslint-disable-next-line
106
+ try { json = new Blob([stringify(value)]).size; } catch (e) { json = '-'; } // prettier-ignore
107
+ const sizes = {name: expect.getState().currentTestName, json, binary: serialized.byteLength};
108
+ sizesEntries.push(sizes);
109
+ valuesEntries.push({value, deserialized});
110
+ }
111
+ const result = {serialized, deserialized};
112
+ return result;
113
+ }
114
+
115
+ afterAll(() => {
116
+ if (sizesEntries.length) console.table(sizesEntries);
117
+ if (valuesEntries.length) console.table(valuesEntries);
118
+ });