@kalada/core 0.3.0 → 0.4.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 (114) hide show
  1. package/README.md +62 -3
  2. package/dist/kalada-v1/canonical-input.cjs.map +1 -1
  3. package/dist/kalada-v1/canonical-input.d.cts +3 -2
  4. package/dist/kalada-v1/canonical-input.d.ts +3 -2
  5. package/dist/kalada-v1/canonical-input.js.map +1 -1
  6. package/dist/kalada-v1/canonicalize.cjs +16 -1
  7. package/dist/kalada-v1/canonicalize.cjs.map +1 -1
  8. package/dist/kalada-v1/canonicalize.js +16 -1
  9. package/dist/kalada-v1/canonicalize.js.map +1 -1
  10. package/dist/kalada-v1/compile.cjs +13 -4
  11. package/dist/kalada-v1/compile.cjs.map +1 -1
  12. package/dist/kalada-v1/compile.js +14 -5
  13. package/dist/kalada-v1/compile.js.map +1 -1
  14. package/dist/kalada-v1/dependencies.cjs +49 -2
  15. package/dist/kalada-v1/dependencies.cjs.map +1 -1
  16. package/dist/kalada-v1/dependencies.js +49 -2
  17. package/dist/kalada-v1/dependencies.js.map +1 -1
  18. package/dist/kalada-v1/diagnostics.cjs +24 -4
  19. package/dist/kalada-v1/diagnostics.cjs.map +1 -1
  20. package/dist/kalada-v1/diagnostics.d.cts +4 -3
  21. package/dist/kalada-v1/diagnostics.d.ts +4 -3
  22. package/dist/kalada-v1/diagnostics.js +24 -4
  23. package/dist/kalada-v1/diagnostics.js.map +1 -1
  24. package/dist/kalada-v1/evaluate.cjs +10 -139
  25. package/dist/kalada-v1/evaluate.cjs.map +1 -1
  26. package/dist/kalada-v1/evaluate.d.cts +3 -2
  27. package/dist/kalada-v1/evaluate.d.ts +3 -2
  28. package/dist/kalada-v1/evaluate.js +12 -141
  29. package/dist/kalada-v1/evaluate.js.map +1 -1
  30. package/dist/kalada-v1/evaluation-delivery.cjs +286 -0
  31. package/dist/kalada-v1/evaluation-delivery.cjs.map +1 -0
  32. package/dist/kalada-v1/evaluation-delivery.d.cts +13 -0
  33. package/dist/kalada-v1/evaluation-delivery.d.ts +13 -0
  34. package/dist/kalada-v1/evaluation-delivery.js +284 -0
  35. package/dist/kalada-v1/evaluation-delivery.js.map +1 -0
  36. package/dist/kalada-v1/evaluation-frames.cjs +16 -0
  37. package/dist/kalada-v1/evaluation-frames.cjs.map +1 -0
  38. package/dist/kalada-v1/evaluation-frames.d.cts +83 -0
  39. package/dist/kalada-v1/evaluation-frames.d.ts +83 -0
  40. package/dist/kalada-v1/evaluation-frames.js +14 -0
  41. package/dist/kalada-v1/evaluation-frames.js.map +1 -0
  42. package/dist/kalada-v1/evaluation-machine.cjs +226 -0
  43. package/dist/kalada-v1/evaluation-machine.cjs.map +1 -0
  44. package/dist/kalada-v1/evaluation-machine.d.cts +9 -0
  45. package/dist/kalada-v1/evaluation-machine.d.ts +9 -0
  46. package/dist/kalada-v1/evaluation-machine.js +224 -0
  47. package/dist/kalada-v1/evaluation-machine.js.map +1 -0
  48. package/dist/kalada-v1/evaluation-resolution.cjs +80 -0
  49. package/dist/kalada-v1/evaluation-resolution.cjs.map +1 -0
  50. package/dist/kalada-v1/evaluation-resolution.d.cts +11 -0
  51. package/dist/kalada-v1/evaluation-resolution.d.ts +11 -0
  52. package/dist/kalada-v1/evaluation-resolution.js +78 -0
  53. package/dist/kalada-v1/evaluation-resolution.js.map +1 -0
  54. package/dist/kalada-v1/evaluation-state.cjs +94 -0
  55. package/dist/kalada-v1/evaluation-state.cjs.map +1 -0
  56. package/dist/kalada-v1/evaluation-state.d.cts +38 -0
  57. package/dist/kalada-v1/evaluation-state.d.ts +38 -0
  58. package/dist/kalada-v1/evaluation-state.js +81 -0
  59. package/dist/kalada-v1/evaluation-state.js.map +1 -0
  60. package/dist/kalada-v1/factories.cjs +28 -0
  61. package/dist/kalada-v1/factories.cjs.map +1 -1
  62. package/dist/kalada-v1/factories.d.cts +16 -1
  63. package/dist/kalada-v1/factories.d.ts +16 -1
  64. package/dist/kalada-v1/factories.js +28 -0
  65. package/dist/kalada-v1/factories.js.map +1 -1
  66. package/dist/kalada-v1/function-contracts.cjs +150 -0
  67. package/dist/kalada-v1/function-contracts.cjs.map +1 -0
  68. package/dist/kalada-v1/function-contracts.d.cts +15 -0
  69. package/dist/kalada-v1/function-contracts.d.ts +15 -0
  70. package/dist/kalada-v1/function-contracts.js +144 -0
  71. package/dist/kalada-v1/function-contracts.js.map +1 -0
  72. package/dist/kalada-v1/index.cjs +13 -0
  73. package/dist/kalada-v1/index.d.cts +4 -3
  74. package/dist/kalada-v1/index.d.ts +4 -3
  75. package/dist/kalada-v1/index.js +3 -2
  76. package/dist/kalada-v1/limits.cjs +23 -2
  77. package/dist/kalada-v1/limits.cjs.map +1 -1
  78. package/dist/kalada-v1/limits.d.cts +5 -3
  79. package/dist/kalada-v1/limits.d.ts +5 -3
  80. package/dist/kalada-v1/limits.js +23 -3
  81. package/dist/kalada-v1/limits.js.map +1 -1
  82. package/dist/kalada-v1/runtime-values.cjs +112 -0
  83. package/dist/kalada-v1/runtime-values.cjs.map +1 -0
  84. package/dist/kalada-v1/runtime-values.d.cts +35 -0
  85. package/dist/kalada-v1/runtime-values.d.ts +35 -0
  86. package/dist/kalada-v1/runtime-values.js +105 -0
  87. package/dist/kalada-v1/runtime-values.js.map +1 -0
  88. package/dist/kalada-v1/schemas.cjs +107 -2
  89. package/dist/kalada-v1/schemas.cjs.map +1 -1
  90. package/dist/kalada-v1/schemas.d.cts +2 -1
  91. package/dist/kalada-v1/schemas.d.ts +2 -1
  92. package/dist/kalada-v1/schemas.js +108 -4
  93. package/dist/kalada-v1/schemas.js.map +1 -1
  94. package/dist/kalada-v1/static-analysis.cjs +177 -0
  95. package/dist/kalada-v1/static-analysis.cjs.map +1 -0
  96. package/dist/kalada-v1/static-analysis.d.cts +9 -0
  97. package/dist/kalada-v1/static-analysis.d.ts +9 -0
  98. package/dist/kalada-v1/static-analysis.js +175 -0
  99. package/dist/kalada-v1/static-analysis.js.map +1 -0
  100. package/dist/kalada-v1/static-types.cjs +229 -0
  101. package/dist/kalada-v1/static-types.cjs.map +1 -0
  102. package/dist/kalada-v1/static-types.d.cts +8 -0
  103. package/dist/kalada-v1/static-types.d.ts +8 -0
  104. package/dist/kalada-v1/static-types.js +227 -0
  105. package/dist/kalada-v1/static-types.js.map +1 -0
  106. package/dist/kalada-v1/temporal-evaluation.cjs +21 -0
  107. package/dist/kalada-v1/temporal-evaluation.cjs.map +1 -1
  108. package/dist/kalada-v1/temporal-evaluation.d.cts +7 -2
  109. package/dist/kalada-v1/temporal-evaluation.d.ts +7 -2
  110. package/dist/kalada-v1/temporal-evaluation.js +20 -1
  111. package/dist/kalada-v1/temporal-evaluation.js.map +1 -1
  112. package/dist/kalada-v1/types.d.cts +78 -4
  113. package/dist/kalada-v1/types.d.ts +78 -4
  114. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/kalada-v1/evaluation-delivery.ts"],"names":["arm"],"mappings":";;;;;;;;AAyBO,SAAS,aAAkC,KAAA,EAA8B;AAC9E,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA,CAAM,KAAA,CAAM,KAAA,CAAM,SAAS,CAAC,CAAA;AAChD,EAAA,QAAQ,MAAM,IAAA;AAAM,IAClB,KAAK,SAAA;AACH,MAAA,cAAA,CAAe,OAAO,KAAK,CAAA;AAC3B,MAAA;AAAA,IACF,KAAK,aAAA;AACH,MAAA,kBAAA,CAAmB,OAAO,KAAK,CAAA;AAC/B,MAAA;AAAA,IACF,KAAK,OAAA;AACH,MAAA,YAAA,CAAa,OAAO,KAAK,CAAA;AACzB,MAAA;AAAA,IACF,KAAK,iBAAA;AACH,MAAA,eAAA,CAAgB,OAAO,KAAK,CAAA;AAC5B,MAAA;AAAA,IACF,KAAK,qBAAA;AACH,MAAA,OAAA,CAAQ,KAAA,CAAM,OAAO,KAAK,CAAA;AAC1B,MAAA;AAAA,IACF,KAAK,aAAA;AACH,MAAA,aAAA,CAAc,OAAO,KAAK,CAAA;AAC1B,MAAA;AAAA,IACF,KAAK,gBAAA;AACH,MAAA,eAAA,CAAgB,OAAO,KAAK,CAAA;AAC5B,MAAA;AAAA,IACF,KAAK,aAAA;AACH,MAAA,aAAA,CAAc,OAAO,KAAK,CAAA;AAC1B,MAAA;AAAA,IACF,KAAK,gBAAA;AACH,MAAA,mBAAA,CAAoB,OAAO,KAAK,CAAA;AAChC,MAAA;AAAA;AAEN;AAEA,SAAS,cAAA,CACP,OACA,KAAA,EACM;AACN,EAAA,IAAI,KAAA,CAAM,UAAU,MAAA,EAAQ;AAC1B,IAAA,OAAA,CAAQ,KAAA,CAAM,OAAO,KAAK,CAAA;AAC1B,IAAA;AAAA,EACF;AACA,EAAA,KAAA,CAAM,KAAA,GAAQ,MAAA;AACd,EAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,KAAA,CAAM,WAAW,CAAA;AACxC,EAAA,MAAA,CAAO,GAAA,CAAI,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,KAAqB,CAAA;AAClD,EAAA,QAAA,CAAS,KAAA,CAAM,MAAM,CAAC,GAAG,MAAM,IAAA,EAAM,MAAM,CAAA,EAAG,MAAA,EAAQ,KAAK,CAAA;AAC7D;AAEA,SAAS,kBAAA,CACP,OACA,KAAA,EACM;AACN,EAAA,KAAA,CAAM,MAAM,GAAA,EAAI;AAChB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,IAAI,UAAA,CAAW,KAAK,CAAA,EAAG,IAAA,CAAK,wBAAA,EAA0B,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,OAAO,CAAC,CAAA;AAC9E,EAAA,IAAI,KAAA,CAAM,SAAS,QAAA,EAAU,OAAA,CAAQ,OAAO,IAAA,CAAK,KAAK,GAAG,KAAK,CAAA;AAAA,OACzD,OAAA,CAAQ,KAAA,CAAM,OAAA,KAAY,IAAA,GAAO,MAAA,CAAO,EAAA,CAAG,KAAK,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA,EAAG,KAAK,CAAA;AACnF;AAEA,SAAS,YAAA,CACP,OACA,KAAA,EACM;AACN,EAAA,IAAI,KAAA,CAAM,UAAU,KAAA,EAAO;AACzB,IAAA,OAAA,CAAQ,KAAA,CAAM,OAAO,KAAK,CAAA;AAC1B,IAAA;AAAA,EACF;AACA,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,MAAM,KAAA,GAAQ,CAAC,UAAA,CAAW,KAAK,CAAA,KAAM,KAAA,CAAM,IAAA,KAAS,QAAA,GAAW,QAAA,CAAS,KAAK,CAAA,GAAI,QAAA,CAAS,KAAK,CAAA,CAAA;AAC/F,EAAA,IAAI,CAAC,OAAO,IAAA,CAAK,4BAAA,EAA8B,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,OAAO,CAAC,CAAA;AACvE,EAAA,MAAM,UAAW,KAAA,CAAwE,OAAA;AACzF,EAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,SAAA,CAAU,CAACA,IAAAA,KAAQA,IAAAA,CAAI,YAAY,OAAO,CAAA;AACnE,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA;AAC5B,EAAA,IAAI,CAAC,KAAK,IAAA,CAAK,sBAAA,EAAwB,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,MAAM,CAAC,CAAA;AAC9D,EAAA,KAAA,CAAM,KAAA,GAAQ,KAAA;AACd,EAAA,KAAA,CAAM,SAAA,GAAY,KAAA;AAClB,EAAA,KAAA,CAAM,QAAA,GAAW,KAAA;AACjB,EAAA,QAAA;AAAA,IACE,GAAA,CAAI,IAAA;AAAA,IACJ,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,MAAA,EAAQ,OAAO,MAAM,CAAA;AAAA,IACrC,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,GAAA,CAAI,SAAS,KAAK,CAAA;AAAA,IACvC;AAAA,GACF;AACF;AAEA,SAAS,OAAA,CACP,WAAA,EACA,IAAA,EACA,KAAA,EACoB;AACpB,EAAA,IAAI,CAAC,QAAQ,UAAA,CAAW,KAAK,KAAM,QAAA,CAAS,KAAK,CAAA,IAAK,KAAA,CAAM,OAAA,KAAY,MAAA;AACtE,IAAA,OAAO,WAAA;AACT,EAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,WAAW,CAAA;AAClC,EAAA,IAAI,QAAA,CAAS,KAAK,CAAA,IAAK,QAAA,CAAS,KAAK,GAAG,MAAA,CAAO,GAAA,CAAI,IAAA,EAAM,KAAA,CAAM,KAAK,CAAA;AACpE,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,eAAA,CACP,OACA,KAAA,EACM;AACN,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,IAAI,UAAA,CAAW,KAAK,CAAA,IAAM,CAAC,SAAA,CAAU,KAAK,CAAA,IAAK,CAAC,UAAA,CAAW,KAAK,CAAA,EAAI;AAClE,IAAA,IAAA,CAAK,iCAAiC,CAAC,GAAG,MAAM,IAAA,EAAM,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,EACpE;AACA,EAAA,IAAI,KAAA,CAAM,UAAU,MAAA,EAAQ;AAC1B,IAAA,KAAA,CAAM,KAAA,GAAQ,OAAA;AACd,IAAA,KAAA,CAAM,IAAA,GAAO,KAAA;AACb,IAAA,QAAA,CAAS,KAAA,CAAM,KAAA,EAAO,CAAC,GAAG,KAAA,CAAM,MAAM,OAAO,CAAA,EAAG,KAAA,CAAM,WAAA,EAAa,KAAK,CAAA;AACxE,IAAA;AAAA,EACF;AACA,EAAA,KAAA,CAAM,MAAM,GAAA,EAAI;AAChB,EAAA,MAAM,MAAA,GAAS,mBAAA;AAAA,IACb,KAAA,CAAM,cAAA;AAAA,IACN,KAAA,CAAM,QAAA;AAAA,IACN,KAAA,CAAM,IAAA;AAAA,IACN,KAAA;AAAA,IACA,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,OAAO;AAAA,GACzB;AACA,EAAA,OAAA,CAAQ,QAAQ,KAAK,CAAA;AACvB;AAEA,SAAS,aAAA,CACP,OACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,QAAQ,GAAG,KAAK,CAAA;AACvC,EAAA,KAAA,CAAM,MAAM,GAAA,EAAI;AAChB,EAAA,MAAM,WAAW,KAAA,CAAM,KAAA;AACvB,EAAA,IAAI,CAAC,UAAA,CAAW,QAAQ,CAAA,EAAG,IAAA,CAAK,qBAAA,EAAuB,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAC,CAAA;AAChF,EAAA,MAAM,WAAW,QAAA,CAAS,QAAA,KAAa,MAAA,GAAS,QAAA,CAAS,WAAW,MAAA,GAAS,CAAA;AAC7E,EAAA,IAAI,KAAA,CAAM,UAAU,MAAA,KAAW,QAAA;AAC7B,IAAA,IAAA,CAAK,yBAAyB,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,WAAW,CAAC,CAAA;AAC5D,EAAA,IAAI,KAAA,CAAM,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG;AAChC,IAAA,QAAA,CAAS,QAAA,EAAU,EAAC,EAAG,KAAA,CAAM,MAAM,KAAK,CAAA;AACxC,IAAA;AAAA,EACF;AACA,EAAA,IAAA;AAAA,IACE;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,KAAA,EAAO,UAAA;AAAA,MACP,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,QAAA;AAAA,MACA,WAAW,KAAA,CAAM,SAAA;AAAA,MACjB,QAAQ,EAAC;AAAA,MACT,KAAA,EAAO;AAAA,KACT;AAAA,IACA,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,WAAW,CAAA;AAAA,IAC3B;AAAA,GACF;AACA,EAAA,QAAA;AAAA,IACE,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,IACjB,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,aAAa,CAAC,CAAA;AAAA,IAC9B,KAAA,CAAM,WAAA;AAAA,IACN;AAAA,GACF;AACF;AAEA,SAAS,eAAA,CACP,OACA,KAAA,EACM;AACN,EAAA,MAAM,OAAO,CAAC,GAAG,MAAM,IAAA,EAAM,WAAA,EAAa,MAAM,KAAK,CAAA;AACrD,EAAA,MAAA,CAAO,MAAM,KAAK,CAAA;AAClB,EAAA,MAAM,WAAW,KAAA,CAAM,QAAA;AACvB,EAAA,IAAI,CAAC,UAAA,CAAW,QAAQ,CAAA,EAAG,IAAA,CAAK,qBAAA,EAAuB,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAC,CAAA;AAChF,EAAA,MAAM,OAAO,YAAA,CAAa,QAAQ,CAAA,CAAE,UAAA,CAAW,MAAM,KAAK,CAAA;AAC1D,EAAA,IAAI,IAAA,IAAQ,CAAC,WAAA,CAAY,KAAA,CAAM,OAAuB,IAAI,CAAA;AACxD,IAAA,IAAA,CAAK,iCAAiC,IAAI,CAAA;AAC5C,EAAA,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,KAAqB,CAAA;AAC7C,EAAA,KAAA,CAAM,KAAA,IAAS,CAAA;AACf,EAAA,IAAI,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,SAAA,CAAU,MAAA,EAAQ;AACxC,IAAA,QAAA;AAAA,MACE,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,KAAK,CAAA;AAAA,MAC3B,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,WAAA,EAAa,MAAM,KAAK,CAAA;AAAA,MACxC,KAAA,CAAM,WAAA;AAAA,MACN;AAAA,KACF;AACA,IAAA;AAAA,EACF;AACA,EAAA,KAAA,CAAM,MAAM,GAAA,EAAI;AAChB,EAAA,QAAA,CAAS,QAAA,EAAU,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,MAAM,KAAK,CAAA;AACpD;AAEA,SAAS,QAAA,CACP,QAAA,EACA,MAAA,EACA,IAAA,EACA,KAAA,EACM;AACN,EAAA,IAAI,CAAC,UAAA,CAAW,QAAQ,CAAA,EAAG,IAAA,CAAK,uBAAuB,CAAC,GAAG,IAAA,EAAM,QAAQ,CAAC,CAAA;AAC1E,EAAA,IAAI,QAAA,CAAS,aAAa,MAAA,EAAQ;AAChC,IAAA,YAAA,CAAa,QAAA,CAAS,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,KAAK,CAAA;AAC/C,IAAA;AAAA,EACF;AACA,EAAA,YAAA,CAAa,QAAA,EAA4B,MAAA,EAAQ,IAAA,EAAM,KAAK,CAAA;AAC9D;AAEA,SAAS,YAAA,CACP,OAAA,EACA,MAAA,EACA,IAAA,EACA,KAAA,EACM;AACN,EAAA,IAAI,MAAM,SAAA,IAAa,KAAA,CAAM,OAAO,YAAA,EAAc,IAAA,CAAK,2BAA2B,IAAI,CAAA;AACtF,EAAA,cAAA,CAAe,MAAM,KAAK,CAAA;AAC1B,EAAA,MAAA,CAAO,MAAM,KAAK,CAAA;AAClB,EAAA,KAAA,CAAM,SAAA,IAAa,CAAA;AACnB,EAAA,KAAA,CAAM,MAAM,IAAA,CAAK;AAAA,IACf,IAAA,EAAM,aAAA;AAAA,IACN,KAAA,EAAO,MAAA;AAAA,IACP,IAAA;AAAA,IACA,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,SAAS,OAAA,CAAQ,OAAA;AAAA,IACjB,QAAQ,KAAA,CAAM;AAAA,GACf,CAAA;AACD,EAAA,QAAA,CAAS,OAAA,CAAQ,IAAA,EAAM,CAAC,GAAG,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA,EAAG,mBAAA,CAAoB,OAAA,EAAS,MAAM,CAAA,EAAG,KAAK,CAAA;AAC/F;AAEA,SAAS,YAAA,CACP,QAAA,EACA,MAAA,EACA,IAAA,EACA,KAAA,EACM;AACN,EAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AACtB,EAAA,IAAI,KAAA,CAAM,MAAA,GAAS,KAAA,CAAM,MAAA,CAAO,mBAAA,EAAqB;AACnD,IAAA,IAAA,CAAK,2BAA2B,CAAC,GAAG,IAAA,EAAM,WAAA,EAAa,CAAC,CAAC,CAAA;AAAA,EAC3D;AACA,EAAA,IAAI,MAAM,SAAA,IAAa,KAAA,CAAM,OAAO,YAAA,EAAc,IAAA,CAAK,2BAA2B,IAAI,CAAA;AACtF,EAAA,cAAA,CAAe,MAAM,KAAK,CAAA;AAC1B,EAAA,MAAA,CAAO,MAAM,KAAK,CAAA;AAClB,EAAA,KAAA,CAAM,SAAA,IAAa,CAAA;AACnB,EAAA,MAAM,KAAA,GAAiE;AAAA,IACrE,IAAA,EAAM,gBAAA;AAAA,IACN,KAAA,EAAO,OAAA;AAAA,IACP,IAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA,EAAU,OAAO,CAAC,CAAA;AAAA,IAClB,KAAA;AAAA,IACA,KAAA,EAAO,CAAA;AAAA,IACP,SAAS,QAAA,KAAa,MAAA,GAAS,QAAQ,QAAA,KAAa,OAAA,GAAU,OAAO;AAAC,GACxE;AACA,EAAA,KAAA,CAAM,KAAA,CAAM,KAAK,KAAK,CAAA;AACtB,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,UAAA,CAAW,OAAO,KAAK,CAAA;AAAA,OAC1C,oBAAA,CAAqB,OAAO,KAAK,CAAA;AACxC;AAEA,SAAS,oBAAA,CACP,OACA,KAAA,EACM;AACN,EAAA,KAAA,CAAM,KAAA,GAAQ,UAAA;AACd,EAAA,0BAAA,CAA2B,KAAA,CAAM,MAAM,KAAK,CAAA;AAC5C,EAAA,QAAA;AAAA,IACE,KAAA,CAAM,QAAA;AAAA,IACN,CAAC,KAAA,CAAM,KAAA,CAAM,MAAM,KAAK,CAAA,EAAgB,MAAM,KAAK,CAAA;AAAA,IACnD,CAAC,GAAG,KAAA,CAAM,IAAA,EAAM,aAAa,CAAC,CAAA;AAAA,IAC9B;AAAA,GACF;AACF;AAEA,SAAS,mBAAA,CACP,OACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,KAAA,CAAM,MAAM,KAAK,CAAA;AACxB,EAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,EAAA,kBAAA,CAAmB,OAAO,KAAK,CAAA;AAC/B,EAAA,gBAAA,CAAiB,OAAO,KAA4B,CAAA;AACpD,EAAA,IAAI,YAAA,CAAa,KAAA,EAAO,KAAK,CAAA,EAAG;AAC9B,IAAA,UAAA,CAAW,OAAO,KAAK,CAAA;AACvB,IAAA;AAAA,EACF;AACA,EAAA,KAAA,CAAM,KAAA,IAAS,CAAA;AACf,EAAA,IAAI,MAAM,KAAA,KAAU,KAAA,CAAM,MAAM,MAAA,EAAQ,UAAA,CAAW,OAAO,KAAK,CAAA;AAAA,OAC1D,oBAAA,CAAqB,OAAO,KAAK,CAAA;AACxC;AAEA,SAAS,kBAAA,CACP,OACA,KAAA,EACM;AACN,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,IAAA,EAAM,gBAAA;AAAA,IACN,IAAA,EAAM,KAAA,CAAM,QAAA,KAAa,KAAA,GAAQ,MAAA,GAAS;AAAA,GAC5C;AACA,EAAA,IAAI,CAAC,WAAA,CAAY,KAAA,EAAO,QAAQ,CAAA,EAAG;AACjC,IAAA,IAAA,CAAK,mCAAmC,CAAC,GAAG,MAAM,IAAA,EAAM,WAAA,EAAa,CAAC,CAAC,CAAA;AAAA,EACzE;AACF;AAEA,SAAS,gBAAA,CACP,OACA,KAAA,EACM;AACN,EAAA,IAAI,MAAM,QAAA,KAAa,KAAA,EAAQ,KAAA,CAAM,OAAA,CAAwB,KAAK,KAAkB,CAAA;AACpF,EAAA,IAAI,KAAA,CAAM,QAAA,KAAa,QAAA,IAAY,KAAA,EAAO;AACxC,IAAC,MAAM,OAAA,CAAwB,IAAA,CAAK,MAAM,KAAA,CAAM,KAAA,CAAM,KAAK,CAAc,CAAA;AAAA,EAC3E;AACA,EAAA,IAAI,KAAA,CAAM,QAAA,KAAa,MAAA,IAAU,KAAA,QAAa,OAAA,GAAU,IAAA;AACxD,EAAA,IAAI,MAAM,QAAA,KAAa,OAAA,IAAW,CAAC,KAAA,QAAa,OAAA,GAAU,KAAA;AAC5D;AAEA,SAAS,YAAA,CACP,OACA,KAAA,EACS;AACT,EAAA,OACG,KAAA,CAAM,aAAa,MAAA,IAAU,KAAA,KAAU,QAAU,KAAA,CAAM,QAAA,KAAa,WAAW,KAAA,KAAU,KAAA;AAE9F;AAEA,SAAS,UAAA,CACP,OACA,KAAA,EACM;AACN,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,OAAO,CAAA,GACtC,wBAAA,CAAyB,KAAA,CAAM,OAAA,EAAS,KAAA,CAAM,IAAA,EAAM,KAAK,IACzD,KAAA,CAAM,OAAA;AACV,EAAA,KAAA,CAAM,MAAM,GAAA,EAAI;AAChB,EAAA,KAAA,CAAM,SAAA,IAAa,CAAA;AACnB,EAAA,OAAA,CAAQ,QAAQ,KAAK,CAAA;AACvB;AAEA,SAAS,wBAAA,CACP,MAAA,EACA,IAAA,EACA,KAAA,EACa;AACb,EAAA,IAAI;AACF,IAAA,SAAA,CAAU,MAAA,EAAQ;AAAA,MAChB,QAAA,EAAU,MAAM,MAAA,CAAO,aAAA;AAAA,MACvB,QAAA,EAAU,MAAM,MAAA,CAAO,aAAA;AAAA,MACvB,eAAA,EAAiB,MAAM,MAAA,CAAO;AAAA,KAC/B,CAAA;AAAA,EACH,CAAA,CAAA,MAAQ;AACN,IAAA,IAAA,CAAK,yBAAyB,IAAI,CAAA;AAAA,EACpC;AACA,EAAA,OAAO,MAAA,CAAO,OAAO,MAAM,CAAA;AAC7B;AAEA,SAAS,aAAA,CACP,OACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,KAAA,CAAM,MAAM,KAAK,CAAA;AACxB,EAAA,KAAA,CAAM,MAAM,GAAA,EAAI;AAChB,EAAA,KAAA,CAAM,cAAc,KAAA,CAAM,MAAA;AAC1B,EAAA,KAAA,CAAM,SAAA,IAAa,CAAA;AACnB,EAAA,IAAI,CAAC,WAAA,CAAY,KAAA,CAAM,KAAA,EAAuB,MAAM,OAAO,CAAA;AACzD,IAAA,IAAA,CAAK,+BAAA,EAAiC,MAAM,IAAI,CAAA;AACpD;AAEA,SAAS,OAAA,CACP,aACA,KAAA,EACM;AACN,EAAA,KAAA,CAAM,MAAM,GAAA,EAAI;AAChB,EAAA,KAAA,CAAM,WAAA,GAAc,WAAA;AACtB","file":"evaluation-delivery.js","sourcesContent":["import { type EvaluationFrame, functionEnvironment, type Path } from \"./evaluation-frames.js\";\nimport {\n charge,\n deliver,\n ensureCapacity,\n evaluate,\n fail,\n type MachineState,\n push,\n reserveCollectionIteration,\n} from \"./evaluation-state.js\";\nimport { cloneJson, type JsonValue } from \"./json.js\";\nimport {\n callableType,\n isCallable,\n matchesType,\n type RuntimeEnvironment,\n type RuntimeValue,\n type UserClosure,\n} from \"./runtime-values.js\";\nimport { isDuration, isInstant } from \"./temporal.js\";\nimport { applyTemporalBinary } from \"./temporal-evaluation.js\";\nimport type { KaladaV1Expression } from \"./types.js\";\nimport { isOption, isResult, type KaladaValue, Option, Result } from \"./values.js\";\n\nexport function deliverFrame<R extends JsonValue>(state: MachineState<R>): void {\n const frame = state.stack[state.stack.length - 1] as EvaluationFrame<R>;\n switch (frame.kind) {\n case \"binding\":\n deliverBinding(frame, state);\n break;\n case \"constructor\":\n deliverConstructor(frame, state);\n break;\n case \"match\":\n deliverMatch(frame, state);\n break;\n case \"temporal-binary\":\n deliverTemporal(frame, state);\n break;\n case \"function-group-body\":\n restore(frame.outer, state);\n break;\n case \"call-callee\":\n deliverCallee(frame, state);\n break;\n case \"call-arguments\":\n deliverArgument(frame, state);\n break;\n case \"user-return\":\n deliverReturn(frame, state);\n break;\n case \"core-iteration\":\n deliverCoreCallback(frame, state);\n break;\n }\n}\n\nfunction deliverBinding<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"binding\" }>,\n state: MachineState<R>,\n): void {\n if (frame.phase === \"body\") {\n restore(frame.outer, state);\n return;\n }\n frame.phase = \"body\";\n const nested = new Map(state.environment);\n nested.set(frame.name, state.value as RuntimeValue);\n evaluate(frame.body, [...frame.path, \"body\"], nested, state);\n}\n\nfunction deliverConstructor<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"constructor\" }>,\n state: MachineState<R>,\n): void {\n state.stack.pop();\n const value = state.value as RuntimeValue;\n if (isCallable(value)) fail(\"KALADA_FUNCTION_ESCAPE\", [...frame.path, \"value\"]);\n if (frame.type === \"Option\") deliver(Option.some(value), state);\n else deliver(frame.variant === \"ok\" ? Result.ok(value) : Result.err(value), state);\n}\n\nfunction deliverMatch<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"match\" }>,\n state: MachineState<R>,\n): void {\n if (frame.phase === \"arm\") {\n restore(frame.outer, state);\n return;\n }\n const value = state.value as RuntimeValue;\n const valid = !isCallable(value) && (frame.type === \"Option\" ? isOption(value) : isResult(value));\n if (!valid) fail(\"KALADA_MATCH_TYPE_MISMATCH\", [...frame.path, \"value\"]);\n const variant = (value as ReturnType<typeof Option.none> | ReturnType<typeof Result.ok>).variant;\n const index = frame.arms.findIndex((arm) => arm.variant === variant);\n const arm = frame.arms[index];\n if (!arm) fail(\"KALADA_INVALID_INPUT\", [...frame.path, \"arms\"]);\n frame.phase = \"arm\";\n frame.scrutinee = value;\n frame.selected = index;\n evaluate(\n arm.body,\n [...frame.path, \"arms\", index, \"body\"],\n bindArm(frame.outer, arm.binding, value),\n state,\n );\n}\n\nfunction bindArm(\n environment: RuntimeEnvironment,\n name: string | undefined,\n value: RuntimeValue,\n): RuntimeEnvironment {\n if (!name || isCallable(value) || (isOption(value) && value.variant === \"none\"))\n return environment;\n const nested = new Map(environment);\n if (isOption(value) || isResult(value)) nested.set(name, value.value);\n return nested;\n}\n\nfunction deliverTemporal<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"temporal-binary\" }>,\n state: MachineState<R>,\n): void {\n const value = state.value as RuntimeValue;\n if (isCallable(value) || (!isInstant(value) && !isDuration(value))) {\n fail(\"KALADA_TEMPORAL_TYPE_MISMATCH\", [...frame.path, frame.phase]);\n }\n if (frame.phase === \"left\") {\n frame.phase = \"right\";\n frame.left = value;\n evaluate(frame.right, [...frame.path, \"right\"], state.environment, state);\n return;\n }\n state.stack.pop();\n const output = applyTemporalBinary(\n frame.expressionKind,\n frame.operator,\n frame.left as KaladaValue,\n value,\n [...frame.path, \"right\"],\n );\n deliver(output, state);\n}\n\nfunction deliverCallee<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"call-callee\" }>,\n state: MachineState<R>,\n): void {\n charge([...frame.path, \"callee\"], state);\n state.stack.pop();\n const callable = state.value as RuntimeValue;\n if (!isCallable(callable)) fail(\"KALADA_NOT_CALLABLE\", [...frame.path, \"callee\"]);\n const expected = callable.callable === \"user\" ? callable.parameters.length : 2;\n if (frame.arguments.length !== expected)\n fail(\"KALADA_FUNCTION_ARITY\", [...frame.path, \"arguments\"]);\n if (frame.arguments.length === 0) {\n dispatch(callable, [], frame.path, state);\n return;\n }\n push(\n {\n kind: \"call-arguments\",\n phase: \"argument\",\n path: frame.path,\n callable,\n arguments: frame.arguments,\n values: [],\n index: 0,\n },\n [...frame.path, \"arguments\"],\n state,\n );\n evaluate(\n frame.arguments[0] as KaladaV1Expression<R>,\n [...frame.path, \"arguments\", 0],\n state.environment,\n state,\n );\n}\n\nfunction deliverArgument<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"call-arguments\" }>,\n state: MachineState<R>,\n): void {\n const path = [...frame.path, \"arguments\", frame.index];\n charge(path, state);\n const callable = frame.callable;\n if (!isCallable(callable)) fail(\"KALADA_NOT_CALLABLE\", [...frame.path, \"callee\"]);\n const type = callableType(callable).parameters[frame.index];\n if (type && !matchesType(state.value as RuntimeValue, type))\n fail(\"KALADA_FUNCTION_TYPE_MISMATCH\", path);\n frame.values.push(state.value as RuntimeValue);\n frame.index += 1;\n if (frame.index < frame.arguments.length) {\n evaluate(\n frame.arguments[frame.index] as KaladaV1Expression<R>,\n [...frame.path, \"arguments\", frame.index],\n state.environment,\n state,\n );\n return;\n }\n state.stack.pop();\n dispatch(callable, frame.values, frame.path, state);\n}\n\nfunction dispatch<R extends JsonValue>(\n callable: RuntimeValue,\n values: readonly RuntimeValue[],\n path: Path,\n state: MachineState<R>,\n): void {\n if (!isCallable(callable)) fail(\"KALADA_NOT_CALLABLE\", [...path, \"callee\"]);\n if (callable.callable === \"core\") {\n dispatchCore(callable.name, values, path, state);\n return;\n }\n dispatchUser(callable as UserClosure<R>, values, path, state);\n}\n\nfunction dispatchUser<R extends JsonValue>(\n closure: UserClosure<R>,\n values: readonly RuntimeValue[],\n path: Path,\n state: MachineState<R>,\n): void {\n if (state.callDepth >= state.limits.maxCallDepth) fail(\"KALADA_CALL_DEPTH_LIMIT\", path);\n ensureCapacity(path, state);\n charge(path, state);\n state.callDepth += 1;\n state.stack.push({\n kind: \"user-return\",\n phase: \"body\",\n path,\n name: closure.name,\n returns: closure.returns,\n caller: state.environment,\n });\n evaluate(closure.body, [...closure.path, \"body\"], functionEnvironment(closure, values), state);\n}\n\nfunction dispatchCore<R extends JsonValue>(\n operator: Extract<EvaluationFrame<R>, { kind: \"core-iteration\" }>[\"operator\"],\n values: readonly RuntimeValue[],\n path: Path,\n state: MachineState<R>,\n): void {\n const input = values[0] as readonly JsonValue[];\n if (input.length > state.limits.maxCollectionLength) {\n fail(\"KALADA_COLLECTION_LIMIT\", [...path, \"arguments\", 0]);\n }\n if (state.callDepth >= state.limits.maxCallDepth) fail(\"KALADA_CALL_DEPTH_LIMIT\", path);\n ensureCapacity(path, state);\n charge(path, state);\n state.callDepth += 1;\n const frame: Extract<EvaluationFrame<R>, { kind: \"core-iteration\" }> = {\n kind: \"core-iteration\",\n phase: \"ready\",\n path,\n operator,\n callback: values[1] as RuntimeValue,\n input,\n index: 0,\n partial: operator === \"some\" ? false : operator === \"every\" ? true : [],\n };\n state.stack.push(frame);\n if (input.length === 0) finishCore(frame, state);\n else dispatchCoreCallback(frame, state);\n}\n\nfunction dispatchCoreCallback<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"core-iteration\" }>,\n state: MachineState<R>,\n): void {\n frame.phase = \"callback\";\n reserveCollectionIteration(frame.path, state);\n dispatch(\n frame.callback,\n [frame.input[frame.index] as JsonValue, frame.index],\n [...frame.path, \"arguments\", 1],\n state,\n );\n}\n\nfunction deliverCoreCallback<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"core-iteration\" }>,\n state: MachineState<R>,\n): void {\n charge(frame.path, state);\n const value = state.value as RuntimeValue;\n validateCoreResult(frame, value);\n updateCoreResult(frame, value as JsonValue | boolean);\n if (coreFinished(frame, value)) {\n finishCore(frame, state);\n return;\n }\n frame.index += 1;\n if (frame.index === frame.input.length) finishCore(frame, state);\n else dispatchCoreCallback(frame, state);\n}\n\nfunction validateCoreResult<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"core-iteration\" }>,\n value: RuntimeValue,\n): void {\n const expected = {\n kind: \"primitive-type\",\n name: frame.operator === \"map\" ? \"json\" : \"boolean\",\n } as const;\n if (!matchesType(value, expected)) {\n fail(\"KALADA_COLLECTION_TYPE_MISMATCH\", [...frame.path, \"arguments\", 1]);\n }\n}\n\nfunction updateCoreResult<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"core-iteration\" }>,\n value: JsonValue | boolean,\n): void {\n if (frame.operator === \"map\") (frame.partial as JsonValue[]).push(value as JsonValue);\n if (frame.operator === \"filter\" && value) {\n (frame.partial as JsonValue[]).push(frame.input[frame.index] as JsonValue);\n }\n if (frame.operator === \"some\" && value) frame.partial = true;\n if (frame.operator === \"every\" && !value) frame.partial = false;\n}\n\nfunction coreFinished<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"core-iteration\" }>,\n value: RuntimeValue,\n): boolean {\n return (\n (frame.operator === \"some\" && value === true) || (frame.operator === \"every\" && value === false)\n );\n}\n\nfunction finishCore<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"core-iteration\" }>,\n state: MachineState<R>,\n): void {\n const output = Array.isArray(frame.partial)\n ? validateCollectionOutput(frame.partial, frame.path, state)\n : frame.partial;\n state.stack.pop();\n state.callDepth -= 1;\n deliver(output, state);\n}\n\nfunction validateCollectionOutput<R extends JsonValue>(\n output: JsonValue[],\n path: Path,\n state: MachineState<R>,\n): JsonValue[] {\n try {\n cloneJson(output, {\n maxDepth: state.limits.maxValueDepth,\n maxNodes: state.limits.maxValueNodes,\n maxStringLength: state.limits.maxStringLength,\n });\n } catch {\n fail(\"KALADA_LIMIT_EXCEEDED\", path);\n }\n return Object.freeze(output) as JsonValue[];\n}\n\nfunction deliverReturn<R extends JsonValue>(\n frame: Extract<EvaluationFrame<R>, { kind: \"user-return\" }>,\n state: MachineState<R>,\n): void {\n charge(frame.path, state);\n state.stack.pop();\n state.environment = frame.caller;\n state.callDepth -= 1;\n if (!matchesType(state.value as RuntimeValue, frame.returns))\n fail(\"KALADA_FUNCTION_TYPE_MISMATCH\", frame.path);\n}\n\nfunction restore<R extends JsonValue>(\n environment: RuntimeEnvironment,\n state: MachineState<R>,\n): void {\n state.stack.pop();\n state.environment = environment;\n}\n"]}
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ function functionEnvironment(closure, values) {
4
+ const output = new Map(closure.captures);
5
+ closure.recursive?.names.forEach((name, index) => {
6
+ output.set(name, closure.recursive?.closures[index]);
7
+ });
8
+ closure.parameters.forEach((parameter, index) => {
9
+ output.set(parameter.name, values[index]);
10
+ });
11
+ return output;
12
+ }
13
+
14
+ exports.functionEnvironment = functionEnvironment;
15
+ //# sourceMappingURL=evaluation-frames.cjs.map
16
+ //# sourceMappingURL=evaluation-frames.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/kalada-v1/evaluation-frames.ts"],"names":[],"mappings":";;AAqFO,SAAS,mBAAA,CACd,SACA,MAAA,EACoB;AACpB,EAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,OAAA,CAAQ,QAAQ,CAAA;AACvC,EAAA,OAAA,CAAQ,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,CAAC,MAAM,KAAA,KAAU;AAChD,IAAA,MAAA,CAAO,IAAI,IAAA,EAAM,OAAA,CAAQ,SAAA,EAAW,QAAA,CAAS,KAAK,CAAmB,CAAA;AAAA,EACvE,CAAC,CAAA;AACD,EAAA,OAAA,CAAQ,UAAA,CAAW,OAAA,CAAQ,CAAC,SAAA,EAAW,KAAA,KAAU;AAC/C,IAAA,MAAA,CAAO,GAAA,CAAI,SAAA,CAAU,IAAA,EAAM,MAAA,CAAO,KAAK,CAAiB,CAAA;AAAA,EAC1D,CAAC,CAAA;AACD,EAAA,OAAO,MAAA;AACT","file":"evaluation-frames.cjs","sourcesContent":["import type { JsonValue } from \"./json.js\";\nimport type { RuntimeEnvironment, RuntimeValue, UserClosure } from \"./runtime-values.js\";\nimport type { KaladaCoreFunctionName, KaladaType, KaladaV1Expression, MatchArm } from \"./types.js\";\n\nexport type Path = readonly (string | number)[];\ntype Expression<R extends JsonValue> = KaladaV1Expression<R>;\n\nexport type EvaluationFrame<R extends JsonValue> =\n | {\n kind: \"binding\";\n phase: \"value\" | \"body\";\n path: Path;\n name: string;\n body: Expression<R>;\n outer: RuntimeEnvironment;\n }\n | {\n kind: \"constructor\";\n phase: \"payload\";\n path: Path;\n type: \"Option\" | \"Result\";\n variant: \"some\" | \"ok\" | \"err\";\n }\n | {\n kind: \"match\";\n phase: \"scrutinee\" | \"arm\";\n path: Path;\n type: \"Option\" | \"Result\";\n arms: readonly MatchArm<R>[];\n outer: RuntimeEnvironment;\n scrutinee: RuntimeValue | null;\n selected: number | null;\n }\n | {\n kind: \"temporal-binary\";\n phase: \"left\" | \"right\";\n path: Path;\n expressionKind: \"temporal-arithmetic\" | \"temporal-comparison\";\n operator: string;\n right: Expression<R>;\n left: RuntimeValue | null;\n }\n | {\n kind: \"function-group-body\";\n phase: \"body\";\n path: Path;\n body: Expression<R>;\n outer: RuntimeEnvironment;\n group: RuntimeEnvironment;\n }\n | { kind: \"call-callee\"; phase: \"callee\"; path: Path; arguments: readonly Expression<R>[] }\n | {\n kind: \"call-arguments\";\n phase: \"argument\";\n path: Path;\n callable: RuntimeValue;\n arguments: readonly Expression<R>[];\n values: RuntimeValue[];\n index: number;\n }\n | {\n kind: \"user-return\";\n phase: \"body\";\n path: Path;\n name: string | null;\n returns: KaladaType;\n caller: RuntimeEnvironment;\n }\n | {\n kind: \"core-iteration\";\n phase: \"ready\" | \"callback\";\n path: Path;\n operator: KaladaCoreFunctionName;\n callback: RuntimeValue;\n input: readonly JsonValue[];\n index: number;\n partial: JsonValue[] | boolean;\n };\n\nexport interface EvaluationTask<R extends JsonValue> {\n readonly node: Expression<R>;\n readonly path: Path;\n readonly environment: RuntimeEnvironment;\n}\n\nexport function functionEnvironment<R extends JsonValue>(\n closure: UserClosure<R>,\n values: readonly RuntimeValue[],\n): RuntimeEnvironment {\n const output = new Map(closure.captures);\n closure.recursive?.names.forEach((name, index) => {\n output.set(name, closure.recursive?.closures[index] as UserClosure<R>);\n });\n closure.parameters.forEach((parameter, index) => {\n output.set(parameter.name, values[index] as RuntimeValue);\n });\n return output;\n}\n"]}
@@ -0,0 +1,83 @@
1
+ import { JsonValue } from './json.cjs';
2
+ import { RuntimeEnvironment, RuntimeValue, UserClosure } from './runtime-values.cjs';
3
+ import { KaladaV1Expression, MatchArm, KaladaType, KaladaCoreFunctionName } from './types.cjs';
4
+ import './values.cjs';
5
+ import './temporal.cjs';
6
+
7
+ type Path = readonly (string | number)[];
8
+ type Expression<R extends JsonValue> = KaladaV1Expression<R>;
9
+ type EvaluationFrame<R extends JsonValue> = {
10
+ kind: "binding";
11
+ phase: "value" | "body";
12
+ path: Path;
13
+ name: string;
14
+ body: Expression<R>;
15
+ outer: RuntimeEnvironment;
16
+ } | {
17
+ kind: "constructor";
18
+ phase: "payload";
19
+ path: Path;
20
+ type: "Option" | "Result";
21
+ variant: "some" | "ok" | "err";
22
+ } | {
23
+ kind: "match";
24
+ phase: "scrutinee" | "arm";
25
+ path: Path;
26
+ type: "Option" | "Result";
27
+ arms: readonly MatchArm<R>[];
28
+ outer: RuntimeEnvironment;
29
+ scrutinee: RuntimeValue | null;
30
+ selected: number | null;
31
+ } | {
32
+ kind: "temporal-binary";
33
+ phase: "left" | "right";
34
+ path: Path;
35
+ expressionKind: "temporal-arithmetic" | "temporal-comparison";
36
+ operator: string;
37
+ right: Expression<R>;
38
+ left: RuntimeValue | null;
39
+ } | {
40
+ kind: "function-group-body";
41
+ phase: "body";
42
+ path: Path;
43
+ body: Expression<R>;
44
+ outer: RuntimeEnvironment;
45
+ group: RuntimeEnvironment;
46
+ } | {
47
+ kind: "call-callee";
48
+ phase: "callee";
49
+ path: Path;
50
+ arguments: readonly Expression<R>[];
51
+ } | {
52
+ kind: "call-arguments";
53
+ phase: "argument";
54
+ path: Path;
55
+ callable: RuntimeValue;
56
+ arguments: readonly Expression<R>[];
57
+ values: RuntimeValue[];
58
+ index: number;
59
+ } | {
60
+ kind: "user-return";
61
+ phase: "body";
62
+ path: Path;
63
+ name: string | null;
64
+ returns: KaladaType;
65
+ caller: RuntimeEnvironment;
66
+ } | {
67
+ kind: "core-iteration";
68
+ phase: "ready" | "callback";
69
+ path: Path;
70
+ operator: KaladaCoreFunctionName;
71
+ callback: RuntimeValue;
72
+ input: readonly JsonValue[];
73
+ index: number;
74
+ partial: JsonValue[] | boolean;
75
+ };
76
+ interface EvaluationTask<R extends JsonValue> {
77
+ readonly node: Expression<R>;
78
+ readonly path: Path;
79
+ readonly environment: RuntimeEnvironment;
80
+ }
81
+ declare function functionEnvironment<R extends JsonValue>(closure: UserClosure<R>, values: readonly RuntimeValue[]): RuntimeEnvironment;
82
+
83
+ export { type EvaluationFrame, type EvaluationTask, type Path, functionEnvironment };
@@ -0,0 +1,83 @@
1
+ import { JsonValue } from './json.js';
2
+ import { RuntimeEnvironment, RuntimeValue, UserClosure } from './runtime-values.js';
3
+ import { KaladaV1Expression, MatchArm, KaladaType, KaladaCoreFunctionName } from './types.js';
4
+ import './values.js';
5
+ import './temporal.js';
6
+
7
+ type Path = readonly (string | number)[];
8
+ type Expression<R extends JsonValue> = KaladaV1Expression<R>;
9
+ type EvaluationFrame<R extends JsonValue> = {
10
+ kind: "binding";
11
+ phase: "value" | "body";
12
+ path: Path;
13
+ name: string;
14
+ body: Expression<R>;
15
+ outer: RuntimeEnvironment;
16
+ } | {
17
+ kind: "constructor";
18
+ phase: "payload";
19
+ path: Path;
20
+ type: "Option" | "Result";
21
+ variant: "some" | "ok" | "err";
22
+ } | {
23
+ kind: "match";
24
+ phase: "scrutinee" | "arm";
25
+ path: Path;
26
+ type: "Option" | "Result";
27
+ arms: readonly MatchArm<R>[];
28
+ outer: RuntimeEnvironment;
29
+ scrutinee: RuntimeValue | null;
30
+ selected: number | null;
31
+ } | {
32
+ kind: "temporal-binary";
33
+ phase: "left" | "right";
34
+ path: Path;
35
+ expressionKind: "temporal-arithmetic" | "temporal-comparison";
36
+ operator: string;
37
+ right: Expression<R>;
38
+ left: RuntimeValue | null;
39
+ } | {
40
+ kind: "function-group-body";
41
+ phase: "body";
42
+ path: Path;
43
+ body: Expression<R>;
44
+ outer: RuntimeEnvironment;
45
+ group: RuntimeEnvironment;
46
+ } | {
47
+ kind: "call-callee";
48
+ phase: "callee";
49
+ path: Path;
50
+ arguments: readonly Expression<R>[];
51
+ } | {
52
+ kind: "call-arguments";
53
+ phase: "argument";
54
+ path: Path;
55
+ callable: RuntimeValue;
56
+ arguments: readonly Expression<R>[];
57
+ values: RuntimeValue[];
58
+ index: number;
59
+ } | {
60
+ kind: "user-return";
61
+ phase: "body";
62
+ path: Path;
63
+ name: string | null;
64
+ returns: KaladaType;
65
+ caller: RuntimeEnvironment;
66
+ } | {
67
+ kind: "core-iteration";
68
+ phase: "ready" | "callback";
69
+ path: Path;
70
+ operator: KaladaCoreFunctionName;
71
+ callback: RuntimeValue;
72
+ input: readonly JsonValue[];
73
+ index: number;
74
+ partial: JsonValue[] | boolean;
75
+ };
76
+ interface EvaluationTask<R extends JsonValue> {
77
+ readonly node: Expression<R>;
78
+ readonly path: Path;
79
+ readonly environment: RuntimeEnvironment;
80
+ }
81
+ declare function functionEnvironment<R extends JsonValue>(closure: UserClosure<R>, values: readonly RuntimeValue[]): RuntimeEnvironment;
82
+
83
+ export { type EvaluationFrame, type EvaluationTask, type Path, functionEnvironment };
@@ -0,0 +1,14 @@
1
+ function functionEnvironment(closure, values) {
2
+ const output = new Map(closure.captures);
3
+ closure.recursive?.names.forEach((name, index) => {
4
+ output.set(name, closure.recursive?.closures[index]);
5
+ });
6
+ closure.parameters.forEach((parameter, index) => {
7
+ output.set(parameter.name, values[index]);
8
+ });
9
+ return output;
10
+ }
11
+
12
+ export { functionEnvironment };
13
+ //# sourceMappingURL=evaluation-frames.js.map
14
+ //# sourceMappingURL=evaluation-frames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/kalada-v1/evaluation-frames.ts"],"names":[],"mappings":"AAqFO,SAAS,mBAAA,CACd,SACA,MAAA,EACoB;AACpB,EAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,OAAA,CAAQ,QAAQ,CAAA;AACvC,EAAA,OAAA,CAAQ,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,CAAC,MAAM,KAAA,KAAU;AAChD,IAAA,MAAA,CAAO,IAAI,IAAA,EAAM,OAAA,CAAQ,SAAA,EAAW,QAAA,CAAS,KAAK,CAAmB,CAAA;AAAA,EACvE,CAAC,CAAA;AACD,EAAA,OAAA,CAAQ,UAAA,CAAW,OAAA,CAAQ,CAAC,SAAA,EAAW,KAAA,KAAU;AAC/C,IAAA,MAAA,CAAO,GAAA,CAAI,SAAA,CAAU,IAAA,EAAM,MAAA,CAAO,KAAK,CAAiB,CAAA;AAAA,EAC1D,CAAC,CAAA;AACD,EAAA,OAAO,MAAA;AACT","file":"evaluation-frames.js","sourcesContent":["import type { JsonValue } from \"./json.js\";\nimport type { RuntimeEnvironment, RuntimeValue, UserClosure } from \"./runtime-values.js\";\nimport type { KaladaCoreFunctionName, KaladaType, KaladaV1Expression, MatchArm } from \"./types.js\";\n\nexport type Path = readonly (string | number)[];\ntype Expression<R extends JsonValue> = KaladaV1Expression<R>;\n\nexport type EvaluationFrame<R extends JsonValue> =\n | {\n kind: \"binding\";\n phase: \"value\" | \"body\";\n path: Path;\n name: string;\n body: Expression<R>;\n outer: RuntimeEnvironment;\n }\n | {\n kind: \"constructor\";\n phase: \"payload\";\n path: Path;\n type: \"Option\" | \"Result\";\n variant: \"some\" | \"ok\" | \"err\";\n }\n | {\n kind: \"match\";\n phase: \"scrutinee\" | \"arm\";\n path: Path;\n type: \"Option\" | \"Result\";\n arms: readonly MatchArm<R>[];\n outer: RuntimeEnvironment;\n scrutinee: RuntimeValue | null;\n selected: number | null;\n }\n | {\n kind: \"temporal-binary\";\n phase: \"left\" | \"right\";\n path: Path;\n expressionKind: \"temporal-arithmetic\" | \"temporal-comparison\";\n operator: string;\n right: Expression<R>;\n left: RuntimeValue | null;\n }\n | {\n kind: \"function-group-body\";\n phase: \"body\";\n path: Path;\n body: Expression<R>;\n outer: RuntimeEnvironment;\n group: RuntimeEnvironment;\n }\n | { kind: \"call-callee\"; phase: \"callee\"; path: Path; arguments: readonly Expression<R>[] }\n | {\n kind: \"call-arguments\";\n phase: \"argument\";\n path: Path;\n callable: RuntimeValue;\n arguments: readonly Expression<R>[];\n values: RuntimeValue[];\n index: number;\n }\n | {\n kind: \"user-return\";\n phase: \"body\";\n path: Path;\n name: string | null;\n returns: KaladaType;\n caller: RuntimeEnvironment;\n }\n | {\n kind: \"core-iteration\";\n phase: \"ready\" | \"callback\";\n path: Path;\n operator: KaladaCoreFunctionName;\n callback: RuntimeValue;\n input: readonly JsonValue[];\n index: number;\n partial: JsonValue[] | boolean;\n };\n\nexport interface EvaluationTask<R extends JsonValue> {\n readonly node: Expression<R>;\n readonly path: Path;\n readonly environment: RuntimeEnvironment;\n}\n\nexport function functionEnvironment<R extends JsonValue>(\n closure: UserClosure<R>,\n values: readonly RuntimeValue[],\n): RuntimeEnvironment {\n const output = new Map(closure.captures);\n closure.recursive?.names.forEach((name, index) => {\n output.set(name, closure.recursive?.closures[index] as UserClosure<R>);\n });\n closure.parameters.forEach((parameter, index) => {\n output.set(parameter.name, values[index] as RuntimeValue);\n });\n return output;\n}\n"]}
@@ -0,0 +1,226 @@
1
+ 'use strict';
2
+
3
+ var diagnostics_js = require('./diagnostics.js');
4
+ var evaluationDelivery_js = require('./evaluation-delivery.js');
5
+ var evaluationResolution_js = require('./evaluation-resolution.js');
6
+ var evaluationState_js = require('./evaluation-state.js');
7
+ var runtimeValues_js = require('./runtime-values.js');
8
+ var temporalEvaluation_js = require('./temporal-evaluation.js');
9
+ var values_js = require('./values.js');
10
+
11
+ const FUNCTION_RUNTIME_DIAGNOSTICS = /* @__PURE__ */ new Set([
12
+ "KALADA_CAPTURE_LIMIT",
13
+ "KALADA_NOT_CALLABLE",
14
+ "KALADA_FUNCTION_ARITY",
15
+ "KALADA_FUNCTION_TYPE_MISMATCH",
16
+ "KALADA_CLOSURE_LIMIT",
17
+ "KALADA_CALL_DEPTH_LIMIT",
18
+ "KALADA_CONTINUATION_LIMIT",
19
+ "KALADA_COLLECTION_TYPE_MISMATCH",
20
+ "KALADA_COLLECTION_LIMIT",
21
+ "KALADA_FUNCTION_ESCAPE"
22
+ ]);
23
+ function runEvaluation(expression, resolve, limits, functions, instant) {
24
+ const environment = /* @__PURE__ */ new Map();
25
+ const state = {
26
+ resolve,
27
+ limits,
28
+ captures: evaluationState_js.captureMap(functions),
29
+ instant,
30
+ stack: [],
31
+ task: { node: expression, path: ["expression"], environment },
32
+ value: null,
33
+ environment,
34
+ steps: 0,
35
+ closures: 0,
36
+ captured: 0,
37
+ callDepth: 0,
38
+ collectionIterations: 0
39
+ };
40
+ try {
41
+ return runLoop(state);
42
+ } catch (error) {
43
+ if (!(error instanceof diagnostics_js.KaladaFailure) || error.context) throw error;
44
+ const context = evaluationState_js.diagnosticContext(state);
45
+ const includeContext = context.length > 0 || FUNCTION_RUNTIME_DIAGNOSTICS.has(error.code);
46
+ evaluationState_js.unwind(state);
47
+ throw new diagnostics_js.KaladaFailure(error.code, error.path, includeContext ? context : void 0);
48
+ }
49
+ }
50
+ function runLoop(state) {
51
+ while (true) {
52
+ const result = advance(state);
53
+ if (result !== void 0) return result;
54
+ }
55
+ }
56
+ function advance(state) {
57
+ if (state.task) {
58
+ evaluateTask(state);
59
+ return void 0;
60
+ }
61
+ if (state.stack.length > 0) {
62
+ evaluationDelivery_js.deliverFrame(state);
63
+ return void 0;
64
+ }
65
+ const value = state.value;
66
+ if (runtimeValues_js.isCallable(value)) evaluationState_js.fail("KALADA_FUNCTION_ESCAPE", ["expression"]);
67
+ return value;
68
+ }
69
+ function evaluateTask(state) {
70
+ const task = state.task;
71
+ state.task = null;
72
+ state.environment = task.environment;
73
+ evaluationState_js.charge(task.path, state);
74
+ const { node, path } = task;
75
+ switch (node.kind) {
76
+ case "literal":
77
+ evaluationState_js.deliver(node.value, state);
78
+ break;
79
+ case "ref":
80
+ evaluateReference(node.ref, path, state);
81
+ break;
82
+ case "binding":
83
+ enterBinding(node, path, state);
84
+ break;
85
+ case "option":
86
+ case "result":
87
+ enterConstructor(node, path, state);
88
+ break;
89
+ case "match":
90
+ enterMatch(node, path, state);
91
+ break;
92
+ case "function":
93
+ evaluationState_js.deliver(materializeFunction(node, path, state), state);
94
+ break;
95
+ case "function-group":
96
+ enterGroup(node, path, state);
97
+ break;
98
+ case "call":
99
+ enterCall(node, path, state);
100
+ break;
101
+ case "core-function":
102
+ evaluationState_js.deliver(runtimeValues_js.coreCallable(node.name), state);
103
+ break;
104
+ case "temporal-arithmetic":
105
+ case "temporal-comparison":
106
+ enterTemporal(node, path, state);
107
+ break;
108
+ default:
109
+ evaluationState_js.deliver(temporalEvaluation_js.temporalLeaf(node, path, state.instant), state);
110
+ }
111
+ }
112
+ function evaluateReference(reference, path, state) {
113
+ if (typeof reference === "string" && state.environment.has(reference)) {
114
+ evaluationState_js.deliver(state.environment.get(reference), state);
115
+ return;
116
+ }
117
+ evaluationState_js.deliver(evaluationResolution_js.resolveReference(reference, path, state.resolve, state.limits), state);
118
+ }
119
+ function enterBinding(node, path, state) {
120
+ evaluationState_js.push(
121
+ {
122
+ kind: "binding",
123
+ phase: "value",
124
+ path,
125
+ name: node.name,
126
+ body: node.body,
127
+ outer: state.environment
128
+ },
129
+ [...path, "value"],
130
+ state
131
+ );
132
+ evaluationState_js.evaluate(node.value, [...path, "value"], state.environment, state);
133
+ }
134
+ function enterConstructor(node, path, state) {
135
+ if (node.kind === "option" && node.variant === "none") {
136
+ evaluationState_js.deliver(values_js.Option.none(), state);
137
+ return;
138
+ }
139
+ const type = node.kind === "option" ? "Option" : "Result";
140
+ evaluationState_js.push(
141
+ { kind: "constructor", phase: "payload", path, type, variant: node.variant },
142
+ [...path, "value"],
143
+ state
144
+ );
145
+ evaluationState_js.evaluate(node.value, [...path, "value"], state.environment, state);
146
+ }
147
+ function enterMatch(node, path, state) {
148
+ evaluationState_js.push(
149
+ {
150
+ kind: "match",
151
+ phase: "scrutinee",
152
+ path,
153
+ type: node.type,
154
+ arms: node.arms,
155
+ outer: state.environment,
156
+ scrutinee: null,
157
+ selected: null
158
+ },
159
+ [...path, "value"],
160
+ state
161
+ );
162
+ evaluationState_js.evaluate(node.value, [...path, "value"], state.environment, state);
163
+ }
164
+ function enterTemporal(node, path, state) {
165
+ evaluationState_js.push(
166
+ {
167
+ kind: "temporal-binary",
168
+ phase: "left",
169
+ path,
170
+ expressionKind: node.kind,
171
+ operator: node.operator,
172
+ right: node.right,
173
+ left: null
174
+ },
175
+ [...path, "left"],
176
+ state
177
+ );
178
+ evaluationState_js.evaluate(node.left, [...path, "left"], state.environment, state);
179
+ }
180
+ function enterCall(node, path, state) {
181
+ evaluationState_js.push(
182
+ { kind: "call-callee", phase: "callee", path, arguments: node.arguments },
183
+ [...path, "callee"],
184
+ state
185
+ );
186
+ evaluationState_js.evaluate(node.callee, [...path, "callee"], state.environment, state);
187
+ }
188
+ function enterGroup(node, path, state) {
189
+ const names = Object.freeze(node.functions.map((item) => item.name));
190
+ const closures = [];
191
+ const recursive = { names, closures };
192
+ node.functions.forEach((member, index) => {
193
+ const memberPath = [...path, "functions", index];
194
+ evaluationState_js.reserveClosure(memberPath, state);
195
+ const captured = evaluationState_js.copyCaptures(memberPath, state);
196
+ closures.push(runtimeValues_js.closureFromMember(member, memberPath, captured, recursive));
197
+ });
198
+ Object.freeze(closures);
199
+ Object.freeze(recursive);
200
+ const group = new Map(state.environment);
201
+ names.forEach((name, index) => {
202
+ group.set(name, closures[index]);
203
+ });
204
+ evaluationState_js.push(
205
+ {
206
+ kind: "function-group-body",
207
+ phase: "body",
208
+ path,
209
+ body: node.body,
210
+ outer: state.environment,
211
+ group
212
+ },
213
+ [...path, "body"],
214
+ state
215
+ );
216
+ evaluationState_js.evaluate(node.body, [...path, "body"], group, state);
217
+ }
218
+ function materializeFunction(node, path, state) {
219
+ evaluationState_js.reserveClosure(path, state);
220
+ const captures = evaluationState_js.copyCaptures(path, state);
221
+ return runtimeValues_js.closureFromExpression(node, path, captures);
222
+ }
223
+
224
+ exports.runEvaluation = runEvaluation;
225
+ //# sourceMappingURL=evaluation-machine.cjs.map
226
+ //# sourceMappingURL=evaluation-machine.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/kalada-v1/evaluation-machine.ts"],"names":["captureMap","KaladaFailure","diagnosticContext","unwind","deliverFrame","isCallable","charge","deliver","coreCallable","temporalLeaf","resolveReference","push","evaluate","Option","reserveClosure","copyCaptures","closureFromMember","closureFromExpression"],"mappings":"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","file":"evaluation-machine.cjs","sourcesContent":["import { KaladaFailure } from \"./diagnostics.js\";\nimport { deliverFrame } from \"./evaluation-delivery.js\";\nimport type { EvaluationTask, Path } from \"./evaluation-frames.js\";\nimport { resolveReference } from \"./evaluation-resolution.js\";\nimport {\n captureMap,\n charge,\n copyCaptures,\n deliver,\n diagnosticContext,\n evaluate,\n fail,\n type MachineState,\n push,\n reserveClosure,\n unwind,\n} from \"./evaluation-state.js\";\nimport type { JsonValue } from \"./json.js\";\nimport type { ResolvedKaladaV1Limits } from \"./limits.js\";\nimport {\n closureFromExpression,\n closureFromMember,\n coreCallable,\n isCallable,\n type RecursiveEnvironment,\n type RuntimeValue,\n type UserClosure,\n} from \"./runtime-values.js\";\nimport type { InstantValue } from \"./temporal.js\";\nimport { temporalLeaf } from \"./temporal-evaluation.js\";\nimport type { KaladaV1Expression, KaladaV1FunctionCapture, KaladaV1Resolver } from \"./types.js\";\nimport { type KaladaValue, Option } from \"./values.js\";\n\nconst FUNCTION_RUNTIME_DIAGNOSTICS = new Set([\n \"KALADA_CAPTURE_LIMIT\",\n \"KALADA_NOT_CALLABLE\",\n \"KALADA_FUNCTION_ARITY\",\n \"KALADA_FUNCTION_TYPE_MISMATCH\",\n \"KALADA_CLOSURE_LIMIT\",\n \"KALADA_CALL_DEPTH_LIMIT\",\n \"KALADA_CONTINUATION_LIMIT\",\n \"KALADA_COLLECTION_TYPE_MISMATCH\",\n \"KALADA_COLLECTION_LIMIT\",\n \"KALADA_FUNCTION_ESCAPE\",\n]);\n\nexport function runEvaluation<R extends JsonValue>(\n expression: KaladaV1Expression<R>,\n resolve: KaladaV1Resolver<R>,\n limits: ResolvedKaladaV1Limits,\n functions: readonly KaladaV1FunctionCapture[],\n instant: InstantValue | undefined,\n): KaladaValue {\n const environment = new Map<string, RuntimeValue>();\n const state: MachineState<R> = {\n resolve,\n limits,\n captures: captureMap(functions),\n instant,\n stack: [],\n task: { node: expression, path: [\"expression\"], environment },\n value: null,\n environment,\n steps: 0,\n closures: 0,\n captured: 0,\n callDepth: 0,\n collectionIterations: 0,\n };\n try {\n return runLoop(state);\n } catch (error) {\n if (!(error instanceof KaladaFailure) || error.context) throw error;\n const context = diagnosticContext(state);\n const includeContext = context.length > 0 || FUNCTION_RUNTIME_DIAGNOSTICS.has(error.code);\n unwind(state);\n throw new KaladaFailure(error.code, error.path, includeContext ? context : undefined);\n }\n}\n\nfunction runLoop<R extends JsonValue>(state: MachineState<R>): KaladaValue {\n while (true) {\n const result = advance(state);\n if (result !== undefined) return result;\n }\n}\n\nfunction advance<R extends JsonValue>(state: MachineState<R>): KaladaValue | undefined {\n if (state.task) {\n evaluateTask(state);\n return undefined;\n }\n if (state.stack.length > 0) {\n deliverFrame(state);\n return undefined;\n }\n const value = state.value as RuntimeValue;\n if (isCallable(value)) fail(\"KALADA_FUNCTION_ESCAPE\", [\"expression\"]);\n return value;\n}\n\nfunction evaluateTask<R extends JsonValue>(state: MachineState<R>): void {\n const task = state.task as EvaluationTask<R>;\n state.task = null;\n state.environment = task.environment;\n charge(task.path, state);\n const { node, path } = task;\n switch (node.kind) {\n case \"literal\":\n deliver(node.value, state);\n break;\n case \"ref\":\n evaluateReference(node.ref, path, state);\n break;\n case \"binding\":\n enterBinding(node, path, state);\n break;\n case \"option\":\n case \"result\":\n enterConstructor(node, path, state);\n break;\n case \"match\":\n enterMatch(node, path, state);\n break;\n case \"function\":\n deliver(materializeFunction(node, path, state), state);\n break;\n case \"function-group\":\n enterGroup(node, path, state);\n break;\n case \"call\":\n enterCall(node, path, state);\n break;\n case \"core-function\":\n deliver(coreCallable(node.name), state);\n break;\n case \"temporal-arithmetic\":\n case \"temporal-comparison\":\n enterTemporal(node, path, state);\n break;\n default:\n deliver(temporalLeaf(node, path, state.instant), state);\n }\n}\n\nfunction evaluateReference<R extends JsonValue>(\n reference: R,\n path: Path,\n state: MachineState<R>,\n): void {\n if (typeof reference === \"string\" && state.environment.has(reference)) {\n deliver(state.environment.get(reference) as RuntimeValue, state);\n return;\n }\n deliver(resolveReference(reference, path, state.resolve, state.limits), state);\n}\n\nfunction enterBinding<R extends JsonValue>(\n node: Extract<KaladaV1Expression<R>, { kind: \"binding\" }>,\n path: Path,\n state: MachineState<R>,\n): void {\n push(\n {\n kind: \"binding\",\n phase: \"value\",\n path,\n name: node.name,\n body: node.body,\n outer: state.environment,\n },\n [...path, \"value\"],\n state,\n );\n evaluate(node.value, [...path, \"value\"], state.environment, state);\n}\n\nfunction enterConstructor<R extends JsonValue>(\n node: Extract<KaladaV1Expression<R>, { kind: \"option\" | \"result\" }>,\n path: Path,\n state: MachineState<R>,\n): void {\n if (node.kind === \"option\" && node.variant === \"none\") {\n deliver(Option.none(), state);\n return;\n }\n const type = node.kind === \"option\" ? \"Option\" : \"Result\";\n push(\n { kind: \"constructor\", phase: \"payload\", path, type, variant: node.variant },\n [...path, \"value\"],\n state,\n );\n evaluate(node.value, [...path, \"value\"], state.environment, state);\n}\n\nfunction enterMatch<R extends JsonValue>(\n node: Extract<KaladaV1Expression<R>, { kind: \"match\" }>,\n path: Path,\n state: MachineState<R>,\n): void {\n push(\n {\n kind: \"match\",\n phase: \"scrutinee\",\n path,\n type: node.type,\n arms: node.arms,\n outer: state.environment,\n scrutinee: null,\n selected: null,\n },\n [...path, \"value\"],\n state,\n );\n evaluate(node.value, [...path, \"value\"], state.environment, state);\n}\n\nfunction enterTemporal<R extends JsonValue>(\n node: Extract<KaladaV1Expression<R>, { kind: \"temporal-arithmetic\" | \"temporal-comparison\" }>,\n path: Path,\n state: MachineState<R>,\n): void {\n push(\n {\n kind: \"temporal-binary\",\n phase: \"left\",\n path,\n expressionKind: node.kind,\n operator: node.operator,\n right: node.right,\n left: null,\n },\n [...path, \"left\"],\n state,\n );\n evaluate(node.left, [...path, \"left\"], state.environment, state);\n}\n\nfunction enterCall<R extends JsonValue>(\n node: Extract<KaladaV1Expression<R>, { kind: \"call\" }>,\n path: Path,\n state: MachineState<R>,\n): void {\n push(\n { kind: \"call-callee\", phase: \"callee\", path, arguments: node.arguments },\n [...path, \"callee\"],\n state,\n );\n evaluate(node.callee, [...path, \"callee\"], state.environment, state);\n}\n\nfunction enterGroup<R extends JsonValue>(\n node: Extract<KaladaV1Expression<R>, { kind: \"function-group\" }>,\n path: Path,\n state: MachineState<R>,\n): void {\n const names = Object.freeze(node.functions.map((item) => item.name));\n const closures: UserClosure<R>[] = [];\n const recursive = { names, closures } as RecursiveEnvironment<R>;\n node.functions.forEach((member, index) => {\n const memberPath = [...path, \"functions\", index];\n reserveClosure(memberPath, state);\n const captured = copyCaptures(memberPath, state);\n closures.push(closureFromMember(member, memberPath, captured, recursive));\n });\n Object.freeze(closures);\n Object.freeze(recursive);\n const group = new Map(state.environment);\n names.forEach((name, index) => {\n group.set(name, closures[index] as UserClosure<R>);\n });\n push(\n {\n kind: \"function-group-body\",\n phase: \"body\",\n path,\n body: node.body,\n outer: state.environment,\n group,\n },\n [...path, \"body\"],\n state,\n );\n evaluate(node.body, [...path, \"body\"], group, state);\n}\n\nfunction materializeFunction<R extends JsonValue>(\n node: Extract<KaladaV1Expression<R>, { kind: \"function\" }>,\n path: Path,\n state: MachineState<R>,\n): UserClosure<R> {\n reserveClosure(path, state);\n const captures = copyCaptures(path, state);\n return closureFromExpression(node, path, captures);\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import { JsonValue } from './json.cjs';
2
+ import { ResolvedKaladaV1Limits } from './limits.cjs';
3
+ import { InstantValue } from './temporal.cjs';
4
+ import { KaladaV1Expression, KaladaV1Resolver, KaladaV1FunctionCapture } from './types.cjs';
5
+ import { KaladaValue } from './values.cjs';
6
+
7
+ declare function runEvaluation<R extends JsonValue>(expression: KaladaV1Expression<R>, resolve: KaladaV1Resolver<R>, limits: ResolvedKaladaV1Limits, functions: readonly KaladaV1FunctionCapture[], instant: InstantValue | undefined): KaladaValue;
8
+
9
+ export { runEvaluation };
@@ -0,0 +1,9 @@
1
+ import { JsonValue } from './json.js';
2
+ import { ResolvedKaladaV1Limits } from './limits.js';
3
+ import { InstantValue } from './temporal.js';
4
+ import { KaladaV1Expression, KaladaV1Resolver, KaladaV1FunctionCapture } from './types.js';
5
+ import { KaladaValue } from './values.js';
6
+
7
+ declare function runEvaluation<R extends JsonValue>(expression: KaladaV1Expression<R>, resolve: KaladaV1Resolver<R>, limits: ResolvedKaladaV1Limits, functions: readonly KaladaV1FunctionCapture[], instant: InstantValue | undefined): KaladaValue;
8
+
9
+ export { runEvaluation };