@mionjs/run-types 0.8.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/.dist/cjs/index.cjs +209 -0
  2. package/.dist/cjs/index.cjs.map +1 -0
  3. package/.dist/cjs/index.d.ts +60 -0
  4. package/.dist/cjs/package.json +1 -0
  5. package/.dist/cjs/src/constants.cjs +79 -0
  6. package/.dist/cjs/src/constants.cjs.map +1 -0
  7. package/.dist/cjs/src/constants.d.ts +7 -0
  8. package/.dist/cjs/src/constants.functions.cjs +181 -0
  9. package/.dist/cjs/src/constants.functions.cjs.map +1 -0
  10. package/.dist/cjs/src/constants.functions.d.ts +385 -0
  11. package/.dist/cjs/src/constants.kind.cjs +74 -0
  12. package/.dist/cjs/src/constants.kind.cjs.map +1 -0
  13. package/.dist/cjs/src/constants.kind.d.ts +21 -0
  14. package/.dist/cjs/src/createRunType.cjs +284 -0
  15. package/.dist/cjs/src/createRunType.cjs.map +1 -0
  16. package/.dist/cjs/src/createRunType.d.ts +5 -0
  17. package/.dist/cjs/src/createRunTypeFunctions.cjs +78 -0
  18. package/.dist/cjs/src/createRunTypeFunctions.cjs.map +1 -0
  19. package/.dist/cjs/src/createRunTypeFunctions.d.ts +12 -0
  20. package/.dist/cjs/src/formats.runtype.cjs +7 -0
  21. package/.dist/cjs/src/formats.runtype.cjs.map +1 -0
  22. package/.dist/cjs/src/formats.runtype.d.ts +6 -0
  23. package/.dist/cjs/src/jitCompilers/binary/binarySpec/binaryHelpers.cjs +109 -0
  24. package/.dist/cjs/src/jitCompilers/binary/binarySpec/binaryHelpers.cjs.map +1 -0
  25. package/.dist/cjs/src/jitCompilers/binary/binarySpec/binaryHelpers.d.ts +30 -0
  26. package/.dist/cjs/src/jitCompilers/binary/fromBinary.cjs +383 -0
  27. package/.dist/cjs/src/jitCompilers/binary/fromBinary.cjs.map +1 -0
  28. package/.dist/cjs/src/jitCompilers/binary/fromBinary.d.ts +7 -0
  29. package/.dist/cjs/src/jitCompilers/binary/toBinary.cjs +338 -0
  30. package/.dist/cjs/src/jitCompilers/binary/toBinary.cjs.map +1 -0
  31. package/.dist/cjs/src/jitCompilers/binary/toBinary.d.ts +7 -0
  32. package/.dist/cjs/src/jitCompilers/equalsHelpers.cjs +37 -0
  33. package/.dist/cjs/src/jitCompilers/equalsHelpers.cjs.map +1 -0
  34. package/.dist/cjs/src/jitCompilers/equalsHelpers.d.ts +4 -0
  35. package/.dist/cjs/src/jitCompilers/json/jsonSpec/jsonHelpers.cjs +56 -0
  36. package/.dist/cjs/src/jitCompilers/json/jsonSpec/jsonHelpers.cjs.map +1 -0
  37. package/.dist/cjs/src/jitCompilers/json/jsonSpec/jsonHelpers.d.ts +27 -0
  38. package/.dist/cjs/src/jitCompilers/json/stringifyJson.cjs +399 -0
  39. package/.dist/cjs/src/jitCompilers/json/stringifyJson.cjs.map +1 -0
  40. package/.dist/cjs/src/jitCompilers/json/stringifyJson.d.ts +10 -0
  41. package/.dist/cjs/src/jitCompilers/json/stringifySpec/stringifyHelpers.cjs +51 -0
  42. package/.dist/cjs/src/jitCompilers/json/stringifySpec/stringifyHelpers.cjs.map +1 -0
  43. package/.dist/cjs/src/jitCompilers/json/stringifySpec/stringifyHelpers.d.ts +27 -0
  44. package/.dist/cjs/src/jitCompilers/json/toJsCode.cjs +123 -0
  45. package/.dist/cjs/src/jitCompilers/json/toJsCode.cjs.map +1 -0
  46. package/.dist/cjs/src/jitCompilers/json/toJsCode.d.ts +5 -0
  47. package/.dist/cjs/src/lib/baseRunTypeFormat.cjs +200 -0
  48. package/.dist/cjs/src/lib/baseRunTypeFormat.cjs.map +1 -0
  49. package/.dist/cjs/src/lib/baseRunTypeFormat.d.ts +50 -0
  50. package/.dist/cjs/src/lib/baseRunTypes.cjs +308 -0
  51. package/.dist/cjs/src/lib/baseRunTypes.cjs.map +1 -0
  52. package/.dist/cjs/src/lib/baseRunTypes.d.ts +75 -0
  53. package/.dist/cjs/src/lib/createJitFunction.cjs +60 -0
  54. package/.dist/cjs/src/lib/createJitFunction.cjs.map +1 -0
  55. package/.dist/cjs/src/lib/createJitFunction.d.ts +5 -0
  56. package/.dist/cjs/src/lib/dkProxy.cjs +23 -0
  57. package/.dist/cjs/src/lib/dkProxy.cjs.map +1 -0
  58. package/.dist/cjs/src/lib/dkProxy.d.ts +4 -0
  59. package/.dist/cjs/src/lib/formats.cjs +89 -0
  60. package/.dist/cjs/src/lib/formats.cjs.map +1 -0
  61. package/.dist/cjs/src/lib/formats.d.ts +18 -0
  62. package/.dist/cjs/src/lib/guards.cjs +243 -0
  63. package/.dist/cjs/src/lib/guards.cjs.map +1 -0
  64. package/.dist/cjs/src/lib/guards.d.ts +120 -0
  65. package/.dist/cjs/src/lib/jitFnCompiler.cjs +648 -0
  66. package/.dist/cjs/src/lib/jitFnCompiler.cjs.map +1 -0
  67. package/.dist/cjs/src/lib/jitFnCompiler.d.ts +109 -0
  68. package/.dist/cjs/src/lib/jitFnsRegistry.cjs +41 -0
  69. package/.dist/cjs/src/lib/jitFnsRegistry.cjs.map +1 -0
  70. package/.dist/cjs/src/lib/jitFnsRegistry.d.ts +6 -0
  71. package/.dist/cjs/src/lib/typeId.cjs +205 -0
  72. package/.dist/cjs/src/lib/typeId.cjs.map +1 -0
  73. package/.dist/cjs/src/lib/typeId.d.ts +6 -0
  74. package/.dist/cjs/src/lib/utils.cjs +325 -0
  75. package/.dist/cjs/src/lib/utils.cjs.map +1 -0
  76. package/.dist/cjs/src/lib/utils.d.ts +32 -0
  77. package/.dist/cjs/src/mocking/constants.mock.cjs +108 -0
  78. package/.dist/cjs/src/mocking/constants.mock.cjs.map +1 -0
  79. package/.dist/cjs/src/mocking/constants.mock.d.ts +85 -0
  80. package/.dist/cjs/src/mocking/mockRegistry.cjs +12 -0
  81. package/.dist/cjs/src/mocking/mockRegistry.cjs.map +1 -0
  82. package/.dist/cjs/src/mocking/mockRegistry.d.ts +3 -0
  83. package/.dist/cjs/src/mocking/mockType.cjs +310 -0
  84. package/.dist/cjs/src/mocking/mockType.cjs.map +1 -0
  85. package/.dist/cjs/src/mocking/mockType.d.ts +3 -0
  86. package/.dist/cjs/src/mocking/mockUtils.cjs +62 -0
  87. package/.dist/cjs/src/mocking/mockUtils.cjs.map +1 -0
  88. package/.dist/cjs/src/mocking/mockUtils.d.ts +15 -0
  89. package/.dist/cjs/src/nodes/atomic/any.cjs +18 -0
  90. package/.dist/cjs/src/nodes/atomic/any.cjs.map +1 -0
  91. package/.dist/cjs/src/nodes/atomic/any.d.ts +8 -0
  92. package/.dist/cjs/src/nodes/atomic/bigInt.cjs +20 -0
  93. package/.dist/cjs/src/nodes/atomic/bigInt.cjs.map +1 -0
  94. package/.dist/cjs/src/nodes/atomic/bigInt.d.ts +10 -0
  95. package/.dist/cjs/src/nodes/atomic/boolean.cjs +20 -0
  96. package/.dist/cjs/src/nodes/atomic/boolean.cjs.map +1 -0
  97. package/.dist/cjs/src/nodes/atomic/boolean.d.ts +10 -0
  98. package/.dist/cjs/src/nodes/atomic/date.cjs +20 -0
  99. package/.dist/cjs/src/nodes/atomic/date.cjs.map +1 -0
  100. package/.dist/cjs/src/nodes/atomic/date.d.ts +10 -0
  101. package/.dist/cjs/src/nodes/atomic/enum.cjs +22 -0
  102. package/.dist/cjs/src/nodes/atomic/enum.cjs.map +1 -0
  103. package/.dist/cjs/src/nodes/atomic/enum.d.ts +8 -0
  104. package/.dist/cjs/src/nodes/atomic/enumMember.cjs +24 -0
  105. package/.dist/cjs/src/nodes/atomic/enumMember.cjs.map +1 -0
  106. package/.dist/cjs/src/nodes/atomic/enumMember.d.ts +10 -0
  107. package/.dist/cjs/src/nodes/atomic/literal.cjs +126 -0
  108. package/.dist/cjs/src/nodes/atomic/literal.cjs.map +1 -0
  109. package/.dist/cjs/src/nodes/atomic/literal.d.ts +20 -0
  110. package/.dist/cjs/src/nodes/atomic/never.cjs +22 -0
  111. package/.dist/cjs/src/nodes/atomic/never.cjs.map +1 -0
  112. package/.dist/cjs/src/nodes/atomic/never.d.ts +10 -0
  113. package/.dist/cjs/src/nodes/atomic/null.cjs +20 -0
  114. package/.dist/cjs/src/nodes/atomic/null.cjs.map +1 -0
  115. package/.dist/cjs/src/nodes/atomic/null.d.ts +10 -0
  116. package/.dist/cjs/src/nodes/atomic/number.cjs +20 -0
  117. package/.dist/cjs/src/nodes/atomic/number.cjs.map +1 -0
  118. package/.dist/cjs/src/nodes/atomic/number.d.ts +10 -0
  119. package/.dist/cjs/src/nodes/atomic/object.cjs +14 -0
  120. package/.dist/cjs/src/nodes/atomic/object.cjs.map +1 -0
  121. package/.dist/cjs/src/nodes/atomic/object.d.ts +8 -0
  122. package/.dist/cjs/src/nodes/atomic/regexp.cjs +23 -0
  123. package/.dist/cjs/src/nodes/atomic/regexp.cjs.map +1 -0
  124. package/.dist/cjs/src/nodes/atomic/regexp.d.ts +10 -0
  125. package/.dist/cjs/src/nodes/atomic/string.cjs +14 -0
  126. package/.dist/cjs/src/nodes/atomic/string.cjs.map +1 -0
  127. package/.dist/cjs/src/nodes/atomic/string.d.ts +8 -0
  128. package/.dist/cjs/src/nodes/atomic/symbol.cjs +26 -0
  129. package/.dist/cjs/src/nodes/atomic/symbol.cjs.map +1 -0
  130. package/.dist/cjs/src/nodes/atomic/symbol.d.ts +11 -0
  131. package/.dist/cjs/src/nodes/atomic/undefined.cjs +17 -0
  132. package/.dist/cjs/src/nodes/atomic/undefined.cjs.map +1 -0
  133. package/.dist/cjs/src/nodes/atomic/undefined.d.ts +9 -0
  134. package/.dist/cjs/src/nodes/atomic/unknown.cjs +8 -0
  135. package/.dist/cjs/src/nodes/atomic/unknown.cjs.map +1 -0
  136. package/.dist/cjs/src/nodes/atomic/unknown.d.ts +3 -0
  137. package/.dist/cjs/src/nodes/atomic/void.cjs +20 -0
  138. package/.dist/cjs/src/nodes/atomic/void.cjs.map +1 -0
  139. package/.dist/cjs/src/nodes/atomic/void.d.ts +10 -0
  140. package/.dist/cjs/src/nodes/collection/class.cjs +38 -0
  141. package/.dist/cjs/src/nodes/collection/class.cjs.map +1 -0
  142. package/.dist/cjs/src/nodes/collection/class.d.ts +9 -0
  143. package/.dist/cjs/src/nodes/collection/functionParams.cjs +33 -0
  144. package/.dist/cjs/src/nodes/collection/functionParams.cjs.map +1 -0
  145. package/.dist/cjs/src/nodes/collection/functionParams.d.ts +9 -0
  146. package/.dist/cjs/src/nodes/collection/interface.cjs +221 -0
  147. package/.dist/cjs/src/nodes/collection/interface.cjs.map +1 -0
  148. package/.dist/cjs/src/nodes/collection/interface.d.ts +43 -0
  149. package/.dist/cjs/src/nodes/collection/intersection.cjs +21 -0
  150. package/.dist/cjs/src/nodes/collection/intersection.cjs.map +1 -0
  151. package/.dist/cjs/src/nodes/collection/intersection.d.ts +9 -0
  152. package/.dist/cjs/src/nodes/collection/tuple.cjs +74 -0
  153. package/.dist/cjs/src/nodes/collection/tuple.cjs.map +1 -0
  154. package/.dist/cjs/src/nodes/collection/tuple.d.ts +18 -0
  155. package/.dist/cjs/src/nodes/collection/union.cjs +162 -0
  156. package/.dist/cjs/src/nodes/collection/union.cjs.map +1 -0
  157. package/.dist/cjs/src/nodes/collection/union.d.ts +19 -0
  158. package/.dist/cjs/src/nodes/collection/unionDiscriminator.cjs +198 -0
  159. package/.dist/cjs/src/nodes/collection/unionDiscriminator.cjs.map +1 -0
  160. package/.dist/cjs/src/nodes/collection/unionDiscriminator.d.ts +21 -0
  161. package/.dist/cjs/src/nodes/function/function.cjs +155 -0
  162. package/.dist/cjs/src/nodes/function/function.cjs.map +1 -0
  163. package/.dist/cjs/src/nodes/function/function.d.ts +33 -0
  164. package/.dist/cjs/src/nodes/member/array.cjs +154 -0
  165. package/.dist/cjs/src/nodes/member/array.cjs.map +1 -0
  166. package/.dist/cjs/src/nodes/member/array.d.ts +24 -0
  167. package/.dist/cjs/src/nodes/member/callSignature.cjs +40 -0
  168. package/.dist/cjs/src/nodes/member/callSignature.cjs.map +1 -0
  169. package/.dist/cjs/src/nodes/member/callSignature.d.ts +11 -0
  170. package/.dist/cjs/src/nodes/member/genericMember.cjs +68 -0
  171. package/.dist/cjs/src/nodes/member/genericMember.cjs.map +1 -0
  172. package/.dist/cjs/src/nodes/member/genericMember.d.ts +15 -0
  173. package/.dist/cjs/src/nodes/member/indexProperty.cjs +130 -0
  174. package/.dist/cjs/src/nodes/member/indexProperty.cjs.map +1 -0
  175. package/.dist/cjs/src/nodes/member/indexProperty.d.ts +21 -0
  176. package/.dist/cjs/src/nodes/member/method.cjs +41 -0
  177. package/.dist/cjs/src/nodes/member/method.cjs.map +1 -0
  178. package/.dist/cjs/src/nodes/member/method.d.ts +11 -0
  179. package/.dist/cjs/src/nodes/member/methodSignature.cjs +44 -0
  180. package/.dist/cjs/src/nodes/member/methodSignature.cjs.map +1 -0
  181. package/.dist/cjs/src/nodes/member/methodSignature.d.ts +12 -0
  182. package/.dist/cjs/src/nodes/member/param.cjs +17 -0
  183. package/.dist/cjs/src/nodes/member/param.cjs.map +1 -0
  184. package/.dist/cjs/src/nodes/member/param.d.ts +8 -0
  185. package/.dist/cjs/src/nodes/member/property.cjs +85 -0
  186. package/.dist/cjs/src/nodes/member/property.cjs.map +1 -0
  187. package/.dist/cjs/src/nodes/member/property.d.ts +19 -0
  188. package/.dist/cjs/src/nodes/member/restParams.cjs +15 -0
  189. package/.dist/cjs/src/nodes/member/restParams.cjs.map +1 -0
  190. package/.dist/cjs/src/nodes/member/restParams.d.ts +7 -0
  191. package/.dist/cjs/src/nodes/member/tupleMember.cjs +93 -0
  192. package/.dist/cjs/src/nodes/member/tupleMember.cjs.map +1 -0
  193. package/.dist/cjs/src/nodes/member/tupleMember.d.ts +20 -0
  194. package/.dist/cjs/src/nodes/native/Iterable.cjs +135 -0
  195. package/.dist/cjs/src/nodes/native/Iterable.cjs.map +1 -0
  196. package/.dist/cjs/src/nodes/native/Iterable.d.ts +18 -0
  197. package/.dist/cjs/src/nodes/native/map.cjs +96 -0
  198. package/.dist/cjs/src/nodes/native/map.cjs.map +1 -0
  199. package/.dist/cjs/src/nodes/native/map.d.ts +42 -0
  200. package/.dist/cjs/src/nodes/native/nonSerializable.cjs +36 -0
  201. package/.dist/cjs/src/nodes/native/nonSerializable.cjs.map +1 -0
  202. package/.dist/cjs/src/nodes/native/nonSerializable.d.ts +14 -0
  203. package/.dist/cjs/src/nodes/native/promise.cjs +38 -0
  204. package/.dist/cjs/src/nodes/native/promise.cjs.map +1 -0
  205. package/.dist/cjs/src/nodes/native/promise.d.ts +15 -0
  206. package/.dist/cjs/src/nodes/native/set.cjs +60 -0
  207. package/.dist/cjs/src/nodes/native/set.cjs.map +1 -0
  208. package/.dist/cjs/src/nodes/native/set.d.ts +30 -0
  209. package/.dist/cjs/src/run-types-pure-fns.cjs +112 -0
  210. package/.dist/cjs/src/run-types-pure-fns.cjs.map +1 -0
  211. package/.dist/cjs/src/run-types-pure-fns.d.ts +7 -0
  212. package/.dist/cjs/src/types.cjs +59 -0
  213. package/.dist/cjs/src/types.cjs.map +1 -0
  214. package/.dist/cjs/src/types.d.ts +152 -0
  215. package/.dist/esm/index.d.ts +60 -0
  216. package/.dist/esm/index.js +209 -0
  217. package/.dist/esm/index.js.map +1 -0
  218. package/.dist/esm/src/constants.d.ts +7 -0
  219. package/.dist/esm/src/constants.functions.d.ts +385 -0
  220. package/.dist/esm/src/constants.functions.js +181 -0
  221. package/.dist/esm/src/constants.functions.js.map +1 -0
  222. package/.dist/esm/src/constants.js +79 -0
  223. package/.dist/esm/src/constants.js.map +1 -0
  224. package/.dist/esm/src/constants.kind.d.ts +21 -0
  225. package/.dist/esm/src/constants.kind.js +74 -0
  226. package/.dist/esm/src/constants.kind.js.map +1 -0
  227. package/.dist/esm/src/createRunType.d.ts +5 -0
  228. package/.dist/esm/src/createRunType.js +284 -0
  229. package/.dist/esm/src/createRunType.js.map +1 -0
  230. package/.dist/esm/src/createRunTypeFunctions.d.ts +12 -0
  231. package/.dist/esm/src/createRunTypeFunctions.js +78 -0
  232. package/.dist/esm/src/createRunTypeFunctions.js.map +1 -0
  233. package/.dist/esm/src/formats.runtype.d.ts +6 -0
  234. package/.dist/esm/src/formats.runtype.js +7 -0
  235. package/.dist/esm/src/formats.runtype.js.map +1 -0
  236. package/.dist/esm/src/jitCompilers/binary/binarySpec/binaryHelpers.d.ts +30 -0
  237. package/.dist/esm/src/jitCompilers/binary/binarySpec/binaryHelpers.js +109 -0
  238. package/.dist/esm/src/jitCompilers/binary/binarySpec/binaryHelpers.js.map +1 -0
  239. package/.dist/esm/src/jitCompilers/binary/fromBinary.d.ts +7 -0
  240. package/.dist/esm/src/jitCompilers/binary/fromBinary.js +383 -0
  241. package/.dist/esm/src/jitCompilers/binary/fromBinary.js.map +1 -0
  242. package/.dist/esm/src/jitCompilers/binary/toBinary.d.ts +7 -0
  243. package/.dist/esm/src/jitCompilers/binary/toBinary.js +338 -0
  244. package/.dist/esm/src/jitCompilers/binary/toBinary.js.map +1 -0
  245. package/.dist/esm/src/jitCompilers/equalsHelpers.d.ts +4 -0
  246. package/.dist/esm/src/jitCompilers/equalsHelpers.js +37 -0
  247. package/.dist/esm/src/jitCompilers/equalsHelpers.js.map +1 -0
  248. package/.dist/esm/src/jitCompilers/json/jsonSpec/jsonHelpers.d.ts +27 -0
  249. package/.dist/esm/src/jitCompilers/json/jsonSpec/jsonHelpers.js +56 -0
  250. package/.dist/esm/src/jitCompilers/json/jsonSpec/jsonHelpers.js.map +1 -0
  251. package/.dist/esm/src/jitCompilers/json/stringifyJson.d.ts +10 -0
  252. package/.dist/esm/src/jitCompilers/json/stringifyJson.js +399 -0
  253. package/.dist/esm/src/jitCompilers/json/stringifyJson.js.map +1 -0
  254. package/.dist/esm/src/jitCompilers/json/stringifySpec/stringifyHelpers.d.ts +27 -0
  255. package/.dist/esm/src/jitCompilers/json/stringifySpec/stringifyHelpers.js +51 -0
  256. package/.dist/esm/src/jitCompilers/json/stringifySpec/stringifyHelpers.js.map +1 -0
  257. package/.dist/esm/src/jitCompilers/json/toJsCode.d.ts +5 -0
  258. package/.dist/esm/src/jitCompilers/json/toJsCode.js +123 -0
  259. package/.dist/esm/src/jitCompilers/json/toJsCode.js.map +1 -0
  260. package/.dist/esm/src/lib/baseRunTypeFormat.d.ts +50 -0
  261. package/.dist/esm/src/lib/baseRunTypeFormat.js +200 -0
  262. package/.dist/esm/src/lib/baseRunTypeFormat.js.map +1 -0
  263. package/.dist/esm/src/lib/baseRunTypes.d.ts +75 -0
  264. package/.dist/esm/src/lib/baseRunTypes.js +308 -0
  265. package/.dist/esm/src/lib/baseRunTypes.js.map +1 -0
  266. package/.dist/esm/src/lib/createJitFunction.d.ts +5 -0
  267. package/.dist/esm/src/lib/createJitFunction.js +60 -0
  268. package/.dist/esm/src/lib/createJitFunction.js.map +1 -0
  269. package/.dist/esm/src/lib/dkProxy.d.ts +4 -0
  270. package/.dist/esm/src/lib/dkProxy.js +23 -0
  271. package/.dist/esm/src/lib/dkProxy.js.map +1 -0
  272. package/.dist/esm/src/lib/formats.d.ts +18 -0
  273. package/.dist/esm/src/lib/formats.js +89 -0
  274. package/.dist/esm/src/lib/formats.js.map +1 -0
  275. package/.dist/esm/src/lib/guards.d.ts +120 -0
  276. package/.dist/esm/src/lib/guards.js +243 -0
  277. package/.dist/esm/src/lib/guards.js.map +1 -0
  278. package/.dist/esm/src/lib/jitFnCompiler.d.ts +109 -0
  279. package/.dist/esm/src/lib/jitFnCompiler.js +648 -0
  280. package/.dist/esm/src/lib/jitFnCompiler.js.map +1 -0
  281. package/.dist/esm/src/lib/jitFnsRegistry.d.ts +6 -0
  282. package/.dist/esm/src/lib/jitFnsRegistry.js +41 -0
  283. package/.dist/esm/src/lib/jitFnsRegistry.js.map +1 -0
  284. package/.dist/esm/src/lib/typeId.d.ts +6 -0
  285. package/.dist/esm/src/lib/typeId.js +205 -0
  286. package/.dist/esm/src/lib/typeId.js.map +1 -0
  287. package/.dist/esm/src/lib/utils.d.ts +32 -0
  288. package/.dist/esm/src/lib/utils.js +325 -0
  289. package/.dist/esm/src/lib/utils.js.map +1 -0
  290. package/.dist/esm/src/mocking/constants.mock.d.ts +85 -0
  291. package/.dist/esm/src/mocking/constants.mock.js +108 -0
  292. package/.dist/esm/src/mocking/constants.mock.js.map +1 -0
  293. package/.dist/esm/src/mocking/mockRegistry.d.ts +3 -0
  294. package/.dist/esm/src/mocking/mockRegistry.js +12 -0
  295. package/.dist/esm/src/mocking/mockRegistry.js.map +1 -0
  296. package/.dist/esm/src/mocking/mockType.d.ts +3 -0
  297. package/.dist/esm/src/mocking/mockType.js +310 -0
  298. package/.dist/esm/src/mocking/mockType.js.map +1 -0
  299. package/.dist/esm/src/mocking/mockUtils.d.ts +15 -0
  300. package/.dist/esm/src/mocking/mockUtils.js +62 -0
  301. package/.dist/esm/src/mocking/mockUtils.js.map +1 -0
  302. package/.dist/esm/src/nodes/atomic/any.d.ts +8 -0
  303. package/.dist/esm/src/nodes/atomic/any.js +18 -0
  304. package/.dist/esm/src/nodes/atomic/any.js.map +1 -0
  305. package/.dist/esm/src/nodes/atomic/bigInt.d.ts +10 -0
  306. package/.dist/esm/src/nodes/atomic/bigInt.js +20 -0
  307. package/.dist/esm/src/nodes/atomic/bigInt.js.map +1 -0
  308. package/.dist/esm/src/nodes/atomic/boolean.d.ts +10 -0
  309. package/.dist/esm/src/nodes/atomic/boolean.js +20 -0
  310. package/.dist/esm/src/nodes/atomic/boolean.js.map +1 -0
  311. package/.dist/esm/src/nodes/atomic/date.d.ts +10 -0
  312. package/.dist/esm/src/nodes/atomic/date.js +20 -0
  313. package/.dist/esm/src/nodes/atomic/date.js.map +1 -0
  314. package/.dist/esm/src/nodes/atomic/enum.d.ts +8 -0
  315. package/.dist/esm/src/nodes/atomic/enum.js +22 -0
  316. package/.dist/esm/src/nodes/atomic/enum.js.map +1 -0
  317. package/.dist/esm/src/nodes/atomic/enumMember.d.ts +10 -0
  318. package/.dist/esm/src/nodes/atomic/enumMember.js +24 -0
  319. package/.dist/esm/src/nodes/atomic/enumMember.js.map +1 -0
  320. package/.dist/esm/src/nodes/atomic/literal.d.ts +20 -0
  321. package/.dist/esm/src/nodes/atomic/literal.js +126 -0
  322. package/.dist/esm/src/nodes/atomic/literal.js.map +1 -0
  323. package/.dist/esm/src/nodes/atomic/never.d.ts +10 -0
  324. package/.dist/esm/src/nodes/atomic/never.js +22 -0
  325. package/.dist/esm/src/nodes/atomic/never.js.map +1 -0
  326. package/.dist/esm/src/nodes/atomic/null.d.ts +10 -0
  327. package/.dist/esm/src/nodes/atomic/null.js +20 -0
  328. package/.dist/esm/src/nodes/atomic/null.js.map +1 -0
  329. package/.dist/esm/src/nodes/atomic/number.d.ts +10 -0
  330. package/.dist/esm/src/nodes/atomic/number.js +20 -0
  331. package/.dist/esm/src/nodes/atomic/number.js.map +1 -0
  332. package/.dist/esm/src/nodes/atomic/object.d.ts +8 -0
  333. package/.dist/esm/src/nodes/atomic/object.js +14 -0
  334. package/.dist/esm/src/nodes/atomic/object.js.map +1 -0
  335. package/.dist/esm/src/nodes/atomic/regexp.d.ts +10 -0
  336. package/.dist/esm/src/nodes/atomic/regexp.js +23 -0
  337. package/.dist/esm/src/nodes/atomic/regexp.js.map +1 -0
  338. package/.dist/esm/src/nodes/atomic/string.d.ts +8 -0
  339. package/.dist/esm/src/nodes/atomic/string.js +14 -0
  340. package/.dist/esm/src/nodes/atomic/string.js.map +1 -0
  341. package/.dist/esm/src/nodes/atomic/symbol.d.ts +11 -0
  342. package/.dist/esm/src/nodes/atomic/symbol.js +26 -0
  343. package/.dist/esm/src/nodes/atomic/symbol.js.map +1 -0
  344. package/.dist/esm/src/nodes/atomic/undefined.d.ts +9 -0
  345. package/.dist/esm/src/nodes/atomic/undefined.js +17 -0
  346. package/.dist/esm/src/nodes/atomic/undefined.js.map +1 -0
  347. package/.dist/esm/src/nodes/atomic/unknown.d.ts +3 -0
  348. package/.dist/esm/src/nodes/atomic/unknown.js +8 -0
  349. package/.dist/esm/src/nodes/atomic/unknown.js.map +1 -0
  350. package/.dist/esm/src/nodes/atomic/void.d.ts +10 -0
  351. package/.dist/esm/src/nodes/atomic/void.js +20 -0
  352. package/.dist/esm/src/nodes/atomic/void.js.map +1 -0
  353. package/.dist/esm/src/nodes/collection/class.d.ts +9 -0
  354. package/.dist/esm/src/nodes/collection/class.js +38 -0
  355. package/.dist/esm/src/nodes/collection/class.js.map +1 -0
  356. package/.dist/esm/src/nodes/collection/functionParams.d.ts +9 -0
  357. package/.dist/esm/src/nodes/collection/functionParams.js +33 -0
  358. package/.dist/esm/src/nodes/collection/functionParams.js.map +1 -0
  359. package/.dist/esm/src/nodes/collection/interface.d.ts +43 -0
  360. package/.dist/esm/src/nodes/collection/interface.js +221 -0
  361. package/.dist/esm/src/nodes/collection/interface.js.map +1 -0
  362. package/.dist/esm/src/nodes/collection/intersection.d.ts +9 -0
  363. package/.dist/esm/src/nodes/collection/intersection.js +21 -0
  364. package/.dist/esm/src/nodes/collection/intersection.js.map +1 -0
  365. package/.dist/esm/src/nodes/collection/tuple.d.ts +18 -0
  366. package/.dist/esm/src/nodes/collection/tuple.js +74 -0
  367. package/.dist/esm/src/nodes/collection/tuple.js.map +1 -0
  368. package/.dist/esm/src/nodes/collection/union.d.ts +19 -0
  369. package/.dist/esm/src/nodes/collection/union.js +162 -0
  370. package/.dist/esm/src/nodes/collection/union.js.map +1 -0
  371. package/.dist/esm/src/nodes/collection/unionDiscriminator.d.ts +21 -0
  372. package/.dist/esm/src/nodes/collection/unionDiscriminator.js +198 -0
  373. package/.dist/esm/src/nodes/collection/unionDiscriminator.js.map +1 -0
  374. package/.dist/esm/src/nodes/function/function.d.ts +33 -0
  375. package/.dist/esm/src/nodes/function/function.js +155 -0
  376. package/.dist/esm/src/nodes/function/function.js.map +1 -0
  377. package/.dist/esm/src/nodes/member/array.d.ts +24 -0
  378. package/.dist/esm/src/nodes/member/array.js +154 -0
  379. package/.dist/esm/src/nodes/member/array.js.map +1 -0
  380. package/.dist/esm/src/nodes/member/callSignature.d.ts +11 -0
  381. package/.dist/esm/src/nodes/member/callSignature.js +40 -0
  382. package/.dist/esm/src/nodes/member/callSignature.js.map +1 -0
  383. package/.dist/esm/src/nodes/member/genericMember.d.ts +15 -0
  384. package/.dist/esm/src/nodes/member/genericMember.js +68 -0
  385. package/.dist/esm/src/nodes/member/genericMember.js.map +1 -0
  386. package/.dist/esm/src/nodes/member/indexProperty.d.ts +21 -0
  387. package/.dist/esm/src/nodes/member/indexProperty.js +130 -0
  388. package/.dist/esm/src/nodes/member/indexProperty.js.map +1 -0
  389. package/.dist/esm/src/nodes/member/method.d.ts +11 -0
  390. package/.dist/esm/src/nodes/member/method.js +41 -0
  391. package/.dist/esm/src/nodes/member/method.js.map +1 -0
  392. package/.dist/esm/src/nodes/member/methodSignature.d.ts +12 -0
  393. package/.dist/esm/src/nodes/member/methodSignature.js +44 -0
  394. package/.dist/esm/src/nodes/member/methodSignature.js.map +1 -0
  395. package/.dist/esm/src/nodes/member/param.d.ts +8 -0
  396. package/.dist/esm/src/nodes/member/param.js +17 -0
  397. package/.dist/esm/src/nodes/member/param.js.map +1 -0
  398. package/.dist/esm/src/nodes/member/property.d.ts +19 -0
  399. package/.dist/esm/src/nodes/member/property.js +85 -0
  400. package/.dist/esm/src/nodes/member/property.js.map +1 -0
  401. package/.dist/esm/src/nodes/member/restParams.d.ts +7 -0
  402. package/.dist/esm/src/nodes/member/restParams.js +15 -0
  403. package/.dist/esm/src/nodes/member/restParams.js.map +1 -0
  404. package/.dist/esm/src/nodes/member/tupleMember.d.ts +20 -0
  405. package/.dist/esm/src/nodes/member/tupleMember.js +93 -0
  406. package/.dist/esm/src/nodes/member/tupleMember.js.map +1 -0
  407. package/.dist/esm/src/nodes/native/Iterable.d.ts +18 -0
  408. package/.dist/esm/src/nodes/native/Iterable.js +135 -0
  409. package/.dist/esm/src/nodes/native/Iterable.js.map +1 -0
  410. package/.dist/esm/src/nodes/native/map.d.ts +42 -0
  411. package/.dist/esm/src/nodes/native/map.js +96 -0
  412. package/.dist/esm/src/nodes/native/map.js.map +1 -0
  413. package/.dist/esm/src/nodes/native/nonSerializable.d.ts +14 -0
  414. package/.dist/esm/src/nodes/native/nonSerializable.js +36 -0
  415. package/.dist/esm/src/nodes/native/nonSerializable.js.map +1 -0
  416. package/.dist/esm/src/nodes/native/promise.d.ts +15 -0
  417. package/.dist/esm/src/nodes/native/promise.js +38 -0
  418. package/.dist/esm/src/nodes/native/promise.js.map +1 -0
  419. package/.dist/esm/src/nodes/native/set.d.ts +30 -0
  420. package/.dist/esm/src/nodes/native/set.js +60 -0
  421. package/.dist/esm/src/nodes/native/set.js.map +1 -0
  422. package/.dist/esm/src/run-types-pure-fns.d.ts +7 -0
  423. package/.dist/esm/src/run-types-pure-fns.js +112 -0
  424. package/.dist/esm/src/run-types-pure-fns.js.map +1 -0
  425. package/.dist/esm/src/types.d.ts +152 -0
  426. package/.dist/esm/src/types.js +59 -0
  427. package/.dist/esm/src/types.js.map +1 -0
  428. package/LICENSE +21 -0
  429. package/README.md +32 -0
  430. package/package.json +66 -0
