openalgo-script 0.1.0-alpha.1 → 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.
- package/CHANGELOG.md +1200 -0
- package/README.md +49 -28
- package/dist/adapters/charts/alerts.d.ts +70 -0
- package/dist/adapters/charts/alerts.d.ts.map +1 -0
- package/dist/adapters/charts/alerts.js +52 -0
- package/dist/adapters/charts/alerts.js.map +1 -0
- package/dist/adapters/charts/bars.d.ts +39 -0
- package/dist/adapters/charts/bars.d.ts.map +1 -0
- package/dist/adapters/charts/bars.js +32 -0
- package/dist/adapters/charts/bars.js.map +1 -0
- package/dist/adapters/charts/candles.d.ts +40 -0
- package/dist/adapters/charts/candles.d.ts.map +1 -0
- package/dist/adapters/charts/candles.js +85 -0
- package/dist/adapters/charts/candles.js.map +1 -0
- package/dist/adapters/charts/colours.d.ts +47 -0
- package/dist/adapters/charts/colours.d.ts.map +1 -0
- package/dist/adapters/charts/colours.js +80 -0
- package/dist/adapters/charts/colours.js.map +1 -0
- package/dist/adapters/charts/columns.d.ts +37 -0
- package/dist/adapters/charts/columns.d.ts.map +1 -0
- package/dist/adapters/charts/columns.js +56 -0
- package/dist/adapters/charts/columns.js.map +1 -0
- package/dist/adapters/charts/contract.d.ts +278 -0
- package/dist/adapters/charts/contract.d.ts.map +1 -0
- package/dist/adapters/charts/contract.js +2 -0
- package/dist/adapters/charts/contract.js.map +1 -0
- package/dist/adapters/charts/descriptor.d.ts +48 -0
- package/dist/adapters/charts/descriptor.d.ts.map +1 -0
- package/dist/adapters/charts/descriptor.js +111 -0
- package/dist/adapters/charts/descriptor.js.map +1 -0
- package/dist/adapters/charts/drawings.d.ts +43 -0
- package/dist/adapters/charts/drawings.d.ts.map +1 -0
- package/dist/adapters/charts/drawings.js +172 -0
- package/dist/adapters/charts/drawings.js.map +1 -0
- package/dist/adapters/charts/errors.d.ts +28 -0
- package/dist/adapters/charts/errors.d.ts.map +1 -0
- package/dist/adapters/charts/errors.js +21 -0
- package/dist/adapters/charts/errors.js.map +1 -0
- package/dist/adapters/charts/fields.d.ts +33 -0
- package/dist/adapters/charts/fields.d.ts.map +1 -0
- package/dist/adapters/charts/fields.js +51 -0
- package/dist/adapters/charts/fields.js.map +1 -0
- package/dist/adapters/charts/fills.d.ts +23 -0
- package/dist/adapters/charts/fills.d.ts.map +1 -0
- package/dist/adapters/charts/fills.js +48 -0
- package/dist/adapters/charts/fills.js.map +1 -0
- package/dist/adapters/charts/index.d.ts +37 -0
- package/dist/adapters/charts/index.d.ts.map +1 -0
- package/dist/adapters/charts/index.js +33 -0
- package/dist/adapters/charts/index.js.map +1 -0
- package/dist/adapters/charts/levels.d.ts +39 -0
- package/dist/adapters/charts/levels.d.ts.map +1 -0
- package/dist/adapters/charts/levels.js +61 -0
- package/dist/adapters/charts/levels.js.map +1 -0
- package/dist/adapters/charts/markers.d.ts +41 -0
- package/dist/adapters/charts/markers.d.ts.map +1 -0
- package/dist/adapters/charts/markers.js +75 -0
- package/dist/adapters/charts/markers.js.map +1 -0
- package/dist/adapters/charts/paint.d.ts +61 -0
- package/dist/adapters/charts/paint.d.ts.map +1 -0
- package/dist/adapters/charts/paint.js +47 -0
- package/dist/adapters/charts/paint.js.map +1 -0
- package/dist/adapters/charts/plots.d.ts +39 -0
- package/dist/adapters/charts/plots.d.ts.map +1 -0
- package/dist/adapters/charts/plots.js +117 -0
- package/dist/adapters/charts/plots.js.map +1 -0
- package/dist/adapters/charts/produced.d.ts +57 -0
- package/dist/adapters/charts/produced.d.ts.map +1 -0
- package/dist/adapters/charts/produced.js +11 -0
- package/dist/adapters/charts/produced.js.map +1 -0
- package/dist/adapters/charts/requests.d.ts +114 -0
- package/dist/adapters/charts/requests.d.ts.map +1 -0
- package/dist/adapters/charts/requests.js +277 -0
- package/dist/adapters/charts/requests.js.map +1 -0
- package/dist/adapters/charts/run.d.ts +147 -0
- package/dist/adapters/charts/run.d.ts.map +1 -0
- package/dist/adapters/charts/run.js +148 -0
- package/dist/adapters/charts/run.js.map +1 -0
- package/dist/adapters/charts/settings.d.ts +78 -0
- package/dist/adapters/charts/settings.d.ts.map +1 -0
- package/dist/adapters/charts/settings.js +225 -0
- package/dist/adapters/charts/settings.js.map +1 -0
- package/dist/adapters/charts/surfaces.d.ts +204 -0
- package/dist/adapters/charts/surfaces.d.ts.map +1 -0
- package/dist/adapters/charts/surfaces.js +2 -0
- package/dist/adapters/charts/surfaces.js.map +1 -0
- package/dist/adapters/charts/tables.d.ts +65 -0
- package/dist/adapters/charts/tables.d.ts.map +1 -0
- package/dist/adapters/charts/tables.js +84 -0
- package/dist/adapters/charts/tables.js.map +1 -0
- package/dist/core/catalogue/catalogue.generated.d.ts +98 -10
- package/dist/core/catalogue/catalogue.generated.d.ts.map +1 -1
- package/dist/core/catalogue/catalogue.generated.js +17 -9
- package/dist/core/catalogue/catalogue.generated.js.map +1 -1
- package/dist/core/catalogue/values.generated.d.ts +25 -0
- package/dist/core/catalogue/values.generated.d.ts.map +1 -1
- package/dist/core/check/arguments.d.ts +41 -0
- package/dist/core/check/arguments.d.ts.map +1 -0
- package/dist/core/check/arguments.js +84 -0
- package/dist/core/check/arguments.js.map +1 -0
- package/dist/core/check/call-sites.d.ts +22 -0
- package/dist/core/check/call-sites.d.ts.map +1 -0
- package/dist/core/check/call-sites.js +329 -0
- package/dist/core/check/call-sites.js.map +1 -0
- package/dist/core/check/call-warmup.d.ts +37 -0
- package/dist/core/check/call-warmup.d.ts.map +1 -0
- package/dist/core/check/call-warmup.js +97 -0
- package/dist/core/check/call-warmup.js.map +1 -0
- package/dist/core/check/calls.d.ts +33 -0
- package/dist/core/check/calls.d.ts.map +1 -0
- package/dist/core/check/calls.js +348 -0
- package/dist/core/check/calls.js.map +1 -0
- package/dist/core/check/check.d.ts +23 -0
- package/dist/core/check/check.d.ts.map +1 -0
- package/dist/core/check/check.js +163 -0
- package/dist/core/check/check.js.map +1 -0
- package/dist/core/check/checked.d.ts +198 -0
- package/dist/core/check/checked.d.ts.map +1 -0
- package/dist/core/check/checked.js +19 -0
- package/dist/core/check/checked.js.map +1 -0
- package/dist/core/check/checker.d.ts +182 -0
- package/dist/core/check/checker.d.ts.map +1 -0
- package/dist/core/check/checker.js +280 -0
- package/dist/core/check/checker.js.map +1 -0
- package/dist/core/check/conditional.d.ts +35 -0
- package/dist/core/check/conditional.d.ts.map +1 -0
- package/dist/core/check/conditional.js +100 -0
- package/dist/core/check/conditional.js.map +1 -0
- package/dist/core/check/constant.d.ts +47 -0
- package/dist/core/check/constant.d.ts.map +1 -0
- package/dist/core/check/constant.js +101 -0
- package/dist/core/check/constant.js.map +1 -0
- package/dist/core/check/declaration.d.ts +33 -0
- package/dist/core/check/declaration.d.ts.map +1 -0
- package/dist/core/check/declaration.js +181 -0
- package/dist/core/check/declaration.js.map +1 -0
- package/dist/core/check/expressions.d.ts +36 -0
- package/dist/core/check/expressions.d.ts.map +1 -0
- package/dist/core/check/expressions.js +398 -0
- package/dist/core/check/expressions.js.map +1 -0
- package/dist/core/check/functions.d.ts +31 -0
- package/dist/core/check/functions.d.ts.map +1 -0
- package/dist/core/check/functions.js +238 -0
- package/dist/core/check/functions.js.map +1 -0
- package/dist/core/check/handles.d.ts +48 -0
- package/dist/core/check/handles.d.ts.map +1 -0
- package/dist/core/check/handles.js +43 -0
- package/dist/core/check/handles.js.map +1 -0
- package/dist/core/check/index.d.ts +30 -0
- package/dist/core/check/index.d.ts.map +1 -0
- package/dist/core/check/index.js +26 -0
- package/dist/core/check/index.js.map +1 -0
- package/dist/core/check/library-bars.d.ts +7 -0
- package/dist/core/check/library-bars.d.ts.map +1 -0
- package/dist/core/check/library-bars.js +181 -0
- package/dist/core/check/library-bars.js.map +1 -0
- package/dist/core/check/library-orders.d.ts +5 -0
- package/dist/core/check/library-orders.d.ts.map +1 -0
- package/dist/core/check/library-orders.js +250 -0
- package/dist/core/check/library-orders.js.map +1 -0
- package/dist/core/check/library-output.d.ts +7 -0
- package/dist/core/check/library-output.d.ts.map +1 -0
- package/dist/core/check/library-output.js +195 -0
- package/dist/core/check/library-output.js.map +1 -0
- package/dist/core/check/library-series.d.ts +3 -0
- package/dist/core/check/library-series.d.ts.map +1 -0
- package/dist/core/check/library-series.js +415 -0
- package/dist/core/check/library-series.js.map +1 -0
- package/dist/core/check/library.d.ts +204 -0
- package/dist/core/check/library.d.ts.map +1 -0
- package/dist/core/check/library.js +198 -0
- package/dist/core/check/library.js.map +1 -0
- package/dist/core/check/literals.d.ts +19 -0
- package/dist/core/check/literals.d.ts.map +1 -0
- package/dist/core/check/literals.js +22 -0
- package/dist/core/check/literals.js.map +1 -0
- package/dist/core/check/outputs.d.ts +31 -0
- package/dist/core/check/outputs.d.ts.map +1 -0
- package/dist/core/check/outputs.js +113 -0
- package/dist/core/check/outputs.js.map +1 -0
- package/dist/core/check/statements.d.ts +25 -0
- package/dist/core/check/statements.d.ts.map +1 -0
- package/dist/core/check/statements.js +377 -0
- package/dist/core/check/statements.js.map +1 -0
- package/dist/core/check/suggest.d.ts +25 -0
- package/dist/core/check/suggest.d.ts.map +1 -0
- package/dist/core/check/suggest.js +61 -0
- package/dist/core/check/suggest.js.map +1 -0
- package/dist/core/check/surface.d.ts +38 -0
- package/dist/core/check/surface.d.ts.map +1 -0
- package/dist/core/check/surface.js +100 -0
- package/dist/core/check/surface.js.map +1 -0
- package/dist/core/check/tags.d.ts +4 -0
- package/dist/core/check/tags.d.ts.map +1 -0
- package/dist/core/check/tags.js +54 -0
- package/dist/core/check/tags.js.map +1 -0
- package/dist/core/check/types.d.ts +153 -0
- package/dist/core/check/types.d.ts.map +1 -0
- package/dist/core/check/types.js +221 -0
- package/dist/core/check/types.js.map +1 -0
- package/dist/core/check/warmup.d.ts +73 -0
- package/dist/core/check/warmup.d.ts.map +1 -0
- package/dist/core/check/warmup.js +62 -0
- package/dist/core/check/warmup.js.map +1 -0
- package/dist/core/diagnostics/collector.d.ts +12 -0
- package/dist/core/diagnostics/collector.d.ts.map +1 -1
- package/dist/core/diagnostics/collector.js +27 -1
- package/dist/core/diagnostics/collector.js.map +1 -1
- package/dist/core/emit/calls.d.ts +38 -0
- package/dist/core/emit/calls.d.ts.map +1 -0
- package/dist/core/emit/calls.js +347 -0
- package/dist/core/emit/calls.js.map +1 -0
- package/dist/core/emit/canonical.d.ts +39 -0
- package/dist/core/emit/canonical.d.ts.map +1 -0
- package/dist/core/emit/canonical.js +71 -0
- package/dist/core/emit/canonical.js.map +1 -0
- package/dist/core/emit/channels.d.ts +28 -0
- package/dist/core/emit/channels.d.ts.map +1 -0
- package/dist/core/emit/channels.js +110 -0
- package/dist/core/emit/channels.js.map +1 -0
- package/dist/core/emit/code.d.ts +75 -0
- package/dist/core/emit/code.d.ts.map +1 -0
- package/dist/core/emit/code.js +104 -0
- package/dist/core/emit/code.js.map +1 -0
- package/dist/core/emit/colours.d.ts +35 -0
- package/dist/core/emit/colours.d.ts.map +1 -0
- package/dist/core/emit/colours.js +50 -0
- package/dist/core/emit/colours.js.map +1 -0
- package/dist/core/emit/context.d.ts +271 -0
- package/dist/core/emit/context.d.ts.map +1 -0
- package/dist/core/emit/context.js +358 -0
- package/dist/core/emit/context.js.map +1 -0
- package/dist/core/emit/defaults.d.ts +45 -0
- package/dist/core/emit/defaults.d.ts.map +1 -0
- package/dist/core/emit/defaults.js +116 -0
- package/dist/core/emit/defaults.js.map +1 -0
- package/dist/core/emit/emit.d.ts +13 -0
- package/dist/core/emit/emit.d.ts.map +1 -0
- package/dist/core/emit/emit.js +281 -0
- package/dist/core/emit/emit.js.map +1 -0
- package/dist/core/emit/events.d.ts +21 -0
- package/dist/core/emit/events.d.ts.map +1 -0
- package/dist/core/emit/events.js +112 -0
- package/dist/core/emit/events.js.map +1 -0
- package/dist/core/emit/expressions.d.ts +23 -0
- package/dist/core/emit/expressions.d.ts.map +1 -0
- package/dist/core/emit/expressions.js +253 -0
- package/dist/core/emit/expressions.js.map +1 -0
- package/dist/core/emit/functions.d.ts +30 -0
- package/dist/core/emit/functions.d.ts.map +1 -0
- package/dist/core/emit/functions.js +171 -0
- package/dist/core/emit/functions.js.map +1 -0
- package/dist/core/emit/gaps.d.ts +34 -0
- package/dist/core/emit/gaps.d.ts.map +1 -0
- package/dist/core/emit/gaps.js +16 -0
- package/dist/core/emit/gaps.js.map +1 -0
- package/dist/core/emit/index.d.ts +29 -0
- package/dist/core/emit/index.d.ts.map +1 -0
- package/dist/core/emit/index.js +23 -0
- package/dist/core/emit/index.js.map +1 -0
- package/dist/core/emit/inputs.d.ts +47 -0
- package/dist/core/emit/inputs.d.ts.map +1 -0
- package/dist/core/emit/inputs.js +150 -0
- package/dist/core/emit/inputs.js.map +1 -0
- package/dist/core/emit/layout.d.ts +73 -0
- package/dist/core/emit/layout.d.ts.map +1 -0
- package/dist/core/emit/layout.js +126 -0
- package/dist/core/emit/layout.js.map +1 -0
- package/dist/core/emit/meta.d.ts +14 -0
- package/dist/core/emit/meta.d.ts.map +1 -0
- package/dist/core/emit/meta.js +68 -0
- package/dist/core/emit/meta.js.map +1 -0
- package/dist/core/emit/opcodes.d.ts +28 -0
- package/dist/core/emit/opcodes.d.ts.map +1 -0
- package/dist/core/emit/opcodes.js +137 -0
- package/dist/core/emit/opcodes.js.map +1 -0
- package/dist/core/emit/outputs.d.ts +67 -0
- package/dist/core/emit/outputs.d.ts.map +1 -0
- package/dist/core/emit/outputs.js +293 -0
- package/dist/core/emit/outputs.js.map +1 -0
- package/dist/core/emit/pool.d.ts +33 -0
- package/dist/core/emit/pool.d.ts.map +1 -0
- package/dist/core/emit/pool.js +79 -0
- package/dist/core/emit/pool.js.map +1 -0
- package/dist/core/emit/program.d.ts +333 -0
- package/dist/core/emit/program.d.ts.map +1 -0
- package/dist/core/emit/program.js +15 -0
- package/dist/core/emit/program.js.map +1 -0
- package/dist/core/emit/registers.d.ts +35 -0
- package/dist/core/emit/registers.d.ts.map +1 -0
- package/dist/core/emit/registers.js +170 -0
- package/dist/core/emit/registers.js.map +1 -0
- package/dist/core/emit/request-scope.d.ts +36 -0
- package/dist/core/emit/request-scope.d.ts.map +1 -0
- package/dist/core/emit/request-scope.js +41 -0
- package/dist/core/emit/request-scope.js.map +1 -0
- package/dist/core/emit/requests.d.ts +69 -0
- package/dist/core/emit/requests.d.ts.map +1 -0
- package/dist/core/emit/requests.js +230 -0
- package/dist/core/emit/requests.js.map +1 -0
- package/dist/core/emit/requires.d.ts +4 -0
- package/dist/core/emit/requires.d.ts.map +1 -0
- package/dist/core/emit/requires.js +71 -0
- package/dist/core/emit/requires.js.map +1 -0
- package/dist/core/emit/sha256.d.ts +24 -0
- package/dist/core/emit/sha256.d.ts.map +1 -0
- package/dist/core/emit/sha256.js +109 -0
- package/dist/core/emit/sha256.js.map +1 -0
- package/dist/core/emit/statements.d.ts +20 -0
- package/dist/core/emit/statements.d.ts.map +1 -0
- package/dist/core/emit/statements.js +393 -0
- package/dist/core/emit/statements.js.map +1 -0
- package/dist/core/emit/values.d.ts +80 -0
- package/dist/core/emit/values.d.ts.map +1 -0
- package/dist/core/emit/values.js +242 -0
- package/dist/core/emit/values.js.map +1 -0
- package/dist/core/engine/alerts.d.ts +66 -0
- package/dist/core/engine/alerts.d.ts.map +1 -0
- package/dist/core/engine/alerts.js +119 -0
- package/dist/core/engine/alerts.js.map +1 -0
- package/dist/core/engine/arithmetic.d.ts +82 -0
- package/dist/core/engine/arithmetic.d.ts.map +1 -0
- package/dist/core/engine/arithmetic.js +141 -0
- package/dist/core/engine/arithmetic.js.map +1 -0
- package/dist/core/engine/bars.d.ts +95 -0
- package/dist/core/engine/bars.d.ts.map +1 -0
- package/dist/core/engine/bars.js +133 -0
- package/dist/core/engine/bars.js.map +1 -0
- package/dist/core/engine/budget.d.ts +162 -0
- package/dist/core/engine/budget.d.ts.map +1 -0
- package/dist/core/engine/budget.js +188 -0
- package/dist/core/engine/budget.js.map +1 -0
- package/dist/core/engine/channels.d.ts +106 -0
- package/dist/core/engine/channels.d.ts.map +1 -0
- package/dist/core/engine/channels.js +99 -0
- package/dist/core/engine/channels.js.map +1 -0
- package/dist/core/engine/drawings.d.ts +64 -0
- package/dist/core/engine/drawings.d.ts.map +1 -0
- package/dist/core/engine/drawings.js +67 -0
- package/dist/core/engine/drawings.js.map +1 -0
- package/dist/core/engine/engine.d.ts +140 -0
- package/dist/core/engine/engine.d.ts.map +1 -0
- package/dist/core/engine/engine.js +405 -0
- package/dist/core/engine/engine.js.map +1 -0
- package/dist/core/engine/errors.d.ts +64 -0
- package/dist/core/engine/errors.d.ts.map +1 -0
- package/dist/core/engine/errors.js +63 -0
- package/dist/core/engine/errors.js.map +1 -0
- package/dist/core/engine/frames.d.ts +48 -0
- package/dist/core/engine/frames.d.ts.map +1 -0
- package/dist/core/engine/frames.js +41 -0
- package/dist/core/engine/frames.js.map +1 -0
- package/dist/core/engine/grids.d.ts +25 -0
- package/dist/core/engine/grids.d.ts.map +1 -0
- package/dist/core/engine/grids.js +77 -0
- package/dist/core/engine/grids.js.map +1 -0
- package/dist/core/engine/guard.d.ts +4 -0
- package/dist/core/engine/guard.d.ts.map +1 -0
- package/dist/core/engine/guard.js +46 -0
- package/dist/core/engine/guard.js.map +1 -0
- package/dist/core/engine/host.d.ts +219 -0
- package/dist/core/engine/host.d.ts.map +1 -0
- package/dist/core/engine/host.js +38 -0
- package/dist/core/engine/host.js.map +1 -0
- package/dist/core/engine/index.d.ts +49 -0
- package/dist/core/engine/index.d.ts.map +1 -0
- package/dist/core/engine/index.js +33 -0
- package/dist/core/engine/index.js.map +1 -0
- package/dist/core/engine/inputs.d.ts +77 -0
- package/dist/core/engine/inputs.d.ts.map +1 -0
- package/dist/core/engine/inputs.js +205 -0
- package/dist/core/engine/inputs.js.map +1 -0
- package/dist/core/engine/ledger/call.d.ts +63 -0
- package/dist/core/engine/ledger/call.d.ts.map +1 -0
- package/dist/core/engine/ledger/call.js +136 -0
- package/dist/core/engine/ledger/call.js.map +1 -0
- package/dist/core/engine/ledger/closable.d.ts +155 -0
- package/dist/core/engine/ledger/closable.d.ts.map +1 -0
- package/dist/core/engine/ledger/closable.js +173 -0
- package/dist/core/engine/ledger/closable.js.map +1 -0
- package/dist/core/engine/ledger/holdings.d.ts +194 -0
- package/dist/core/engine/ledger/holdings.d.ts.map +1 -0
- package/dist/core/engine/ledger/holdings.js +237 -0
- package/dist/core/engine/ledger/holdings.js.map +1 -0
- package/dist/core/engine/ledger/index.d.ts +19 -0
- package/dist/core/engine/ledger/index.d.ts.map +1 -0
- package/dist/core/engine/ledger/index.js +2 -0
- package/dist/core/engine/ledger/index.js.map +1 -0
- package/dist/core/engine/ledger/intent.d.ts +106 -0
- package/dist/core/engine/ledger/intent.d.ts.map +1 -0
- package/dist/core/engine/ledger/intent.js +21 -0
- package/dist/core/engine/ledger/intent.js.map +1 -0
- package/dist/core/engine/ledger/ledger.d.ts +143 -0
- package/dist/core/engine/ledger/ledger.d.ts.map +1 -0
- package/dist/core/engine/ledger/ledger.js +237 -0
- package/dist/core/engine/ledger/ledger.js.map +1 -0
- package/dist/core/engine/ledger/place.d.ts +75 -0
- package/dist/core/engine/ledger/place.d.ts.map +1 -0
- package/dist/core/engine/ledger/place.js +174 -0
- package/dist/core/engine/ledger/place.js.map +1 -0
- package/dist/core/engine/ledger/positions.d.ts +68 -0
- package/dist/core/engine/ledger/positions.d.ts.map +1 -0
- package/dist/core/engine/ledger/positions.js +114 -0
- package/dist/core/engine/ledger/positions.js.map +1 -0
- package/dist/core/engine/ledger/refuse.d.ts +43 -0
- package/dist/core/engine/ledger/refuse.d.ts.map +1 -0
- package/dist/core/engine/ledger/refuse.js +329 -0
- package/dist/core/engine/ledger/refuse.js.map +1 -0
- package/dist/core/engine/ledger/row.d.ts +176 -0
- package/dist/core/engine/ledger/row.d.ts.map +1 -0
- package/dist/core/engine/ledger/row.js +169 -0
- package/dist/core/engine/ledger/row.js.map +1 -0
- package/dist/core/engine/ledger/sizing.d.ts +142 -0
- package/dist/core/engine/ledger/sizing.d.ts.map +1 -0
- package/dist/core/engine/ledger/sizing.js +223 -0
- package/dist/core/engine/ledger/sizing.js.map +1 -0
- package/dist/core/engine/library/arrays.d.ts +14 -0
- package/dist/core/engine/library/arrays.d.ts.map +1 -0
- package/dist/core/engine/library/arrays.js +285 -0
- package/dist/core/engine/library/arrays.js.map +1 -0
- package/dist/core/engine/library/averages.d.ts +9 -0
- package/dist/core/engine/library/averages.d.ts.map +1 -0
- package/dist/core/engine/library/averages.js +41 -0
- package/dist/core/engine/library/averages.js.map +1 -0
- package/dist/core/engine/library/binding.d.ts +230 -0
- package/dist/core/engine/library/binding.d.ts.map +1 -0
- package/dist/core/engine/library/binding.js +109 -0
- package/dist/core/engine/library/binding.js.map +1 -0
- package/dist/core/engine/library/chart.d.ts +3 -0
- package/dist/core/engine/library/chart.d.ts.map +1 -0
- package/dist/core/engine/library/chart.js +83 -0
- package/dist/core/engine/library/chart.js.map +1 -0
- package/dist/core/engine/library/colours.d.ts +26 -0
- package/dist/core/engine/library/colours.d.ts.map +1 -0
- package/dist/core/engine/library/colours.js +81 -0
- package/dist/core/engine/library/colours.js.map +1 -0
- package/dist/core/engine/library/dates.d.ts +3 -0
- package/dist/core/engine/library/dates.d.ts.map +1 -0
- package/dist/core/engine/library/dates.js +75 -0
- package/dist/core/engine/library/dates.js.map +1 -0
- package/dist/core/engine/library/index.d.ts +13 -0
- package/dist/core/engine/library/index.d.ts.map +1 -0
- package/dist/core/engine/library/index.js +86 -0
- package/dist/core/engine/library/index.js.map +1 -0
- package/dist/core/engine/library/maths.d.ts +3 -0
- package/dist/core/engine/library/maths.d.ts.map +1 -0
- package/dist/core/engine/library/maths.js +89 -0
- package/dist/core/engine/library/maths.js.map +1 -0
- package/dist/core/engine/library/objects.d.ts +3 -0
- package/dist/core/engine/library/objects.d.ts.map +1 -0
- package/dist/core/engine/library/objects.js +199 -0
- package/dist/core/engine/library/objects.js.map +1 -0
- package/dist/core/engine/library/oscillators.d.ts +3 -0
- package/dist/core/engine/library/oscillators.d.ts.map +1 -0
- package/dist/core/engine/library/oscillators.js +29 -0
- package/dist/core/engine/library/oscillators.js.map +1 -0
- package/dist/core/engine/library/ranges.d.ts +3 -0
- package/dist/core/engine/library/ranges.d.ts.map +1 -0
- package/dist/core/engine/library/ranges.js +23 -0
- package/dist/core/engine/library/ranges.js.map +1 -0
- package/dist/core/engine/library/series.d.ts +3 -0
- package/dist/core/engine/library/series.d.ts.map +1 -0
- package/dist/core/engine/library/series.js +46 -0
- package/dist/core/engine/library/series.js.map +1 -0
- package/dist/core/engine/library/state.d.ts +35 -0
- package/dist/core/engine/library/state.d.ts.map +1 -0
- package/dist/core/engine/library/state.js +19 -0
- package/dist/core/engine/library/state.js.map +1 -0
- package/dist/core/engine/library/studies.d.ts +3 -0
- package/dist/core/engine/library/studies.d.ts.map +1 -0
- package/dist/core/engine/library/studies.js +35 -0
- package/dist/core/engine/library/studies.js.map +1 -0
- package/dist/core/engine/library/text.d.ts +6 -0
- package/dist/core/engine/library/text.d.ts.map +1 -0
- package/dist/core/engine/library/text.js +280 -0
- package/dist/core/engine/library/text.js.map +1 -0
- package/dist/core/engine/library/trend.d.ts +3 -0
- package/dist/core/engine/library/trend.d.ts.map +1 -0
- package/dist/core/engine/library/trend.js +29 -0
- package/dist/core/engine/library/trend.js.map +1 -0
- package/dist/core/engine/library/volume.d.ts +3 -0
- package/dist/core/engine/library/volume.d.ts.map +1 -0
- package/dist/core/engine/library/volume.js +51 -0
- package/dist/core/engine/library/volume.js.map +1 -0
- package/dist/core/engine/load.d.ts +45 -0
- package/dist/core/engine/load.d.ts.map +1 -0
- package/dist/core/engine/load.js +60 -0
- package/dist/core/engine/load.js.map +1 -0
- package/dist/core/engine/machine.d.ts +107 -0
- package/dist/core/engine/machine.d.ts.map +1 -0
- package/dist/core/engine/machine.js +337 -0
- package/dist/core/engine/machine.js.map +1 -0
- package/dist/core/engine/memory.d.ts +60 -0
- package/dist/core/engine/memory.d.ts.map +1 -0
- package/dist/core/engine/memory.js +92 -0
- package/dist/core/engine/memory.js.map +1 -0
- package/dist/core/engine/operations.d.ts +62 -0
- package/dist/core/engine/operations.d.ts.map +1 -0
- package/dist/core/engine/operations.js +149 -0
- package/dist/core/engine/operations.js.map +1 -0
- package/dist/core/engine/orders.d.ts +56 -0
- package/dist/core/engine/orders.d.ts.map +1 -0
- package/dist/core/engine/orders.js +83 -0
- package/dist/core/engine/orders.js.map +1 -0
- package/dist/core/engine/registers.d.ts +50 -0
- package/dist/core/engine/registers.d.ts.map +1 -0
- package/dist/core/engine/registers.js +85 -0
- package/dist/core/engine/registers.js.map +1 -0
- package/dist/core/engine/request-body.d.ts +138 -0
- package/dist/core/engine/request-body.d.ts.map +1 -0
- package/dist/core/engine/request-body.js +227 -0
- package/dist/core/engine/request-body.js.map +1 -0
- package/dist/core/engine/request-plan.d.ts +79 -0
- package/dist/core/engine/request-plan.d.ts.map +1 -0
- package/dist/core/engine/request-plan.js +228 -0
- package/dist/core/engine/request-plan.js.map +1 -0
- package/dist/core/engine/requests.d.ts +105 -0
- package/dist/core/engine/requests.d.ts.map +1 -0
- package/dist/core/engine/requests.js +260 -0
- package/dist/core/engine/requests.js.map +1 -0
- package/dist/core/engine/results.d.ts +40 -0
- package/dist/core/engine/results.d.ts.map +1 -0
- package/dist/core/engine/results.js +2 -0
- package/dist/core/engine/results.js.map +1 -0
- package/dist/core/engine/series.d.ts +61 -0
- package/dist/core/engine/series.d.ts.map +1 -0
- package/dist/core/engine/series.js +41 -0
- package/dist/core/engine/series.js.map +1 -0
- package/dist/core/engine/session/hours.d.ts +49 -0
- package/dist/core/engine/session/hours.d.ts.map +1 -0
- package/dist/core/engine/session/hours.js +31 -0
- package/dist/core/engine/session/hours.js.map +1 -0
- package/dist/core/engine/session/index.d.ts +17 -0
- package/dist/core/engine/session/index.d.ts.map +1 -0
- package/dist/core/engine/session/index.js +3 -0
- package/dist/core/engine/session/index.js.map +1 -0
- package/dist/core/engine/session/record.d.ts +56 -0
- package/dist/core/engine/session/record.d.ts.map +1 -0
- package/dist/core/engine/session/record.js +165 -0
- package/dist/core/engine/session/record.js.map +1 -0
- package/dist/core/engine/session/spec.d.ts +19 -0
- package/dist/core/engine/session/spec.d.ts.map +1 -0
- package/dist/core/engine/session/spec.js +31 -0
- package/dist/core/engine/session/spec.js.map +1 -0
- package/dist/core/engine/timeframe.d.ts +59 -0
- package/dist/core/engine/timeframe.d.ts.map +1 -0
- package/dist/core/engine/timeframe.js +140 -0
- package/dist/core/engine/timeframe.js.map +1 -0
- package/dist/core/engine/types.d.ts +15 -0
- package/dist/core/engine/types.d.ts.map +1 -0
- package/dist/core/engine/types.js +2 -0
- package/dist/core/engine/types.js.map +1 -0
- package/dist/core/engine/values/heap.d.ts +134 -0
- package/dist/core/engine/values/heap.d.ts.map +1 -0
- package/dist/core/engine/values/heap.js +230 -0
- package/dist/core/engine/values/heap.js.map +1 -0
- package/dist/core/engine/values/index.d.ts +13 -0
- package/dist/core/engine/values/index.d.ts.map +1 -0
- package/dist/core/engine/values/index.js +3 -0
- package/dist/core/engine/values/index.js.map +1 -0
- package/dist/core/engine/values/value.d.ts +82 -0
- package/dist/core/engine/values/value.d.ts.map +1 -0
- package/dist/core/engine/values/value.js +134 -0
- package/dist/core/engine/values/value.js.map +1 -0
- package/dist/core/engine/verify-budgets.d.ts +35 -0
- package/dist/core/engine/verify-budgets.d.ts.map +1 -0
- package/dist/core/engine/verify-budgets.js +172 -0
- package/dist/core/engine/verify-budgets.js.map +1 -0
- package/dist/core/engine/verify-code.d.ts +32 -0
- package/dist/core/engine/verify-code.d.ts.map +1 -0
- package/dist/core/engine/verify-code.js +278 -0
- package/dist/core/engine/verify-code.js.map +1 -0
- package/dist/core/engine/verify-requests.d.ts +44 -0
- package/dist/core/engine/verify-requests.d.ts.map +1 -0
- package/dist/core/engine/verify-requests.js +220 -0
- package/dist/core/engine/verify-requests.js.map +1 -0
- package/dist/core/engine/verify-shape.d.ts +46 -0
- package/dist/core/engine/verify-shape.d.ts.map +1 -0
- package/dist/core/engine/verify-shape.js +147 -0
- package/dist/core/engine/verify-shape.js.map +1 -0
- package/dist/core/engine/verify-tables.d.ts +19 -0
- package/dist/core/engine/verify-tables.d.ts.map +1 -0
- package/dist/core/engine/verify-tables.js +171 -0
- package/dist/core/engine/verify-tables.js.map +1 -0
- package/dist/core/engine/verify.d.ts +19 -0
- package/dist/core/engine/verify.d.ts.map +1 -0
- package/dist/core/engine/verify.js +309 -0
- package/dist/core/engine/verify.js.map +1 -0
- package/dist/core/index.d.ts +61 -6
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +48 -6
- package/dist/core/index.js.map +1 -1
- package/dist/core/parse/expressions.js +1 -1
- package/dist/core/parse/expressions.js.map +1 -1
- package/dist/core/parse/names.d.ts +7 -1
- package/dist/core/parse/names.d.ts.map +1 -1
- package/dist/core/parse/names.js +28 -2
- package/dist/core/parse/names.js.map +1 -1
- package/dist/core/stdlib/averages/exponential.d.ts +51 -0
- package/dist/core/stdlib/averages/exponential.d.ts.map +1 -0
- package/dist/core/stdlib/averages/exponential.js +72 -0
- package/dist/core/stdlib/averages/exponential.js.map +1 -0
- package/dist/core/stdlib/averages/index.d.ts +7 -0
- package/dist/core/stdlib/averages/index.d.ts.map +1 -0
- package/dist/core/stdlib/averages/index.js +5 -0
- package/dist/core/stdlib/averages/index.js.map +1 -0
- package/dist/core/stdlib/averages/select.d.ts +35 -0
- package/dist/core/stdlib/averages/select.d.ts.map +1 -0
- package/dist/core/stdlib/averages/select.js +43 -0
- package/dist/core/stdlib/averages/select.js.map +1 -0
- package/dist/core/stdlib/averages/shaped.d.ts +61 -0
- package/dist/core/stdlib/averages/shaped.d.ts.map +1 -0
- package/dist/core/stdlib/averages/shaped.js +126 -0
- package/dist/core/stdlib/averages/shaped.js.map +1 -0
- package/dist/core/stdlib/averages/simple.d.ts +58 -0
- package/dist/core/stdlib/averages/simple.d.ts.map +1 -0
- package/dist/core/stdlib/averages/simple.js +92 -0
- package/dist/core/stdlib/averages/simple.js.map +1 -0
- package/dist/core/stdlib/calendar/civil.d.ts +56 -0
- package/dist/core/stdlib/calendar/civil.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/civil.js +70 -0
- package/dist/core/stdlib/calendar/civil.js.map +1 -0
- package/dist/core/stdlib/calendar/fields.d.ts +36 -0
- package/dist/core/stdlib/calendar/fields.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/fields.js +93 -0
- package/dist/core/stdlib/calendar/fields.js.map +1 -0
- package/dist/core/stdlib/calendar/format.d.ts +19 -0
- package/dist/core/stdlib/calendar/format.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/format.js +51 -0
- package/dist/core/stdlib/calendar/format.js.map +1 -0
- package/dist/core/stdlib/calendar/index.d.ts +7 -0
- package/dist/core/stdlib/calendar/index.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/index.js +5 -0
- package/dist/core/stdlib/calendar/index.js.map +1 -0
- package/dist/core/stdlib/calendar/zone.d.ts +53 -0
- package/dist/core/stdlib/calendar/zone.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/zone.js +138 -0
- package/dist/core/stdlib/calendar/zone.js.map +1 -0
- package/dist/core/stdlib/index.d.ts +57 -0
- package/dist/core/stdlib/index.d.ts.map +1 -0
- package/dist/core/stdlib/index.js +51 -0
- package/dist/core/stdlib/index.js.map +1 -0
- package/dist/core/stdlib/maths/arithmetic.d.ts +38 -0
- package/dist/core/stdlib/maths/arithmetic.d.ts.map +1 -0
- package/dist/core/stdlib/maths/arithmetic.js +66 -0
- package/dist/core/stdlib/maths/arithmetic.js.map +1 -0
- package/dist/core/stdlib/maths/elementary.d.ts +65 -0
- package/dist/core/stdlib/maths/elementary.d.ts.map +1 -0
- package/dist/core/stdlib/maths/elementary.js +93 -0
- package/dist/core/stdlib/maths/elementary.js.map +1 -0
- package/dist/core/stdlib/maths/index.d.ts +4 -0
- package/dist/core/stdlib/maths/index.d.ts.map +1 -0
- package/dist/core/stdlib/maths/index.js +4 -0
- package/dist/core/stdlib/maths/index.js.map +1 -0
- package/dist/core/stdlib/maths/rounding.d.ts +43 -0
- package/dist/core/stdlib/maths/rounding.d.ts.map +1 -0
- package/dist/core/stdlib/maths/rounding.js +62 -0
- package/dist/core/stdlib/maths/rounding.js.map +1 -0
- package/dist/core/stdlib/momentum/convergence.d.ts +36 -0
- package/dist/core/stdlib/momentum/convergence.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/convergence.js +48 -0
- package/dist/core/stdlib/momentum/convergence.js.map +1 -0
- package/dist/core/stdlib/momentum/index.d.ts +6 -0
- package/dist/core/stdlib/momentum/index.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/index.js +6 -0
- package/dist/core/stdlib/momentum/index.js.map +1 -0
- package/dist/core/stdlib/momentum/pressure.d.ts +43 -0
- package/dist/core/stdlib/momentum/pressure.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/pressure.js +103 -0
- package/dist/core/stdlib/momentum/pressure.js.map +1 -0
- package/dist/core/stdlib/momentum/rates.d.ts +74 -0
- package/dist/core/stdlib/momentum/rates.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/rates.js +134 -0
- package/dist/core/stdlib/momentum/rates.js.map +1 -0
- package/dist/core/stdlib/momentum/rsi.d.ts +21 -0
- package/dist/core/stdlib/momentum/rsi.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/rsi.js +30 -0
- package/dist/core/stdlib/momentum/rsi.js.map +1 -0
- package/dist/core/stdlib/momentum/stochastic.d.ts +44 -0
- package/dist/core/stdlib/momentum/stochastic.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/stochastic.js +97 -0
- package/dist/core/stdlib/momentum/stochastic.js.map +1 -0
- package/dist/core/stdlib/series/changes.d.ts +59 -0
- package/dist/core/stdlib/series/changes.d.ts.map +1 -0
- package/dist/core/stdlib/series/changes.js +129 -0
- package/dist/core/stdlib/series/changes.js.map +1 -0
- package/dist/core/stdlib/series/conditions.d.ts +34 -0
- package/dist/core/stdlib/series/conditions.d.ts.map +1 -0
- package/dist/core/stdlib/series/conditions.js +52 -0
- package/dist/core/stdlib/series/conditions.js.map +1 -0
- package/dist/core/stdlib/series/extremes.d.ts +29 -0
- package/dist/core/stdlib/series/extremes.d.ts.map +1 -0
- package/dist/core/stdlib/series/extremes.js +62 -0
- package/dist/core/stdlib/series/extremes.js.map +1 -0
- package/dist/core/stdlib/series/index.d.ts +9 -0
- package/dist/core/stdlib/series/index.d.ts.map +1 -0
- package/dist/core/stdlib/series/index.js +7 -0
- package/dist/core/stdlib/series/index.js.map +1 -0
- package/dist/core/stdlib/series/pivots.d.ts +25 -0
- package/dist/core/stdlib/series/pivots.d.ts.map +1 -0
- package/dist/core/stdlib/series/pivots.js +42 -0
- package/dist/core/stdlib/series/pivots.js.map +1 -0
- package/dist/core/stdlib/series/statistics.d.ts +64 -0
- package/dist/core/stdlib/series/statistics.d.ts.map +1 -0
- package/dist/core/stdlib/series/statistics.js +148 -0
- package/dist/core/stdlib/series/statistics.js.map +1 -0
- package/dist/core/stdlib/series/totals.d.ts +68 -0
- package/dist/core/stdlib/series/totals.d.ts.map +1 -0
- package/dist/core/stdlib/series/totals.js +115 -0
- package/dist/core/stdlib/series/totals.js.map +1 -0
- package/dist/core/stdlib/trend/directional.d.ts +69 -0
- package/dist/core/stdlib/trend/directional.d.ts.map +1 -0
- package/dist/core/stdlib/trend/directional.js +151 -0
- package/dist/core/stdlib/trend/directional.js.map +1 -0
- package/dist/core/stdlib/trend/index.d.ts +4 -0
- package/dist/core/stdlib/trend/index.d.ts.map +1 -0
- package/dist/core/stdlib/trend/index.js +4 -0
- package/dist/core/stdlib/trend/index.js.map +1 -0
- package/dist/core/stdlib/trend/psar.d.ts +33 -0
- package/dist/core/stdlib/trend/psar.d.ts.map +1 -0
- package/dist/core/stdlib/trend/psar.js +86 -0
- package/dist/core/stdlib/trend/psar.js.map +1 -0
- package/dist/core/stdlib/trend/supertrend.d.ts +30 -0
- package/dist/core/stdlib/trend/supertrend.d.ts.map +1 -0
- package/dist/core/stdlib/trend/supertrend.js +65 -0
- package/dist/core/stdlib/trend/supertrend.js.map +1 -0
- package/dist/core/stdlib/values/bar.d.ts +39 -0
- package/dist/core/stdlib/values/bar.d.ts.map +1 -0
- package/dist/core/stdlib/values/bar.js +33 -0
- package/dist/core/stdlib/values/bar.js.map +1 -0
- package/dist/core/stdlib/values/index.d.ts +11 -0
- package/dist/core/stdlib/values/index.d.ts.map +1 -0
- package/dist/core/stdlib/values/index.js +6 -0
- package/dist/core/stdlib/values/index.js.map +1 -0
- package/dist/core/stdlib/values/lookback.d.ts +83 -0
- package/dist/core/stdlib/values/lookback.d.ts.map +1 -0
- package/dist/core/stdlib/values/lookback.js +134 -0
- package/dist/core/stdlib/values/lookback.js.map +1 -0
- package/dist/core/stdlib/values/region.d.ts +55 -0
- package/dist/core/stdlib/values/region.d.ts.map +1 -0
- package/dist/core/stdlib/values/region.js +73 -0
- package/dist/core/stdlib/values/region.js.map +1 -0
- package/dist/core/stdlib/values/tail.d.ts +44 -0
- package/dist/core/stdlib/values/tail.d.ts.map +1 -0
- package/dist/core/stdlib/values/tail.js +23 -0
- package/dist/core/stdlib/values/tail.js.map +1 -0
- package/dist/core/stdlib/values/value.d.ts +64 -0
- package/dist/core/stdlib/values/value.d.ts.map +1 -0
- package/dist/core/stdlib/values/value.js +61 -0
- package/dist/core/stdlib/values/value.js.map +1 -0
- package/dist/core/stdlib/volatility/bands.d.ts +50 -0
- package/dist/core/stdlib/volatility/bands.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/bands.js +101 -0
- package/dist/core/stdlib/volatility/bands.js.map +1 -0
- package/dist/core/stdlib/volatility/deviation.d.ts +43 -0
- package/dist/core/stdlib/volatility/deviation.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/deviation.js +75 -0
- package/dist/core/stdlib/volatility/deviation.js.map +1 -0
- package/dist/core/stdlib/volatility/index.d.ts +6 -0
- package/dist/core/stdlib/volatility/index.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/index.js +5 -0
- package/dist/core/stdlib/volatility/index.js.map +1 -0
- package/dist/core/stdlib/volatility/measures.d.ts +48 -0
- package/dist/core/stdlib/volatility/measures.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/measures.js +73 -0
- package/dist/core/stdlib/volatility/measures.js.map +1 -0
- package/dist/core/stdlib/volatility/range.d.ts +69 -0
- package/dist/core/stdlib/volatility/range.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/range.js +86 -0
- package/dist/core/stdlib/volatility/range.js.map +1 -0
- package/dist/core/stdlib/volume/accumulation.d.ts +61 -0
- package/dist/core/stdlib/volume/accumulation.d.ts.map +1 -0
- package/dist/core/stdlib/volume/accumulation.js +127 -0
- package/dist/core/stdlib/volume/accumulation.js.map +1 -0
- package/dist/core/stdlib/volume/flow.d.ts +60 -0
- package/dist/core/stdlib/volume/flow.d.ts.map +1 -0
- package/dist/core/stdlib/volume/flow.js +125 -0
- package/dist/core/stdlib/volume/flow.js.map +1 -0
- package/dist/core/stdlib/volume/index.d.ts +5 -0
- package/dist/core/stdlib/volume/index.d.ts.map +1 -0
- package/dist/core/stdlib/volume/index.js +4 -0
- package/dist/core/stdlib/volume/index.js.map +1 -0
- package/dist/core/stdlib/volume/weighted.d.ts +52 -0
- package/dist/core/stdlib/volume/weighted.d.ts.map +1 -0
- package/dist/core/stdlib/volume/weighted.js +64 -0
- package/dist/core/stdlib/volume/weighted.js.map +1 -0
- package/dist/core/version/version.generated.d.ts +2 -2
- package/dist/core/version/version.generated.d.ts.map +1 -1
- package/dist/core/version/version.generated.js +2 -2
- package/dist/core/version/version.generated.js.map +1 -1
- package/package.json +38 -14
- package/spec/errors.json +382 -183
- package/src/adapters/charts/alerts.ts +116 -0
- package/src/adapters/charts/bars.ts +63 -0
- package/src/adapters/charts/candles.ts +137 -0
- package/src/adapters/charts/colours.ts +113 -0
- package/src/adapters/charts/columns.ts +99 -0
- package/src/adapters/charts/contract.ts +320 -0
- package/src/adapters/charts/descriptor.ts +199 -0
- package/src/adapters/charts/drawings.ts +213 -0
- package/src/adapters/charts/errors.ts +45 -0
- package/src/adapters/charts/fields.ts +74 -0
- package/src/adapters/charts/fills.ts +71 -0
- package/src/adapters/charts/index.ts +78 -0
- package/src/adapters/charts/levels.ts +92 -0
- package/src/adapters/charts/markers.ts +119 -0
- package/src/adapters/charts/paint.ts +101 -0
- package/src/adapters/charts/plots.ts +185 -0
- package/src/adapters/charts/produced.ts +68 -0
- package/src/adapters/charts/requests.ts +357 -0
- package/src/adapters/charts/run.ts +327 -0
- package/src/adapters/charts/settings.ts +273 -0
- package/src/adapters/charts/surfaces.ts +238 -0
- package/src/adapters/charts/tables.ts +155 -0
- package/src/core/catalogue/catalogue.generated.ts +17 -9
- package/src/core/catalogue/values.generated.ts +8 -0
- package/src/core/check/arguments.ts +126 -0
- package/src/core/check/call-sites.ts +385 -0
- package/src/core/check/call-warmup.ts +121 -0
- package/src/core/check/calls.ts +412 -0
- package/src/core/check/check.ts +183 -0
- package/src/core/check/checked.ts +228 -0
- package/src/core/check/checker.ts +393 -0
- package/src/core/check/conditional.ts +143 -0
- package/src/core/check/constant.ts +127 -0
- package/src/core/check/declaration.ts +230 -0
- package/src/core/check/expressions.ts +471 -0
- package/src/core/check/functions.ts +283 -0
- package/src/core/check/handles.ts +75 -0
- package/src/core/check/index.ts +67 -0
- package/src/core/check/library-bars.ts +194 -0
- package/src/core/check/library-orders.ts +290 -0
- package/src/core/check/library-output.ts +241 -0
- package/src/core/check/library-series.ts +457 -0
- package/src/core/check/library.ts +374 -0
- package/src/core/check/literals.ts +35 -0
- package/src/core/check/outputs.ts +152 -0
- package/src/core/check/statements.ts +465 -0
- package/src/core/check/suggest.ts +63 -0
- package/src/core/check/surface.ts +115 -0
- package/src/core/check/tags.ts +94 -0
- package/src/core/check/types.ts +260 -0
- package/src/core/check/warmup.ts +100 -0
- package/src/core/diagnostics/collector.ts +27 -1
- package/src/core/emit/calls.ts +415 -0
- package/src/core/emit/canonical.ts +81 -0
- package/src/core/emit/channels.ts +144 -0
- package/src/core/emit/code.ts +155 -0
- package/src/core/emit/colours.ts +75 -0
- package/src/core/emit/context.ts +461 -0
- package/src/core/emit/defaults.ts +150 -0
- package/src/core/emit/emit.ts +313 -0
- package/src/core/emit/events.ts +141 -0
- package/src/core/emit/expressions.ts +292 -0
- package/src/core/emit/functions.ts +195 -0
- package/src/core/emit/gaps.ts +44 -0
- package/src/core/emit/index.ts +74 -0
- package/src/core/emit/inputs.ts +179 -0
- package/src/core/emit/layout.ts +165 -0
- package/src/core/emit/meta.ts +104 -0
- package/src/core/emit/opcodes.ts +160 -0
- package/src/core/emit/outputs.ts +357 -0
- package/src/core/emit/pool.ts +102 -0
- package/src/core/emit/program.ts +385 -0
- package/src/core/emit/registers.ts +179 -0
- package/src/core/emit/request-scope.ts +52 -0
- package/src/core/emit/requests.ts +258 -0
- package/src/core/emit/requires.ts +91 -0
- package/src/core/emit/sha256.ts +119 -0
- package/src/core/emit/statements.ts +438 -0
- package/src/core/emit/values.ts +284 -0
- package/src/core/engine/alerts.ts +152 -0
- package/src/core/engine/arithmetic.ts +165 -0
- package/src/core/engine/bars.ts +224 -0
- package/src/core/engine/budget.ts +284 -0
- package/src/core/engine/channels.ts +171 -0
- package/src/core/engine/drawings.ts +127 -0
- package/src/core/engine/engine.ts +498 -0
- package/src/core/engine/errors.ts +100 -0
- package/src/core/engine/frames.ts +85 -0
- package/src/core/engine/grids.ts +98 -0
- package/src/core/engine/guard.ts +71 -0
- package/src/core/engine/host.ts +251 -0
- package/src/core/engine/index.ts +93 -0
- package/src/core/engine/inputs.ts +263 -0
- package/src/core/engine/ledger/call.ts +218 -0
- package/src/core/engine/ledger/closable.ts +269 -0
- package/src/core/engine/ledger/holdings.ts +354 -0
- package/src/core/engine/ledger/index.ts +28 -0
- package/src/core/engine/ledger/intent.ts +112 -0
- package/src/core/engine/ledger/ledger.ts +314 -0
- package/src/core/engine/ledger/place.ts +277 -0
- package/src/core/engine/ledger/positions.ts +123 -0
- package/src/core/engine/ledger/refuse.ts +378 -0
- package/src/core/engine/ledger/row.ts +318 -0
- package/src/core/engine/ledger/sizing.ts +292 -0
- package/src/core/engine/library/arrays.ts +316 -0
- package/src/core/engine/library/averages.ts +97 -0
- package/src/core/engine/library/binding.ts +325 -0
- package/src/core/engine/library/chart.ts +115 -0
- package/src/core/engine/library/colours.ts +111 -0
- package/src/core/engine/library/dates.ts +109 -0
- package/src/core/engine/library/index.ts +103 -0
- package/src/core/engine/library/maths.ts +134 -0
- package/src/core/engine/library/objects.ts +265 -0
- package/src/core/engine/library/oscillators.ts +124 -0
- package/src/core/engine/library/ranges.ts +51 -0
- package/src/core/engine/library/series.ts +236 -0
- package/src/core/engine/library/state.ts +47 -0
- package/src/core/engine/library/studies.ts +150 -0
- package/src/core/engine/library/text.ts +303 -0
- package/src/core/engine/library/trend.ts +79 -0
- package/src/core/engine/library/volume.ts +101 -0
- package/src/core/engine/load.ts +104 -0
- package/src/core/engine/machine.ts +446 -0
- package/src/core/engine/memory.ts +129 -0
- package/src/core/engine/operations.ts +171 -0
- package/src/core/engine/orders.ts +121 -0
- package/src/core/engine/registers.ts +104 -0
- package/src/core/engine/request-body.ts +328 -0
- package/src/core/engine/request-plan.ts +270 -0
- package/src/core/engine/requests.ts +382 -0
- package/src/core/engine/results.ts +41 -0
- package/src/core/engine/series.ts +82 -0
- package/src/core/engine/session/hours.ts +86 -0
- package/src/core/engine/session/index.ts +17 -0
- package/src/core/engine/session/record.ts +191 -0
- package/src/core/engine/session/spec.ts +45 -0
- package/src/core/engine/timeframe.ts +161 -0
- package/src/core/engine/types.ts +47 -0
- package/src/core/engine/values/heap.ts +295 -0
- package/src/core/engine/values/index.ts +34 -0
- package/src/core/engine/values/value.ts +158 -0
- package/src/core/engine/verify-budgets.ts +202 -0
- package/src/core/engine/verify-code.ts +332 -0
- package/src/core/engine/verify-requests.ts +255 -0
- package/src/core/engine/verify-shape.ts +164 -0
- package/src/core/engine/verify-tables.ts +176 -0
- package/src/core/engine/verify.ts +341 -0
- package/src/core/index.ts +128 -6
- package/src/core/parse/expressions.ts +1 -1
- package/src/core/parse/names.ts +29 -2
- package/src/core/stdlib/averages/exponential.ts +119 -0
- package/src/core/stdlib/averages/index.ts +45 -0
- package/src/core/stdlib/averages/select.ts +71 -0
- package/src/core/stdlib/averages/shaped.ts +161 -0
- package/src/core/stdlib/averages/simple.ts +139 -0
- package/src/core/stdlib/calendar/civil.ts +89 -0
- package/src/core/stdlib/calendar/fields.ts +124 -0
- package/src/core/stdlib/calendar/format.ts +71 -0
- package/src/core/stdlib/calendar/index.ts +15 -0
- package/src/core/stdlib/calendar/zone.ts +161 -0
- package/src/core/stdlib/index.ts +400 -0
- package/src/core/stdlib/maths/arithmetic.ts +74 -0
- package/src/core/stdlib/maths/elementary.ts +124 -0
- package/src/core/stdlib/maths/index.ts +43 -0
- package/src/core/stdlib/maths/rounding.ts +78 -0
- package/src/core/stdlib/momentum/convergence.ts +82 -0
- package/src/core/stdlib/momentum/index.ts +47 -0
- package/src/core/stdlib/momentum/pressure.ts +141 -0
- package/src/core/stdlib/momentum/rates.ts +188 -0
- package/src/core/stdlib/momentum/rsi.ts +49 -0
- package/src/core/stdlib/momentum/stochastic.ts +147 -0
- package/src/core/stdlib/series/changes.ts +177 -0
- package/src/core/stdlib/series/conditions.ts +74 -0
- package/src/core/stdlib/series/extremes.ts +92 -0
- package/src/core/stdlib/series/index.ts +83 -0
- package/src/core/stdlib/series/pivots.ts +63 -0
- package/src/core/stdlib/series/statistics.ts +207 -0
- package/src/core/stdlib/series/totals.ts +164 -0
- package/src/core/stdlib/trend/directional.ts +196 -0
- package/src/core/stdlib/trend/index.ts +13 -0
- package/src/core/stdlib/trend/psar.ts +131 -0
- package/src/core/stdlib/trend/supertrend.ts +100 -0
- package/src/core/stdlib/values/bar.ts +54 -0
- package/src/core/stdlib/values/index.ts +14 -0
- package/src/core/stdlib/values/lookback.ts +198 -0
- package/src/core/stdlib/values/region.ts +86 -0
- package/src/core/stdlib/values/tail.ts +58 -0
- package/src/core/stdlib/values/value.ts +82 -0
- package/src/core/stdlib/volatility/bands.ts +178 -0
- package/src/core/stdlib/volatility/deviation.ts +111 -0
- package/src/core/stdlib/volatility/index.ts +48 -0
- package/src/core/stdlib/volatility/measures.ts +96 -0
- package/src/core/stdlib/volatility/range.ts +143 -0
- package/src/core/stdlib/volume/accumulation.ts +152 -0
- package/src/core/stdlib/volume/flow.ts +173 -0
- package/src/core/stdlib/volume/index.ts +43 -0
- package/src/core/stdlib/volume/weighted.ts +101 -0
- package/src/core/version/version.generated.ts +2 -2
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The functions a file declares: collecting them, ordering them and checking
|
|
3
|
+
* their bodies.
|
|
4
|
+
*
|
|
5
|
+
* Two rules shape everything here. A `fn` may be called before its declaration
|
|
6
|
+
* appears (`language.md` 12.5), so every declaration is collected before any
|
|
7
|
+
* body is checked. And a function may not call itself, directly or through a
|
|
8
|
+
* cycle (11.4), because state regions are allocated per call site and recursion
|
|
9
|
+
* would need a stack of them on every bar of every script; the cycle is
|
|
10
|
+
* reported as OS2005 and named in full, since a three function cycle is not
|
|
11
|
+
* something a reader can see from one line.
|
|
12
|
+
*
|
|
13
|
+
* Bodies are checked callees first, so a function that calls another already
|
|
14
|
+
* knows what that one returns rather than treating it as unknown.
|
|
15
|
+
*/
|
|
16
|
+
import type { Block, Expression, FunctionDeclaration, Script } from '../ast/index.js';
|
|
17
|
+
import { walk } from '../ast/index.js';
|
|
18
|
+
import type { Checker, Placement } from './checker.js';
|
|
19
|
+
import { TOP_LEVEL } from './checker.js';
|
|
20
|
+
import type { Binding, Mutable } from './checked.js';
|
|
21
|
+
import { calleeNameOf } from './constant.js';
|
|
22
|
+
import { checkExpression } from './expressions.js';
|
|
23
|
+
import { checkStatements, resolveAnnotation } from './statements.js';
|
|
24
|
+
import { isLibraryName } from './surface.js';
|
|
25
|
+
import type { Type } from './types.js';
|
|
26
|
+
import { UNKNOWN, isDefinite, join, sameType, typeText } from './types.js';
|
|
27
|
+
import type { Warmup } from './warmup.js';
|
|
28
|
+
import { BAR_ZERO, earlier } from './warmup.js';
|
|
29
|
+
|
|
30
|
+
/** Registers every `fn` in the file, so a call above one still resolves. */
|
|
31
|
+
function collectFunctions(checker: Checker, script: Script): void {
|
|
32
|
+
for (const item of script.items) {
|
|
33
|
+
if (item.kind !== 'functionDeclaration') continue;
|
|
34
|
+
const name = item.name.text;
|
|
35
|
+
|
|
36
|
+
const existing = checker.functionNodes.get(name);
|
|
37
|
+
if (existing !== undefined) {
|
|
38
|
+
checker.report('OS2017', item.name.span, { name, line: existing.span.line });
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (isLibraryName(name)) {
|
|
42
|
+
checker.report('OS2002', item.name.span, { name, line: 'built-in' });
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const id = checker.functions.length;
|
|
47
|
+
checker.functionNodes.set(name, item);
|
|
48
|
+
checker.functionsByName.set(name, id);
|
|
49
|
+
checker.functions.push({
|
|
50
|
+
id,
|
|
51
|
+
declaration: item,
|
|
52
|
+
parameters: [],
|
|
53
|
+
returns: UNKNOWN,
|
|
54
|
+
warmup: BAR_ZERO,
|
|
55
|
+
stateful: false,
|
|
56
|
+
});
|
|
57
|
+
checker.declare(item.name, 'function', UNKNOWN, BAR_ZERO);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Every function this one calls, read off its body without checking anything. */
|
|
62
|
+
function calleesOf(declaration: FunctionDeclaration, known: ReadonlySet<string>): Set<string> {
|
|
63
|
+
const found = new Set<string>();
|
|
64
|
+
walk(declaration, {
|
|
65
|
+
enter(node) {
|
|
66
|
+
if (node.kind !== 'call') return;
|
|
67
|
+
const name = calleeNameOf(node.callee);
|
|
68
|
+
if (name !== undefined && known.has(name)) found.add(name);
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
return found;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* OS2005: a function that reaches itself.
|
|
76
|
+
*
|
|
77
|
+
* A depth first walk that meets a name already on its own stack has found a
|
|
78
|
+
* cycle, and the stack from that name back to itself is the chain the message
|
|
79
|
+
* quotes, because a three function cycle is not something a reader can see from
|
|
80
|
+
* one line. The walk runs over every declaration, including the ones nothing
|
|
81
|
+
* ever calls, so a cycle is reported whether or not the file uses it.
|
|
82
|
+
*/
|
|
83
|
+
function detectRecursion(checker: Checker): void {
|
|
84
|
+
const known = new Set(checker.functionNodes.keys());
|
|
85
|
+
const callees = new Map<string, Set<string>>();
|
|
86
|
+
for (const [name, declaration] of checker.functionNodes) {
|
|
87
|
+
callees.set(name, calleesOf(declaration, known));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const done = new Set<string>();
|
|
91
|
+
const stack: string[] = [];
|
|
92
|
+
const reported = new Set<string>();
|
|
93
|
+
|
|
94
|
+
const visit = (name: string): void => {
|
|
95
|
+
const cycle = stack.indexOf(name);
|
|
96
|
+
if (cycle >= 0) {
|
|
97
|
+
const chain = [...stack.slice(cycle), name];
|
|
98
|
+
const start = chain[0] ?? name;
|
|
99
|
+
if (!reported.has(start)) {
|
|
100
|
+
reported.add(start);
|
|
101
|
+
const declaration = checker.functionNodes.get(start);
|
|
102
|
+
checker.report('OS2005', declaration?.name.span ?? checker.script.span, {
|
|
103
|
+
name: start,
|
|
104
|
+
cycle: chain.join(' calls '),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (done.has(name)) return;
|
|
110
|
+
|
|
111
|
+
stack.push(name);
|
|
112
|
+
for (const callee of callees.get(name) ?? []) visit(callee);
|
|
113
|
+
stack.pop();
|
|
114
|
+
done.add(name);
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
for (const name of checker.functionNodes.keys()) visit(name);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Checks a body once, the first time anything needs to know what it returns.
|
|
122
|
+
*
|
|
123
|
+
* A body is checked in the file scope rather than wherever the call was
|
|
124
|
+
* written, because a function's enclosing scope is the file whatever line calls
|
|
125
|
+
* it, and it is checked on demand rather than up front because the file-scope
|
|
126
|
+
* names it can see are the ones declared above the call (`language.md` 12.5).
|
|
127
|
+
*/
|
|
128
|
+
export function ensureChecked(checker: Checker, id: number): void {
|
|
129
|
+
const fn = checker.functions[id];
|
|
130
|
+
if (fn === undefined) return;
|
|
131
|
+
if (checker.checkedFunctions.has(id) || checker.checkingFunctions.has(id)) return;
|
|
132
|
+
|
|
133
|
+
checker.checkingFunctions.add(id);
|
|
134
|
+
const outer = checker.scope;
|
|
135
|
+
checker.scope = checker.fileScope;
|
|
136
|
+
try {
|
|
137
|
+
checkBody(checker, id, fn.declaration);
|
|
138
|
+
} finally {
|
|
139
|
+
checker.scope = outer;
|
|
140
|
+
checker.checkingFunctions.delete(id);
|
|
141
|
+
checker.checkedFunctions.add(id);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/** Collects every declaration and reports any cycle among them, before the file runs. */
|
|
146
|
+
export function checkFunctionDeclarations(checker: Checker, script: Script): void {
|
|
147
|
+
collectFunctions(checker, script);
|
|
148
|
+
detectRecursion(checker);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/** The bodies nothing called, so an unused helper still gets its diagnostics. */
|
|
152
|
+
export function checkRemainingFunctions(checker: Checker): void {
|
|
153
|
+
for (const id of checker.functionsByName.values()) ensureChecked(checker, id);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function checkBody(checker: Checker, id: number, declaration: FunctionDeclaration): void {
|
|
157
|
+
const fn = checker.functions[id];
|
|
158
|
+
if (fn === undefined) return;
|
|
159
|
+
|
|
160
|
+
const firstBinding = checker.bindings.length;
|
|
161
|
+
const firstCall = checker.calls.length;
|
|
162
|
+
const outerReturns = checker.pendingReturns;
|
|
163
|
+
checker.pendingReturns = [];
|
|
164
|
+
|
|
165
|
+
const result = checker.inScope('function', undefined, () => {
|
|
166
|
+
const parameters = declareParameters(checker, declaration);
|
|
167
|
+
fn.parameters = parameters;
|
|
168
|
+
return runBody(checker, declaration.body);
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
const returns = checker.pendingReturns;
|
|
172
|
+
checker.pendingReturns = outerReturns;
|
|
173
|
+
|
|
174
|
+
// A function holds state when its body does, whether the body wrote a `var`
|
|
175
|
+
// or called something that keeps one (language.md 11.4).
|
|
176
|
+
const heldVar = checker.bindings
|
|
177
|
+
.slice(firstBinding)
|
|
178
|
+
.some((one) => one.persistence !== 'none');
|
|
179
|
+
const heldCall = checker.calls.slice(firstCall).some((one) => one.stateful);
|
|
180
|
+
fn.stateful = heldVar || heldCall;
|
|
181
|
+
|
|
182
|
+
let type = result.type;
|
|
183
|
+
let warmup = result.warmup;
|
|
184
|
+
for (const one of returns) {
|
|
185
|
+
if (isDefinite(one.type) && isDefinite(type) && !sameType(type, one.type)) {
|
|
186
|
+
checker.report('OS2003', declaration.span, {
|
|
187
|
+
leftType: typeText(type),
|
|
188
|
+
rightType: typeText(one.type),
|
|
189
|
+
});
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
type = join(type, one.type);
|
|
193
|
+
warmup = earlier(warmup, one.warmup);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
fn.returns = type;
|
|
197
|
+
fn.warmup = warmup;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/** The parameters, in a scope of the body's own, `language.md` 11.2 and 12.3. */
|
|
201
|
+
function declareParameters(
|
|
202
|
+
checker: Checker,
|
|
203
|
+
declaration: FunctionDeclaration,
|
|
204
|
+
): readonly Mutable<Binding>[] {
|
|
205
|
+
const bindings: Mutable<Binding>[] = [];
|
|
206
|
+
const seen = new Set<string>();
|
|
207
|
+
|
|
208
|
+
for (const parameter of declaration.parameters) {
|
|
209
|
+
const name = parameter.name.text;
|
|
210
|
+
if (seen.has(name)) {
|
|
211
|
+
checker.report('OS2018', parameter.name.span, { name });
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
seen.add(name);
|
|
215
|
+
|
|
216
|
+
const enclosing = checker.enclosing(name);
|
|
217
|
+
if (enclosing !== undefined) {
|
|
218
|
+
checker.report('OS2002', parameter.name.span, {
|
|
219
|
+
name,
|
|
220
|
+
line: enclosing.declaredAt.line,
|
|
221
|
+
});
|
|
222
|
+
} else if (isLibraryName(name)) {
|
|
223
|
+
checker.report('OS2002', parameter.name.span, { name, line: 'built-in' });
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
const annotated =
|
|
227
|
+
parameter.annotation === undefined
|
|
228
|
+
? undefined
|
|
229
|
+
: resolveAnnotation(checker, parameter.annotation);
|
|
230
|
+
const fromDefault =
|
|
231
|
+
parameter.defaultValue === undefined
|
|
232
|
+
? undefined
|
|
233
|
+
: checkExpression(checker, parameter.defaultValue, TOP_LEVEL);
|
|
234
|
+
|
|
235
|
+
// Without an annotation the type is inferred from use (language.md 11.2).
|
|
236
|
+
// Version 1 of this checker infers only from a default value and otherwise
|
|
237
|
+
// leaves the parameter open, which reports nothing it cannot prove.
|
|
238
|
+
const type = annotated ?? fromDefault ?? UNKNOWN;
|
|
239
|
+
bindings.push(checker.declare(parameter.name, 'parameter', type, BAR_ZERO));
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
return bindings;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Inside a function body, which both spellings of one are.
|
|
247
|
+
*
|
|
248
|
+
* The single line form used to be checked as though it stood at the top level,
|
|
249
|
+
* and the placement is what OS3006 and OS3007 read: `fn f(x) => x + input(3,
|
|
250
|
+
* "K")` declared a settings row from inside a function, which `language.md`
|
|
251
|
+
* 13.4 forbids in as many words, and nothing said so. The two forms are the
|
|
252
|
+
* same construct written two ways and a rule that holds for one holds for both.
|
|
253
|
+
*/
|
|
254
|
+
const INSIDE_A_BODY: Placement = {
|
|
255
|
+
topLevel: false,
|
|
256
|
+
construct: 'a function body',
|
|
257
|
+
inLoop: false,
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* A body and what it gives back.
|
|
262
|
+
*
|
|
263
|
+
* The single line form is one expression. The indented form ends in a bare
|
|
264
|
+
* expression, which is its value, and a body that ends in something else
|
|
265
|
+
* returns `none` unless a `return` ran (`language.md` 11.3).
|
|
266
|
+
*/
|
|
267
|
+
function runBody(
|
|
268
|
+
checker: Checker,
|
|
269
|
+
body: Block | Expression,
|
|
270
|
+
): { readonly type: Type; readonly warmup: Warmup } {
|
|
271
|
+
if (body.kind !== 'block') {
|
|
272
|
+
const type = checkExpression(checker, body, INSIDE_A_BODY);
|
|
273
|
+
return { type, warmup: checker.warmupOf(body) };
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
checkStatements(checker, body.statements, INSIDE_A_BODY);
|
|
277
|
+
|
|
278
|
+
const last = body.statements[body.statements.length - 1];
|
|
279
|
+
if (last === undefined || last.kind !== 'expressionStatement') {
|
|
280
|
+
return { type: UNKNOWN, warmup: BAR_ZERO };
|
|
281
|
+
}
|
|
282
|
+
return { type: checker.typeOf(last.expression), warmup: checker.warmupOf(last.expression) };
|
|
283
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a declaration handle may stand, which is `language.md` 5.4's table.
|
|
3
|
+
*
|
|
4
|
+
* `plot()`, `plotCandles()`, `fill()` and `level()` hand back the compile-time
|
|
5
|
+
* half of a declaration. It is not a value. No slot, no cell and no register
|
|
6
|
+
* ever holds one, and nothing of it is left in the bar loop, so the places one
|
|
7
|
+
* may be written are a closed list of three:
|
|
8
|
+
*
|
|
9
|
+
* a declaration statement plot(close, "C", aqua)
|
|
10
|
+
* the whole right side of a plain upper = plot(basis + dev, "U", aqua)
|
|
11
|
+
* assignment, where the right side
|
|
12
|
+
* is the declaration call itself
|
|
13
|
+
* an argument of a call fill(upper, lower, color = c)
|
|
14
|
+
*
|
|
15
|
+
* The third is a permission to be written, not to be accepted: the signature
|
|
16
|
+
* decides, and `fill` is the one call in version 1 whose parameters take a
|
|
17
|
+
* handle. Everywhere else a value is required, and 5.4 answers that with
|
|
18
|
+
* OS2003.
|
|
19
|
+
*
|
|
20
|
+
* The rule is a permission rather than a refusal written out at each of the
|
|
21
|
+
* twenty places a value can appear, because the refusal has to hold for the
|
|
22
|
+
* position nobody thought of. An expression the checker accepts and the
|
|
23
|
+
* emitter cannot emit becomes an instruction reading a slot nothing ever
|
|
24
|
+
* writes, and a study then plots absence on every bar where the script said
|
|
25
|
+
* plot. Silence of that kind is worse than a refusal, so the default is to
|
|
26
|
+
* refuse and the permissions are listed.
|
|
27
|
+
*/
|
|
28
|
+
import type { Expression } from '../ast/index.js';
|
|
29
|
+
import type { Checker } from './checker.js';
|
|
30
|
+
import type { Type } from './types.js';
|
|
31
|
+
import { UNKNOWN, typeText } from './types.js';
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* What a position holds when it requires a value and fixes no type of its own.
|
|
35
|
+
*
|
|
36
|
+
* A `var`, a ternary arm, a `return` and an operand of `==` all want one value
|
|
37
|
+
* per bar and take any type. What they cannot take is the one thing that has no
|
|
38
|
+
* per-bar value at all, and that is the sentence OS2003 has to say.
|
|
39
|
+
*/
|
|
40
|
+
const PER_BAR_VALUE = 'a per-bar value';
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Marks an expression as one of the places 5.4 lets a handle be written.
|
|
44
|
+
*
|
|
45
|
+
* Grouping is transparent to every rule in the language, so `(upper)` is
|
|
46
|
+
* permitted wherever `upper` is and each layer is marked.
|
|
47
|
+
*/
|
|
48
|
+
export function allowHandle(checker: Checker, expression: Expression): void {
|
|
49
|
+
let node: Expression = expression;
|
|
50
|
+
for (;;) {
|
|
51
|
+
checker.handleSites.add(node);
|
|
52
|
+
if (node.kind !== 'grouping') return;
|
|
53
|
+
node = node.expression;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** Whether a handle written here has been permitted by one of the three rules. */
|
|
58
|
+
export function handleAllowed(checker: Checker, expression: Expression): boolean {
|
|
59
|
+
return checker.handleSites.has(expression);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* OS2003 for a handle in a position that requires a value, `language.md` 5.4.
|
|
64
|
+
*
|
|
65
|
+
* The expression is left `unknown` rather than left as a handle, so the rule
|
|
66
|
+
* above it does not report a second time and the emitter is never handed a
|
|
67
|
+
* handle to find a register for.
|
|
68
|
+
*/
|
|
69
|
+
export function refuseHandle(checker: Checker, expression: Expression, type: Type): Type {
|
|
70
|
+
checker.report('OS2003', expression.span, {
|
|
71
|
+
leftType: PER_BAR_VALUE,
|
|
72
|
+
rightType: typeText(type),
|
|
73
|
+
});
|
|
74
|
+
return checker.record(expression, UNKNOWN, checker.warmupOf(expression));
|
|
75
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The checker: a syntax tree in, and the answer to two questions out.
|
|
3
|
+
*
|
|
4
|
+
* Is this a program the engine can run, and what does every name in it mean.
|
|
5
|
+
* Those are one pass rather than two, because the second question is how the
|
|
6
|
+
* first one is answered: a name resolves or it does not, an expression has a
|
|
7
|
+
* type or the operator above it cannot be checked, and a value has a first bar
|
|
8
|
+
* or a line would be drawn before there was anything to draw.
|
|
9
|
+
*
|
|
10
|
+
* What comes out is a `CheckedScript`. It is not a second tree: the syntax tree
|
|
11
|
+
* is still the tree, and every answer is recorded against the node it is about,
|
|
12
|
+
* so the code generator walks what the parser produced and looks the answers up
|
|
13
|
+
* rather than working any of them out a second time.
|
|
14
|
+
*
|
|
15
|
+
* Nothing here throws. A file with three mistakes in it produces three
|
|
16
|
+
* diagnostics and a checked tree with `unknown` where the mistakes were,
|
|
17
|
+
* because a trader fixing three mistakes should see three of them.
|
|
18
|
+
*/
|
|
19
|
+
export { check } from './check.js';
|
|
20
|
+
export { inputHeldBy } from './checked.js';
|
|
21
|
+
export { alertKey } from './outputs.js';
|
|
22
|
+
export { FOLDABLE_CALLS } from './constant.js';
|
|
23
|
+
|
|
24
|
+
export type {
|
|
25
|
+
Binding,
|
|
26
|
+
BindingKind,
|
|
27
|
+
CheckedCall,
|
|
28
|
+
CheckedDeclaration,
|
|
29
|
+
CheckedFunction,
|
|
30
|
+
CheckedInput,
|
|
31
|
+
CheckedOutput,
|
|
32
|
+
CheckedRequest,
|
|
33
|
+
CheckedScript,
|
|
34
|
+
InputKind,
|
|
35
|
+
RequestMode,
|
|
36
|
+
Storage,
|
|
37
|
+
} from './checked.js';
|
|
38
|
+
|
|
39
|
+
export type { HandleKind, ObjectKind, Type, ValueKind } from './types.js';
|
|
40
|
+
export {
|
|
41
|
+
HANDLE_KINDS,
|
|
42
|
+
OBJECT_KINDS,
|
|
43
|
+
VALUE_KINDS,
|
|
44
|
+
accepts,
|
|
45
|
+
arrayOf,
|
|
46
|
+
elementOf,
|
|
47
|
+
isSeries,
|
|
48
|
+
join,
|
|
49
|
+
sameType,
|
|
50
|
+
seriesOf,
|
|
51
|
+
typeText,
|
|
52
|
+
} from './types.js';
|
|
53
|
+
|
|
54
|
+
export type { Warmup } from './warmup.js';
|
|
55
|
+
export { BAR_ZERO, allOf, atBar, atLeastBar, delayed, earlier, isNever, later } from './warmup.js';
|
|
56
|
+
|
|
57
|
+
export type { LibraryEntry, LibraryParameter, WarmupRule } from './library.js';
|
|
58
|
+
export {
|
|
59
|
+
NAMESPACES,
|
|
60
|
+
REQUEST_NAMES,
|
|
61
|
+
STRATEGY_NAMESPACES,
|
|
62
|
+
isLibraryName,
|
|
63
|
+
isNamespace,
|
|
64
|
+
libraryEntries,
|
|
65
|
+
libraryNames,
|
|
66
|
+
membersOf,
|
|
67
|
+
} from './surface.js';
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The part of the library that reads a bar, an instrument, a clock or a string:
|
|
3
|
+
* `stdlib.md` sections 3, 8.2, 10 and 12, plus the nineteen colour names of
|
|
4
|
+
* section 11.1.
|
|
5
|
+
*
|
|
6
|
+
* Nothing here computes across bars, so nothing here has a warmup of its own.
|
|
7
|
+
* The two exceptions state theirs: a session's start and end are known from the
|
|
8
|
+
* session's first bar, which is a fact about the data rather than a length.
|
|
9
|
+
*/
|
|
10
|
+
import { DATA_DRIVEN, entry } from './library.js';
|
|
11
|
+
import type { LibraryEntry } from './library.js';
|
|
12
|
+
|
|
13
|
+
/** The colour names of stdlib.md 11.1, each an ordinary global of type `color`. */
|
|
14
|
+
export const COLOUR_NAMES: readonly string[] = [
|
|
15
|
+
'aqua',
|
|
16
|
+
'black',
|
|
17
|
+
'blue',
|
|
18
|
+
'brown',
|
|
19
|
+
'fuchsia',
|
|
20
|
+
'gray',
|
|
21
|
+
'green',
|
|
22
|
+
'lime',
|
|
23
|
+
'maroon',
|
|
24
|
+
'navy',
|
|
25
|
+
'olive',
|
|
26
|
+
'orange',
|
|
27
|
+
'pink',
|
|
28
|
+
'purple',
|
|
29
|
+
'red',
|
|
30
|
+
'silver',
|
|
31
|
+
'teal',
|
|
32
|
+
'white',
|
|
33
|
+
'yellow',
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
/** The built-in series of stdlib.md 3.1, the only names with a bar's history. */
|
|
37
|
+
export const BAR_SERIES: readonly string[] = [
|
|
38
|
+
'open',
|
|
39
|
+
'high',
|
|
40
|
+
'low',
|
|
41
|
+
'close',
|
|
42
|
+
'volume',
|
|
43
|
+
'hl2',
|
|
44
|
+
'hlc3',
|
|
45
|
+
'ohlc4',
|
|
46
|
+
'hlcc4',
|
|
47
|
+
'oi',
|
|
48
|
+
'time',
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const colours: readonly LibraryEntry[] = COLOUR_NAMES.map((name) => entry(`${name} -> color`));
|
|
52
|
+
|
|
53
|
+
const series: readonly LibraryEntry[] = [
|
|
54
|
+
...BAR_SERIES.map((name) => entry(`${name} -> series number`)),
|
|
55
|
+
entry('timeClose -> series number', { planned: true }),
|
|
56
|
+
];
|
|
57
|
+
|
|
58
|
+
const bar: readonly LibraryEntry[] = [
|
|
59
|
+
entry('bar.index -> series number'),
|
|
60
|
+
entry('bar.count -> series number'),
|
|
61
|
+
entry('bar.isFirst -> series bool'),
|
|
62
|
+
entry('bar.isLast -> series bool'),
|
|
63
|
+
entry('bar.isConfirmed -> series bool'),
|
|
64
|
+
entry('bar.isRealtime -> series bool'),
|
|
65
|
+
entry('bar.isNew -> series bool'),
|
|
66
|
+
entry('bar.updates -> series number'),
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const chart: readonly LibraryEntry[] = [
|
|
70
|
+
entry('chart.symbol -> string'),
|
|
71
|
+
entry('chart.exchange -> string'),
|
|
72
|
+
entry('chart.interval -> string'),
|
|
73
|
+
entry('chart.intervalMinutes -> number'),
|
|
74
|
+
entry('chart.isIntraday -> bool'),
|
|
75
|
+
entry('chart.timezone -> string'),
|
|
76
|
+
entry('chart.tickSize -> number'),
|
|
77
|
+
entry('chart.lotSize -> number'),
|
|
78
|
+
entry('chart.pointValue -> number'),
|
|
79
|
+
entry('chart.currency -> string'),
|
|
80
|
+
entry('chart.instrumentType -> string'),
|
|
81
|
+
entry('chart.hasVolume -> bool'),
|
|
82
|
+
entry('chart.hasOpenInterest -> bool'),
|
|
83
|
+
entry('chart.now() -> number'),
|
|
84
|
+
entry('chart.isReplay -> bool', { planned: true }),
|
|
85
|
+
entry('chart.expiry -> number', { planned: true }),
|
|
86
|
+
entry('chart.strike -> number', { planned: true }),
|
|
87
|
+
entry('chart.optionType -> string', { planned: true }),
|
|
88
|
+
];
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* The session facts, `stdlib.md` 12.4.
|
|
92
|
+
*
|
|
93
|
+
* **Three run and the rest are planned**, and the line between them is what an
|
|
94
|
+
* engine can answer today. `session.isFirstBar` and `session.isLastBar` are
|
|
95
|
+
* derived from the session hours in the instrument record
|
|
96
|
+
* (`host-interface.md` 4.3), the bar's time and the instrument's timezone.
|
|
97
|
+
* `session.isIn` reads the hours the script itself wrote, and the calendar of
|
|
98
|
+
* section 12.2 turns them into a test. The rest read the same hours and want
|
|
99
|
+
* an instant or a count off it rather than a boundary, so they are marked
|
|
100
|
+
* rather than left to be refused at load with a message about a function.
|
|
101
|
+
*/
|
|
102
|
+
const session: readonly LibraryEntry[] = [
|
|
103
|
+
entry('session.isOpen -> series bool', { planned: true }),
|
|
104
|
+
entry('session.isFirstBar -> series bool'),
|
|
105
|
+
entry('session.isLastBar -> series bool'),
|
|
106
|
+
entry('session.startTime -> series number', { planned: true, warmup: DATA_DRIVEN }),
|
|
107
|
+
entry('session.endTime -> series number', { planned: true, warmup: DATA_DRIVEN }),
|
|
108
|
+
entry('session.barIndex -> series number', { planned: true }),
|
|
109
|
+
entry('session.isIn(spec: string, zone?: string = chart.timezone) -> series bool'),
|
|
110
|
+
entry('session.isHoliday(t: number) -> bool', { planned: true }),
|
|
111
|
+
entry('session.nextOpen -> series number', { planned: true }),
|
|
112
|
+
];
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* The calendar, `stdlib.md` 12.2.
|
|
116
|
+
*
|
|
117
|
+
* Every entry reads a timestamp in a named zone, and the zone table is the
|
|
118
|
+
* runtime's own rather than one copied here: `calendar/zone.ts` gives the
|
|
119
|
+
* reason. `date.add` stays planned because calendar arithmetic that respects
|
|
120
|
+
* month lengths has a rule to settle first, which the entry itself says.
|
|
121
|
+
*/
|
|
122
|
+
const date: readonly LibraryEntry[] = [
|
|
123
|
+
entry('date.year(t: number, zone?: string = chart.timezone) -> number'),
|
|
124
|
+
entry('date.month(t: number, zone?: string = chart.timezone) -> number'),
|
|
125
|
+
entry('date.day(t: number, zone?: string = chart.timezone) -> number'),
|
|
126
|
+
entry('date.dayOfWeek(t: number, zone?: string = chart.timezone) -> number'),
|
|
127
|
+
entry('date.dayOfYear(t: number, zone?: string = chart.timezone) -> number'),
|
|
128
|
+
entry('date.hour(t: number, zone?: string = chart.timezone) -> number'),
|
|
129
|
+
entry('date.minute(t: number, zone?: string = chart.timezone) -> number'),
|
|
130
|
+
entry('date.second(t: number, zone?: string = chart.timezone) -> number'),
|
|
131
|
+
entry('date.weekOfYear(t: number, zone?: string = chart.timezone) -> number'),
|
|
132
|
+
entry(
|
|
133
|
+
'date.from(year: number, month: number, day: number, hour?: number = 0, minute?: number = 0, second?: number = 0, zone?: string = chart.timezone) -> number',
|
|
134
|
+
),
|
|
135
|
+
entry('date.startOfDay(t: number, zone?: string = chart.timezone) -> number'),
|
|
136
|
+
entry('date.startOfWeek(t: number, zone?: string = chart.timezone) -> number'),
|
|
137
|
+
entry('date.startOfMonth(t: number, zone?: string = chart.timezone) -> number'),
|
|
138
|
+
entry('date.isSameDay(a: number, b: number, zone?: string = chart.timezone) -> bool'),
|
|
139
|
+
entry('date.format(t: number, pattern: string, zone?: string = chart.timezone) -> string'),
|
|
140
|
+
entry('date.add(t: number, unit: string, count: number, zone?: string = chart.timezone) -> number', {
|
|
141
|
+
planned: true,
|
|
142
|
+
}),
|
|
143
|
+
];
|
|
144
|
+
|
|
145
|
+
const maths: readonly LibraryEntry[] = [
|
|
146
|
+
entry('math.pi -> number'),
|
|
147
|
+
entry('math.e -> number'),
|
|
148
|
+
entry('math.log2(x: number) -> number'),
|
|
149
|
+
entry('math.hypot(x: number, y: number) -> number'),
|
|
150
|
+
entry('math.toDegrees(x: number) -> number'),
|
|
151
|
+
entry('math.toRadians(x: number) -> number'),
|
|
152
|
+
entry('math.sin(x: number) -> number'),
|
|
153
|
+
entry('math.cos(x: number) -> number'),
|
|
154
|
+
entry('math.tan(x: number) -> number'),
|
|
155
|
+
entry('math.asin(x: number) -> number'),
|
|
156
|
+
entry('math.acos(x: number) -> number'),
|
|
157
|
+
entry('math.atan(x: number) -> number'),
|
|
158
|
+
entry('math.atan2(y: number, x: number) -> number'),
|
|
159
|
+
entry('math.sinh(x: number) -> number', { planned: true }),
|
|
160
|
+
entry('math.cosh(x: number) -> number', { planned: true }),
|
|
161
|
+
entry('math.tanh(x: number) -> number', { planned: true }),
|
|
162
|
+
];
|
|
163
|
+
|
|
164
|
+
const strings: readonly LibraryEntry[] = [
|
|
165
|
+
entry('str.length(s: string) -> number'),
|
|
166
|
+
entry('str.upper(s: string) -> string'),
|
|
167
|
+
entry('str.lower(s: string) -> string'),
|
|
168
|
+
entry('str.trim(s: string) -> string'),
|
|
169
|
+
entry('str.contains(s: string, part: string) -> bool'),
|
|
170
|
+
entry('str.startsWith(s: string, part: string) -> bool'),
|
|
171
|
+
entry('str.endsWith(s: string, part: string) -> bool'),
|
|
172
|
+
entry('str.indexOf(s: string, part: string) -> number'),
|
|
173
|
+
entry('str.substring(s: string, from: number, to?: number = none) -> string'),
|
|
174
|
+
entry('str.replace(s: string, find: string, with: string) -> string'),
|
|
175
|
+
entry('str.replaceAll(s: string, find: string, with: string) -> string'),
|
|
176
|
+
entry('str.split(s: string, separator: string) -> array<string>'),
|
|
177
|
+
entry('str.join(parts: array<string>, separator: string) -> string'),
|
|
178
|
+
entry('str.padLeft(s: string, width: number, fill?: string = " ") -> string'),
|
|
179
|
+
entry('str.padRight(s: string, width: number, fill?: string = " ") -> string'),
|
|
180
|
+
entry('str.repeat(s: string, n: number) -> string'),
|
|
181
|
+
entry('str.format(template: string, values: array<string>) -> string', { planned: true }),
|
|
182
|
+
entry('str.match(s: string, pattern: string) -> bool', { planned: true }),
|
|
183
|
+
];
|
|
184
|
+
|
|
185
|
+
export const BAR_ENTRIES: readonly LibraryEntry[] = [
|
|
186
|
+
...colours,
|
|
187
|
+
...series,
|
|
188
|
+
...bar,
|
|
189
|
+
...chart,
|
|
190
|
+
...session,
|
|
191
|
+
...date,
|
|
192
|
+
...maths,
|
|
193
|
+
...strings,
|
|
194
|
+
];
|