@mionjs/run-types 0.8.7 → 0.8.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/.dist/cjs/index.d.ts +1 -0
  2. package/.dist/cjs/index.d.ts.map +1 -0
  3. package/.dist/cjs/src/constants.d.ts +1 -0
  4. package/.dist/cjs/src/constants.d.ts.map +1 -0
  5. package/.dist/cjs/src/constants.functions.d.ts +1 -0
  6. package/.dist/cjs/src/constants.functions.d.ts.map +1 -0
  7. package/.dist/cjs/src/constants.kind.d.ts +1 -0
  8. package/.dist/cjs/src/constants.kind.d.ts.map +1 -0
  9. package/.dist/cjs/src/createRunType.cjs +3 -1
  10. package/.dist/cjs/src/createRunType.cjs.map +1 -1
  11. package/.dist/cjs/src/createRunType.d.ts +1 -0
  12. package/.dist/cjs/src/createRunType.d.ts.map +1 -0
  13. package/.dist/cjs/src/createRunTypeFunctions.d.ts +1 -0
  14. package/.dist/cjs/src/createRunTypeFunctions.d.ts.map +1 -0
  15. package/.dist/cjs/src/formats.runtype.d.ts +1 -0
  16. package/.dist/cjs/src/formats.runtype.d.ts.map +1 -0
  17. package/.dist/cjs/src/jitCompilers/binary/binarySpec/binaryHelpers.d.ts +1 -0
  18. package/.dist/cjs/src/jitCompilers/binary/binarySpec/binaryHelpers.d.ts.map +1 -0
  19. package/.dist/cjs/src/jitCompilers/binary/fromBinary.cjs +1 -1
  20. package/.dist/cjs/src/jitCompilers/binary/fromBinary.cjs.map +1 -1
  21. package/.dist/cjs/src/jitCompilers/binary/fromBinary.d.ts +1 -0
  22. package/.dist/cjs/src/jitCompilers/binary/fromBinary.d.ts.map +1 -0
  23. package/.dist/cjs/src/jitCompilers/binary/toBinary.cjs +1 -1
  24. package/.dist/cjs/src/jitCompilers/binary/toBinary.cjs.map +1 -1
  25. package/.dist/cjs/src/jitCompilers/binary/toBinary.d.ts +1 -0
  26. package/.dist/cjs/src/jitCompilers/binary/toBinary.d.ts.map +1 -0
  27. package/.dist/cjs/src/jitCompilers/equalsHelpers.d.ts +1 -0
  28. package/.dist/cjs/src/jitCompilers/equalsHelpers.d.ts.map +1 -0
  29. package/.dist/cjs/src/jitCompilers/json/jsonSpec/jsonHelpers.d.ts +1 -0
  30. package/.dist/cjs/src/jitCompilers/json/jsonSpec/jsonHelpers.d.ts.map +1 -0
  31. package/.dist/cjs/src/jitCompilers/json/stringifyJson.cjs +1 -1
  32. package/.dist/cjs/src/jitCompilers/json/stringifyJson.cjs.map +1 -1
  33. package/.dist/cjs/src/jitCompilers/json/stringifyJson.d.ts +1 -0
  34. package/.dist/cjs/src/jitCompilers/json/stringifyJson.d.ts.map +1 -0
  35. package/.dist/cjs/src/jitCompilers/json/stringifySpec/stringifyHelpers.d.ts +1 -0
  36. package/.dist/cjs/src/jitCompilers/json/stringifySpec/stringifyHelpers.d.ts.map +1 -0
  37. package/.dist/cjs/src/jitCompilers/json/toJsCode.d.ts +1 -0
  38. package/.dist/cjs/src/jitCompilers/json/toJsCode.d.ts.map +1 -0
  39. package/.dist/cjs/src/lib/baseRunTypeFormat.d.ts +1 -0
  40. package/.dist/cjs/src/lib/baseRunTypeFormat.d.ts.map +1 -0
  41. package/.dist/cjs/src/lib/baseRunTypes.d.ts +1 -0
  42. package/.dist/cjs/src/lib/baseRunTypes.d.ts.map +1 -0
  43. package/.dist/cjs/src/lib/createJitFunction.d.ts +1 -0
  44. package/.dist/cjs/src/lib/createJitFunction.d.ts.map +1 -0
  45. package/.dist/cjs/src/lib/dkProxy.d.ts +1 -0
  46. package/.dist/cjs/src/lib/dkProxy.d.ts.map +1 -0
  47. package/.dist/cjs/src/lib/formats.d.ts +1 -0
  48. package/.dist/cjs/src/lib/formats.d.ts.map +1 -0
  49. package/.dist/cjs/src/lib/guards.d.ts +1 -0
  50. package/.dist/cjs/src/lib/guards.d.ts.map +1 -0
  51. package/.dist/cjs/src/lib/jitFnCompiler.d.ts +1 -0
  52. package/.dist/cjs/src/lib/jitFnCompiler.d.ts.map +1 -0
  53. package/.dist/cjs/src/lib/jitFnsRegistry.d.ts +1 -0
  54. package/.dist/cjs/src/lib/jitFnsRegistry.d.ts.map +1 -0
  55. package/.dist/cjs/src/lib/typeId.d.ts +1 -0
  56. package/.dist/cjs/src/lib/typeId.d.ts.map +1 -0
  57. package/.dist/cjs/src/lib/utils.d.ts +1 -0
  58. package/.dist/cjs/src/lib/utils.d.ts.map +1 -0
  59. package/.dist/cjs/src/mocking/constants.mock.d.ts +1 -0
  60. package/.dist/cjs/src/mocking/constants.mock.d.ts.map +1 -0
  61. package/.dist/cjs/src/mocking/mockRegistry.d.ts +1 -0
  62. package/.dist/cjs/src/mocking/mockRegistry.d.ts.map +1 -0
  63. package/.dist/cjs/src/mocking/mockType.cjs +46 -1
  64. package/.dist/cjs/src/mocking/mockType.cjs.map +1 -1
  65. package/.dist/cjs/src/mocking/mockType.d.ts +1 -0
  66. package/.dist/cjs/src/mocking/mockType.d.ts.map +1 -0
  67. package/.dist/cjs/src/mocking/mockUtils.d.ts +1 -0
  68. package/.dist/cjs/src/mocking/mockUtils.d.ts.map +1 -0
  69. package/.dist/cjs/src/nodes/atomic/any.d.ts +1 -0
  70. package/.dist/cjs/src/nodes/atomic/any.d.ts.map +1 -0
  71. package/.dist/cjs/src/nodes/atomic/bigInt.d.ts +1 -0
  72. package/.dist/cjs/src/nodes/atomic/bigInt.d.ts.map +1 -0
  73. package/.dist/cjs/src/nodes/atomic/boolean.d.ts +1 -0
  74. package/.dist/cjs/src/nodes/atomic/boolean.d.ts.map +1 -0
  75. package/.dist/cjs/src/nodes/atomic/date.d.ts +1 -0
  76. package/.dist/cjs/src/nodes/atomic/date.d.ts.map +1 -0
  77. package/.dist/cjs/src/nodes/atomic/enum.d.ts +1 -0
  78. package/.dist/cjs/src/nodes/atomic/enum.d.ts.map +1 -0
  79. package/.dist/cjs/src/nodes/atomic/enumMember.d.ts +1 -0
  80. package/.dist/cjs/src/nodes/atomic/enumMember.d.ts.map +1 -0
  81. package/.dist/cjs/src/nodes/atomic/literal.d.ts +1 -0
  82. package/.dist/cjs/src/nodes/atomic/literal.d.ts.map +1 -0
  83. package/.dist/cjs/src/nodes/atomic/never.d.ts +1 -0
  84. package/.dist/cjs/src/nodes/atomic/never.d.ts.map +1 -0
  85. package/.dist/cjs/src/nodes/atomic/null.d.ts +1 -0
  86. package/.dist/cjs/src/nodes/atomic/null.d.ts.map +1 -0
  87. package/.dist/cjs/src/nodes/atomic/number.d.ts +1 -0
  88. package/.dist/cjs/src/nodes/atomic/number.d.ts.map +1 -0
  89. package/.dist/cjs/src/nodes/atomic/object.d.ts +1 -0
  90. package/.dist/cjs/src/nodes/atomic/object.d.ts.map +1 -0
  91. package/.dist/cjs/src/nodes/atomic/regexp.d.ts +1 -0
  92. package/.dist/cjs/src/nodes/atomic/regexp.d.ts.map +1 -0
  93. package/.dist/cjs/src/nodes/atomic/string.d.ts +1 -0
  94. package/.dist/cjs/src/nodes/atomic/string.d.ts.map +1 -0
  95. package/.dist/cjs/src/nodes/atomic/symbol.d.ts +1 -0
  96. package/.dist/cjs/src/nodes/atomic/symbol.d.ts.map +1 -0
  97. package/.dist/cjs/src/nodes/atomic/undefined.d.ts +1 -0
  98. package/.dist/cjs/src/nodes/atomic/undefined.d.ts.map +1 -0
  99. package/.dist/cjs/src/nodes/atomic/unknown.d.ts +1 -0
  100. package/.dist/cjs/src/nodes/atomic/unknown.d.ts.map +1 -0
  101. package/.dist/cjs/src/nodes/atomic/void.d.ts +1 -0
  102. package/.dist/cjs/src/nodes/atomic/void.d.ts.map +1 -0
  103. package/.dist/cjs/src/nodes/collection/class.d.ts +1 -0
  104. package/.dist/cjs/src/nodes/collection/class.d.ts.map +1 -0
  105. package/.dist/cjs/src/nodes/collection/functionParams.d.ts +1 -0
  106. package/.dist/cjs/src/nodes/collection/functionParams.d.ts.map +1 -0
  107. package/.dist/cjs/src/nodes/collection/interface.d.ts +1 -0
  108. package/.dist/cjs/src/nodes/collection/interface.d.ts.map +1 -0
  109. package/.dist/cjs/src/nodes/collection/intersection.d.ts +1 -0
  110. package/.dist/cjs/src/nodes/collection/intersection.d.ts.map +1 -0
  111. package/.dist/cjs/src/nodes/collection/templateLiteral.cjs +73 -0
  112. package/.dist/cjs/src/nodes/collection/templateLiteral.cjs.map +1 -0
  113. package/.dist/cjs/src/nodes/collection/templateLiteral.d.ts +16 -0
  114. package/.dist/cjs/src/nodes/collection/templateLiteral.d.ts.map +1 -0
  115. package/.dist/cjs/src/nodes/collection/tuple.d.ts +1 -0
  116. package/.dist/cjs/src/nodes/collection/tuple.d.ts.map +1 -0
  117. package/.dist/cjs/src/nodes/collection/union.d.ts +1 -0
  118. package/.dist/cjs/src/nodes/collection/union.d.ts.map +1 -0
  119. package/.dist/cjs/src/nodes/collection/unionDiscriminator.d.ts +1 -0
  120. package/.dist/cjs/src/nodes/collection/unionDiscriminator.d.ts.map +1 -0
  121. package/.dist/cjs/src/nodes/function/function.d.ts +1 -0
  122. package/.dist/cjs/src/nodes/function/function.d.ts.map +1 -0
  123. package/.dist/cjs/src/nodes/member/array.d.ts +1 -0
  124. package/.dist/cjs/src/nodes/member/array.d.ts.map +1 -0
  125. package/.dist/cjs/src/nodes/member/callSignature.d.ts +1 -0
  126. package/.dist/cjs/src/nodes/member/callSignature.d.ts.map +1 -0
  127. package/.dist/cjs/src/nodes/member/genericMember.d.ts +1 -0
  128. package/.dist/cjs/src/nodes/member/genericMember.d.ts.map +1 -0
  129. package/.dist/cjs/src/nodes/member/indexProperty.cjs +69 -22
  130. package/.dist/cjs/src/nodes/member/indexProperty.cjs.map +1 -1
  131. package/.dist/cjs/src/nodes/member/indexProperty.d.ts +2 -0
  132. package/.dist/cjs/src/nodes/member/indexProperty.d.ts.map +1 -0
  133. package/.dist/cjs/src/nodes/member/method.d.ts +1 -0
  134. package/.dist/cjs/src/nodes/member/method.d.ts.map +1 -0
  135. package/.dist/cjs/src/nodes/member/methodSignature.d.ts +1 -0
  136. package/.dist/cjs/src/nodes/member/methodSignature.d.ts.map +1 -0
  137. package/.dist/cjs/src/nodes/member/param.d.ts +1 -0
  138. package/.dist/cjs/src/nodes/member/param.d.ts.map +1 -0
  139. package/.dist/cjs/src/nodes/member/property.d.ts +1 -0
  140. package/.dist/cjs/src/nodes/member/property.d.ts.map +1 -0
  141. package/.dist/cjs/src/nodes/member/restParams.d.ts +1 -0
  142. package/.dist/cjs/src/nodes/member/restParams.d.ts.map +1 -0
  143. package/.dist/cjs/src/nodes/member/tupleMember.d.ts +1 -0
  144. package/.dist/cjs/src/nodes/member/tupleMember.d.ts.map +1 -0
  145. package/.dist/cjs/src/nodes/native/Iterable.d.ts +1 -0
  146. package/.dist/cjs/src/nodes/native/Iterable.d.ts.map +1 -0
  147. package/.dist/cjs/src/nodes/native/map.d.ts +1 -0
  148. package/.dist/cjs/src/nodes/native/map.d.ts.map +1 -0
  149. package/.dist/cjs/src/nodes/native/nonSerializable.d.ts +1 -0
  150. package/.dist/cjs/src/nodes/native/nonSerializable.d.ts.map +1 -0
  151. package/.dist/cjs/src/nodes/native/promise.d.ts +1 -0
  152. package/.dist/cjs/src/nodes/native/promise.d.ts.map +1 -0
  153. package/.dist/cjs/src/nodes/native/set.d.ts +1 -0
  154. package/.dist/cjs/src/nodes/native/set.d.ts.map +1 -0
  155. package/.dist/cjs/src/run-types-pure-fns.d.ts +1 -0
  156. package/.dist/cjs/src/run-types-pure-fns.d.ts.map +1 -0
  157. package/.dist/cjs/src/types.d.ts +1 -0
  158. package/.dist/cjs/src/types.d.ts.map +1 -0
  159. package/.dist/esm/index.d.ts +1 -0
  160. package/.dist/esm/index.d.ts.map +1 -0
  161. package/.dist/esm/src/constants.d.ts +1 -0
  162. package/.dist/esm/src/constants.d.ts.map +1 -0
  163. package/.dist/esm/src/constants.functions.d.ts +1 -0
  164. package/.dist/esm/src/constants.functions.d.ts.map +1 -0
  165. package/.dist/esm/src/constants.kind.d.ts +1 -0
  166. package/.dist/esm/src/constants.kind.d.ts.map +1 -0
  167. package/.dist/esm/src/createRunType.d.ts +1 -0
  168. package/.dist/esm/src/createRunType.d.ts.map +1 -0
  169. package/.dist/esm/src/createRunType.js +3 -1
  170. package/.dist/esm/src/createRunType.js.map +1 -1
  171. package/.dist/esm/src/createRunTypeFunctions.d.ts +1 -0
  172. package/.dist/esm/src/createRunTypeFunctions.d.ts.map +1 -0
  173. package/.dist/esm/src/formats.runtype.d.ts +1 -0
  174. package/.dist/esm/src/formats.runtype.d.ts.map +1 -0
  175. package/.dist/esm/src/jitCompilers/binary/binarySpec/binaryHelpers.d.ts +1 -0
  176. package/.dist/esm/src/jitCompilers/binary/binarySpec/binaryHelpers.d.ts.map +1 -0
  177. package/.dist/esm/src/jitCompilers/binary/fromBinary.d.ts +1 -0
  178. package/.dist/esm/src/jitCompilers/binary/fromBinary.d.ts.map +1 -0
  179. package/.dist/esm/src/jitCompilers/binary/fromBinary.js +1 -1
  180. package/.dist/esm/src/jitCompilers/binary/fromBinary.js.map +1 -1
  181. package/.dist/esm/src/jitCompilers/binary/toBinary.d.ts +1 -0
  182. package/.dist/esm/src/jitCompilers/binary/toBinary.d.ts.map +1 -0
  183. package/.dist/esm/src/jitCompilers/binary/toBinary.js +1 -1
  184. package/.dist/esm/src/jitCompilers/binary/toBinary.js.map +1 -1
  185. package/.dist/esm/src/jitCompilers/equalsHelpers.d.ts +1 -0
  186. package/.dist/esm/src/jitCompilers/equalsHelpers.d.ts.map +1 -0
  187. package/.dist/esm/src/jitCompilers/json/jsonSpec/jsonHelpers.d.ts +1 -0
  188. package/.dist/esm/src/jitCompilers/json/jsonSpec/jsonHelpers.d.ts.map +1 -0
  189. package/.dist/esm/src/jitCompilers/json/stringifyJson.d.ts +1 -0
  190. package/.dist/esm/src/jitCompilers/json/stringifyJson.d.ts.map +1 -0
  191. package/.dist/esm/src/jitCompilers/json/stringifyJson.js +1 -1
  192. package/.dist/esm/src/jitCompilers/json/stringifyJson.js.map +1 -1
  193. package/.dist/esm/src/jitCompilers/json/stringifySpec/stringifyHelpers.d.ts +1 -0
  194. package/.dist/esm/src/jitCompilers/json/stringifySpec/stringifyHelpers.d.ts.map +1 -0
  195. package/.dist/esm/src/jitCompilers/json/toJsCode.d.ts +1 -0
  196. package/.dist/esm/src/jitCompilers/json/toJsCode.d.ts.map +1 -0
  197. package/.dist/esm/src/lib/baseRunTypeFormat.d.ts +1 -0
  198. package/.dist/esm/src/lib/baseRunTypeFormat.d.ts.map +1 -0
  199. package/.dist/esm/src/lib/baseRunTypes.d.ts +1 -0
  200. package/.dist/esm/src/lib/baseRunTypes.d.ts.map +1 -0
  201. package/.dist/esm/src/lib/createJitFunction.d.ts +1 -0
  202. package/.dist/esm/src/lib/createJitFunction.d.ts.map +1 -0
  203. package/.dist/esm/src/lib/dkProxy.d.ts +1 -0
  204. package/.dist/esm/src/lib/dkProxy.d.ts.map +1 -0
  205. package/.dist/esm/src/lib/formats.d.ts +1 -0
  206. package/.dist/esm/src/lib/formats.d.ts.map +1 -0
  207. package/.dist/esm/src/lib/guards.d.ts +1 -0
  208. package/.dist/esm/src/lib/guards.d.ts.map +1 -0
  209. package/.dist/esm/src/lib/jitFnCompiler.d.ts +1 -0
  210. package/.dist/esm/src/lib/jitFnCompiler.d.ts.map +1 -0
  211. package/.dist/esm/src/lib/jitFnsRegistry.d.ts +1 -0
  212. package/.dist/esm/src/lib/jitFnsRegistry.d.ts.map +1 -0
  213. package/.dist/esm/src/lib/typeId.d.ts +1 -0
  214. package/.dist/esm/src/lib/typeId.d.ts.map +1 -0
  215. package/.dist/esm/src/lib/utils.d.ts +1 -0
  216. package/.dist/esm/src/lib/utils.d.ts.map +1 -0
  217. package/.dist/esm/src/mocking/constants.mock.d.ts +1 -0
  218. package/.dist/esm/src/mocking/constants.mock.d.ts.map +1 -0
  219. package/.dist/esm/src/mocking/mockRegistry.d.ts +1 -0
  220. package/.dist/esm/src/mocking/mockRegistry.d.ts.map +1 -0
  221. package/.dist/esm/src/mocking/mockType.d.ts +1 -0
  222. package/.dist/esm/src/mocking/mockType.d.ts.map +1 -0
  223. package/.dist/esm/src/mocking/mockType.js +47 -2
  224. package/.dist/esm/src/mocking/mockType.js.map +1 -1
  225. package/.dist/esm/src/mocking/mockUtils.d.ts +1 -0
  226. package/.dist/esm/src/mocking/mockUtils.d.ts.map +1 -0
  227. package/.dist/esm/src/mocking/mockUtils.js +1 -1
  228. package/.dist/esm/src/nodes/atomic/any.d.ts +1 -0
  229. package/.dist/esm/src/nodes/atomic/any.d.ts.map +1 -0
  230. package/.dist/esm/src/nodes/atomic/bigInt.d.ts +1 -0
  231. package/.dist/esm/src/nodes/atomic/bigInt.d.ts.map +1 -0
  232. package/.dist/esm/src/nodes/atomic/boolean.d.ts +1 -0
  233. package/.dist/esm/src/nodes/atomic/boolean.d.ts.map +1 -0
  234. package/.dist/esm/src/nodes/atomic/date.d.ts +1 -0
  235. package/.dist/esm/src/nodes/atomic/date.d.ts.map +1 -0
  236. package/.dist/esm/src/nodes/atomic/enum.d.ts +1 -0
  237. package/.dist/esm/src/nodes/atomic/enum.d.ts.map +1 -0
  238. package/.dist/esm/src/nodes/atomic/enumMember.d.ts +1 -0
  239. package/.dist/esm/src/nodes/atomic/enumMember.d.ts.map +1 -0
  240. package/.dist/esm/src/nodes/atomic/literal.d.ts +1 -0
  241. package/.dist/esm/src/nodes/atomic/literal.d.ts.map +1 -0
  242. package/.dist/esm/src/nodes/atomic/never.d.ts +1 -0
  243. package/.dist/esm/src/nodes/atomic/never.d.ts.map +1 -0
  244. package/.dist/esm/src/nodes/atomic/null.d.ts +1 -0
  245. package/.dist/esm/src/nodes/atomic/null.d.ts.map +1 -0
  246. package/.dist/esm/src/nodes/atomic/number.d.ts +1 -0
  247. package/.dist/esm/src/nodes/atomic/number.d.ts.map +1 -0
  248. package/.dist/esm/src/nodes/atomic/object.d.ts +1 -0
  249. package/.dist/esm/src/nodes/atomic/object.d.ts.map +1 -0
  250. package/.dist/esm/src/nodes/atomic/regexp.d.ts +1 -0
  251. package/.dist/esm/src/nodes/atomic/regexp.d.ts.map +1 -0
  252. package/.dist/esm/src/nodes/atomic/string.d.ts +1 -0
  253. package/.dist/esm/src/nodes/atomic/string.d.ts.map +1 -0
  254. package/.dist/esm/src/nodes/atomic/symbol.d.ts +1 -0
  255. package/.dist/esm/src/nodes/atomic/symbol.d.ts.map +1 -0
  256. package/.dist/esm/src/nodes/atomic/undefined.d.ts +1 -0
  257. package/.dist/esm/src/nodes/atomic/undefined.d.ts.map +1 -0
  258. package/.dist/esm/src/nodes/atomic/unknown.d.ts +1 -0
  259. package/.dist/esm/src/nodes/atomic/unknown.d.ts.map +1 -0
  260. package/.dist/esm/src/nodes/atomic/void.d.ts +1 -0
  261. package/.dist/esm/src/nodes/atomic/void.d.ts.map +1 -0
  262. package/.dist/esm/src/nodes/collection/class.d.ts +1 -0
  263. package/.dist/esm/src/nodes/collection/class.d.ts.map +1 -0
  264. package/.dist/esm/src/nodes/collection/functionParams.d.ts +1 -0
  265. package/.dist/esm/src/nodes/collection/functionParams.d.ts.map +1 -0
  266. package/.dist/esm/src/nodes/collection/interface.d.ts +1 -0
  267. package/.dist/esm/src/nodes/collection/interface.d.ts.map +1 -0
  268. package/.dist/esm/src/nodes/collection/intersection.d.ts +1 -0
  269. package/.dist/esm/src/nodes/collection/intersection.d.ts.map +1 -0
  270. package/.dist/esm/src/nodes/collection/templateLiteral.d.ts +16 -0
  271. package/.dist/esm/src/nodes/collection/templateLiteral.d.ts.map +1 -0
  272. package/.dist/esm/src/nodes/collection/templateLiteral.js +73 -0
  273. package/.dist/esm/src/nodes/collection/templateLiteral.js.map +1 -0
  274. package/.dist/esm/src/nodes/collection/tuple.d.ts +1 -0
  275. package/.dist/esm/src/nodes/collection/tuple.d.ts.map +1 -0
  276. package/.dist/esm/src/nodes/collection/union.d.ts +1 -0
  277. package/.dist/esm/src/nodes/collection/union.d.ts.map +1 -0
  278. package/.dist/esm/src/nodes/collection/unionDiscriminator.d.ts +1 -0
  279. package/.dist/esm/src/nodes/collection/unionDiscriminator.d.ts.map +1 -0
  280. package/.dist/esm/src/nodes/function/function.d.ts +1 -0
  281. package/.dist/esm/src/nodes/function/function.d.ts.map +1 -0
  282. package/.dist/esm/src/nodes/member/array.d.ts +1 -0
  283. package/.dist/esm/src/nodes/member/array.d.ts.map +1 -0
  284. package/.dist/esm/src/nodes/member/callSignature.d.ts +1 -0
  285. package/.dist/esm/src/nodes/member/callSignature.d.ts.map +1 -0
  286. package/.dist/esm/src/nodes/member/genericMember.d.ts +1 -0
  287. package/.dist/esm/src/nodes/member/genericMember.d.ts.map +1 -0
  288. package/.dist/esm/src/nodes/member/indexProperty.d.ts +2 -0
  289. package/.dist/esm/src/nodes/member/indexProperty.d.ts.map +1 -0
  290. package/.dist/esm/src/nodes/member/indexProperty.js +70 -23
  291. package/.dist/esm/src/nodes/member/indexProperty.js.map +1 -1
  292. package/.dist/esm/src/nodes/member/method.d.ts +1 -0
  293. package/.dist/esm/src/nodes/member/method.d.ts.map +1 -0
  294. package/.dist/esm/src/nodes/member/methodSignature.d.ts +1 -0
  295. package/.dist/esm/src/nodes/member/methodSignature.d.ts.map +1 -0
  296. package/.dist/esm/src/nodes/member/param.d.ts +1 -0
  297. package/.dist/esm/src/nodes/member/param.d.ts.map +1 -0
  298. package/.dist/esm/src/nodes/member/property.d.ts +1 -0
  299. package/.dist/esm/src/nodes/member/property.d.ts.map +1 -0
  300. package/.dist/esm/src/nodes/member/restParams.d.ts +1 -0
  301. package/.dist/esm/src/nodes/member/restParams.d.ts.map +1 -0
  302. package/.dist/esm/src/nodes/member/tupleMember.d.ts +1 -0
  303. package/.dist/esm/src/nodes/member/tupleMember.d.ts.map +1 -0
  304. package/.dist/esm/src/nodes/native/Iterable.d.ts +1 -0
  305. package/.dist/esm/src/nodes/native/Iterable.d.ts.map +1 -0
  306. package/.dist/esm/src/nodes/native/map.d.ts +1 -0
  307. package/.dist/esm/src/nodes/native/map.d.ts.map +1 -0
  308. package/.dist/esm/src/nodes/native/nonSerializable.d.ts +1 -0
  309. package/.dist/esm/src/nodes/native/nonSerializable.d.ts.map +1 -0
  310. package/.dist/esm/src/nodes/native/promise.d.ts +1 -0
  311. package/.dist/esm/src/nodes/native/promise.d.ts.map +1 -0
  312. package/.dist/esm/src/nodes/native/set.d.ts +1 -0
  313. package/.dist/esm/src/nodes/native/set.d.ts.map +1 -0
  314. package/.dist/esm/src/run-types-pure-fns.d.ts +1 -0
  315. package/.dist/esm/src/run-types-pure-fns.d.ts.map +1 -0
  316. package/.dist/esm/src/types.d.ts +1 -0
  317. package/.dist/esm/src/types.d.ts.map +1 -0
  318. package/index.ts +70 -0
  319. package/package.json +8 -4
  320. package/src/constants.functions.ts +196 -0
  321. package/src/constants.kind.ts +76 -0
  322. package/src/constants.ts +85 -0
  323. package/src/createRunType.ts +322 -0
  324. package/src/createRunTypeFunctions.ts +93 -0
  325. package/src/formats.runtype.ts +35 -0
  326. package/src/jitCompilers/binary/binarySPEC.md +138 -0
  327. package/src/jitCompilers/binary/binarySpec/binaryHelpers.ts +118 -0
  328. package/src/jitCompilers/binary/fromBinary.ts +493 -0
  329. package/src/jitCompilers/binary/toBinary.ts +436 -0
  330. package/src/jitCompilers/equalsHelpers.ts +62 -0
  331. package/src/jitCompilers/json/jsonSpec/jsonHelpers.ts +64 -0
  332. package/src/jitCompilers/json/stringifyJson.ts +476 -0
  333. package/src/jitCompilers/json/stringifySpec/stringifyHelpers.ts +59 -0
  334. package/src/jitCompilers/json/toJsCode.ts +182 -0
  335. package/src/jitCompilers/serialization-suite.ts +1689 -0
  336. package/src/jitCompilers/xyz-Template/fromXYZ.ts +212 -0
  337. package/src/jitCompilers/xyz-Template/toXYZ.ts +217 -0
  338. package/src/jitCompilers/xyz-Template/xyzReadme.md +6 -0
  339. package/src/jitCompilers/xyz-Template/xyzSpec/xyzHelpers.ts +66 -0
  340. package/src/lib/baseRunTypeFormat.ts +320 -0
  341. package/src/lib/baseRunTypes.ts +367 -0
  342. package/src/lib/createJitFunction.ts +87 -0
  343. package/src/lib/dkProxy.ts +47 -0
  344. package/src/lib/formats.ts +144 -0
  345. package/src/lib/guards.ts +290 -0
  346. package/src/lib/jitFnCompiler.ts +783 -0
  347. package/src/lib/jitFnsRegistry.ts +53 -0
  348. package/src/lib/typeId.ts +225 -0
  349. package/src/lib/utils.ts +402 -0
  350. package/src/mocking/constants.mock.ts +87 -0
  351. package/src/mocking/mockRegistry.ts +20 -0
  352. package/src/mocking/mockType.ts +409 -0
  353. package/src/mocking/mockUtils.ts +82 -0
  354. package/src/nodes/atomic/any.ts +22 -0
  355. package/src/nodes/atomic/bigInt.ts +26 -0
  356. package/src/nodes/atomic/boolean.ts +26 -0
  357. package/src/nodes/atomic/date.ts +26 -0
  358. package/src/nodes/atomic/enum.ts +23 -0
  359. package/src/nodes/atomic/enumMember.ts +29 -0
  360. package/src/nodes/atomic/literal.ts +125 -0
  361. package/src/nodes/atomic/never.ts +26 -0
  362. package/src/nodes/atomic/null.ts +26 -0
  363. package/src/nodes/atomic/number.ts +26 -0
  364. package/src/nodes/atomic/object.ts +20 -0
  365. package/src/nodes/atomic/regexp.ts +29 -0
  366. package/src/nodes/atomic/string.ts +20 -0
  367. package/src/nodes/atomic/symbol.ts +31 -0
  368. package/src/nodes/atomic/undefined.ts +23 -0
  369. package/src/nodes/atomic/unknown.ts +10 -0
  370. package/src/nodes/atomic/void.ts +26 -0
  371. package/src/nodes/collection/class.ts +36 -0
  372. package/src/nodes/collection/functionParams.ts +42 -0
  373. package/src/nodes/collection/interface.ts +300 -0
  374. package/src/nodes/collection/intersection.ts +30 -0
  375. package/src/nodes/collection/templateLiteral.ts +87 -0
  376. package/src/nodes/collection/tuple.ts +80 -0
  377. package/src/nodes/collection/union.ts +205 -0
  378. package/src/nodes/collection/unionDiscriminator.ts +259 -0
  379. package/src/nodes/function/function.ts +166 -0
  380. package/src/nodes/member/array.ts +150 -0
  381. package/src/nodes/member/callSignature.ts +34 -0
  382. package/src/nodes/member/genericMember.ts +63 -0
  383. package/src/nodes/member/indexProperty.ts +174 -0
  384. package/src/nodes/member/method.ts +30 -0
  385. package/src/nodes/member/methodSignature.ts +31 -0
  386. package/src/nodes/member/param.ts +22 -0
  387. package/src/nodes/member/property.ts +75 -0
  388. package/src/nodes/member/restParams.ts +22 -0
  389. package/src/nodes/member/tupleMember.ts +93 -0
  390. package/src/nodes/native/Iterable.ts +153 -0
  391. package/src/nodes/native/map.ts +91 -0
  392. package/src/nodes/native/nonSerializable.ts +42 -0
  393. package/src/nodes/native/promise.ts +43 -0
  394. package/src/nodes/native/set.ts +56 -0
  395. package/src/run-types-pure-fns.ts +116 -0
  396. package/src/types.ts +206 -0
