openalgo-script 0.1.0-alpha.0 → 0.2.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 (997) hide show
  1. package/CHANGELOG.md +1249 -0
  2. package/README.md +288 -255
  3. package/dist/adapters/charts/alerts.d.ts +70 -0
  4. package/dist/adapters/charts/alerts.d.ts.map +1 -0
  5. package/dist/adapters/charts/alerts.js +52 -0
  6. package/dist/adapters/charts/alerts.js.map +1 -0
  7. package/dist/adapters/charts/bars.d.ts +39 -0
  8. package/dist/adapters/charts/bars.d.ts.map +1 -0
  9. package/dist/adapters/charts/bars.js +32 -0
  10. package/dist/adapters/charts/bars.js.map +1 -0
  11. package/dist/adapters/charts/candles.d.ts +40 -0
  12. package/dist/adapters/charts/candles.d.ts.map +1 -0
  13. package/dist/adapters/charts/candles.js +85 -0
  14. package/dist/adapters/charts/candles.js.map +1 -0
  15. package/dist/adapters/charts/colours.d.ts +47 -0
  16. package/dist/adapters/charts/colours.d.ts.map +1 -0
  17. package/dist/adapters/charts/colours.js +80 -0
  18. package/dist/adapters/charts/colours.js.map +1 -0
  19. package/dist/adapters/charts/columns.d.ts +37 -0
  20. package/dist/adapters/charts/columns.d.ts.map +1 -0
  21. package/dist/adapters/charts/columns.js +56 -0
  22. package/dist/adapters/charts/columns.js.map +1 -0
  23. package/dist/adapters/charts/contract.d.ts +278 -0
  24. package/dist/adapters/charts/contract.d.ts.map +1 -0
  25. package/dist/adapters/charts/contract.js +2 -0
  26. package/dist/adapters/charts/contract.js.map +1 -0
  27. package/dist/adapters/charts/descriptor.d.ts +48 -0
  28. package/dist/adapters/charts/descriptor.d.ts.map +1 -0
  29. package/dist/adapters/charts/descriptor.js +111 -0
  30. package/dist/adapters/charts/descriptor.js.map +1 -0
  31. package/dist/adapters/charts/drawings.d.ts +43 -0
  32. package/dist/adapters/charts/drawings.d.ts.map +1 -0
  33. package/dist/adapters/charts/drawings.js +172 -0
  34. package/dist/adapters/charts/drawings.js.map +1 -0
  35. package/dist/adapters/charts/errors.d.ts +28 -0
  36. package/dist/adapters/charts/errors.d.ts.map +1 -0
  37. package/dist/adapters/charts/errors.js +21 -0
  38. package/dist/adapters/charts/errors.js.map +1 -0
  39. package/dist/adapters/charts/fields.d.ts +33 -0
  40. package/dist/adapters/charts/fields.d.ts.map +1 -0
  41. package/dist/adapters/charts/fields.js +51 -0
  42. package/dist/adapters/charts/fields.js.map +1 -0
  43. package/dist/adapters/charts/fills.d.ts +23 -0
  44. package/dist/adapters/charts/fills.d.ts.map +1 -0
  45. package/dist/adapters/charts/fills.js +48 -0
  46. package/dist/adapters/charts/fills.js.map +1 -0
  47. package/dist/adapters/charts/index.d.ts +37 -0
  48. package/dist/adapters/charts/index.d.ts.map +1 -0
  49. package/dist/adapters/charts/index.js +33 -0
  50. package/dist/adapters/charts/index.js.map +1 -0
  51. package/dist/adapters/charts/levels.d.ts +39 -0
  52. package/dist/adapters/charts/levels.d.ts.map +1 -0
  53. package/dist/adapters/charts/levels.js +61 -0
  54. package/dist/adapters/charts/levels.js.map +1 -0
  55. package/dist/adapters/charts/markers.d.ts +41 -0
  56. package/dist/adapters/charts/markers.d.ts.map +1 -0
  57. package/dist/adapters/charts/markers.js +75 -0
  58. package/dist/adapters/charts/markers.js.map +1 -0
  59. package/dist/adapters/charts/paint.d.ts +61 -0
  60. package/dist/adapters/charts/paint.d.ts.map +1 -0
  61. package/dist/adapters/charts/paint.js +47 -0
  62. package/dist/adapters/charts/paint.js.map +1 -0
  63. package/dist/adapters/charts/plots.d.ts +39 -0
  64. package/dist/adapters/charts/plots.d.ts.map +1 -0
  65. package/dist/adapters/charts/plots.js +117 -0
  66. package/dist/adapters/charts/plots.js.map +1 -0
  67. package/dist/adapters/charts/produced.d.ts +57 -0
  68. package/dist/adapters/charts/produced.d.ts.map +1 -0
  69. package/dist/adapters/charts/produced.js +11 -0
  70. package/dist/adapters/charts/produced.js.map +1 -0
  71. package/dist/adapters/charts/requests.d.ts +114 -0
  72. package/dist/adapters/charts/requests.d.ts.map +1 -0
  73. package/dist/adapters/charts/requests.js +277 -0
  74. package/dist/adapters/charts/requests.js.map +1 -0
  75. package/dist/adapters/charts/run.d.ts +147 -0
  76. package/dist/adapters/charts/run.d.ts.map +1 -0
  77. package/dist/adapters/charts/run.js +148 -0
  78. package/dist/adapters/charts/run.js.map +1 -0
  79. package/dist/adapters/charts/settings.d.ts +78 -0
  80. package/dist/adapters/charts/settings.d.ts.map +1 -0
  81. package/dist/adapters/charts/settings.js +225 -0
  82. package/dist/adapters/charts/settings.js.map +1 -0
  83. package/dist/adapters/charts/surfaces.d.ts +204 -0
  84. package/dist/adapters/charts/surfaces.d.ts.map +1 -0
  85. package/dist/adapters/charts/surfaces.js +2 -0
  86. package/dist/adapters/charts/surfaces.js.map +1 -0
  87. package/dist/adapters/charts/tables.d.ts +65 -0
  88. package/dist/adapters/charts/tables.d.ts.map +1 -0
  89. package/dist/adapters/charts/tables.js +84 -0
  90. package/dist/adapters/charts/tables.js.map +1 -0
  91. package/dist/core/catalogue/catalogue.generated.d.ts +98 -10
  92. package/dist/core/catalogue/catalogue.generated.d.ts.map +1 -1
  93. package/dist/core/catalogue/catalogue.generated.js +17 -9
  94. package/dist/core/catalogue/catalogue.generated.js.map +1 -1
  95. package/dist/core/catalogue/values.generated.d.ts +25 -0
  96. package/dist/core/catalogue/values.generated.d.ts.map +1 -1
  97. package/dist/core/check/arguments.d.ts +41 -0
  98. package/dist/core/check/arguments.d.ts.map +1 -0
  99. package/dist/core/check/arguments.js +84 -0
  100. package/dist/core/check/arguments.js.map +1 -0
  101. package/dist/core/check/call-sites.d.ts +22 -0
  102. package/dist/core/check/call-sites.d.ts.map +1 -0
  103. package/dist/core/check/call-sites.js +329 -0
  104. package/dist/core/check/call-sites.js.map +1 -0
  105. package/dist/core/check/call-warmup.d.ts +37 -0
  106. package/dist/core/check/call-warmup.d.ts.map +1 -0
  107. package/dist/core/check/call-warmup.js +97 -0
  108. package/dist/core/check/call-warmup.js.map +1 -0
  109. package/dist/core/check/calls.d.ts +33 -0
  110. package/dist/core/check/calls.d.ts.map +1 -0
  111. package/dist/core/check/calls.js +348 -0
  112. package/dist/core/check/calls.js.map +1 -0
  113. package/dist/core/check/check.d.ts +23 -0
  114. package/dist/core/check/check.d.ts.map +1 -0
  115. package/dist/core/check/check.js +163 -0
  116. package/dist/core/check/check.js.map +1 -0
  117. package/dist/core/check/checked.d.ts +198 -0
  118. package/dist/core/check/checked.d.ts.map +1 -0
  119. package/dist/core/check/checked.js +19 -0
  120. package/dist/core/check/checked.js.map +1 -0
  121. package/dist/core/check/checker.d.ts +182 -0
  122. package/dist/core/check/checker.d.ts.map +1 -0
  123. package/dist/core/check/checker.js +280 -0
  124. package/dist/core/check/checker.js.map +1 -0
  125. package/dist/core/check/conditional.d.ts +35 -0
  126. package/dist/core/check/conditional.d.ts.map +1 -0
  127. package/dist/core/check/conditional.js +100 -0
  128. package/dist/core/check/conditional.js.map +1 -0
  129. package/dist/core/check/constant.d.ts +47 -0
  130. package/dist/core/check/constant.d.ts.map +1 -0
  131. package/dist/core/check/constant.js +101 -0
  132. package/dist/core/check/constant.js.map +1 -0
  133. package/dist/core/check/declaration.d.ts +33 -0
  134. package/dist/core/check/declaration.d.ts.map +1 -0
  135. package/dist/core/check/declaration.js +181 -0
  136. package/dist/core/check/declaration.js.map +1 -0
  137. package/dist/core/check/expressions.d.ts +36 -0
  138. package/dist/core/check/expressions.d.ts.map +1 -0
  139. package/dist/core/check/expressions.js +398 -0
  140. package/dist/core/check/expressions.js.map +1 -0
  141. package/dist/core/check/functions.d.ts +31 -0
  142. package/dist/core/check/functions.d.ts.map +1 -0
  143. package/dist/core/check/functions.js +238 -0
  144. package/dist/core/check/functions.js.map +1 -0
  145. package/dist/core/check/handles.d.ts +48 -0
  146. package/dist/core/check/handles.d.ts.map +1 -0
  147. package/dist/core/check/handles.js +43 -0
  148. package/dist/core/check/handles.js.map +1 -0
  149. package/dist/core/check/index.d.ts +30 -0
  150. package/dist/core/check/index.d.ts.map +1 -0
  151. package/dist/core/check/index.js +26 -0
  152. package/dist/core/check/index.js.map +1 -0
  153. package/dist/core/check/library-bars.d.ts +7 -0
  154. package/dist/core/check/library-bars.d.ts.map +1 -0
  155. package/dist/core/check/library-bars.js +181 -0
  156. package/dist/core/check/library-bars.js.map +1 -0
  157. package/dist/core/check/library-orders.d.ts +5 -0
  158. package/dist/core/check/library-orders.d.ts.map +1 -0
  159. package/dist/core/check/library-orders.js +250 -0
  160. package/dist/core/check/library-orders.js.map +1 -0
  161. package/dist/core/check/library-output.d.ts +7 -0
  162. package/dist/core/check/library-output.d.ts.map +1 -0
  163. package/dist/core/check/library-output.js +195 -0
  164. package/dist/core/check/library-output.js.map +1 -0
  165. package/dist/core/check/library-series.d.ts +3 -0
  166. package/dist/core/check/library-series.d.ts.map +1 -0
  167. package/dist/core/check/library-series.js +415 -0
  168. package/dist/core/check/library-series.js.map +1 -0
  169. package/dist/core/check/library.d.ts +204 -0
  170. package/dist/core/check/library.d.ts.map +1 -0
  171. package/dist/core/check/library.js +198 -0
  172. package/dist/core/check/library.js.map +1 -0
  173. package/dist/core/check/literals.d.ts +19 -0
  174. package/dist/core/check/literals.d.ts.map +1 -0
  175. package/dist/core/check/literals.js +22 -0
  176. package/dist/core/check/literals.js.map +1 -0
  177. package/dist/core/check/outputs.d.ts +31 -0
  178. package/dist/core/check/outputs.d.ts.map +1 -0
  179. package/dist/core/check/outputs.js +113 -0
  180. package/dist/core/check/outputs.js.map +1 -0
  181. package/dist/core/check/statements.d.ts +25 -0
  182. package/dist/core/check/statements.d.ts.map +1 -0
  183. package/dist/core/check/statements.js +377 -0
  184. package/dist/core/check/statements.js.map +1 -0
  185. package/dist/core/check/suggest.d.ts +25 -0
  186. package/dist/core/check/suggest.d.ts.map +1 -0
  187. package/dist/core/check/suggest.js +61 -0
  188. package/dist/core/check/suggest.js.map +1 -0
  189. package/dist/core/check/surface.d.ts +38 -0
  190. package/dist/core/check/surface.d.ts.map +1 -0
  191. package/dist/core/check/surface.js +100 -0
  192. package/dist/core/check/surface.js.map +1 -0
  193. package/dist/core/check/tags.d.ts +4 -0
  194. package/dist/core/check/tags.d.ts.map +1 -0
  195. package/dist/core/check/tags.js +54 -0
  196. package/dist/core/check/tags.js.map +1 -0
  197. package/dist/core/check/types.d.ts +153 -0
  198. package/dist/core/check/types.d.ts.map +1 -0
  199. package/dist/core/check/types.js +221 -0
  200. package/dist/core/check/types.js.map +1 -0
  201. package/dist/core/check/warmup.d.ts +73 -0
  202. package/dist/core/check/warmup.d.ts.map +1 -0
  203. package/dist/core/check/warmup.js +62 -0
  204. package/dist/core/check/warmup.js.map +1 -0
  205. package/dist/core/diagnostics/collector.d.ts +12 -0
  206. package/dist/core/diagnostics/collector.d.ts.map +1 -1
  207. package/dist/core/diagnostics/collector.js +27 -1
  208. package/dist/core/diagnostics/collector.js.map +1 -1
  209. package/dist/core/emit/calls.d.ts +38 -0
  210. package/dist/core/emit/calls.d.ts.map +1 -0
  211. package/dist/core/emit/calls.js +347 -0
  212. package/dist/core/emit/calls.js.map +1 -0
  213. package/dist/core/emit/canonical.d.ts +39 -0
  214. package/dist/core/emit/canonical.d.ts.map +1 -0
  215. package/dist/core/emit/canonical.js +71 -0
  216. package/dist/core/emit/canonical.js.map +1 -0
  217. package/dist/core/emit/channels.d.ts +28 -0
  218. package/dist/core/emit/channels.d.ts.map +1 -0
  219. package/dist/core/emit/channels.js +110 -0
  220. package/dist/core/emit/channels.js.map +1 -0
  221. package/dist/core/emit/code.d.ts +75 -0
  222. package/dist/core/emit/code.d.ts.map +1 -0
  223. package/dist/core/emit/code.js +104 -0
  224. package/dist/core/emit/code.js.map +1 -0
  225. package/dist/core/emit/colours.d.ts +35 -0
  226. package/dist/core/emit/colours.d.ts.map +1 -0
  227. package/dist/core/emit/colours.js +50 -0
  228. package/dist/core/emit/colours.js.map +1 -0
  229. package/dist/core/emit/context.d.ts +271 -0
  230. package/dist/core/emit/context.d.ts.map +1 -0
  231. package/dist/core/emit/context.js +358 -0
  232. package/dist/core/emit/context.js.map +1 -0
  233. package/dist/core/emit/defaults.d.ts +45 -0
  234. package/dist/core/emit/defaults.d.ts.map +1 -0
  235. package/dist/core/emit/defaults.js +116 -0
  236. package/dist/core/emit/defaults.js.map +1 -0
  237. package/dist/core/emit/emit.d.ts +13 -0
  238. package/dist/core/emit/emit.d.ts.map +1 -0
  239. package/dist/core/emit/emit.js +281 -0
  240. package/dist/core/emit/emit.js.map +1 -0
  241. package/dist/core/emit/events.d.ts +21 -0
  242. package/dist/core/emit/events.d.ts.map +1 -0
  243. package/dist/core/emit/events.js +112 -0
  244. package/dist/core/emit/events.js.map +1 -0
  245. package/dist/core/emit/expressions.d.ts +23 -0
  246. package/dist/core/emit/expressions.d.ts.map +1 -0
  247. package/dist/core/emit/expressions.js +253 -0
  248. package/dist/core/emit/expressions.js.map +1 -0
  249. package/dist/core/emit/functions.d.ts +30 -0
  250. package/dist/core/emit/functions.d.ts.map +1 -0
  251. package/dist/core/emit/functions.js +171 -0
  252. package/dist/core/emit/functions.js.map +1 -0
  253. package/dist/core/emit/gaps.d.ts +34 -0
  254. package/dist/core/emit/gaps.d.ts.map +1 -0
  255. package/dist/core/emit/gaps.js +16 -0
  256. package/dist/core/emit/gaps.js.map +1 -0
  257. package/dist/core/emit/index.d.ts +29 -0
  258. package/dist/core/emit/index.d.ts.map +1 -0
  259. package/dist/core/emit/index.js +23 -0
  260. package/dist/core/emit/index.js.map +1 -0
  261. package/dist/core/emit/inputs.d.ts +47 -0
  262. package/dist/core/emit/inputs.d.ts.map +1 -0
  263. package/dist/core/emit/inputs.js +150 -0
  264. package/dist/core/emit/inputs.js.map +1 -0
  265. package/dist/core/emit/layout.d.ts +73 -0
  266. package/dist/core/emit/layout.d.ts.map +1 -0
  267. package/dist/core/emit/layout.js +126 -0
  268. package/dist/core/emit/layout.js.map +1 -0
  269. package/dist/core/emit/meta.d.ts +14 -0
  270. package/dist/core/emit/meta.d.ts.map +1 -0
  271. package/dist/core/emit/meta.js +68 -0
  272. package/dist/core/emit/meta.js.map +1 -0
  273. package/dist/core/emit/opcodes.d.ts +28 -0
  274. package/dist/core/emit/opcodes.d.ts.map +1 -0
  275. package/dist/core/emit/opcodes.js +137 -0
  276. package/dist/core/emit/opcodes.js.map +1 -0
  277. package/dist/core/emit/outputs.d.ts +67 -0
  278. package/dist/core/emit/outputs.d.ts.map +1 -0
  279. package/dist/core/emit/outputs.js +293 -0
  280. package/dist/core/emit/outputs.js.map +1 -0
  281. package/dist/core/emit/pool.d.ts +33 -0
  282. package/dist/core/emit/pool.d.ts.map +1 -0
  283. package/dist/core/emit/pool.js +79 -0
  284. package/dist/core/emit/pool.js.map +1 -0
  285. package/dist/core/emit/program.d.ts +333 -0
  286. package/dist/core/emit/program.d.ts.map +1 -0
  287. package/dist/core/emit/program.js +15 -0
  288. package/dist/core/emit/program.js.map +1 -0
  289. package/dist/core/emit/registers.d.ts +35 -0
  290. package/dist/core/emit/registers.d.ts.map +1 -0
  291. package/dist/core/emit/registers.js +170 -0
  292. package/dist/core/emit/registers.js.map +1 -0
  293. package/dist/core/emit/request-scope.d.ts +36 -0
  294. package/dist/core/emit/request-scope.d.ts.map +1 -0
  295. package/dist/core/emit/request-scope.js +41 -0
  296. package/dist/core/emit/request-scope.js.map +1 -0
  297. package/dist/core/emit/requests.d.ts +69 -0
  298. package/dist/core/emit/requests.d.ts.map +1 -0
  299. package/dist/core/emit/requests.js +230 -0
  300. package/dist/core/emit/requests.js.map +1 -0
  301. package/dist/core/emit/requires.d.ts +4 -0
  302. package/dist/core/emit/requires.d.ts.map +1 -0
  303. package/dist/core/emit/requires.js +71 -0
  304. package/dist/core/emit/requires.js.map +1 -0
  305. package/dist/core/emit/sha256.d.ts +24 -0
  306. package/dist/core/emit/sha256.d.ts.map +1 -0
  307. package/dist/core/emit/sha256.js +109 -0
  308. package/dist/core/emit/sha256.js.map +1 -0
  309. package/dist/core/emit/statements.d.ts +20 -0
  310. package/dist/core/emit/statements.d.ts.map +1 -0
  311. package/dist/core/emit/statements.js +393 -0
  312. package/dist/core/emit/statements.js.map +1 -0
  313. package/dist/core/emit/values.d.ts +80 -0
  314. package/dist/core/emit/values.d.ts.map +1 -0
  315. package/dist/core/emit/values.js +242 -0
  316. package/dist/core/emit/values.js.map +1 -0
  317. package/dist/core/engine/alerts.d.ts +66 -0
  318. package/dist/core/engine/alerts.d.ts.map +1 -0
  319. package/dist/core/engine/alerts.js +119 -0
  320. package/dist/core/engine/alerts.js.map +1 -0
  321. package/dist/core/engine/arithmetic.d.ts +82 -0
  322. package/dist/core/engine/arithmetic.d.ts.map +1 -0
  323. package/dist/core/engine/arithmetic.js +141 -0
  324. package/dist/core/engine/arithmetic.js.map +1 -0
  325. package/dist/core/engine/bars.d.ts +95 -0
  326. package/dist/core/engine/bars.d.ts.map +1 -0
  327. package/dist/core/engine/bars.js +133 -0
  328. package/dist/core/engine/bars.js.map +1 -0
  329. package/dist/core/engine/budget.d.ts +162 -0
  330. package/dist/core/engine/budget.d.ts.map +1 -0
  331. package/dist/core/engine/budget.js +188 -0
  332. package/dist/core/engine/budget.js.map +1 -0
  333. package/dist/core/engine/channels.d.ts +106 -0
  334. package/dist/core/engine/channels.d.ts.map +1 -0
  335. package/dist/core/engine/channels.js +99 -0
  336. package/dist/core/engine/channels.js.map +1 -0
  337. package/dist/core/engine/drawings.d.ts +64 -0
  338. package/dist/core/engine/drawings.d.ts.map +1 -0
  339. package/dist/core/engine/drawings.js +67 -0
  340. package/dist/core/engine/drawings.js.map +1 -0
  341. package/dist/core/engine/engine.d.ts +140 -0
  342. package/dist/core/engine/engine.d.ts.map +1 -0
  343. package/dist/core/engine/engine.js +405 -0
  344. package/dist/core/engine/engine.js.map +1 -0
  345. package/dist/core/engine/errors.d.ts +64 -0
  346. package/dist/core/engine/errors.d.ts.map +1 -0
  347. package/dist/core/engine/errors.js +63 -0
  348. package/dist/core/engine/errors.js.map +1 -0
  349. package/dist/core/engine/frames.d.ts +48 -0
  350. package/dist/core/engine/frames.d.ts.map +1 -0
  351. package/dist/core/engine/frames.js +41 -0
  352. package/dist/core/engine/frames.js.map +1 -0
  353. package/dist/core/engine/grids.d.ts +25 -0
  354. package/dist/core/engine/grids.d.ts.map +1 -0
  355. package/dist/core/engine/grids.js +77 -0
  356. package/dist/core/engine/grids.js.map +1 -0
  357. package/dist/core/engine/guard.d.ts +4 -0
  358. package/dist/core/engine/guard.d.ts.map +1 -0
  359. package/dist/core/engine/guard.js +46 -0
  360. package/dist/core/engine/guard.js.map +1 -0
  361. package/dist/core/engine/host.d.ts +219 -0
  362. package/dist/core/engine/host.d.ts.map +1 -0
  363. package/dist/core/engine/host.js +38 -0
  364. package/dist/core/engine/host.js.map +1 -0
  365. package/dist/core/engine/index.d.ts +49 -0
  366. package/dist/core/engine/index.d.ts.map +1 -0
  367. package/dist/core/engine/index.js +33 -0
  368. package/dist/core/engine/index.js.map +1 -0
  369. package/dist/core/engine/inputs.d.ts +77 -0
  370. package/dist/core/engine/inputs.d.ts.map +1 -0
  371. package/dist/core/engine/inputs.js +205 -0
  372. package/dist/core/engine/inputs.js.map +1 -0
  373. package/dist/core/engine/ledger/call.d.ts +63 -0
  374. package/dist/core/engine/ledger/call.d.ts.map +1 -0
  375. package/dist/core/engine/ledger/call.js +136 -0
  376. package/dist/core/engine/ledger/call.js.map +1 -0
  377. package/dist/core/engine/ledger/closable.d.ts +155 -0
  378. package/dist/core/engine/ledger/closable.d.ts.map +1 -0
  379. package/dist/core/engine/ledger/closable.js +173 -0
  380. package/dist/core/engine/ledger/closable.js.map +1 -0
  381. package/dist/core/engine/ledger/holdings.d.ts +194 -0
  382. package/dist/core/engine/ledger/holdings.d.ts.map +1 -0
  383. package/dist/core/engine/ledger/holdings.js +237 -0
  384. package/dist/core/engine/ledger/holdings.js.map +1 -0
  385. package/dist/core/engine/ledger/index.d.ts +19 -0
  386. package/dist/core/engine/ledger/index.d.ts.map +1 -0
  387. package/dist/core/engine/ledger/index.js +2 -0
  388. package/dist/core/engine/ledger/index.js.map +1 -0
  389. package/dist/core/engine/ledger/intent.d.ts +106 -0
  390. package/dist/core/engine/ledger/intent.d.ts.map +1 -0
  391. package/dist/core/engine/ledger/intent.js +21 -0
  392. package/dist/core/engine/ledger/intent.js.map +1 -0
  393. package/dist/core/engine/ledger/ledger.d.ts +143 -0
  394. package/dist/core/engine/ledger/ledger.d.ts.map +1 -0
  395. package/dist/core/engine/ledger/ledger.js +237 -0
  396. package/dist/core/engine/ledger/ledger.js.map +1 -0
  397. package/dist/core/engine/ledger/place.d.ts +75 -0
  398. package/dist/core/engine/ledger/place.d.ts.map +1 -0
  399. package/dist/core/engine/ledger/place.js +174 -0
  400. package/dist/core/engine/ledger/place.js.map +1 -0
  401. package/dist/core/engine/ledger/positions.d.ts +68 -0
  402. package/dist/core/engine/ledger/positions.d.ts.map +1 -0
  403. package/dist/core/engine/ledger/positions.js +114 -0
  404. package/dist/core/engine/ledger/positions.js.map +1 -0
  405. package/dist/core/engine/ledger/refuse.d.ts +43 -0
  406. package/dist/core/engine/ledger/refuse.d.ts.map +1 -0
  407. package/dist/core/engine/ledger/refuse.js +329 -0
  408. package/dist/core/engine/ledger/refuse.js.map +1 -0
  409. package/dist/core/engine/ledger/row.d.ts +176 -0
  410. package/dist/core/engine/ledger/row.d.ts.map +1 -0
  411. package/dist/core/engine/ledger/row.js +169 -0
  412. package/dist/core/engine/ledger/row.js.map +1 -0
  413. package/dist/core/engine/ledger/sizing.d.ts +142 -0
  414. package/dist/core/engine/ledger/sizing.d.ts.map +1 -0
  415. package/dist/core/engine/ledger/sizing.js +223 -0
  416. package/dist/core/engine/ledger/sizing.js.map +1 -0
  417. package/dist/core/engine/library/arrays.d.ts +14 -0
  418. package/dist/core/engine/library/arrays.d.ts.map +1 -0
  419. package/dist/core/engine/library/arrays.js +285 -0
  420. package/dist/core/engine/library/arrays.js.map +1 -0
  421. package/dist/core/engine/library/averages.d.ts +9 -0
  422. package/dist/core/engine/library/averages.d.ts.map +1 -0
  423. package/dist/core/engine/library/averages.js +41 -0
  424. package/dist/core/engine/library/averages.js.map +1 -0
  425. package/dist/core/engine/library/binding.d.ts +230 -0
  426. package/dist/core/engine/library/binding.d.ts.map +1 -0
  427. package/dist/core/engine/library/binding.js +109 -0
  428. package/dist/core/engine/library/binding.js.map +1 -0
  429. package/dist/core/engine/library/chart.d.ts +3 -0
  430. package/dist/core/engine/library/chart.d.ts.map +1 -0
  431. package/dist/core/engine/library/chart.js +83 -0
  432. package/dist/core/engine/library/chart.js.map +1 -0
  433. package/dist/core/engine/library/colours.d.ts +26 -0
  434. package/dist/core/engine/library/colours.d.ts.map +1 -0
  435. package/dist/core/engine/library/colours.js +81 -0
  436. package/dist/core/engine/library/colours.js.map +1 -0
  437. package/dist/core/engine/library/dates.d.ts +3 -0
  438. package/dist/core/engine/library/dates.d.ts.map +1 -0
  439. package/dist/core/engine/library/dates.js +75 -0
  440. package/dist/core/engine/library/dates.js.map +1 -0
  441. package/dist/core/engine/library/index.d.ts +13 -0
  442. package/dist/core/engine/library/index.d.ts.map +1 -0
  443. package/dist/core/engine/library/index.js +86 -0
  444. package/dist/core/engine/library/index.js.map +1 -0
  445. package/dist/core/engine/library/maths.d.ts +3 -0
  446. package/dist/core/engine/library/maths.d.ts.map +1 -0
  447. package/dist/core/engine/library/maths.js +89 -0
  448. package/dist/core/engine/library/maths.js.map +1 -0
  449. package/dist/core/engine/library/objects.d.ts +3 -0
  450. package/dist/core/engine/library/objects.d.ts.map +1 -0
  451. package/dist/core/engine/library/objects.js +199 -0
  452. package/dist/core/engine/library/objects.js.map +1 -0
  453. package/dist/core/engine/library/oscillators.d.ts +3 -0
  454. package/dist/core/engine/library/oscillators.d.ts.map +1 -0
  455. package/dist/core/engine/library/oscillators.js +29 -0
  456. package/dist/core/engine/library/oscillators.js.map +1 -0
  457. package/dist/core/engine/library/ranges.d.ts +3 -0
  458. package/dist/core/engine/library/ranges.d.ts.map +1 -0
  459. package/dist/core/engine/library/ranges.js +23 -0
  460. package/dist/core/engine/library/ranges.js.map +1 -0
  461. package/dist/core/engine/library/series.d.ts +3 -0
  462. package/dist/core/engine/library/series.d.ts.map +1 -0
  463. package/dist/core/engine/library/series.js +46 -0
  464. package/dist/core/engine/library/series.js.map +1 -0
  465. package/dist/core/engine/library/state.d.ts +35 -0
  466. package/dist/core/engine/library/state.d.ts.map +1 -0
  467. package/dist/core/engine/library/state.js +19 -0
  468. package/dist/core/engine/library/state.js.map +1 -0
  469. package/dist/core/engine/library/studies.d.ts +3 -0
  470. package/dist/core/engine/library/studies.d.ts.map +1 -0
  471. package/dist/core/engine/library/studies.js +35 -0
  472. package/dist/core/engine/library/studies.js.map +1 -0
  473. package/dist/core/engine/library/text.d.ts +6 -0
  474. package/dist/core/engine/library/text.d.ts.map +1 -0
  475. package/dist/core/engine/library/text.js +280 -0
  476. package/dist/core/engine/library/text.js.map +1 -0
  477. package/dist/core/engine/library/trend.d.ts +3 -0
  478. package/dist/core/engine/library/trend.d.ts.map +1 -0
  479. package/dist/core/engine/library/trend.js +29 -0
  480. package/dist/core/engine/library/trend.js.map +1 -0
  481. package/dist/core/engine/library/volume.d.ts +3 -0
  482. package/dist/core/engine/library/volume.d.ts.map +1 -0
  483. package/dist/core/engine/library/volume.js +51 -0
  484. package/dist/core/engine/library/volume.js.map +1 -0
  485. package/dist/core/engine/load.d.ts +45 -0
  486. package/dist/core/engine/load.d.ts.map +1 -0
  487. package/dist/core/engine/load.js +60 -0
  488. package/dist/core/engine/load.js.map +1 -0
  489. package/dist/core/engine/machine.d.ts +107 -0
  490. package/dist/core/engine/machine.d.ts.map +1 -0
  491. package/dist/core/engine/machine.js +337 -0
  492. package/dist/core/engine/machine.js.map +1 -0
  493. package/dist/core/engine/memory.d.ts +60 -0
  494. package/dist/core/engine/memory.d.ts.map +1 -0
  495. package/dist/core/engine/memory.js +92 -0
  496. package/dist/core/engine/memory.js.map +1 -0
  497. package/dist/core/engine/operations.d.ts +62 -0
  498. package/dist/core/engine/operations.d.ts.map +1 -0
  499. package/dist/core/engine/operations.js +149 -0
  500. package/dist/core/engine/operations.js.map +1 -0
  501. package/dist/core/engine/orders.d.ts +56 -0
  502. package/dist/core/engine/orders.d.ts.map +1 -0
  503. package/dist/core/engine/orders.js +83 -0
  504. package/dist/core/engine/orders.js.map +1 -0
  505. package/dist/core/engine/registers.d.ts +50 -0
  506. package/dist/core/engine/registers.d.ts.map +1 -0
  507. package/dist/core/engine/registers.js +85 -0
  508. package/dist/core/engine/registers.js.map +1 -0
  509. package/dist/core/engine/request-body.d.ts +138 -0
  510. package/dist/core/engine/request-body.d.ts.map +1 -0
  511. package/dist/core/engine/request-body.js +227 -0
  512. package/dist/core/engine/request-body.js.map +1 -0
  513. package/dist/core/engine/request-plan.d.ts +79 -0
  514. package/dist/core/engine/request-plan.d.ts.map +1 -0
  515. package/dist/core/engine/request-plan.js +228 -0
  516. package/dist/core/engine/request-plan.js.map +1 -0
  517. package/dist/core/engine/requests.d.ts +105 -0
  518. package/dist/core/engine/requests.d.ts.map +1 -0
  519. package/dist/core/engine/requests.js +260 -0
  520. package/dist/core/engine/requests.js.map +1 -0
  521. package/dist/core/engine/results.d.ts +40 -0
  522. package/dist/core/engine/results.d.ts.map +1 -0
  523. package/dist/core/engine/results.js +2 -0
  524. package/dist/core/engine/results.js.map +1 -0
  525. package/dist/core/engine/series.d.ts +61 -0
  526. package/dist/core/engine/series.d.ts.map +1 -0
  527. package/dist/core/engine/series.js +41 -0
  528. package/dist/core/engine/series.js.map +1 -0
  529. package/dist/core/engine/session/hours.d.ts +49 -0
  530. package/dist/core/engine/session/hours.d.ts.map +1 -0
  531. package/dist/core/engine/session/hours.js +31 -0
  532. package/dist/core/engine/session/hours.js.map +1 -0
  533. package/dist/core/engine/session/index.d.ts +17 -0
  534. package/dist/core/engine/session/index.d.ts.map +1 -0
  535. package/dist/core/engine/session/index.js +3 -0
  536. package/dist/core/engine/session/index.js.map +1 -0
  537. package/dist/core/engine/session/record.d.ts +56 -0
  538. package/dist/core/engine/session/record.d.ts.map +1 -0
  539. package/dist/core/engine/session/record.js +165 -0
  540. package/dist/core/engine/session/record.js.map +1 -0
  541. package/dist/core/engine/session/spec.d.ts +19 -0
  542. package/dist/core/engine/session/spec.d.ts.map +1 -0
  543. package/dist/core/engine/session/spec.js +31 -0
  544. package/dist/core/engine/session/spec.js.map +1 -0
  545. package/dist/core/engine/timeframe.d.ts +59 -0
  546. package/dist/core/engine/timeframe.d.ts.map +1 -0
  547. package/dist/core/engine/timeframe.js +140 -0
  548. package/dist/core/engine/timeframe.js.map +1 -0
  549. package/dist/core/engine/types.d.ts +15 -0
  550. package/dist/core/engine/types.d.ts.map +1 -0
  551. package/dist/core/engine/types.js +2 -0
  552. package/dist/core/engine/types.js.map +1 -0
  553. package/dist/core/engine/values/heap.d.ts +134 -0
  554. package/dist/core/engine/values/heap.d.ts.map +1 -0
  555. package/dist/core/engine/values/heap.js +230 -0
  556. package/dist/core/engine/values/heap.js.map +1 -0
  557. package/dist/core/engine/values/index.d.ts +13 -0
  558. package/dist/core/engine/values/index.d.ts.map +1 -0
  559. package/dist/core/engine/values/index.js +3 -0
  560. package/dist/core/engine/values/index.js.map +1 -0
  561. package/dist/core/engine/values/value.d.ts +82 -0
  562. package/dist/core/engine/values/value.d.ts.map +1 -0
  563. package/dist/core/engine/values/value.js +134 -0
  564. package/dist/core/engine/values/value.js.map +1 -0
  565. package/dist/core/engine/verify-budgets.d.ts +35 -0
  566. package/dist/core/engine/verify-budgets.d.ts.map +1 -0
  567. package/dist/core/engine/verify-budgets.js +172 -0
  568. package/dist/core/engine/verify-budgets.js.map +1 -0
  569. package/dist/core/engine/verify-code.d.ts +32 -0
  570. package/dist/core/engine/verify-code.d.ts.map +1 -0
  571. package/dist/core/engine/verify-code.js +278 -0
  572. package/dist/core/engine/verify-code.js.map +1 -0
  573. package/dist/core/engine/verify-requests.d.ts +44 -0
  574. package/dist/core/engine/verify-requests.d.ts.map +1 -0
  575. package/dist/core/engine/verify-requests.js +220 -0
  576. package/dist/core/engine/verify-requests.js.map +1 -0
  577. package/dist/core/engine/verify-shape.d.ts +46 -0
  578. package/dist/core/engine/verify-shape.d.ts.map +1 -0
  579. package/dist/core/engine/verify-shape.js +147 -0
  580. package/dist/core/engine/verify-shape.js.map +1 -0
  581. package/dist/core/engine/verify-tables.d.ts +19 -0
  582. package/dist/core/engine/verify-tables.d.ts.map +1 -0
  583. package/dist/core/engine/verify-tables.js +171 -0
  584. package/dist/core/engine/verify-tables.js.map +1 -0
  585. package/dist/core/engine/verify.d.ts +19 -0
  586. package/dist/core/engine/verify.d.ts.map +1 -0
  587. package/dist/core/engine/verify.js +309 -0
  588. package/dist/core/engine/verify.js.map +1 -0
  589. package/dist/core/index.d.ts +62 -6
  590. package/dist/core/index.d.ts.map +1 -1
  591. package/dist/core/index.js +49 -6
  592. package/dist/core/index.js.map +1 -1
  593. package/dist/core/parse/expressions.js +1 -1
  594. package/dist/core/parse/expressions.js.map +1 -1
  595. package/dist/core/parse/names.d.ts +7 -1
  596. package/dist/core/parse/names.d.ts.map +1 -1
  597. package/dist/core/parse/names.js +28 -2
  598. package/dist/core/parse/names.js.map +1 -1
  599. package/dist/core/stdlib/averages/exponential.d.ts +51 -0
  600. package/dist/core/stdlib/averages/exponential.d.ts.map +1 -0
  601. package/dist/core/stdlib/averages/exponential.js +72 -0
  602. package/dist/core/stdlib/averages/exponential.js.map +1 -0
  603. package/dist/core/stdlib/averages/index.d.ts +7 -0
  604. package/dist/core/stdlib/averages/index.d.ts.map +1 -0
  605. package/dist/core/stdlib/averages/index.js +5 -0
  606. package/dist/core/stdlib/averages/index.js.map +1 -0
  607. package/dist/core/stdlib/averages/select.d.ts +35 -0
  608. package/dist/core/stdlib/averages/select.d.ts.map +1 -0
  609. package/dist/core/stdlib/averages/select.js +43 -0
  610. package/dist/core/stdlib/averages/select.js.map +1 -0
  611. package/dist/core/stdlib/averages/shaped.d.ts +61 -0
  612. package/dist/core/stdlib/averages/shaped.d.ts.map +1 -0
  613. package/dist/core/stdlib/averages/shaped.js +126 -0
  614. package/dist/core/stdlib/averages/shaped.js.map +1 -0
  615. package/dist/core/stdlib/averages/simple.d.ts +58 -0
  616. package/dist/core/stdlib/averages/simple.d.ts.map +1 -0
  617. package/dist/core/stdlib/averages/simple.js +92 -0
  618. package/dist/core/stdlib/averages/simple.js.map +1 -0
  619. package/dist/core/stdlib/calendar/civil.d.ts +56 -0
  620. package/dist/core/stdlib/calendar/civil.d.ts.map +1 -0
  621. package/dist/core/stdlib/calendar/civil.js +70 -0
  622. package/dist/core/stdlib/calendar/civil.js.map +1 -0
  623. package/dist/core/stdlib/calendar/fields.d.ts +36 -0
  624. package/dist/core/stdlib/calendar/fields.d.ts.map +1 -0
  625. package/dist/core/stdlib/calendar/fields.js +93 -0
  626. package/dist/core/stdlib/calendar/fields.js.map +1 -0
  627. package/dist/core/stdlib/calendar/format.d.ts +19 -0
  628. package/dist/core/stdlib/calendar/format.d.ts.map +1 -0
  629. package/dist/core/stdlib/calendar/format.js +51 -0
  630. package/dist/core/stdlib/calendar/format.js.map +1 -0
  631. package/dist/core/stdlib/calendar/index.d.ts +7 -0
  632. package/dist/core/stdlib/calendar/index.d.ts.map +1 -0
  633. package/dist/core/stdlib/calendar/index.js +5 -0
  634. package/dist/core/stdlib/calendar/index.js.map +1 -0
  635. package/dist/core/stdlib/calendar/zone.d.ts +53 -0
  636. package/dist/core/stdlib/calendar/zone.d.ts.map +1 -0
  637. package/dist/core/stdlib/calendar/zone.js +138 -0
  638. package/dist/core/stdlib/calendar/zone.js.map +1 -0
  639. package/dist/core/stdlib/index.d.ts +57 -0
  640. package/dist/core/stdlib/index.d.ts.map +1 -0
  641. package/dist/core/stdlib/index.js +51 -0
  642. package/dist/core/stdlib/index.js.map +1 -0
  643. package/dist/core/stdlib/maths/arithmetic.d.ts +38 -0
  644. package/dist/core/stdlib/maths/arithmetic.d.ts.map +1 -0
  645. package/dist/core/stdlib/maths/arithmetic.js +66 -0
  646. package/dist/core/stdlib/maths/arithmetic.js.map +1 -0
  647. package/dist/core/stdlib/maths/elementary.d.ts +65 -0
  648. package/dist/core/stdlib/maths/elementary.d.ts.map +1 -0
  649. package/dist/core/stdlib/maths/elementary.js +93 -0
  650. package/dist/core/stdlib/maths/elementary.js.map +1 -0
  651. package/dist/core/stdlib/maths/index.d.ts +4 -0
  652. package/dist/core/stdlib/maths/index.d.ts.map +1 -0
  653. package/dist/core/stdlib/maths/index.js +4 -0
  654. package/dist/core/stdlib/maths/index.js.map +1 -0
  655. package/dist/core/stdlib/maths/rounding.d.ts +43 -0
  656. package/dist/core/stdlib/maths/rounding.d.ts.map +1 -0
  657. package/dist/core/stdlib/maths/rounding.js +62 -0
  658. package/dist/core/stdlib/maths/rounding.js.map +1 -0
  659. package/dist/core/stdlib/momentum/convergence.d.ts +36 -0
  660. package/dist/core/stdlib/momentum/convergence.d.ts.map +1 -0
  661. package/dist/core/stdlib/momentum/convergence.js +48 -0
  662. package/dist/core/stdlib/momentum/convergence.js.map +1 -0
  663. package/dist/core/stdlib/momentum/index.d.ts +6 -0
  664. package/dist/core/stdlib/momentum/index.d.ts.map +1 -0
  665. package/dist/core/stdlib/momentum/index.js +6 -0
  666. package/dist/core/stdlib/momentum/index.js.map +1 -0
  667. package/dist/core/stdlib/momentum/pressure.d.ts +43 -0
  668. package/dist/core/stdlib/momentum/pressure.d.ts.map +1 -0
  669. package/dist/core/stdlib/momentum/pressure.js +103 -0
  670. package/dist/core/stdlib/momentum/pressure.js.map +1 -0
  671. package/dist/core/stdlib/momentum/rates.d.ts +74 -0
  672. package/dist/core/stdlib/momentum/rates.d.ts.map +1 -0
  673. package/dist/core/stdlib/momentum/rates.js +134 -0
  674. package/dist/core/stdlib/momentum/rates.js.map +1 -0
  675. package/dist/core/stdlib/momentum/rsi.d.ts +21 -0
  676. package/dist/core/stdlib/momentum/rsi.d.ts.map +1 -0
  677. package/dist/core/stdlib/momentum/rsi.js +30 -0
  678. package/dist/core/stdlib/momentum/rsi.js.map +1 -0
  679. package/dist/core/stdlib/momentum/stochastic.d.ts +44 -0
  680. package/dist/core/stdlib/momentum/stochastic.d.ts.map +1 -0
  681. package/dist/core/stdlib/momentum/stochastic.js +97 -0
  682. package/dist/core/stdlib/momentum/stochastic.js.map +1 -0
  683. package/dist/core/stdlib/series/changes.d.ts +59 -0
  684. package/dist/core/stdlib/series/changes.d.ts.map +1 -0
  685. package/dist/core/stdlib/series/changes.js +129 -0
  686. package/dist/core/stdlib/series/changes.js.map +1 -0
  687. package/dist/core/stdlib/series/conditions.d.ts +34 -0
  688. package/dist/core/stdlib/series/conditions.d.ts.map +1 -0
  689. package/dist/core/stdlib/series/conditions.js +52 -0
  690. package/dist/core/stdlib/series/conditions.js.map +1 -0
  691. package/dist/core/stdlib/series/extremes.d.ts +29 -0
  692. package/dist/core/stdlib/series/extremes.d.ts.map +1 -0
  693. package/dist/core/stdlib/series/extremes.js +62 -0
  694. package/dist/core/stdlib/series/extremes.js.map +1 -0
  695. package/dist/core/stdlib/series/index.d.ts +9 -0
  696. package/dist/core/stdlib/series/index.d.ts.map +1 -0
  697. package/dist/core/stdlib/series/index.js +7 -0
  698. package/dist/core/stdlib/series/index.js.map +1 -0
  699. package/dist/core/stdlib/series/pivots.d.ts +25 -0
  700. package/dist/core/stdlib/series/pivots.d.ts.map +1 -0
  701. package/dist/core/stdlib/series/pivots.js +42 -0
  702. package/dist/core/stdlib/series/pivots.js.map +1 -0
  703. package/dist/core/stdlib/series/statistics.d.ts +64 -0
  704. package/dist/core/stdlib/series/statistics.d.ts.map +1 -0
  705. package/dist/core/stdlib/series/statistics.js +148 -0
  706. package/dist/core/stdlib/series/statistics.js.map +1 -0
  707. package/dist/core/stdlib/series/totals.d.ts +68 -0
  708. package/dist/core/stdlib/series/totals.d.ts.map +1 -0
  709. package/dist/core/stdlib/series/totals.js +115 -0
  710. package/dist/core/stdlib/series/totals.js.map +1 -0
  711. package/dist/core/stdlib/trend/directional.d.ts +69 -0
  712. package/dist/core/stdlib/trend/directional.d.ts.map +1 -0
  713. package/dist/core/stdlib/trend/directional.js +151 -0
  714. package/dist/core/stdlib/trend/directional.js.map +1 -0
  715. package/dist/core/stdlib/trend/index.d.ts +4 -0
  716. package/dist/core/stdlib/trend/index.d.ts.map +1 -0
  717. package/dist/core/stdlib/trend/index.js +4 -0
  718. package/dist/core/stdlib/trend/index.js.map +1 -0
  719. package/dist/core/stdlib/trend/psar.d.ts +33 -0
  720. package/dist/core/stdlib/trend/psar.d.ts.map +1 -0
  721. package/dist/core/stdlib/trend/psar.js +86 -0
  722. package/dist/core/stdlib/trend/psar.js.map +1 -0
  723. package/dist/core/stdlib/trend/supertrend.d.ts +30 -0
  724. package/dist/core/stdlib/trend/supertrend.d.ts.map +1 -0
  725. package/dist/core/stdlib/trend/supertrend.js +65 -0
  726. package/dist/core/stdlib/trend/supertrend.js.map +1 -0
  727. package/dist/core/stdlib/values/bar.d.ts +39 -0
  728. package/dist/core/stdlib/values/bar.d.ts.map +1 -0
  729. package/dist/core/stdlib/values/bar.js +33 -0
  730. package/dist/core/stdlib/values/bar.js.map +1 -0
  731. package/dist/core/stdlib/values/index.d.ts +11 -0
  732. package/dist/core/stdlib/values/index.d.ts.map +1 -0
  733. package/dist/core/stdlib/values/index.js +6 -0
  734. package/dist/core/stdlib/values/index.js.map +1 -0
  735. package/dist/core/stdlib/values/lookback.d.ts +83 -0
  736. package/dist/core/stdlib/values/lookback.d.ts.map +1 -0
  737. package/dist/core/stdlib/values/lookback.js +134 -0
  738. package/dist/core/stdlib/values/lookback.js.map +1 -0
  739. package/dist/core/stdlib/values/region.d.ts +55 -0
  740. package/dist/core/stdlib/values/region.d.ts.map +1 -0
  741. package/dist/core/stdlib/values/region.js +73 -0
  742. package/dist/core/stdlib/values/region.js.map +1 -0
  743. package/dist/core/stdlib/values/tail.d.ts +44 -0
  744. package/dist/core/stdlib/values/tail.d.ts.map +1 -0
  745. package/dist/core/stdlib/values/tail.js +23 -0
  746. package/dist/core/stdlib/values/tail.js.map +1 -0
  747. package/dist/core/stdlib/values/value.d.ts +64 -0
  748. package/dist/core/stdlib/values/value.d.ts.map +1 -0
  749. package/dist/core/stdlib/values/value.js +61 -0
  750. package/dist/core/stdlib/values/value.js.map +1 -0
  751. package/dist/core/stdlib/volatility/bands.d.ts +50 -0
  752. package/dist/core/stdlib/volatility/bands.d.ts.map +1 -0
  753. package/dist/core/stdlib/volatility/bands.js +101 -0
  754. package/dist/core/stdlib/volatility/bands.js.map +1 -0
  755. package/dist/core/stdlib/volatility/deviation.d.ts +43 -0
  756. package/dist/core/stdlib/volatility/deviation.d.ts.map +1 -0
  757. package/dist/core/stdlib/volatility/deviation.js +75 -0
  758. package/dist/core/stdlib/volatility/deviation.js.map +1 -0
  759. package/dist/core/stdlib/volatility/index.d.ts +6 -0
  760. package/dist/core/stdlib/volatility/index.d.ts.map +1 -0
  761. package/dist/core/stdlib/volatility/index.js +5 -0
  762. package/dist/core/stdlib/volatility/index.js.map +1 -0
  763. package/dist/core/stdlib/volatility/measures.d.ts +48 -0
  764. package/dist/core/stdlib/volatility/measures.d.ts.map +1 -0
  765. package/dist/core/stdlib/volatility/measures.js +73 -0
  766. package/dist/core/stdlib/volatility/measures.js.map +1 -0
  767. package/dist/core/stdlib/volatility/range.d.ts +69 -0
  768. package/dist/core/stdlib/volatility/range.d.ts.map +1 -0
  769. package/dist/core/stdlib/volatility/range.js +86 -0
  770. package/dist/core/stdlib/volatility/range.js.map +1 -0
  771. package/dist/core/stdlib/volume/accumulation.d.ts +61 -0
  772. package/dist/core/stdlib/volume/accumulation.d.ts.map +1 -0
  773. package/dist/core/stdlib/volume/accumulation.js +127 -0
  774. package/dist/core/stdlib/volume/accumulation.js.map +1 -0
  775. package/dist/core/stdlib/volume/flow.d.ts +60 -0
  776. package/dist/core/stdlib/volume/flow.d.ts.map +1 -0
  777. package/dist/core/stdlib/volume/flow.js +125 -0
  778. package/dist/core/stdlib/volume/flow.js.map +1 -0
  779. package/dist/core/stdlib/volume/index.d.ts +5 -0
  780. package/dist/core/stdlib/volume/index.d.ts.map +1 -0
  781. package/dist/core/stdlib/volume/index.js +4 -0
  782. package/dist/core/stdlib/volume/index.js.map +1 -0
  783. package/dist/core/stdlib/volume/weighted.d.ts +52 -0
  784. package/dist/core/stdlib/volume/weighted.d.ts.map +1 -0
  785. package/dist/core/stdlib/volume/weighted.js +64 -0
  786. package/dist/core/stdlib/volume/weighted.js.map +1 -0
  787. package/dist/core/version/index.d.ts +2 -0
  788. package/dist/core/version/index.d.ts.map +1 -0
  789. package/dist/core/version/index.js +2 -0
  790. package/dist/core/version/index.js.map +1 -0
  791. package/dist/core/version/version.generated.d.ts +10 -0
  792. package/dist/core/version/version.generated.d.ts.map +1 -0
  793. package/dist/core/version/version.generated.js +14 -0
  794. package/dist/core/version/version.generated.js.map +1 -0
  795. package/package.json +88 -52
  796. package/spec/errors.json +3403 -3204
  797. package/src/adapters/charts/alerts.ts +116 -0
  798. package/src/adapters/charts/bars.ts +63 -0
  799. package/src/adapters/charts/candles.ts +137 -0
  800. package/src/adapters/charts/colours.ts +113 -0
  801. package/src/adapters/charts/columns.ts +99 -0
  802. package/src/adapters/charts/contract.ts +320 -0
  803. package/src/adapters/charts/descriptor.ts +199 -0
  804. package/src/adapters/charts/drawings.ts +213 -0
  805. package/src/adapters/charts/errors.ts +45 -0
  806. package/src/adapters/charts/fields.ts +74 -0
  807. package/src/adapters/charts/fills.ts +71 -0
  808. package/src/adapters/charts/index.ts +78 -0
  809. package/src/adapters/charts/levels.ts +92 -0
  810. package/src/adapters/charts/markers.ts +119 -0
  811. package/src/adapters/charts/paint.ts +101 -0
  812. package/src/adapters/charts/plots.ts +185 -0
  813. package/src/adapters/charts/produced.ts +68 -0
  814. package/src/adapters/charts/requests.ts +357 -0
  815. package/src/adapters/charts/run.ts +327 -0
  816. package/src/adapters/charts/settings.ts +273 -0
  817. package/src/adapters/charts/surfaces.ts +238 -0
  818. package/src/adapters/charts/tables.ts +155 -0
  819. package/src/core/catalogue/catalogue.generated.ts +17 -9
  820. package/src/core/catalogue/values.generated.ts +8 -0
  821. package/src/core/check/arguments.ts +126 -0
  822. package/src/core/check/call-sites.ts +385 -0
  823. package/src/core/check/call-warmup.ts +121 -0
  824. package/src/core/check/calls.ts +412 -0
  825. package/src/core/check/check.ts +183 -0
  826. package/src/core/check/checked.ts +228 -0
  827. package/src/core/check/checker.ts +393 -0
  828. package/src/core/check/conditional.ts +143 -0
  829. package/src/core/check/constant.ts +127 -0
  830. package/src/core/check/declaration.ts +230 -0
  831. package/src/core/check/expressions.ts +471 -0
  832. package/src/core/check/functions.ts +283 -0
  833. package/src/core/check/handles.ts +75 -0
  834. package/src/core/check/index.ts +67 -0
  835. package/src/core/check/library-bars.ts +194 -0
  836. package/src/core/check/library-orders.ts +290 -0
  837. package/src/core/check/library-output.ts +241 -0
  838. package/src/core/check/library-series.ts +457 -0
  839. package/src/core/check/library.ts +374 -0
  840. package/src/core/check/literals.ts +35 -0
  841. package/src/core/check/outputs.ts +152 -0
  842. package/src/core/check/statements.ts +465 -0
  843. package/src/core/check/suggest.ts +63 -0
  844. package/src/core/check/surface.ts +115 -0
  845. package/src/core/check/tags.ts +94 -0
  846. package/src/core/check/types.ts +260 -0
  847. package/src/core/check/warmup.ts +100 -0
  848. package/src/core/diagnostics/collector.ts +27 -1
  849. package/src/core/emit/calls.ts +415 -0
  850. package/src/core/emit/canonical.ts +81 -0
  851. package/src/core/emit/channels.ts +144 -0
  852. package/src/core/emit/code.ts +155 -0
  853. package/src/core/emit/colours.ts +75 -0
  854. package/src/core/emit/context.ts +461 -0
  855. package/src/core/emit/defaults.ts +150 -0
  856. package/src/core/emit/emit.ts +313 -0
  857. package/src/core/emit/events.ts +141 -0
  858. package/src/core/emit/expressions.ts +292 -0
  859. package/src/core/emit/functions.ts +195 -0
  860. package/src/core/emit/gaps.ts +44 -0
  861. package/src/core/emit/index.ts +74 -0
  862. package/src/core/emit/inputs.ts +179 -0
  863. package/src/core/emit/layout.ts +165 -0
  864. package/src/core/emit/meta.ts +104 -0
  865. package/src/core/emit/opcodes.ts +160 -0
  866. package/src/core/emit/outputs.ts +357 -0
  867. package/src/core/emit/pool.ts +102 -0
  868. package/src/core/emit/program.ts +385 -0
  869. package/src/core/emit/registers.ts +179 -0
  870. package/src/core/emit/request-scope.ts +52 -0
  871. package/src/core/emit/requests.ts +258 -0
  872. package/src/core/emit/requires.ts +91 -0
  873. package/src/core/emit/sha256.ts +119 -0
  874. package/src/core/emit/statements.ts +438 -0
  875. package/src/core/emit/values.ts +284 -0
  876. package/src/core/engine/alerts.ts +152 -0
  877. package/src/core/engine/arithmetic.ts +165 -0
  878. package/src/core/engine/bars.ts +224 -0
  879. package/src/core/engine/budget.ts +284 -0
  880. package/src/core/engine/channels.ts +171 -0
  881. package/src/core/engine/drawings.ts +127 -0
  882. package/src/core/engine/engine.ts +498 -0
  883. package/src/core/engine/errors.ts +100 -0
  884. package/src/core/engine/frames.ts +85 -0
  885. package/src/core/engine/grids.ts +98 -0
  886. package/src/core/engine/guard.ts +71 -0
  887. package/src/core/engine/host.ts +251 -0
  888. package/src/core/engine/index.ts +93 -0
  889. package/src/core/engine/inputs.ts +263 -0
  890. package/src/core/engine/ledger/call.ts +218 -0
  891. package/src/core/engine/ledger/closable.ts +269 -0
  892. package/src/core/engine/ledger/holdings.ts +354 -0
  893. package/src/core/engine/ledger/index.ts +28 -0
  894. package/src/core/engine/ledger/intent.ts +112 -0
  895. package/src/core/engine/ledger/ledger.ts +314 -0
  896. package/src/core/engine/ledger/place.ts +277 -0
  897. package/src/core/engine/ledger/positions.ts +123 -0
  898. package/src/core/engine/ledger/refuse.ts +378 -0
  899. package/src/core/engine/ledger/row.ts +318 -0
  900. package/src/core/engine/ledger/sizing.ts +292 -0
  901. package/src/core/engine/library/arrays.ts +316 -0
  902. package/src/core/engine/library/averages.ts +97 -0
  903. package/src/core/engine/library/binding.ts +325 -0
  904. package/src/core/engine/library/chart.ts +115 -0
  905. package/src/core/engine/library/colours.ts +111 -0
  906. package/src/core/engine/library/dates.ts +109 -0
  907. package/src/core/engine/library/index.ts +103 -0
  908. package/src/core/engine/library/maths.ts +134 -0
  909. package/src/core/engine/library/objects.ts +265 -0
  910. package/src/core/engine/library/oscillators.ts +124 -0
  911. package/src/core/engine/library/ranges.ts +51 -0
  912. package/src/core/engine/library/series.ts +236 -0
  913. package/src/core/engine/library/state.ts +47 -0
  914. package/src/core/engine/library/studies.ts +150 -0
  915. package/src/core/engine/library/text.ts +303 -0
  916. package/src/core/engine/library/trend.ts +79 -0
  917. package/src/core/engine/library/volume.ts +101 -0
  918. package/src/core/engine/load.ts +104 -0
  919. package/src/core/engine/machine.ts +446 -0
  920. package/src/core/engine/memory.ts +129 -0
  921. package/src/core/engine/operations.ts +171 -0
  922. package/src/core/engine/orders.ts +121 -0
  923. package/src/core/engine/registers.ts +104 -0
  924. package/src/core/engine/request-body.ts +328 -0
  925. package/src/core/engine/request-plan.ts +270 -0
  926. package/src/core/engine/requests.ts +382 -0
  927. package/src/core/engine/results.ts +41 -0
  928. package/src/core/engine/series.ts +82 -0
  929. package/src/core/engine/session/hours.ts +86 -0
  930. package/src/core/engine/session/index.ts +17 -0
  931. package/src/core/engine/session/record.ts +191 -0
  932. package/src/core/engine/session/spec.ts +45 -0
  933. package/src/core/engine/timeframe.ts +161 -0
  934. package/src/core/engine/types.ts +47 -0
  935. package/src/core/engine/values/heap.ts +295 -0
  936. package/src/core/engine/values/index.ts +34 -0
  937. package/src/core/engine/values/value.ts +158 -0
  938. package/src/core/engine/verify-budgets.ts +202 -0
  939. package/src/core/engine/verify-code.ts +332 -0
  940. package/src/core/engine/verify-requests.ts +255 -0
  941. package/src/core/engine/verify-shape.ts +164 -0
  942. package/src/core/engine/verify-tables.ts +176 -0
  943. package/src/core/engine/verify.ts +341 -0
  944. package/src/core/index.ts +129 -6
  945. package/src/core/parse/expressions.ts +1 -1
  946. package/src/core/parse/functions.ts +109 -109
  947. package/src/core/parse/names.ts +29 -2
  948. package/src/core/parse/switches.ts +105 -105
  949. package/src/core/stdlib/averages/exponential.ts +119 -0
  950. package/src/core/stdlib/averages/index.ts +45 -0
  951. package/src/core/stdlib/averages/select.ts +71 -0
  952. package/src/core/stdlib/averages/shaped.ts +161 -0
  953. package/src/core/stdlib/averages/simple.ts +139 -0
  954. package/src/core/stdlib/calendar/civil.ts +89 -0
  955. package/src/core/stdlib/calendar/fields.ts +124 -0
  956. package/src/core/stdlib/calendar/format.ts +71 -0
  957. package/src/core/stdlib/calendar/index.ts +15 -0
  958. package/src/core/stdlib/calendar/zone.ts +161 -0
  959. package/src/core/stdlib/index.ts +400 -0
  960. package/src/core/stdlib/maths/arithmetic.ts +74 -0
  961. package/src/core/stdlib/maths/elementary.ts +124 -0
  962. package/src/core/stdlib/maths/index.ts +43 -0
  963. package/src/core/stdlib/maths/rounding.ts +78 -0
  964. package/src/core/stdlib/momentum/convergence.ts +82 -0
  965. package/src/core/stdlib/momentum/index.ts +47 -0
  966. package/src/core/stdlib/momentum/pressure.ts +141 -0
  967. package/src/core/stdlib/momentum/rates.ts +188 -0
  968. package/src/core/stdlib/momentum/rsi.ts +49 -0
  969. package/src/core/stdlib/momentum/stochastic.ts +147 -0
  970. package/src/core/stdlib/series/changes.ts +177 -0
  971. package/src/core/stdlib/series/conditions.ts +74 -0
  972. package/src/core/stdlib/series/extremes.ts +92 -0
  973. package/src/core/stdlib/series/index.ts +83 -0
  974. package/src/core/stdlib/series/pivots.ts +63 -0
  975. package/src/core/stdlib/series/statistics.ts +207 -0
  976. package/src/core/stdlib/series/totals.ts +164 -0
  977. package/src/core/stdlib/trend/directional.ts +196 -0
  978. package/src/core/stdlib/trend/index.ts +13 -0
  979. package/src/core/stdlib/trend/psar.ts +131 -0
  980. package/src/core/stdlib/trend/supertrend.ts +100 -0
  981. package/src/core/stdlib/values/bar.ts +54 -0
  982. package/src/core/stdlib/values/index.ts +14 -0
  983. package/src/core/stdlib/values/lookback.ts +198 -0
  984. package/src/core/stdlib/values/region.ts +86 -0
  985. package/src/core/stdlib/values/tail.ts +58 -0
  986. package/src/core/stdlib/values/value.ts +82 -0
  987. package/src/core/stdlib/volatility/bands.ts +178 -0
  988. package/src/core/stdlib/volatility/deviation.ts +111 -0
  989. package/src/core/stdlib/volatility/index.ts +48 -0
  990. package/src/core/stdlib/volatility/measures.ts +96 -0
  991. package/src/core/stdlib/volatility/range.ts +143 -0
  992. package/src/core/stdlib/volume/accumulation.ts +152 -0
  993. package/src/core/stdlib/volume/flow.ts +173 -0
  994. package/src/core/stdlib/volume/index.ts +43 -0
  995. package/src/core/stdlib/volume/weighted.ts +101 -0
  996. package/src/core/version/index.ts +1 -0
  997. package/src/core/version/version.generated.ts +15 -0
