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,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A tag that names nothing, read from the file, `stdlib.md` 17.2.
|
|
3
|
+
*
|
|
4
|
+
* **A tag argument that defaults to the empty string is a label the destination
|
|
5
|
+
* carries. A tag argument that is required, or defaults to absence, is a
|
|
6
|
+
* reference to something that has to exist.** `buy`, `sell`, `exit`,
|
|
7
|
+
* `order.place`, `order.reverse` and `order.bracket` all default theirs to `""`,
|
|
8
|
+
* and an empty label is an ordinary order. `cancel` requires one and `close`
|
|
9
|
+
* defaults to absence, and both name something the strategy already has.
|
|
10
|
+
*
|
|
11
|
+
* `cancel` is refused by the engine, with OS7009, because what it asks about is
|
|
12
|
+
* whether an order is live now and only a run knows that. `close` is refused
|
|
13
|
+
* here, before any bar runs, because what it asks about is answerable from the
|
|
14
|
+
* file alone: a tag no order in the file is placed with can never name a part of
|
|
15
|
+
* a position, so the call sends nothing on every bar and says nothing, and the
|
|
16
|
+
* script goes on believing it has flattened.
|
|
17
|
+
*
|
|
18
|
+
* **The run cannot tell that mistake from an ordinary bar.** A tag naming no
|
|
19
|
+
* ledger row is also what a working script looks like before its entry has
|
|
20
|
+
* happened: `close(tag = "runner")` on the bar an exit signal first fires is a
|
|
21
|
+
* tag that has never named a row yet, and refusing it would refuse a script that
|
|
22
|
+
* had done exactly what this code's own fix asks. Nothing a script can write
|
|
23
|
+
* today would guard it either, because every call that reads the ledger
|
|
24
|
+
* (`stdlib.md` 17.3) is planned. The file, unlike the run, is complete: what it
|
|
25
|
+
* can place is all of what it will ever place.
|
|
26
|
+
*
|
|
27
|
+
* **Only what is written is read.** A tag a script computes could be anything,
|
|
28
|
+
* so a computed tag on an order that places one leaves this pass silent for the
|
|
29
|
+
* whole file rather than reporting a close it cannot prove is dead.
|
|
30
|
+
*/
|
|
31
|
+
import type { Argument } from '../ast/index.js';
|
|
32
|
+
import type { Span } from '../span/index.js';
|
|
33
|
+
import type { Checker } from './checker.js';
|
|
34
|
+
import type { CheckedCall } from './checked.js';
|
|
35
|
+
import { literalString } from './literals.js';
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The calls that append a ledger row a later `close` can act on.
|
|
39
|
+
*
|
|
40
|
+
* `exit`, `order.bracket` and `cancel` are not among them: a bracket is a level
|
|
41
|
+
* and a cancellation is an instruction about an order, and neither appends a
|
|
42
|
+
* row (`stdlib.md` 17.7). Nor is `close` itself, which only ever reduces what
|
|
43
|
+
* one of these opened, so a close that is the only mention of a tag is exactly
|
|
44
|
+
* the call this pass is about.
|
|
45
|
+
*/
|
|
46
|
+
const PLACING: ReadonlySet<string> = new Set(['buy', 'sell', 'order.place', 'order.reverse']);
|
|
47
|
+
|
|
48
|
+
/** The `tag` argument a call was given, absent where it was not written. */
|
|
49
|
+
function tagArgument(checked: CheckedCall): Argument | undefined {
|
|
50
|
+
const index = checked.entry?.parameters.findIndex((one) => one.name === 'tag') ?? -1;
|
|
51
|
+
return index < 0 ? undefined : checked.arguments[index];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** One `close` whose tag was written out, and where its tag is written. */
|
|
55
|
+
interface WrittenClose {
|
|
56
|
+
readonly tag: string;
|
|
57
|
+
readonly span: Span;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** OS7016: a `close` naming a tag no order in this file is placed with. */
|
|
61
|
+
export function reportUnplaceableTags(checker: Checker): void {
|
|
62
|
+
if (checker.declaration?.form !== 'strategy') return;
|
|
63
|
+
|
|
64
|
+
const placed = new Set<string>();
|
|
65
|
+
const closes: WrittenClose[] = [];
|
|
66
|
+
|
|
67
|
+
for (const checked of checker.calls) {
|
|
68
|
+
if (checked.target !== 'library') continue;
|
|
69
|
+
|
|
70
|
+
if (PLACING.has(checked.name)) {
|
|
71
|
+
const argument = tagArgument(checked);
|
|
72
|
+
// A call that writes no tag takes the empty one its signature states.
|
|
73
|
+
if (argument === undefined) {
|
|
74
|
+
placed.add('');
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const written = literalString(argument.value);
|
|
78
|
+
if (written === undefined) return;
|
|
79
|
+
placed.add(written);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (checked.name !== 'close') continue;
|
|
84
|
+
const argument = tagArgument(checked);
|
|
85
|
+
if (argument === undefined) continue;
|
|
86
|
+
const written = literalString(argument.value);
|
|
87
|
+
if (written !== undefined) closes.push({ tag: written, span: argument.span });
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
for (const close of closes) {
|
|
91
|
+
if (placed.has(close.tag)) continue;
|
|
92
|
+
checker.report('OS7016', close.span, { tag: JSON.stringify(close.tag) });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The types of language.md section 5, as the checker holds them.
|
|
3
|
+
*
|
|
4
|
+
* An annotation is syntax and has a span; this is the checker's answer, it has
|
|
5
|
+
* no position, and it exists for expressions nobody annotated. The two are
|
|
6
|
+
* separate for that reason and `ast/annotations.ts` says the same thing from
|
|
7
|
+
* the other side.
|
|
8
|
+
*
|
|
9
|
+
* Three things about this model are worth knowing before reading anything that
|
|
10
|
+
* uses it.
|
|
11
|
+
*
|
|
12
|
+
* `none` is a member of every type (section 6), so it is a type here and it
|
|
13
|
+
* satisfies every other one. That is why a first assignment of `none` fixes
|
|
14
|
+
* nothing: there is no information in it to fix a name's type with.
|
|
15
|
+
*
|
|
16
|
+
* A series is a wrapper rather than a flag, and broadcast (section 5.2) makes
|
|
17
|
+
* `T` and `series T` interchangeable at every boundary, so nothing outside this
|
|
18
|
+
* file compares two types by identity.
|
|
19
|
+
*
|
|
20
|
+
* `unknown` is what an expression has after a diagnostic was already reported
|
|
21
|
+
* about it. It satisfies everything and everything satisfies it, so one mistake
|
|
22
|
+
* produces one diagnostic instead of one per operator above it.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/** The scalar types, which are the ones an array may hold and a `var` may take. */
|
|
26
|
+
export const VALUE_KINDS = ['number', 'string', 'bool', 'color'] as const;
|
|
27
|
+
export type ValueKind = (typeof VALUE_KINDS)[number];
|
|
28
|
+
|
|
29
|
+
/** The runtime object types of language.md 5.4. */
|
|
30
|
+
export const OBJECT_KINDS = ['line', 'label', 'box', 'polyline', 'table'] as const;
|
|
31
|
+
export type ObjectKind = (typeof OBJECT_KINDS)[number];
|
|
32
|
+
|
|
33
|
+
/** The declaration handle types of language.md 5.4. */
|
|
34
|
+
export const HANDLE_KINDS = ['plot', 'fill', 'level'] as const;
|
|
35
|
+
export type HandleKind = (typeof HANDLE_KINDS)[number];
|
|
36
|
+
|
|
37
|
+
export type Type =
|
|
38
|
+
| { readonly kind: ValueKind }
|
|
39
|
+
| { readonly kind: 'none' }
|
|
40
|
+
| { readonly kind: 'series'; readonly element: Type }
|
|
41
|
+
| { readonly kind: 'array'; readonly element: Type }
|
|
42
|
+
| { readonly kind: 'handle'; readonly handle: HandleKind }
|
|
43
|
+
| { readonly kind: 'object'; readonly object: ObjectKind }
|
|
44
|
+
/**
|
|
45
|
+
* The object kinds one parameter accepts, and nothing else.
|
|
46
|
+
*
|
|
47
|
+
* `draw.setFrom` moves the first anchor of a line or of a box, and neither a
|
|
48
|
+
* single object type nor `any` says that: the first is too narrow to write
|
|
49
|
+
* and the second takes a label, a number and everything else, which is how a
|
|
50
|
+
* setter applied to the wrong object came to compile, run on every bar and
|
|
51
|
+
* draw nothing with nothing reported.
|
|
52
|
+
*
|
|
53
|
+
* It is a set of object kinds rather than a union of arbitrary types because
|
|
54
|
+
* a set is what the eleven signatures that need it mean, and nothing else in
|
|
55
|
+
* version 1 needs more. A general union would have to answer what it means
|
|
56
|
+
* for a series, an array element and a name's type, and no entry is asking.
|
|
57
|
+
* This type therefore appears in a library signature and never as the type of
|
|
58
|
+
* an expression, so nothing downstream has to hold one.
|
|
59
|
+
*/
|
|
60
|
+
| { readonly kind: 'objects'; readonly objects: readonly ObjectKind[] }
|
|
61
|
+
/** The absence of a result. Not a type a name can hold; see language.md 5.1. */
|
|
62
|
+
| { readonly kind: 'nothing' }
|
|
63
|
+
/**
|
|
64
|
+
* A stand-in inside a library signature, and nowhere else.
|
|
65
|
+
*
|
|
66
|
+
* `element(arr, i)` returns whatever `arr` holds and `orElse(x, fallback)`
|
|
67
|
+
* returns whatever it was given. Both are one signature over many types, and
|
|
68
|
+
* the call site binds the stand-in to a real type before anything downstream
|
|
69
|
+
* sees it, so no expression is ever left with one of these as its type.
|
|
70
|
+
*/
|
|
71
|
+
| { readonly kind: 'variable'; readonly name: string }
|
|
72
|
+
/** Already reported about. Satisfies everything, so mistakes do not cascade. */
|
|
73
|
+
| { readonly kind: 'unknown' };
|
|
74
|
+
|
|
75
|
+
export const NUMBER: Type = { kind: 'number' };
|
|
76
|
+
export const STRING: Type = { kind: 'string' };
|
|
77
|
+
export const BOOL: Type = { kind: 'bool' };
|
|
78
|
+
export const COLOR: Type = { kind: 'color' };
|
|
79
|
+
export const NONE: Type = { kind: 'none' };
|
|
80
|
+
export const NOTHING: Type = { kind: 'nothing' };
|
|
81
|
+
export const UNKNOWN: Type = { kind: 'unknown' };
|
|
82
|
+
|
|
83
|
+
export function seriesOf(element: Type): Type {
|
|
84
|
+
return element.kind === 'series' ? element : { kind: 'series', element };
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function arrayOf(element: Type): Type {
|
|
88
|
+
return { kind: 'array', element };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function handleType(handle: HandleKind): Type {
|
|
92
|
+
return { kind: 'handle', handle };
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function objectType(object: ObjectKind): Type {
|
|
96
|
+
return { kind: 'object', object };
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/** The set of object kinds a parameter accepts, for a signature that takes two. */
|
|
100
|
+
export function objectsType(objects: readonly ObjectKind[]): Type {
|
|
101
|
+
return { kind: 'objects', objects };
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** The object kinds a type stands for, or nothing when it stands for none. */
|
|
105
|
+
function objectKindsOf(type: Type): readonly ObjectKind[] | undefined {
|
|
106
|
+
if (type.kind === 'object') return [type.object];
|
|
107
|
+
if (type.kind === 'objects') return type.objects;
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/** The value behind a series, and the type itself when it is not one. */
|
|
112
|
+
export function elementOf(type: Type): Type {
|
|
113
|
+
return type.kind === 'series' ? type.element : type;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function isSeries(type: Type): boolean {
|
|
117
|
+
return type.kind === 'series';
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function isHandle(type: Type): boolean {
|
|
121
|
+
return type.kind === 'handle';
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export function isDefinite(type: Type): boolean {
|
|
125
|
+
return type.kind !== 'none' && type.kind !== 'unknown';
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* The type as a reader sees it in a message.
|
|
130
|
+
*
|
|
131
|
+
* Every OS2003, OS2012 and OS3011 puts one of these in front of somebody, so
|
|
132
|
+
* the spelling is the spelling of the specification's own tables rather than an
|
|
133
|
+
* internal tag: `series number`, not `series(number)`.
|
|
134
|
+
*/
|
|
135
|
+
export function typeText(type: Type): string {
|
|
136
|
+
switch (type.kind) {
|
|
137
|
+
case 'series':
|
|
138
|
+
return `series ${typeText(type.element)}`;
|
|
139
|
+
case 'array':
|
|
140
|
+
return `array<${typeText(type.element)}>`;
|
|
141
|
+
case 'handle':
|
|
142
|
+
return type.handle;
|
|
143
|
+
case 'object':
|
|
144
|
+
return type.object;
|
|
145
|
+
case 'objects':
|
|
146
|
+
return kindList(type.objects);
|
|
147
|
+
case 'nothing':
|
|
148
|
+
return 'nothing';
|
|
149
|
+
case 'variable':
|
|
150
|
+
return type.name;
|
|
151
|
+
case 'unknown':
|
|
152
|
+
return 'unknown';
|
|
153
|
+
default:
|
|
154
|
+
return type.kind;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* A set of object kinds as a reader sees it: `a line or a box`.
|
|
160
|
+
*
|
|
161
|
+
* Written out rather than abbreviated because this is the whole of what OS3011
|
|
162
|
+
* can tell somebody who passed the wrong object: the sentence has to name what
|
|
163
|
+
* the setter does take, and a reader who is told `object` learns nothing.
|
|
164
|
+
*/
|
|
165
|
+
function kindList(kinds: readonly ObjectKind[]): string {
|
|
166
|
+
if (kinds.length === 0) return 'nothing';
|
|
167
|
+
if (kinds.length === 1) return kinds[0] as string;
|
|
168
|
+
return `${kinds.slice(0, -1).join(', ')} or ${kinds[kinds.length - 1] as string}`;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Whether two types are the same once broadcast is taken into account.
|
|
173
|
+
*
|
|
174
|
+
* Broadcast (language.md 5.2) changes no value, so `number` and `series number`
|
|
175
|
+
* are the same type to every rule in the language that asks whether two things
|
|
176
|
+
* mix. The series-ness survives in the result, which is what `join` is for.
|
|
177
|
+
*/
|
|
178
|
+
export function sameType(left: Type, right: Type): boolean {
|
|
179
|
+
const a = elementOf(left);
|
|
180
|
+
const b = elementOf(right);
|
|
181
|
+
if (a.kind === 'unknown' || b.kind === 'unknown') return true;
|
|
182
|
+
if (a.kind === 'variable' || b.kind === 'variable') return true;
|
|
183
|
+
// A set of object kinds is compared before the tags are, because an object
|
|
184
|
+
// and a set the object is in are the same type to every rule that asks. A
|
|
185
|
+
// kind outside the set is not, which is the whole point of writing the set.
|
|
186
|
+
if (a.kind === 'objects' || b.kind === 'objects') {
|
|
187
|
+
const wanted = objectKindsOf(a);
|
|
188
|
+
const given = objectKindsOf(b);
|
|
189
|
+
if (wanted === undefined || given === undefined) return false;
|
|
190
|
+
return given.some((one) => wanted.includes(one));
|
|
191
|
+
}
|
|
192
|
+
if (a.kind !== b.kind) return false;
|
|
193
|
+
if (a.kind === 'array' && b.kind === 'array') return sameType(a.element, b.element);
|
|
194
|
+
if (a.kind === 'handle' && b.kind === 'handle') return a.handle === b.handle;
|
|
195
|
+
if (a.kind === 'object' && b.kind === 'object') return a.object === b.object;
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Whether a value of `from` may stand where `to` is wanted.
|
|
201
|
+
*
|
|
202
|
+
* `none` is accepted everywhere a value is, because it is a member of every
|
|
203
|
+
* type. `nothing` is accepted nowhere, because a call that draws rather than
|
|
204
|
+
* computing has no result to stand anywhere: that case is OS2003.
|
|
205
|
+
*/
|
|
206
|
+
export function accepts(to: Type, from: Type): boolean {
|
|
207
|
+
if (to.kind === 'unknown' || from.kind === 'unknown') return true;
|
|
208
|
+
if (to.kind === 'variable' || from.kind === 'variable') return true;
|
|
209
|
+
if (from.kind === 'nothing' || to.kind === 'nothing') return from.kind === to.kind;
|
|
210
|
+
if (from.kind === 'none') return true;
|
|
211
|
+
if (to.kind === 'none') return true;
|
|
212
|
+
return sameType(to, from);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Whether two types may stand beside each other.
|
|
217
|
+
*
|
|
218
|
+
* This is `sameType` with the rule of language.md 6 added: `none` is a member
|
|
219
|
+
* of every type, so an arm of a ternary, a `case` value or an operand of `==`
|
|
220
|
+
* that is absent mixes with anything. It is the test every rule that compares
|
|
221
|
+
* two written expressions uses, and `sameType` is the narrower question of
|
|
222
|
+
* whether two definite types are the same one.
|
|
223
|
+
*/
|
|
224
|
+
export function compatible(left: Type, right: Type): boolean {
|
|
225
|
+
if (left.kind === 'nothing' || right.kind === 'nothing') return left.kind === right.kind;
|
|
226
|
+
if (elementOf(left).kind === 'none' || elementOf(right).kind === 'none') return true;
|
|
227
|
+
return sameType(left, right);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* The type of a place that holds both, with series-ness carried across.
|
|
232
|
+
*
|
|
233
|
+
* A name assigned a plain number on one line and a series number on another
|
|
234
|
+
* holds a series number, because a bar where the plain value was written is a
|
|
235
|
+
* bar of the series. `none` never decides the answer, which is the rule of
|
|
236
|
+
* language.md 10.1 stated once, here, for every caller.
|
|
237
|
+
*/
|
|
238
|
+
export function join(left: Type, right: Type): Type {
|
|
239
|
+
if (left.kind === 'unknown') return right;
|
|
240
|
+
if (right.kind === 'unknown') return left;
|
|
241
|
+
if (left.kind === 'none') return right;
|
|
242
|
+
if (right.kind === 'none') return left;
|
|
243
|
+
const element = elementOf(left);
|
|
244
|
+
return isSeries(left) || isSeries(right) ? seriesOf(element) : element;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/** Whether this type may be an array element, language.md 14.1. OS2019 otherwise. */
|
|
248
|
+
export function canBeArrayElement(type: Type): boolean {
|
|
249
|
+
switch (type.kind) {
|
|
250
|
+
case 'number':
|
|
251
|
+
case 'string':
|
|
252
|
+
case 'bool':
|
|
253
|
+
case 'color':
|
|
254
|
+
case 'object':
|
|
255
|
+
case 'unknown':
|
|
256
|
+
return true;
|
|
257
|
+
default:
|
|
258
|
+
return false;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Warmup: the first bar an expression can honestly produce a value for.
|
|
3
|
+
*
|
|
4
|
+
* language.md 7.3 makes warmup a promise rather than a hint, and stdlib.md
|
|
5
|
+
* states a length per function so two engines cannot disagree by a bar. This
|
|
6
|
+
* module is the arithmetic of composing those lengths, and nothing else.
|
|
7
|
+
*
|
|
8
|
+
* Three answers are possible and all three are useful, which is why this is a
|
|
9
|
+
* small lattice and not a number:
|
|
10
|
+
*
|
|
11
|
+
* `at` is an exact first bar. Every length on the path was known while
|
|
12
|
+
* compiling, so the checker can say "bar 33" and mean it.
|
|
13
|
+
*
|
|
14
|
+
* `atLeast` is a floor. A length that comes from `input()` is not known until
|
|
15
|
+
* the settings are resolved, and a warmup that depends on the data (`vwap`
|
|
16
|
+
* starts at the session's first bar) is not known even then. Saying "at least
|
|
17
|
+
* bar 9" is true; saying "bar 9" would not be, and a warning built on a number
|
|
18
|
+
* that was invented is worse than no warning.
|
|
19
|
+
*
|
|
20
|
+
* `never` is a value that is absent on every bar of the run: a name that was
|
|
21
|
+
* never given a definite type is of type `none` (language.md 10.1), and a plot
|
|
22
|
+
* of one is OS8009. This is the one case where the compiler can tell a trader
|
|
23
|
+
* that a line will not appear before they run the study and wonder why.
|
|
24
|
+
*
|
|
25
|
+
* There is no warmup field in a compiled program (`compiled-program.md` section
|
|
26
|
+
* 7) and there is not meant to be one: the line starts on the bar the value
|
|
27
|
+
* stops being absent. What is here serves the diagnostics and the editor, which
|
|
28
|
+
* is why it is allowed to be approximate and has to say when it is.
|
|
29
|
+
*/
|
|
30
|
+
export type Warmup =
|
|
31
|
+
| { readonly kind: 'at'; readonly bar: number }
|
|
32
|
+
| { readonly kind: 'atLeast'; readonly bar: number }
|
|
33
|
+
| { readonly kind: 'never' };
|
|
34
|
+
|
|
35
|
+
/** A value on the very first bar. */
|
|
36
|
+
export const BAR_ZERO: Warmup = { kind: 'at', bar: 0 };
|
|
37
|
+
|
|
38
|
+
export const NEVER: Warmup = { kind: 'never' };
|
|
39
|
+
|
|
40
|
+
export function atBar(bar: number): Warmup {
|
|
41
|
+
return { kind: 'at', bar: Math.max(0, Math.trunc(bar)) };
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function atLeastBar(bar: number): Warmup {
|
|
45
|
+
return { kind: 'atLeast', bar: Math.max(0, Math.trunc(bar)) };
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** The floor of a warmup, for a rule that can only give a lower bound. */
|
|
49
|
+
export function weaken(warmup: Warmup): Warmup {
|
|
50
|
+
return warmup.kind === 'at' ? atLeastBar(warmup.bar) : warmup;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The warmup of something that needs both of two values.
|
|
55
|
+
*
|
|
56
|
+
* Arithmetic propagates absence (language.md 6.2), so a sum is absent until
|
|
57
|
+
* both sides are present: the later of the two. An operand that is never
|
|
58
|
+
* present makes the whole thing never present.
|
|
59
|
+
*/
|
|
60
|
+
export function later(left: Warmup, right: Warmup): Warmup {
|
|
61
|
+
if (left.kind === 'never' || right.kind === 'never') return NEVER;
|
|
62
|
+
const bar = Math.max(left.bar, right.bar);
|
|
63
|
+
return left.kind === 'at' && right.kind === 'at' ? atBar(bar) : atLeastBar(bar);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* The warmup of something that needs either of two values.
|
|
68
|
+
*
|
|
69
|
+
* `orElse(x, fallback)` and a ternary whose arms warm up at different bars are
|
|
70
|
+
* both this: present as soon as the earlier one is.
|
|
71
|
+
*/
|
|
72
|
+
export function earlier(left: Warmup, right: Warmup): Warmup {
|
|
73
|
+
if (left.kind === 'never') return right;
|
|
74
|
+
if (right.kind === 'never') return left;
|
|
75
|
+
const bar = Math.min(left.bar, right.bar);
|
|
76
|
+
return left.kind === 'at' && right.kind === 'at' ? atBar(bar) : atLeastBar(bar);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** The warmup of every one of these together, or bar 0 when there are none. */
|
|
80
|
+
export function allOf(warmups: readonly Warmup[]): Warmup {
|
|
81
|
+
return warmups.reduce<Warmup>(later, BAR_ZERO);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* The same value, delayed by a stated number of bars.
|
|
86
|
+
*
|
|
87
|
+
* This is how a library entry's declared length composes with its source's:
|
|
88
|
+
* `sma(ema(close, 10), 10)` is absent until bar 18 because each call delays
|
|
89
|
+
* whatever it was given by its own length, and stdlib.md section 1 says so.
|
|
90
|
+
*/
|
|
91
|
+
export function delayed(warmup: Warmup, bars: number): Warmup {
|
|
92
|
+
if (warmup.kind === 'never') return NEVER;
|
|
93
|
+
const bar = warmup.bar + Math.trunc(bars);
|
|
94
|
+
return warmup.kind === 'at' ? atBar(bar) : atLeastBar(bar);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** Whether this value is absent on every bar, which is what OS8009 reports. */
|
|
98
|
+
export function isNever(warmup: Warmup): boolean {
|
|
99
|
+
return warmup.kind === 'never';
|
|
100
|
+
}
|
|
@@ -3,6 +3,18 @@ import type { Span } from '../span/index.js';
|
|
|
3
3
|
import { diagnosticFor, isError } from './diagnostic.js';
|
|
4
4
|
import type { Diagnostic } from './diagnostic.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Two codes in code point order, which is the same order everywhere.
|
|
8
|
+
*
|
|
9
|
+
* `<` on two strings compares UTF-16 code units and reads no environment
|
|
10
|
+
* setting, which is exactly what `language.md` 9.3 fixes for the language's own
|
|
11
|
+
* string comparison. The engine's own output obeys the rule it gives scripts.
|
|
12
|
+
*/
|
|
13
|
+
function byCodePoint(left: string, right: string): number {
|
|
14
|
+
if (left < right) return -1;
|
|
15
|
+
return left > right ? 1 : 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
6
18
|
/**
|
|
7
19
|
* What a stage is handed so it can report.
|
|
8
20
|
*
|
|
@@ -77,11 +89,25 @@ export class DiagnosticBag implements DiagnosticSink {
|
|
|
77
89
|
*
|
|
78
90
|
* Stages report in the order they run, so a checker warning about line 2
|
|
79
91
|
* arrives after a parser error about line 40. A reader reads top to bottom.
|
|
92
|
+
*
|
|
93
|
+
* **The order is total, and it depends on nothing outside the program.** Two
|
|
94
|
+
* engines handed the same diagnostics have to print them in the same order, so
|
|
95
|
+
* the tie after the offset is the span's length and then the code compared by
|
|
96
|
+
* code point. It was a locale comparison, which `compiled-program.md` 8.4
|
|
97
|
+
* forbids by name: the same two codes order differently under different
|
|
98
|
+
* collation rules, and the machine that is set up differently is the one
|
|
99
|
+
* nobody is looking at. Length is in the comparison because without it two
|
|
100
|
+
* diagnostics sharing a code and an offset tie, and a tie leaves the answer to
|
|
101
|
+
* whether the sort happens to be stable, which is a property of the engine
|
|
102
|
+
* rather than of the language. With it, nothing can tie: the bag already
|
|
103
|
+
* refuses a second diagnostic with the same code, offset and length.
|
|
80
104
|
*/
|
|
81
105
|
ordered(): readonly Diagnostic[] {
|
|
82
106
|
return [...this.#items].sort(
|
|
83
107
|
(left, right) =>
|
|
84
|
-
left.span.offset - right.span.offset ||
|
|
108
|
+
left.span.offset - right.span.offset ||
|
|
109
|
+
left.span.length - right.span.length ||
|
|
110
|
+
byCodePoint(left.code, right.code),
|
|
85
111
|
);
|
|
86
112
|
}
|
|
87
113
|
}
|