@@ -0,0 +1,93 @@
1
+ /* ########
2
+ * 2024 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+
8
+ import {ReflectionKind, TypeTupleMember, type TypeParameter} from '@deepkit/type';
9
+ import type {JitFnCompiler, JitErrorsFnCompiler} from '../../lib/jitFnCompiler.ts';
10
+ import {MemberRunType} from '../../lib/baseRunTypes.ts';
11
+ import {JitCode} from '../../types.ts';
12
+ import {childIsExpression, getParamIndex} from '../../lib/utils.ts';
13
+
14
+ type TupleMemberT = TypeParameter | TypeTupleMember;
15
+ export class TupleMemberRunType<T extends TupleMemberT = TypeTupleMember> extends MemberRunType<T> {
16
+ isOptional(): boolean {
17
+ return !!this.src.optional || this.isRest() || this.hasDefaultValue();
18
+ }
19
+ getChildIndex(comp: JitFnCompiler): number {
20
+ const start = comp?.opts?.paramsSlice?.start;
21
+ if (start) return getParamIndex(this.src as TypeParameter) - start;
22
+ return getParamIndex(this.src as TypeParameter);
23
+ }
24
+ getChildVarName(comp: JitFnCompiler): number {
25
+ // For tuple members, use the index in the parent tuple
26
+ const src = this.src as any;
27
+ if (src.parent?.types) {
28
+ return src.parent.types.indexOf(this.src);
29
+ }
30
+ // Fallback to parameter index for non-tuple members
31
+ return this.getChildIndex(comp);
32
+ }
33
+ getChildLiteral(comp: JitFnCompiler): number {
34
+ return this.getChildVarName(comp);
35
+ }
36
+ useArrayAccessor(): true {
37
+ return true;
38
+ }
39
+ isRest(): boolean {
40
+ return this.getMemberType().src.kind === ReflectionKind.rest;
41
+ }
42
+ skipSettingAccessor() {
43
+ return this.isRest();
44
+ }
45
+ hasDefaultValue(): boolean {
46
+ return !!(this.src as TypeParameter).default;
47
+ }
48
+ emitIsType(comp: JitFnCompiler): JitCode {
49
+ const child = this.getJitChild(comp);
50
+ const skipChild = child?.skipJit(comp);
51
+ const childJit = comp.compileIsType(child, 'E');
52
+ const isNonSerializable = skipChild || (!childJit?.code && !child);
53
+ if (isNonSerializable) return {code: `${comp.getChildVλl()} === undefined`, type: 'E'}; // non serializable types must be undefined
54
+ if (!childJit?.code) return {code: undefined, type: 'E'};
55
+ if (this.isRest()) return childJit;
56
+ return this.isOptional() ? {code: `(${comp.getChildVλl()} === undefined || (${childJit.code}))`, type: 'E'} : childJit;
57
+ }
58
+ emitTypeErrors(comp: JitErrorsFnCompiler): JitCode {
59
+ const child = this.getJitChild(comp);
60
+ const skipChild = child?.skipJit(comp);
61
+ const childJit = comp.compileTypeErrors(child, 'S');
62
+ const isNonSerializable = skipChild || (!childJit?.code && !child);
63
+ if (isNonSerializable)
64
+ return {
65
+ code: `if (${comp.getChildVλl()} !== undefined) ${comp.callJitErrWithPath('undefined', this.getChildIndex(comp))}`,
66
+ type: 'S',
67
+ }; // non serializable types must be undefined
68
+ if (!childJit?.code) return {code: undefined, type: 'S'};
69
+ if (this.isRest()) return childJit;
70
+ return this.isOptional() ? {code: `if (${comp.getChildVλl()} !== undefined) {${childJit.code}}`, type: 'S'} : childJit;
71
+ }
72
+ emitPrepareForJson(comp: JitFnCompiler): JitCode {
73
+ const child = this.getJitChild(comp);
74
+ const childJit = comp.compilePrepareForJson(child, 'S');
75
+ const optionalCode = `if (${comp.getChildVλl()} === undefined ) {if (${comp.vλl}.length > ${this.getChildIndex(comp)}) ${comp.getChildVλl()} = null}`;
76
+ if (!child || !childJit?.code) return this.isOptional() ? {code: optionalCode, type: 'S'} : {code: undefined, type: 'S'};
77
+ const isExpression = childIsExpression(childJit, child);
78
+ const code = isExpression ? `${comp.getChildVλl()} = ${childJit.code};` : childJit.code || '';
79
+ return this.isOptional() ? {code: `${optionalCode} else {${code}}`, type: 'S'} : {code, type: 'S'};
80
+ }
81
+ emitRestoreFromJson(comp: JitFnCompiler): JitCode {
82
+ if (!this.getJitChild(comp)) return {code: `${comp.getChildVλl()} = undefined;`, type: 'S'}; // non serializable are restored to undefined
83
+ const child = this.getJitChild(comp);
84
+ const childJit = comp.compileRestoreFromJson(child, 'S');
85
+ const optionalCOde = `if (${comp.getChildVλl()} === null ) {${comp.getChildVλl()} = undefined}`;
86
+ if (!child || !childJit?.code) return this.isOptional() ? {code: optionalCOde, type: 'S'} : {code: undefined, type: 'S'};
87
+ const isExpression = childIsExpression(childJit, child);
88
+ const code = isExpression ? `${comp.getChildVλl()} = ${childJit.code};` : childJit.code || '';
89
+ return this.isOptional()
90
+ ? {code: `${optionalCOde} else if (${comp.getChildVλl()} !== undefined) {${code}}`, type: 'S'}
91
+ : {code, type: 'S'};
92
+ }
93
+ }
@@ -0,0 +1,153 @@
1
+ /* ########
2
+ * 2024 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+ import type {JitCode} from '../../types.ts';
8
+ import {ClassRunType} from '../collection/class.ts';
9
+ import {JitFnCompiler, JitErrorsFnCompiler} from '../../lib/jitFnCompiler.ts';
10
+ import {BaseRunType} from '../../lib/baseRunTypes.ts';
11
+
12
+ // This is the base class for all iterable run types, like SetRunType and MapRunType
13
+ export abstract class IterableRunType extends ClassRunType {
14
+ abstract children: BaseRunType[];
15
+ abstract constructorName: string;
16
+ getIndexVarName(comp: JitFnCompiler): string {
17
+ return comp.getLocalVarName('e', this);
18
+ }
19
+ getChildRunTypes = (): BaseRunType[] => {
20
+ return this.children;
21
+ };
22
+ emitIsType(comp: JitFnCompiler): JitCode {
23
+ const entry = this.getCustomVλl(comp)?.vλl || comp.vλl;
24
+ const childrenCode = this.getJitChildren(comp)
25
+ .map((c) => `if (!(${comp.compileIsType(c, 'E').code})) return false`)
26
+ .join(';');
27
+ return {
28
+ code: `
29
+ if (!(${comp.vλl} instanceof ${this.constructorName})) return false;
30
+ for (const ${entry} of ${comp.vλl}) {${childrenCode}} return true;
31
+ `,
32
+ type: 'RB',
33
+ };
34
+ }
35
+ emitTypeErrors(comp: JitErrorsFnCompiler): JitCode {
36
+ const entry = this.getCustomVλl(comp)?.vλl || comp.vλl;
37
+ const childrenCode = this.getJitChildren(comp)
38
+ .map((c) => comp.compileTypeErrors(c, 'S').code)
39
+ .join(';');
40
+ const index = this.getIndexVarName(comp);
41
+ return {
42
+ code: `
43
+ if (!(${comp.vλl} instanceof ${this.constructorName})){${comp.callJitErr(this)}}
44
+ else {let ${index} = 0;for (const ${entry} of ${comp.vλl}) {${childrenCode}; ${index}++}}
45
+ `,
46
+ type: 'S',
47
+ };
48
+ }
49
+ emitPrepareForJson(comp: JitFnCompiler): JitCode {
50
+ const entry = this.getCustomVλl(comp)?.vλl || comp.vλl;
51
+ const resName = comp.getLocalVarName('ml', this);
52
+ const childrenCode = this.getJitChildren(comp)
53
+ .map((c) => comp.compilePrepareForJson(c, 'S').code)
54
+ .filter(Boolean)
55
+ .join(';');
56
+ if (!childrenCode) return {code: `${comp.vλl} = Array.from(${comp.vλl})`, type: 'S'};
57
+ return {
58
+ code: `
59
+ const ${resName} = [];
60
+ for (let ${entry} of ${comp.vλl}) {${childrenCode} ${resName}.push(${entry})}
61
+ ${comp.vλl} = ${resName};
62
+ `,
63
+ type: 'S',
64
+ };
65
+ }
66
+ emitRestoreFromJson(comp: JitFnCompiler): JitCode {
67
+ const children = this.getJitChildren(comp);
68
+ if (!children.length) return {code: `${comp.vλl} = new Map(${comp.vλl})`, type: 'S'};
69
+ const index = this.getCustomVλl(comp)?.vλl || comp.vλl;
70
+ const childrenCode = children
71
+ .map((c) => comp.compileRestoreFromJson(c, 'S').code)
72
+ .filter(Boolean)
73
+ .join(';');
74
+ if (!childrenCode) return {code: `${comp.vλl} = new ${this.constructorName}(${comp.vλl})`, type: 'S'};
75
+ return {
76
+ code: `
77
+ for (let ${index} = 0; ${index} < ${comp.vλl}.length; ${index}++) {${childrenCode}}
78
+ ${comp.vλl} = new ${this.constructorName}(${comp.vλl})
79
+ `,
80
+ type: 'S',
81
+ };
82
+ }
83
+
84
+ // TODO: Implement the following methods, should just call same compile method for children, look into to array run type
85
+
86
+ emitHasUnknownKeys(comp: JitFnCompiler): JitCode {
87
+ const childrenCode = this.getJitChildren(comp)
88
+ .map((child) => {
89
+ const itemJit = comp.compileHasUnknownKeys(child, 'E');
90
+ return itemJit?.code ? `if (${itemJit.code}) return true;` : '';
91
+ })
92
+ .filter(Boolean)
93
+ .join('');
94
+ if (!childrenCode) return {code: 'return false', type: 'RB'};
95
+ const entry = this.getCustomVλl(comp)?.vλl || comp.vλl;
96
+ return {
97
+ code: `
98
+ if (!(${comp.vλl} instanceof ${this.constructorName})) return false;
99
+ for (const ${entry} of ${comp.vλl}) {${childrenCode}} return false;
100
+ `,
101
+ type: 'RB',
102
+ };
103
+ }
104
+
105
+ emitUnknownKeyErrors(comp: JitErrorsFnCompiler): JitCode {
106
+ const childrenCode = this.getJitChildren(comp)
107
+ .map((child) => comp.compileUnknownKeyErrors(child, 'S').code)
108
+ .filter(Boolean)
109
+ .join(';');
110
+ if (!childrenCode) return {code: undefined, type: 'S'};
111
+ const entry = this.getCustomVλl(comp)?.vλl || comp.vλl;
112
+ const index = this.getIndexVarName(comp);
113
+ return {
114
+ code: `
115
+ if (!(${comp.vλl} instanceof ${this.constructorName})) return;
116
+ let ${index} = 0; for (const ${entry} of ${comp.vλl}) {${childrenCode}; ${index}++}
117
+ `,
118
+ type: 'S',
119
+ };
120
+ }
121
+
122
+ emitStripUnknownKeys(comp: JitFnCompiler): JitCode {
123
+ const childrenCode = this.getJitChildren(comp)
124
+ .map((child) => comp.compileStripUnknownKeys(child, 'S').code)
125
+ .filter(Boolean)
126
+ .join(';');
127
+ if (!childrenCode) return {code: undefined, type: 'S'};
128
+ const entry = this.getCustomVλl(comp)?.vλl || comp.vλl;
129
+ return {
130
+ code: `
131
+ if (!(${comp.vλl} instanceof ${this.constructorName})) return;
132
+ for (const ${entry} of ${comp.vλl}) {${childrenCode}}
133
+ `,
134
+ type: 'S',
135
+ };
136
+ }
137
+
138
+ emitUnknownKeysToUndefined(comp: JitFnCompiler): JitCode {
139
+ const childrenCode = this.getJitChildren(comp)
140
+ .map((child) => comp.compileUnknownKeysToUndefined(child, 'S').code)
141
+ .filter(Boolean)
142
+ .join(';');
143
+ if (!childrenCode) return {code: undefined, type: 'S'};
144
+ const entry = this.getCustomVλl(comp)?.vλl || comp.vλl;
145
+ return {
146
+ code: `
147
+ if (!(${comp.vλl} instanceof ${this.constructorName})) return;
148
+ for (const ${entry} of ${comp.vλl}) {${childrenCode}}
149
+ `,
150
+ type: 'S',
151
+ };
152
+ }
153
+ }
@@ -0,0 +1,91 @@
1
+ /* ########
2
+ * 2024 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+ import type {SrcType} from '../../types.ts';
8
+ import {GenericMemberRunType} from '../member/genericMember.ts';
9
+ import {ReflectionSubKind} from '../../constants.kind.ts';
10
+ import {ReflectionKind, TypeClass} from '@deepkit/type';
11
+ import {IterableRunType} from './Iterable.ts';
12
+ import {JitFunctions} from '../../constants.functions.ts';
13
+ import type {JitFnCompiler} from '../../lib/jitFnCompiler.ts';
14
+ import {cpf_safeIterableKey} from '../../run-types-pure-fns.ts';
15
+
16
+ export class MapRunType extends IterableRunType {
17
+ keyRT = new MapKeyRunType();
18
+ valueRT = new MapValueRunType();
19
+ children = [this.keyRT, this.valueRT];
20
+ constructorName = 'Map';
21
+ onCreated(src: SrcType<TypeClass>): void {
22
+ const types = src.arguments;
23
+ if (!types || types.length !== 2) throw new Error(`Map expects 2 type arguments: ie: Map<string, number>`);
24
+ super.onCreated(src);
25
+ this.keyRT.onCreated({
26
+ kind: ReflectionKind.parameter,
27
+ parent: src,
28
+ type: types[0],
29
+ subKind: ReflectionSubKind.mapKey,
30
+ });
31
+ this.valueRT.onCreated({
32
+ kind: ReflectionKind.parameter,
33
+ parent: src,
34
+ type: types[1],
35
+ subKind: ReflectionSubKind.mapValue,
36
+ });
37
+ }
38
+ getCustomVλl(comp: JitFnCompiler) {
39
+ // restoreFromJson is decoding a regular array so no need to use an special case for vλl as other operations
40
+ if (comp.fnID === JitFunctions.restoreFromJson.id)
41
+ return {vλl: comp.getLocalVarName('it', this), isStandalone: false, useArrayAccessor: true};
42
+ // other operations use an special case for vλl where all parents are skipped
43
+ return {vλl: comp.getLocalVarName('it', this), isStandalone: true};
44
+ }
45
+ getMapKeyVλl(comp: JitFnCompiler) {
46
+ return comp.getLocalVarName('mpk', this);
47
+ }
48
+ getMapValueVλl(comp: JitFnCompiler) {
49
+ return comp.getLocalVarName('mpV', this);
50
+ }
51
+ }
52
+
53
+ class MapKeyRunType extends GenericMemberRunType<any> {
54
+ index = 0;
55
+ getStaticPathLiteral(comp: JitFnCompiler): string | number {
56
+ const parent = this.getParent()! as MapRunType;
57
+ const custom = parent.getCustomVλl(comp)!;
58
+ const safeKeyFn = comp.addPureFunction(cpf_safeIterableKey);
59
+ return `{key:${safeKeyFn}(${custom.vλl}[0]),index:${parent.getIndexVarName(comp)},failed:'mapKey'}`;
60
+ }
61
+ getCustomVλl(comp: JitFnCompiler) {
62
+ // temp variable to assign mapKey
63
+ if (comp.fnID === JitFunctions.fromBinary.id)
64
+ return {
65
+ vλl: (this.getParent()! as MapRunType).getMapKeyVλl(comp),
66
+ isStandalone: true,
67
+ useArrayAccessor: false,
68
+ };
69
+ return undefined;
70
+ }
71
+ }
72
+
73
+ class MapValueRunType extends GenericMemberRunType<any> {
74
+ index = 1;
75
+ getStaticPathLiteral(comp: JitFnCompiler): string | number {
76
+ const parent = this.getParent()! as MapRunType;
77
+ const custom = parent.getCustomVλl(comp)!;
78
+ const safeKeyFn = comp.addPureFunction(cpf_safeIterableKey);
79
+ return `{key:${safeKeyFn}(${custom.vλl}[0]),index:${parent.getIndexVarName(comp)},failed:'mapVal'}`;
80
+ }
81
+ getCustomVλl(comp: JitFnCompiler) {
82
+ // temp variable to assign mapKey
83
+ if (comp.fnID === JitFunctions.fromBinary.id)
84
+ return {
85
+ vλl: (this.getParent()! as MapRunType).getMapValueVλl(comp),
86
+ isStandalone: true,
87
+ useArrayAccessor: false,
88
+ };
89
+ return undefined;
90
+ }
91
+ }
@@ -0,0 +1,42 @@
1
+ /* ########
2
+ * 2024 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+
8
+ import type {TypeClass, TypeObjectLiteral} from '@deepkit/type';
9
+ import {JitCode} from '../../types.ts';
10
+ import {InterfaceRunType} from '../collection/interface.ts';
11
+
12
+ // Non serializable types might not be Atomic but will be skipped so it doesn't matter
13
+ export class NonSerializableRunType extends InterfaceRunType<TypeObjectLiteral | TypeClass> {
14
+ skipJit() {
15
+ // skip return false so we ensure the compile functions will throw when a NonSerializable type is used
16
+ return false;
17
+ }
18
+ emitIsType(): JitCode {
19
+ throw new Error(`Jit compilation disabled for Non Serializable types.`);
20
+ }
21
+ emitTypeErrors(): JitCode {
22
+ throw new Error(`Jit compilation disabled for Non Serializable types.`);
23
+ }
24
+ emitPrepareForJson(): JitCode {
25
+ throw new Error(`Jit compilation disabled for Non Serializable types.`);
26
+ }
27
+ emitRestoreFromJson(): JitCode {
28
+ throw new Error(`Jit compilation disabled for Non Serializable types.`);
29
+ }
30
+ emitHasUnknownKeys(): JitCode {
31
+ throw new Error(`Jit compilation disabled for Non Serializable types.`);
32
+ }
33
+ emitUnknownKeyErrors(): JitCode {
34
+ throw new Error(`Jit compilation disabled for Non Serializable types.`);
35
+ }
36
+ emitStripUnknownKeys(): JitCode {
37
+ throw new Error(`Jit compilation disabled for Non Serializable types.`);
38
+ }
39
+ emitUnknownKeysToUndefined(): JitCode {
40
+ throw new Error(`Jit compilation disabled for Non Serializable types.`);
41
+ }
42
+ }
@@ -0,0 +1,43 @@
1
+ /* ########
2
+ * 2024 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+ import {type TypePromise} from '@deepkit/type';
8
+ import type {JitCode} from '../../types.ts';
9
+ import {MemberRunType} from '../../lib/baseRunTypes.ts';
10
+ import {JitFunctions} from '../../constants.functions.ts';
11
+ import type {JitFnCompiler} from '../../lib/jitFnCompiler.ts';
12
+
13
+ export class PromiseRunType extends MemberRunType<TypePromise> {
14
+ skipJit(comp: JitFnCompiler): boolean {
15
+ return comp?.fnID !== JitFunctions.toJSCode.id;
16
+ }
17
+ emitIsType(): JitCode {
18
+ throw new Error(`Jit compilation disabled for Non Serializable types.`);
19
+ }
20
+ emitTypeErrors(): JitCode {
21
+ throw new Error(`Jit compilation disabled for Non Serializable types.`);
22
+ }
23
+ emitPrepareForJson(): JitCode {
24
+ throw new Error(`Jit compilation disabled for Non Serializable types.`);
25
+ }
26
+ emitRestoreFromJson(): JitCode {
27
+ throw new Error(`Jit compilation disabled for Non Serializable types.`);
28
+ }
29
+ isOptional(): boolean {
30
+ return false;
31
+ }
32
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
33
+ getChildVarName(comp: JitFnCompiler): string | number {
34
+ return comp.getLocalVarName('p', this);
35
+ }
36
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
37
+ getChildLiteral(comp: JitFnCompiler): string | number {
38
+ return this.getChildVarName(comp);
39
+ }
40
+ useArrayAccessor(): boolean {
41
+ return false;
42
+ }
43
+ }
@@ -0,0 +1,56 @@
1
+ /* ########
2
+ * 2024 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+ import type {SrcType} from '../../types.ts';
8
+ import {ReflectionSubKind} from '../../constants.kind.ts';
9
+ import {ReflectionKind, type TypeClass} from '@deepkit/type';
10
+ import {GenericMemberRunType} from '../member/genericMember.ts';
11
+ import {IterableRunType} from './Iterable.ts';
12
+ import {JitFunctions} from '../../constants.functions.ts';
13
+ import type {JitFnCompiler} from '../../lib/jitFnCompiler.ts';
14
+ import {cpf_safeIterableKey} from '../../run-types-pure-fns.ts';
15
+ export class SetRunType extends IterableRunType {
16
+ keyRT = new SetKeyRunType();
17
+ children = [this.keyRT];
18
+ constructorName = 'Set';
19
+ onCreated(src: SrcType<TypeClass>): void {
20
+ const types = src.arguments;
21
+ if (!types || types.length !== 1) throw new Error(`Set expects 1 type argument: ie: Set<number>`);
22
+ super.onCreated(src);
23
+ this.keyRT.onCreated({
24
+ kind: ReflectionKind.parameter,
25
+ parent: src,
26
+ type: types[0],
27
+ subKind: ReflectionSubKind.setItem,
28
+ });
29
+ }
30
+ getCustomVλl(comp: JitFnCompiler) {
31
+ // restoreFromJson is decoding a regular array so no need to use an special case for vλl as other operations
32
+ if (comp.fnID === JitFunctions.restoreFromJson.id)
33
+ return {vλl: comp.getLocalVarName('it', this), isStandalone: false, useArrayAccessor: true};
34
+ // other operations use an special case for vλl where all parents are skipped
35
+ return {vλl: comp.getLocalVarName('it', this), isStandalone: true};
36
+ }
37
+ }
38
+
39
+ export class SetKeyRunType extends GenericMemberRunType<any> {
40
+ index = 0;
41
+ skipSettingAccessor() {
42
+ return true;
43
+ }
44
+ getStaticPathLiteral(comp: JitFnCompiler): string {
45
+ const parent = this.getParent()! as SetRunType;
46
+ const custom = parent.getCustomVλl(comp)!;
47
+ const safeKeyFn = comp.addPureFunction(cpf_safeIterableKey);
48
+ return `{key:${safeKeyFn}(${custom.vλl}),index:${parent.getIndexVarName(comp)}}`;
49
+ }
50
+ getCustomVλl(comp: JitFnCompiler) {
51
+ if (comp.fnID === JitFunctions.fromBinary.id)
52
+ return {vλl: comp.getLocalVarName('sK', this), isStandalone: true, useArrayAccessor: false};
53
+ // other operations use an special case for vλl where all parents are skipped
54
+ return undefined;
55
+ }
56
+ }
@@ -0,0 +1,116 @@
1
+ /* ########
2
+ * 2025 mion
3
+ * Author: Ma-jerez
4
+ * License: MIT
5
+ * The software is provided "as is", without warranty of any kind.
6
+ * ######## */
7
+ import type {TypeFormatError, StrNumber, RunTypeError} from '@mionjs/core';
8
+ import {registerPureFnFactory} from '@mionjs/core';
9
+
10
+ export const cpf_asJSONString = registerPureFnFactory('mion', 'asJSONString', function () {
11
+ // @ts-expect-error 2867
12
+ if (typeof Bun !== 'undefined') return JSON.stringify; // bun has a faster JSON.stringify
13
+ // eslint-disable-next-line no-control-regex
14
+ const STR_ESCAPE = /[\u0000-\u001f\u0022\u005c\ud800-\udfff]/;
15
+ const MAX_SCAPE_TEST_LENGTH = 1000;
16
+ return function _asJSONStringRegexOnly(str) {
17
+ // Always use regex test for strings >= 42 chars (n o for loop)
18
+ if (str.length < MAX_SCAPE_TEST_LENGTH && STR_ESCAPE.test(str) === false) {
19
+ return '"' + str + '"';
20
+ } else {
21
+ return JSON.stringify(str);
22
+ }
23
+ };
24
+ });
25
+
26
+ export const cpf_getUnknownKeysFromArray = registerPureFnFactory('mion', 'getUnknownKeysFromArray', function () {
27
+ const MAX_UNKNOWN_KEYS = 10;
28
+ return function _getUnknownKeysFromArray(obj: Record<StrNumber, any>, keys: StrNumber[]): StrNumber[] {
29
+ const unknownKeys: StrNumber[] = [];
30
+ for (const prop in obj) {
31
+ let found = false;
32
+ for (let j = 0; j < keys.length; j++) {
33
+ if (keys[j] === prop) {
34
+ found = true;
35
+ break;
36
+ }
37
+ }
38
+ if (!found) {
39
+ unknownKeys.push(prop as string);
40
+ if (unknownKeys.length >= MAX_UNKNOWN_KEYS) throw new Error('Too many unknown keys');
41
+ }
42
+ }
43
+ return unknownKeys;
44
+ };
45
+ });
46
+
47
+ export const cpf_hasUnknownKeysFromArray = registerPureFnFactory('mion', 'hasUnknownKeysFromArray', function () {
48
+ return function _hasUnknownKeysFromArray(obj: Record<StrNumber, any>, keys: StrNumber[]): boolean {
49
+ for (const prop in obj) {
50
+ // iterates over the object keys and if not found prop adds to unknownKeys
51
+ let found = false;
52
+ for (let j = 0; j < keys.length; j++) {
53
+ if (keys[j] === prop) {
54
+ found = true;
55
+ break;
56
+ }
57
+ }
58
+ if (!found) return true;
59
+ }
60
+ return false;
61
+ };
62
+ });
63
+
64
+ export const cpf_newRunTypeErr = registerPureFnFactory('mion', 'newRunTypeErr', function () {
65
+ return function _err(
66
+ pλth: readonly StrNumber[],
67
+ εrr: RunTypeError[],
68
+ expected: string,
69
+ accessPath?: readonly StrNumber[]
70
+ ): void {
71
+ const path = accessPath?.length ? [...pλth, ...accessPath] : [...pλth];
72
+ const runTypeErr: RunTypeError = {expected, path};
73
+ εrr.push(runTypeErr);
74
+ };
75
+ });
76
+
77
+ export const cpf_formatErr = registerPureFnFactory('mion', 'formatErr', function () {
78
+ return function _formatErr(
79
+ pλth: StrNumber[],
80
+ εrr: RunTypeError[],
81
+ expected: string,
82
+ fmtName: string,
83
+ paramName: string,
84
+ paramVal: string | number | boolean | bigint,
85
+ fmtPath: StrNumber[],
86
+ accessPath?: StrNumber[],
87
+ fmtAccessPath?: StrNumber[]
88
+ ): void {
89
+ const path = accessPath?.length ? [...pλth, ...accessPath] : [...pλth];
90
+ const formatPath = fmtAccessPath?.length ? [...fmtPath, ...fmtAccessPath, paramName] : [...fmtPath, paramName];
91
+ const format: TypeFormatError = {name: fmtName, formatPath: formatPath, val: paramVal};
92
+ const runTypeErr: Required<RunTypeError> = {expected, path, format};
93
+ εrr.push(runTypeErr);
94
+ };
95
+ });
96
+
97
+ export const cpf_safeIterableKey = registerPureFnFactory('mion', 'safeIterableKey', function () {
98
+ return function _safeKey(value: any): any {
99
+ if (value === undefined) return null;
100
+ if (value === null) return null;
101
+ const type = typeof value;
102
+ if (type === 'number' || type === 'string' || type === 'boolean') return value;
103
+ return null;
104
+ };
105
+ });
106
+
107
+ /** @reflection never */
108
+ export const cpf_sanitizeCompiledFn = registerPureFnFactory('mion', 'sanitizeCompiledFn', function () {
109
+ const anonymousRegex = /^\s*function\s+anonymous\s*\(/;
110
+ return function sanitizeCompiled(fnCode: string): string {
111
+ if (anonymousRegex.test(fnCode)) {
112
+ return fnCode.replace(anonymousRegex, 'function (');
113
+ }
114
+ return fnCode;
115
+ };
116
+ });