@@ -0,0 +1,415 @@
1
+ /**
2
+ * Calls: to the library, to a user function, and to the handful of names that
3
+ * declare part of the file rather than computing anything.
4
+ *
5
+ * The split in this file is the one the task of emitting a program turns on. A
6
+ * `plot` call is a fixed entry in `outputs` plus one `EMIT` per bar, and it is
7
+ * not a function an engine calls at all. An `ema` call is a `CALL_LIB` with a
8
+ * state region. A call to a `fn` is a `CALL_FN` naming a call site, and the
9
+ * call site rather than the body is where that call's cells and state live.
10
+ */
11
+ import type { Call, Expression, Member, NameReference } from '../ast/index.js';
12
+ import { withoutGrouping } from '../ast/index.js';
13
+ import type { LibraryEntry, LibraryParameter } from '../check/index.js';
14
+ import { libraryEntries } from '../check/index.js';
15
+ import { namedColour } from './colours.js';
16
+ import type { Value } from './values.js';
17
+ import type { Emitter, Frame } from './context.js';
18
+ import { arityOf, calleeText, effectOf } from './context.js';
19
+ import { emitExpression } from './expressions.js';
20
+ import { bodyFor } from './functions.js';
21
+ import { emitInputRead } from './inputs.js';
22
+ import { emitDeclarationCall } from './outputs.js';
23
+ import { registerOfName } from './registers.js';
24
+ import {
25
+ REQUEST_CALLS,
26
+ REQUEST_STATUS_CALLS,
27
+ emitRequestRead,
28
+ requestIdFor,
29
+ } from './requests.js';
30
+
31
+ /** Whether a call leaves a value on the stack, which a statement has to pop. */
32
+ export function leavesValue(e: Emitter, expression: Expression): boolean {
33
+ const node = withoutGrouping(expression);
34
+ if (node.kind !== 'call') return true;
35
+ const checked = e.callAt(node);
36
+ const name = checked?.name ?? calleeText(node.callee);
37
+ return !e.isDeclaration(name);
38
+ }
39
+
40
+ /**
41
+ * Whether an expression is entirely one `input()` call.
42
+ *
43
+ * The declaration calls leave nothing on the stack, which is what `leavesValue`
44
+ * answers, and `input()` is the one of them that also has a value to leave when
45
+ * a value is what was asked for (`language.md` 13.4). One place needs the
46
+ * narrower question: `var len = input(14, "Length")`, where the initialiser is
47
+ * a value to put in a cell rather than a declaration the name stands for.
48
+ */
49
+ export function isInputCall(e: Emitter, expression: Expression): boolean {
50
+ const node = withoutGrouping(expression);
51
+ return node.kind === 'call' && e.callAt(node)?.name === 'input';
52
+ }
53
+
54
+ export function emitCall(e: Emitter, f: Frame, call: Call): void {
55
+ const checked = e.callAt(call);
56
+ if (checked === undefined || checked.target === 'unresolved') {
57
+ f.builder.at(call.span);
58
+ f.builder.push('CONST', e.pool.absent());
59
+ return;
60
+ }
61
+
62
+ if (e.isDeclaration(checked.name)) {
63
+ // A declaration written as a statement of its own never arrives here:
64
+ // `statements.ts` sends all three of its forms straight to the declaration
65
+ // path. So an `input()` that reaches this point stands where a value
66
+ // belongs, and the value is what it has to leave behind. `outputs.ts`
67
+ // argues that split, which is the one this call is decided by.
68
+ if (checked.name === 'input') {
69
+ emitInputRead(e, f, call);
70
+ return;
71
+ }
72
+ emitDeclarationCall(e, f, call, checked.name, undefined);
73
+ return;
74
+ }
75
+
76
+ if (REQUEST_CALLS.has(checked.name)) {
77
+ // One entry of `requests` and one register the engine fills, 2.16. The
78
+ // expression argument is not emitted here: it belongs to the requested
79
+ // bars, and emitting it inline would compute it on this chart's.
80
+ emitRequestRead(e, f, call, checked);
81
+ return;
82
+ }
83
+
84
+ if (checked.target === 'user' && checked.fn !== undefined) {
85
+ emitUserCall(e, f, call, checked.fn, checked.arguments, checked.seriesArguments);
86
+ return;
87
+ }
88
+
89
+ const entry = checked.entry;
90
+ if (entry === undefined) {
91
+ f.builder.at(call.span);
92
+ f.builder.push('CONST', e.pool.absent());
93
+ return;
94
+ }
95
+ emitLibraryCall(e, f, call, entry, checked.arguments);
96
+ }
97
+
98
+ /**
99
+ * A library call: every argument in parameter order, then `CALL_LIB`.
100
+ *
101
+ * Named arguments, argument order and defaults are entirely a compile-time
102
+ * matter (4.10), so an engine never sees a name, never consults a signature and
103
+ * never holds a table of defaults. All three happen here.
104
+ *
105
+ * **An omitted argument is filled, not dropped.** It used to be emitted as
106
+ * absent, because the surface recorded which parameters were optional and not
107
+ * what each one defaulted to, and the cost of that was the whole reason this
108
+ * paragraph exists: a lookback of an absent length answers absence on every
109
+ * bar for ever, so `atr()` written exactly as `stdlib.md` prints it compiled
110
+ * clean, loaded clean, ran to the last bar and drew nothing at all.
111
+ *
112
+ * **An order call carries one argument more than the surface shows.** For every
113
+ * other call, filling a default is the whole of the job and the value is the
114
+ * whole of the answer. For an order call it is not, because two of its defaults
115
+ * are absence itself: `buy(qty = the declaration's, limit = none, stop = none)`.
116
+ * An argument left out and an argument written that came out absent then reach
117
+ * an engine as the same value, and `language.md` 6.8 gives them opposite
118
+ * meanings: the first takes the documented default, and the second is a size or
119
+ * a price nobody computed and is OS7002. `buy()` and `buy(qty = none)` compiled
120
+ * to byte identical programs, so the refusal had nothing to fire on, and
121
+ * `buy(qty = 1, stop = lowest(low, 20))`, which is the catalogue's own worked
122
+ * example for OS7002, sent a market order on every bar of the window instead.
123
+ *
124
+ * So the last argument of an order call is the names of the arguments the
125
+ * script wrote, in parameter order, separated by spaces. It is a value like any
126
+ * other and the engine reads it like any other, which is why this needs no new
127
+ * value, no new instruction and no change to the format: only the nine order
128
+ * functions' manifest signatures, `compiled-program.md` 2.5 and 4.10.
129
+ *
130
+ * It is the last argument rather than the first because that is where a reader
131
+ * of the program meets it after the arguments it describes, and it names the
132
+ * arguments rather than numbering them so that a compiled program stays
133
+ * readable by hand (2.14).
134
+ */
135
+ function emitLibraryCall(
136
+ e: Emitter,
137
+ f: Frame,
138
+ call: Call,
139
+ entry: LibraryEntry,
140
+ args: readonly ({ readonly value: Expression } | undefined)[],
141
+ ): void {
142
+ const index = e.libraryFunction(entry);
143
+
144
+ if (REQUEST_STATUS_CALLS.has(entry.name)) {
145
+ emitReadHandle(e, f, call, args[0]?.value);
146
+ f.builder.at(call.span);
147
+ f.builder.push('CALL_LIB', index, arityOf(entry), -1);
148
+ return;
149
+ }
150
+
151
+ const ordering = effectOf(entry) === 'order';
152
+ const written: string[] = [];
153
+ for (let i = 0; i < entry.parameters.length; i += 1) {
154
+ const argument = args[i];
155
+ const parameter = entry.parameters[i];
156
+ if (argument !== undefined) {
157
+ if (parameter !== undefined) written.push(parameter.name);
158
+ emitExpression(e, f, argument.value);
159
+ continue;
160
+ }
161
+ emitDefault(e, f, call, parameter, ordering);
162
+ }
163
+
164
+ if (ordering) {
165
+ f.builder.at(call.span);
166
+ f.builder.push('CONST', e.pool.string(written.join(' ')));
167
+ }
168
+
169
+ f.builder.at(call.span);
170
+ const state = entry.stateful ? f.layout.state(index) : -1;
171
+ f.builder.push('CALL_LIB', index, arityOf(entry), state);
172
+ }
173
+
174
+ /**
175
+ * The argument a script left out, from the default its signature declares.
176
+ *
177
+ * A default is a value, and values are the emitter's: 4.10 puts named
178
+ * arguments, argument order and defaults entirely at compile time. Most are a
179
+ * constant. A handful are a name the compiler reads at the call instead, which
180
+ * 4.10 also provides for: a default that is an expression rather than a literal
181
+ * is compiled into the call site, and `vwap(src = hlc3)` is that case in a
182
+ * library the specification writes as a table.
183
+ *
184
+ * A default that is neither is a defect in the surface and it blocks. Emitting
185
+ * absence there is what produced a study with no values on any bar and nothing
186
+ * reported anywhere, and a program that is not emitted is the honest form of
187
+ * that. `scripts/check-defaults.mjs` is what stops it reaching here at all.
188
+ */
189
+ function emitDefault(
190
+ e: Emitter,
191
+ f: Frame,
192
+ call: Call,
193
+ parameter: LibraryParameter | undefined,
194
+ ordering: boolean,
195
+ ): void {
196
+ f.builder.at(call.span);
197
+
198
+ if (parameter === undefined || parameter.defaultText === undefined) {
199
+ // The specification states no value for this argument: `leg = the only
200
+ // leg` names the file's own declaration rather than a value the library
201
+ // knows. Absence is what it carries, and whatever receives it decides.
202
+ // Each one is recorded with its reason in `spec/default-exceptions.json`,
203
+ // and nothing else may be in this state.
204
+ //
205
+ // On an order call this is not a gap. The call carries the names of the
206
+ // arguments the script wrote, so absence here says "the script wrote
207
+ // nothing" rather than "the value is unknown", and the engine applies the
208
+ // default the specification states instead of guessing which it was.
209
+ if (!ordering) {
210
+ e.gap(
211
+ 'an omitted optional argument is emitted as absent, because the specification states no ' +
212
+ 'value for it and names the declaration that decides instead',
213
+ 'compiled-program.md 4.10, against stdlib.md section 1',
214
+ call.span,
215
+ false,
216
+ );
217
+ }
218
+ f.builder.push('CONST', e.pool.absent());
219
+ return;
220
+ }
221
+
222
+ const value = defaultOf(parameter);
223
+ const constant = value === undefined ? undefined : e.pool.of(value);
224
+ if (constant !== undefined) {
225
+ f.builder.push('CONST', constant);
226
+ return;
227
+ }
228
+ if (emitNamedRead(e, f, parameter.defaultText)) return;
229
+
230
+ e.gap(
231
+ `the library surface gives a default of \`${parameter.defaultText}\` which is neither a ` +
232
+ "value of the parameter's type nor a library name that can be read, so there is nothing " +
233
+ 'to fill the argument with',
234
+ 'compiled-program.md 4.10, against stdlib.md section 1',
235
+ call.span,
236
+ true,
237
+ );
238
+ f.builder.push('CONST', e.pool.absent());
239
+ }
240
+
241
+ /**
242
+ * The constant a default's text names, or nothing when it names no constant.
243
+ *
244
+ * Nothing is not a failure here: `hlc3` and `chart.timezone` are defaults the
245
+ * specification states and neither is a literal of its parameter's type, so the
246
+ * caller reads them instead. What this must never do is guess. A text that is
247
+ * not a value of this type is not turned into one, because a value this
248
+ * compiler invented would be indistinguishable, on the chart, from the value
249
+ * the specification meant.
250
+ *
251
+ * A named colour stays a constant, unlike every other bare library name. That
252
+ * is deliberate and it is the one place the two paths disagree: the channels
253
+ * are settled here for a drawing's default and read from the manifest for a
254
+ * colour a script wrote (`stdlib.md` 11.1). Reversing it would change programs
255
+ * that are already compiled and compared byte for byte.
256
+ */
257
+ function defaultOf(parameter: LibraryParameter): Value | undefined {
258
+ const text = parameter.defaultText;
259
+ if (text === undefined) return undefined;
260
+ if (text === 'none') return { kind: 'absent' };
261
+ switch (parameter.type.kind) {
262
+ case 'bool':
263
+ return text === 'true' || text === 'false'
264
+ ? { kind: 'bool', value: text === 'true' }
265
+ : undefined;
266
+ case 'number': {
267
+ const value = Number(text);
268
+ return Number.isFinite(value) ? { kind: 'number', value } : undefined;
269
+ }
270
+ case 'string':
271
+ return text.length >= 2 && text.startsWith('"') && text.endsWith('"')
272
+ ? { kind: 'string', value: text.slice(1, -1) }
273
+ : undefined;
274
+ case 'color': {
275
+ const value = namedColour(text);
276
+ return value === undefined ? undefined : { kind: 'colour', value };
277
+ }
278
+ default:
279
+ return undefined;
280
+ }
281
+ }
282
+
283
+ /**
284
+ * The read `req.isReady` and `req.error` are asking about, as its id (2.16).
285
+ *
286
+ * The argument names a read rather than carrying one: a value on a bar cannot
287
+ * say which request produced it, and the two calls answer about the request.
288
+ * A name that holds no read is absent, which is what those two answer for a
289
+ * read that does not exist; the checker takes any value here, so this is the
290
+ * one place that can tell.
291
+ */
292
+ function emitReadHandle(e: Emitter, f: Frame, call: Call, argument: Expression | undefined): void {
293
+ const id = argument === undefined ? undefined : requestIdFor(e, argument);
294
+ f.builder.at(call.span);
295
+ if (id === undefined) {
296
+ e.gap(
297
+ 'a read status call was given something that is not a name holding a read, and the ' +
298
+ 'signature admits any value, so there is no request for it to ask about',
299
+ 'compiled-program.md 2.16, against stdlib.md 15.1',
300
+ call.span,
301
+ false,
302
+ );
303
+ f.builder.push('CONST', e.pool.absent());
304
+ return;
305
+ }
306
+ f.builder.push('CONST', e.pool.number(id));
307
+ }
308
+
309
+ /**
310
+ * A call to a `fn`, and the registers the call site has to retain for it.
311
+ *
312
+ * A series argument is always given a fresh register, even when the argument is
313
+ * a bare series name whose register already exists (4.10). Binding the existing
314
+ * one would give the body history on bars where the call did not execute, which
315
+ * would make a call inside an `if` behave differently from a call inside a
316
+ * function inside an `if`.
317
+ */
318
+ function emitUserCall(
319
+ e: Emitter,
320
+ f: Frame,
321
+ call: Call,
322
+ checkedFunction: number,
323
+ args: readonly ({ readonly value: Expression } | undefined)[],
324
+ seriesArguments: readonly number[],
325
+ ): void {
326
+ const declared = e.checked.functions[checkedFunction];
327
+ const parameters = declared?.parameters.length ?? args.length;
328
+ const site = e.newSite(0, parameters);
329
+ f.sites.push(site.index);
330
+ site.series = new Array<number>(parameters).fill(-1);
331
+
332
+ // The body is emitted before the arguments are pushed, because the body is
333
+ // what says which parameters need a register: a `HISTP` against a parameter
334
+ // the call site bound `-1` is a corrupt program, and the checker can only
335
+ // mark a parameter it was able to prove is a series (`language.md` 11.2).
336
+ site.fn = bodyFor(e, checkedFunction, site);
337
+ const retained = new Set<number>(seriesArguments);
338
+ for (const instruction of e.functions[site.fn]?.code ?? []) {
339
+ if (instruction[0] === 'HISTP') retained.add(instruction[1] ?? 0);
340
+ }
341
+
342
+ for (let i = 0; i < parameters; i += 1) {
343
+ const argument = args[i];
344
+ if (argument === undefined) {
345
+ // A parameter's own default is compiled into the call site rather than
346
+ // into the body (4.10), and the tree carries it on the declaration.
347
+ const fallback = declared?.declaration.parameters[i]?.defaultValue;
348
+ if (fallback === undefined) {
349
+ f.builder.at(call.span);
350
+ f.builder.push('CONST', e.pool.absent());
351
+ } else {
352
+ emitExpression(e, f, fallback);
353
+ }
354
+ } else {
355
+ emitExpression(e, f, argument.value);
356
+ }
357
+
358
+ if (!retained.has(i)) continue;
359
+ const register = e.layout.argument(declared?.parameters[i]?.name ?? `arg${i}`);
360
+ site.series[i] = register;
361
+ f.builder.at(call.span);
362
+ f.builder.push('DUP');
363
+ f.builder.push('SSTORE', register);
364
+ }
365
+
366
+ f.builder.at(call.span);
367
+ f.builder.push('CALL_FN', site.index);
368
+ }
369
+
370
+ /**
371
+ * A library value read without brackets: a bar series, a named colour, a fact
372
+ * about the chart, the session or the position.
373
+ *
374
+ * Only a bar series is a register. Everything else is a value the host supplies
375
+ * and the only instruction that can fetch one is a call of no arguments, so
376
+ * that is what it compiles to and the engine's own manifest decides the value.
377
+ * A named colour goes the same way deliberately: the exact channels are the
378
+ * manifest's (`stdlib.md` 11.1), and a colour that reaches a bar should come
379
+ * from there rather than from this compiler's stand-in table.
380
+ */
381
+ export function emitLibraryValue(e: Emitter, f: Frame, node: NameReference | Member): void {
382
+ const name = node.kind === 'nameReference' ? node.name : memberName(node);
383
+ f.builder.at(node.span);
384
+ if (emitNamedRead(e, f, name)) return;
385
+ f.builder.push('CONST', e.pool.absent());
386
+ }
387
+
388
+ /**
389
+ * One bare library read, by name, or false when the name is not one.
390
+ *
391
+ * Two callers, and they are the same read: a name a script wrote, and a name a
392
+ * signature gives as a default. A default that is an expression is compiled
393
+ * into the call site (4.10), and for this library an expression is always one
394
+ * of these names, so `vwap()` emits exactly what `vwap(hlc3)` emits rather than
395
+ * something close to it. The caller positions the span before calling.
396
+ */
397
+ function emitNamedRead(e: Emitter, f: Frame, name: string): boolean {
398
+ const register = registerOfName(e, name);
399
+ if (register !== undefined) {
400
+ f.builder.push('SLOAD', register);
401
+ return true;
402
+ }
403
+
404
+ const entry = libraryEntries(name).find((one) => !one.callable);
405
+ if (entry === undefined) return false;
406
+ const index = e.libraryFunction(entry);
407
+ const state = entry.stateful ? f.layout.state(index) : -1;
408
+ f.builder.push('CALL_LIB', index, 0, state);
409
+ return true;
410
+ }
411
+
412
+ function memberName(node: Member): string {
413
+ const object = withoutGrouping(node.object);
414
+ return object.kind === 'nameReference' ? `${object.name}.${node.member.text}` : node.member.text;
415
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * The canonical encoding, `compiled-program.md` 2.14.
3
+ *
4
+ * It exists so that a hash of a program means something: two compilers, in two
5
+ * languages, handed the same source, produce the same bytes. So none of the
6
+ * rules below is cosmetic, and none of them is this file's invention.
7
+ *
8
+ * - UTF-8, no byte order mark, no whitespace between tokens.
9
+ * - Object keys sorted ascending by Unicode code point. Sorted rather than in
10
+ * the specification's listed order, because a sort is a rule an emitter in any
11
+ * language can follow without a table.
12
+ * - A number is the shortest decimal string that reads back as the same
13
+ * binary64 value, with an exponent written as `e` and an optional `-`.
14
+ * - A string escapes only the quote, the backslash and the code points below
15
+ * 0x20, the last as `\u00XX` except for `\n`, `\r` and `\t`.
16
+ */
17
+ import type { CompiledProgram } from './program.js';
18
+ import { sha256 } from './sha256.js';
19
+
20
+ /**
21
+ * A number, shortest round trip.
22
+ *
23
+ * The host's own shortest form is already the shortest that reads back
24
+ * identically. What it is not is the spelling the specification asks for: a
25
+ * positive exponent is written with a `+` that the format does not allow, so
26
+ * that one sign is removed and nothing else is touched.
27
+ */
28
+ export function canonicalNumber(value: number): string {
29
+ if (!Number.isFinite(value)) throw new Error('a compiled program holds finite numbers only');
30
+ return String(value === 0 ? 0 : value).replace('e+', 'e');
31
+ }
32
+
33
+ export function canonicalString(value: string): string {
34
+ let out = '"';
35
+ for (const character of value) {
36
+ const code = character.codePointAt(0) ?? 0;
37
+ if (character === '"') out += '\\"';
38
+ else if (character === '\\') out += '\\\\';
39
+ else if (character === '\n') out += '\\n';
40
+ else if (character === '\r') out += '\\r';
41
+ else if (character === '\t') out += '\\t';
42
+ else if (code < 0x20) out += `\\u${code.toString(16).padStart(4, '0')}`;
43
+ else out += character;
44
+ }
45
+ return `${out}"`;
46
+ }
47
+
48
+ export function canonicalise(value: unknown): string {
49
+ if (value === null || value === undefined) return 'null';
50
+ if (typeof value === 'boolean') return value ? 'true' : 'false';
51
+ if (typeof value === 'number') return canonicalNumber(value);
52
+ if (typeof value === 'string') return canonicalString(value);
53
+ if (Array.isArray(value)) return `[${value.map(canonicalise).join(',')}]`;
54
+ if (typeof value === 'object') {
55
+ const entries = Object.entries(value as Record<string, unknown>).filter(
56
+ ([, one]) => one !== undefined,
57
+ );
58
+ entries.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
59
+ const body = entries
60
+ .map(([key, one]) => `${canonicalString(key)}:${canonicalise(one)}`)
61
+ .join(',');
62
+ return `{${body}}`;
63
+ }
64
+ throw new Error(`a compiled program holds no value of this kind: ${typeof value}`);
65
+ }
66
+
67
+ /**
68
+ * The two hashes a host records against a run.
69
+ *
70
+ * `source.hash` identifies the source and the hash of the canonical encoding
71
+ * identifies the program, and they are two answers because a compiler change
72
+ * that alters what a source compiles to has to be visible without the source
73
+ * having changed at all.
74
+ */
75
+ export function sourceHash(text: string): string {
76
+ return `sha256:${sha256(text)}`;
77
+ }
78
+
79
+ export function programHash(program: CompiledProgram): string {
80
+ return `sha256:${sha256(canonicalise(program))}`;
81
+ }
@@ -0,0 +1,144 @@
1
+ /**
2
+ * The order the channel table is written in.
3
+ *
4
+ * `compiled-program.md` 2.7 says only that a channel's `id` equals its position
5
+ * in the array, so any order is a legal program. The worked example of 12.2 is
6
+ * the whole of the evidence about which order to choose, and it shows a plot
7
+ * declared on the last line of the script holding channel 0 while a `signal`
8
+ * three lines above it holds channel 1. So the specification's own order is not the
9
+ * order the declarations are met in; it is the order `outputs` lists its
10
+ * fields.
11
+ *
12
+ * That is the rule applied here, and it is applied as a renumbering after the
13
+ * fact rather than by emitting in two passes: a channel's index is needed the
14
+ * moment an `EMIT` is written, and an emitter that walked the file twice to
15
+ * learn it would have two places that decide what a declaration is.
16
+ */
17
+ import type { Emitter } from './context.js';
18
+ import type { Channel, Instruction, Outputs } from './program.js';
19
+
20
+ /** The channels each output group owns, in the order `outputs` lists them. */
21
+ function declaredOrder(e: Emitter): readonly number[] {
22
+ const order: number[] = [];
23
+ const take = (channel: number | null | undefined): void => {
24
+ if (typeof channel === 'number' && !order.includes(channel)) order.push(channel);
25
+ };
26
+
27
+ for (const plot of e.plots) {
28
+ take(plot.channel);
29
+ take(plot.colorChannel);
30
+ if (plot.ohlc === null) continue;
31
+ take(plot.ohlc.open);
32
+ take(plot.ohlc.high);
33
+ take(plot.ohlc.low);
34
+ take(plot.ohlc.close);
35
+ take(plot.ohlc.colorUpChannel);
36
+ take(plot.ohlc.colorDownChannel);
37
+ take(plot.ohlc.wickColorChannel);
38
+ take(plot.ohlc.borderColorChannel);
39
+ }
40
+ for (const band of e.fills) {
41
+ take(band.colorUpChannel);
42
+ take(band.colorDownChannel);
43
+ }
44
+ for (const level of e.levels) take(level.channel);
45
+ for (const marker of e.markers) take(marker.channel);
46
+ for (const alert of e.alerts) {
47
+ take(alert.condChannel);
48
+ take(alert.messageChannel);
49
+ }
50
+ take(e.barColor?.channel);
51
+ take(e.background?.channel);
52
+
53
+ // A channel no declaration reached would be one nothing can draw, so this is
54
+ // insurance against a future surface rather than a case that happens today.
55
+ for (let id = 0; id < e.layout.channels.length; id += 1) take(id);
56
+ return order;
57
+ }
58
+
59
+ export interface ChannelOrder {
60
+ readonly channels: readonly Channel[];
61
+ readonly names: readonly string[];
62
+ /** The new index of each old one, for rewriting an `EMIT` and a declaration. */
63
+ readonly moved: readonly number[];
64
+ }
65
+
66
+ export function orderChannels(e: Emitter): ChannelOrder {
67
+ const order = declaredOrder(e);
68
+ const moved = new Array<number>(e.layout.channels.length).fill(0);
69
+ order.forEach((old, index) => {
70
+ moved[old] = index;
71
+ });
72
+
73
+ const channels = order.map((old, index) => {
74
+ const channel = e.layout.channels[old];
75
+ return {
76
+ id: index,
77
+ type: channel?.type ?? 'number',
78
+ defer: channel?.defer ?? false,
79
+ once: channel?.once ?? false,
80
+ } as Channel;
81
+ });
82
+
83
+ return { channels, names: order.map((old) => e.layout.channelNames[old] ?? ''), moved };
84
+ }
85
+
86
+ export function renumberCode(
87
+ code: readonly Instruction[],
88
+ moved: readonly number[],
89
+ ): readonly Instruction[] {
90
+ return code.map((instruction) =>
91
+ instruction[0] === 'EMIT'
92
+ ? (['EMIT', moved[instruction[1] ?? 0] ?? 0] as Instruction)
93
+ : instruction,
94
+ );
95
+ }
96
+
97
+ function move(moved: readonly number[], channel: number | null): number | null {
98
+ return channel === null ? null : (moved[channel] ?? channel);
99
+ }
100
+
101
+ export function renumberOutputs(e: Emitter, moved: readonly number[]): Outputs {
102
+ return {
103
+ plots: e.plots.map((plot) => ({
104
+ ...plot,
105
+ channel: move(moved, plot.channel) ?? plot.channel,
106
+ colorChannel: move(moved, plot.colorChannel),
107
+ ohlc:
108
+ plot.ohlc === null
109
+ ? null
110
+ : {
111
+ ...plot.ohlc,
112
+ open: move(moved, plot.ohlc.open) ?? plot.ohlc.open,
113
+ high: move(moved, plot.ohlc.high) ?? plot.ohlc.high,
114
+ low: move(moved, plot.ohlc.low) ?? plot.ohlc.low,
115
+ close: move(moved, plot.ohlc.close) ?? plot.ohlc.close,
116
+ colorUpChannel: move(moved, plot.ohlc.colorUpChannel),
117
+ colorDownChannel: move(moved, plot.ohlc.colorDownChannel),
118
+ wickColorChannel: move(moved, plot.ohlc.wickColorChannel),
119
+ borderColorChannel: move(moved, plot.ohlc.borderColorChannel),
120
+ },
121
+ })),
122
+ fills: e.fills.map((band) => ({
123
+ ...band,
124
+ colorUpChannel: move(moved, band.colorUpChannel),
125
+ colorDownChannel: move(moved, band.colorDownChannel),
126
+ })),
127
+ levels: e.levels.map((level) => ({
128
+ ...level,
129
+ channel: move(moved, level.channel) ?? level.channel,
130
+ })),
131
+ markers: e.markers.map((marker) => ({
132
+ ...marker,
133
+ channel: move(moved, marker.channel) ?? marker.channel,
134
+ })),
135
+ tables: e.tables,
136
+ alerts: e.alerts.map((alert) => ({
137
+ ...alert,
138
+ condChannel: move(moved, alert.condChannel) ?? alert.condChannel,
139
+ messageChannel: move(moved, alert.messageChannel),
140
+ })),
141
+ barColor: e.barColor === null ? null : { channel: move(moved, e.barColor.channel) ?? 0 },
142
+ background: e.background === null ? null : { channel: move(moved, e.background.channel) ?? 0 },
143
+ };
144
+ }