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,412 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolving a call: which signature it means, whether what was written fits it,
|
|
3
|
+
* and what comes back.
|
|
4
|
+
*
|
|
5
|
+
* The arguments have already been checked as expressions by the time this runs,
|
|
6
|
+
* so everything here reads their recorded types and warmups. That is what keeps
|
|
7
|
+
* this file out of a cycle with the expression pass, and it is also the order
|
|
8
|
+
* a reader expects: the inner expressions are wrong or they are not, before
|
|
9
|
+
* anything asks whether they fit the call.
|
|
10
|
+
*
|
|
11
|
+
* Overload resolution is by arity and then by argument type, which is the whole
|
|
12
|
+
* of `stdlib.md` 2.2. It happens once, here, and there is no run-time dispatch.
|
|
13
|
+
*/
|
|
14
|
+
import type { Argument, Call } from '../ast/index.js';
|
|
15
|
+
import { withoutGrouping } from '../ast/index.js';
|
|
16
|
+
import { bindArguments, arityText, signatureText } from './arguments.js';
|
|
17
|
+
import { warmupOfCall } from './call-warmup.js';
|
|
18
|
+
import type { ParameterShape } from './arguments.js';
|
|
19
|
+
import type { Checker, Placement } from './checker.js';
|
|
20
|
+
import { reportStrategyOnly } from './checker.js';
|
|
21
|
+
import type { CheckedCall } from './checked.js';
|
|
22
|
+
import { isCompileTimeConstant } from './constant.js';
|
|
23
|
+
import { refuseHandle } from './handles.js';
|
|
24
|
+
import type { LibraryEntry } from './library.js';
|
|
25
|
+
import { literalNumber, literalString } from './literals.js';
|
|
26
|
+
import { recordOutput, reportCallWarnings } from './outputs.js';
|
|
27
|
+
import { isTopLevelOnly, libraryEntries } from './surface.js';
|
|
28
|
+
import { closestName } from './suggest.js';
|
|
29
|
+
import type { Type } from './types.js';
|
|
30
|
+
import { NOTHING, UNKNOWN, accepts, elementOf, isHandle, typeText } from './types.js';
|
|
31
|
+
import { BAR_ZERO } from './warmup.js';
|
|
32
|
+
|
|
33
|
+
/** The calls whose first argument is an array that an empty literal may fill. */
|
|
34
|
+
const INSERTERS = new Set(['push', 'unshift', 'insert', 'set']);
|
|
35
|
+
|
|
36
|
+
function shapesOf(entry: LibraryEntry): readonly ParameterShape[] {
|
|
37
|
+
return entry.parameters.map((one) => ({ name: one.name, optional: one.optional }));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The signature a call means.
|
|
42
|
+
*
|
|
43
|
+
* With one candidate there is nothing to choose. With several, arity decides
|
|
44
|
+
* first because it is the cheaper test and it separates most of the library's
|
|
45
|
+
* overloads on its own; where two signatures take the same count, the written
|
|
46
|
+
* positional arguments decide, which is `stdlib.md` 2.2's second rule.
|
|
47
|
+
*/
|
|
48
|
+
function selectOverload(
|
|
49
|
+
checker: Checker,
|
|
50
|
+
call: Call,
|
|
51
|
+
entries: readonly LibraryEntry[],
|
|
52
|
+
): LibraryEntry | undefined {
|
|
53
|
+
const callable = entries.filter((one) => one.callable);
|
|
54
|
+
const first = callable[0];
|
|
55
|
+
if (first === undefined || callable.length === 1) return first;
|
|
56
|
+
|
|
57
|
+
const given = call.args.length;
|
|
58
|
+
const byArity = callable.filter((one) => {
|
|
59
|
+
const required = one.parameters.filter((p) => !p.optional).length;
|
|
60
|
+
return given >= required && given <= one.parameters.length;
|
|
61
|
+
});
|
|
62
|
+
const narrowed = byArity.length === 0 ? callable : byArity;
|
|
63
|
+
const only = narrowed[0];
|
|
64
|
+
if (only === undefined || narrowed.length === 1) return only;
|
|
65
|
+
|
|
66
|
+
const byType = narrowed.find((one) =>
|
|
67
|
+
call.args.every((argument, index) => {
|
|
68
|
+
if (argument.label !== undefined) return true;
|
|
69
|
+
const parameter = one.parameters[index];
|
|
70
|
+
return parameter === undefined || accepts(parameter.type, checker.typeOf(argument.value));
|
|
71
|
+
}),
|
|
72
|
+
);
|
|
73
|
+
return byType ?? only;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Binds the stand-ins of a signature to the types the call actually supplied. */
|
|
77
|
+
function bindVariables(
|
|
78
|
+
checker: Checker,
|
|
79
|
+
entry: LibraryEntry,
|
|
80
|
+
filled: readonly (Argument | undefined)[],
|
|
81
|
+
): Map<string, Type> {
|
|
82
|
+
const bound = new Map<string, Type>();
|
|
83
|
+
|
|
84
|
+
const remember = (name: string, type: Type): void => {
|
|
85
|
+
const existing = bound.get(name);
|
|
86
|
+
if (existing === undefined || existing.kind === 'none' || existing.kind === 'unknown') {
|
|
87
|
+
bound.set(name, type);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
for (let i = 0; i < entry.parameters.length; i += 1) {
|
|
92
|
+
const parameter = entry.parameters[i];
|
|
93
|
+
const argument = filled[i];
|
|
94
|
+
if (parameter === undefined || argument === undefined) continue;
|
|
95
|
+
// A stand-in binds to the type it was given, and a declaration handle is
|
|
96
|
+
// the one type it must not carry: a signature that returned one would hand
|
|
97
|
+
// a name a handle the emitter has no declaration for (`language.md` 5.4).
|
|
98
|
+
// `validateArguments` reports it; this keeps the result out of the tree.
|
|
99
|
+
const supplied = checker.typeOf(argument.value);
|
|
100
|
+
const given = supplied.kind === 'handle' ? UNKNOWN : supplied;
|
|
101
|
+
const wanted = parameter.type;
|
|
102
|
+
if (wanted.kind === 'variable') remember(wanted.name, given);
|
|
103
|
+
else if (wanted.kind === 'array' && wanted.element.kind === 'variable') {
|
|
104
|
+
const element = elementOf(given);
|
|
105
|
+
if (element.kind === 'array') remember(wanted.element.name, element.element);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return bound;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Whether a parameter is written to take whatever it is given.
|
|
114
|
+
*
|
|
115
|
+
* A stand-in (`orElse(x: T, fallback: T)`) and `any` (`text(x: any)`) both name
|
|
116
|
+
* no type, so a handle in one of them has no declared type to be named against
|
|
117
|
+
* and OS3011 would have nothing to put in its sentence. What is true of both is
|
|
118
|
+
* that they take a value, which is the answer OS2003 gives.
|
|
119
|
+
*/
|
|
120
|
+
function takesAnyValue(type: Type): boolean {
|
|
121
|
+
switch (type.kind) {
|
|
122
|
+
case 'variable':
|
|
123
|
+
case 'unknown':
|
|
124
|
+
return true;
|
|
125
|
+
case 'array':
|
|
126
|
+
case 'series':
|
|
127
|
+
return takesAnyValue(type.element);
|
|
128
|
+
default:
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function substitute(type: Type, bound: ReadonlyMap<string, Type>): Type {
|
|
134
|
+
switch (type.kind) {
|
|
135
|
+
case 'variable':
|
|
136
|
+
return bound.get(type.name) ?? UNKNOWN;
|
|
137
|
+
case 'array':
|
|
138
|
+
return { kind: 'array', element: substitute(type.element, bound) };
|
|
139
|
+
case 'series':
|
|
140
|
+
return { kind: 'series', element: substitute(type.element, bound) };
|
|
141
|
+
default:
|
|
142
|
+
return type;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/** Every argument against the parameter it filled: type, value set, range, constancy. */
|
|
147
|
+
export function validateArguments(
|
|
148
|
+
checker: Checker,
|
|
149
|
+
entry: LibraryEntry,
|
|
150
|
+
filled: readonly (Argument | undefined)[],
|
|
151
|
+
bound: ReadonlyMap<string, Type>,
|
|
152
|
+
): void {
|
|
153
|
+
for (let i = 0; i < entry.parameters.length; i += 1) {
|
|
154
|
+
const parameter = entry.parameters[i];
|
|
155
|
+
const argument = filled[i];
|
|
156
|
+
if (parameter === undefined || argument === undefined) continue;
|
|
157
|
+
|
|
158
|
+
const expected = substitute(parameter.type, bound);
|
|
159
|
+
const given = checker.typeOf(argument.value);
|
|
160
|
+
const span = argument.span;
|
|
161
|
+
|
|
162
|
+
if (given.kind === 'nothing') {
|
|
163
|
+
checker.report('OS2003', span, {
|
|
164
|
+
leftType: typeText(expected),
|
|
165
|
+
rightType: typeText(NOTHING),
|
|
166
|
+
});
|
|
167
|
+
} else if (entry.name === 'fill' && (i === 0 || i === 1)) {
|
|
168
|
+
// `unknown` is what an expression already reported about carries, and it
|
|
169
|
+
// satisfies everything, so a band drawn to a name whose own line was
|
|
170
|
+
// refused does not collect a second diagnostic about the same mistake.
|
|
171
|
+
if (given.kind !== 'unknown' && (given.kind !== 'handle' || given.handle !== 'plot')) {
|
|
172
|
+
checker.report('OS3020', span, {
|
|
173
|
+
argument: parameter.name,
|
|
174
|
+
found: typeText(given),
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
} else if (isHandle(given) && parameter.type.kind !== 'handle') {
|
|
178
|
+
// `fill` is the one signature in version 1 that declares a handle
|
|
179
|
+
// parameter, and it is answered above. Every other parameter takes a
|
|
180
|
+
// value, including a stand-in, which binds to whatever it is given and
|
|
181
|
+
// would otherwise carry a handle into a call that has no way to hold one.
|
|
182
|
+
if (takesAnyValue(parameter.type)) {
|
|
183
|
+
refuseHandle(checker, argument.value, given);
|
|
184
|
+
} else if (expected.kind === 'object' || expected.kind === 'objects') {
|
|
185
|
+
// A setter that takes a set of object kinds is the same case as one
|
|
186
|
+
// that takes a single kind: the argument wanted a runtime object and a
|
|
187
|
+
// declaration handle has no value on a bar. OS3019's own example is a
|
|
188
|
+
// plot handle given to `draw.setColor`, which reached OS2003 while that
|
|
189
|
+
// parameter was written `any`.
|
|
190
|
+
checker.report('OS3019', span, {
|
|
191
|
+
name: entry.name,
|
|
192
|
+
argument: parameter.name,
|
|
193
|
+
expected: typeText(expected),
|
|
194
|
+
found: typeText(given),
|
|
195
|
+
});
|
|
196
|
+
} else {
|
|
197
|
+
checker.report('OS3011', span, {
|
|
198
|
+
name: entry.name,
|
|
199
|
+
argument: parameter.name,
|
|
200
|
+
expected: typeText(expected),
|
|
201
|
+
found: typeText(given),
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
} else if (!accepts(expected, given)) {
|
|
205
|
+
checker.report('OS3011', span, {
|
|
206
|
+
name: entry.name,
|
|
207
|
+
argument: parameter.name,
|
|
208
|
+
expected: typeText(expected),
|
|
209
|
+
found: typeText(given),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// OS3023. An argument that names something the file declares, in a release
|
|
214
|
+
// where nothing can declare one. The value is not read and no suggestion is
|
|
215
|
+
// offered, because there is no name that would have been right: what the
|
|
216
|
+
// reader has to do is take the argument out. Refused whether the name was
|
|
217
|
+
// written or computed, which is the whole difference from the set check
|
|
218
|
+
// below: a computed leg was ignored exactly as quietly as a misspelt one,
|
|
219
|
+
// and a script that named one leg and closed another traded the leg it did
|
|
220
|
+
// not name.
|
|
221
|
+
if (entry.undeclared.includes(parameter.name)) {
|
|
222
|
+
checker.report('OS3023', span, { name: entry.name, argument: parameter.name });
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
const allowed = entry.values[parameter.name];
|
|
226
|
+
const written = literalString(argument.value);
|
|
227
|
+
if (allowed !== undefined && written !== undefined && !allowed.includes(written)) {
|
|
228
|
+
checker.report('OS3008', span, {
|
|
229
|
+
argument: parameter.name,
|
|
230
|
+
values: allowed.join(', '),
|
|
231
|
+
found: written,
|
|
232
|
+
suggestion: closestName(written, allowed),
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const range = entry.whole[parameter.name];
|
|
237
|
+
const value = range === undefined ? undefined : literalNumber(argument.value);
|
|
238
|
+
if (range !== undefined && value !== undefined && !inRange(value, range.min, range.max)) {
|
|
239
|
+
checker.report('OS3004', span, {
|
|
240
|
+
name: entry.name,
|
|
241
|
+
argument: parameter.name,
|
|
242
|
+
range: range.text,
|
|
243
|
+
found: value,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (entry.constant.includes(parameter.name) && !isCompileTimeConstant(checker, argument.value)) {
|
|
248
|
+
checker.report('OS3003', span, { option: parameter.name });
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
reportConflicts(checker, entry, filled);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* OS3010: two arguments that state one thing two ways.
|
|
257
|
+
*
|
|
258
|
+
* Reconciling them would need a rule, and every rule anybody has proposed for
|
|
259
|
+
* it surprises somebody, so both are refused and the script says which it
|
|
260
|
+
* meant. The caret goes under the second of the two, which is the one the
|
|
261
|
+
* reader is most likely to have added.
|
|
262
|
+
*/
|
|
263
|
+
function reportConflicts(
|
|
264
|
+
checker: Checker,
|
|
265
|
+
entry: LibraryEntry,
|
|
266
|
+
filled: readonly (Argument | undefined)[],
|
|
267
|
+
): void {
|
|
268
|
+
for (const [first, second] of entry.conflicts) {
|
|
269
|
+
const a = filled[entry.parameters.findIndex((one) => one.name === first)];
|
|
270
|
+
const b = filled[entry.parameters.findIndex((one) => one.name === second)];
|
|
271
|
+
if (a === undefined || b === undefined) continue;
|
|
272
|
+
checker.report('OS3010', b.span, { first, second });
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
function inRange(value: number, min: number | undefined, max: number | undefined): boolean {
|
|
277
|
+
if (!Number.isInteger(value)) return false;
|
|
278
|
+
if (min !== undefined && value < min) return false;
|
|
279
|
+
return max === undefined || value <= max;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* An empty array literal taking its element type from the first insertion.
|
|
284
|
+
*
|
|
285
|
+
* `language.md` 14.1 gives an unannotated `[]` its type from the first `push`,
|
|
286
|
+
* `unshift`, `insert` or `set` in source order, and this is that moment: the
|
|
287
|
+
* checker is looking at the call, it knows which name the array came from, and
|
|
288
|
+
* it knows what is being put in.
|
|
289
|
+
*/
|
|
290
|
+
function fixElementType(
|
|
291
|
+
checker: Checker,
|
|
292
|
+
entry: LibraryEntry,
|
|
293
|
+
filled: readonly (Argument | undefined)[],
|
|
294
|
+
): void {
|
|
295
|
+
if (!INSERTERS.has(entry.name)) return;
|
|
296
|
+
const target = filled[0];
|
|
297
|
+
const value = filled[filled.length - 1];
|
|
298
|
+
if (target === undefined || value === undefined) return;
|
|
299
|
+
|
|
300
|
+
const reference = withoutGrouping(target.value);
|
|
301
|
+
if (reference.kind !== 'nameReference') return;
|
|
302
|
+
const binding = checker.lookup(reference.name);
|
|
303
|
+
if (binding === undefined) return;
|
|
304
|
+
|
|
305
|
+
const current = elementOf(binding.type);
|
|
306
|
+
if (current.kind !== 'array' || current.element.kind !== 'unknown') return;
|
|
307
|
+
|
|
308
|
+
const element = elementOf(checker.typeOf(value.value));
|
|
309
|
+
if (element.kind === 'unknown' || element.kind === 'none') return;
|
|
310
|
+
binding.type = { kind: 'array', element };
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* A call to a name the library holds.
|
|
315
|
+
*
|
|
316
|
+
* The result is recorded whether or not anything was reported about it, because
|
|
317
|
+
* every stage above this one asks the same two questions of a call site, and a
|
|
318
|
+
* hole in the map would make each of them invent an answer of its own.
|
|
319
|
+
*/
|
|
320
|
+
export function resolveLibraryCall(
|
|
321
|
+
checker: Checker,
|
|
322
|
+
call: Call,
|
|
323
|
+
name: string,
|
|
324
|
+
placement: Placement,
|
|
325
|
+
): CheckedCall {
|
|
326
|
+
const entries = libraryEntries(name);
|
|
327
|
+
const entry = selectOverload(checker, call, entries);
|
|
328
|
+
|
|
329
|
+
if (entry === undefined) {
|
|
330
|
+
const held = entries[0];
|
|
331
|
+
checker.report('OS2010', call.span, {
|
|
332
|
+
name,
|
|
333
|
+
type: held === undefined ? typeText(UNKNOWN) : typeText(held.returns),
|
|
334
|
+
suggestion: checker.suggestionFor(name),
|
|
335
|
+
});
|
|
336
|
+
return unresolved(call, name);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
if (entry.planned) {
|
|
340
|
+
checker.report('OS2020', call.span, { name });
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
reportStrategyOnly(checker, name, call.span, entry.strategyOnly);
|
|
344
|
+
checkPlacement(checker, call, entry, placement);
|
|
345
|
+
|
|
346
|
+
const shapes = shapesOf(entry);
|
|
347
|
+
const filled = bindArguments(checker, call.span, call.args, name, shapes);
|
|
348
|
+
const bound = bindVariables(checker, entry, filled);
|
|
349
|
+
validateArguments(checker, entry, filled, bound);
|
|
350
|
+
fixElementType(checker, entry, filled);
|
|
351
|
+
|
|
352
|
+
const stateful = entry.stateful;
|
|
353
|
+
if (stateful && checker.isConditional(call)) {
|
|
354
|
+
checker.report('OS8001', call.span, { name });
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
const checked: CheckedCall = {
|
|
358
|
+
call,
|
|
359
|
+
name,
|
|
360
|
+
target: 'library',
|
|
361
|
+
entry,
|
|
362
|
+
fn: undefined,
|
|
363
|
+
arguments: filled,
|
|
364
|
+
returns: substitute(entry.returns, bound),
|
|
365
|
+
warmup: warmupOfCall(checker, entry, filled),
|
|
366
|
+
stateful,
|
|
367
|
+
stateId: stateful ? checker.takeStateId() : undefined,
|
|
368
|
+
seriesArguments: [],
|
|
369
|
+
};
|
|
370
|
+
remember(checker, checked);
|
|
371
|
+
recordOutput(checker, entry, checked);
|
|
372
|
+
reportCallWarnings(checker, entry, checked);
|
|
373
|
+
return checked;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/** OS3006 and OS3007: a call that describes the file's shape, written inside it. */
|
|
377
|
+
function checkPlacement(
|
|
378
|
+
checker: Checker,
|
|
379
|
+
call: Call,
|
|
380
|
+
entry: LibraryEntry,
|
|
381
|
+
placement: Placement,
|
|
382
|
+
): void {
|
|
383
|
+
if (!entry.topLevel || placement.topLevel) return;
|
|
384
|
+
const construct = placement.construct ?? 'a block';
|
|
385
|
+
if (entry.name === 'input') checker.report('OS3007', call.span, {});
|
|
386
|
+
else if (isTopLevelOnly(entry.name)) {
|
|
387
|
+
checker.report('OS3006', call.span, { name: entry.name, construct });
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
export function unresolved(call: Call, name: string): CheckedCall {
|
|
392
|
+
return {
|
|
393
|
+
call,
|
|
394
|
+
name,
|
|
395
|
+
target: 'unresolved',
|
|
396
|
+
entry: undefined,
|
|
397
|
+
fn: undefined,
|
|
398
|
+
arguments: [],
|
|
399
|
+
returns: UNKNOWN,
|
|
400
|
+
warmup: BAR_ZERO,
|
|
401
|
+
stateful: false,
|
|
402
|
+
stateId: undefined,
|
|
403
|
+
seriesArguments: [],
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
export function remember(checker: Checker, checked: CheckedCall): void {
|
|
408
|
+
checker.calls.push(checked);
|
|
409
|
+
checker.callSites.set(checked.call, checked);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
export { arityText, signatureText };
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The checker, from a syntax tree to a checked one.
|
|
3
|
+
*
|
|
4
|
+
* The order the passes run in is the order the language asks for. The header is
|
|
5
|
+
* read first, because whether a file is a strategy and whether it acts on a
|
|
6
|
+
* moving bar are facts every later rule consults, including about lines above
|
|
7
|
+
* the declaration. Declarations of `fn` are collected next, because a function
|
|
8
|
+
* may be called before the line it is written on. Then the file runs top to
|
|
9
|
+
* bottom, which is the order a bar runs in and the order a name has to be
|
|
10
|
+
* assigned before it is read.
|
|
11
|
+
*
|
|
12
|
+
* What is left over is the small set of things that can only be known once
|
|
13
|
+
* everything has been seen: whether a name was ever read, whether an empty
|
|
14
|
+
* array literal ever received an element, whether two columns were given one
|
|
15
|
+
* title, whether a tag a `close` names is one this file can place, and which
|
|
16
|
+
* names need a series register rather than a slot.
|
|
17
|
+
*/
|
|
18
|
+
import type { Script } from '../ast/index.js';
|
|
19
|
+
import type { DiagnosticSink } from '../diagnostics/index.js';
|
|
20
|
+
import type { SourceFile } from '../source/index.js';
|
|
21
|
+
import { Checker, TOP_LEVEL, finaliseStorage } from './checker.js';
|
|
22
|
+
import type { CheckedScript } from './checked.js';
|
|
23
|
+
import { checkDeclaration, checkLimits, readHeader } from './declaration.js';
|
|
24
|
+
import { checkFunctionDeclarations, checkRemainingFunctions } from './functions.js';
|
|
25
|
+
import { reportRepeatedAlertIds } from './outputs.js';
|
|
26
|
+
import { checkStatement } from './statements.js';
|
|
27
|
+
import { reportUnplaceableTags } from './tags.js';
|
|
28
|
+
import { elementOf } from './types.js';
|
|
29
|
+
|
|
30
|
+
export function check(file: SourceFile, script: Script, sink: DiagnosticSink): CheckedScript {
|
|
31
|
+
const checker = new Checker(file, script, sink);
|
|
32
|
+
|
|
33
|
+
readHeader(checker, script);
|
|
34
|
+
checkFunctionDeclarations(checker, script);
|
|
35
|
+
|
|
36
|
+
let limits = false;
|
|
37
|
+
for (const item of script.items) {
|
|
38
|
+
switch (item.kind) {
|
|
39
|
+
case 'functionDeclaration':
|
|
40
|
+
continue;
|
|
41
|
+
case 'scriptDeclaration':
|
|
42
|
+
checkDeclaration(checker, item);
|
|
43
|
+
continue;
|
|
44
|
+
case 'limitsLine':
|
|
45
|
+
checkLimits(checker, item, script, limits);
|
|
46
|
+
limits = true;
|
|
47
|
+
continue;
|
|
48
|
+
default:
|
|
49
|
+
checkStatement(checker, item, TOP_LEVEL);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
checkRemainingFunctions(checker);
|
|
54
|
+
finaliseStorage(checker);
|
|
55
|
+
reportUnknownElementTypes(checker);
|
|
56
|
+
reportNamesNeverRead(checker);
|
|
57
|
+
reportRepeatedTitles(checker);
|
|
58
|
+
reportInputKeys(checker);
|
|
59
|
+
reportRepeatedAlertIds(checker);
|
|
60
|
+
reportUnplaceableTags(checker);
|
|
61
|
+
|
|
62
|
+
return checker.finish();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* OS2015: an empty array literal that never learned what it holds.
|
|
67
|
+
*
|
|
68
|
+
* `language.md` 14.1 gives one its element type from an annotation or from the
|
|
69
|
+
* first `push`, `unshift`, `insert` or `set` in the file. With neither, there
|
|
70
|
+
* is no type, and the moment to say so is now rather than at the literal, where
|
|
71
|
+
* the insertion three lines below had not been read yet.
|
|
72
|
+
*/
|
|
73
|
+
function reportUnknownElementTypes(checker: Checker): void {
|
|
74
|
+
for (const binding of checker.bindings) {
|
|
75
|
+
const type = elementOf(binding.type);
|
|
76
|
+
if (type.kind !== 'array' || type.element.kind !== 'unknown') continue;
|
|
77
|
+
checker.report('OS2015', binding.declaredAt, {});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** OS8010 and OS8018: a name, or an input, that nothing in the file reads. */
|
|
82
|
+
function reportNamesNeverRead(checker: Checker): void {
|
|
83
|
+
for (const binding of checker.bindings) {
|
|
84
|
+
if (binding.isRead) continue;
|
|
85
|
+
if (binding.kind === 'library' || binding.kind === 'function') continue;
|
|
86
|
+
if (binding.kind === 'parameter' || binding.kind === 'loop') continue;
|
|
87
|
+
|
|
88
|
+
if (binding.input !== undefined) {
|
|
89
|
+
const input = checker.inputs[binding.input];
|
|
90
|
+
checker.report('OS8018', binding.declaredAt, {
|
|
91
|
+
title: `"${input?.title ?? binding.name}"`,
|
|
92
|
+
line: binding.declaredAt.line,
|
|
93
|
+
});
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
checker.report('OS8010', binding.declaredAt, {
|
|
97
|
+
name: binding.name,
|
|
98
|
+
line: binding.declaredAt.line,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* OS3017: two things in one file given the same name.
|
|
105
|
+
*
|
|
106
|
+
* A title is what every later stage keys on, from a legend entry to a saved
|
|
107
|
+
* alert subscription, so two of them is not a cosmetic problem: one of the two
|
|
108
|
+
* would have to lose, and nothing anywhere decides which.
|
|
109
|
+
*/
|
|
110
|
+
function reportRepeatedTitles(checker: Checker): void {
|
|
111
|
+
const seen = new Map<string, number>();
|
|
112
|
+
|
|
113
|
+
for (const output of checker.outputs) {
|
|
114
|
+
if (output.form === 'fill' || output.title === '') continue;
|
|
115
|
+
const key = `${output.form}:${output.title}`;
|
|
116
|
+
const first = seen.get(key);
|
|
117
|
+
if (first === undefined) seen.set(key, output.span.line);
|
|
118
|
+
else {
|
|
119
|
+
checker.report('OS3017', output.span, {
|
|
120
|
+
kind: output.form,
|
|
121
|
+
name: `"${output.title}"`,
|
|
122
|
+
line: first,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const inputs = new Map<string, number>();
|
|
128
|
+
for (const input of checker.inputs) {
|
|
129
|
+
if (input.title === '') continue;
|
|
130
|
+
const first = inputs.get(input.title);
|
|
131
|
+
if (first === undefined) inputs.set(input.title, input.span.line);
|
|
132
|
+
else {
|
|
133
|
+
checker.report('OS3017', input.span, {
|
|
134
|
+
kind: 'input',
|
|
135
|
+
name: `"${input.title}"`,
|
|
136
|
+
line: first,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* OS3021, OS3024 and OS3022: an input whose settings key is missing, or is
|
|
144
|
+
* another's.
|
|
145
|
+
*
|
|
146
|
+
* `host-interface.md` 8.1 keys a stored value by the name the input was
|
|
147
|
+
* assigned to, and an input written where a value belongs is assigned to none.
|
|
148
|
+
* Its key is its title instead: the one thing about the row a user sees, and
|
|
149
|
+
* therefore the one thing whose change is a rename rather than an edit. That
|
|
150
|
+
* holds only while every input lands on a key of its own, and there are exactly
|
|
151
|
+
* two ways it does not. A title spelling another input's name puts two rows on
|
|
152
|
+
* one key, and one user value would serve both. A title that is not there at
|
|
153
|
+
* all is no key and no label either.
|
|
154
|
+
*
|
|
155
|
+
* **No title and an empty title are two programs and take two codes.** Both end
|
|
156
|
+
* with nothing to be keyed by, and a reader who wrote `input(14, "")` did write
|
|
157
|
+
* a title as a string literal, so OS3021's message and its fix are both untrue
|
|
158
|
+
* of their file: they tell them to do the thing they have just done. OS3024 is
|
|
159
|
+
* the same refusal with a sentence that is true of it, and it refines OS3021
|
|
160
|
+
* rather than widening it, because the two fixes are different edits.
|
|
161
|
+
*
|
|
162
|
+
* Two inputs carrying one title is the third way and is OS3017 above, which is
|
|
163
|
+
* why this runs after it: the case is already reported and reporting it twice
|
|
164
|
+
* would be two codes for one edit.
|
|
165
|
+
*/
|
|
166
|
+
function reportInputKeys(checker: Checker): void {
|
|
167
|
+
const names = new Map<string, number>();
|
|
168
|
+
for (const input of checker.inputs) {
|
|
169
|
+
if (input.name !== '') names.set(input.name, input.span.line);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
for (const input of checker.inputs) {
|
|
173
|
+
if (input.name !== '') continue;
|
|
174
|
+
if (input.title === '') {
|
|
175
|
+
if (input.titleWritten) checker.report('OS3024', input.span, {});
|
|
176
|
+
else checker.report('OS3021', input.span, {});
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
const taken = names.get(input.title);
|
|
180
|
+
if (taken === undefined) continue;
|
|
181
|
+
checker.report('OS3022', input.span, { name: `"${input.title}"`, line: taken });
|
|
182
|
+
}
|
|
183
|
+
}
|