@@ -0,0 +1,383 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const type = require("@deepkit/type");
4
+ const core = require("@mionjs/core");
5
+ const src_constants_kind = require("../../constants.kind.cjs");
6
+ const src_lib_utils = require("../../lib/utils.cjs");
7
+ const src_constants_functions = require("../../constants.functions.cjs");
8
+ const src_constants = require("../../constants.cjs");
9
+ const fnID = src_constants_functions.JitFunctions.fromBinary.id;
10
+ function emitFromBinary(runType, comp) {
11
+ const src = runType.src;
12
+ const kind = src.kind;
13
+ const dεs = comp.args.dεs;
14
+ switch (kind) {
15
+ // ###################### ATOMIC TYPES ######################
16
+ case type.ReflectionKind.unknown:
17
+ case type.ReflectionKind.any: {
18
+ return { code: `JSON.parse(${dεs}.desString())`, type: "E" };
19
+ }
20
+ case type.ReflectionKind.null:
21
+ return { code: `(${dεs}.index++, null)`, type: "E" };
22
+ case type.ReflectionKind.boolean:
23
+ return { code: `${dεs}.view.getUint8(${dεs}.index++) === 1`, type: "E" };
24
+ case type.ReflectionKind.number: {
25
+ return { code: `${dεs}.view.getFloat64(${dεs}.index, 1, (${dεs}.index += 8))`, type: "E" };
26
+ }
27
+ case type.ReflectionKind.string: {
28
+ return { code: `${dεs}.desString()`, type: "E" };
29
+ }
30
+ case type.ReflectionKind.bigint: {
31
+ return { code: `BigInt(${dεs}.desString(true))`, type: "E" };
32
+ }
33
+ case type.ReflectionKind.undefined:
34
+ case type.ReflectionKind.void:
35
+ return { code: `(${dεs}.index++, undefined)`, type: "E" };
36
+ case type.ReflectionKind.symbol: {
37
+ return { code: `Symbol(${dεs}.desString() || undefined)`, type: "E" };
38
+ }
39
+ case type.ReflectionKind.regexp: {
40
+ return { code: `new RegExp(${dεs}.desString(), ${dεs}.desString())`, type: "E" };
41
+ }
42
+ case type.ReflectionKind.object:
43
+ return { code: `JSON.parse(${dεs}.desString())`, type: "E" };
44
+ case type.ReflectionKind.enum: {
45
+ return { code: `${dεs}.desEnum()`, type: "E" };
46
+ }
47
+ case type.ReflectionKind.enumMember:
48
+ throw new Error("Binary deserialization not supported for enum member types");
49
+ case type.ReflectionKind.never:
50
+ throw new Error("Never type cannot be deserialized from Binary");
51
+ case type.ReflectionKind.templateLiteral:
52
+ throw new Error("Template literals are not supported in Binary deserialization");
53
+ case type.ReflectionKind.literal: {
54
+ if (comp.opts.noLiterals) {
55
+ const lit = runType.src.literal;
56
+ if (lit instanceof RegExp) return emitFromBinaryAs(runType, comp, type.ReflectionKind.regexp);
57
+ switch (typeof lit) {
58
+ case "string":
59
+ return emitFromBinaryAs(runType, comp, type.ReflectionKind.string);
60
+ case "number":
61
+ return emitFromBinaryAs(runType, comp, type.ReflectionKind.number);
62
+ case "boolean":
63
+ return emitFromBinaryAs(runType, comp, type.ReflectionKind.boolean);
64
+ case "bigint":
65
+ return emitFromBinaryAs(runType, comp, type.ReflectionKind.bigint);
66
+ case "symbol":
67
+ return emitFromBinaryAs(runType, comp, type.ReflectionKind.symbol);
68
+ default:
69
+ throw new Error(`Unsupported literal type ${typeof lit}`);
70
+ }
71
+ }
72
+ return { code: src_lib_utils.toLiteral(runType.src.literal), type: "E" };
73
+ }
74
+ // ###################### MEMBER RUNTYPES ######################
75
+ // Types that represent members of collections or other structures
76
+ case type.ReflectionKind.rest:
77
+ // rest params are deserialized as array but start at rest item index
78
+ case type.ReflectionKind.array: {
79
+ const rt = runType;
80
+ rt.checkNonSkipTypes(comp);
81
+ const child = rt.getMemberType();
82
+ const childCode = comp.compile(child, "S", fnID);
83
+ if (!childCode?.code) throw new Error(`Do not know how to deserialize Array<${child.getTypeName()}> from Binary.`);
84
+ const isRest = rt.src.kind === type.ReflectionKind.rest;
85
+ const index = rt.getChildVarName(comp);
86
+ const isExpression = src_lib_utils.childIsExpression(childCode, child);
87
+ const code = isExpression ? `${comp.getChildVλl()} = ${childCode.code};` : childCode.code;
88
+ const lengthVal = comp.getLocalVarName("arrL", rt);
89
+ const arrayInit = isRest ? "" : `${comp.vλl} = new Array(${lengthVal})`;
90
+ return {
91
+ code: `
92
+ const ${lengthVal} = ${dεs}.view.getUint32(${dεs}.index, 1); ${dεs}.index += 4; ${arrayInit};
93
+ for (let ${index} = ${rt.startIndex(comp)}; ${index} < ${lengthVal}; ${index}++) {${code}}
94
+ `,
95
+ type: "S"
96
+ };
97
+ }
98
+ case type.ReflectionKind.indexSignature: {
99
+ const rt = runType;
100
+ const indexKind = rt.src.index?.kind;
101
+ const memberCode = comp.compile(rt.getJitChild(comp), "S", fnID);
102
+ if (!memberCode?.code) return { code: void 0, type: "E" };
103
+ const prop = rt.getChildVarName(comp);
104
+ const countVar = comp.getLocalVarName("cnt", rt);
105
+ const indexVar = comp.getLocalVarName("propI", rt);
106
+ let keyDeserializationCode;
107
+ if (indexKind === type.ReflectionKind.number) {
108
+ keyDeserializationCode = `const ${prop} = ${dεs}.view.getUint32(${dεs}.index, 1); ${dεs}.index += 4;`;
109
+ } else {
110
+ keyDeserializationCode = `const ${prop} = ${dεs}.desSafePropName();`;
111
+ }
112
+ const memberInit = memberCode.type === "E" ? `${comp.vλl}[${prop}] = ${memberCode.code};` : memberCode.code;
113
+ const deserializeCode = `for (let ${indexVar} = 0; ${indexVar} < ${countVar}; ${indexVar}++) {${keyDeserializationCode}${memberInit}}`;
114
+ return {
115
+ code: `const ${countVar} = ${dεs}.view.getUint32(${dεs}.index, 1); ${dεs}.index += 4; ${comp.vλl} = {}; ${deserializeCode}`,
116
+ type: "S"
117
+ };
118
+ }
119
+ case type.ReflectionKind.function:
120
+ case type.ReflectionKind.method:
121
+ case type.ReflectionKind.methodSignature:
122
+ case type.ReflectionKind.callSignature:
123
+ if (runType.src.subKind === src_constants_kind.ReflectionSubKind.params) {
124
+ return emitFromBinaryAs(runType, comp, type.ReflectionKind.tuple);
125
+ } else {
126
+ throw new Error(
127
+ "Binary deserialization not supported for functions, call compileParams or compileReturn instead."
128
+ );
129
+ }
130
+ case type.ReflectionKind.parameter: {
131
+ const rt = runType;
132
+ switch (src.subKind) {
133
+ case src_constants_kind.ReflectionSubKind.mapKey:
134
+ case src_constants_kind.ReflectionSubKind.mapValue:
135
+ case src_constants_kind.ReflectionSubKind.setItem: {
136
+ const child = rt.getJitChild(comp);
137
+ const childJit = comp.compile(child, "S", fnID);
138
+ if (!childJit?.code || !child)
139
+ throw new Error(`Do not know how to deserialize ${rt.getTypeName()} from Binary.`);
140
+ const parent = rt.getParent();
141
+ const parentVλl = parent.getCustomVλl(comp)?.vλl || comp.vλl;
142
+ const vλl = rt.getCustomVλl(comp)?.vλl;
143
+ const isExpression = src_lib_utils.childIsExpression(childJit, child);
144
+ const code = isExpression ? `const ${vλl} = ${childJit.code};` : childJit.code || "";
145
+ let setOperation = "";
146
+ switch (rt.src.subKind) {
147
+ case src_constants_kind.ReflectionSubKind.mapKey:
148
+ break;
149
+ // we set map item once we have the key and value
150
+ case src_constants_kind.ReflectionSubKind.mapValue: {
151
+ const mapKey = parent.getMapKeyVλl(comp);
152
+ setOperation = `${parentVλl}.set(${mapKey}, ${vλl})`;
153
+ break;
154
+ }
155
+ case src_constants_kind.ReflectionSubKind.setItem:
156
+ setOperation = `${parentVλl}.add(${vλl})`;
157
+ break;
158
+ }
159
+ return { code: `${code}; ${setOperation};`, type: "S" };
160
+ }
161
+ default:
162
+ return emitFromBinaryAs(runType, comp, type.ReflectionKind.tupleMember);
163
+ }
164
+ }
165
+ case type.ReflectionKind.property:
166
+ case type.ReflectionKind.propertySignature: {
167
+ const rt = runType;
168
+ const parent = rt.getParent();
169
+ const child = rt.getJitChild(comp);
170
+ const childJit = comp.compile(child, "S", fnID);
171
+ if (rt.isOptional()) {
172
+ const { bitMIndexVar, bitIndex } = getOptionalBitmapItems(parent, comp, 0, rt.optionalIndex, false);
173
+ const initCode = childJit.type === "E" ? `${comp.getChildVλl()} = ${childJit.code};` : childJit.code;
174
+ return {
175
+ code: `if (${dεs}.view.getUint8(${bitMIndexVar}, 1) & (1 << (${bitIndex}))) {${initCode}}`,
176
+ type: "S"
177
+ };
178
+ }
179
+ const isExpression = src_lib_utils.childIsExpression(childJit, child);
180
+ if (!isExpression) {
181
+ return childJit;
182
+ }
183
+ const propName = getPropName(rt, comp);
184
+ return { code: `${propName}:${childJit?.code}`, type: "E" };
185
+ }
186
+ case type.ReflectionKind.tupleMember: {
187
+ const rt = runType;
188
+ const childJit = comp.compile(rt.getJitChild(comp), "S", fnID);
189
+ const nullJIt = emitFromBinaryAs(rt, comp, type.ReflectionKind.undefined);
190
+ const itemJit = childJit?.code ? childJit : nullJIt;
191
+ const initCode = itemJit.type === "E" ? `${comp.getChildVλl()} = ${itemJit.code}` : itemJit.code;
192
+ if (rt.isRest()) return itemJit;
193
+ const optionalIndex = rt.optionalIndex;
194
+ const bitMIndexVar = rt._bitmapVar;
195
+ const isFnParam = rt._isFnParam;
196
+ const isOptional = rt.isOptional() || isFnParam;
197
+ if (isOptional && optionalIndex !== void 0 && bitMIndexVar) {
198
+ const bitIndex = optionalIndex & 7;
199
+ const code = `if (${dεs}.view.getUint8(${bitMIndexVar}, 1) & (1 << (${bitIndex}))) {${initCode}}`;
200
+ return { code, type: "S" };
201
+ }
202
+ return { code: initCode, type: "S" };
203
+ }
204
+ case type.ReflectionKind.promise:
205
+ throw new Error("Jit compilation disabled for Non Serializable types.");
206
+ // ###################### COLLECTION RUNTYPES ######################
207
+ // Types that contain other types as members
208
+ case type.ReflectionKind.objectLiteral:
209
+ case type.ReflectionKind.intersection: {
210
+ const rt = runType;
211
+ if (rt.isCallable()) return comp.compile(rt.getCallSignature(), "S", fnID);
212
+ if (runType.src.subKind === src_constants_kind.ReflectionSubKind.nonSerializable) {
213
+ throw new Error("Binary deserialization is disabled for Non Serializable types");
214
+ } else {
215
+ const { required, optional, indexSignatures } = rt.splitJitSplitChildren(comp);
216
+ if (indexSignatures.length) {
217
+ return comp.compile(indexSignatures[0], "S", fnID);
218
+ }
219
+ const requiredItemsJit = required.map((prop) => comp.compile(prop, "S", fnID));
220
+ const expressionItemsJit = requiredItemsJit.filter((childJit, i) => src_lib_utils.childIsExpression(childJit, required[i])).map((prop) => prop.code).filter(Boolean);
221
+ const statementItemsCode = requiredItemsJit.filter(Boolean).filter((childJit, i) => !src_lib_utils.childIsExpression(childJit, required[i])).map((prop) => prop.code);
222
+ const expressionsPropsCode = expressionItemsJit.join(",");
223
+ const requiredPropsCode = statementItemsCode.join(";");
224
+ let optionalPropsCode = "";
225
+ if (optional.length) {
226
+ const { bitMapInit, bitMIndexVar } = getOptionalBitmapItems(rt, comp, optional.length, 0, false);
227
+ const propsCode = optional.map((prop, i) => {
228
+ prop.optionalIndex = i;
229
+ const modIndex = i + 1;
230
+ const shouldIncreaseBufferIndex = modIndex % 8 === 0;
231
+ const propCode = comp.compile(prop, "S", fnID).code;
232
+ if (!shouldIncreaseBufferIndex) return propCode;
233
+ return `${propCode} ${bitMIndexVar}++; `;
234
+ }).filter(Boolean).join("");
235
+ const sep = requiredPropsCode ? ";" : "";
236
+ optionalPropsCode = `${sep}
237
+ ${bitMapInit}
238
+ ${propsCode}`;
239
+ }
240
+ const canBeExpression = !requiredPropsCode && !optionalPropsCode;
241
+ if (canBeExpression) return { code: `{${expressionsPropsCode}}`, type: "E" };
242
+ return { code: `${comp.vλl} = {${expressionsPropsCode}}
243
+ ${requiredPropsCode}${optionalPropsCode}`, type: "S" };
244
+ }
245
+ }
246
+ case type.ReflectionKind.class:
247
+ switch (runType.src.subKind) {
248
+ case src_constants_kind.ReflectionSubKind.date:
249
+ return { code: `new Date(${dεs}.view.getFloat64(${dεs}.index, 1, (${dεs}.index += 8)))`, type: "E" };
250
+ case src_constants_kind.ReflectionSubKind.map:
251
+ case src_constants_kind.ReflectionSubKind.set: {
252
+ const rt = runType;
253
+ const children = rt.getJitChildren(comp);
254
+ const vλl = rt.getCustomVλl(comp)?.vλl || comp.vλl;
255
+ const initCode = `const ${vλl} = new ${rt.constructorName}()`;
256
+ if (!children.length) return { code: `new ${rt.constructorName}()`, type: "E" };
257
+ const childrenCode = children.map((c) => comp.compile(c, "S", fnID).code).filter(Boolean).join(";");
258
+ if (!childrenCode) return { code: initCode, type: "E" };
259
+ const index = comp.getLocalVarName("itI", rt);
260
+ const lengthVar = comp.getLocalVarName("itL", rt);
261
+ const readLength = `const ${lengthVar} = ${dεs}.view.getUint32(${dεs}.index, 1); ${dεs}.index += 4`;
262
+ return {
263
+ code: `${initCode}; ${readLength}; for (let ${index} = 0; ${index} < ${lengthVar}; ${index}++) {${childrenCode}} ${comp.vλl} = ${vλl};`,
264
+ type: "S"
265
+ };
266
+ }
267
+ case src_constants_kind.ReflectionSubKind.nonSerializable:
268
+ throw new Error("Binary deserialization disabled for Non Serializable types");
269
+ default: {
270
+ const rt = runType;
271
+ if (rt.isCallable()) {
272
+ const callSignature = rt.getCallSignature();
273
+ if (callSignature) return comp.compile(callSignature, "S", fnID);
274
+ }
275
+ const originalKind = rt.src.kind;
276
+ runType.src.kind = type.ReflectionKind.objectLiteral;
277
+ const plainObjCode = emitFromBinary(rt, comp);
278
+ runType.src.kind = originalKind;
279
+ const desFnVarName = comp.getLocalVarName("desFn", rt);
280
+ const desFnInit = `let ${desFnVarName} = utl.${core.getJitUtils().getDeserializeFn.name}(${src_lib_utils.toLiteral(rt.getClassName())})`;
281
+ const desFnCode = `if (${desFnVarName}) {${comp.vλl} = ${desFnVarName}(${comp.vλl})}`;
282
+ const desClassCode = `else if (${desFnVarName} = utl.${core.getJitUtils().getSerializeClass.name}(${src_lib_utils.toLiteral(rt.getClassName())})) {${comp.vλl} = new ${desFnVarName}(${comp.vλl})}`;
283
+ const initCode = plainObjCode.type === "E" ? `${comp.vλl} = ${plainObjCode.code}` : plainObjCode.code;
284
+ return { code: `${initCode};${desFnInit};${desFnCode} ${desClassCode}`, type: "S" };
285
+ }
286
+ }
287
+ break;
288
+ case type.ReflectionKind.infer:
289
+ throw new Error("Infer is not supported in Binary deserialization");
290
+ case type.ReflectionKind.tuple: {
291
+ const rt = runType;
292
+ const skip = rt.skipJit(comp);
293
+ if (skip) return { code: void 0, type: "S" };
294
+ const params = rt.getParamRunTypes(comp);
295
+ const isFnParams = runType.src.subKind === src_constants_kind.ReflectionSubKind.params;
296
+ const hasFixedSize = !isFnParams && params.every((p) => !p.isOptional() && !p.isRest());
297
+ const initTuple = hasFixedSize ? `${comp.vλl} = new Array(${params.length});` : `${comp.vλl} = [];`;
298
+ if (params.length === 0) return { code: initTuple, type: "S" };
299
+ const required = isFnParams ? [] : params.filter((p) => !p.isOptional() && !p.isRest());
300
+ const optional = isFnParams ? params.filter((p) => !p.isRest()) : params.filter((p) => p.isOptional() && !p.isRest());
301
+ const rest = params.filter((p) => p.isRest());
302
+ const requiredCode = required.map((p) => comp.compile(p, "S", fnID).code || "").join(";");
303
+ let optionalCode = "";
304
+ if (optional.length) {
305
+ const { bitMapInit, bitMIndexVar } = getOptionalBitmapItems(rt, comp, optional.length, 0, true);
306
+ const optionalParamsCode = optional.map((p, i) => {
307
+ p.optionalIndex = i;
308
+ p._bitmapVar = bitMIndexVar;
309
+ p._isFnParam = isFnParams;
310
+ const paramCode = comp.compile(p, "S", fnID).code || "";
311
+ const modIndex = i + 1;
312
+ const shouldIncreaseBufferIndex = modIndex % 8 === 0 && modIndex < optional.length;
313
+ const increaseIndex = shouldIncreaseBufferIndex ? `${bitMIndexVar}++;` : "";
314
+ return `${paramCode} ${increaseIndex}`;
315
+ }).join("");
316
+ optionalCode = `${bitMapInit}
317
+ ${optionalParamsCode}`;
318
+ }
319
+ const restCode = rest.map((p) => comp.compile(p, "S", fnID).code || "").join(";");
320
+ const allCode = [requiredCode, optionalCode, restCode].filter(Boolean).join(";");
321
+ return { code: `${initTuple}${allCode}`, type: "S" };
322
+ }
323
+ case type.ReflectionKind.typeParameter:
324
+ throw new Error("Type parameter not implemented in Binary deserialization");
325
+ case type.ReflectionKind.union: {
326
+ const rt = runType;
327
+ rt.checkAllowedChildren(comp);
328
+ const decVar = comp.getLocalVarName("dec", rt);
329
+ const errVarName = comp.getLocalVarName("uErr", rt);
330
+ comp.setContextItem(errVarName, `const ${errVarName} = "Can not binary decode union: invalid union index"`);
331
+ const children = rt.getJitChildren(comp);
332
+ if (children.length > src_constants.MAX_UNION_ITEMS) {
333
+ throw new Error(
334
+ `Binary deserialization not supported for Union with more than ${src_constants.MAX_UNION_ITEMS} items. Found ${children.length} in ${rt.getUnionTypeNames()}`
335
+ );
336
+ }
337
+ const maxIndex = children.length - 1;
338
+ const isUint16 = maxIndex > 255;
339
+ const readIndex = isUint16 ? `const ${decVar} = ${dεs}.view.getUint16(${dεs}.index, 1); ${dεs}.index += 2;` : `const ${decVar} = ${dεs}.view.getUint8(${dεs}.index++);`;
340
+ const ifElse = src_lib_utils.createIfElseFn();
341
+ const itemsCode = children.map((unionItem) => {
342
+ const childJit = comp.compile(unionItem, "S", fnID);
343
+ const isExpression = src_lib_utils.childIsExpression(childJit, unionItem);
344
+ const code2 = isExpression && childJit.code && childJit.code !== comp.vλl ? `${comp.vλl} = ${childJit.code}` : childJit.code || "";
345
+ const index = rt.getUnionItemIndex(comp, unionItem);
346
+ return `${ifElse()} (${decVar} === ${index}) {${code2 || "/*noop*/"}}`;
347
+ }).filter(Boolean);
348
+ const childrenCode = itemsCode.join("");
349
+ const failCode = childrenCode ? `else {throw new Error(${errVarName})}` : "";
350
+ const code = `
351
+ ${readIndex}
352
+ ${childrenCode}
353
+ ${failCode}
354
+ `;
355
+ return { code, type: "S" };
356
+ }
357
+ default:
358
+ throw new Error(`Binary deserialization not supported for ${type.ReflectionKind[kind]} types`);
359
+ }
360
+ throw new Error(`Do not know how to deserialize ${runType.getTypeName()} from Binary.`);
361
+ }
362
+ function getPropName(rt, comp, isObjectConstructor) {
363
+ const isSafe = src_lib_utils.isSafePropName(rt.src.name);
364
+ return isSafe ? rt.getChildVarName(comp) : rt.getChildLiteral(comp);
365
+ }
366
+ function getOptionalBitmapItems(rt, comp, optionalLength = 0, currentIndex = 0, isTuple = false) {
367
+ const dεs = comp.args.dεs;
368
+ const prefix = isTuple ? "t" : "";
369
+ const bitMIndexVar = comp.getLocalVarName(`${prefix}bimI`, rt);
370
+ const bitmapLength = Math.ceil(optionalLength / 8);
371
+ const bitIndex = `${currentIndex} & 7`;
372
+ const bitMapInit = `${bitmapLength > 1 ? "let " : "const"} ${bitMIndexVar} = ${dεs}.index; ${dεs}.index += ${bitmapLength};`;
373
+ return { bitMIndexVar, bitmapLength, bitIndex, bitMapInit };
374
+ }
375
+ function emitFromBinaryAs(rt, comp, kind) {
376
+ const originalKind = rt.src.kind;
377
+ rt.src.kind = kind;
378
+ const result = emitFromBinary(rt, comp);
379
+ rt.src.kind = originalKind;
380
+ return result;
381
+ }
382
+ exports.emitFromBinary = emitFromBinary;
383
+ //# sourceMappingURL=fromBinary.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fromBinary.cjs","sources":["../../../../../src/jitCompilers/binary/fromBinary.ts"],"sourcesContent":["/* ########\n * 2025 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\n\nimport {ReflectionKind} from '@deepkit/type';\nimport {getJitUtils} from '@mionjs/core';\nimport {ReflectionSubKind} from '../../constants.kind.ts';\nimport {childIsExpression, createIfElseFn, isSafePropName, toLiteral} from '../../lib/utils.ts';\nimport {jitBinaryDeserializerArgs, JitFunctions} from '../../constants.functions.ts';\nimport {MAX_UNION_ITEMS} from '../../constants.ts';\nimport type {JitCode} from '../../types.ts';\nimport type {BaseRunType} from '../../lib/baseRunTypes.ts';\nimport {type BaseFnCompiler} from '../../lib/jitFnCompiler.ts';\nimport type {LiteralRunType} from '../../nodes/atomic/literal.ts';\nimport type {ArrayRunType} from '../../nodes/member/array.ts';\nimport type {PropertyRunType} from '../../nodes/member/property.ts';\nimport type {InterfaceRunType} from '../../nodes/collection/interface.ts';\nimport type {IndexSignatureRunType} from '../../nodes/member/indexProperty.ts';\nimport type {ClassRunType} from '../../nodes/collection/class.ts';\nimport type {TupleRunType} from '../../nodes/collection/tuple.ts';\nimport type {ParameterRunType} from '../../nodes/member/param.ts';\nimport type {RestParamsRunType} from '../../nodes/member/restParams.ts';\nimport type {UnionRunType} from '../../nodes/collection/union.ts';\nimport type {IterableRunType} from '../../nodes/native/Iterable.ts';\nimport type {MapRunType} from '../../nodes/native/map.ts';\n\ntype BinaryCompiler = BaseFnCompiler<typeof jitBinaryDeserializerArgs, typeof JitFunctions.fromBinary.id>;\n\nconst fnID = JitFunctions.fromBinary.id;\n\n/**\n * Main Binary deserialization compiler function\n * Generates JIT code to deserialize Binary data to JavaScript values\n */\nexport function emitFromBinary(runType: BaseRunType, comp: BinaryCompiler): JitCode {\n const src = runType.src;\n const kind = src.kind;\n const dεs = comp.args.dεs;\n\n // hack is used in some case to increase the index passing an extra argument to view.get methods\n // ie: view.getUint32(index, littleEndian, index += 4);\n // getUint32 only accepts 2 arguments, but we use the 3rd one to increase the index on a single statement so code can be used as an expression\n\n switch (kind) {\n // ###################### ATOMIC TYPES ######################\n case ReflectionKind.unknown:\n case ReflectionKind.any: {\n // any is deserialized from json string\n return {code: `JSON.parse(${dεs}.desString())`, type: 'E'};\n }\n case ReflectionKind.null:\n return {code: `(${dεs}.index++, null)`, type: 'E'};\n case ReflectionKind.boolean:\n return {code: `${dεs}.view.getUint8(${dεs}.index++) === 1`, type: 'E'};\n case ReflectionKind.number: {\n return {code: `${dεs}.view.getFloat64(${dεs}.index, 1, (${dεs}.index += 8))`, type: 'E'};\n }\n case ReflectionKind.string: {\n return {code: `${dεs}.desString()`, type: 'E'};\n }\n case ReflectionKind.bigint: {\n return {code: `BigInt(${dεs}.desString(true))`, type: 'E'};\n }\n case ReflectionKind.undefined:\n case ReflectionKind.void:\n return {code: `(${dεs}.index++, undefined)`, type: 'E'};\n case ReflectionKind.symbol: {\n return {code: `Symbol(${dεs}.desString() || undefined)`, type: 'E'};\n }\n case ReflectionKind.regexp: {\n return {code: `new RegExp(${dεs}.desString(), ${dεs}.desString())`, type: 'E'};\n }\n case ReflectionKind.object:\n // similar to any, this is deserialized as json string\n return {code: `JSON.parse(${dεs}.desString())`, type: 'E'};\n case ReflectionKind.enum: {\n return {code: `${dεs}.desEnum()`, type: 'E'};\n }\n case ReflectionKind.enumMember:\n throw new Error('Binary deserialization not supported for enum member types');\n case ReflectionKind.never:\n throw new Error('Never type cannot be deserialized from Binary');\n case ReflectionKind.templateLiteral:\n throw new Error('Template literals are not supported in Binary deserialization');\n case ReflectionKind.literal: {\n if (comp.opts.noLiterals) {\n const lit = (runType as LiteralRunType).src.literal;\n if (lit instanceof RegExp) return emitFromBinaryAs(runType, comp, ReflectionKind.regexp);\n switch (typeof lit) {\n case 'string':\n return emitFromBinaryAs(runType, comp, ReflectionKind.string);\n case 'number':\n return emitFromBinaryAs(runType, comp, ReflectionKind.number);\n case 'boolean':\n return emitFromBinaryAs(runType, comp, ReflectionKind.boolean);\n case 'bigint':\n return emitFromBinaryAs(runType, comp, ReflectionKind.bigint);\n case 'symbol':\n return emitFromBinaryAs(runType, comp, ReflectionKind.symbol);\n default:\n throw new Error(`Unsupported literal type ${typeof lit}`);\n }\n }\n return {code: toLiteral((runType as LiteralRunType).src.literal), type: 'E'};\n }\n\n // ###################### MEMBER RUNTYPES ######################\n // Types that represent members of collections or other structures\n case ReflectionKind.rest: // rest params are deserialized as array but start at rest item index\n case ReflectionKind.array: {\n const rt = runType as ArrayRunType | RestParamsRunType;\n rt.checkNonSkipTypes(comp);\n const child = rt.getMemberType()!;\n const childCode = comp.compile(child, 'S', fnID);\n if (!childCode?.code) throw new Error(`Do not know how to deserialize Array<${child.getTypeName()}> from Binary.`);\n const isRest = rt.src.kind === ReflectionKind.rest;\n const index = rt.getChildVarName(comp);\n const isExpression = childIsExpression(childCode, child);\n const code = isExpression ? `${comp.getChildVλl()} = ${childCode.code};` : childCode.code;\n // deserialized from [length, items...]\n const lengthVal = comp.getLocalVarName('arrL', rt);\n const arrayInit = isRest ? '' : `${comp.vλl} = new Array(${lengthVal})`; // res array already initialized in parent\n return {\n code: `\n const ${lengthVal} = ${dεs}.view.getUint32(${dεs}.index, 1); ${dεs}.index += 4; ${arrayInit};\n for (let ${index} = ${rt.startIndex(comp)}; ${index} < ${lengthVal}; ${index}++) {${code}}\n `,\n type: 'S',\n };\n }\n\n case ReflectionKind.indexSignature: {\n const rt = runType as IndexSignatureRunType;\n const indexKind = (rt.src as any).index?.kind;\n const memberCode = comp.compile(rt.getJitChild(comp), 'S', fnID);\n if (!memberCode?.code) return {code: undefined, type: 'E'};\n\n const prop = rt.getChildVarName(comp);\n const countVar = comp.getLocalVarName('cnt', rt);\n const indexVar = comp.getLocalVarName('propI', rt);\n\n // Deserialize key based on index type\n let keyDeserializationCode: string;\n if (indexKind === ReflectionKind.number) {\n // For number indices, deserialize as uint32\n keyDeserializationCode = `const ${prop} = ${dεs}.view.getUint32(${dεs}.index, 1); ${dεs}.index += 4;`;\n } else {\n // For string indices, deserialize as string with prototype pollution protection\n keyDeserializationCode = `const ${prop} = ${dεs}.desSafePropName();`;\n }\n\n const memberInit = memberCode.type === 'E' ? `${comp.vλl}[${prop}] = ${memberCode.code};` : memberCode.code;\n const deserializeCode = `for (let ${indexVar} = 0; ${indexVar} < ${countVar}; ${indexVar}++) {${keyDeserializationCode}${memberInit}}`;\n\n return {\n code: `const ${countVar} = ${dεs}.view.getUint32(${dεs}.index, 1); ${dεs}.index += 4; ${comp.vλl} = {}; ${deserializeCode}`,\n type: 'S',\n };\n }\n\n case ReflectionKind.function:\n case ReflectionKind.method:\n case ReflectionKind.methodSignature:\n case ReflectionKind.callSignature:\n if (runType.src.subKind === ReflectionSubKind.params) {\n return emitFromBinaryAs(runType, comp, ReflectionKind.tuple);\n } else {\n throw new Error(\n 'Binary deserialization not supported for functions, call compileParams or compileReturn instead.'\n );\n }\n\n case ReflectionKind.parameter: {\n const rt = runType as ParameterRunType;\n switch (src.subKind) {\n case ReflectionSubKind.mapKey:\n case ReflectionSubKind.mapValue:\n case ReflectionSubKind.setItem: {\n const child = rt.getJitChild(comp);\n const childJit = comp.compile(child, 'S', fnID);\n if (!childJit?.code || !child)\n throw new Error(`Do not know how to deserialize ${rt.getTypeName()} from Binary.`);\n const parent = rt.getParent()!;\n const parentVλl = parent.getCustomVλl(comp)?.vλl || comp.vλl;\n const vλl = rt.getCustomVλl(comp)?.vλl;\n const isExpression = childIsExpression(childJit, child);\n const code = isExpression ? `const ${vλl} = ${childJit.code};` : childJit.code || '';\n let setOperation = '';\n switch (rt.src.subKind) {\n case ReflectionSubKind.mapKey:\n break; // we set map item once we have the key and value\n case ReflectionSubKind.mapValue: {\n const mapKey = (parent as MapRunType).getMapKeyVλl(comp); // not the best solution but works\n setOperation = `${parentVλl}.set(${mapKey}, ${vλl})`;\n break;\n }\n case ReflectionSubKind.setItem:\n setOperation = `${parentVλl}.add(${vλl})`;\n break;\n }\n return {code: `${code}; ${setOperation};`, type: 'S'};\n }\n default:\n return emitFromBinaryAs(runType, comp, ReflectionKind.tupleMember);\n }\n }\n\n case ReflectionKind.property:\n case ReflectionKind.propertySignature: {\n const rt = runType as PropertyRunType;\n const parent = rt.getParent() as InterfaceRunType;\n const child = rt.getJitChild(comp)!;\n const childJit = comp.compile(child, 'S', fnID);\n if (rt.isOptional()) {\n const {bitMIndexVar, bitIndex} = getOptionalBitmapItems(parent, comp, 0, rt.optionalIndex, false);\n const initCode = childJit.type === 'E' ? `${comp.getChildVλl()} = ${childJit.code};` : childJit.code;\n return {\n code: `if (${dεs}.view.getUint8(${bitMIndexVar}, 1) & (1 << (${bitIndex}))) {${initCode}}`,\n type: 'S',\n };\n }\n // block or statements code are initialized as obj.a = deserializeA; obj.b = deserializeB; after initial object has been created\n const isExpression = childIsExpression(childJit, child);\n if (!isExpression) {\n return childJit; // block statements already include variable assignment\n }\n // required props that are simple expressions code are part of an object constructor {a: deserializeA, b: deserializeB, c: deserializeC}\n const propName = getPropName(rt, comp, true);\n return {code: `${propName}:${childJit?.code}`, type: 'E'};\n }\n\n case ReflectionKind.tupleMember: {\n const rt = runType as ParameterRunType;\n const childJit = comp.compile(rt.getJitChild(comp), 'S', fnID);\n const nullJIt = emitFromBinaryAs(rt, comp, ReflectionKind.undefined);\n const itemJit = childJit?.code ? childJit : nullJIt; // if child is not serializable, we serialize null as need to fill the space in the tuple\n const initCode = itemJit.type === 'E' ? `${comp.getChildVλl()} = ${itemJit.code}` : itemJit.code;\n if (rt.isRest()) return itemJit;\n // Optional handling uses bitmap set at tuple level\n const optionalIndex = (rt as any).optionalIndex;\n const bitMIndexVar = (rt as any)._bitmapVar;\n const isFnParam = (rt as any)._isFnParam;\n // Treat as optional if either isOptional() is true OR it's a function param (all fn params are optional in binary)\n const isOptional = rt.isOptional() || isFnParam;\n if (isOptional && optionalIndex !== undefined && bitMIndexVar) {\n const bitIndex = optionalIndex & 7; // equivalent to optionalIndex % 8\n const code = `if (${dεs}.view.getUint8(${bitMIndexVar}, 1) & (1 << (${bitIndex}))) {${initCode}}`;\n return {code, type: 'S'};\n }\n return {code: initCode, type: 'S'};\n }\n case ReflectionKind.promise:\n throw new Error('Jit compilation disabled for Non Serializable types.');\n\n // ###################### COLLECTION RUNTYPES ######################\n // Types that contain other types as members\n case ReflectionKind.objectLiteral:\n case ReflectionKind.intersection: {\n const rt = runType as InterfaceRunType;\n if (rt.isCallable()) return comp.compile(rt.getCallSignature(), 'S', fnID);\n if (runType.src.subKind === ReflectionSubKind.nonSerializable) {\n throw new Error('Binary deserialization is disabled for Non Serializable types');\n } else {\n const {required, optional, indexSignatures} = rt.splitJitSplitChildren(comp);\n if (indexSignatures.length) {\n return comp.compile(indexSignatures[0], 'S', fnID); // index signature code already contains the loop\n }\n\n // required props that are simple expressions are restored as: '{a: deserializeA, b: deserializeB, c: deserializeC};\n // and are serialized/deserialised in the same order they are declared in the type\n const requiredItemsJit = required.map((prop) => comp.compile(prop, 'S', fnID));\n const expressionItemsJit = requiredItemsJit\n .filter((childJit, i) => childIsExpression(childJit, required[i]))\n .map((prop) => prop.code)\n .filter(Boolean);\n const statementItemsCode = requiredItemsJit\n .filter(Boolean)\n .filter((childJit, i) => !childIsExpression(childJit, required[i]))\n .map((prop) => prop.code);\n const expressionsPropsCode = expressionItemsJit.join(',');\n const requiredPropsCode = statementItemsCode.join(';');\n\n // optional props are initialized as obj.a = deserializeA; obj.b = deserializeB; obj.c = deserializeC;\n // bitmap is used to determine which optional props are present\n // header format: [bitmap, optional props]\n let optionalPropsCode = '';\n if (optional.length) {\n // optional properties are restored using a loop\n const {bitMapInit, bitMIndexVar} = getOptionalBitmapItems(rt, comp, optional.length, 0, false);\n const propsCode = optional\n .map((prop, i) => {\n prop.optionalIndex = i;\n const modIndex = i + 1;\n const shouldIncreaseBufferIndex = modIndex % 8 === 0;\n const propCode = comp.compile(prop, 'S', fnID).code;\n if (!shouldIncreaseBufferIndex) return propCode;\n // every 8 props we need to increase the bitmap index\n return `${propCode} ${bitMIndexVar}++; `;\n })\n .filter(Boolean)\n .join('');\n const sep = requiredPropsCode ? ';' : '';\n optionalPropsCode = `${sep}\\n${bitMapInit}\\n${propsCode}`;\n }\n\n const canBeExpression = !requiredPropsCode && !optionalPropsCode;\n if (canBeExpression) return {code: `{${expressionsPropsCode}}`, type: 'E'};\n return {code: `${comp.vλl} = {${expressionsPropsCode}}\\n${requiredPropsCode}${optionalPropsCode}`, type: 'S'};\n }\n }\n case ReflectionKind.class:\n switch (runType.src.subKind) {\n case ReflectionSubKind.date:\n return {code: `new Date(${dεs}.view.getFloat64(${dεs}.index, 1, (${dεs}.index += 8)))`, type: 'E'};\n case ReflectionSubKind.map:\n case ReflectionSubKind.set: {\n const rt = runType as IterableRunType;\n const children = rt.getJitChildren(comp);\n const vλl = rt.getCustomVλl(comp)?.vλl || comp.vλl;\n const initCode = `const ${vλl} = new ${rt.constructorName}()`;\n if (!children.length) return {code: `new ${rt.constructorName}()`, type: 'E'};\n const childrenCode = children\n .map((c) => comp.compile(c, 'S', fnID).code)\n .filter(Boolean)\n .join(';');\n if (!childrenCode) return {code: initCode, type: 'E'};\n const index = comp.getLocalVarName('itI', rt);\n const lengthVar = comp.getLocalVarName('itL', rt);\n const readLength = `const ${lengthVar} = ${dεs}.view.getUint32(${dεs}.index, 1); ${dεs}.index += 4`;\n return {\n code: `${initCode}; ${readLength}; for (let ${index} = 0; ${index} < ${lengthVar}; ${index}++) {${childrenCode}} ${comp.vλl} = ${vλl};`,\n type: 'S',\n };\n }\n case ReflectionSubKind.nonSerializable:\n throw new Error('Binary deserialization disabled for Non Serializable types');\n default: {\n const rt = runType as ClassRunType;\n if (rt.isCallable()) {\n const callSignature = rt.getCallSignature();\n if (callSignature) return comp.compile(callSignature, 'S', fnID);\n }\n const originalKind = rt.src.kind;\n (runType.src as any).kind = ReflectionKind.objectLiteral;\n const plainObjCode = emitFromBinary(rt, comp);\n (runType.src as any).kind = originalKind;\n const desFnVarName = comp.getLocalVarName('desFn', rt);\n const desFnInit = `let ${desFnVarName} = utl.${getJitUtils().getDeserializeFn.name}(${toLiteral(rt.getClassName())})`;\n const desFnCode = `if (${desFnVarName}) {${comp.vλl} = ${desFnVarName}(${comp.vλl})}`;\n const desClassCode = `else if (${desFnVarName} = utl.${getJitUtils().getSerializeClass.name}(${toLiteral(rt.getClassName())})) {${comp.vλl} = new ${desFnVarName}(${comp.vλl})}`;\n const initCode = plainObjCode.type === 'E' ? `${comp.vλl} = ${plainObjCode.code}` : plainObjCode.code;\n return {code: `${initCode};${desFnInit};${desFnCode} ${desClassCode}`, type: 'S'};\n }\n }\n break;\n\n case ReflectionKind.infer:\n throw new Error('Infer is not supported in Binary deserialization');\n\n case ReflectionKind.tuple: {\n const rt = runType as TupleRunType;\n const skip = rt.skipJit(comp);\n if (skip) return {code: undefined, type: 'S'};\n const params = rt.getParamRunTypes(comp);\n\n // For function params, all params are treated as optional in binary serialization\n // This allows sending null/undefined values over the wire even if the type is not optional\n const isFnParams = runType.src.subKind === ReflectionSubKind.params;\n\n // For function params, all params are optional so we can't use fixed size\n const hasFixedSize = !isFnParams && params.every((p) => !p.isOptional() && !p.isRest());\n const initTuple = hasFixedSize ? `${comp.vλl} = new Array(${params.length});` : `${comp.vλl} = [];`;\n if (params.length === 0) return {code: initTuple, type: 'S'};\n\n // Split params into required, optional, and rest\n // For function params, all non-rest params are treated as optional\n const required = isFnParams ? [] : params.filter((p) => !p.isOptional() && !p.isRest());\n const optional = isFnParams ? params.filter((p) => !p.isRest()) : params.filter((p) => p.isOptional() && !p.isRest());\n const rest = params.filter((p) => p.isRest());\n\n // Deserialize required params first\n const requiredCode = required.map((p) => comp.compile(p, 'S', fnID).code || '').join(';');\n\n // Deserialize optional params with bitmap (groups of 8)\n let optionalCode = '';\n if (optional.length) {\n const {bitMapInit, bitMIndexVar} = getOptionalBitmapItems(rt, comp, optional.length, 0, true);\n const optionalParamsCode = optional\n .map((p, i) => {\n (p as any).optionalIndex = i; // set optionalIndex for use in tupleMember case\n (p as any)._bitmapVar = bitMIndexVar; // pass bitmap variable name to tupleMember case\n (p as any)._isFnParam = isFnParams; // flag to indicate this is a function param\n const paramCode = comp.compile(p, 'S', fnID).code || '';\n const modIndex = i + 1;\n const shouldIncreaseBufferIndex = modIndex % 8 === 0 && modIndex < optional.length;\n const increaseIndex = shouldIncreaseBufferIndex ? `${bitMIndexVar}++;` : '';\n return `${paramCode} ${increaseIndex}`;\n })\n .join('');\n optionalCode = `${bitMapInit}\\n${optionalParamsCode}`;\n }\n\n // Deserialize rest params (handled as array by the rest param itself)\n const restCode = rest.map((p) => comp.compile(p, 'S', fnID).code || '').join(';');\n\n const allCode = [requiredCode, optionalCode, restCode].filter(Boolean).join(';');\n return {code: `${initTuple}${allCode}`, type: 'S'};\n }\n case ReflectionKind.typeParameter:\n throw new Error('Type parameter not implemented in Binary deserialization');\n\n case ReflectionKind.union: {\n const rt = runType as UnionRunType;\n rt.checkAllowedChildren(comp);\n const decVar = comp.getLocalVarName('dec', rt);\n const errVarName = comp.getLocalVarName('uErr', rt);\n comp.setContextItem(errVarName, `const ${errVarName} = \"Can not binary decode union: invalid union index\"`);\n const children = rt.getJitChildren(comp);\n if (children.length > MAX_UNION_ITEMS) {\n throw new Error(\n `Binary deserialization not supported for Union with more than ${MAX_UNION_ITEMS} items.` +\n ` Found ${children.length} in ${rt.getUnionTypeNames()}`\n );\n }\n const maxIndex = children.length - 1;\n const isUint16 = maxIndex > 255;\n const readIndex = isUint16\n ? `const ${decVar} = ${dεs}.view.getUint16(${dεs}.index, 1); ${dεs}.index += 2;`\n : `const ${decVar} = ${dεs}.view.getUint8(${dεs}.index++);`;\n const ifElse = createIfElseFn();\n const itemsCode = children\n .map((unionItem) => {\n const childJit = comp.compile(unionItem, 'S', fnID);\n const isExpression = childIsExpression(childJit, unionItem);\n const code =\n isExpression && childJit.code && childJit.code !== comp.vλl\n ? `${comp.vλl} = ${childJit.code}`\n : childJit.code || '';\n const index = rt.getUnionItemIndex(comp, unionItem);\n return `${ifElse()} (${decVar} === ${index}) {${code || '/*noop*/'}}`;\n })\n .filter(Boolean);\n const childrenCode = itemsCode.join('');\n const failCode = childrenCode ? `else {throw new Error(${errVarName})}` : '';\n const code = `\n ${readIndex}\n ${childrenCode}\n ${failCode}\n `;\n return {code, type: 'S'};\n }\n\n default:\n throw new Error(`Binary deserialization not supported for ${ReflectionKind[kind]} types`);\n }\n throw new Error(`Do not know how to deserialize ${runType.getTypeName()} from Binary.`);\n}\n\nfunction getPropName(rt: PropertyRunType, comp: BinaryCompiler, isObjectConstructor: boolean): string | number {\n const isSafe = isSafePropName(rt.src.name);\n if (isObjectConstructor) return isSafe ? rt.getChildVarName(comp) : rt.getChildLiteral(comp);\n return isSafe ? `.${rt.getChildVarName(comp)}` : `[${rt.getChildLiteral(comp)}]`;\n}\n\n/** Generates bitmap reading code for optional properties/params. Uses 1 bit per optional item (8 items per byte). */\nfunction getOptionalBitmapItems(\n rt: InterfaceRunType | TupleRunType,\n comp: BinaryCompiler,\n optionalLength = 0,\n currentIndex = 0,\n isTuple = false\n) {\n const dεs = comp.args.dεs;\n const prefix = isTuple ? 't' : '';\n const bitMIndexVar = comp.getLocalVarName(`${prefix}bimI`, rt); // index of the bitmap\n const bitmapLength = Math.ceil(optionalLength / 8);\n const bitIndex = `${currentIndex} & 7`; // equivalent to index % 8\n // bitmap for present optional items\n const bitMapInit = `${bitmapLength > 1 ? 'let ' : 'const'} ${bitMIndexVar} = ${dεs}.index; ${dεs}.index += ${bitmapLength};`;\n return {bitMIndexVar, bitmapLength, bitIndex, bitMapInit};\n}\n\nfunction emitFromBinaryAs(rt: BaseRunType, comp: BinaryCompiler, kind: ReflectionKind): JitCode {\n const originalKind = rt.src.kind;\n (rt.src as any).kind = kind;\n const result = emitFromBinary(rt, comp);\n (rt.src as any).kind = originalKind;\n return result;\n}\n"],"names":["JitFunctions","ReflectionKind","toLiteral","childIsExpression","ReflectionSubKind","getJitUtils","MAX_UNION_ITEMS","createIfElseFn","code","isSafePropName"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { jitBinaryDeserializerArgs, JitFunctions } from '../../constants.functions.ts';
2
+ import { JitCode } from '../../types.ts';
3
+ import { BaseRunType } from '../../lib/baseRunTypes.ts';
4
+ import { BaseFnCompiler } from '../../lib/jitFnCompiler.ts';
5
+ type BinaryCompiler = BaseFnCompiler<typeof jitBinaryDeserializerArgs, typeof JitFunctions.fromBinary.id>;
6
+ export declare function emitFromBinary(runType: BaseRunType, comp: BinaryCompiler): JitCode;
7
+ export {};