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.
- package/CHANGELOG.md +1249 -0
- package/README.md +288 -255
- 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 +62 -6
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +49 -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/index.d.ts +2 -0
- package/dist/core/version/index.d.ts.map +1 -0
- package/dist/core/version/index.js +2 -0
- package/dist/core/version/index.js.map +1 -0
- package/dist/core/version/version.generated.d.ts +10 -0
- package/dist/core/version/version.generated.d.ts.map +1 -0
- package/dist/core/version/version.generated.js +14 -0
- package/dist/core/version/version.generated.js.map +1 -0
- package/package.json +88 -52
- package/spec/errors.json +3403 -3204
- 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 +129 -6
- package/src/core/parse/expressions.ts +1 -1
- package/src/core/parse/functions.ts +109 -109
- package/src/core/parse/names.ts +29 -2
- package/src/core/parse/switches.ts +105 -105
- 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/index.ts +1 -0
- package/src/core/version/version.generated.ts +15 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The effective value of every declaration option a script left out.
|
|
3
|
+
*
|
|
4
|
+
* `compiled-program.md` 2.3 is unusually firm about this: every field of
|
|
5
|
+
* `meta`, of `meta.strategy` and of every declaration in `outputs` is written
|
|
6
|
+
* with the value that option resolved to, defaults included, rather than
|
|
7
|
+
* omitted or written as null. So an engine never needs a table of defaults, and
|
|
8
|
+
* a default that changes in a later language version cannot silently change an
|
|
9
|
+
* old program, because the old program carries the old value in writing.
|
|
10
|
+
*
|
|
11
|
+
* That is also why this file exists and why it is only this. These are the
|
|
12
|
+
* defaults of `language.md` 13.2 and 13.3 and of `stdlib.md` 14.2, 14.3, 16 and
|
|
13
|
+
* 10.7, transcribed once. Nothing here is a runtime argument default: those
|
|
14
|
+
* belong to the library manifest, and `calls.ts` says what happens where the
|
|
15
|
+
* two are confused.
|
|
16
|
+
*/
|
|
17
|
+
import type { Value } from './values.js';
|
|
18
|
+
import { namedColour } from './colours.js';
|
|
19
|
+
|
|
20
|
+
const ABSENT: Value = { kind: 'absent' };
|
|
21
|
+
|
|
22
|
+
function number(value: number): Value {
|
|
23
|
+
return { kind: 'number', value };
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function string(value: string): Value {
|
|
27
|
+
return { kind: 'string', value };
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function bool(value: boolean): Value {
|
|
31
|
+
return { kind: 'bool', value };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function colour(name: string): Value {
|
|
35
|
+
const value = namedColour(name);
|
|
36
|
+
return value === undefined ? ABSENT : { kind: 'colour', value };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** `language.md` 13.2. `title` is required and `short` falls back to it. */
|
|
40
|
+
export const STUDY_DEFAULTS: Readonly<Record<string, Value>> = {
|
|
41
|
+
overlay: bool(false),
|
|
42
|
+
precision: number(4),
|
|
43
|
+
format: string('price'),
|
|
44
|
+
range: ABSENT,
|
|
45
|
+
scale: string('right'),
|
|
46
|
+
group: string(''),
|
|
47
|
+
onUnconfirmed: bool(false),
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/** `language.md` 13.3, the options only a `strategy()` adds. */
|
|
51
|
+
export const STRATEGY_DEFAULTS: Readonly<Record<string, Value>> = {
|
|
52
|
+
capital: number(100000),
|
|
53
|
+
currency: string(''),
|
|
54
|
+
qty: number(1),
|
|
55
|
+
qtyType: string('units'),
|
|
56
|
+
product: string('intraday'),
|
|
57
|
+
fillOn: string('nextOpen'),
|
|
58
|
+
slippage: number(0),
|
|
59
|
+
commission: number(0),
|
|
60
|
+
commissionType: string('perTrade'),
|
|
61
|
+
pyramiding: number(1),
|
|
62
|
+
closeOnSessionEnd: bool(false),
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
/** The order `meta.strategy` lists them in, 2.3. */
|
|
66
|
+
export const STRATEGY_OPTIONS: readonly string[] = [
|
|
67
|
+
'capital',
|
|
68
|
+
'currency',
|
|
69
|
+
'qty',
|
|
70
|
+
'qtyType',
|
|
71
|
+
'product',
|
|
72
|
+
'fillOn',
|
|
73
|
+
'slippage',
|
|
74
|
+
'commission',
|
|
75
|
+
'commissionType',
|
|
76
|
+
'pyramiding',
|
|
77
|
+
'closeOnSessionEnd',
|
|
78
|
+
];
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* `stdlib.md` 14.2.
|
|
82
|
+
*
|
|
83
|
+
* `lineStyle` has no argument on `plot` at all: the call's `style` names the
|
|
84
|
+
* column's shape and becomes the entry's `type`. A plot therefore always
|
|
85
|
+
* carries the one line style a host draws an undecorated line with.
|
|
86
|
+
*/
|
|
87
|
+
export const PLOT_DEFAULTS: Readonly<Record<string, Value>> = {
|
|
88
|
+
color: ABSENT,
|
|
89
|
+
width: number(1.5),
|
|
90
|
+
style: string('line'),
|
|
91
|
+
offset: number(0),
|
|
92
|
+
overlay: ABSENT,
|
|
93
|
+
precision: ABSENT,
|
|
94
|
+
format: ABSENT,
|
|
95
|
+
scale: string('right'),
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export const PLOT_LINE_STYLE: Value = string('solid');
|
|
99
|
+
|
|
100
|
+
/** `stdlib.md` 14.2. A candle's border takes a plot's own width and style. */
|
|
101
|
+
export const CANDLE_DEFAULTS: Readonly<Record<string, Value>> = {
|
|
102
|
+
colorUp: colour('lime'),
|
|
103
|
+
colorDown: colour('red'),
|
|
104
|
+
wickColor: ABSENT,
|
|
105
|
+
borderColor: ABSENT,
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export const FILL_DEFAULTS: Readonly<Record<string, Value>> = {
|
|
109
|
+
color: ABSENT,
|
|
110
|
+
colorUp: ABSENT,
|
|
111
|
+
colorDown: ABSENT,
|
|
112
|
+
opacity: number(1),
|
|
113
|
+
overlay: ABSENT,
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
export const LEVEL_DEFAULTS: Readonly<Record<string, Value>> = {
|
|
117
|
+
title: string(''),
|
|
118
|
+
color: colour('gray'),
|
|
119
|
+
style: string('dashed'),
|
|
120
|
+
width: number(1),
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
/** `stdlib.md` 14.3. `title`, `rows` and `cols` have no default. */
|
|
124
|
+
export const TABLE_DEFAULTS: Readonly<Record<string, Value>> = {
|
|
125
|
+
position: string('topRight'),
|
|
126
|
+
textColor: ABSENT,
|
|
127
|
+
bgColor: ABSENT,
|
|
128
|
+
borderWidth: number(0),
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
export const MARKER_DEFAULTS: Readonly<Record<string, Value>> = {
|
|
132
|
+
color: ABSENT,
|
|
133
|
+
at: string('above'),
|
|
134
|
+
shape: string('label'),
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
export const ALERT_DEFAULTS: Readonly<Record<string, Value>> = {
|
|
138
|
+
id: string(''),
|
|
139
|
+
title: string(''),
|
|
140
|
+
frequency: string('oncePerBar'),
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/** `stdlib.md` 13.2, the arguments every input kind accepts. */
|
|
144
|
+
export const INPUT_DEFAULTS: Readonly<Record<string, Value>> = {
|
|
145
|
+
group: string(''),
|
|
146
|
+
tooltip: string(''),
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
/** `language.md` 10.7 and 7.4, carried by `limits` whether or not it was written. */
|
|
150
|
+
export const LOOP_BUDGET = 2_000_000;
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A checked file in, a compiled program out.
|
|
3
|
+
*
|
|
4
|
+
* The order below is the order the format forces, and each step is here rather
|
|
5
|
+
* than inside a pass because each one needs a total the passes do not have
|
|
6
|
+
* until they have finished.
|
|
7
|
+
*
|
|
8
|
+
* Registers first, because the two instructions that keep a shadow register in
|
|
9
|
+
* step with a cell have to be the first and the last thing a bar does, and a
|
|
10
|
+
* prologue cannot be written after the list it belongs at the front of. Inputs
|
|
11
|
+
* next, because each one owns a slot the engine writes at step 5 and the slots
|
|
12
|
+
* have to exist before a statement reads one. Then the statements. Then the
|
|
13
|
+
* bases of every call site, which can only be assigned once the top level's own
|
|
14
|
+
* cells and state regions are counted.
|
|
15
|
+
*
|
|
16
|
+
* The last step is the one worth defending: the emitter walks its own
|
|
17
|
+
* instruction lists and computes the stack depth exactly as section 3.5 check 5
|
|
18
|
+
* says an engine will. A compiler that cannot compute that number does not know
|
|
19
|
+
* whether it emitted a program any engine will load, and finding out from a
|
|
20
|
+
* verifier in another language is finding out too late.
|
|
21
|
+
*/
|
|
22
|
+
import { CATALOGUE_LANGUAGE_VERSION } from '../catalogue/index.js';
|
|
23
|
+
import type { CheckedScript } from '../check/index.js';
|
|
24
|
+
import type { DiagnosticSink } from '../diagnostics/index.js';
|
|
25
|
+
import type { SourceFile } from '../source/index.js';
|
|
26
|
+
import type { Span } from '../span/index.js';
|
|
27
|
+
import { COMPILED_FORMAT_VERSION, VERSION } from '../version/index.js';
|
|
28
|
+
import { sourceHash } from './canonical.js';
|
|
29
|
+
import { orderChannels, renumberCode, renumberOutputs } from './channels.js';
|
|
30
|
+
import { walkDepths } from './code.js';
|
|
31
|
+
import { Emitter, Frame } from './context.js';
|
|
32
|
+
import type { EmitOptions } from './context.js';
|
|
33
|
+
import type { Gap } from './gaps.js';
|
|
34
|
+
import { assignRegions } from './functions.js';
|
|
35
|
+
import { buildInputs } from './inputs.js';
|
|
36
|
+
|
|
37
|
+
import { buildLimits, buildMeta } from './meta.js';
|
|
38
|
+
import type { CompiledProgram, Instruction, Request } from './program.js';
|
|
39
|
+
import { placementOf, prepareRegisters } from './registers.js';
|
|
40
|
+
import { linkRequestNames } from './requests.js';
|
|
41
|
+
import { requiresOf } from './requires.js';
|
|
42
|
+
import { emitStatement } from './statements.js';
|
|
43
|
+
|
|
44
|
+
export interface EmitResult {
|
|
45
|
+
/** The program, or nothing when a gap stopped a faithful one being produced. */
|
|
46
|
+
readonly program: CompiledProgram | undefined;
|
|
47
|
+
readonly gaps: readonly Gap[];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** The library manifest version, tied to `openscript.language` (2.5). */
|
|
51
|
+
const DEFAULT_MANIFEST = 1;
|
|
52
|
+
|
|
53
|
+
export function emit(
|
|
54
|
+
file: SourceFile,
|
|
55
|
+
checked: CheckedScript,
|
|
56
|
+
sink: DiagnosticSink,
|
|
57
|
+
options: EmitOptions = {},
|
|
58
|
+
): EmitResult {
|
|
59
|
+
const e = new Emitter(file, checked, sink, options);
|
|
60
|
+
const top = new Frame(true);
|
|
61
|
+
|
|
62
|
+
prepareRegisters(e);
|
|
63
|
+
buildInputs(e, top);
|
|
64
|
+
openCarriedRegisters(e, top);
|
|
65
|
+
linkRequestNames(e);
|
|
66
|
+
|
|
67
|
+
for (const item of checked.script.items) {
|
|
68
|
+
if (item.kind === 'functionDeclaration') continue;
|
|
69
|
+
emitStatement(e, top, item);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
closeShadowRegisters(e, top);
|
|
73
|
+
// `HALT` takes the position of whatever came before it, which is 12.2's own
|
|
74
|
+
// reading of a run of instructions costing one triple.
|
|
75
|
+
if (top.builder.here === 0) top.builder.at(checked.script.span);
|
|
76
|
+
top.builder.push('HALT');
|
|
77
|
+
|
|
78
|
+
const { cells, states } = assignRegions(e, top);
|
|
79
|
+
// The channel table is written in the order `outputs` lists its groups, which
|
|
80
|
+
// is not the order the declarations were met in; `channels.ts` says why.
|
|
81
|
+
const order = orderChannels(e);
|
|
82
|
+
const code = renumberCode(top.builder.code, order.moved);
|
|
83
|
+
const functions = e.functions.map((one) => ({
|
|
84
|
+
...one,
|
|
85
|
+
code: renumberCode(one.code, order.moved),
|
|
86
|
+
}));
|
|
87
|
+
checkDepths(e, top, code);
|
|
88
|
+
checkLimits(e, code, states.length);
|
|
89
|
+
|
|
90
|
+
const program: CompiledProgram = {
|
|
91
|
+
openscript: { format: COMPILED_FORMAT_VERSION, language: languageOf(checked) },
|
|
92
|
+
requires: requiresOf(e, code),
|
|
93
|
+
compiler: { name: 'openscript', version: VERSION },
|
|
94
|
+
source: { hash: sourceHash(file.text), lines: file.lineCount, file: file.name },
|
|
95
|
+
meta: buildMeta(e),
|
|
96
|
+
limits: buildLimits(e),
|
|
97
|
+
lib: { manifest: options.manifest ?? DEFAULT_MANIFEST, functions: e.libraryFunctions },
|
|
98
|
+
inputs: e.inputs,
|
|
99
|
+
channels: order.channels,
|
|
100
|
+
outputs: renumberOutputs(e, order.moved),
|
|
101
|
+
consts: e.pool.all,
|
|
102
|
+
series: e.layout.registers,
|
|
103
|
+
frame: { slots: top.layout.slotCount },
|
|
104
|
+
cells,
|
|
105
|
+
states,
|
|
106
|
+
functions,
|
|
107
|
+
callSites: e.sites.map((site) => ({
|
|
108
|
+
fn: site.fn,
|
|
109
|
+
argc: site.argc,
|
|
110
|
+
cellBase: site.cellBase,
|
|
111
|
+
stateBase: site.stateBase,
|
|
112
|
+
series: site.series,
|
|
113
|
+
})),
|
|
114
|
+
loops: e.loops,
|
|
115
|
+
code,
|
|
116
|
+
requests: e.requests,
|
|
117
|
+
debug: {
|
|
118
|
+
pos: top.builder.pos,
|
|
119
|
+
fnPos: e.functionPos,
|
|
120
|
+
names: {
|
|
121
|
+
slots: top.layout.slotNames,
|
|
122
|
+
cells: cells.map((one) => one.name ?? ''),
|
|
123
|
+
series: e.layout.registers.map((one) => one.name ?? ''),
|
|
124
|
+
channels: order.names,
|
|
125
|
+
},
|
|
126
|
+
retain: options.retain === true,
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
if (!e.gaps.blocked) return { program, gaps: e.gaps.gaps };
|
|
131
|
+
reportRefusal(e);
|
|
132
|
+
return { program: undefined, gaps: e.gaps.gaps };
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Why there is no program, said to the person who asked for one.
|
|
137
|
+
*
|
|
138
|
+
* A gap is a note between the parts of this project and nobody outside it ever
|
|
139
|
+
* reads one, so an emitter that returned nothing and logged a gap left a trader
|
|
140
|
+
* with a compile that produced no program, no message and nothing to ask a
|
|
141
|
+
* question about. That is the worst failure this compiler has available: the
|
|
142
|
+
* script may be perfectly good, and silence gives its author no way to find out
|
|
143
|
+
* whether it is.
|
|
144
|
+
*
|
|
145
|
+
* So every gap that stopped a program becomes a diagnostic. It carries the line
|
|
146
|
+
* that provoked it, what could not be done, and the section that asks for it,
|
|
147
|
+
* and it says where to take it. The sentence is careful about whose fault it
|
|
148
|
+
* is, because this runs whether or not an earlier stage refused the file: a
|
|
149
|
+
* checked tree the emitter cannot emit is a defect in the compiler only when
|
|
150
|
+
* nothing else was reported about it.
|
|
151
|
+
*/
|
|
152
|
+
function reportRefusal(e: Emitter): void {
|
|
153
|
+
for (const gap of e.gaps.gaps) {
|
|
154
|
+
if (!gap.blocking) continue;
|
|
155
|
+
e.sink.report('OS6018', gap.span ?? e.checked.script.span, {
|
|
156
|
+
location: gap.specification,
|
|
157
|
+
reason:
|
|
158
|
+
`${gap.what}; this compiler produced no program rather than a wrong one, and if ` +
|
|
159
|
+
'nothing else was reported about this script that is a defect in the compiler ' +
|
|
160
|
+
'rather than in the script: please report it, with the script that produced it',
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
function languageOf(checked: CheckedScript): number {
|
|
166
|
+
const line = checked.script.items.find((item) => item.kind === 'versionLine');
|
|
167
|
+
return line !== undefined && line.kind === 'versionLine'
|
|
168
|
+
? line.version.value
|
|
169
|
+
: CATALOGUE_LANGUAGE_VERSION;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* The register beside a `var` a function body reads, filled before the bar runs.
|
|
174
|
+
*
|
|
175
|
+
* The pair at the end of the bar (below) writes the entry for the bar. This one
|
|
176
|
+
* writes the value the bar starts with, so a body called before the first
|
|
177
|
+
* assignment reads what the cell carried in rather than an absence. On bar 0
|
|
178
|
+
* the cell has not been initialised yet and reads absent, which is what the
|
|
179
|
+
* name is worth before its declaration line (3.4).
|
|
180
|
+
*/
|
|
181
|
+
function openCarriedRegisters(e: Emitter, top: Frame): void {
|
|
182
|
+
for (const binding of e.checked.bindings) {
|
|
183
|
+
if (!e.carried.has(binding.id)) continue;
|
|
184
|
+
const register = e.layout.registerFor(binding);
|
|
185
|
+
if (register === undefined) continue;
|
|
186
|
+
top.builder.at(binding.declaredAt);
|
|
187
|
+
top.builder.push('LOADC', top.layout.cellFor(binding));
|
|
188
|
+
top.builder.push('SSTORE', register);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* The one instruction pair that keeps a persistent name's past readable.
|
|
194
|
+
*
|
|
195
|
+
* A cell has no history and a register has no persistence, so `x[1]` on a `var`
|
|
196
|
+
* needs both (`language.md` 8.3). The register's entry for a bar is written
|
|
197
|
+
* from the cell at the end of the bar rather than at each assignment, because a
|
|
198
|
+
* bar on which the `var` was not assigned still holds a value, and a register
|
|
199
|
+
* written only where the source writes the name would be absent there and say
|
|
200
|
+
* the value had never existed.
|
|
201
|
+
*/
|
|
202
|
+
function closeShadowRegisters(e: Emitter, top: Frame): void {
|
|
203
|
+
for (const binding of e.checked.bindings) {
|
|
204
|
+
if (!e.shadowed.has(binding.id)) continue;
|
|
205
|
+
if (placementOf(e, binding) !== 'cell') continue;
|
|
206
|
+
if (!top.layout.hasCellFor(binding)) continue;
|
|
207
|
+
const register = e.layout.registerFor(binding);
|
|
208
|
+
if (register === undefined) continue;
|
|
209
|
+
top.builder.at(binding.declaredAt);
|
|
210
|
+
top.builder.push('LOADC', top.layout.cellFor(binding));
|
|
211
|
+
top.builder.push('SSTORE', register);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/** Every instruction a read's body holds, its own reads included. */
|
|
216
|
+
function instructionsIn(requests: readonly Request[]): number {
|
|
217
|
+
let total = 0;
|
|
218
|
+
for (const request of requests) {
|
|
219
|
+
total += request.body.code.length;
|
|
220
|
+
for (const one of request.body.functions) total += one.code.length;
|
|
221
|
+
total += instructionsIn(request.body.requests);
|
|
222
|
+
}
|
|
223
|
+
return total;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/** Section 3.5 check 5, run here so a defect is found where it was written. */
|
|
227
|
+
function checkDepths(e: Emitter, top: Frame, code: readonly Instruction[]): void {
|
|
228
|
+
const argcOf = (site: number): number => e.sites[site]?.argc ?? 0;
|
|
229
|
+
const lists: readonly (readonly Instruction[])[] = [code, ...e.functions.map((one) => one.code)];
|
|
230
|
+
|
|
231
|
+
for (const request of e.requests) checkRequestDepths(e, request);
|
|
232
|
+
|
|
233
|
+
lists.forEach((list, index) => {
|
|
234
|
+
const walk = walkDepths(list, argcOf);
|
|
235
|
+
const at = walk.conflict ?? walk.underflow ?? walk.terminal;
|
|
236
|
+
if (at === undefined) return;
|
|
237
|
+
e.gap(
|
|
238
|
+
`the stack depth this compiler emitted does not survive its own walk at instruction ${at}, ` +
|
|
239
|
+
'so an engine would refuse the program at load',
|
|
240
|
+
'compiled-program.md 3.5 check 5',
|
|
241
|
+
// The bar's own list is the one whose positions are to hand, and it is
|
|
242
|
+
// where all but one of these can happen. A line beats no line: whoever
|
|
243
|
+
// reads this next starts at the statement rather than at the file.
|
|
244
|
+
index === 0 ? lineOfInstruction(e, top, at) : undefined,
|
|
245
|
+
true,
|
|
246
|
+
);
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* The same walk over a read's body, which counts its own call sites (2.16).
|
|
252
|
+
*
|
|
253
|
+
* A body has no positions in the bar's own table, so a failure here carries the
|
|
254
|
+
* read's line rather than a line from the wrong list.
|
|
255
|
+
*/
|
|
256
|
+
function checkRequestDepths(e: Emitter, request: Request): void {
|
|
257
|
+
const argcOf = (site: number): number => request.body.callSites[site]?.argc ?? 0;
|
|
258
|
+
const lists = [request.body.code, ...request.body.functions.map((one) => one.code)];
|
|
259
|
+
for (const list of lists) {
|
|
260
|
+
const walk = walkDepths(list, argcOf);
|
|
261
|
+
const at = walk.conflict ?? walk.underflow ?? walk.terminal;
|
|
262
|
+
if (at === undefined) continue;
|
|
263
|
+
e.gap(
|
|
264
|
+
`the stack depth this compiler emitted for a read's expression does not survive its ` +
|
|
265
|
+
`own walk at instruction ${at}, so an engine would refuse the program at load`,
|
|
266
|
+
'compiled-program.md 3.5 check 5 and 2.16',
|
|
267
|
+
undefined,
|
|
268
|
+
true,
|
|
269
|
+
);
|
|
270
|
+
}
|
|
271
|
+
for (const nested of request.body.requests) checkRequestDepths(e, nested);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/** Where the instruction at this index came from, from the debug positions. */
|
|
275
|
+
function lineOfInstruction(e: Emitter, top: Frame, index: number): Span | undefined {
|
|
276
|
+
let found: readonly [number, number, number] | undefined;
|
|
277
|
+
for (const position of top.builder.pos) {
|
|
278
|
+
if (position[0] > index) break;
|
|
279
|
+
found = position;
|
|
280
|
+
}
|
|
281
|
+
if (found === undefined) return undefined;
|
|
282
|
+
return e.file.spanAt(e.file.offsetAt({ line: found[1], column: found[2] }), 1);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* OS5004 and OS5009, the two limits the compiler rather than the engine finds.
|
|
287
|
+
*
|
|
288
|
+
* Both are reported only against a ceiling a host actually declared. A compiler
|
|
289
|
+
* that invented one would refuse a program every engine present could run.
|
|
290
|
+
*/
|
|
291
|
+
function checkLimits(e: Emitter, code: readonly Instruction[], states: number): void {
|
|
292
|
+
const span = e.checked.script.span;
|
|
293
|
+
const maxStates = e.options.maxStates;
|
|
294
|
+
if (maxStates !== undefined && states > maxStates) {
|
|
295
|
+
e.sink.report('OS5004', span, {
|
|
296
|
+
found: states,
|
|
297
|
+
max: maxStates,
|
|
298
|
+
first: e.functions[0]?.name ?? '',
|
|
299
|
+
second: e.functions[1]?.name ?? e.functions[0]?.name ?? '',
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
const maxInstructions = e.options.maxInstructions;
|
|
304
|
+
const total =
|
|
305
|
+
code.length +
|
|
306
|
+
e.functions.reduce((sum, one) => sum + one.code.length, 0) +
|
|
307
|
+
// A read's expression is instructions an engine executes, once per
|
|
308
|
+
// requested bar, so it counts against the ceiling like any other (2.16).
|
|
309
|
+
instructionsIn(e.requests);
|
|
310
|
+
if (maxInstructions !== undefined && total > maxInstructions) {
|
|
311
|
+
e.sink.report('OS5009', span, { found: total, max: maxInstructions });
|
|
312
|
+
}
|
|
313
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The four calls that draw something for one bar: a marker, an alert, a bar
|
|
3
|
+
* colour and a pane background.
|
|
4
|
+
*
|
|
5
|
+
* All four are `EMIT` and a declared channel, and none of them is a library
|
|
6
|
+
* call an engine performs. One instruction covers every drawing surface
|
|
7
|
+
* (`compiled-program.md` 4.11); an instruction per surface would have added six
|
|
8
|
+
* opcodes that all do the same thing and would have made every new surface a
|
|
9
|
+
* format change.
|
|
10
|
+
*
|
|
11
|
+
* The alert is the one worth reading. `stdlib.md` 16.1 says the compiler lifts
|
|
12
|
+
* each call into a watched condition whose predicate is the chain of guards
|
|
13
|
+
* that reaches it. Nothing has to be lifted: the call site is only reached when
|
|
14
|
+
* those guards passed, so writing `true` into the condition channel there is
|
|
15
|
+
* the predicate, exactly. On a bar the guards refused, nothing writes the
|
|
16
|
+
* channel and a channel nothing wrote is absent, which is no alert.
|
|
17
|
+
*/
|
|
18
|
+
import type { Call } from '../ast/index.js';
|
|
19
|
+
import { alertKey } from '../check/index.js';
|
|
20
|
+
import type { Emitter, Frame } from './context.js';
|
|
21
|
+
import { ALERT_DEFAULTS, MARKER_DEFAULTS } from './defaults.js';
|
|
22
|
+
import { emitExpression } from './expressions.js';
|
|
23
|
+
import { argumentFor, fieldFor } from './outputs.js';
|
|
24
|
+
|
|
25
|
+
export function emitEventCall(e: Emitter, f: Frame, call: Call, name: string): void {
|
|
26
|
+
switch (name) {
|
|
27
|
+
case 'signal':
|
|
28
|
+
emitMarker(e, f, call);
|
|
29
|
+
return;
|
|
30
|
+
case 'alert':
|
|
31
|
+
emitAlert(e, f, call);
|
|
32
|
+
return;
|
|
33
|
+
case 'barColor':
|
|
34
|
+
e.barColor = { channel: emitPaint(e, f, call, e.barColor?.channel, 'bar colour') };
|
|
35
|
+
return;
|
|
36
|
+
case 'background':
|
|
37
|
+
e.background = { channel: emitPaint(e, f, call, e.background?.channel, 'background') };
|
|
38
|
+
return;
|
|
39
|
+
default:
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* One entry per `signal()` call site, and a channel that is held back on a bar
|
|
46
|
+
* that is still moving.
|
|
47
|
+
*
|
|
48
|
+
* A marker is emitted when its channel holds a string for the bar and not
|
|
49
|
+
* otherwise, so a call site inside an `if` produces a marker on the bars the
|
|
50
|
+
* branch was taken and nothing anywhere else. The channel is not declared
|
|
51
|
+
* `once` for that reason: a signal may sit under a condition, which is the
|
|
52
|
+
* whole point of one.
|
|
53
|
+
*/
|
|
54
|
+
function emitMarker(e: Emitter, f: Frame, call: Call): void {
|
|
55
|
+
const text = argumentFor(e, call, 'text');
|
|
56
|
+
// A marker's channel is named after the text it carries when that is a
|
|
57
|
+
// literal, which is what 12.2's `debug.names.channels` shows.
|
|
58
|
+
const literal = text === undefined ? undefined : e.fold(text.value);
|
|
59
|
+
const name = literal?.kind === 'string' ? literal.value : `marker ${e.markers.length}`;
|
|
60
|
+
const channel = e.layout.channel('string', true, false, name);
|
|
61
|
+
if (text === undefined) {
|
|
62
|
+
f.builder.at(call.span);
|
|
63
|
+
f.builder.push('CONST', e.pool.absent());
|
|
64
|
+
} else {
|
|
65
|
+
emitExpression(e, f, text.value);
|
|
66
|
+
}
|
|
67
|
+
f.builder.at(call.span);
|
|
68
|
+
f.builder.push('EMIT', channel);
|
|
69
|
+
|
|
70
|
+
e.markers.push({
|
|
71
|
+
key: `m${e.markers.length}`,
|
|
72
|
+
channel,
|
|
73
|
+
position: fieldFor(e, call, 'at', MARKER_DEFAULTS),
|
|
74
|
+
shape: fieldFor(e, call, 'shape', MARKER_DEFAULTS),
|
|
75
|
+
color: fieldFor(e, call, 'color', MARKER_DEFAULTS),
|
|
76
|
+
// `markers[].textColor` has no argument in the library: `signal` takes one
|
|
77
|
+
// colour and it is the plate's. Null is the effective value of a field no
|
|
78
|
+
// script can express, which is 2.8's own reading of a table's text size.
|
|
79
|
+
textColor: null,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function emitAlert(e: Emitter, f: Frame, call: Call): void {
|
|
84
|
+
const id = fieldFor(e, call, 'id', ALERT_DEFAULTS);
|
|
85
|
+
// `id` is the stable name of the entry, so a user's alert subscription
|
|
86
|
+
// survives an edit to the script. With none, the compiler derives one from
|
|
87
|
+
// the call's position, which is what OS8008 already warns about, and the
|
|
88
|
+
// checker refuses two alerts that would land under one name with OS3017.
|
|
89
|
+
const key = alertKey(typeof id === 'string' ? id : undefined, call.span.line);
|
|
90
|
+
const condChannel = e.layout.channel('bool', true, false, key);
|
|
91
|
+
const messageChannel = e.layout.channel('string', true, false, `${key} message`);
|
|
92
|
+
|
|
93
|
+
f.builder.at(call.span);
|
|
94
|
+
f.builder.push('CONST', e.pool.bool(true));
|
|
95
|
+
f.builder.push('EMIT', condChannel);
|
|
96
|
+
|
|
97
|
+
const message = argumentFor(e, call, 'message');
|
|
98
|
+
if (message === undefined) {
|
|
99
|
+
f.builder.at(call.span);
|
|
100
|
+
f.builder.push('CONST', e.pool.absent());
|
|
101
|
+
} else {
|
|
102
|
+
emitExpression(e, f, message.value);
|
|
103
|
+
}
|
|
104
|
+
f.builder.at(call.span);
|
|
105
|
+
f.builder.push('EMIT', messageChannel);
|
|
106
|
+
|
|
107
|
+
e.alerts.push({
|
|
108
|
+
key,
|
|
109
|
+
title: fieldFor(e, call, 'title', ALERT_DEFAULTS),
|
|
110
|
+
condChannel,
|
|
111
|
+
messageChannel,
|
|
112
|
+
frequency: fieldFor(e, call, 'frequency', ALERT_DEFAULTS),
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* `barColor` and `background`: one channel each per program.
|
|
118
|
+
*
|
|
119
|
+
* A script with three `barColor()` calls writes the same channel three times
|
|
120
|
+
* and the last write on the bar wins, which is the same rule as any other
|
|
121
|
+
* channel and needs no sentence of its own (2.8).
|
|
122
|
+
*/
|
|
123
|
+
function emitPaint(
|
|
124
|
+
e: Emitter,
|
|
125
|
+
f: Frame,
|
|
126
|
+
call: Call,
|
|
127
|
+
existing: number | undefined,
|
|
128
|
+
name: string,
|
|
129
|
+
): number {
|
|
130
|
+
const channel = existing ?? e.layout.channel('color', false, false, name);
|
|
131
|
+
const colour = argumentFor(e, call, 'color');
|
|
132
|
+
if (colour === undefined) {
|
|
133
|
+
f.builder.at(call.span);
|
|
134
|
+
f.builder.push('CONST', e.pool.absent());
|
|
135
|
+
} else {
|
|
136
|
+
emitExpression(e, f, colour.value);
|
|
137
|
+
}
|
|
138
|
+
f.builder.at(call.span);
|
|
139
|
+
f.builder.push('EMIT', channel);
|
|
140
|
+
return channel;
|
|
141
|
+
}
|