@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,123 @@
1
+ import { ReflectionKind } from "@deepkit/type";
2
+ import { ReflectionSubKind } from "../../constants.kind.js";
3
+ import { JitFunctions } from "../../constants.functions.js";
4
+ import { isSafePropName } from "../../lib/utils.js";
5
+ import { createStringifyCompiler, createStringifyIterable } from "./stringifyJson.js";
6
+ import { cpf_sanitizeCompiledFn } from "../../run-types-pure-fns.js";
7
+ function getParentSiblingNames(srcMS) {
8
+ let parent = srcMS.parent;
9
+ if (parent?.kind === ReflectionKind.propertySignature) parent = parent.parent;
10
+ if (parent?.kind !== ReflectionKind.objectLiteral) return void 0;
11
+ const types = parent.types;
12
+ if (!types) return void 0;
13
+ return new Set(types.map((t) => t.name).filter((n) => n !== void 0));
14
+ }
15
+ function createToCodeCompiler() {
16
+ const fnID = JitFunctions.toJSCode.id;
17
+ const visitJsonStringify = createStringifyCompiler(fnID);
18
+ const visitJsonStringifyIterable = createStringifyIterable(fnID);
19
+ function compileToCode(runType, comp) {
20
+ const src = runType.src;
21
+ const kind = src.kind;
22
+ switch (kind) {
23
+ // ###################### ATOMIC RUNTYPES ######################
24
+ case ReflectionKind.undefined:
25
+ return { code: `'undefined'`, type: "E" };
26
+ case ReflectionKind.symbol:
27
+ return { code: `'Symbol('+'"'+${comp.vλl}.description+'"'+')'`, type: "E" };
28
+ // ###################### MEMBER RUNTYPES ######################
29
+ case ReflectionKind.methodSignature: {
30
+ const rt = runType;
31
+ const srcMS = src;
32
+ const accessor = srcMS.name;
33
+ const name = String(accessor);
34
+ const isSafe = isSafePropName(accessor);
35
+ const safeName = isSafe ? name : JSON.stringify(name);
36
+ const sep = rt.skipCommas ? "" : '+","';
37
+ if (isCompilingFnProp(rt, comp)) {
38
+ return { code: `'undefined'`, type: "E" };
39
+ } else if (isCompilingClosureFn(rt, comp)) {
40
+ const isPureFn = rt.getChildVarName(comp) === "createPureFn";
41
+ const fnName = isPureFn ? `${comp.vλl}.fnName` : `${comp.vλl}.jitFnHash`;
42
+ const fnCode = `${comp.vλl}.code`;
43
+ const paramList = isPureFn ? `${comp.vλl}.paramNames.join(',')` : `'utl'`;
44
+ const closureCode = `'function get_'+${fnName}+'('+${paramList}+'){'+${fnCode}+'}'`;
45
+ return { code: `'${safeName}:'+${closureCode}${sep}`, type: "E" };
46
+ } else if (rt.src.subKind === ReflectionSubKind.params) {
47
+ const paramsCode = visitJsonStringify(rt, comp);
48
+ if (rt.isOptional())
49
+ return {
50
+ code: `(${comp.getChildVλl()} === undefined ? "" : '${safeName}:'+${paramsCode?.code}${sep})`,
51
+ type: "E"
52
+ };
53
+ return { code: `'${safeName}:'+${paramsCode?.code}${sep}`, type: "E" };
54
+ } else {
55
+ const fnName = comp.addPureFunction(cpf_sanitizeCompiledFn);
56
+ const parent = srcMS.parent;
57
+ const isDuplicatedChild = parent?.kind === ReflectionKind.propertySignature && parent?.name === srcMS.name;
58
+ if (isDuplicatedChild) return { code: `${fnName}(${comp.vλl}.toString())`, type: "E" };
59
+ const accessorCode = isSafe ? `.${safeName}` : `[${safeName}]`;
60
+ const fnCode = `${fnName}(${comp.vλl}${accessorCode}.toString())`;
61
+ if (rt.isOptional())
62
+ return { code: `(${comp.getChildVλl()} === undefined ? "" : '${safeName}:'+${fnCode}${sep})`, type: "E" };
63
+ return { code: `'${safeName}:'+${fnCode}${sep}`, type: "E" };
64
+ }
65
+ }
66
+ case ReflectionKind.function:
67
+ case ReflectionKind.method:
68
+ case ReflectionKind.callSignature:
69
+ if (runType.src.subKind === ReflectionSubKind.params) {
70
+ return visitJsonStringify(runType, comp);
71
+ } else {
72
+ return { code: `${comp.vλl}.toString()`, type: "E" };
73
+ }
74
+ // ###################### COLLECTION RUNTYPES ######################
75
+ case ReflectionKind.class: {
76
+ switch (runType.src.subKind) {
77
+ case ReflectionSubKind.date:
78
+ return { code: `'new Date('+${visitJsonStringify(runType, comp).code}+')'`, type: "E" };
79
+ case ReflectionSubKind.map: {
80
+ return visitJsonStringifyIterable(runType, comp, "new Map(", ")");
81
+ }
82
+ case ReflectionSubKind.set: {
83
+ return visitJsonStringifyIterable(runType, comp, "new Set(", ")");
84
+ }
85
+ case ReflectionSubKind.nonSerializable:
86
+ throw new Error(`Can not generate code for Non Serializable types.`);
87
+ default: {
88
+ const rt = runType;
89
+ throw new Error(`Can not generate code for classes. Class: ${rt.getClassName()}`);
90
+ }
91
+ }
92
+ }
93
+ default:
94
+ return visitJsonStringify(runType, comp);
95
+ }
96
+ }
97
+ function isCompilingClosureFn(runType, comp) {
98
+ const childName = runType.getChildVarName(comp);
99
+ if (childName !== "createJitFn" && childName !== "createPureFn") return false;
100
+ const siblings = getParentSiblingNames(runType.src);
101
+ if (!siblings) return false;
102
+ if (!siblings.has("code")) return false;
103
+ if (childName === "createJitFn") return siblings.has("jitFnHash");
104
+ return siblings.has("bodyHash");
105
+ }
106
+ function isCompilingFnProp(runType, comp) {
107
+ if (runType.getChildVarName(comp) !== "fn") return false;
108
+ const siblings = getParentSiblingNames(runType.src);
109
+ if (!siblings) return false;
110
+ return siblings.has("code") && (siblings.has("createJitFn") || siblings.has("createPureFn"));
111
+ }
112
+ return compileToCode;
113
+ }
114
+ let lazyFn = void 0;
115
+ function emitToCode(runType, comp) {
116
+ if (!lazyFn) lazyFn = createToCodeCompiler();
117
+ return lazyFn(runType, comp);
118
+ }
119
+ export {
120
+ createToCodeCompiler,
121
+ emitToCode
122
+ };
123
+ //# sourceMappingURL=toJsCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toJsCode.js","sources":["../../../../../src/jitCompilers/json/toJsCode.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 type {JitCode} from '../../types.ts';\nimport type {BaseRunType} from '../../lib/baseRunTypes.ts';\nimport type {ClassRunType} from '../../nodes/collection/class.ts';\nimport type {MethodSignatureRunType} from '../../nodes/member/methodSignature.ts';\nimport type {IterableRunType} from '../../nodes/native/Iterable.ts';\nimport {ReflectionKind, type TypeMethodSignature, type TypeObjectLiteral, type TypePropertySignature} from '@deepkit/type';\nimport {ReflectionSubKind} from '../../constants.kind.ts';\nimport {JitFunctions} from '../../constants.functions.ts';\nimport {JitFnCompiler} from '../../lib/jitFnCompiler.ts';\nimport {isSafePropName} from '../../lib/utils.ts';\nimport {createStringifyCompiler, createStringifyIterable} from './stringifyJson.ts';\nimport {cpf_sanitizeCompiledFn} from '../../run-types-pure-fns.ts';\n\n/** Gets sibling property/method names from a MethodSignature's parent ObjectLiteral */\nfunction getParentSiblingNames(srcMS: TypeMethodSignature): Set<string | number | symbol> | undefined {\n let parent = srcMS.parent as any;\n // Handle deepkit bug where parent can be TypePropertySignature instead of TypeObjectLiteral\n if (parent?.kind === ReflectionKind.propertySignature) parent = parent.parent;\n if (parent?.kind !== ReflectionKind.objectLiteral) return undefined;\n const types = (parent as TypeObjectLiteral).types;\n if (!types) return undefined;\n return new Set(types.map((t: any) => t.name).filter((n: any) => n !== undefined));\n}\n\nexport function createToCodeCompiler() {\n const fnID = JitFunctions.toJSCode.id;\n const visitJsonStringify = createStringifyCompiler(fnID);\n const visitJsonStringifyIterable = createStringifyIterable(fnID);\n\n /**\n * Compiles jit code to generate JavaScript code from data structures that match a Type.\n * Process is similar to transform JS to JSON, but with few differences.\n *\n * 1 - jitFunctions and pureFunctions are emitted as src code\n * 2 - Some native classes are supported and initialized using the new operator, ie: new Map(<data>), new Set(<data>), new Date(<data>), etc...\n *\n * THIS IS MOSTLY USED INTERNALLY FOR AOT CODE GENERATION AND A VERY BASIC IMPLEMENTATION.\n * !!! NOT INTENDED FOR PUBLIC USE !!!\n */\n function compileToCode(runType: BaseRunType, comp: JitFnCompiler): JitCode {\n const src = runType.src;\n const kind = src.kind;\n\n switch (kind) {\n // ###################### ATOMIC RUNTYPES ######################\n case ReflectionKind.undefined:\n return {code: `'undefined'`, type: 'E'};\n case ReflectionKind.symbol:\n return {code: `'Symbol('+'\"'+${comp.vλl}.description+'\"'+')'`, type: 'E'};\n // ###################### MEMBER RUNTYPES ######################\n case ReflectionKind.methodSignature: {\n const rt = runType as MethodSignatureRunType;\n const srcMS = src as TypeMethodSignature;\n const accessor = srcMS.name;\n const name = String(accessor);\n const isSafe = isSafePropName(accessor);\n const safeName = isSafe ? name : JSON.stringify(name);\n const sep = rt.skipCommas ? '' : '+\",\"';\n if (isCompilingFnProp(rt, comp)) {\n // special case for JitFunctions/PureFunctions that we know should return undefined for fn param\n return {code: `'undefined'`, type: 'E'};\n } else if (isCompilingClosureFn(rt, comp)) {\n // special case for JitFunctions/PureFunctions where we generate the fn from the data instead of fn.toString()\n const isPureFn = rt.getChildVarName(comp) === 'createPureFn';\n const fnName = isPureFn ? `${comp.vλl}.fnName` : `${comp.vλl}.jitFnHash`;\n const fnCode = `${comp.vλl}.code`;\n const paramList = isPureFn ? `${comp.vλl}.paramNames.join(',')` : `'utl'`;\n const closureCode = `'function get_'+${fnName}+'('+${paramList}+'){'+${fnCode}+'}'`;\n return {code: `'${safeName}:'+${closureCode}${sep}`, type: 'E'};\n } else if (rt.src.subKind === ReflectionSubKind.params) {\n const paramsCode = visitJsonStringify(rt, comp);\n if (rt.isOptional())\n return {\n code: `(${comp.getChildVλl()} === undefined ? \"\" : '${safeName}:'+${paramsCode?.code}${sep})`,\n type: 'E',\n };\n return {code: `'${safeName}:'+${paramsCode?.code}${sep}`, type: 'E'};\n } else {\n const fnName = comp.addPureFunction(cpf_sanitizeCompiledFn);\n const parent = srcMS.parent as any as TypePropertySignature;\n\n // in some scenarios the parent is a propertySignature instead the Expected TypeObjectLiteral so we have to handle that\n // this seems to be a deepkit bug when using omit and then redefining the property @see SrcCodeJitCompiledFn type\n const isDuplicatedChild = parent?.kind === ReflectionKind.propertySignature && parent?.name === srcMS.name;\n if (isDuplicatedChild) return {code: `${fnName}(${comp.vλl}.toString())`, type: 'E'};\n const accessorCode = isSafe ? `.${safeName}` : `[${safeName}]`;\n const fnCode = `${fnName}(${comp.vλl}${accessorCode}.toString())`;\n if (rt.isOptional())\n return {code: `(${comp.getChildVλl()} === undefined ? \"\" : '${safeName}:'+${fnCode}${sep})`, type: 'E'};\n return {code: `'${safeName}:'+${fnCode}${sep}`, type: 'E'};\n }\n }\n case ReflectionKind.function:\n case ReflectionKind.method:\n case ReflectionKind.callSignature:\n if (runType.src.subKind === ReflectionSubKind.params) {\n return visitJsonStringify(runType, comp);\n } else {\n // TODO: we are relying in fn.toString() to generate code, this might not work properly in all js engines\n return {code: `${comp.vλl}.toString()`, type: 'E'};\n }\n // ###################### COLLECTION RUNTYPES ######################\n case ReflectionKind.class: {\n switch (runType.src.subKind) {\n case ReflectionSubKind.date:\n return {code: `'new Date('+${visitJsonStringify(runType, comp).code}+')'`, type: 'E'};\n case ReflectionSubKind.map: {\n return visitJsonStringifyIterable(runType as unknown as IterableRunType, comp, 'new Map(', ')');\n }\n case ReflectionSubKind.set: {\n return visitJsonStringifyIterable(runType as unknown as IterableRunType, comp, 'new Set(', ')');\n }\n case ReflectionSubKind.nonSerializable:\n throw new Error(`Can not generate code for Non Serializable types.`);\n default: {\n const rt = runType as unknown as ClassRunType;\n throw new Error(`Can not generate code for classes. Class: ${rt.getClassName()}`);\n }\n }\n }\n default:\n return visitJsonStringify(runType, comp);\n }\n }\n\n /** Detects if we're compiling a createJitFn or createPureFn closure by checking sibling properties */\n function isCompilingClosureFn(runType: MethodSignatureRunType, comp: JitFnCompiler): boolean {\n const childName = runType.getChildVarName(comp);\n if (childName !== 'createJitFn' && childName !== 'createPureFn') return false;\n const siblings = getParentSiblingNames(runType.src as TypeMethodSignature);\n if (!siblings) return false;\n if (!siblings.has('code')) return false;\n if (childName === 'createJitFn') return siblings.has('jitFnHash');\n return siblings.has('bodyHash'); // createPureFn\n }\n\n /** Detects if we're compiling the fn property of a JitCompiledFn or CompiledPureFunction */\n function isCompilingFnProp(runType: MethodSignatureRunType, comp: JitFnCompiler): boolean {\n if (runType.getChildVarName(comp) !== 'fn') return false;\n const siblings = getParentSiblingNames(runType.src as TypeMethodSignature);\n if (!siblings) return false;\n return siblings.has('code') && (siblings.has('createJitFn') || siblings.has('createPureFn'));\n }\n\n return compileToCode;\n}\n\n// lazy loading as this function wont be used often just for (AOT)\n// TODO move to async code loading (but this would need a big refactor of the router)\nlet lazyFn: undefined | ((runType: BaseRunType, comp: JitFnCompiler) => JitCode) = undefined;\nexport function emitToCode(runType: BaseRunType, comp: JitFnCompiler): JitCode {\n if (!lazyFn) lazyFn = createToCodeCompiler();\n return lazyFn(runType, comp);\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { TypeFormatParams, CompiledPureFunction, TypeFormatValue, JitCompiledFn } from '@mionjs/core';
2
+ import { BaseRunType } from './baseRunTypes.ts';
3
+ import { JitFnCompiler, JitErrorsFnCompiler } from './jitFnCompiler.ts';
4
+ import { JitFnID, StrNumber, JitCode, RunTypeOptions } from '../types.ts';
5
+ import { ReflectionKind } from '@deepkit/type';
6
+ export declare abstract class BaseRunTypeFormat<P extends TypeFormatParams = any> {
7
+ abstract kind: ReflectionKind;
8
+ abstract name: string;
9
+ readonly namespace: string;
10
+ rootFormatName: string;
11
+ canEmbedFormatterCode(_fnId: JitFnID, rt: BaseRunType, _params?: P): boolean;
12
+ readonly paramsFromParent?: P;
13
+ readonly parentPath?: StrNumber[];
14
+ readonly extraPathLiteral?: StrNumber;
15
+ constructor(parentPath?: StrNumber[]);
16
+ private pushContext;
17
+ private popContext;
18
+ isRootFormat(): boolean;
19
+ getFormatNestLevel(): number;
20
+ getParams(rt: BaseRunType): NonNullable<P>;
21
+ getFormatName(): string;
22
+ getFormatPath(paramName?: StrNumber): StrNumber[];
23
+ getFormatExtraPathLiteral(): StrNumber | undefined;
24
+ getIgnoredProps(): string[] | undefined;
25
+ mock(opts: RunTypeOptions, rt: BaseRunType, params?: P): any;
26
+ createJitCompiledFormatter(fnID: JitFnID, rt: BaseRunType, comp?: JitFnCompiler, params?: P, vλl?: string, formatName?: string, opts?: RunTypeOptions): JitCompiledFn;
27
+ compileFormat(fnID: JitFnID, comp: JitFnCompiler, rt: BaseRunType, params?: P, vλl?: string, formatName?: string, extraPathLiteral?: StrNumber): JitCode;
28
+ handleReturnValues(rt: BaseRunType, comp: JitFnCompiler, jitC: JitCode): string;
29
+ abstract _mock(opts: RunTypeOptions, rt: BaseRunType): any;
30
+ abstract emitIsType(comp: JitFnCompiler, rt: BaseRunType): JitCode;
31
+ abstract emitIsTypeErrors(comp: JitErrorsFnCompiler, rt: BaseRunType): JitCode;
32
+ emitFormat?(comp: JitFnCompiler, rt: BaseRunType): JitCode;
33
+ emitToBinary?(comp: JitFnCompiler, rt: BaseRunType): JitCode;
34
+ emitFromBinary?(comp: JitFnCompiler, rt: BaseRunType): JitCode;
35
+ validateParams?(rt: BaseRunType, params: P): void;
36
+ compilePureFunctionCall(comp: JitFnCompiler, rt: BaseRunType, compiledPureFn: CompiledPureFunction, params?: TypeFormatValue, dependenciesParams?: Record<string, string | CompiledPureFunction>): {
37
+ callCode: string;
38
+ fnName: string;
39
+ paramsName: string;
40
+ dependenciesName?: string;
41
+ };
42
+ compileErrorsPureFunctionCall(comp: JitErrorsFnCompiler, rt: BaseRunType, compiledPureFn: CompiledPureFunction, params: TypeFormatValue, dependenciesParams?: Record<string, string | CompiledPureFunction>, extraPathLiteral?: StrNumber): {
43
+ callCode: string;
44
+ fnName: string;
45
+ paramsName: string;
46
+ dependenciesName?: string;
47
+ };
48
+ getCallJitFormatErr(comp: JitErrorsFnCompiler, expected: BaseRunType<any>, formatter: BaseRunTypeFormat<any>, shouldReturn?: boolean, extraPathLiteral?: StrNumber): (paramName: string, paramValue: string | number | boolean | bigint) => string;
49
+ printPath(rt: BaseRunType, paramName?: string): string;
50
+ }
@@ -0,0 +1,200 @@
1
+ import { createJitCompiler } from "./jitFnCompiler.js";
2
+ import { JitFunctions } from "../constants.functions.js";
3
+ import { ReflectionKind } from "@deepkit/type";
4
+ import { getFormatterParams, paramsToLiteral, dependenciesToLiteral } from "./formats.js";
5
+ import { getFormatterHash } from "./utils.js";
6
+ import { getJitUtils, getENV } from "@mionjs/core";
7
+ class BaseRunTypeFormat {
8
+ /** The namespace for pure functions used by this formatter. Defaults to 'mionFormats'. */
9
+ namespace = "mionFormats";
10
+ rootFormatName = "";
11
+ /**
12
+ * The jit code for the formatter can be embedded together with the jit code for the type itself.
13
+ * but sometimes is better to create a separate function for code to be reused.
14
+ * This method is used to determine if the formatter code can be embedded or not.
15
+ */
16
+ canEmbedFormatterCode(_fnId, rt, _params) {
17
+ if (rt.src.kind === ReflectionKind.number) return true;
18
+ const paramsToString = rt.getFormatTypeID() || "";
19
+ return paramsToString.length < 300;
20
+ }
21
+ /** Params from parent formatter */
22
+ paramsFromParent;
23
+ /**
24
+ * When set this in the path to the params in the parent's params object.
25
+ * ie: if dateTime is the parent of the current formatter and params are {date: {format: 'ISO'}} then the child path will be ['date']
26
+ */
27
+ parentPath;
28
+ /** List of params that will be excluded from jit code */
29
+ extraPathLiteral;
30
+ /**
31
+ * The parentPath is the path to the params in the parent's params Formatter.
32
+ * ie: if dateTime is the parent of the current formatter and params are {date: {format: 'ISO'}} then the child path will be ['date']
33
+ */
34
+ constructor(parentPath) {
35
+ this.parentPath = parentPath;
36
+ }
37
+ pushContext(paramsFromParent) {
38
+ this.paramsFromParent = paramsFromParent;
39
+ }
40
+ popContext() {
41
+ this.paramsFromParent = void 0;
42
+ }
43
+ isRootFormat() {
44
+ return !this.parentPath?.length;
45
+ }
46
+ getFormatNestLevel() {
47
+ return this.parentPath?.length || 0;
48
+ }
49
+ getParams(rt) {
50
+ if (this.paramsFromParent) return this.paramsFromParent;
51
+ const params = getFormatterParams(rt, this.name);
52
+ return params;
53
+ }
54
+ getFormatName() {
55
+ return this.rootFormatName || this.name;
56
+ }
57
+ /** Returns the path to the params in the parent's params object */
58
+ getFormatPath(paramName) {
59
+ if (!paramName && this.parentPath) return [...this.parentPath];
60
+ if (!paramName) return [];
61
+ return this.parentPath ? [...this.parentPath, paramName] : [paramName];
62
+ }
63
+ getFormatExtraPathLiteral() {
64
+ return this.extraPathLiteral;
65
+ }
66
+ getIgnoredProps() {
67
+ return void 0;
68
+ }
69
+ mock(opts, rt, params) {
70
+ if (this.validateParams) this.validateParams(rt, params || this.getParams(rt));
71
+ this.pushContext(params);
72
+ const result = this._mock(opts, rt);
73
+ this.popContext();
74
+ const formatter = this.createJitCompiledFormatter(JitFunctions.format.id, rt, void 0, params);
75
+ if (formatter.isNoop) return result;
76
+ return formatter.fn(result);
77
+ }
78
+ createJitCompiledFormatter(fnID, rt, comp, params, vλl, formatName, opts = {}) {
79
+ const hash = getFormatterHash(rt);
80
+ const jitFnHash = `${JitFunctions.aux.id}_${fnID}_${hash}`;
81
+ const jitCompiled = getJitUtils().getJIT(jitFnHash);
82
+ if (jitCompiled) {
83
+ if (getENV("DEBUG_JIT") === "VERBOSE")
84
+ console.log(`\x1B[32m Using cached function: ${jitCompiled.jitFnHash} \x1B[0m`);
85
+ comp?.updateDependencies(jitCompiled);
86
+ return jitCompiled;
87
+ }
88
+ const newJitCompiler = createJitCompiler(rt, fnID, void 0, jitFnHash, hash, opts);
89
+ try {
90
+ const formatterCode = this.compileFormat(fnID, newJitCompiler, rt, params, vλl, formatName);
91
+ const withReturn = this.handleReturnValues(rt, newJitCompiler, formatterCode);
92
+ newJitCompiler.createJitFunction(withReturn);
93
+ comp?.updateDependencies(newJitCompiler);
94
+ } catch (e) {
95
+ newJitCompiler.removeFromJitCache();
96
+ throw e;
97
+ }
98
+ return newJitCompiler;
99
+ }
100
+ compileFormat(fnID, comp, rt, params, vλl, formatName, extraPathLiteral) {
101
+ if (this.validateParams) this.validateParams(rt, params || this.getParams(rt));
102
+ this.extraPathLiteral = extraPathLiteral;
103
+ const v = comp.vλl;
104
+ comp.vλl = vλl || v;
105
+ this.rootFormatName = formatName || this.name;
106
+ this.pushContext(params);
107
+ let result;
108
+ switch (fnID) {
109
+ case JitFunctions.isType.id:
110
+ result = this.emitIsType(comp, rt);
111
+ break;
112
+ case JitFunctions.typeErrors.id:
113
+ result = this.emitIsTypeErrors(comp, rt);
114
+ break;
115
+ case JitFunctions.format.id:
116
+ result = this.emitFormat ? this.emitFormat(comp, rt) : { code: void 0, type: "S" };
117
+ break;
118
+ case JitFunctions.toBinary.id:
119
+ result = this.emitToBinary ? this.emitToBinary(comp, rt) : { code: void 0, type: "S" };
120
+ break;
121
+ case JitFunctions.fromBinary.id:
122
+ result = this.emitFromBinary ? this.emitFromBinary(comp, rt) : { code: void 0, type: "S" };
123
+ break;
124
+ // JSON serialization functions - formats don't need special handling for JSON
125
+ // Just return the value as-is (expression type 'E' with empty code means use vλl)
126
+ case JitFunctions.prepareForJson.id:
127
+ case JitFunctions.restoreFromJson.id:
128
+ case JitFunctions.stringifyJson.id:
129
+ case JitFunctions.toJSCode.id:
130
+ result = { code: "", type: "E" };
131
+ break;
132
+ default:
133
+ throw new Error(`Method not implemented: ${fnID}`);
134
+ }
135
+ this.popContext();
136
+ this.rootFormatName = this.name;
137
+ this.extraPathLiteral = void 0;
138
+ comp.vλl = v;
139
+ return result;
140
+ }
141
+ /**
142
+ * Adds return statements if needed
143
+ * Unlike handleReturnValues in BaseRunType this one is only called in the root of the formatter
144
+ */
145
+ handleReturnValues(rt, comp, jitC) {
146
+ if (!jitC?.code) return "";
147
+ const codeType = jitC.type;
148
+ switch (codeType) {
149
+ case "E":
150
+ return `return ${jitC.code}`;
151
+ case "RB":
152
+ return jitC.code;
153
+ case "S": {
154
+ const lastChar = jitC.code.length - 1;
155
+ const hasFullStop = jitC.code.lastIndexOf(";") === lastChar || jitC.code.lastIndexOf("}") === lastChar;
156
+ const stopChar = hasFullStop ? "" : ";";
157
+ return `${jitC.code}${stopChar} return ${comp.returnName}`;
158
+ }
159
+ }
160
+ }
161
+ compilePureFunctionCall(comp, rt, compiledPureFn, params, dependenciesParams) {
162
+ const val = comp.vλl;
163
+ const paramsName = paramsToLiteral(comp, params || this.getParams(rt), this.getIgnoredProps());
164
+ const dependenciesName = dependenciesToLiteral(comp, dependenciesParams || {});
165
+ const callParams = [val, paramsName, dependenciesName];
166
+ const fnName = comp.addPureFunction(compiledPureFn);
167
+ const callCode = `${fnName}(${callParams.join(",")})`;
168
+ return { callCode, fnName, paramsName, dependenciesName };
169
+ }
170
+ compileErrorsPureFunctionCall(comp, rt, compiledPureFn, params, dependenciesParams, extraPathLiteral) {
171
+ const val = comp.vλl;
172
+ const path = comp.args.pλth;
173
+ const err = comp.args.εrr;
174
+ const expected = paramsToLiteral(comp, rt.getKindName());
175
+ const formatName = paramsToLiteral(comp, this.getFormatName());
176
+ const formatParams = paramsToLiteral(comp, params, this.getIgnoredProps());
177
+ const formatPath = paramsToLiteral(comp, this.getFormatPath());
178
+ const deps = dependenciesToLiteral(comp, dependenciesParams || {});
179
+ const accessPath = comp.getAccessPathLiteral(extraPathLiteral);
180
+ const callParams = [val, path, err, expected, formatName, formatParams, formatPath, deps];
181
+ if (accessPath) callParams.push(accessPath);
182
+ const fnName = comp.addPureFunction(compiledPureFn);
183
+ const callCode = `${fnName}(${callParams.join(",")})`;
184
+ return { callCode, fnName, paramsName: formatParams, dependenciesName: deps };
185
+ }
186
+ getCallJitFormatErr(comp, expected, formatter, shouldReturn = false, extraPathLiteral) {
187
+ return (paramName, paramValue) => {
188
+ const callCode = comp.callJitFormatErr(expected, formatter, paramName, paramValue, extraPathLiteral);
189
+ if (shouldReturn) return `return ${callCode}, ${comp.args.εrr}`;
190
+ return callCode;
191
+ };
192
+ }
193
+ printPath(rt, paramName) {
194
+ return [rt.getTypeName(), ...this.getFormatPath(paramName)].join(".");
195
+ }
196
+ }
197
+ export {
198
+ BaseRunTypeFormat
199
+ };
200
+ //# sourceMappingURL=baseRunTypeFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseRunTypeFormat.js","sources":["../../../../src/lib/baseRunTypeFormat.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* ########\n * 2025 mion\n * Author: Ma-jerez\n * License: MIT\n * The software is provided \"as is\", without warranty of any kind.\n * ######## */\nimport type {TypeFormatParams, CompiledPureFunction, TypeFormatValue, JitCompiledFn} from '@mionjs/core';\nimport type {BaseRunType} from './baseRunTypes.ts';\nimport {createJitCompiler, type JitFnCompiler, type JitErrorsFnCompiler} from './jitFnCompiler.ts';\nimport type {JitFnID, Mutable, StrNumber, JitCode, RunTypeOptions} from '../types.ts';\nimport {JitFunctions} from '../constants.functions.ts';\nimport {ReflectionKind} from '@deepkit/type';\nimport {dependenciesToLiteral, getFormatterParams, paramsToLiteral} from './formats.ts';\nimport {getFormatterHash} from './utils.ts';\nimport {getENV, getJitUtils} from '@mionjs/core';\n\n/**\n * Base class for all RunType formatters.\n * A type format is a type that satisfies some extra constrains, like emails, alphanumeric, uuids etc...\n * All those are formats of string.\n * At the moment only formats for string and numbers are supported.\n * Jit formatters receive some params and generate JIT code depending on these params.\n */\nexport abstract class BaseRunTypeFormat<P extends TypeFormatParams = any> {\n abstract kind: ReflectionKind;\n abstract name: string;\n /** The namespace for pure functions used by this formatter. Defaults to 'mionFormats'. */\n readonly namespace: string = 'mionFormats';\n rootFormatName: string = '';\n /**\n * The jit code for the formatter can be embedded together with the jit code for the type itself.\n * but sometimes is better to create a separate function for code to be reused.\n * This method is used to determine if the formatter code can be embedded or not.\n */\n canEmbedFormatterCode(_fnId: JitFnID, rt: BaseRunType, _params?: P): boolean {\n if (rt.src.kind === ReflectionKind.number) return true;\n // getFormatterJitId is similar to convert params to string\n const paramsToString = rt.getFormatTypeID() || '';\n // if there are many params, is better to not inline the formatter so the formatter function can be reused\n // in the future we could optimize this logic, to decide if a formatter should be embedded or not\n return paramsToString.length < 300;\n }\n\n /** Params from parent formatter */\n readonly paramsFromParent?: P;\n /**\n * When set this in the path to the params in the parent's params object.\n * ie: if dateTime is the parent of the current formatter and params are {date: {format: 'ISO'}} then the child path will be ['date']\n */\n readonly parentPath?: StrNumber[];\n /** List of params that will be excluded from jit code */\n readonly extraPathLiteral?: StrNumber;\n\n /**\n * The parentPath is the path to the params in the parent's params Formatter.\n * ie: if dateTime is the parent of the current formatter and params are {date: {format: 'ISO'}} then the child path will be ['date']\n */\n constructor(parentPath?: StrNumber[]) {\n this.parentPath = parentPath;\n }\n\n private pushContext(paramsFromParent?: P) {\n (this as Mutable<BaseRunTypeFormat>).paramsFromParent = paramsFromParent;\n }\n\n private popContext() {\n (this as Mutable<BaseRunTypeFormat>).paramsFromParent = undefined;\n }\n\n isRootFormat() {\n return !this.parentPath?.length;\n }\n\n getFormatNestLevel() {\n return this.parentPath?.length || 0;\n }\n\n getParams(rt: BaseRunType): NonNullable<P> {\n if (this.paramsFromParent) return this.paramsFromParent as NonNullable<P>;\n const params = getFormatterParams(rt, this.name) as NonNullable<P>;\n return params;\n }\n\n getFormatName(): string {\n return this.rootFormatName || this.name;\n }\n\n /** Returns the path to the params in the parent's params object */\n getFormatPath(paramName?: StrNumber): StrNumber[] {\n if (!paramName && this.parentPath) return [...this.parentPath];\n if (!paramName) return [];\n return this.parentPath ? [...this.parentPath, paramName] : [paramName];\n }\n\n getFormatExtraPathLiteral(): StrNumber | undefined {\n return this.extraPathLiteral;\n }\n\n getIgnoredProps(): string[] | undefined {\n return undefined;\n }\n\n mock(opts: RunTypeOptions, rt: BaseRunType, params?: P): any {\n if (this.validateParams) this.validateParams(rt, params || this.getParams(rt));\n this.pushContext(params);\n const result = this._mock(opts, rt);\n this.popContext();\n const formatter = this.createJitCompiledFormatter(JitFunctions.format.id, rt, undefined, params);\n if (formatter.isNoop) return result;\n return formatter.fn(result);\n }\n\n createJitCompiledFormatter(\n fnID: JitFnID,\n rt: BaseRunType,\n comp?: JitFnCompiler,\n params?: P,\n vλl?: string,\n formatName?: string,\n opts: RunTypeOptions = {}\n ): JitCompiledFn {\n const hash = getFormatterHash(rt);\n // created function will be an aux function prefixed with the original function id\n // this is because the new jit function itself is a standalone function and we don't want it colliding with any other jit function\n const jitFnHash = `${JitFunctions.aux.id}_${fnID}_${hash}`;\n const jitCompiled = getJitUtils().getJIT(jitFnHash);\n if (jitCompiled) {\n if (getENV('DEBUG_JIT') === 'VERBOSE')\n console.log(`\\x1b[32m Using cached function: ${jitCompiled.jitFnHash} \\x1b[0m`);\n comp?.updateDependencies(jitCompiled);\n return jitCompiled;\n }\n // TODO: decide if we should add parent compiler or not as parent to createJitCompiler\n const newJitCompiler: JitFnCompiler = createJitCompiler(rt, fnID, undefined, jitFnHash, hash, opts);\n try {\n const formatterCode = this.compileFormat(fnID, newJitCompiler, rt, params, vλl, formatName);\n const withReturn = this.handleReturnValues(rt, newJitCompiler, formatterCode);\n newJitCompiler.createJitFunction(withReturn);\n comp?.updateDependencies(newJitCompiler as JitCompiledFn);\n } catch (e) {\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 throw e;\n }\n\n return newJitCompiler as JitCompiledFn;\n }\n\n compileFormat(\n fnID: JitFnID,\n comp: JitFnCompiler,\n rt: BaseRunType,\n params?: P,\n vλl?: string,\n formatName?: string,\n extraPathLiteral?: StrNumber\n ): JitCode {\n if (this.validateParams) this.validateParams(rt, params || this.getParams(rt));\n (this as Mutable<BaseRunTypeFormat>).extraPathLiteral = extraPathLiteral;\n const v = comp.vλl;\n comp.vλl = vλl || v;\n this.rootFormatName = formatName || this.name;\n this.pushContext(params);\n let result: JitCode;\n switch (fnID) {\n case JitFunctions.isType.id:\n result = this.emitIsType(comp, rt);\n break;\n case JitFunctions.typeErrors.id:\n result = this.emitIsTypeErrors(comp as JitErrorsFnCompiler, rt);\n break;\n case JitFunctions.format.id:\n result = this.emitFormat ? this.emitFormat(comp, rt) : {code: undefined, type: 'S'};\n break;\n case JitFunctions.toBinary.id:\n result = this.emitToBinary ? this.emitToBinary(comp, rt) : {code: undefined, type: 'S'};\n break;\n case JitFunctions.fromBinary.id:\n result = this.emitFromBinary ? this.emitFromBinary(comp, rt) : {code: undefined, type: 'S'};\n break;\n // JSON serialization functions - formats don't need special handling for JSON\n // Just return the value as-is (expression type 'E' with empty code means use vλl)\n case JitFunctions.prepareForJson.id:\n case JitFunctions.restoreFromJson.id:\n case JitFunctions.stringifyJson.id:\n case JitFunctions.toJSCode.id:\n result = {code: '', type: 'E'};\n break;\n default:\n throw new Error(`Method not implemented: ${fnID}`);\n }\n this.popContext();\n this.rootFormatName = this.name;\n (this as Mutable<BaseRunTypeFormat>).extraPathLiteral = undefined;\n comp.vλl = v;\n return result;\n }\n\n /**\n * Adds return statements if needed\n * Unlike handleReturnValues in BaseRunType this one is only called in the root of the formatter\n */\n handleReturnValues(rt: BaseRunType, comp: JitFnCompiler, jitC: JitCode): string {\n if (!jitC?.code) return '';\n const codeType = jitC.type;\n switch (codeType) {\n case 'E':\n return `return ${jitC.code}`;\n case 'RB':\n return jitC.code;\n case 'S': {\n // For non-expressions, add a return statement with the default return value\n // if the code doesn't already have a return statement\n const lastChar = jitC.code.length - 1;\n const hasFullStop = jitC.code.lastIndexOf(';') === lastChar || jitC.code.lastIndexOf('}') === lastChar;\n const stopChar = hasFullStop ? '' : ';';\n return `${jitC.code}${stopChar} return ${comp.returnName}`;\n }\n }\n }\n\n abstract _mock(opts: RunTypeOptions, rt: BaseRunType): any;\n abstract emitIsType(comp: JitFnCompiler, rt: BaseRunType): JitCode;\n abstract emitIsTypeErrors(comp: JitErrorsFnCompiler, rt: BaseRunType): JitCode;\n\n // ###### optional methods for type formatters ########\n\n /** Optional method to compile the formatter function that transforms/sanitize a value */\n emitFormat?(comp: JitFnCompiler, rt: BaseRunType): JitCode;\n\n /** Optional method that customizes the binary serialization */\n emitToBinary?(comp: JitFnCompiler, rt: BaseRunType): JitCode;\n /** Optional method that customizes the binary deserialization */\n emitFromBinary?(comp: JitFnCompiler, rt: BaseRunType): JitCode;\n\n /** Throws an error if params are not valid */\n validateParams?(rt: BaseRunType, params: P): void;\n\n compilePureFunctionCall(\n comp: JitFnCompiler,\n rt: BaseRunType,\n compiledPureFn: CompiledPureFunction,\n params?: TypeFormatValue,\n dependenciesParams?: Record<string, string | CompiledPureFunction>\n ): {callCode: string; fnName: string; paramsName: string; dependenciesName?: string} {\n // PureFunction arguments =>\n\n // val: any\n // formatParams: TypeFormatValue,\n // deps: PureFunctionDeps\n\n const val = comp.vλl;\n const paramsName = paramsToLiteral(comp, params || this.getParams(rt), this.getIgnoredProps());\n const dependenciesName = dependenciesToLiteral(comp, dependenciesParams || {});\n const callParams = [val, paramsName, dependenciesName];\n const fnName = comp.addPureFunction(compiledPureFn);\n const callCode = `${fnName}(${callParams.join(',')})`;\n return {callCode, fnName, paramsName, dependenciesName};\n }\n\n compileErrorsPureFunctionCall(\n comp: JitErrorsFnCompiler,\n rt: BaseRunType,\n compiledPureFn: CompiledPureFunction,\n params: TypeFormatValue,\n dependenciesParams?: Record<string, string | CompiledPureFunction>,\n extraPathLiteral?: StrNumber // TODO: this might not be needed\n ): {callCode: string; fnName: string; paramsName: string; dependenciesName?: string} {\n // ErrorsPureFunction arguments =>\n\n // val: any,\n // pλth: StrNumber[],\n // εrr: RunTypeError[],\n // expected: string,\n\n // formatName: string,\n // formatParams: P,\n // formatPath: StrNumber[],\n // deps: PureFunctionDeps,\n // accessPath?: StrNumber[]\n\n const val = comp.vλl;\n const path = comp.args.pλth;\n const err = comp.args.εrr;\n const expected = paramsToLiteral(comp, rt.getKindName());\n\n const formatName = paramsToLiteral(comp, this.getFormatName());\n const formatParams = paramsToLiteral(comp, params, this.getIgnoredProps());\n const formatPath = paramsToLiteral(comp, this.getFormatPath());\n const deps = dependenciesToLiteral(comp, dependenciesParams || {});\n const accessPath = comp.getAccessPathLiteral(extraPathLiteral);\n\n const callParams = [val, path, err, expected, formatName, formatParams, formatPath, deps];\n if (accessPath) callParams.push(accessPath);\n\n const fnName = comp.addPureFunction(compiledPureFn);\n const callCode = `${fnName}(${callParams.join(',')})`;\n return {callCode, fnName, paramsName: formatParams, dependenciesName: deps};\n }\n\n getCallJitFormatErr(\n comp: JitErrorsFnCompiler,\n expected: BaseRunType<any>,\n formatter: BaseRunTypeFormat<any>,\n shouldReturn = false,\n extraPathLiteral?: StrNumber\n ) {\n return (paramName: string, paramValue: string | number | boolean | bigint) => {\n const callCode = comp.callJitFormatErr(expected, formatter, paramName, paramValue, extraPathLiteral);\n if (shouldReturn) return `return ${callCode}, ${comp.args.εrr}`;\n return callCode;\n };\n }\n\n printPath(rt: BaseRunType, paramName?: string): string {\n return [rt.getTypeName(), ...this.getFormatPath(paramName)].join('.');\n }\n}\n"],"names":[],"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
+ }