@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,308 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const core = require("@mionjs/core");
4
+ const src_constants = require("../constants.cjs");
5
+ const src_constants_functions = require("../constants.functions.cjs");
6
+ const type = require("@deepkit/type");
7
+ const src_lib_utils = require("./utils.cjs");
8
+ const src_lib_jitFnCompiler = require("./jitFnCompiler.cjs");
9
+ const src_lib_createJitFunction = require("./createJitFunction.cjs");
10
+ const src_constants_kind = require("../constants.kind.cjs");
11
+ const src_lib_formats = require("./formats.cjs");
12
+ const src_lib_typeId = require("./typeId.cjs");
13
+ const src_lib_jitFnsRegistry = require("./jitFnsRegistry.cjs");
14
+ const src_mocking_constants_mock = require("../mocking/constants.mock.cjs");
15
+ src_constants_functions.CodeTypes.returnBlock;
16
+ const S = src_constants_functions.CodeTypes.statement;
17
+ const E = src_constants_functions.CodeTypes.expression;
18
+ class BaseRunType {
19
+ isCircular;
20
+ src = null;
21
+ // Atomic, Collection, Member, Function
22
+ /**
23
+ * This single functions controls whether or not the code for a type should be inlined into the parent function
24
+ * or should create a separate jit function for it, add as a dependency and call it.
25
+ * @returns
26
+ */
27
+ isJitInlined = () => {
28
+ if (this.isCircular) return false;
29
+ if (core.getENV("DEBUG_JIT") === "INLINED") return true;
30
+ if (this.src.kind === type.ReflectionKind.array) return false;
31
+ if (this.src.typeName && this.getFamily() === "C") return false;
32
+ return true;
33
+ };
34
+ getKindName = src_lib_utils.memorize(() => src_constants_kind.getReflectionName(this));
35
+ getTypeName = () => this.src.typeName || this.getKindName();
36
+ stringify = src_lib_utils.memorize(() => type.stringifyType(this.src));
37
+ skipJit(comp) {
38
+ return false;
39
+ }
40
+ /** Returns the format portion of the type ID (cached in src._formatId), or undefined if no format. */
41
+ getFormatTypeID() {
42
+ const formatId = this.src._formatId;
43
+ return formatId || void 0;
44
+ }
45
+ /** Returns the type ID which is cached in src._typeId by getDeepkitTypeId(). Format ID is already included. */
46
+ getTypeID() {
47
+ if (this.src._typeId === void 0) {
48
+ throw new Error(`Missing cached type ID for ${this.getTypeName()}. Ensure getDeepkitTypeId() has been called.`);
49
+ }
50
+ return this.src._typeId;
51
+ }
52
+ getJitHash(opts) {
53
+ const optsCopy = { ...opts };
54
+ if (optsCopy.mock) delete optsCopy.mock;
55
+ return core.createUniqueHash(this.getTypeID().toString() + JSON.stringify(optsCopy));
56
+ }
57
+ getParent = () => this.src.parent?._rt;
58
+ checkIsCircularAndGetRefId(stack = []) {
59
+ const inStackIndex = stack.findIndex((rt) => {
60
+ if (rt === this) return true;
61
+ return rt.src.id && this.src.id && rt.src.id === this.src.id;
62
+ });
63
+ stack.findIndex((rt) => rt.src.id && this.src.id && rt.src.id === this.src.id);
64
+ const isInStack = inStackIndex >= 0;
65
+ if (isInStack) {
66
+ this.isCircular = true;
67
+ const name = this.src.typeName || "";
68
+ const refId = "$" + this.src.kind + `_${inStackIndex}` + name;
69
+ return refId;
70
+ }
71
+ return void 0;
72
+ }
73
+ /**
74
+ * Method that should be called Immediately after the RunType gets created to link the SrcType and RunType.
75
+ * This is more flexible than passing params to the constructor helps to avoid circular dependencies, etc.
76
+ * */
77
+ onCreated(src) {
78
+ this.src = src;
79
+ src._rt = this;
80
+ src_lib_formats.initFormatAnnotations(this);
81
+ src_lib_typeId.createTypeId(src);
82
+ }
83
+ /**
84
+ * Some elements might need a standalone name variable that ignores the vλl value of the parents.
85
+ * returns a variable that is being compiled, ignores the parents variable names */
86
+ getCustomVλl(comp) {
87
+ return void 0;
88
+ }
89
+ /**
90
+ * Some elements might need a custom static path to be able to reference the source of an error.
91
+ * ie: when validating a Map we need to differentiate if the value that failed is the key or the value of a map's entry.
92
+ */
93
+ getStaticPathLiteral(comp) {
94
+ return void 0;
95
+ }
96
+ // ########## Mock ##########
97
+ async mock(opts) {
98
+ await src_lib_jitFnsRegistry.registerJitFunctionCompiler(src_constants_functions.JitFunctions.mock);
99
+ return this.mockType(opts);
100
+ }
101
+ /** synchronous version of mock, throws an error if the mock function has not been loaded */
102
+ mockType(opts = {}) {
103
+ const mockFn = src_lib_jitFnsRegistry.getJitFunctionCompiler(src_constants_functions.JitFunctions.mock);
104
+ if (!mockFn)
105
+ throw new Error(
106
+ `Function ${src_constants_functions.JitFunctions.mock.name} has not been loaded. make sure you have called loadJitCompilerFunction(JitFunctions.mock) before calling mockType.`
107
+ );
108
+ const fnID = src_constants_functions.JitFunctions.mock.id;
109
+ const mockingOpts = { ...opts, mock: { ...src_mocking_constants_mock.defaultMockOptions, ...opts.mock || {} } };
110
+ const hash = src_lib_createJitFunction.getJITFnHash(fnID, this, mockingOpts);
111
+ const comp = new src_lib_jitFnCompiler.MockJitCompiler(this, mockingOpts, void 0, hash, this.getTypeID());
112
+ return mockFn(this, comp);
113
+ }
114
+ // ########## Create Jit Functions ##########
115
+ createJitFunction = (jitFn, opts = {}) => {
116
+ return this.createJitCompiledFunction(jitFn.id, void 0, opts).fn;
117
+ };
118
+ createJitCompiledFunction(fnID, parentCop, opts = {}) {
119
+ const fnHash = src_lib_createJitFunction.getJITFnHash(fnID, this, opts);
120
+ const jitCompiled = core.getJitUtils().getJIT(fnHash);
121
+ if (jitCompiled) {
122
+ if (core.getENV("DEBUG_JIT") === "VERBOSE")
123
+ console.log(`\x1B[32m Using cached function: ${jitCompiled.jitFnHash} \x1B[0m`);
124
+ return jitCompiled;
125
+ }
126
+ const newJitCompiler = src_lib_jitFnCompiler.createJitCompiler(
127
+ this,
128
+ fnID,
129
+ parentCop,
130
+ void 0,
131
+ void 0,
132
+ opts
133
+ );
134
+ try {
135
+ const codeType = this.getFamily() === "A" ? E : S;
136
+ newJitCompiler.compile(this, codeType, fnID);
137
+ newJitCompiler.createJitFunction();
138
+ } catch (e) {
139
+ newJitCompiler.removeFromJitCache();
140
+ if (typeof e?.message === "string" && !newJitCompiler.hasStackTrace(e.message))
141
+ e.message += newJitCompiler.getStackTrace();
142
+ throw e;
143
+ }
144
+ return newJitCompiler;
145
+ }
146
+ }
147
+ class AtomicRunType extends BaseRunType {
148
+ getFamily() {
149
+ return "A";
150
+ }
151
+ emitPrepareForJson(comp) {
152
+ return { code: void 0, type: S };
153
+ }
154
+ emitRestoreFromJson(comp) {
155
+ return { code: void 0, type: S };
156
+ }
157
+ emitHasUnknownKeys(comp) {
158
+ return { code: void 0, type: E };
159
+ }
160
+ emitUnknownKeyErrors(comp) {
161
+ return { code: void 0, type: S };
162
+ }
163
+ emitStripUnknownKeys(comp) {
164
+ return { code: void 0, type: S };
165
+ }
166
+ emitUnknownKeysToUndefined(comp) {
167
+ return { code: void 0, type: S };
168
+ }
169
+ }
170
+ class CollectionRunType extends BaseRunType {
171
+ getFamily() {
172
+ return "C";
173
+ }
174
+ getChildRunTypes = () => {
175
+ const childTypes = this.src.types || [];
176
+ return childTypes.map((t) => t._rt);
177
+ };
178
+ getJitChildren(comp) {
179
+ let skipIndex = false;
180
+ return this.getChildRunTypes().filter((c) => {
181
+ if (c.skipJit(comp)) return false;
182
+ const isIndex = c.src.kind === type.ReflectionKind.indexSignature;
183
+ if (isIndex && skipIndex) return false;
184
+ if (isIndex) skipIndex = true;
185
+ return true;
186
+ });
187
+ }
188
+ areAllChildrenOptional(children) {
189
+ return children.every(
190
+ (prop) => prop?.isOptional() || prop.src?.optional || prop.src.kind === type.ReflectionKind.indexSignature
191
+ );
192
+ }
193
+ emitHasUnknownKeys(comp) {
194
+ const codes = this.getJitChildren(comp).map((c) => comp.compileHasUnknownKeys(c, E).code).filter((code) => !!code);
195
+ return { code: codes.join(" || "), type: E };
196
+ }
197
+ emitUnknownKeyErrors(comp) {
198
+ const codes = this.getJitChildren(comp).map((c) => comp.compileUnknownKeyErrors(c, S).code).filter((code) => !!code);
199
+ return { code: codes.join(";"), type: S };
200
+ }
201
+ emitStripUnknownKeys(comp) {
202
+ const codes = this.getJitChildren(comp).map((c) => comp.compileStripUnknownKeys(c, S).code).filter((code) => !!code);
203
+ return { code: codes.join(";"), type: S };
204
+ }
205
+ emitUnknownKeysToUndefined(comp) {
206
+ const codes = this.getJitChildren(comp).map((c) => comp.compileUnknownKeysToUndefined(c, S).code).filter((code) => !!code);
207
+ return { code: codes.join(";"), type: S };
208
+ }
209
+ getChildrenTypeID = src_lib_utils.memorize((stack = []) => {
210
+ if (stack.length > core.MAX_STACK_DEPTH) throw new Error(src_constants.maxStackErrorMessage);
211
+ const circularJitConf = this.checkIsCircularAndGetRefId(stack);
212
+ if (circularJitConf) return circularJitConf;
213
+ stack.push(this);
214
+ const childrenIds = [];
215
+ const children = this.getChildRunTypes();
216
+ for (const child of children) {
217
+ childrenIds.push(child.getTypeID());
218
+ }
219
+ const isArray = this.src.kind === type.ReflectionKind.tuple || this.src.kind === type.ReflectionKind.array;
220
+ const groupID = isArray ? `[${childrenIds.join(",")}]` : `{${childrenIds.join(",")}}`;
221
+ const kind = this.src.subKind || this.src.kind;
222
+ stack.pop();
223
+ return `${kind}${groupID}`;
224
+ });
225
+ }
226
+ class MemberRunType extends BaseRunType {
227
+ /** used to compile json stringify */
228
+ skipCommas;
229
+ /** used to compile json stringify */
230
+ tempChildVλl;
231
+ getFamily() {
232
+ return "M";
233
+ }
234
+ getMemberType() {
235
+ const memberType = this.src.type;
236
+ return memberType._rt;
237
+ }
238
+ getChildIndex(comp) {
239
+ const start = comp?.opts?.paramsSlice?.start;
240
+ if (start) return src_lib_utils.getPropIndex(this.src) - start;
241
+ return src_lib_utils.getPropIndex(this.src);
242
+ }
243
+ getJitChild(comp) {
244
+ const member = this.getMemberType();
245
+ if (member.skipJit(comp)) return void 0;
246
+ return member;
247
+ }
248
+ emitHasUnknownKeys(comp) {
249
+ const child = this.getJitChild(comp);
250
+ const codeResult = comp.compileHasUnknownKeys(child, E);
251
+ if (!codeResult?.code) return { code: void 0, type: E };
252
+ const childName = comp.getChildVλl();
253
+ const finalCode = this.isOptional() ? `(${childName} !== undefined && ${codeResult.code})` : codeResult.code;
254
+ return { code: finalCode, type: codeResult.type };
255
+ }
256
+ emitUnknownKeyErrors(comp) {
257
+ const child = this.getJitChild(comp);
258
+ const codeResult = comp.compileUnknownKeyErrors(child, S);
259
+ if (!codeResult?.code) return { code: void 0, type: S };
260
+ const finalCode = this.isOptional() ? `if (${comp.getChildVλl()} !== undefined) {${codeResult.code}}` : codeResult.code;
261
+ return { code: finalCode, type: codeResult.type };
262
+ }
263
+ emitStripUnknownKeys(comp) {
264
+ const child = this.getJitChild(comp);
265
+ const codeResult = comp.compileStripUnknownKeys(child, S);
266
+ if (!codeResult?.code) return { code: void 0, type: S };
267
+ const finalCode = this.isOptional() ? `if (${comp.getChildVλl()} !== undefined) {${codeResult.code}}` : codeResult.code;
268
+ return { code: finalCode, type: codeResult.type };
269
+ }
270
+ emitUnknownKeysToUndefined(comp) {
271
+ const child = this.getJitChild(comp);
272
+ const codeResult = comp.compileUnknownKeysToUndefined(child, S);
273
+ if (!codeResult?.code) return { code: void 0, type: S };
274
+ const finalCode = this.isOptional() ? `if (${comp.getChildVλl()} !== undefined) {${codeResult.code}}` : codeResult.code;
275
+ return { code: finalCode, type: codeResult.type };
276
+ }
277
+ visitToBinary(comp) {
278
+ const child = this.getJitChild(comp);
279
+ const code = comp.compileToBinary(child, S);
280
+ if (!code?.code) return { code: void 0, type: S };
281
+ return this.isOptional() ? { code: `(${comp.getChildVλl()} !== undefined ? ${code.code} : utl.writeBinaryNull())`, type: S } : code;
282
+ }
283
+ visitFromBinary(comp) {
284
+ const child = this.getJitChild(comp);
285
+ const code = comp.compileFromBinary(child, S);
286
+ if (!code?.code) return { code: void 0, type: S };
287
+ return code;
288
+ }
289
+ getMemberTypeID = src_lib_utils.memorize((stack = []) => {
290
+ if (stack.length > core.MAX_STACK_DEPTH) throw new Error(src_constants.maxStackErrorMessage);
291
+ const optional = this.isOptional() ? "?" : "";
292
+ const kind = this.src.name?.toString() || this.src.index?.kind || this.src.subKind || this.src.kind;
293
+ const kindID = `${kind}${optional}`;
294
+ const circularJitConf = this.checkIsCircularAndGetRefId(stack);
295
+ if (circularJitConf) return `${kindID}:${circularJitConf}`;
296
+ stack.push(this);
297
+ const member = this.getMemberType();
298
+ const memberTypeID = member.getTypeID();
299
+ const typeID = `${kindID}:${memberTypeID}`;
300
+ stack.pop();
301
+ return typeID;
302
+ });
303
+ }
304
+ exports.AtomicRunType = AtomicRunType;
305
+ exports.BaseRunType = BaseRunType;
306
+ exports.CollectionRunType = CollectionRunType;
307
+ exports.MemberRunType = MemberRunType;
308
+ //# sourceMappingURL=baseRunTypes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseRunTypes.cjs","sources":["../../../../src/lib/baseRunTypes.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* ########\n * 2024 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\nimport {MAX_STACK_DEPTH, JitCompiledFn, createUniqueHash, getJitUtils, getENV} from '@mionjs/core';\nimport type {\n RunType,\n Mutable,\n RunTypeChildAccessor,\n JitFnID,\n SrcType,\n SrcCollection,\n CustomVλl,\n JitFn,\n JitCode,\n RunTypeOptions,\n StrNumber,\n DeepPartial,\n RunTypeFamily,\n} from '../types.ts';\nimport type {mockType} from '../mocking/mockType.ts';\nimport {maxStackErrorMessage} from '../constants.ts';\nimport {type CodeType, JitFunctions, CodeTypes} from '../constants.functions.ts';\nimport {ReflectionKind, stringifyType} from '@deepkit/type';\nimport type {TypeIndexSignature, TypeProperty, Type} from '@deepkit/type';\nimport {getPropIndex, memorize} from './utils.ts';\nimport {createJitCompiler, MockJitCompiler} from './jitFnCompiler.ts';\nimport {getJITFnHash} from './createJitFunction.ts';\nimport type {JitFnCompiler, JitErrorsFnCompiler} from './jitFnCompiler.ts';\nimport {type AnyKindName, getReflectionName} from '../constants.kind.ts';\nimport {initFormatAnnotations} from './formats.ts';\nimport {createTypeId} from './typeId.ts';\nimport {getJitFunctionCompiler, registerJitFunctionCompiler} from './jitFnsRegistry.ts';\nimport {defaultMockOptions} from '../mocking/constants.mock.ts';\n\nconst RB = CodeTypes.returnBlock;\nconst S = CodeTypes.statement;\nconst E = CodeTypes.expression;\n\nexport abstract class BaseRunType<T extends Type = Type> implements RunType {\n isCircular?: boolean;\n readonly src: SrcType<T> = null as any; // real value will be set after construction by the createRunType function\n abstract getFamily(): RunTypeFamily; // Atomic, Collection, Member, Function\n /**\n * This single functions controls whether or not the code for a type should be inlined into the parent function\n * or should create a separate jit function for it, add as a dependency and call it.\n * @returns\n */\n isJitInlined = (): boolean => {\n // if is circular, always create a separate jit function as need to self invoke\n if (this.isCircular) return false;\n if (getENV('DEBUG_JIT') === 'INLINED') return true;\n // all array are self invoked for isType and are usually repeated type like string[] or number[] so worth deduplicating\n if (this.src.kind === ReflectionKind.array) return false;\n // collection with name might be used in different places so worth deduplicating\n if (this.src.typeName && this.getFamily() === 'C') return false;\n return true;\n };\n getKindName = memorize((): AnyKindName => getReflectionName(this));\n getTypeName = (): string => this.src.typeName || this.getKindName();\n stringify = memorize((): string => stringifyType(this.src));\n skipJit(comp: JitFnCompiler): boolean {\n return false;\n }\n /** Returns the format portion of the type ID (cached in src._formatId), or undefined if no format. */\n getFormatTypeID(): string | undefined {\n // _formatId is cached by computeDeepkitFormatID during getDeepkitTypeId call\n // Empty string means no format, undefined means not computed yet\n const formatId = (this.src as any)._formatId;\n return formatId || undefined;\n }\n /** Returns the type ID which is cached in src._typeId by getDeepkitTypeId(). Format ID is already included. */\n getTypeID(): StrNumber {\n if (this.src._typeId === undefined) {\n throw new Error(`Missing cached type ID for ${this.getTypeName()}. Ensure getDeepkitTypeId() has been called.`);\n }\n return this.src._typeId;\n }\n getJitHash(opts: RunTypeOptions): string {\n const optsCopy = {...opts};\n // remove mock options as not relevant for jit functionality\n if (optsCopy.mock) delete optsCopy.mock;\n return createUniqueHash(this.getTypeID().toString() + JSON.stringify(optsCopy));\n }\n getParent = (): BaseRunType | undefined => (this.src.parent as SrcType)?._rt as BaseRunType;\n checkIsCircularAndGetRefId(stack: RunType[] = []): StrNumber | undefined {\n const inStackIndex = stack.findIndex((rt) => {\n if (rt === this) return true;\n // some nodes seems to be different objects in memory but are the same id, so we check by id as well\n return rt.src.id && this.src.id && rt.src.id === this.src.id;\n }); // cant use isSameJitType because it uses getTypeID and would loop forever\n const inStackSrcId = stack.findIndex((rt) => rt.src.id && this.src.id && rt.src.id === this.src.id);\n const isInStack = inStackIndex >= 0; // recursive reference\n if (isInStack) {\n this.isCircular = true;\n const name = this.src.typeName || ''; // todo: not sure if all the circular references will have a name\n const refId = '$' + this.src.kind + `_${inStackIndex}` + name; // ensures different circular types have different typeID\n return refId;\n }\n return undefined;\n }\n /**\n * Method that should be called Immediately after the RunType gets created to link the SrcType and RunType.\n * This is more flexible than passing params to the constructor helps to avoid circular dependencies, etc.\n * */\n onCreated(src: SrcType<any>): void {\n (this as Mutable<RunType>).src = src;\n (src as Mutable<SrcType>)._rt = this;\n initFormatAnnotations(this);\n // Cache the type ID on the src object - this includes format information\n createTypeId(src);\n }\n /**\n * Some elements might need a standalone name variable that ignores the vλl value of the parents.\n * returns a variable that is being compiled, ignores the parents variable names */\n getCustomVλl(comp: JitFnCompiler): CustomVλl | undefined {\n return undefined;\n }\n /**\n * Some elements might need a custom static path to be able to reference the source of an error.\n * ie: when validating a Map we need to differentiate if the value that failed is the key or the value of a map's entry.\n */\n getStaticPathLiteral(comp: JitFnCompiler): string | number | undefined {\n return undefined;\n }\n\n // ########## Mock ##########\n\n async mock(opts?: DeepPartial<RunTypeOptions>): Promise<any> {\n // although the mock function is not jit, it is also stored in the registry\n // this is because we don't want to load mock related functionality if not needed\n await registerJitFunctionCompiler(JitFunctions.mock);\n return this.mockType(opts);\n }\n\n /** synchronous version of mock, throws an error if the mock function has not been loaded */\n mockType(opts: DeepPartial<RunTypeOptions> = {}): any {\n const mockFn = getJitFunctionCompiler(JitFunctions.mock) as typeof mockType;\n if (!mockFn)\n throw new Error(\n `Function ${JitFunctions.mock.name} has not been loaded. make sure you have called loadJitCompilerFunction(JitFunctions.mock) before calling mockType.`\n );\n const fnID = JitFunctions.mock.id;\n // options sent to the compiler will be set to empty as mock options are handled separately from the compiler\n const mockingOpts = {...opts, mock: {...defaultMockOptions, ...(opts.mock || {})}} as RunTypeOptions;\n const hash = getJITFnHash(fnID, this, mockingOpts);\n const comp = new MockJitCompiler(this, mockingOpts, undefined, hash, this.getTypeID());\n return mockFn(this, comp);\n }\n\n // ########## Create Jit Functions ##########\n\n createJitFunction = (jitFn: JitFn, opts: RunTypeOptions = {}): ((...args: any[]) => any) => {\n return this.createJitCompiledFunction(jitFn.id, undefined, opts).fn;\n };\n\n createJitCompiledFunction(fnID: JitFnID, parentCop?: JitFnCompiler, opts: RunTypeOptions = {}): JitCompiledFn {\n const fnHash = getJITFnHash(fnID, this, opts);\n const jitCompiled = getJitUtils().getJIT(fnHash);\n if (jitCompiled) {\n if (getENV('DEBUG_JIT') === 'VERBOSE')\n console.log(`\\x1b[32m Using cached function: ${jitCompiled.jitFnHash} \\x1b[0m`);\n return jitCompiled;\n }\n const newJitCompiler: JitFnCompiler = createJitCompiler(\n this,\n fnID,\n parentCop,\n undefined,\n undefined,\n opts\n ) as JitFnCompiler;\n try {\n const codeType = this.getFamily() === 'A' ? E : S;\n newJitCompiler.compile(this, codeType, fnID);\n newJitCompiler.createJitFunction();\n } catch (e: any) {\n // if something goes wrong during compilation we want to remove the compiler from\n // the cache as this is automatically added to jitUtils cache during compilation\n newJitCompiler.removeFromJitCache();\n // TODO: we need to print the full path to the type that is causing the error\n // for this ideally we should add a parent Compiler and print the trace only from the root\n if (typeof e?.message === 'string' && !newJitCompiler.hasStackTrace(e.message))\n e.message += newJitCompiler.getStackTrace();\n throw e;\n }\n return newJitCompiler as JitCompiledFn;\n }\n\n // ########## emit Methods that generates src code ##########\n\n abstract emitIsType(comp: JitFnCompiler, expectedCType: CodeType): JitCode;\n abstract emitTypeErrors(comp: JitErrorsFnCompiler, expectedCType: CodeType): JitCode;\n abstract emitHasUnknownKeys(comp: JitFnCompiler, expectedCType: CodeType): JitCode;\n abstract emitUnknownKeyErrors(comp: JitErrorsFnCompiler, expectedCType: CodeType): JitCode;\n abstract emitStripUnknownKeys(comp: JitFnCompiler, expectedCType: CodeType): JitCode;\n abstract emitUnknownKeysToUndefined(comp: JitFnCompiler, expectedCType: CodeType): JitCode;\n // todo: maybe we should move these two into a single file like the rest of serializers\n abstract emitPrepareForJson(comp: JitFnCompiler, expectedCType: CodeType): JitCode;\n abstract emitRestoreFromJson(comp: JitFnCompiler, expectedCType: CodeType): JitCode;\n}\n\n/**\n * RunType that is atomic an does not contains any other child runTypes.\n * ie: string, number, boolean, any, null, undefined, void, never, bigint, etc.\n * */\nexport abstract class AtomicRunType<T extends Type> extends BaseRunType<T> {\n getFamily(): 'A' {\n return 'A';\n }\n emitPrepareForJson(comp: JitFnCompiler): JitCode {\n return {code: undefined, type: S};\n }\n emitRestoreFromJson(comp: JitFnCompiler): JitCode {\n return {code: undefined, type: S};\n }\n emitHasUnknownKeys(comp: JitFnCompiler): JitCode {\n return {code: undefined, type: E};\n }\n emitUnknownKeyErrors(comp: JitFnCompiler): JitCode {\n return {code: undefined, type: S};\n }\n emitStripUnknownKeys(comp: JitFnCompiler): JitCode {\n return {code: undefined, type: S};\n }\n emitUnknownKeysToUndefined(comp: JitFnCompiler): JitCode {\n return {code: undefined, type: S};\n }\n}\n\n/**\n * RunType that contains a collection or child runTypes.\n * Collection RunTypes are the only ones that can have circular references. as a child of a collection RunType can be the parent of the collection RunType.\n * i.e: interface, child runTypes are it's properties\n * i.e: tuple, it's child runTypes are the tuple members\n */\nexport abstract class CollectionRunType<T extends Type> extends BaseRunType<T> {\n getFamily(): 'C' {\n return 'C';\n }\n getChildRunTypes = (): BaseRunType[] => {\n const childTypes = ((this.src as SrcCollection).types as SrcType[]) || []; // deepkit stores child types in the types property\n return childTypes.map((t) => t._rt as BaseRunType);\n };\n getJitChildren(comp: JitFnCompiler): BaseRunType[] {\n let skipIndex = false; // if there are multiple index signatures, only the first one will be used as they must be same type just different keys\n return this.getChildRunTypes().filter((c) => {\n if (c.skipJit(comp)) return false;\n const isIndex = c.src.kind === ReflectionKind.indexSignature;\n if (isIndex && skipIndex) return false;\n if (isIndex) skipIndex = true;\n return true;\n });\n }\n areAllChildrenOptional(children: BaseRunType[]) {\n return children.every(\n (prop) =>\n (prop as MemberRunType<any>)?.isOptional() ||\n (prop.src as TypeProperty)?.optional ||\n prop.src.kind === ReflectionKind.indexSignature\n );\n }\n emitHasUnknownKeys(comp: JitFnCompiler): JitCode {\n const codes = this.getJitChildren(comp)\n .map((c) => comp.compileHasUnknownKeys(c, E).code)\n .filter((code) => !!code);\n return {code: codes.join(' || '), type: E};\n }\n emitUnknownKeyErrors(comp: JitErrorsFnCompiler): JitCode {\n const codes = this.getJitChildren(comp)\n .map((c) => comp.compileUnknownKeyErrors(c, S).code)\n .filter((code) => !!code);\n return {code: codes.join(';'), type: S};\n }\n emitStripUnknownKeys(comp: JitFnCompiler): JitCode {\n const codes = this.getJitChildren(comp)\n .map((c) => comp.compileStripUnknownKeys(c, S).code)\n .filter((code) => !!code);\n return {code: codes.join(';'), type: S};\n }\n emitUnknownKeysToUndefined(comp: JitFnCompiler): JitCode {\n const codes = this.getJitChildren(comp)\n .map((c) => comp.compileUnknownKeysToUndefined(c, S).code)\n .filter((code) => !!code);\n return {code: codes.join(';'), type: S};\n }\n private getChildrenTypeID = memorize((stack: BaseRunType<any>[] = []): StrNumber => {\n if (stack.length > MAX_STACK_DEPTH) throw new Error(maxStackErrorMessage);\n const circularJitConf = this.checkIsCircularAndGetRefId(stack);\n if (circularJitConf) return circularJitConf;\n stack.push(this);\n const childrenIds: (string | number)[] = [];\n const children = this.getChildRunTypes();\n for (const child of children) {\n childrenIds.push(child.getTypeID());\n }\n const isArray = this.src.kind === ReflectionKind.tuple || this.src.kind === ReflectionKind.array;\n const groupID = isArray ? `[${childrenIds.join(',')}]` : `{${childrenIds.join(',')}}`;\n const kind = this.src.subKind || this.src.kind;\n stack.pop();\n return `${kind}${groupID}`;\n });\n}\n\n/**\n * RunType that contains a single member or child RunType. usually part of a collection RunType.\n * i.e object properties, {prop: memberType} where memberType is the child RunType\n */\nexport abstract class MemberRunType<T extends Type> extends BaseRunType<T> implements RunTypeChildAccessor {\n abstract isOptional(): boolean;\n abstract getChildVarName(comp: JitFnCompiler): string | number;\n abstract getChildLiteral(comp: JitFnCompiler): string | number;\n abstract useArrayAccessor(): boolean;\n /** used to compile json stringify */\n skipCommas?: boolean;\n /** used to compile json stringify */\n tempChildVλl?: string;\n getFamily(): 'M' {\n return 'M';\n }\n getMemberType(): BaseRunType {\n const memberType = (this.src as any).type as SrcType; // deepkit stores member types in the type property\n return memberType._rt as BaseRunType;\n }\n getChildIndex(comp: JitFnCompiler) {\n const start = comp?.opts?.paramsSlice?.start;\n if (start) return getPropIndex(this.src) - start;\n return getPropIndex(this.src);\n }\n getJitChild(comp: JitFnCompiler): BaseRunType | undefined {\n const member: BaseRunType = this.getMemberType();\n if (member.skipJit(comp)) return undefined;\n return member;\n }\n emitHasUnknownKeys(comp: JitFnCompiler): JitCode {\n const child = this.getJitChild(comp);\n const codeResult = comp.compileHasUnknownKeys(child, E);\n if (!codeResult?.code) return {code: undefined, type: E};\n const childName = comp.getChildVλl();\n const finalCode = this.isOptional() ? `(${childName} !== undefined && ${codeResult.code})` : codeResult.code;\n return {code: finalCode, type: codeResult.type};\n }\n emitUnknownKeyErrors(comp: JitErrorsFnCompiler): JitCode {\n const child = this.getJitChild(comp);\n const codeResult = comp.compileUnknownKeyErrors(child, S);\n if (!codeResult?.code) return {code: undefined, type: S};\n const finalCode = this.isOptional() ? `if (${comp.getChildVλl()} !== undefined) {${codeResult.code}}` : codeResult.code;\n return {code: finalCode, type: codeResult.type};\n }\n emitStripUnknownKeys(comp: JitFnCompiler): JitCode {\n const child = this.getJitChild(comp);\n const codeResult = comp.compileStripUnknownKeys(child, S);\n if (!codeResult?.code) return {code: undefined, type: S};\n const finalCode = this.isOptional() ? `if (${comp.getChildVλl()} !== undefined) {${codeResult.code}}` : codeResult.code;\n return {code: finalCode, type: codeResult.type};\n }\n emitUnknownKeysToUndefined(comp: JitFnCompiler): JitCode {\n const child = this.getJitChild(comp);\n const codeResult = comp.compileUnknownKeysToUndefined(child, S);\n if (!codeResult?.code) return {code: undefined, type: S};\n const finalCode = this.isOptional() ? `if (${comp.getChildVλl()} !== undefined) {${codeResult.code}}` : codeResult.code;\n return {code: finalCode, type: codeResult.type};\n }\n visitToBinary(comp: JitFnCompiler): JitCode {\n const child = this.getJitChild(comp);\n const code = comp.compileToBinary(child, S);\n if (!code?.code) return {code: undefined, type: S};\n return this.isOptional()\n ? {code: `(${comp.getChildVλl()} !== undefined ? ${code.code} : utl.writeBinaryNull())`, type: S}\n : code;\n }\n visitFromBinary(comp: JitFnCompiler): JitCode {\n const child = this.getJitChild(comp);\n const code = comp.compileFromBinary(child, S);\n if (!code?.code) return {code: undefined, type: S};\n return code;\n }\n private getMemberTypeID = memorize((stack: BaseRunType<any>[] = []): StrNumber => {\n if (stack.length > MAX_STACK_DEPTH) throw new Error(maxStackErrorMessage);\n const optional = this.isOptional() ? '?' : '';\n const kind =\n (this.src as TypeProperty).name?.toString() ||\n (this.src as TypeIndexSignature).index?.kind ||\n this.src.subKind ||\n this.src.kind;\n const kindID = `${kind}${optional}`;\n const circularJitConf = this.checkIsCircularAndGetRefId(stack);\n if (circularJitConf) return `${kindID}:${circularJitConf}`;\n // TODO: some properties could be skipped from the JIT ID. so we could implement a mechanism to mark them to be skipped\n // ie: sample and sampleChars from StringFormat are too large but they do not affect jit code generation as those properties are only used during mocking\n stack.push(this);\n const member = this.getMemberType();\n const memberTypeID = member.getTypeID();\n const typeID = `${kindID}:${memberTypeID}`;\n stack.pop();\n return typeID;\n });\n}\n\n// ########## Load Composable Functions ##########\n"],"names":["CodeTypes","getENV","ReflectionKind","memorize","getReflectionName","stringifyType","createUniqueHash","initFormatAnnotations","createTypeId","registerJitFunctionCompiler","JitFunctions","getJitFunctionCompiler","defaultMockOptions","getJITFnHash","MockJitCompiler","getJitUtils","createJitCompiler","MAX_STACK_DEPTH","maxStackErrorMessage","getPropIndex"],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { JitCompiledFn } from '@mionjs/core';
2
+ import { RunType, RunTypeChildAccessor, JitFnID, SrcType, CustomVλl, JitFn, JitCode, RunTypeOptions, StrNumber, DeepPartial, RunTypeFamily } from '../types.ts';
3
+ import { CodeType } from '../constants.functions.ts';
4
+ import { Type } from '@deepkit/type';
5
+ import { JitFnCompiler, JitErrorsFnCompiler } from './jitFnCompiler.ts';
6
+ import { AnyKindName } from '../constants.kind.ts';
7
+ export declare abstract class BaseRunType<T extends Type = Type> implements RunType {
8
+ isCircular?: boolean;
9
+ readonly src: SrcType<T>;
10
+ abstract getFamily(): RunTypeFamily;
11
+ isJitInlined: () => boolean;
12
+ getKindName: () => AnyKindName;
13
+ getTypeName: () => string;
14
+ stringify: () => string;
15
+ skipJit(comp: JitFnCompiler): boolean;
16
+ getFormatTypeID(): string | undefined;
17
+ getTypeID(): StrNumber;
18
+ getJitHash(opts: RunTypeOptions): string;
19
+ getParent: () => BaseRunType | undefined;
20
+ checkIsCircularAndGetRefId(stack?: RunType[]): StrNumber | undefined;
21
+ onCreated(src: SrcType<any>): void;
22
+ getCustomVλl(comp: JitFnCompiler): CustomVλl | undefined;
23
+ getStaticPathLiteral(comp: JitFnCompiler): string | number | undefined;
24
+ mock(opts?: DeepPartial<RunTypeOptions>): Promise<any>;
25
+ mockType(opts?: DeepPartial<RunTypeOptions>): any;
26
+ createJitFunction: (jitFn: JitFn, opts?: RunTypeOptions) => ((...args: any[]) => any);
27
+ createJitCompiledFunction(fnID: JitFnID, parentCop?: JitFnCompiler, opts?: RunTypeOptions): JitCompiledFn;
28
+ abstract emitIsType(comp: JitFnCompiler, expectedCType: CodeType): JitCode;
29
+ abstract emitTypeErrors(comp: JitErrorsFnCompiler, expectedCType: CodeType): JitCode;
30
+ abstract emitHasUnknownKeys(comp: JitFnCompiler, expectedCType: CodeType): JitCode;
31
+ abstract emitUnknownKeyErrors(comp: JitErrorsFnCompiler, expectedCType: CodeType): JitCode;
32
+ abstract emitStripUnknownKeys(comp: JitFnCompiler, expectedCType: CodeType): JitCode;
33
+ abstract emitUnknownKeysToUndefined(comp: JitFnCompiler, expectedCType: CodeType): JitCode;
34
+ abstract emitPrepareForJson(comp: JitFnCompiler, expectedCType: CodeType): JitCode;
35
+ abstract emitRestoreFromJson(comp: JitFnCompiler, expectedCType: CodeType): JitCode;
36
+ }
37
+ export declare abstract class AtomicRunType<T extends Type> extends BaseRunType<T> {
38
+ getFamily(): 'A';
39
+ emitPrepareForJson(comp: JitFnCompiler): JitCode;
40
+ emitRestoreFromJson(comp: JitFnCompiler): JitCode;
41
+ emitHasUnknownKeys(comp: JitFnCompiler): JitCode;
42
+ emitUnknownKeyErrors(comp: JitFnCompiler): JitCode;
43
+ emitStripUnknownKeys(comp: JitFnCompiler): JitCode;
44
+ emitUnknownKeysToUndefined(comp: JitFnCompiler): JitCode;
45
+ }
46
+ export declare abstract class CollectionRunType<T extends Type> extends BaseRunType<T> {
47
+ getFamily(): 'C';
48
+ getChildRunTypes: () => BaseRunType[];
49
+ getJitChildren(comp: JitFnCompiler): BaseRunType[];
50
+ areAllChildrenOptional(children: BaseRunType[]): boolean;
51
+ emitHasUnknownKeys(comp: JitFnCompiler): JitCode;
52
+ emitUnknownKeyErrors(comp: JitErrorsFnCompiler): JitCode;
53
+ emitStripUnknownKeys(comp: JitFnCompiler): JitCode;
54
+ emitUnknownKeysToUndefined(comp: JitFnCompiler): JitCode;
55
+ private getChildrenTypeID;
56
+ }
57
+ export declare abstract class MemberRunType<T extends Type> extends BaseRunType<T> implements RunTypeChildAccessor {
58
+ abstract isOptional(): boolean;
59
+ abstract getChildVarName(comp: JitFnCompiler): string | number;
60
+ abstract getChildLiteral(comp: JitFnCompiler): string | number;
61
+ abstract useArrayAccessor(): boolean;
62
+ skipCommas?: boolean;
63
+ tempChildVλl?: string;
64
+ getFamily(): 'M';
65
+ getMemberType(): BaseRunType;
66
+ getChildIndex(comp: JitFnCompiler): number;
67
+ getJitChild(comp: JitFnCompiler): BaseRunType | undefined;
68
+ emitHasUnknownKeys(comp: JitFnCompiler): JitCode;
69
+ emitUnknownKeyErrors(comp: JitErrorsFnCompiler): JitCode;
70
+ emitStripUnknownKeys(comp: JitFnCompiler): JitCode;
71
+ emitUnknownKeysToUndefined(comp: JitFnCompiler): JitCode;
72
+ visitToBinary(comp: JitFnCompiler): JitCode;
73
+ visitFromBinary(comp: JitFnCompiler): JitCode;
74
+ private getMemberTypeID;
75
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const core = require("@mionjs/core");
4
+ const src_lib_jitFnCompiler = require("./jitFnCompiler.cjs");
5
+ const src_lib_jitFnsRegistry = require("./jitFnsRegistry.cjs");
6
+ function getJITFnHash(id, rt, opts) {
7
+ if (opts) return `${id}_${rt.getJitHash(opts)}`;
8
+ return `${id}_${rt.getJitHash({})}`;
9
+ }
10
+ function createJitFunction(comp) {
11
+ if (comp.fn) return comp.fn;
12
+ if (comp.stack.length !== 0) throw new Error("Can not get compiled function before the compile operation is finished");
13
+ if (core.getJitUtils().hasJitFn(comp.jitFnHash)) return core.getJitUtils().getJitFn(comp.jitFnHash);
14
+ const { fnCode, fnName, contextCode } = getJitFnCode(comp);
15
+ const { createJitFn, fn, code } = createJitFnWithContext(comp, fnName, fnCode, contextCode);
16
+ comp.code = code;
17
+ comp.fn = fn;
18
+ comp.createJitFn = createJitFn;
19
+ return fn;
20
+ }
21
+ function createJitFnWithContext(comp, fnName, fnCode, contextCode) {
22
+ const context = contextCode ? `${contextCode};` : "";
23
+ let fnWithContext = `'use strict'; ${context} return ${fnCode}`;
24
+ if (core.getENV("DEBUG_RUN_TIME")) {
25
+ const fnArgs = getJitFnArgs(comp);
26
+ const argsCall = getJitFnArgs(comp, false);
27
+ const debugWrapper = `function debug_${fnName}(${fnArgs}){
28
+ const resp = ${fnName}(${argsCall});
29
+ console.log('${fnName} ${src_lib_jitFnsRegistry.getJITFnName(comp.fnID)} ${comp.rootType.getTypeName()}', 'result:', resp, ' value:', ${argsCall});
30
+ return resp;
31
+ }`;
32
+ fnWithContext = `'use strict'; ${context} ${fnCode} ${debugWrapper} return debug_${fnName};`;
33
+ }
34
+ try {
35
+ const wrapperWithContext = new Function("utl", fnWithContext);
36
+ if (core.getENV("DEBUG_JIT")) console.log(src_lib_jitFnCompiler.printClosure(fnWithContext, fnName));
37
+ return { createJitFn: wrapperWithContext, fn: wrapperWithContext(core.getJitUtils()), code: fnWithContext };
38
+ } catch (e) {
39
+ if (core.getENV("DEBUG_JIT")) {
40
+ console.warn("Error creating jit function with context code:\n", src_lib_jitFnCompiler.printClosure(fnWithContext, fnName));
41
+ }
42
+ throw e;
43
+ }
44
+ }
45
+ function getJitFnCode(comp) {
46
+ const fnName = comp.jitFnHash;
47
+ const fnArgs = getJitFnArgs(comp);
48
+ const fnCode = `function ${fnName}(${fnArgs}){${comp.code}}`;
49
+ return { fnName, fnCode, contextCode: comp.getContextItemValues().join(";\n") };
50
+ }
51
+ function getJitFnArgs(comp, defaultValues = true) {
52
+ return Object.entries(comp.args).map(([key, name]) => {
53
+ if (!comp.defaultParamValues[key] || !defaultValues) return name;
54
+ const value = comp.defaultParamValues[key];
55
+ return `${name}=${value}`;
56
+ }).join(",");
57
+ }
58
+ exports.createJitFunction = createJitFunction;
59
+ exports.getJITFnHash = getJITFnHash;
60
+ //# sourceMappingURL=createJitFunction.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createJitFunction.cjs","sources":["../../../../src/lib/createJitFunction.ts"],"sourcesContent":["import {getENV, getJitUtils, type JITUtils} from '@mionjs/core';\nimport type {JitFnID, Mutable, RunTypeOptions} from '../types.ts';\nimport {BaseFnCompiler, JitCompilerLike, printClosure} from './jitFnCompiler.ts';\nimport type {BaseRunType} from './baseRunTypes.ts';\nimport {getJITFnName} from './jitFnsRegistry.ts';\n\n/**\n * Creates a function name/hash based on the jitHash of the runType and the id of the function.\n * it is a valid js variable name.\n * @param id\n * @param rt\n * @returns\n */\nexport function getJITFnHash(id: JitFnID, rt: BaseRunType, opts?: RunTypeOptions): string {\n if (opts) return `${id}_${rt.getJitHash(opts)}`;\n return `${id}_${rt.getJitHash({})}`;\n}\n\n/**\n * Creates a jit function from a compiler.\n * This function handles the logic to determine if the function should be created or retrieved from the cache.\n * @param comp\n * @returns\n */\nexport function createJitFunction(comp: BaseFnCompiler): (...args: any[]) => any {\n if (comp.fn) return comp.fn;\n if (comp.stack.length !== 0) throw new Error('Can not get compiled function before the compile operation is finished');\n if (getJitUtils().hasJitFn(comp.jitFnHash)) return getJitUtils().getJitFn(comp.jitFnHash);\n const {fnCode, fnName, contextCode} = getJitFnCode(comp);\n const {createJitFn, fn, code} = createJitFnWithContext(comp, fnName, fnCode, contextCode);\n (comp as Mutable<BaseFnCompiler>).code = code;\n (comp as Mutable<BaseFnCompiler>).fn = fn;\n (comp as Mutable<BaseFnCompiler>).createJitFn = createJitFn;\n return fn;\n}\n\n/**\n * Create a JIT function that has jitUtils (and possibly other required variables) in the context,\n * This way jitUtils ca be used without passing them as arguments to every atomic jit function (kind of global variables).\n * @param varName\n * @param fnCode\n * @returns\n */\nfunction createJitFnWithContext(comp: BaseFnCompiler, fnName: string, fnCode: string, contextCode?: string) {\n // this function will have jitUtils as context as is an argument of the enclosing function\n const context = contextCode ? `${contextCode};` : '';\n let fnWithContext = `'use strict'; ${context} return ${fnCode}`;\n if (getENV('DEBUG_RUN_TIME')) {\n const fnArgs = getJitFnArgs(comp);\n const argsCall = getJitFnArgs(comp, false);\n const debugWrapper = `function debug_${fnName}(${fnArgs}){\n const resp = ${fnName}(${argsCall});\n console.log('${fnName} ${getJITFnName(comp.fnID)} ${comp.rootType.getTypeName()}', 'result:', resp, ' value:', ${argsCall});\n return resp;\n }`;\n fnWithContext = `'use strict'; ${context} ${fnCode} ${debugWrapper} return debug_${fnName};`;\n }\n try {\n // wrapper functions that works as a factory and returns the actual jit function, context contains all constants and heavy to create objects\n const wrapperWithContext = new Function('utl', fnWithContext) as (utl: JITUtils) => (...args: any[]) => any;\n if (getENV('DEBUG_JIT')) console.log(printClosure(fnWithContext, fnName));\n return {createJitFn: wrapperWithContext, fn: wrapperWithContext(getJitUtils()), code: fnWithContext}; // returns the jit internal function with the context\n } catch (e: any) {\n if (getENV('DEBUG_JIT')) {\n console.warn('Error creating jit function with context code:\\n', printClosure(fnWithContext, fnName));\n }\n throw e;\n }\n}\n\nfunction getJitFnCode(comp: BaseFnCompiler): {fnName: string; fnCode: string; contextCode: string} {\n const fnName = comp.jitFnHash;\n const fnArgs = getJitFnArgs(comp); // function arguments with default values ie: 'vλl, pλth=[], εrr=[]'\n const fnCode = `function ${fnName}(${fnArgs}){${comp.code}}`;\n return {fnName, fnCode, contextCode: comp.getContextItemValues().join(';\\n')};\n}\n\n/** Returns the arguments of the function with default values */\nfunction getJitFnArgs(comp: JitCompilerLike, defaultValues = true): string {\n return Object.entries(comp.args)\n .map(([key, name]) => {\n if (!comp.defaultParamValues[key] || !defaultValues) return name;\n const value = comp.defaultParamValues[key];\n return `${name}=${value}`;\n })\n .join(',');\n}\n"],"names":["getJitUtils","getENV","getJITFnName","printClosure"],"mappings":";;;;;AAaO,SAAS,aAAa,IAAa,IAAiB,MAA+B;AACtF,MAAI,aAAa,GAAG,EAAE,IAAI,GAAG,WAAW,IAAI,CAAC;AAC7C,SAAO,GAAG,EAAE,IAAI,GAAG,WAAW,CAAA,CAAE,CAAC;AACrC;AAQO,SAAS,kBAAkB,MAA+C;AAC7E,MAAI,KAAK,GAAI,QAAO,KAAK;AACzB,MAAI,KAAK,MAAM,WAAW,EAAG,OAAM,IAAI,MAAM,wEAAwE;AACrH,MAAIA,iBAAA,EAAc,SAAS,KAAK,SAAS,EAAG,QAAOA,KAAAA,cAAc,SAAS,KAAK,SAAS;AACxF,QAAM,EAAC,QAAQ,QAAQ,YAAA,IAAe,aAAa,IAAI;AACvD,QAAM,EAAC,aAAa,IAAI,KAAA,IAAQ,uBAAuB,MAAM,QAAQ,QAAQ,WAAW;AACvF,OAAiC,OAAO;AACxC,OAAiC,KAAK;AACtC,OAAiC,cAAc;AAChD,SAAO;AACX;AASA,SAAS,uBAAuB,MAAsB,QAAgB,QAAgB,aAAsB;AAExG,QAAM,UAAU,cAAc,GAAG,WAAW,MAAM;AAClD,MAAI,gBAAgB,iBAAiB,OAAO,WAAW,MAAM;AAC7D,MAAIC,KAAAA,OAAO,gBAAgB,GAAG;AAC1B,UAAM,SAAS,aAAa,IAAI;AAChC,UAAM,WAAW,aAAa,MAAM,KAAK;AACzC,UAAM,eAAe,kBAAkB,MAAM,IAAI,MAAM;AAAA,2BACpC,MAAM,IAAI,QAAQ;AAAA,2BAClB,MAAM,IAAIC,oCAAa,KAAK,IAAI,CAAC,IAAI,KAAK,SAAS,aAAa,kCAAkC,QAAQ;AAAA;AAAA;AAG7H,oBAAgB,iBAAiB,OAAO,IAAI,MAAM,IAAI,YAAY,iBAAiB,MAAM;AAAA,EAC7F;AACA,MAAI;AAEA,UAAM,qBAAqB,IAAI,SAAS,OAAO,aAAa;AAC5D,QAAID,KAAAA,OAAO,WAAW,EAAG,SAAQ,IAAIE,mCAAa,eAAe,MAAM,CAAC;AACxE,WAAO,EAAC,aAAa,oBAAoB,IAAI,mBAAmBH,iBAAA,CAAa,GAAG,MAAM,cAAA;AAAA,EAC1F,SAAS,GAAQ;AACb,QAAIC,KAAAA,OAAO,WAAW,GAAG;AACrB,cAAQ,KAAK,oDAAoDE,sBAAAA,aAAa,eAAe,MAAM,CAAC;AAAA,IACxG;AACA,UAAM;AAAA,EACV;AACJ;AAEA,SAAS,aAAa,MAA6E;AAC/F,QAAM,SAAS,KAAK;AACpB,QAAM,SAAS,aAAa,IAAI;AAChC,QAAM,SAAS,YAAY,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI;AACzD,SAAO,EAAC,QAAQ,QAAQ,aAAa,KAAK,qBAAA,EAAuB,KAAK,KAAK,EAAA;AAC/E;AAGA,SAAS,aAAa,MAAuB,gBAAgB,MAAc;AACvE,SAAO,OAAO,QAAQ,KAAK,IAAI,EAC1B,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM;AAClB,QAAI,CAAC,KAAK,mBAAmB,GAAG,KAAK,CAAC,cAAe,QAAO;AAC5D,UAAM,QAAQ,KAAK,mBAAmB,GAAG;AACzC,WAAO,GAAG,IAAI,IAAI,KAAK;AAAA,EAC3B,CAAC,EACA,KAAK,GAAG;AACjB;;;"}
@@ -0,0 +1,5 @@
1
+ import { JitFnID, RunTypeOptions } from '../types.ts';
2
+ import { BaseFnCompiler } from './jitFnCompiler.ts';
3
+ import { BaseRunType } from './baseRunTypes.ts';
4
+ export declare function getJITFnHash(id: JitFnID, rt: BaseRunType, opts?: RunTypeOptions): string;
5
+ export declare function createJitFunction(comp: BaseFnCompiler): (...args: any[]) => any;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const type = require("@deepkit/type");
4
+ function getRunTypeAnnotations(rt) {
5
+ const annotations = type.typeAnnotation.getAnnotations(rt.src);
6
+ return annotations.map((a) => {
7
+ const annotation = {
8
+ name: a.name,
9
+ options: a.options._rt
10
+ };
11
+ return annotation;
12
+ });
13
+ }
14
+ function getParsedAnnotationOptions(rt) {
15
+ return getRunTypeAnnotations(rt).map((a) => type.typeAnnotation.getOption(rt.src, a.name));
16
+ }
17
+ function getTypeToObject(rt) {
18
+ return type.typeToObject(rt.src);
19
+ }
20
+ exports.getParsedAnnotationOptions = getParsedAnnotationOptions;
21
+ exports.getRunTypeAnnotations = getRunTypeAnnotations;
22
+ exports.getTypeToObject = getTypeToObject;
23
+ //# sourceMappingURL=dkProxy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dkProxy.cjs","sources":["../../../../src/lib/dkProxy.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 {typeAnnotation, typeToObject} from '@deepkit/type';\nimport {RunType, RunTypeAnnotation, SrcType} from '../types.ts';\n\n/**\n * Returns RunType annotations, ie:\n *\n * type WithSuffix<Suffix extends string> = string & TypeAnnotation<'suffix', Suffix>;\n * const rt = runType<WithSuffix<'hello'>>();\n * const annotations = rt.getRunTypeAnnotations();\n * annotations = [{name: 'suffix', options: LiteralRunType<'hello'>}];\n */\nexport function getRunTypeAnnotations(rt: RunType): RunTypeAnnotation[] {\n const annotations = typeAnnotation.getAnnotations(rt.src);\n return annotations.map((a) => {\n const annotation: RunTypeAnnotation = {\n name: a.name,\n options: (a.options as SrcType)._rt as RunType,\n };\n return annotation;\n });\n}\n\n/**\n * Returns the options of the annotations parsed js data, ie:\n *\n * type WithSuffix<Suffix extends string> = string & TypeAnnotation<'suffix', Suffix>;\n * const rt = runType<WithSuffix<'hello'>>();\n * const parsedOptions = rt.getParsedAnnotationOptions();\n * parsedOptions = 'hello';\n */\nexport function getParsedAnnotationOptions(rt: RunType): any[] {\n return getRunTypeAnnotations(rt).map((a) => typeAnnotation.getOption(rt.src, a.name));\n}\n\n/**\n * Returns the deepkit type as a js object, this is useful to extract metadata from the type.\n */\nexport function getTypeToObject(rt: RunType): any {\n return typeToObject(rt.src);\n}\n"],"names":["typeAnnotation","typeToObject"],"mappings":";;;AAkBO,SAAS,sBAAsB,IAAkC;AACpE,QAAM,cAAcA,KAAAA,eAAe,eAAe,GAAG,GAAG;AACxD,SAAO,YAAY,IAAI,CAAC,MAAM;AAC1B,UAAM,aAAgC;AAAA,MAClC,MAAM,EAAE;AAAA,MACR,SAAU,EAAE,QAAoB;AAAA,IAAA;AAEpC,WAAO;AAAA,EACX,CAAC;AACL;AAUO,SAAS,2BAA2B,IAAoB;AAC3D,SAAO,sBAAsB,EAAE,EAAE,IAAI,CAAC,MAAMA,oBAAe,UAAU,GAAG,KAAK,EAAE,IAAI,CAAC;AACxF;AAKO,SAAS,gBAAgB,IAAkB;AAC9C,SAAOC,KAAAA,aAAa,GAAG,GAAG;AAC9B;;;;"}
@@ -0,0 +1,4 @@
1
+ import { RunType, RunTypeAnnotation } from '../types.ts';
2
+ export declare function getRunTypeAnnotations(rt: RunType): RunTypeAnnotation[];
3
+ export declare function getParsedAnnotationOptions(rt: RunType): any[];
4
+ export declare function getTypeToObject(rt: RunType): any;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const src_constants_kind = require("../constants.kind.cjs");
4
+ const type = require("@deepkit/type");
5
+ const src_lib_utils = require("./utils.cjs");
6
+ const typeAnnotationsCache = /* @__PURE__ */ new Map();
7
+ const formatterPrefix = "f";
8
+ function registerFormatter(operation, shouldThrow = false) {
9
+ const id = getFormatterKey(formatterPrefix, operation.kind, operation.name);
10
+ const exiting = typeAnnotationsCache.get(id);
11
+ if (exiting && exiting !== operation) {
12
+ if (shouldThrow)
13
+ throw new Error(`Annotation type ${operation.name} already registered for ${src_constants_kind.ReflectionKindName[operation.kind]}`);
14
+ return operation;
15
+ }
16
+ typeAnnotationsCache.set(id, operation);
17
+ return operation;
18
+ }
19
+ function getFormatterFromCache(typeKind, name, shouldThrow = false) {
20
+ const formatter = typeAnnotationsCache.get(getFormatterKey(formatterPrefix, typeKind, name));
21
+ if (!formatter) {
22
+ if (shouldThrow) throw new Error(`Annotation type ${name} not found for ${src_constants_kind.ReflectionKindName[typeKind]}`);
23
+ return void 0;
24
+ }
25
+ return formatter;
26
+ }
27
+ function getFormatterKey(prefix, kind, name) {
28
+ return `${prefix}:${kind}:${name}`;
29
+ }
30
+ function getRunTypeFormat(rt) {
31
+ return getFormatAnnotation(rt)?.formatter;
32
+ }
33
+ function getRunTypeTransformer(rt) {
34
+ const rtFormat = getRunTypeFormat(rt);
35
+ if (rtFormat?.emitFormat) return rtFormat;
36
+ return void 0;
37
+ }
38
+ function initFormatAnnotations(rt) {
39
+ const annotations = type.typeAnnotation.getAnnotations(rt.src);
40
+ if (annotations.length === 0) return;
41
+ if (annotations.length > 1)
42
+ throw new Error(`Only one type annotation is allowed for runTypes and ${rt.getTypeName()} has ${annotations.length}`);
43
+ const annotation = annotations[0];
44
+ if (!annotation.name) throw new Error(`Type annotation must have a name for ${rt.getTypeName()}`);
45
+ const params = annotation.options;
46
+ const formatter = getFormatterFromCache(rt.src.kind, annotation.name);
47
+ if (formatter && params.kind === type.ReflectionKind.objectLiteral) {
48
+ annotation.formatter = formatter;
49
+ return annotation;
50
+ }
51
+ return annotation;
52
+ }
53
+ function getFormatterParams(rt, fmtName) {
54
+ const annotation = getFormatAnnotation(rt);
55
+ if (annotation?.name === fmtName) {
56
+ if (annotation.params) return annotation.params;
57
+ annotation.params = type.typeAnnotation.getOption(rt.src, annotation.name);
58
+ return annotation.params;
59
+ }
60
+ throw new Error(`Type Formatter ${fmtName} not found for ${rt.getTypeName()}`);
61
+ }
62
+ function getFormatAnnotation(rt) {
63
+ const parsedAnnotations = type.typeAnnotation.getAnnotations(rt.src);
64
+ const formatAnnotations = parsedAnnotations.filter((a) => a.formatter);
65
+ return formatAnnotations[0];
66
+ }
67
+ const defaultIgnoreFormatProps = ["mockSamples"];
68
+ function paramsToLiteral(comp, params, ignoreProps) {
69
+ return src_lib_utils.toLiteralInContext(comp, params, ignoreProps, false);
70
+ }
71
+ function getToLiteralFn(comp, ignoreProps) {
72
+ return (params) => paramsToLiteral(comp, params, ignoreProps);
73
+ }
74
+ function dependenciesToLiteral(comp, params, ignoreProps = []) {
75
+ return src_lib_utils.toLiteralInContext(comp, params, ignoreProps, true);
76
+ }
77
+ exports.defaultIgnoreFormatProps = defaultIgnoreFormatProps;
78
+ exports.dependenciesToLiteral = dependenciesToLiteral;
79
+ exports.getFormatAnnotation = getFormatAnnotation;
80
+ exports.getFormatterFromCache = getFormatterFromCache;
81
+ exports.getFormatterKey = getFormatterKey;
82
+ exports.getFormatterParams = getFormatterParams;
83
+ exports.getRunTypeFormat = getRunTypeFormat;
84
+ exports.getRunTypeTransformer = getRunTypeTransformer;
85
+ exports.getToLiteralFn = getToLiteralFn;
86
+ exports.initFormatAnnotations = initFormatAnnotations;
87
+ exports.paramsToLiteral = paramsToLiteral;
88
+ exports.registerFormatter = registerFormatter;
89
+ //# sourceMappingURL=formats.cjs.map