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,62 @@
|
|
|
1
|
+
/** A value on the very first bar. */
|
|
2
|
+
export const BAR_ZERO = { kind: 'at', bar: 0 };
|
|
3
|
+
export const NEVER = { kind: 'never' };
|
|
4
|
+
export function atBar(bar) {
|
|
5
|
+
return { kind: 'at', bar: Math.max(0, Math.trunc(bar)) };
|
|
6
|
+
}
|
|
7
|
+
export function atLeastBar(bar) {
|
|
8
|
+
return { kind: 'atLeast', bar: Math.max(0, Math.trunc(bar)) };
|
|
9
|
+
}
|
|
10
|
+
/** The floor of a warmup, for a rule that can only give a lower bound. */
|
|
11
|
+
export function weaken(warmup) {
|
|
12
|
+
return warmup.kind === 'at' ? atLeastBar(warmup.bar) : warmup;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The warmup of something that needs both of two values.
|
|
16
|
+
*
|
|
17
|
+
* Arithmetic propagates absence (language.md 6.2), so a sum is absent until
|
|
18
|
+
* both sides are present: the later of the two. An operand that is never
|
|
19
|
+
* present makes the whole thing never present.
|
|
20
|
+
*/
|
|
21
|
+
export function later(left, right) {
|
|
22
|
+
if (left.kind === 'never' || right.kind === 'never')
|
|
23
|
+
return NEVER;
|
|
24
|
+
const bar = Math.max(left.bar, right.bar);
|
|
25
|
+
return left.kind === 'at' && right.kind === 'at' ? atBar(bar) : atLeastBar(bar);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The warmup of something that needs either of two values.
|
|
29
|
+
*
|
|
30
|
+
* `orElse(x, fallback)` and a ternary whose arms warm up at different bars are
|
|
31
|
+
* both this: present as soon as the earlier one is.
|
|
32
|
+
*/
|
|
33
|
+
export function earlier(left, right) {
|
|
34
|
+
if (left.kind === 'never')
|
|
35
|
+
return right;
|
|
36
|
+
if (right.kind === 'never')
|
|
37
|
+
return left;
|
|
38
|
+
const bar = Math.min(left.bar, right.bar);
|
|
39
|
+
return left.kind === 'at' && right.kind === 'at' ? atBar(bar) : atLeastBar(bar);
|
|
40
|
+
}
|
|
41
|
+
/** The warmup of every one of these together, or bar 0 when there are none. */
|
|
42
|
+
export function allOf(warmups) {
|
|
43
|
+
return warmups.reduce(later, BAR_ZERO);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The same value, delayed by a stated number of bars.
|
|
47
|
+
*
|
|
48
|
+
* This is how a library entry's declared length composes with its source's:
|
|
49
|
+
* `sma(ema(close, 10), 10)` is absent until bar 18 because each call delays
|
|
50
|
+
* whatever it was given by its own length, and stdlib.md section 1 says so.
|
|
51
|
+
*/
|
|
52
|
+
export function delayed(warmup, bars) {
|
|
53
|
+
if (warmup.kind === 'never')
|
|
54
|
+
return NEVER;
|
|
55
|
+
const bar = warmup.bar + Math.trunc(bars);
|
|
56
|
+
return warmup.kind === 'at' ? atBar(bar) : atLeastBar(bar);
|
|
57
|
+
}
|
|
58
|
+
/** Whether this value is absent on every bar, which is what OS8009 reports. */
|
|
59
|
+
export function isNever(warmup) {
|
|
60
|
+
return warmup.kind === 'never';
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=warmup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warmup.js","sourceRoot":"","sources":["../../../src/core/check/warmup.ts"],"names":[],"mappings":"AAkCA,qCAAqC;AACrC,MAAM,CAAC,MAAM,QAAQ,GAAW,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAEvD,MAAM,CAAC,MAAM,KAAK,GAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAE/C,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,MAAM,CAAC,MAAc;IACnC,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,KAAa;IAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAClF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAa;IACjD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAClF,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,KAAK,CAAC,OAA0B;IAC9C,OAAO,OAAO,CAAC,MAAM,CAAS,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,MAAc,EAAE,IAAY;IAClD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,OAAO,CAAC,MAAc;IACpC,OAAO,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;AACjC,CAAC"}
|
|
@@ -40,6 +40,18 @@ export declare class DiagnosticBag implements DiagnosticSink {
|
|
|
40
40
|
*
|
|
41
41
|
* Stages report in the order they run, so a checker warning about line 2
|
|
42
42
|
* arrives after a parser error about line 40. A reader reads top to bottom.
|
|
43
|
+
*
|
|
44
|
+
* **The order is total, and it depends on nothing outside the program.** Two
|
|
45
|
+
* engines handed the same diagnostics have to print them in the same order, so
|
|
46
|
+
* the tie after the offset is the span's length and then the code compared by
|
|
47
|
+
* code point. It was a locale comparison, which `compiled-program.md` 8.4
|
|
48
|
+
* forbids by name: the same two codes order differently under different
|
|
49
|
+
* collation rules, and the machine that is set up differently is the one
|
|
50
|
+
* nobody is looking at. Length is in the comparison because without it two
|
|
51
|
+
* diagnostics sharing a code and an offset tie, and a tie leaves the answer to
|
|
52
|
+
* whether the sort happens to be stable, which is a property of the engine
|
|
53
|
+
* rather than of the language. With it, nothing can tie: the bag already
|
|
54
|
+
* refuses a second diagnostic with the same code, offset and length.
|
|
43
55
|
*/
|
|
44
56
|
ordered(): readonly Diagnostic[];
|
|
45
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/core/diagnostics/collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/core/diagnostics/collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAclD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,IAAI,SAAS,cAAc,EAChC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAC7B,IAAI,CAAC;CACT;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAc,YAAW,cAAc;;IAIlD,MAAM,CAAC,IAAI,SAAS,cAAc,EAChC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAC7B,IAAI;IAIP,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAOjC,yDAAyD;IACzD,IAAI,GAAG,IAAI,SAAS,UAAU,EAAE,CAE/B;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,6EAA6E;IAC7E,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,MAAM,IAAI,SAAS,UAAU,EAAE,CAElC;IAED,IAAI,QAAQ,IAAI,SAAS,UAAU,EAAE,CAEpC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,IAAI,SAAS,UAAU,EAAE;CAQjC"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import { diagnosticFor, isError } from './diagnostic.js';
|
|
2
|
+
/**
|
|
3
|
+
* Two codes in code point order, which is the same order everywhere.
|
|
4
|
+
*
|
|
5
|
+
* `<` on two strings compares UTF-16 code units and reads no environment
|
|
6
|
+
* setting, which is exactly what `language.md` 9.3 fixes for the language's own
|
|
7
|
+
* string comparison. The engine's own output obeys the rule it gives scripts.
|
|
8
|
+
*/
|
|
9
|
+
function byCodePoint(left, right) {
|
|
10
|
+
if (left < right)
|
|
11
|
+
return -1;
|
|
12
|
+
return left > right ? 1 : 0;
|
|
13
|
+
}
|
|
2
14
|
/**
|
|
3
15
|
* Gathers diagnostics instead of throwing on the first one.
|
|
4
16
|
*
|
|
@@ -47,9 +59,23 @@ export class DiagnosticBag {
|
|
|
47
59
|
*
|
|
48
60
|
* Stages report in the order they run, so a checker warning about line 2
|
|
49
61
|
* arrives after a parser error about line 40. A reader reads top to bottom.
|
|
62
|
+
*
|
|
63
|
+
* **The order is total, and it depends on nothing outside the program.** Two
|
|
64
|
+
* engines handed the same diagnostics have to print them in the same order, so
|
|
65
|
+
* the tie after the offset is the span's length and then the code compared by
|
|
66
|
+
* code point. It was a locale comparison, which `compiled-program.md` 8.4
|
|
67
|
+
* forbids by name: the same two codes order differently under different
|
|
68
|
+
* collation rules, and the machine that is set up differently is the one
|
|
69
|
+
* nobody is looking at. Length is in the comparison because without it two
|
|
70
|
+
* diagnostics sharing a code and an offset tie, and a tie leaves the answer to
|
|
71
|
+
* whether the sort happens to be stable, which is a property of the engine
|
|
72
|
+
* rather than of the language. With it, nothing can tie: the bag already
|
|
73
|
+
* refuses a second diagnostic with the same code, offset and length.
|
|
50
74
|
*/
|
|
51
75
|
ordered() {
|
|
52
|
-
return [...this.#items].sort((left, right) => left.span.offset - right.span.offset ||
|
|
76
|
+
return [...this.#items].sort((left, right) => left.span.offset - right.span.offset ||
|
|
77
|
+
left.span.length - right.span.length ||
|
|
78
|
+
byCodePoint(left.code, right.code));
|
|
53
79
|
}
|
|
54
80
|
}
|
|
55
81
|
//# sourceMappingURL=collector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../src/core/diagnostics/collector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../src/core/diagnostics/collector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAGzD;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAC9C,IAAI,IAAI,GAAG,KAAK;QAAE,OAAO,CAAC,CAAC,CAAC;IAC5B,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAiBD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,aAAa;IACf,MAAM,GAAiB,EAAE,CAAC;IAC1B,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,MAAM,CACJ,IAAU,EACV,IAAU,EACV,MAA8B;QAE9B,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,UAAsB;QACxB,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACrF,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,yDAAyD;IACzD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,6EAA6E;IAC7E,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAC1B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM;YACpC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM;YACpC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CACrC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calls: to the library, to a user function, and to the handful of names that
|
|
3
|
+
* declare part of the file rather than computing anything.
|
|
4
|
+
*
|
|
5
|
+
* The split in this file is the one the task of emitting a program turns on. A
|
|
6
|
+
* `plot` call is a fixed entry in `outputs` plus one `EMIT` per bar, and it is
|
|
7
|
+
* not a function an engine calls at all. An `ema` call is a `CALL_LIB` with a
|
|
8
|
+
* state region. A call to a `fn` is a `CALL_FN` naming a call site, and the
|
|
9
|
+
* call site rather than the body is where that call's cells and state live.
|
|
10
|
+
*/
|
|
11
|
+
import type { Call, Expression, Member, NameReference } from '../ast/index.js';
|
|
12
|
+
import type { Emitter, Frame } from './context.js';
|
|
13
|
+
/** Whether a call leaves a value on the stack, which a statement has to pop. */
|
|
14
|
+
export declare function leavesValue(e: Emitter, expression: Expression): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Whether an expression is entirely one `input()` call.
|
|
17
|
+
*
|
|
18
|
+
* The declaration calls leave nothing on the stack, which is what `leavesValue`
|
|
19
|
+
* answers, and `input()` is the one of them that also has a value to leave when
|
|
20
|
+
* a value is what was asked for (`language.md` 13.4). One place needs the
|
|
21
|
+
* narrower question: `var len = input(14, "Length")`, where the initialiser is
|
|
22
|
+
* a value to put in a cell rather than a declaration the name stands for.
|
|
23
|
+
*/
|
|
24
|
+
export declare function isInputCall(e: Emitter, expression: Expression): boolean;
|
|
25
|
+
export declare function emitCall(e: Emitter, f: Frame, call: Call): void;
|
|
26
|
+
/**
|
|
27
|
+
* A library value read without brackets: a bar series, a named colour, a fact
|
|
28
|
+
* about the chart, the session or the position.
|
|
29
|
+
*
|
|
30
|
+
* Only a bar series is a register. Everything else is a value the host supplies
|
|
31
|
+
* and the only instruction that can fetch one is a call of no arguments, so
|
|
32
|
+
* that is what it compiles to and the engine's own manifest decides the value.
|
|
33
|
+
* A named colour goes the same way deliberately: the exact channels are the
|
|
34
|
+
* manifest's (`stdlib.md` 11.1), and a colour that reaches a bar should come
|
|
35
|
+
* from there rather than from this compiler's stand-in table.
|
|
36
|
+
*/
|
|
37
|
+
export declare function emitLibraryValue(e: Emitter, f: Frame, node: NameReference | Member): void;
|
|
38
|
+
//# sourceMappingURL=calls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../src/core/emit/calls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAM/E,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAcnD,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAMvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAGvE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CA0C/D;AAkRD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAKzF"}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import { withoutGrouping } from '../ast/index.js';
|
|
2
|
+
import { libraryEntries } from '../check/index.js';
|
|
3
|
+
import { namedColour } from './colours.js';
|
|
4
|
+
import { arityOf, calleeText, effectOf } from './context.js';
|
|
5
|
+
import { emitExpression } from './expressions.js';
|
|
6
|
+
import { bodyFor } from './functions.js';
|
|
7
|
+
import { emitInputRead } from './inputs.js';
|
|
8
|
+
import { emitDeclarationCall } from './outputs.js';
|
|
9
|
+
import { registerOfName } from './registers.js';
|
|
10
|
+
import { REQUEST_CALLS, REQUEST_STATUS_CALLS, emitRequestRead, requestIdFor, } from './requests.js';
|
|
11
|
+
/** Whether a call leaves a value on the stack, which a statement has to pop. */
|
|
12
|
+
export function leavesValue(e, expression) {
|
|
13
|
+
const node = withoutGrouping(expression);
|
|
14
|
+
if (node.kind !== 'call')
|
|
15
|
+
return true;
|
|
16
|
+
const checked = e.callAt(node);
|
|
17
|
+
const name = checked?.name ?? calleeText(node.callee);
|
|
18
|
+
return !e.isDeclaration(name);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Whether an expression is entirely one `input()` call.
|
|
22
|
+
*
|
|
23
|
+
* The declaration calls leave nothing on the stack, which is what `leavesValue`
|
|
24
|
+
* answers, and `input()` is the one of them that also has a value to leave when
|
|
25
|
+
* a value is what was asked for (`language.md` 13.4). One place needs the
|
|
26
|
+
* narrower question: `var len = input(14, "Length")`, where the initialiser is
|
|
27
|
+
* a value to put in a cell rather than a declaration the name stands for.
|
|
28
|
+
*/
|
|
29
|
+
export function isInputCall(e, expression) {
|
|
30
|
+
const node = withoutGrouping(expression);
|
|
31
|
+
return node.kind === 'call' && e.callAt(node)?.name === 'input';
|
|
32
|
+
}
|
|
33
|
+
export function emitCall(e, f, call) {
|
|
34
|
+
const checked = e.callAt(call);
|
|
35
|
+
if (checked === undefined || checked.target === 'unresolved') {
|
|
36
|
+
f.builder.at(call.span);
|
|
37
|
+
f.builder.push('CONST', e.pool.absent());
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (e.isDeclaration(checked.name)) {
|
|
41
|
+
// A declaration written as a statement of its own never arrives here:
|
|
42
|
+
// `statements.ts` sends all three of its forms straight to the declaration
|
|
43
|
+
// path. So an `input()` that reaches this point stands where a value
|
|
44
|
+
// belongs, and the value is what it has to leave behind. `outputs.ts`
|
|
45
|
+
// argues that split, which is the one this call is decided by.
|
|
46
|
+
if (checked.name === 'input') {
|
|
47
|
+
emitInputRead(e, f, call);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
emitDeclarationCall(e, f, call, checked.name, undefined);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (REQUEST_CALLS.has(checked.name)) {
|
|
54
|
+
// One entry of `requests` and one register the engine fills, 2.16. The
|
|
55
|
+
// expression argument is not emitted here: it belongs to the requested
|
|
56
|
+
// bars, and emitting it inline would compute it on this chart's.
|
|
57
|
+
emitRequestRead(e, f, call, checked);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (checked.target === 'user' && checked.fn !== undefined) {
|
|
61
|
+
emitUserCall(e, f, call, checked.fn, checked.arguments, checked.seriesArguments);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const entry = checked.entry;
|
|
65
|
+
if (entry === undefined) {
|
|
66
|
+
f.builder.at(call.span);
|
|
67
|
+
f.builder.push('CONST', e.pool.absent());
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
emitLibraryCall(e, f, call, entry, checked.arguments);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* A library call: every argument in parameter order, then `CALL_LIB`.
|
|
74
|
+
*
|
|
75
|
+
* Named arguments, argument order and defaults are entirely a compile-time
|
|
76
|
+
* matter (4.10), so an engine never sees a name, never consults a signature and
|
|
77
|
+
* never holds a table of defaults. All three happen here.
|
|
78
|
+
*
|
|
79
|
+
* **An omitted argument is filled, not dropped.** It used to be emitted as
|
|
80
|
+
* absent, because the surface recorded which parameters were optional and not
|
|
81
|
+
* what each one defaulted to, and the cost of that was the whole reason this
|
|
82
|
+
* paragraph exists: a lookback of an absent length answers absence on every
|
|
83
|
+
* bar for ever, so `atr()` written exactly as `stdlib.md` prints it compiled
|
|
84
|
+
* clean, loaded clean, ran to the last bar and drew nothing at all.
|
|
85
|
+
*
|
|
86
|
+
* **An order call carries one argument more than the surface shows.** For every
|
|
87
|
+
* other call, filling a default is the whole of the job and the value is the
|
|
88
|
+
* whole of the answer. For an order call it is not, because two of its defaults
|
|
89
|
+
* are absence itself: `buy(qty = the declaration's, limit = none, stop = none)`.
|
|
90
|
+
* An argument left out and an argument written that came out absent then reach
|
|
91
|
+
* an engine as the same value, and `language.md` 6.8 gives them opposite
|
|
92
|
+
* meanings: the first takes the documented default, and the second is a size or
|
|
93
|
+
* a price nobody computed and is OS7002. `buy()` and `buy(qty = none)` compiled
|
|
94
|
+
* to byte identical programs, so the refusal had nothing to fire on, and
|
|
95
|
+
* `buy(qty = 1, stop = lowest(low, 20))`, which is the catalogue's own worked
|
|
96
|
+
* example for OS7002, sent a market order on every bar of the window instead.
|
|
97
|
+
*
|
|
98
|
+
* So the last argument of an order call is the names of the arguments the
|
|
99
|
+
* script wrote, in parameter order, separated by spaces. It is a value like any
|
|
100
|
+
* other and the engine reads it like any other, which is why this needs no new
|
|
101
|
+
* value, no new instruction and no change to the format: only the nine order
|
|
102
|
+
* functions' manifest signatures, `compiled-program.md` 2.5 and 4.10.
|
|
103
|
+
*
|
|
104
|
+
* It is the last argument rather than the first because that is where a reader
|
|
105
|
+
* of the program meets it after the arguments it describes, and it names the
|
|
106
|
+
* arguments rather than numbering them so that a compiled program stays
|
|
107
|
+
* readable by hand (2.14).
|
|
108
|
+
*/
|
|
109
|
+
function emitLibraryCall(e, f, call, entry, args) {
|
|
110
|
+
const index = e.libraryFunction(entry);
|
|
111
|
+
if (REQUEST_STATUS_CALLS.has(entry.name)) {
|
|
112
|
+
emitReadHandle(e, f, call, args[0]?.value);
|
|
113
|
+
f.builder.at(call.span);
|
|
114
|
+
f.builder.push('CALL_LIB', index, arityOf(entry), -1);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const ordering = effectOf(entry) === 'order';
|
|
118
|
+
const written = [];
|
|
119
|
+
for (let i = 0; i < entry.parameters.length; i += 1) {
|
|
120
|
+
const argument = args[i];
|
|
121
|
+
const parameter = entry.parameters[i];
|
|
122
|
+
if (argument !== undefined) {
|
|
123
|
+
if (parameter !== undefined)
|
|
124
|
+
written.push(parameter.name);
|
|
125
|
+
emitExpression(e, f, argument.value);
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
emitDefault(e, f, call, parameter, ordering);
|
|
129
|
+
}
|
|
130
|
+
if (ordering) {
|
|
131
|
+
f.builder.at(call.span);
|
|
132
|
+
f.builder.push('CONST', e.pool.string(written.join(' ')));
|
|
133
|
+
}
|
|
134
|
+
f.builder.at(call.span);
|
|
135
|
+
const state = entry.stateful ? f.layout.state(index) : -1;
|
|
136
|
+
f.builder.push('CALL_LIB', index, arityOf(entry), state);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The argument a script left out, from the default its signature declares.
|
|
140
|
+
*
|
|
141
|
+
* A default is a value, and values are the emitter's: 4.10 puts named
|
|
142
|
+
* arguments, argument order and defaults entirely at compile time. Most are a
|
|
143
|
+
* constant. A handful are a name the compiler reads at the call instead, which
|
|
144
|
+
* 4.10 also provides for: a default that is an expression rather than a literal
|
|
145
|
+
* is compiled into the call site, and `vwap(src = hlc3)` is that case in a
|
|
146
|
+
* library the specification writes as a table.
|
|
147
|
+
*
|
|
148
|
+
* A default that is neither is a defect in the surface and it blocks. Emitting
|
|
149
|
+
* absence there is what produced a study with no values on any bar and nothing
|
|
150
|
+
* reported anywhere, and a program that is not emitted is the honest form of
|
|
151
|
+
* that. `scripts/check-defaults.mjs` is what stops it reaching here at all.
|
|
152
|
+
*/
|
|
153
|
+
function emitDefault(e, f, call, parameter, ordering) {
|
|
154
|
+
f.builder.at(call.span);
|
|
155
|
+
if (parameter === undefined || parameter.defaultText === undefined) {
|
|
156
|
+
// The specification states no value for this argument: `leg = the only
|
|
157
|
+
// leg` names the file's own declaration rather than a value the library
|
|
158
|
+
// knows. Absence is what it carries, and whatever receives it decides.
|
|
159
|
+
// Each one is recorded with its reason in `spec/default-exceptions.json`,
|
|
160
|
+
// and nothing else may be in this state.
|
|
161
|
+
//
|
|
162
|
+
// On an order call this is not a gap. The call carries the names of the
|
|
163
|
+
// arguments the script wrote, so absence here says "the script wrote
|
|
164
|
+
// nothing" rather than "the value is unknown", and the engine applies the
|
|
165
|
+
// default the specification states instead of guessing which it was.
|
|
166
|
+
if (!ordering) {
|
|
167
|
+
e.gap('an omitted optional argument is emitted as absent, because the specification states no ' +
|
|
168
|
+
'value for it and names the declaration that decides instead', 'compiled-program.md 4.10, against stdlib.md section 1', call.span, false);
|
|
169
|
+
}
|
|
170
|
+
f.builder.push('CONST', e.pool.absent());
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
const value = defaultOf(parameter);
|
|
174
|
+
const constant = value === undefined ? undefined : e.pool.of(value);
|
|
175
|
+
if (constant !== undefined) {
|
|
176
|
+
f.builder.push('CONST', constant);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if (emitNamedRead(e, f, parameter.defaultText))
|
|
180
|
+
return;
|
|
181
|
+
e.gap(`the library surface gives a default of \`${parameter.defaultText}\` which is neither a ` +
|
|
182
|
+
"value of the parameter's type nor a library name that can be read, so there is nothing " +
|
|
183
|
+
'to fill the argument with', 'compiled-program.md 4.10, against stdlib.md section 1', call.span, true);
|
|
184
|
+
f.builder.push('CONST', e.pool.absent());
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* The constant a default's text names, or nothing when it names no constant.
|
|
188
|
+
*
|
|
189
|
+
* Nothing is not a failure here: `hlc3` and `chart.timezone` are defaults the
|
|
190
|
+
* specification states and neither is a literal of its parameter's type, so the
|
|
191
|
+
* caller reads them instead. What this must never do is guess. A text that is
|
|
192
|
+
* not a value of this type is not turned into one, because a value this
|
|
193
|
+
* compiler invented would be indistinguishable, on the chart, from the value
|
|
194
|
+
* the specification meant.
|
|
195
|
+
*
|
|
196
|
+
* A named colour stays a constant, unlike every other bare library name. That
|
|
197
|
+
* is deliberate and it is the one place the two paths disagree: the channels
|
|
198
|
+
* are settled here for a drawing's default and read from the manifest for a
|
|
199
|
+
* colour a script wrote (`stdlib.md` 11.1). Reversing it would change programs
|
|
200
|
+
* that are already compiled and compared byte for byte.
|
|
201
|
+
*/
|
|
202
|
+
function defaultOf(parameter) {
|
|
203
|
+
const text = parameter.defaultText;
|
|
204
|
+
if (text === undefined)
|
|
205
|
+
return undefined;
|
|
206
|
+
if (text === 'none')
|
|
207
|
+
return { kind: 'absent' };
|
|
208
|
+
switch (parameter.type.kind) {
|
|
209
|
+
case 'bool':
|
|
210
|
+
return text === 'true' || text === 'false'
|
|
211
|
+
? { kind: 'bool', value: text === 'true' }
|
|
212
|
+
: undefined;
|
|
213
|
+
case 'number': {
|
|
214
|
+
const value = Number(text);
|
|
215
|
+
return Number.isFinite(value) ? { kind: 'number', value } : undefined;
|
|
216
|
+
}
|
|
217
|
+
case 'string':
|
|
218
|
+
return text.length >= 2 && text.startsWith('"') && text.endsWith('"')
|
|
219
|
+
? { kind: 'string', value: text.slice(1, -1) }
|
|
220
|
+
: undefined;
|
|
221
|
+
case 'color': {
|
|
222
|
+
const value = namedColour(text);
|
|
223
|
+
return value === undefined ? undefined : { kind: 'colour', value };
|
|
224
|
+
}
|
|
225
|
+
default:
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* The read `req.isReady` and `req.error` are asking about, as its id (2.16).
|
|
231
|
+
*
|
|
232
|
+
* The argument names a read rather than carrying one: a value on a bar cannot
|
|
233
|
+
* say which request produced it, and the two calls answer about the request.
|
|
234
|
+
* A name that holds no read is absent, which is what those two answer for a
|
|
235
|
+
* read that does not exist; the checker takes any value here, so this is the
|
|
236
|
+
* one place that can tell.
|
|
237
|
+
*/
|
|
238
|
+
function emitReadHandle(e, f, call, argument) {
|
|
239
|
+
const id = argument === undefined ? undefined : requestIdFor(e, argument);
|
|
240
|
+
f.builder.at(call.span);
|
|
241
|
+
if (id === undefined) {
|
|
242
|
+
e.gap('a read status call was given something that is not a name holding a read, and the ' +
|
|
243
|
+
'signature admits any value, so there is no request for it to ask about', 'compiled-program.md 2.16, against stdlib.md 15.1', call.span, false);
|
|
244
|
+
f.builder.push('CONST', e.pool.absent());
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
f.builder.push('CONST', e.pool.number(id));
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* A call to a `fn`, and the registers the call site has to retain for it.
|
|
251
|
+
*
|
|
252
|
+
* A series argument is always given a fresh register, even when the argument is
|
|
253
|
+
* a bare series name whose register already exists (4.10). Binding the existing
|
|
254
|
+
* one would give the body history on bars where the call did not execute, which
|
|
255
|
+
* would make a call inside an `if` behave differently from a call inside a
|
|
256
|
+
* function inside an `if`.
|
|
257
|
+
*/
|
|
258
|
+
function emitUserCall(e, f, call, checkedFunction, args, seriesArguments) {
|
|
259
|
+
const declared = e.checked.functions[checkedFunction];
|
|
260
|
+
const parameters = declared?.parameters.length ?? args.length;
|
|
261
|
+
const site = e.newSite(0, parameters);
|
|
262
|
+
f.sites.push(site.index);
|
|
263
|
+
site.series = new Array(parameters).fill(-1);
|
|
264
|
+
// The body is emitted before the arguments are pushed, because the body is
|
|
265
|
+
// what says which parameters need a register: a `HISTP` against a parameter
|
|
266
|
+
// the call site bound `-1` is a corrupt program, and the checker can only
|
|
267
|
+
// mark a parameter it was able to prove is a series (`language.md` 11.2).
|
|
268
|
+
site.fn = bodyFor(e, checkedFunction, site);
|
|
269
|
+
const retained = new Set(seriesArguments);
|
|
270
|
+
for (const instruction of e.functions[site.fn]?.code ?? []) {
|
|
271
|
+
if (instruction[0] === 'HISTP')
|
|
272
|
+
retained.add(instruction[1] ?? 0);
|
|
273
|
+
}
|
|
274
|
+
for (let i = 0; i < parameters; i += 1) {
|
|
275
|
+
const argument = args[i];
|
|
276
|
+
if (argument === undefined) {
|
|
277
|
+
// A parameter's own default is compiled into the call site rather than
|
|
278
|
+
// into the body (4.10), and the tree carries it on the declaration.
|
|
279
|
+
const fallback = declared?.declaration.parameters[i]?.defaultValue;
|
|
280
|
+
if (fallback === undefined) {
|
|
281
|
+
f.builder.at(call.span);
|
|
282
|
+
f.builder.push('CONST', e.pool.absent());
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
emitExpression(e, f, fallback);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
emitExpression(e, f, argument.value);
|
|
290
|
+
}
|
|
291
|
+
if (!retained.has(i))
|
|
292
|
+
continue;
|
|
293
|
+
const register = e.layout.argument(declared?.parameters[i]?.name ?? `arg${i}`);
|
|
294
|
+
site.series[i] = register;
|
|
295
|
+
f.builder.at(call.span);
|
|
296
|
+
f.builder.push('DUP');
|
|
297
|
+
f.builder.push('SSTORE', register);
|
|
298
|
+
}
|
|
299
|
+
f.builder.at(call.span);
|
|
300
|
+
f.builder.push('CALL_FN', site.index);
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* A library value read without brackets: a bar series, a named colour, a fact
|
|
304
|
+
* about the chart, the session or the position.
|
|
305
|
+
*
|
|
306
|
+
* Only a bar series is a register. Everything else is a value the host supplies
|
|
307
|
+
* and the only instruction that can fetch one is a call of no arguments, so
|
|
308
|
+
* that is what it compiles to and the engine's own manifest decides the value.
|
|
309
|
+
* A named colour goes the same way deliberately: the exact channels are the
|
|
310
|
+
* manifest's (`stdlib.md` 11.1), and a colour that reaches a bar should come
|
|
311
|
+
* from there rather than from this compiler's stand-in table.
|
|
312
|
+
*/
|
|
313
|
+
export function emitLibraryValue(e, f, node) {
|
|
314
|
+
const name = node.kind === 'nameReference' ? node.name : memberName(node);
|
|
315
|
+
f.builder.at(node.span);
|
|
316
|
+
if (emitNamedRead(e, f, name))
|
|
317
|
+
return;
|
|
318
|
+
f.builder.push('CONST', e.pool.absent());
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* One bare library read, by name, or false when the name is not one.
|
|
322
|
+
*
|
|
323
|
+
* Two callers, and they are the same read: a name a script wrote, and a name a
|
|
324
|
+
* signature gives as a default. A default that is an expression is compiled
|
|
325
|
+
* into the call site (4.10), and for this library an expression is always one
|
|
326
|
+
* of these names, so `vwap()` emits exactly what `vwap(hlc3)` emits rather than
|
|
327
|
+
* something close to it. The caller positions the span before calling.
|
|
328
|
+
*/
|
|
329
|
+
function emitNamedRead(e, f, name) {
|
|
330
|
+
const register = registerOfName(e, name);
|
|
331
|
+
if (register !== undefined) {
|
|
332
|
+
f.builder.push('SLOAD', register);
|
|
333
|
+
return true;
|
|
334
|
+
}
|
|
335
|
+
const entry = libraryEntries(name).find((one) => !one.callable);
|
|
336
|
+
if (entry === undefined)
|
|
337
|
+
return false;
|
|
338
|
+
const index = e.libraryFunction(entry);
|
|
339
|
+
const state = entry.stateful ? f.layout.state(index) : -1;
|
|
340
|
+
f.builder.push('CALL_LIB', index, 0, state);
|
|
341
|
+
return true;
|
|
342
|
+
}
|
|
343
|
+
function memberName(node) {
|
|
344
|
+
const object = withoutGrouping(node.object);
|
|
345
|
+
return object.kind === 'nameReference' ? `${object.name}.${node.member.text}` : node.member.text;
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=calls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../src/core/emit/calls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The canonical encoding, `compiled-program.md` 2.14.
|
|
3
|
+
*
|
|
4
|
+
* It exists so that a hash of a program means something: two compilers, in two
|
|
5
|
+
* languages, handed the same source, produce the same bytes. So none of the
|
|
6
|
+
* rules below is cosmetic, and none of them is this file's invention.
|
|
7
|
+
*
|
|
8
|
+
* - UTF-8, no byte order mark, no whitespace between tokens.
|
|
9
|
+
* - Object keys sorted ascending by Unicode code point. Sorted rather than in
|
|
10
|
+
* the specification's listed order, because a sort is a rule an emitter in any
|
|
11
|
+
* language can follow without a table.
|
|
12
|
+
* - A number is the shortest decimal string that reads back as the same
|
|
13
|
+
* binary64 value, with an exponent written as `e` and an optional `-`.
|
|
14
|
+
* - A string escapes only the quote, the backslash and the code points below
|
|
15
|
+
* 0x20, the last as `\u00XX` except for `\n`, `\r` and `\t`.
|
|
16
|
+
*/
|
|
17
|
+
import type { CompiledProgram } from './program.js';
|
|
18
|
+
/**
|
|
19
|
+
* A number, shortest round trip.
|
|
20
|
+
*
|
|
21
|
+
* The host's own shortest form is already the shortest that reads back
|
|
22
|
+
* identically. What it is not is the spelling the specification asks for: a
|
|
23
|
+
* positive exponent is written with a `+` that the format does not allow, so
|
|
24
|
+
* that one sign is removed and nothing else is touched.
|
|
25
|
+
*/
|
|
26
|
+
export declare function canonicalNumber(value: number): string;
|
|
27
|
+
export declare function canonicalString(value: string): string;
|
|
28
|
+
export declare function canonicalise(value: unknown): string;
|
|
29
|
+
/**
|
|
30
|
+
* The two hashes a host records against a run.
|
|
31
|
+
*
|
|
32
|
+
* `source.hash` identifies the source and the hash of the canonical encoding
|
|
33
|
+
* identifies the program, and they are two answers because a compiler change
|
|
34
|
+
* that alters what a source compiles to has to be visible without the source
|
|
35
|
+
* having changed at all.
|
|
36
|
+
*/
|
|
37
|
+
export declare function sourceHash(text: string): string;
|
|
38
|
+
export declare function programHash(program: CompiledProgram): string;
|
|
39
|
+
//# sourceMappingURL=canonical.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../../src/core/emit/canonical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAarD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAiBnD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAE5D"}
|