openalgo-script 0.1.0-alpha.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1200 -0
- package/README.md +49 -28
- package/dist/adapters/charts/alerts.d.ts +70 -0
- package/dist/adapters/charts/alerts.d.ts.map +1 -0
- package/dist/adapters/charts/alerts.js +52 -0
- package/dist/adapters/charts/alerts.js.map +1 -0
- package/dist/adapters/charts/bars.d.ts +39 -0
- package/dist/adapters/charts/bars.d.ts.map +1 -0
- package/dist/adapters/charts/bars.js +32 -0
- package/dist/adapters/charts/bars.js.map +1 -0
- package/dist/adapters/charts/candles.d.ts +40 -0
- package/dist/adapters/charts/candles.d.ts.map +1 -0
- package/dist/adapters/charts/candles.js +85 -0
- package/dist/adapters/charts/candles.js.map +1 -0
- package/dist/adapters/charts/colours.d.ts +47 -0
- package/dist/adapters/charts/colours.d.ts.map +1 -0
- package/dist/adapters/charts/colours.js +80 -0
- package/dist/adapters/charts/colours.js.map +1 -0
- package/dist/adapters/charts/columns.d.ts +37 -0
- package/dist/adapters/charts/columns.d.ts.map +1 -0
- package/dist/adapters/charts/columns.js +56 -0
- package/dist/adapters/charts/columns.js.map +1 -0
- package/dist/adapters/charts/contract.d.ts +278 -0
- package/dist/adapters/charts/contract.d.ts.map +1 -0
- package/dist/adapters/charts/contract.js +2 -0
- package/dist/adapters/charts/contract.js.map +1 -0
- package/dist/adapters/charts/descriptor.d.ts +48 -0
- package/dist/adapters/charts/descriptor.d.ts.map +1 -0
- package/dist/adapters/charts/descriptor.js +111 -0
- package/dist/adapters/charts/descriptor.js.map +1 -0
- package/dist/adapters/charts/drawings.d.ts +43 -0
- package/dist/adapters/charts/drawings.d.ts.map +1 -0
- package/dist/adapters/charts/drawings.js +172 -0
- package/dist/adapters/charts/drawings.js.map +1 -0
- package/dist/adapters/charts/errors.d.ts +28 -0
- package/dist/adapters/charts/errors.d.ts.map +1 -0
- package/dist/adapters/charts/errors.js +21 -0
- package/dist/adapters/charts/errors.js.map +1 -0
- package/dist/adapters/charts/fields.d.ts +33 -0
- package/dist/adapters/charts/fields.d.ts.map +1 -0
- package/dist/adapters/charts/fields.js +51 -0
- package/dist/adapters/charts/fields.js.map +1 -0
- package/dist/adapters/charts/fills.d.ts +23 -0
- package/dist/adapters/charts/fills.d.ts.map +1 -0
- package/dist/adapters/charts/fills.js +48 -0
- package/dist/adapters/charts/fills.js.map +1 -0
- package/dist/adapters/charts/index.d.ts +37 -0
- package/dist/adapters/charts/index.d.ts.map +1 -0
- package/dist/adapters/charts/index.js +33 -0
- package/dist/adapters/charts/index.js.map +1 -0
- package/dist/adapters/charts/levels.d.ts +39 -0
- package/dist/adapters/charts/levels.d.ts.map +1 -0
- package/dist/adapters/charts/levels.js +61 -0
- package/dist/adapters/charts/levels.js.map +1 -0
- package/dist/adapters/charts/markers.d.ts +41 -0
- package/dist/adapters/charts/markers.d.ts.map +1 -0
- package/dist/adapters/charts/markers.js +75 -0
- package/dist/adapters/charts/markers.js.map +1 -0
- package/dist/adapters/charts/paint.d.ts +61 -0
- package/dist/adapters/charts/paint.d.ts.map +1 -0
- package/dist/adapters/charts/paint.js +47 -0
- package/dist/adapters/charts/paint.js.map +1 -0
- package/dist/adapters/charts/plots.d.ts +39 -0
- package/dist/adapters/charts/plots.d.ts.map +1 -0
- package/dist/adapters/charts/plots.js +117 -0
- package/dist/adapters/charts/plots.js.map +1 -0
- package/dist/adapters/charts/produced.d.ts +57 -0
- package/dist/adapters/charts/produced.d.ts.map +1 -0
- package/dist/adapters/charts/produced.js +11 -0
- package/dist/adapters/charts/produced.js.map +1 -0
- package/dist/adapters/charts/requests.d.ts +114 -0
- package/dist/adapters/charts/requests.d.ts.map +1 -0
- package/dist/adapters/charts/requests.js +277 -0
- package/dist/adapters/charts/requests.js.map +1 -0
- package/dist/adapters/charts/run.d.ts +147 -0
- package/dist/adapters/charts/run.d.ts.map +1 -0
- package/dist/adapters/charts/run.js +148 -0
- package/dist/adapters/charts/run.js.map +1 -0
- package/dist/adapters/charts/settings.d.ts +78 -0
- package/dist/adapters/charts/settings.d.ts.map +1 -0
- package/dist/adapters/charts/settings.js +225 -0
- package/dist/adapters/charts/settings.js.map +1 -0
- package/dist/adapters/charts/surfaces.d.ts +204 -0
- package/dist/adapters/charts/surfaces.d.ts.map +1 -0
- package/dist/adapters/charts/surfaces.js +2 -0
- package/dist/adapters/charts/surfaces.js.map +1 -0
- package/dist/adapters/charts/tables.d.ts +65 -0
- package/dist/adapters/charts/tables.d.ts.map +1 -0
- package/dist/adapters/charts/tables.js +84 -0
- package/dist/adapters/charts/tables.js.map +1 -0
- package/dist/core/catalogue/catalogue.generated.d.ts +98 -10
- package/dist/core/catalogue/catalogue.generated.d.ts.map +1 -1
- package/dist/core/catalogue/catalogue.generated.js +17 -9
- package/dist/core/catalogue/catalogue.generated.js.map +1 -1
- package/dist/core/catalogue/values.generated.d.ts +25 -0
- package/dist/core/catalogue/values.generated.d.ts.map +1 -1
- package/dist/core/check/arguments.d.ts +41 -0
- package/dist/core/check/arguments.d.ts.map +1 -0
- package/dist/core/check/arguments.js +84 -0
- package/dist/core/check/arguments.js.map +1 -0
- package/dist/core/check/call-sites.d.ts +22 -0
- package/dist/core/check/call-sites.d.ts.map +1 -0
- package/dist/core/check/call-sites.js +329 -0
- package/dist/core/check/call-sites.js.map +1 -0
- package/dist/core/check/call-warmup.d.ts +37 -0
- package/dist/core/check/call-warmup.d.ts.map +1 -0
- package/dist/core/check/call-warmup.js +97 -0
- package/dist/core/check/call-warmup.js.map +1 -0
- package/dist/core/check/calls.d.ts +33 -0
- package/dist/core/check/calls.d.ts.map +1 -0
- package/dist/core/check/calls.js +348 -0
- package/dist/core/check/calls.js.map +1 -0
- package/dist/core/check/check.d.ts +23 -0
- package/dist/core/check/check.d.ts.map +1 -0
- package/dist/core/check/check.js +163 -0
- package/dist/core/check/check.js.map +1 -0
- package/dist/core/check/checked.d.ts +198 -0
- package/dist/core/check/checked.d.ts.map +1 -0
- package/dist/core/check/checked.js +19 -0
- package/dist/core/check/checked.js.map +1 -0
- package/dist/core/check/checker.d.ts +182 -0
- package/dist/core/check/checker.d.ts.map +1 -0
- package/dist/core/check/checker.js +280 -0
- package/dist/core/check/checker.js.map +1 -0
- package/dist/core/check/conditional.d.ts +35 -0
- package/dist/core/check/conditional.d.ts.map +1 -0
- package/dist/core/check/conditional.js +100 -0
- package/dist/core/check/conditional.js.map +1 -0
- package/dist/core/check/constant.d.ts +47 -0
- package/dist/core/check/constant.d.ts.map +1 -0
- package/dist/core/check/constant.js +101 -0
- package/dist/core/check/constant.js.map +1 -0
- package/dist/core/check/declaration.d.ts +33 -0
- package/dist/core/check/declaration.d.ts.map +1 -0
- package/dist/core/check/declaration.js +181 -0
- package/dist/core/check/declaration.js.map +1 -0
- package/dist/core/check/expressions.d.ts +36 -0
- package/dist/core/check/expressions.d.ts.map +1 -0
- package/dist/core/check/expressions.js +398 -0
- package/dist/core/check/expressions.js.map +1 -0
- package/dist/core/check/functions.d.ts +31 -0
- package/dist/core/check/functions.d.ts.map +1 -0
- package/dist/core/check/functions.js +238 -0
- package/dist/core/check/functions.js.map +1 -0
- package/dist/core/check/handles.d.ts +48 -0
- package/dist/core/check/handles.d.ts.map +1 -0
- package/dist/core/check/handles.js +43 -0
- package/dist/core/check/handles.js.map +1 -0
- package/dist/core/check/index.d.ts +30 -0
- package/dist/core/check/index.d.ts.map +1 -0
- package/dist/core/check/index.js +26 -0
- package/dist/core/check/index.js.map +1 -0
- package/dist/core/check/library-bars.d.ts +7 -0
- package/dist/core/check/library-bars.d.ts.map +1 -0
- package/dist/core/check/library-bars.js +181 -0
- package/dist/core/check/library-bars.js.map +1 -0
- package/dist/core/check/library-orders.d.ts +5 -0
- package/dist/core/check/library-orders.d.ts.map +1 -0
- package/dist/core/check/library-orders.js +250 -0
- package/dist/core/check/library-orders.js.map +1 -0
- package/dist/core/check/library-output.d.ts +7 -0
- package/dist/core/check/library-output.d.ts.map +1 -0
- package/dist/core/check/library-output.js +195 -0
- package/dist/core/check/library-output.js.map +1 -0
- package/dist/core/check/library-series.d.ts +3 -0
- package/dist/core/check/library-series.d.ts.map +1 -0
- package/dist/core/check/library-series.js +415 -0
- package/dist/core/check/library-series.js.map +1 -0
- package/dist/core/check/library.d.ts +204 -0
- package/dist/core/check/library.d.ts.map +1 -0
- package/dist/core/check/library.js +198 -0
- package/dist/core/check/library.js.map +1 -0
- package/dist/core/check/literals.d.ts +19 -0
- package/dist/core/check/literals.d.ts.map +1 -0
- package/dist/core/check/literals.js +22 -0
- package/dist/core/check/literals.js.map +1 -0
- package/dist/core/check/outputs.d.ts +31 -0
- package/dist/core/check/outputs.d.ts.map +1 -0
- package/dist/core/check/outputs.js +113 -0
- package/dist/core/check/outputs.js.map +1 -0
- package/dist/core/check/statements.d.ts +25 -0
- package/dist/core/check/statements.d.ts.map +1 -0
- package/dist/core/check/statements.js +377 -0
- package/dist/core/check/statements.js.map +1 -0
- package/dist/core/check/suggest.d.ts +25 -0
- package/dist/core/check/suggest.d.ts.map +1 -0
- package/dist/core/check/suggest.js +61 -0
- package/dist/core/check/suggest.js.map +1 -0
- package/dist/core/check/surface.d.ts +38 -0
- package/dist/core/check/surface.d.ts.map +1 -0
- package/dist/core/check/surface.js +100 -0
- package/dist/core/check/surface.js.map +1 -0
- package/dist/core/check/tags.d.ts +4 -0
- package/dist/core/check/tags.d.ts.map +1 -0
- package/dist/core/check/tags.js +54 -0
- package/dist/core/check/tags.js.map +1 -0
- package/dist/core/check/types.d.ts +153 -0
- package/dist/core/check/types.d.ts.map +1 -0
- package/dist/core/check/types.js +221 -0
- package/dist/core/check/types.js.map +1 -0
- package/dist/core/check/warmup.d.ts +73 -0
- package/dist/core/check/warmup.d.ts.map +1 -0
- package/dist/core/check/warmup.js +62 -0
- package/dist/core/check/warmup.js.map +1 -0
- package/dist/core/diagnostics/collector.d.ts +12 -0
- package/dist/core/diagnostics/collector.d.ts.map +1 -1
- package/dist/core/diagnostics/collector.js +27 -1
- package/dist/core/diagnostics/collector.js.map +1 -1
- package/dist/core/emit/calls.d.ts +38 -0
- package/dist/core/emit/calls.d.ts.map +1 -0
- package/dist/core/emit/calls.js +347 -0
- package/dist/core/emit/calls.js.map +1 -0
- package/dist/core/emit/canonical.d.ts +39 -0
- package/dist/core/emit/canonical.d.ts.map +1 -0
- package/dist/core/emit/canonical.js +71 -0
- package/dist/core/emit/canonical.js.map +1 -0
- package/dist/core/emit/channels.d.ts +28 -0
- package/dist/core/emit/channels.d.ts.map +1 -0
- package/dist/core/emit/channels.js +110 -0
- package/dist/core/emit/channels.js.map +1 -0
- package/dist/core/emit/code.d.ts +75 -0
- package/dist/core/emit/code.d.ts.map +1 -0
- package/dist/core/emit/code.js +104 -0
- package/dist/core/emit/code.js.map +1 -0
- package/dist/core/emit/colours.d.ts +35 -0
- package/dist/core/emit/colours.d.ts.map +1 -0
- package/dist/core/emit/colours.js +50 -0
- package/dist/core/emit/colours.js.map +1 -0
- package/dist/core/emit/context.d.ts +271 -0
- package/dist/core/emit/context.d.ts.map +1 -0
- package/dist/core/emit/context.js +358 -0
- package/dist/core/emit/context.js.map +1 -0
- package/dist/core/emit/defaults.d.ts +45 -0
- package/dist/core/emit/defaults.d.ts.map +1 -0
- package/dist/core/emit/defaults.js +116 -0
- package/dist/core/emit/defaults.js.map +1 -0
- package/dist/core/emit/emit.d.ts +13 -0
- package/dist/core/emit/emit.d.ts.map +1 -0
- package/dist/core/emit/emit.js +281 -0
- package/dist/core/emit/emit.js.map +1 -0
- package/dist/core/emit/events.d.ts +21 -0
- package/dist/core/emit/events.d.ts.map +1 -0
- package/dist/core/emit/events.js +112 -0
- package/dist/core/emit/events.js.map +1 -0
- package/dist/core/emit/expressions.d.ts +23 -0
- package/dist/core/emit/expressions.d.ts.map +1 -0
- package/dist/core/emit/expressions.js +253 -0
- package/dist/core/emit/expressions.js.map +1 -0
- package/dist/core/emit/functions.d.ts +30 -0
- package/dist/core/emit/functions.d.ts.map +1 -0
- package/dist/core/emit/functions.js +171 -0
- package/dist/core/emit/functions.js.map +1 -0
- package/dist/core/emit/gaps.d.ts +34 -0
- package/dist/core/emit/gaps.d.ts.map +1 -0
- package/dist/core/emit/gaps.js +16 -0
- package/dist/core/emit/gaps.js.map +1 -0
- package/dist/core/emit/index.d.ts +29 -0
- package/dist/core/emit/index.d.ts.map +1 -0
- package/dist/core/emit/index.js +23 -0
- package/dist/core/emit/index.js.map +1 -0
- package/dist/core/emit/inputs.d.ts +47 -0
- package/dist/core/emit/inputs.d.ts.map +1 -0
- package/dist/core/emit/inputs.js +150 -0
- package/dist/core/emit/inputs.js.map +1 -0
- package/dist/core/emit/layout.d.ts +73 -0
- package/dist/core/emit/layout.d.ts.map +1 -0
- package/dist/core/emit/layout.js +126 -0
- package/dist/core/emit/layout.js.map +1 -0
- package/dist/core/emit/meta.d.ts +14 -0
- package/dist/core/emit/meta.d.ts.map +1 -0
- package/dist/core/emit/meta.js +68 -0
- package/dist/core/emit/meta.js.map +1 -0
- package/dist/core/emit/opcodes.d.ts +28 -0
- package/dist/core/emit/opcodes.d.ts.map +1 -0
- package/dist/core/emit/opcodes.js +137 -0
- package/dist/core/emit/opcodes.js.map +1 -0
- package/dist/core/emit/outputs.d.ts +67 -0
- package/dist/core/emit/outputs.d.ts.map +1 -0
- package/dist/core/emit/outputs.js +293 -0
- package/dist/core/emit/outputs.js.map +1 -0
- package/dist/core/emit/pool.d.ts +33 -0
- package/dist/core/emit/pool.d.ts.map +1 -0
- package/dist/core/emit/pool.js +79 -0
- package/dist/core/emit/pool.js.map +1 -0
- package/dist/core/emit/program.d.ts +333 -0
- package/dist/core/emit/program.d.ts.map +1 -0
- package/dist/core/emit/program.js +15 -0
- package/dist/core/emit/program.js.map +1 -0
- package/dist/core/emit/registers.d.ts +35 -0
- package/dist/core/emit/registers.d.ts.map +1 -0
- package/dist/core/emit/registers.js +170 -0
- package/dist/core/emit/registers.js.map +1 -0
- package/dist/core/emit/request-scope.d.ts +36 -0
- package/dist/core/emit/request-scope.d.ts.map +1 -0
- package/dist/core/emit/request-scope.js +41 -0
- package/dist/core/emit/request-scope.js.map +1 -0
- package/dist/core/emit/requests.d.ts +69 -0
- package/dist/core/emit/requests.d.ts.map +1 -0
- package/dist/core/emit/requests.js +230 -0
- package/dist/core/emit/requests.js.map +1 -0
- package/dist/core/emit/requires.d.ts +4 -0
- package/dist/core/emit/requires.d.ts.map +1 -0
- package/dist/core/emit/requires.js +71 -0
- package/dist/core/emit/requires.js.map +1 -0
- package/dist/core/emit/sha256.d.ts +24 -0
- package/dist/core/emit/sha256.d.ts.map +1 -0
- package/dist/core/emit/sha256.js +109 -0
- package/dist/core/emit/sha256.js.map +1 -0
- package/dist/core/emit/statements.d.ts +20 -0
- package/dist/core/emit/statements.d.ts.map +1 -0
- package/dist/core/emit/statements.js +393 -0
- package/dist/core/emit/statements.js.map +1 -0
- package/dist/core/emit/values.d.ts +80 -0
- package/dist/core/emit/values.d.ts.map +1 -0
- package/dist/core/emit/values.js +242 -0
- package/dist/core/emit/values.js.map +1 -0
- package/dist/core/engine/alerts.d.ts +66 -0
- package/dist/core/engine/alerts.d.ts.map +1 -0
- package/dist/core/engine/alerts.js +119 -0
- package/dist/core/engine/alerts.js.map +1 -0
- package/dist/core/engine/arithmetic.d.ts +82 -0
- package/dist/core/engine/arithmetic.d.ts.map +1 -0
- package/dist/core/engine/arithmetic.js +141 -0
- package/dist/core/engine/arithmetic.js.map +1 -0
- package/dist/core/engine/bars.d.ts +95 -0
- package/dist/core/engine/bars.d.ts.map +1 -0
- package/dist/core/engine/bars.js +133 -0
- package/dist/core/engine/bars.js.map +1 -0
- package/dist/core/engine/budget.d.ts +162 -0
- package/dist/core/engine/budget.d.ts.map +1 -0
- package/dist/core/engine/budget.js +188 -0
- package/dist/core/engine/budget.js.map +1 -0
- package/dist/core/engine/channels.d.ts +106 -0
- package/dist/core/engine/channels.d.ts.map +1 -0
- package/dist/core/engine/channels.js +99 -0
- package/dist/core/engine/channels.js.map +1 -0
- package/dist/core/engine/drawings.d.ts +64 -0
- package/dist/core/engine/drawings.d.ts.map +1 -0
- package/dist/core/engine/drawings.js +67 -0
- package/dist/core/engine/drawings.js.map +1 -0
- package/dist/core/engine/engine.d.ts +140 -0
- package/dist/core/engine/engine.d.ts.map +1 -0
- package/dist/core/engine/engine.js +405 -0
- package/dist/core/engine/engine.js.map +1 -0
- package/dist/core/engine/errors.d.ts +64 -0
- package/dist/core/engine/errors.d.ts.map +1 -0
- package/dist/core/engine/errors.js +63 -0
- package/dist/core/engine/errors.js.map +1 -0
- package/dist/core/engine/frames.d.ts +48 -0
- package/dist/core/engine/frames.d.ts.map +1 -0
- package/dist/core/engine/frames.js +41 -0
- package/dist/core/engine/frames.js.map +1 -0
- package/dist/core/engine/grids.d.ts +25 -0
- package/dist/core/engine/grids.d.ts.map +1 -0
- package/dist/core/engine/grids.js +77 -0
- package/dist/core/engine/grids.js.map +1 -0
- package/dist/core/engine/guard.d.ts +4 -0
- package/dist/core/engine/guard.d.ts.map +1 -0
- package/dist/core/engine/guard.js +46 -0
- package/dist/core/engine/guard.js.map +1 -0
- package/dist/core/engine/host.d.ts +219 -0
- package/dist/core/engine/host.d.ts.map +1 -0
- package/dist/core/engine/host.js +38 -0
- package/dist/core/engine/host.js.map +1 -0
- package/dist/core/engine/index.d.ts +49 -0
- package/dist/core/engine/index.d.ts.map +1 -0
- package/dist/core/engine/index.js +33 -0
- package/dist/core/engine/index.js.map +1 -0
- package/dist/core/engine/inputs.d.ts +77 -0
- package/dist/core/engine/inputs.d.ts.map +1 -0
- package/dist/core/engine/inputs.js +205 -0
- package/dist/core/engine/inputs.js.map +1 -0
- package/dist/core/engine/ledger/call.d.ts +63 -0
- package/dist/core/engine/ledger/call.d.ts.map +1 -0
- package/dist/core/engine/ledger/call.js +136 -0
- package/dist/core/engine/ledger/call.js.map +1 -0
- package/dist/core/engine/ledger/closable.d.ts +155 -0
- package/dist/core/engine/ledger/closable.d.ts.map +1 -0
- package/dist/core/engine/ledger/closable.js +173 -0
- package/dist/core/engine/ledger/closable.js.map +1 -0
- package/dist/core/engine/ledger/holdings.d.ts +194 -0
- package/dist/core/engine/ledger/holdings.d.ts.map +1 -0
- package/dist/core/engine/ledger/holdings.js +237 -0
- package/dist/core/engine/ledger/holdings.js.map +1 -0
- package/dist/core/engine/ledger/index.d.ts +19 -0
- package/dist/core/engine/ledger/index.d.ts.map +1 -0
- package/dist/core/engine/ledger/index.js +2 -0
- package/dist/core/engine/ledger/index.js.map +1 -0
- package/dist/core/engine/ledger/intent.d.ts +106 -0
- package/dist/core/engine/ledger/intent.d.ts.map +1 -0
- package/dist/core/engine/ledger/intent.js +21 -0
- package/dist/core/engine/ledger/intent.js.map +1 -0
- package/dist/core/engine/ledger/ledger.d.ts +143 -0
- package/dist/core/engine/ledger/ledger.d.ts.map +1 -0
- package/dist/core/engine/ledger/ledger.js +237 -0
- package/dist/core/engine/ledger/ledger.js.map +1 -0
- package/dist/core/engine/ledger/place.d.ts +75 -0
- package/dist/core/engine/ledger/place.d.ts.map +1 -0
- package/dist/core/engine/ledger/place.js +174 -0
- package/dist/core/engine/ledger/place.js.map +1 -0
- package/dist/core/engine/ledger/positions.d.ts +68 -0
- package/dist/core/engine/ledger/positions.d.ts.map +1 -0
- package/dist/core/engine/ledger/positions.js +114 -0
- package/dist/core/engine/ledger/positions.js.map +1 -0
- package/dist/core/engine/ledger/refuse.d.ts +43 -0
- package/dist/core/engine/ledger/refuse.d.ts.map +1 -0
- package/dist/core/engine/ledger/refuse.js +329 -0
- package/dist/core/engine/ledger/refuse.js.map +1 -0
- package/dist/core/engine/ledger/row.d.ts +176 -0
- package/dist/core/engine/ledger/row.d.ts.map +1 -0
- package/dist/core/engine/ledger/row.js +169 -0
- package/dist/core/engine/ledger/row.js.map +1 -0
- package/dist/core/engine/ledger/sizing.d.ts +142 -0
- package/dist/core/engine/ledger/sizing.d.ts.map +1 -0
- package/dist/core/engine/ledger/sizing.js +223 -0
- package/dist/core/engine/ledger/sizing.js.map +1 -0
- package/dist/core/engine/library/arrays.d.ts +14 -0
- package/dist/core/engine/library/arrays.d.ts.map +1 -0
- package/dist/core/engine/library/arrays.js +285 -0
- package/dist/core/engine/library/arrays.js.map +1 -0
- package/dist/core/engine/library/averages.d.ts +9 -0
- package/dist/core/engine/library/averages.d.ts.map +1 -0
- package/dist/core/engine/library/averages.js +41 -0
- package/dist/core/engine/library/averages.js.map +1 -0
- package/dist/core/engine/library/binding.d.ts +230 -0
- package/dist/core/engine/library/binding.d.ts.map +1 -0
- package/dist/core/engine/library/binding.js +109 -0
- package/dist/core/engine/library/binding.js.map +1 -0
- package/dist/core/engine/library/chart.d.ts +3 -0
- package/dist/core/engine/library/chart.d.ts.map +1 -0
- package/dist/core/engine/library/chart.js +83 -0
- package/dist/core/engine/library/chart.js.map +1 -0
- package/dist/core/engine/library/colours.d.ts +26 -0
- package/dist/core/engine/library/colours.d.ts.map +1 -0
- package/dist/core/engine/library/colours.js +81 -0
- package/dist/core/engine/library/colours.js.map +1 -0
- package/dist/core/engine/library/dates.d.ts +3 -0
- package/dist/core/engine/library/dates.d.ts.map +1 -0
- package/dist/core/engine/library/dates.js +75 -0
- package/dist/core/engine/library/dates.js.map +1 -0
- package/dist/core/engine/library/index.d.ts +13 -0
- package/dist/core/engine/library/index.d.ts.map +1 -0
- package/dist/core/engine/library/index.js +86 -0
- package/dist/core/engine/library/index.js.map +1 -0
- package/dist/core/engine/library/maths.d.ts +3 -0
- package/dist/core/engine/library/maths.d.ts.map +1 -0
- package/dist/core/engine/library/maths.js +89 -0
- package/dist/core/engine/library/maths.js.map +1 -0
- package/dist/core/engine/library/objects.d.ts +3 -0
- package/dist/core/engine/library/objects.d.ts.map +1 -0
- package/dist/core/engine/library/objects.js +199 -0
- package/dist/core/engine/library/objects.js.map +1 -0
- package/dist/core/engine/library/oscillators.d.ts +3 -0
- package/dist/core/engine/library/oscillators.d.ts.map +1 -0
- package/dist/core/engine/library/oscillators.js +29 -0
- package/dist/core/engine/library/oscillators.js.map +1 -0
- package/dist/core/engine/library/ranges.d.ts +3 -0
- package/dist/core/engine/library/ranges.d.ts.map +1 -0
- package/dist/core/engine/library/ranges.js +23 -0
- package/dist/core/engine/library/ranges.js.map +1 -0
- package/dist/core/engine/library/series.d.ts +3 -0
- package/dist/core/engine/library/series.d.ts.map +1 -0
- package/dist/core/engine/library/series.js +46 -0
- package/dist/core/engine/library/series.js.map +1 -0
- package/dist/core/engine/library/state.d.ts +35 -0
- package/dist/core/engine/library/state.d.ts.map +1 -0
- package/dist/core/engine/library/state.js +19 -0
- package/dist/core/engine/library/state.js.map +1 -0
- package/dist/core/engine/library/studies.d.ts +3 -0
- package/dist/core/engine/library/studies.d.ts.map +1 -0
- package/dist/core/engine/library/studies.js +35 -0
- package/dist/core/engine/library/studies.js.map +1 -0
- package/dist/core/engine/library/text.d.ts +6 -0
- package/dist/core/engine/library/text.d.ts.map +1 -0
- package/dist/core/engine/library/text.js +280 -0
- package/dist/core/engine/library/text.js.map +1 -0
- package/dist/core/engine/library/trend.d.ts +3 -0
- package/dist/core/engine/library/trend.d.ts.map +1 -0
- package/dist/core/engine/library/trend.js +29 -0
- package/dist/core/engine/library/trend.js.map +1 -0
- package/dist/core/engine/library/volume.d.ts +3 -0
- package/dist/core/engine/library/volume.d.ts.map +1 -0
- package/dist/core/engine/library/volume.js +51 -0
- package/dist/core/engine/library/volume.js.map +1 -0
- package/dist/core/engine/load.d.ts +45 -0
- package/dist/core/engine/load.d.ts.map +1 -0
- package/dist/core/engine/load.js +60 -0
- package/dist/core/engine/load.js.map +1 -0
- package/dist/core/engine/machine.d.ts +107 -0
- package/dist/core/engine/machine.d.ts.map +1 -0
- package/dist/core/engine/machine.js +337 -0
- package/dist/core/engine/machine.js.map +1 -0
- package/dist/core/engine/memory.d.ts +60 -0
- package/dist/core/engine/memory.d.ts.map +1 -0
- package/dist/core/engine/memory.js +92 -0
- package/dist/core/engine/memory.js.map +1 -0
- package/dist/core/engine/operations.d.ts +62 -0
- package/dist/core/engine/operations.d.ts.map +1 -0
- package/dist/core/engine/operations.js +149 -0
- package/dist/core/engine/operations.js.map +1 -0
- package/dist/core/engine/orders.d.ts +56 -0
- package/dist/core/engine/orders.d.ts.map +1 -0
- package/dist/core/engine/orders.js +83 -0
- package/dist/core/engine/orders.js.map +1 -0
- package/dist/core/engine/registers.d.ts +50 -0
- package/dist/core/engine/registers.d.ts.map +1 -0
- package/dist/core/engine/registers.js +85 -0
- package/dist/core/engine/registers.js.map +1 -0
- package/dist/core/engine/request-body.d.ts +138 -0
- package/dist/core/engine/request-body.d.ts.map +1 -0
- package/dist/core/engine/request-body.js +227 -0
- package/dist/core/engine/request-body.js.map +1 -0
- package/dist/core/engine/request-plan.d.ts +79 -0
- package/dist/core/engine/request-plan.d.ts.map +1 -0
- package/dist/core/engine/request-plan.js +228 -0
- package/dist/core/engine/request-plan.js.map +1 -0
- package/dist/core/engine/requests.d.ts +105 -0
- package/dist/core/engine/requests.d.ts.map +1 -0
- package/dist/core/engine/requests.js +260 -0
- package/dist/core/engine/requests.js.map +1 -0
- package/dist/core/engine/results.d.ts +40 -0
- package/dist/core/engine/results.d.ts.map +1 -0
- package/dist/core/engine/results.js +2 -0
- package/dist/core/engine/results.js.map +1 -0
- package/dist/core/engine/series.d.ts +61 -0
- package/dist/core/engine/series.d.ts.map +1 -0
- package/dist/core/engine/series.js +41 -0
- package/dist/core/engine/series.js.map +1 -0
- package/dist/core/engine/session/hours.d.ts +49 -0
- package/dist/core/engine/session/hours.d.ts.map +1 -0
- package/dist/core/engine/session/hours.js +31 -0
- package/dist/core/engine/session/hours.js.map +1 -0
- package/dist/core/engine/session/index.d.ts +17 -0
- package/dist/core/engine/session/index.d.ts.map +1 -0
- package/dist/core/engine/session/index.js +3 -0
- package/dist/core/engine/session/index.js.map +1 -0
- package/dist/core/engine/session/record.d.ts +56 -0
- package/dist/core/engine/session/record.d.ts.map +1 -0
- package/dist/core/engine/session/record.js +165 -0
- package/dist/core/engine/session/record.js.map +1 -0
- package/dist/core/engine/session/spec.d.ts +19 -0
- package/dist/core/engine/session/spec.d.ts.map +1 -0
- package/dist/core/engine/session/spec.js +31 -0
- package/dist/core/engine/session/spec.js.map +1 -0
- package/dist/core/engine/timeframe.d.ts +59 -0
- package/dist/core/engine/timeframe.d.ts.map +1 -0
- package/dist/core/engine/timeframe.js +140 -0
- package/dist/core/engine/timeframe.js.map +1 -0
- package/dist/core/engine/types.d.ts +15 -0
- package/dist/core/engine/types.d.ts.map +1 -0
- package/dist/core/engine/types.js +2 -0
- package/dist/core/engine/types.js.map +1 -0
- package/dist/core/engine/values/heap.d.ts +134 -0
- package/dist/core/engine/values/heap.d.ts.map +1 -0
- package/dist/core/engine/values/heap.js +230 -0
- package/dist/core/engine/values/heap.js.map +1 -0
- package/dist/core/engine/values/index.d.ts +13 -0
- package/dist/core/engine/values/index.d.ts.map +1 -0
- package/dist/core/engine/values/index.js +3 -0
- package/dist/core/engine/values/index.js.map +1 -0
- package/dist/core/engine/values/value.d.ts +82 -0
- package/dist/core/engine/values/value.d.ts.map +1 -0
- package/dist/core/engine/values/value.js +134 -0
- package/dist/core/engine/values/value.js.map +1 -0
- package/dist/core/engine/verify-budgets.d.ts +35 -0
- package/dist/core/engine/verify-budgets.d.ts.map +1 -0
- package/dist/core/engine/verify-budgets.js +172 -0
- package/dist/core/engine/verify-budgets.js.map +1 -0
- package/dist/core/engine/verify-code.d.ts +32 -0
- package/dist/core/engine/verify-code.d.ts.map +1 -0
- package/dist/core/engine/verify-code.js +278 -0
- package/dist/core/engine/verify-code.js.map +1 -0
- package/dist/core/engine/verify-requests.d.ts +44 -0
- package/dist/core/engine/verify-requests.d.ts.map +1 -0
- package/dist/core/engine/verify-requests.js +220 -0
- package/dist/core/engine/verify-requests.js.map +1 -0
- package/dist/core/engine/verify-shape.d.ts +46 -0
- package/dist/core/engine/verify-shape.d.ts.map +1 -0
- package/dist/core/engine/verify-shape.js +147 -0
- package/dist/core/engine/verify-shape.js.map +1 -0
- package/dist/core/engine/verify-tables.d.ts +19 -0
- package/dist/core/engine/verify-tables.d.ts.map +1 -0
- package/dist/core/engine/verify-tables.js +171 -0
- package/dist/core/engine/verify-tables.js.map +1 -0
- package/dist/core/engine/verify.d.ts +19 -0
- package/dist/core/engine/verify.d.ts.map +1 -0
- package/dist/core/engine/verify.js +309 -0
- package/dist/core/engine/verify.js.map +1 -0
- package/dist/core/index.d.ts +61 -6
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +48 -6
- package/dist/core/index.js.map +1 -1
- package/dist/core/parse/expressions.js +1 -1
- package/dist/core/parse/expressions.js.map +1 -1
- package/dist/core/parse/names.d.ts +7 -1
- package/dist/core/parse/names.d.ts.map +1 -1
- package/dist/core/parse/names.js +28 -2
- package/dist/core/parse/names.js.map +1 -1
- package/dist/core/stdlib/averages/exponential.d.ts +51 -0
- package/dist/core/stdlib/averages/exponential.d.ts.map +1 -0
- package/dist/core/stdlib/averages/exponential.js +72 -0
- package/dist/core/stdlib/averages/exponential.js.map +1 -0
- package/dist/core/stdlib/averages/index.d.ts +7 -0
- package/dist/core/stdlib/averages/index.d.ts.map +1 -0
- package/dist/core/stdlib/averages/index.js +5 -0
- package/dist/core/stdlib/averages/index.js.map +1 -0
- package/dist/core/stdlib/averages/select.d.ts +35 -0
- package/dist/core/stdlib/averages/select.d.ts.map +1 -0
- package/dist/core/stdlib/averages/select.js +43 -0
- package/dist/core/stdlib/averages/select.js.map +1 -0
- package/dist/core/stdlib/averages/shaped.d.ts +61 -0
- package/dist/core/stdlib/averages/shaped.d.ts.map +1 -0
- package/dist/core/stdlib/averages/shaped.js +126 -0
- package/dist/core/stdlib/averages/shaped.js.map +1 -0
- package/dist/core/stdlib/averages/simple.d.ts +58 -0
- package/dist/core/stdlib/averages/simple.d.ts.map +1 -0
- package/dist/core/stdlib/averages/simple.js +92 -0
- package/dist/core/stdlib/averages/simple.js.map +1 -0
- package/dist/core/stdlib/calendar/civil.d.ts +56 -0
- package/dist/core/stdlib/calendar/civil.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/civil.js +70 -0
- package/dist/core/stdlib/calendar/civil.js.map +1 -0
- package/dist/core/stdlib/calendar/fields.d.ts +36 -0
- package/dist/core/stdlib/calendar/fields.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/fields.js +93 -0
- package/dist/core/stdlib/calendar/fields.js.map +1 -0
- package/dist/core/stdlib/calendar/format.d.ts +19 -0
- package/dist/core/stdlib/calendar/format.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/format.js +51 -0
- package/dist/core/stdlib/calendar/format.js.map +1 -0
- package/dist/core/stdlib/calendar/index.d.ts +7 -0
- package/dist/core/stdlib/calendar/index.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/index.js +5 -0
- package/dist/core/stdlib/calendar/index.js.map +1 -0
- package/dist/core/stdlib/calendar/zone.d.ts +53 -0
- package/dist/core/stdlib/calendar/zone.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/zone.js +138 -0
- package/dist/core/stdlib/calendar/zone.js.map +1 -0
- package/dist/core/stdlib/index.d.ts +57 -0
- package/dist/core/stdlib/index.d.ts.map +1 -0
- package/dist/core/stdlib/index.js +51 -0
- package/dist/core/stdlib/index.js.map +1 -0
- package/dist/core/stdlib/maths/arithmetic.d.ts +38 -0
- package/dist/core/stdlib/maths/arithmetic.d.ts.map +1 -0
- package/dist/core/stdlib/maths/arithmetic.js +66 -0
- package/dist/core/stdlib/maths/arithmetic.js.map +1 -0
- package/dist/core/stdlib/maths/elementary.d.ts +65 -0
- package/dist/core/stdlib/maths/elementary.d.ts.map +1 -0
- package/dist/core/stdlib/maths/elementary.js +93 -0
- package/dist/core/stdlib/maths/elementary.js.map +1 -0
- package/dist/core/stdlib/maths/index.d.ts +4 -0
- package/dist/core/stdlib/maths/index.d.ts.map +1 -0
- package/dist/core/stdlib/maths/index.js +4 -0
- package/dist/core/stdlib/maths/index.js.map +1 -0
- package/dist/core/stdlib/maths/rounding.d.ts +43 -0
- package/dist/core/stdlib/maths/rounding.d.ts.map +1 -0
- package/dist/core/stdlib/maths/rounding.js +62 -0
- package/dist/core/stdlib/maths/rounding.js.map +1 -0
- package/dist/core/stdlib/momentum/convergence.d.ts +36 -0
- package/dist/core/stdlib/momentum/convergence.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/convergence.js +48 -0
- package/dist/core/stdlib/momentum/convergence.js.map +1 -0
- package/dist/core/stdlib/momentum/index.d.ts +6 -0
- package/dist/core/stdlib/momentum/index.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/index.js +6 -0
- package/dist/core/stdlib/momentum/index.js.map +1 -0
- package/dist/core/stdlib/momentum/pressure.d.ts +43 -0
- package/dist/core/stdlib/momentum/pressure.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/pressure.js +103 -0
- package/dist/core/stdlib/momentum/pressure.js.map +1 -0
- package/dist/core/stdlib/momentum/rates.d.ts +74 -0
- package/dist/core/stdlib/momentum/rates.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/rates.js +134 -0
- package/dist/core/stdlib/momentum/rates.js.map +1 -0
- package/dist/core/stdlib/momentum/rsi.d.ts +21 -0
- package/dist/core/stdlib/momentum/rsi.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/rsi.js +30 -0
- package/dist/core/stdlib/momentum/rsi.js.map +1 -0
- package/dist/core/stdlib/momentum/stochastic.d.ts +44 -0
- package/dist/core/stdlib/momentum/stochastic.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/stochastic.js +97 -0
- package/dist/core/stdlib/momentum/stochastic.js.map +1 -0
- package/dist/core/stdlib/series/changes.d.ts +59 -0
- package/dist/core/stdlib/series/changes.d.ts.map +1 -0
- package/dist/core/stdlib/series/changes.js +129 -0
- package/dist/core/stdlib/series/changes.js.map +1 -0
- package/dist/core/stdlib/series/conditions.d.ts +34 -0
- package/dist/core/stdlib/series/conditions.d.ts.map +1 -0
- package/dist/core/stdlib/series/conditions.js +52 -0
- package/dist/core/stdlib/series/conditions.js.map +1 -0
- package/dist/core/stdlib/series/extremes.d.ts +29 -0
- package/dist/core/stdlib/series/extremes.d.ts.map +1 -0
- package/dist/core/stdlib/series/extremes.js +62 -0
- package/dist/core/stdlib/series/extremes.js.map +1 -0
- package/dist/core/stdlib/series/index.d.ts +9 -0
- package/dist/core/stdlib/series/index.d.ts.map +1 -0
- package/dist/core/stdlib/series/index.js +7 -0
- package/dist/core/stdlib/series/index.js.map +1 -0
- package/dist/core/stdlib/series/pivots.d.ts +25 -0
- package/dist/core/stdlib/series/pivots.d.ts.map +1 -0
- package/dist/core/stdlib/series/pivots.js +42 -0
- package/dist/core/stdlib/series/pivots.js.map +1 -0
- package/dist/core/stdlib/series/statistics.d.ts +64 -0
- package/dist/core/stdlib/series/statistics.d.ts.map +1 -0
- package/dist/core/stdlib/series/statistics.js +148 -0
- package/dist/core/stdlib/series/statistics.js.map +1 -0
- package/dist/core/stdlib/series/totals.d.ts +68 -0
- package/dist/core/stdlib/series/totals.d.ts.map +1 -0
- package/dist/core/stdlib/series/totals.js +115 -0
- package/dist/core/stdlib/series/totals.js.map +1 -0
- package/dist/core/stdlib/trend/directional.d.ts +69 -0
- package/dist/core/stdlib/trend/directional.d.ts.map +1 -0
- package/dist/core/stdlib/trend/directional.js +151 -0
- package/dist/core/stdlib/trend/directional.js.map +1 -0
- package/dist/core/stdlib/trend/index.d.ts +4 -0
- package/dist/core/stdlib/trend/index.d.ts.map +1 -0
- package/dist/core/stdlib/trend/index.js +4 -0
- package/dist/core/stdlib/trend/index.js.map +1 -0
- package/dist/core/stdlib/trend/psar.d.ts +33 -0
- package/dist/core/stdlib/trend/psar.d.ts.map +1 -0
- package/dist/core/stdlib/trend/psar.js +86 -0
- package/dist/core/stdlib/trend/psar.js.map +1 -0
- package/dist/core/stdlib/trend/supertrend.d.ts +30 -0
- package/dist/core/stdlib/trend/supertrend.d.ts.map +1 -0
- package/dist/core/stdlib/trend/supertrend.js +65 -0
- package/dist/core/stdlib/trend/supertrend.js.map +1 -0
- package/dist/core/stdlib/values/bar.d.ts +39 -0
- package/dist/core/stdlib/values/bar.d.ts.map +1 -0
- package/dist/core/stdlib/values/bar.js +33 -0
- package/dist/core/stdlib/values/bar.js.map +1 -0
- package/dist/core/stdlib/values/index.d.ts +11 -0
- package/dist/core/stdlib/values/index.d.ts.map +1 -0
- package/dist/core/stdlib/values/index.js +6 -0
- package/dist/core/stdlib/values/index.js.map +1 -0
- package/dist/core/stdlib/values/lookback.d.ts +83 -0
- package/dist/core/stdlib/values/lookback.d.ts.map +1 -0
- package/dist/core/stdlib/values/lookback.js +134 -0
- package/dist/core/stdlib/values/lookback.js.map +1 -0
- package/dist/core/stdlib/values/region.d.ts +55 -0
- package/dist/core/stdlib/values/region.d.ts.map +1 -0
- package/dist/core/stdlib/values/region.js +73 -0
- package/dist/core/stdlib/values/region.js.map +1 -0
- package/dist/core/stdlib/values/tail.d.ts +44 -0
- package/dist/core/stdlib/values/tail.d.ts.map +1 -0
- package/dist/core/stdlib/values/tail.js +23 -0
- package/dist/core/stdlib/values/tail.js.map +1 -0
- package/dist/core/stdlib/values/value.d.ts +64 -0
- package/dist/core/stdlib/values/value.d.ts.map +1 -0
- package/dist/core/stdlib/values/value.js +61 -0
- package/dist/core/stdlib/values/value.js.map +1 -0
- package/dist/core/stdlib/volatility/bands.d.ts +50 -0
- package/dist/core/stdlib/volatility/bands.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/bands.js +101 -0
- package/dist/core/stdlib/volatility/bands.js.map +1 -0
- package/dist/core/stdlib/volatility/deviation.d.ts +43 -0
- package/dist/core/stdlib/volatility/deviation.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/deviation.js +75 -0
- package/dist/core/stdlib/volatility/deviation.js.map +1 -0
- package/dist/core/stdlib/volatility/index.d.ts +6 -0
- package/dist/core/stdlib/volatility/index.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/index.js +5 -0
- package/dist/core/stdlib/volatility/index.js.map +1 -0
- package/dist/core/stdlib/volatility/measures.d.ts +48 -0
- package/dist/core/stdlib/volatility/measures.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/measures.js +73 -0
- package/dist/core/stdlib/volatility/measures.js.map +1 -0
- package/dist/core/stdlib/volatility/range.d.ts +69 -0
- package/dist/core/stdlib/volatility/range.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/range.js +86 -0
- package/dist/core/stdlib/volatility/range.js.map +1 -0
- package/dist/core/stdlib/volume/accumulation.d.ts +61 -0
- package/dist/core/stdlib/volume/accumulation.d.ts.map +1 -0
- package/dist/core/stdlib/volume/accumulation.js +127 -0
- package/dist/core/stdlib/volume/accumulation.js.map +1 -0
- package/dist/core/stdlib/volume/flow.d.ts +60 -0
- package/dist/core/stdlib/volume/flow.d.ts.map +1 -0
- package/dist/core/stdlib/volume/flow.js +125 -0
- package/dist/core/stdlib/volume/flow.js.map +1 -0
- package/dist/core/stdlib/volume/index.d.ts +5 -0
- package/dist/core/stdlib/volume/index.d.ts.map +1 -0
- package/dist/core/stdlib/volume/index.js +4 -0
- package/dist/core/stdlib/volume/index.js.map +1 -0
- package/dist/core/stdlib/volume/weighted.d.ts +52 -0
- package/dist/core/stdlib/volume/weighted.d.ts.map +1 -0
- package/dist/core/stdlib/volume/weighted.js +64 -0
- package/dist/core/stdlib/volume/weighted.js.map +1 -0
- package/dist/core/version/version.generated.d.ts +2 -2
- package/dist/core/version/version.generated.d.ts.map +1 -1
- package/dist/core/version/version.generated.js +2 -2
- package/dist/core/version/version.generated.js.map +1 -1
- package/package.json +38 -14
- package/spec/errors.json +382 -183
- package/src/adapters/charts/alerts.ts +116 -0
- package/src/adapters/charts/bars.ts +63 -0
- package/src/adapters/charts/candles.ts +137 -0
- package/src/adapters/charts/colours.ts +113 -0
- package/src/adapters/charts/columns.ts +99 -0
- package/src/adapters/charts/contract.ts +320 -0
- package/src/adapters/charts/descriptor.ts +199 -0
- package/src/adapters/charts/drawings.ts +213 -0
- package/src/adapters/charts/errors.ts +45 -0
- package/src/adapters/charts/fields.ts +74 -0
- package/src/adapters/charts/fills.ts +71 -0
- package/src/adapters/charts/index.ts +78 -0
- package/src/adapters/charts/levels.ts +92 -0
- package/src/adapters/charts/markers.ts +119 -0
- package/src/adapters/charts/paint.ts +101 -0
- package/src/adapters/charts/plots.ts +185 -0
- package/src/adapters/charts/produced.ts +68 -0
- package/src/adapters/charts/requests.ts +357 -0
- package/src/adapters/charts/run.ts +327 -0
- package/src/adapters/charts/settings.ts +273 -0
- package/src/adapters/charts/surfaces.ts +238 -0
- package/src/adapters/charts/tables.ts +155 -0
- package/src/core/catalogue/catalogue.generated.ts +17 -9
- package/src/core/catalogue/values.generated.ts +8 -0
- package/src/core/check/arguments.ts +126 -0
- package/src/core/check/call-sites.ts +385 -0
- package/src/core/check/call-warmup.ts +121 -0
- package/src/core/check/calls.ts +412 -0
- package/src/core/check/check.ts +183 -0
- package/src/core/check/checked.ts +228 -0
- package/src/core/check/checker.ts +393 -0
- package/src/core/check/conditional.ts +143 -0
- package/src/core/check/constant.ts +127 -0
- package/src/core/check/declaration.ts +230 -0
- package/src/core/check/expressions.ts +471 -0
- package/src/core/check/functions.ts +283 -0
- package/src/core/check/handles.ts +75 -0
- package/src/core/check/index.ts +67 -0
- package/src/core/check/library-bars.ts +194 -0
- package/src/core/check/library-orders.ts +290 -0
- package/src/core/check/library-output.ts +241 -0
- package/src/core/check/library-series.ts +457 -0
- package/src/core/check/library.ts +374 -0
- package/src/core/check/literals.ts +35 -0
- package/src/core/check/outputs.ts +152 -0
- package/src/core/check/statements.ts +465 -0
- package/src/core/check/suggest.ts +63 -0
- package/src/core/check/surface.ts +115 -0
- package/src/core/check/tags.ts +94 -0
- package/src/core/check/types.ts +260 -0
- package/src/core/check/warmup.ts +100 -0
- package/src/core/diagnostics/collector.ts +27 -1
- package/src/core/emit/calls.ts +415 -0
- package/src/core/emit/canonical.ts +81 -0
- package/src/core/emit/channels.ts +144 -0
- package/src/core/emit/code.ts +155 -0
- package/src/core/emit/colours.ts +75 -0
- package/src/core/emit/context.ts +461 -0
- package/src/core/emit/defaults.ts +150 -0
- package/src/core/emit/emit.ts +313 -0
- package/src/core/emit/events.ts +141 -0
- package/src/core/emit/expressions.ts +292 -0
- package/src/core/emit/functions.ts +195 -0
- package/src/core/emit/gaps.ts +44 -0
- package/src/core/emit/index.ts +74 -0
- package/src/core/emit/inputs.ts +179 -0
- package/src/core/emit/layout.ts +165 -0
- package/src/core/emit/meta.ts +104 -0
- package/src/core/emit/opcodes.ts +160 -0
- package/src/core/emit/outputs.ts +357 -0
- package/src/core/emit/pool.ts +102 -0
- package/src/core/emit/program.ts +385 -0
- package/src/core/emit/registers.ts +179 -0
- package/src/core/emit/request-scope.ts +52 -0
- package/src/core/emit/requests.ts +258 -0
- package/src/core/emit/requires.ts +91 -0
- package/src/core/emit/sha256.ts +119 -0
- package/src/core/emit/statements.ts +438 -0
- package/src/core/emit/values.ts +284 -0
- package/src/core/engine/alerts.ts +152 -0
- package/src/core/engine/arithmetic.ts +165 -0
- package/src/core/engine/bars.ts +224 -0
- package/src/core/engine/budget.ts +284 -0
- package/src/core/engine/channels.ts +171 -0
- package/src/core/engine/drawings.ts +127 -0
- package/src/core/engine/engine.ts +498 -0
- package/src/core/engine/errors.ts +100 -0
- package/src/core/engine/frames.ts +85 -0
- package/src/core/engine/grids.ts +98 -0
- package/src/core/engine/guard.ts +71 -0
- package/src/core/engine/host.ts +251 -0
- package/src/core/engine/index.ts +93 -0
- package/src/core/engine/inputs.ts +263 -0
- package/src/core/engine/ledger/call.ts +218 -0
- package/src/core/engine/ledger/closable.ts +269 -0
- package/src/core/engine/ledger/holdings.ts +354 -0
- package/src/core/engine/ledger/index.ts +28 -0
- package/src/core/engine/ledger/intent.ts +112 -0
- package/src/core/engine/ledger/ledger.ts +314 -0
- package/src/core/engine/ledger/place.ts +277 -0
- package/src/core/engine/ledger/positions.ts +123 -0
- package/src/core/engine/ledger/refuse.ts +378 -0
- package/src/core/engine/ledger/row.ts +318 -0
- package/src/core/engine/ledger/sizing.ts +292 -0
- package/src/core/engine/library/arrays.ts +316 -0
- package/src/core/engine/library/averages.ts +97 -0
- package/src/core/engine/library/binding.ts +325 -0
- package/src/core/engine/library/chart.ts +115 -0
- package/src/core/engine/library/colours.ts +111 -0
- package/src/core/engine/library/dates.ts +109 -0
- package/src/core/engine/library/index.ts +103 -0
- package/src/core/engine/library/maths.ts +134 -0
- package/src/core/engine/library/objects.ts +265 -0
- package/src/core/engine/library/oscillators.ts +124 -0
- package/src/core/engine/library/ranges.ts +51 -0
- package/src/core/engine/library/series.ts +236 -0
- package/src/core/engine/library/state.ts +47 -0
- package/src/core/engine/library/studies.ts +150 -0
- package/src/core/engine/library/text.ts +303 -0
- package/src/core/engine/library/trend.ts +79 -0
- package/src/core/engine/library/volume.ts +101 -0
- package/src/core/engine/load.ts +104 -0
- package/src/core/engine/machine.ts +446 -0
- package/src/core/engine/memory.ts +129 -0
- package/src/core/engine/operations.ts +171 -0
- package/src/core/engine/orders.ts +121 -0
- package/src/core/engine/registers.ts +104 -0
- package/src/core/engine/request-body.ts +328 -0
- package/src/core/engine/request-plan.ts +270 -0
- package/src/core/engine/requests.ts +382 -0
- package/src/core/engine/results.ts +41 -0
- package/src/core/engine/series.ts +82 -0
- package/src/core/engine/session/hours.ts +86 -0
- package/src/core/engine/session/index.ts +17 -0
- package/src/core/engine/session/record.ts +191 -0
- package/src/core/engine/session/spec.ts +45 -0
- package/src/core/engine/timeframe.ts +161 -0
- package/src/core/engine/types.ts +47 -0
- package/src/core/engine/values/heap.ts +295 -0
- package/src/core/engine/values/index.ts +34 -0
- package/src/core/engine/values/value.ts +158 -0
- package/src/core/engine/verify-budgets.ts +202 -0
- package/src/core/engine/verify-code.ts +332 -0
- package/src/core/engine/verify-requests.ts +255 -0
- package/src/core/engine/verify-shape.ts +164 -0
- package/src/core/engine/verify-tables.ts +176 -0
- package/src/core/engine/verify.ts +341 -0
- package/src/core/index.ts +128 -6
- package/src/core/parse/expressions.ts +1 -1
- package/src/core/parse/names.ts +29 -2
- package/src/core/stdlib/averages/exponential.ts +119 -0
- package/src/core/stdlib/averages/index.ts +45 -0
- package/src/core/stdlib/averages/select.ts +71 -0
- package/src/core/stdlib/averages/shaped.ts +161 -0
- package/src/core/stdlib/averages/simple.ts +139 -0
- package/src/core/stdlib/calendar/civil.ts +89 -0
- package/src/core/stdlib/calendar/fields.ts +124 -0
- package/src/core/stdlib/calendar/format.ts +71 -0
- package/src/core/stdlib/calendar/index.ts +15 -0
- package/src/core/stdlib/calendar/zone.ts +161 -0
- package/src/core/stdlib/index.ts +400 -0
- package/src/core/stdlib/maths/arithmetic.ts +74 -0
- package/src/core/stdlib/maths/elementary.ts +124 -0
- package/src/core/stdlib/maths/index.ts +43 -0
- package/src/core/stdlib/maths/rounding.ts +78 -0
- package/src/core/stdlib/momentum/convergence.ts +82 -0
- package/src/core/stdlib/momentum/index.ts +47 -0
- package/src/core/stdlib/momentum/pressure.ts +141 -0
- package/src/core/stdlib/momentum/rates.ts +188 -0
- package/src/core/stdlib/momentum/rsi.ts +49 -0
- package/src/core/stdlib/momentum/stochastic.ts +147 -0
- package/src/core/stdlib/series/changes.ts +177 -0
- package/src/core/stdlib/series/conditions.ts +74 -0
- package/src/core/stdlib/series/extremes.ts +92 -0
- package/src/core/stdlib/series/index.ts +83 -0
- package/src/core/stdlib/series/pivots.ts +63 -0
- package/src/core/stdlib/series/statistics.ts +207 -0
- package/src/core/stdlib/series/totals.ts +164 -0
- package/src/core/stdlib/trend/directional.ts +196 -0
- package/src/core/stdlib/trend/index.ts +13 -0
- package/src/core/stdlib/trend/psar.ts +131 -0
- package/src/core/stdlib/trend/supertrend.ts +100 -0
- package/src/core/stdlib/values/bar.ts +54 -0
- package/src/core/stdlib/values/index.ts +14 -0
- package/src/core/stdlib/values/lookback.ts +198 -0
- package/src/core/stdlib/values/region.ts +86 -0
- package/src/core/stdlib/values/tail.ts +58 -0
- package/src/core/stdlib/values/value.ts +82 -0
- package/src/core/stdlib/volatility/bands.ts +178 -0
- package/src/core/stdlib/volatility/deviation.ts +111 -0
- package/src/core/stdlib/volatility/index.ts +48 -0
- package/src/core/stdlib/volatility/measures.ts +96 -0
- package/src/core/stdlib/volatility/range.ts +143 -0
- package/src/core/stdlib/volume/accumulation.ts +152 -0
- package/src/core/stdlib/volume/flow.ts +173 -0
- package/src/core/stdlib/volume/index.ts +43 -0
- package/src/core/stdlib/volume/weighted.ts +101 -0
- package/src/core/version/version.generated.ts +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volume.js","sourceRoot":"","sources":["../../../../src/core/engine/library/volume.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loading a compiled program, which is everything that happens before bar 0.
|
|
3
|
+
*
|
|
4
|
+
* Separate from the bar cycle because it is a different job with a different
|
|
5
|
+
* failure. A load either refuses, with a code and a reason, or hands back an
|
|
6
|
+
* engine that has already been proved able to run: verification in full
|
|
7
|
+
* (`compiled-program.md` 3.5), then the refusals a host makes, then the
|
|
8
|
+
* settings. Nothing is executed until all three pass, so a program that cannot
|
|
9
|
+
* run says so before a chart has drawn anything, rather than halfway through
|
|
10
|
+
* bar four thousand with half a study on the screen.
|
|
11
|
+
*/
|
|
12
|
+
import type { Diagnostic } from '../diagnostics/index.js';
|
|
13
|
+
import type { SourceFile } from '../source/index.js';
|
|
14
|
+
import type { Clock, EngineLimits } from './budget.js';
|
|
15
|
+
import { Engine } from './engine.js';
|
|
16
|
+
import type { EngineHost } from './host.js';
|
|
17
|
+
import type { TimeResolver } from './inputs.js';
|
|
18
|
+
export interface LoadOptions {
|
|
19
|
+
/** The host's settings, keyed by input `key`. */
|
|
20
|
+
readonly settings?: Readonly<Record<string, unknown>>;
|
|
21
|
+
readonly limits?: Partial<EngineLimits>;
|
|
22
|
+
/** The source, so a diagnostic's span can carry an offset as well as a line. */
|
|
23
|
+
readonly source?: SourceFile;
|
|
24
|
+
readonly host?: EngineHost;
|
|
25
|
+
/** A reading of the wall clock, for the per bar time budget. */
|
|
26
|
+
readonly clock?: Clock;
|
|
27
|
+
/** How a `"time"` input's stored wall clock string becomes a timestamp. */
|
|
28
|
+
readonly time?: TimeResolver;
|
|
29
|
+
}
|
|
30
|
+
export type LoadResult = {
|
|
31
|
+
readonly ok: true;
|
|
32
|
+
readonly engine: Engine;
|
|
33
|
+
} | {
|
|
34
|
+
readonly ok: false;
|
|
35
|
+
readonly diagnostic: Diagnostic;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Loads a compiled program.
|
|
39
|
+
*
|
|
40
|
+
* Verification runs first and in full (3.5), then the refusals a host makes,
|
|
41
|
+
* then input resolution. Nothing is executed until all three pass, so a program
|
|
42
|
+
* that cannot run says so before a chart has drawn anything.
|
|
43
|
+
*/
|
|
44
|
+
export declare function load(program: unknown, options?: LoadOptions): LoadResult;
|
|
45
|
+
//# sourceMappingURL=load.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/core/engine/load.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACxC,gFAAgF;IAChF,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC;AAE5D;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,WAAgB,GAAG,UAAU,CAsD5E"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { BAR_FIELDS } from './bars.js';
|
|
2
|
+
import { limitsWith } from './budget.js';
|
|
3
|
+
import { Engine } from './engine.js';
|
|
4
|
+
import { NO_POSITION, failure, malformed } from './errors.js';
|
|
5
|
+
import { resolveInputs, utcTime } from './inputs.js';
|
|
6
|
+
import { planRequests } from './request-plan.js';
|
|
7
|
+
import { recordProblem } from './session/index.js';
|
|
8
|
+
import { capabilitiesFor, verify } from './verify.js';
|
|
9
|
+
/**
|
|
10
|
+
* Loads a compiled program.
|
|
11
|
+
*
|
|
12
|
+
* Verification runs first and in full (3.5), then the refusals a host makes,
|
|
13
|
+
* then input resolution. Nothing is executed until all three pass, so a program
|
|
14
|
+
* that cannot run says so before a chart has drawn anything.
|
|
15
|
+
*/
|
|
16
|
+
export function load(program, options = {}) {
|
|
17
|
+
const limits = limitsWith(options.limits);
|
|
18
|
+
const host = options.host ?? {};
|
|
19
|
+
const checked = verify(program, {
|
|
20
|
+
capabilities: capabilitiesFor(host.route !== undefined, host.requestBars !== undefined),
|
|
21
|
+
limits,
|
|
22
|
+
});
|
|
23
|
+
if (!checked.ok)
|
|
24
|
+
return { ok: false, diagnostic: checked.diagnostic };
|
|
25
|
+
const unknownField = checked.program.series.find((one) => one.kind === 'bar' && (one.field === null || !BAR_FIELDS.includes(one.field)));
|
|
26
|
+
if (unknownField !== undefined) {
|
|
27
|
+
return {
|
|
28
|
+
ok: false,
|
|
29
|
+
diagnostic: malformed(`series[${unknownField.id}].field`, `${String(unknownField.field)} is not a bar field this engine can fill`),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
// The instrument record is read once and is the same for every program, so a
|
|
33
|
+
// record that contradicts itself is refused here rather than turning into an
|
|
34
|
+
// absence each study explains for itself.
|
|
35
|
+
const record = recordProblem(host.instrument?.session, host.instrument?.timezone ?? null);
|
|
36
|
+
if (record !== undefined) {
|
|
37
|
+
return {
|
|
38
|
+
ok: false,
|
|
39
|
+
diagnostic: failure('OS6012', NO_POSITION, {
|
|
40
|
+
fact: record,
|
|
41
|
+
symbol: host.instrument?.symbol ?? 'the chart\'s instrument',
|
|
42
|
+
}),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const resolved = resolveInputs(checked.program, options.settings ?? {}, options.time ?? utcTime);
|
|
46
|
+
if (!resolved.ok)
|
|
47
|
+
return { ok: false, diagnostic: resolved.diagnostic };
|
|
48
|
+
// 2.16: a request's identity is fixed before bar 0, so it is settled here,
|
|
49
|
+
// along with the two refusals that are facts about the program and the chart
|
|
50
|
+
// rather than answers from the host: a timeframe the language does not know,
|
|
51
|
+
// and one that cannot be folded onto this chart's bars.
|
|
52
|
+
const planned = planRequests(checked.program.requests, resolved.inputs, host);
|
|
53
|
+
if (!planned.ok)
|
|
54
|
+
return { ok: false, diagnostic: planned.diagnostic };
|
|
55
|
+
return {
|
|
56
|
+
ok: true,
|
|
57
|
+
engine: new Engine(checked.program, resolved.inputs, options, limits, planned.plans),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=load.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/core/engine/load.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The interpreter: step 6 of the bar cycle, and the whole architecture of the
|
|
3
|
+
* language in one loop.
|
|
4
|
+
*
|
|
5
|
+
* **It walks a list. There is no `eval`, no generated function and no code
|
|
6
|
+
* built from text anywhere in it**, which is what lets the language run inside
|
|
7
|
+
* an application under a content security policy that forbids turning text into
|
|
8
|
+
* code, and what lets a platform run many customers' scripts in one process.
|
|
9
|
+
* The compiler emits data and this walks it; that is the foundation of the
|
|
10
|
+
* whole design rather than a preference.
|
|
11
|
+
*
|
|
12
|
+
* **What verification already proved, this does not re-check.** A verified
|
|
13
|
+
* program cannot underflow the stack, cannot jump out of bounds, cannot address
|
|
14
|
+
* a slot that does not exist and cannot loop without charging the budget (3.5).
|
|
15
|
+
* So the loop below pops without testing for an empty stack and indexes without
|
|
16
|
+
* testing a bound, and every remaining failure is a script error with a source
|
|
17
|
+
* position, which is the only kind of failure a user should ever see.
|
|
18
|
+
*
|
|
19
|
+
* **The budget is checked on the path every instruction takes.** One increment
|
|
20
|
+
* and one comparison, because the alternative is a loop an engine hopes will
|
|
21
|
+
* end. The loop budget itself is charged by `TICK` and by nothing else, so two
|
|
22
|
+
* engines run out at the same iteration of the same loop on the same bar (8.5).
|
|
23
|
+
*/
|
|
24
|
+
import type { Span } from '../span/index.js';
|
|
25
|
+
import type { Budget } from './budget.js';
|
|
26
|
+
import type { Channels } from './channels.js';
|
|
27
|
+
import type { BarView, Guard, HostFacts, ManifestEntry, PositionFacts } from './library/index.js';
|
|
28
|
+
import type { Memory } from './memory.js';
|
|
29
|
+
import type { Registers } from './registers.js';
|
|
30
|
+
import type { CompiledProgram, Position } from './types.js';
|
|
31
|
+
import type { Heap, Value } from './values/index.js';
|
|
32
|
+
/** Everything the interpreter is handed once, at load. */
|
|
33
|
+
export interface MachineParts {
|
|
34
|
+
readonly program: CompiledProgram;
|
|
35
|
+
readonly registers: Registers;
|
|
36
|
+
readonly memory: Memory;
|
|
37
|
+
readonly channels: Channels;
|
|
38
|
+
readonly heap: Heap;
|
|
39
|
+
readonly budget: Budget;
|
|
40
|
+
readonly guard: Guard;
|
|
41
|
+
readonly host: HostFacts;
|
|
42
|
+
/** The strategy's own position, read from the run's ledger. */
|
|
43
|
+
readonly position: PositionFacts;
|
|
44
|
+
/** The library entry behind each `lib.functions` index, resolved at load. */
|
|
45
|
+
readonly library: readonly ManifestEntry[];
|
|
46
|
+
/** The position table of each function body, by function index. */
|
|
47
|
+
readonly fnPositions: readonly (readonly Position[])[];
|
|
48
|
+
spanAt(line: number, column: number): Span;
|
|
49
|
+
}
|
|
50
|
+
export declare class Machine {
|
|
51
|
+
private readonly parts;
|
|
52
|
+
private readonly top;
|
|
53
|
+
private readonly callers;
|
|
54
|
+
private frame;
|
|
55
|
+
private view;
|
|
56
|
+
private barIndex;
|
|
57
|
+
/** The loop whose `TICK` executed most recently, for OS5001's line. */
|
|
58
|
+
private lastLoop;
|
|
59
|
+
/**
|
|
60
|
+
* The value a top level `RET` handed back, `compiled-program.md` 2.16.1.
|
|
61
|
+
*
|
|
62
|
+
* A program's own `code` ends in `HALT` and produces nothing, so this stays
|
|
63
|
+
* absent for it. A request body ends in `RET` and its value is the read's
|
|
64
|
+
* value for that requested bar, which is the one thing the interpreter has to
|
|
65
|
+
* hand out rather than write into a register or a channel.
|
|
66
|
+
*/
|
|
67
|
+
private returned;
|
|
68
|
+
private readonly ctx;
|
|
69
|
+
private readonly ops;
|
|
70
|
+
constructor(parts: MachineParts, view: BarView);
|
|
71
|
+
/** Step 3: the stack, the slots and the frame stack all start empty. */
|
|
72
|
+
begin(view: BarView, index: number): void;
|
|
73
|
+
/** What the last `run` handed back, for an instruction list that ends in `RET`. */
|
|
74
|
+
result(): Value;
|
|
75
|
+
/** The slot array of frame 0, which inputs and grids are written into. */
|
|
76
|
+
slots(): Value[];
|
|
77
|
+
/** Where the instruction that just executed came from. */
|
|
78
|
+
here(): Span;
|
|
79
|
+
/**
|
|
80
|
+
* Runs the bar.
|
|
81
|
+
*
|
|
82
|
+
* The dispatch is a switch over the opcode name. A name rather than a number
|
|
83
|
+
* is what the format carries (2.14) so that a program is readable and
|
|
84
|
+
* diffable by hand; an engine may map names to its own integers at load and
|
|
85
|
+
* must not depend on any numbering, because none is defined.
|
|
86
|
+
*/
|
|
87
|
+
run(): void;
|
|
88
|
+
private loopLine;
|
|
89
|
+
/** What the operations in `operations.ts` need, built once. */
|
|
90
|
+
private operations;
|
|
91
|
+
/** `ADD` with the string ceiling applied, since it is the one that grows one. */
|
|
92
|
+
private joined;
|
|
93
|
+
/**
|
|
94
|
+
* `CALL_LIB`.
|
|
95
|
+
*
|
|
96
|
+
* A call whose manifest entry carries an effect does not perform it: it
|
|
97
|
+
* appends a record holding the function index and the argument values as they
|
|
98
|
+
* stood, and pushes absent. The machine does that here rather than in the
|
|
99
|
+
* entry, so an effect cannot be forgotten by whoever writes the next one.
|
|
100
|
+
*/
|
|
101
|
+
private callLibrary;
|
|
102
|
+
/** `CALL_FN`: everything it needs is in the call site, 4.10. */
|
|
103
|
+
private callFunction;
|
|
104
|
+
/** The name a value goes by, which a library call asks for by the same route. */
|
|
105
|
+
nameOf(value: Value): string;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=machine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../../src/core/engine/machine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAe7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,KAAK,EACV,OAAO,EAEP,KAAK,EACL,SAAS,EACT,aAAa,EACb,aAAa,EAEd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAU1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAe,QAAQ,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGrD,0DAA0D;AAC1D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC;IACvD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAsBD,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,QAAQ,CAAK;IACrB,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAM;IACtB;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiB;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;gBAEd,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO;IA6B9C,wEAAwE;IACxE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYzC,mFAAmF;IACnF,MAAM,IAAI,KAAK;IAIf,0EAA0E;IAC1E,KAAK,IAAI,KAAK,EAAE;IAIhB,0DAA0D;IAC1D,IAAI,IAAI,IAAI;IAKZ;;;;;;;OAOG;IACH,GAAG,IAAI,IAAI;IA+JX,OAAO,CAAC,QAAQ;IAKhB,+DAA+D;IAC/D,OAAO,CAAC,UAAU;IAalB,iFAAiF;IACjF,OAAO,CAAC,MAAM;IAMd;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IAyBnB,gEAAgE;IAChE,OAAO,CAAC,YAAY;IAoBpB,iFAAiF;IACjF,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;CAG7B"}
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import { add, and, compare, divide, equals, isFalsey, multiply, negate, not, or, remainder, subtract, } from './arithmetic.js';
|
|
2
|
+
import { makeFrame, positionAt } from './frames.js';
|
|
3
|
+
import { constantValueOf, elementRead, forInit, forNext, historyRead, nameOf, } from './operations.js';
|
|
4
|
+
import { ABSENT, reference } from './values/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* The region a stateless call is handed.
|
|
7
|
+
*
|
|
8
|
+
* Shared rather than allocated per call, because an entry declared without
|
|
9
|
+
* state never touches it and an allocation on the path of every `max` and every
|
|
10
|
+
* colour would be the engine's largest per bar cost for nothing.
|
|
11
|
+
*/
|
|
12
|
+
const NO_STATE = {};
|
|
13
|
+
export class Machine {
|
|
14
|
+
parts;
|
|
15
|
+
top;
|
|
16
|
+
callers = [];
|
|
17
|
+
frame;
|
|
18
|
+
view;
|
|
19
|
+
barIndex = 0;
|
|
20
|
+
/** The loop whose `TICK` executed most recently, for OS5001's line. */
|
|
21
|
+
lastLoop = -1;
|
|
22
|
+
/**
|
|
23
|
+
* The value a top level `RET` handed back, `compiled-program.md` 2.16.1.
|
|
24
|
+
*
|
|
25
|
+
* A program's own `code` ends in `HALT` and produces nothing, so this stays
|
|
26
|
+
* absent for it. A request body ends in `RET` and its value is the read's
|
|
27
|
+
* value for that requested bar, which is the one thing the interpreter has to
|
|
28
|
+
* hand out rather than write into a register or a channel.
|
|
29
|
+
*/
|
|
30
|
+
returned = ABSENT;
|
|
31
|
+
ctx;
|
|
32
|
+
ops;
|
|
33
|
+
constructor(parts, view) {
|
|
34
|
+
this.parts = parts;
|
|
35
|
+
this.view = view;
|
|
36
|
+
const { program } = parts;
|
|
37
|
+
this.top = makeFrame(program.code, program.frame.slots, 0, 0, [], program.debug.pos);
|
|
38
|
+
this.frame = this.top;
|
|
39
|
+
this.ops = this.operations();
|
|
40
|
+
// One context, reused by every call, with the two fields that change per
|
|
41
|
+
// call read through getters. A fresh object per `CALL_LIB` would be an
|
|
42
|
+
// allocation on the hottest path in the engine, and the span is a binary
|
|
43
|
+
// search that most calls never ask for.
|
|
44
|
+
const machine = this;
|
|
45
|
+
this.ctx = {
|
|
46
|
+
heap: parts.heap,
|
|
47
|
+
host: parts.host,
|
|
48
|
+
position: parts.position,
|
|
49
|
+
guard: parts.guard,
|
|
50
|
+
state: NO_STATE,
|
|
51
|
+
get span() {
|
|
52
|
+
return machine.here();
|
|
53
|
+
},
|
|
54
|
+
get bar() {
|
|
55
|
+
return machine.view;
|
|
56
|
+
},
|
|
57
|
+
nameOf: (value) => machine.nameOf(value),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/** Step 3: the stack, the slots and the frame stack all start empty. */
|
|
61
|
+
begin(view, index) {
|
|
62
|
+
this.view = view;
|
|
63
|
+
this.barIndex = index;
|
|
64
|
+
this.lastLoop = -1;
|
|
65
|
+
this.returned = ABSENT;
|
|
66
|
+
this.callers.length = 0;
|
|
67
|
+
this.frame = this.top;
|
|
68
|
+
this.top.pc = 0;
|
|
69
|
+
this.top.stack.length = 0;
|
|
70
|
+
this.top.slots.fill(ABSENT);
|
|
71
|
+
}
|
|
72
|
+
/** What the last `run` handed back, for an instruction list that ends in `RET`. */
|
|
73
|
+
result() {
|
|
74
|
+
return this.returned;
|
|
75
|
+
}
|
|
76
|
+
/** The slot array of frame 0, which inputs and grids are written into. */
|
|
77
|
+
slots() {
|
|
78
|
+
return this.top.slots;
|
|
79
|
+
}
|
|
80
|
+
/** Where the instruction that just executed came from. */
|
|
81
|
+
here() {
|
|
82
|
+
const at = positionAt(this.frame.positions, Math.max(this.frame.pc - 1, 0));
|
|
83
|
+
return this.parts.spanAt(at.line, at.column);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Runs the bar.
|
|
87
|
+
*
|
|
88
|
+
* The dispatch is a switch over the opcode name. A name rather than a number
|
|
89
|
+
* is what the format carries (2.14) so that a program is readable and
|
|
90
|
+
* diffable by hand; an engine may map names to its own integers at load and
|
|
91
|
+
* must not depend on any numbering, because none is defined.
|
|
92
|
+
*/
|
|
93
|
+
run() {
|
|
94
|
+
const { budget, channels, memory, registers, heap } = this.parts;
|
|
95
|
+
for (;;) {
|
|
96
|
+
if (budget.step())
|
|
97
|
+
budget.overrun(this.here(), this.loopLine());
|
|
98
|
+
const frame = this.frame;
|
|
99
|
+
const instruction = frame.code[frame.pc];
|
|
100
|
+
frame.pc += 1;
|
|
101
|
+
const stack = frame.stack;
|
|
102
|
+
switch (instruction[0]) {
|
|
103
|
+
case 'CONST':
|
|
104
|
+
stack.push(constantValueOf(this.parts.program.consts[instruction[1]]));
|
|
105
|
+
break;
|
|
106
|
+
case 'DUP':
|
|
107
|
+
stack.push(stack[stack.length - 1] ?? ABSENT);
|
|
108
|
+
break;
|
|
109
|
+
case 'POP':
|
|
110
|
+
stack.pop();
|
|
111
|
+
break;
|
|
112
|
+
case 'LOAD':
|
|
113
|
+
stack.push(frame.slots[instruction[1]] ?? ABSENT);
|
|
114
|
+
break;
|
|
115
|
+
case 'STORE':
|
|
116
|
+
frame.slots[instruction[1]] = pop(stack);
|
|
117
|
+
break;
|
|
118
|
+
case 'CELL_INIT':
|
|
119
|
+
if (memory.initialise(frame.cellBase + instruction[1])) {
|
|
120
|
+
frame.pc = instruction[2];
|
|
121
|
+
}
|
|
122
|
+
break;
|
|
123
|
+
case 'LOADC':
|
|
124
|
+
stack.push(memory.load(frame.cellBase + instruction[1]));
|
|
125
|
+
break;
|
|
126
|
+
case 'STOREC':
|
|
127
|
+
memory.store(frame.cellBase + instruction[1], pop(stack));
|
|
128
|
+
break;
|
|
129
|
+
case 'SLOAD':
|
|
130
|
+
stack.push(registers.get(instruction[1]));
|
|
131
|
+
break;
|
|
132
|
+
case 'SSTORE':
|
|
133
|
+
registers.set(instruction[1], pop(stack));
|
|
134
|
+
break;
|
|
135
|
+
case 'HIST':
|
|
136
|
+
stack.push(historyRead(this.ops, instruction[1], pop(stack)));
|
|
137
|
+
break;
|
|
138
|
+
case 'HISTP':
|
|
139
|
+
stack.push(historyRead(this.ops, frame.series[instruction[1]] ?? -1, pop(stack)));
|
|
140
|
+
break;
|
|
141
|
+
case 'ADD':
|
|
142
|
+
stack.push(this.joined(stack));
|
|
143
|
+
break;
|
|
144
|
+
case 'SUB':
|
|
145
|
+
stack.push(binary(stack, subtract));
|
|
146
|
+
break;
|
|
147
|
+
case 'MUL':
|
|
148
|
+
stack.push(binary(stack, multiply));
|
|
149
|
+
break;
|
|
150
|
+
case 'DIV':
|
|
151
|
+
stack.push(binary(stack, divide));
|
|
152
|
+
break;
|
|
153
|
+
case 'MOD':
|
|
154
|
+
stack.push(binary(stack, remainder));
|
|
155
|
+
break;
|
|
156
|
+
case 'NEG':
|
|
157
|
+
stack.push(negate(pop(stack)));
|
|
158
|
+
break;
|
|
159
|
+
case 'LT':
|
|
160
|
+
case 'LE':
|
|
161
|
+
case 'GT':
|
|
162
|
+
case 'GE': {
|
|
163
|
+
const b = pop(stack);
|
|
164
|
+
stack.push(compare(instruction[0], pop(stack), b));
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
case 'EQ': {
|
|
168
|
+
const b = pop(stack);
|
|
169
|
+
stack.push(equals(pop(stack), b));
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
case 'NE': {
|
|
173
|
+
const b = pop(stack);
|
|
174
|
+
stack.push(!equals(pop(stack), b));
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
case 'NOT':
|
|
178
|
+
stack.push(not(pop(stack)));
|
|
179
|
+
break;
|
|
180
|
+
case 'AND':
|
|
181
|
+
stack.push(binary(stack, and));
|
|
182
|
+
break;
|
|
183
|
+
case 'OR':
|
|
184
|
+
stack.push(binary(stack, or));
|
|
185
|
+
break;
|
|
186
|
+
case 'AND_SHORT':
|
|
187
|
+
if (stack[stack.length - 1] === false)
|
|
188
|
+
frame.pc = instruction[1];
|
|
189
|
+
break;
|
|
190
|
+
case 'OR_SHORT':
|
|
191
|
+
if (stack[stack.length - 1] === true)
|
|
192
|
+
frame.pc = instruction[1];
|
|
193
|
+
break;
|
|
194
|
+
case 'JUMP':
|
|
195
|
+
frame.pc = instruction[1];
|
|
196
|
+
break;
|
|
197
|
+
case 'JUMP_FALSE':
|
|
198
|
+
if (isFalsey(pop(stack)))
|
|
199
|
+
frame.pc = instruction[1];
|
|
200
|
+
break;
|
|
201
|
+
case 'TICK': {
|
|
202
|
+
const loop = instruction[1];
|
|
203
|
+
this.lastLoop = loop;
|
|
204
|
+
budget.tick(this.here(), this.parts.program.loops[loop]?.line ?? 0);
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
case 'FOR_INIT':
|
|
208
|
+
forInit(this.ops, instruction, frame);
|
|
209
|
+
break;
|
|
210
|
+
case 'FOR_NEXT':
|
|
211
|
+
forNext(instruction, frame);
|
|
212
|
+
break;
|
|
213
|
+
case 'ARRAY': {
|
|
214
|
+
const count = instruction[1];
|
|
215
|
+
const items = stack.splice(stack.length - count, count);
|
|
216
|
+
this.parts.guard.array(this.here(), 'the array', items.length);
|
|
217
|
+
stack.push(reference(heap.allocate({ kind: 'array', items })));
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
case 'ELEM': {
|
|
221
|
+
const index = pop(stack);
|
|
222
|
+
stack.push(elementRead(this.ops, pop(stack), index));
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
case 'CALL_LIB':
|
|
226
|
+
this.callLibrary(instruction, stack);
|
|
227
|
+
break;
|
|
228
|
+
case 'CALL_FN':
|
|
229
|
+
this.callFunction(instruction[1], stack);
|
|
230
|
+
break;
|
|
231
|
+
case 'RET': {
|
|
232
|
+
const value = pop(stack);
|
|
233
|
+
const caller = this.callers.pop();
|
|
234
|
+
if (caller === undefined) {
|
|
235
|
+
this.returned = value;
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
this.frame = caller;
|
|
239
|
+
caller.stack.push(value);
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
case 'EMIT':
|
|
243
|
+
channels.write(instruction[1], pop(stack));
|
|
244
|
+
break;
|
|
245
|
+
case 'HALT':
|
|
246
|
+
return;
|
|
247
|
+
default:
|
|
248
|
+
// Unreachable in a verified program: check 2 refused every opcode
|
|
249
|
+
// this switch does not have an arm for.
|
|
250
|
+
throw new Error(`${String(instruction[0])} is not an instruction`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
loopLine() {
|
|
255
|
+
if (this.lastLoop < 0)
|
|
256
|
+
return undefined;
|
|
257
|
+
return this.parts.program.loops[this.lastLoop]?.line;
|
|
258
|
+
}
|
|
259
|
+
/** What the operations in `operations.ts` need, built once. */
|
|
260
|
+
operations() {
|
|
261
|
+
const machine = this;
|
|
262
|
+
return {
|
|
263
|
+
program: this.parts.program,
|
|
264
|
+
registers: this.parts.registers,
|
|
265
|
+
memory: this.parts.memory,
|
|
266
|
+
heap: this.parts.heap,
|
|
267
|
+
slots: this.top.slots,
|
|
268
|
+
here: () => machine.here(),
|
|
269
|
+
barIndex: () => machine.barIndex,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
/** `ADD` with the string ceiling applied, since it is the one that grows one. */
|
|
273
|
+
joined(stack) {
|
|
274
|
+
const b = pop(stack);
|
|
275
|
+
const value = add(pop(stack), b);
|
|
276
|
+
return typeof value === 'string' ? this.parts.guard.string(this.here(), value) : value;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* `CALL_LIB`.
|
|
280
|
+
*
|
|
281
|
+
* A call whose manifest entry carries an effect does not perform it: it
|
|
282
|
+
* appends a record holding the function index and the argument values as they
|
|
283
|
+
* stood, and pushes absent. The machine does that here rather than in the
|
|
284
|
+
* entry, so an effect cannot be forgotten by whoever writes the next one.
|
|
285
|
+
*/
|
|
286
|
+
callLibrary(instruction, stack) {
|
|
287
|
+
const index = instruction[1];
|
|
288
|
+
const count = instruction[2];
|
|
289
|
+
const state = instruction[3];
|
|
290
|
+
const args = stack.splice(stack.length - count, count);
|
|
291
|
+
const of = this.parts.library[index];
|
|
292
|
+
if (of.effect !== 'none') {
|
|
293
|
+
this.parts.channels.defer({
|
|
294
|
+
fn: index,
|
|
295
|
+
name: of.name,
|
|
296
|
+
effect: of.effect,
|
|
297
|
+
args,
|
|
298
|
+
params: of.params,
|
|
299
|
+
at: this.here(),
|
|
300
|
+
});
|
|
301
|
+
stack.push(ABSENT);
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
this.ctx.state =
|
|
305
|
+
state < 0 ? NO_STATE : this.parts.memory.region(this.frame.stateBase + state);
|
|
306
|
+
stack.push(of.call(this.ctx, args));
|
|
307
|
+
}
|
|
308
|
+
/** `CALL_FN`: everything it needs is in the call site, 4.10. */
|
|
309
|
+
callFunction(site, stack) {
|
|
310
|
+
const { program, fnPositions } = this.parts;
|
|
311
|
+
const call = program.callSites[site];
|
|
312
|
+
if (call === undefined)
|
|
313
|
+
return;
|
|
314
|
+
const target = program.functions[call.fn];
|
|
315
|
+
if (target === undefined)
|
|
316
|
+
return;
|
|
317
|
+
const args = stack.splice(stack.length - call.argc, call.argc);
|
|
318
|
+
const frame = makeFrame(target.code, target.slots, call.cellBase, call.stateBase, call.series, fnPositions[call.fn] ?? []);
|
|
319
|
+
for (let i = 0; i < args.length; i += 1)
|
|
320
|
+
frame.slots[i] = args[i] ?? ABSENT;
|
|
321
|
+
this.callers.push(this.frame);
|
|
322
|
+
this.frame = frame;
|
|
323
|
+
}
|
|
324
|
+
/** The name a value goes by, which a library call asks for by the same route. */
|
|
325
|
+
nameOf(value) {
|
|
326
|
+
return nameOf(this.ops, value);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/** The stack cannot be empty here: the verifier's depth walk proved it. */
|
|
330
|
+
function pop(stack) {
|
|
331
|
+
return stack.pop() ?? ABSENT;
|
|
332
|
+
}
|
|
333
|
+
function binary(stack, of) {
|
|
334
|
+
const b = pop(stack);
|
|
335
|
+
return of(pop(stack), b);
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=machine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine.js","sourceRoot":"","sources":["../../../src/core/engine/machine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cells and library state, and the checkpoint that rolls them back.
|
|
3
|
+
*
|
|
4
|
+
* `compiled-program.md` section 6 is one mechanism serving three purposes:
|
|
5
|
+
* making a moving bar idempotent, letting a debugger step backwards, and making
|
|
6
|
+
* a chart replay exact. They are the same problem, and an engine that
|
|
7
|
+
* implements the checkpoint gets all three.
|
|
8
|
+
*
|
|
9
|
+
* **The representation is an undo journal, and the specification allows it.**
|
|
10
|
+
* 6.2 is explicit that an engine may implement a checkpoint as a full copy,
|
|
11
|
+
* copy on write, an undo journal, or nothing at all when it can prove the state
|
|
12
|
+
* is unchanged, because the requirement is the semantics and not the shape. A
|
|
13
|
+
* full copy of every cell and every state region at every bar is a cost
|
|
14
|
+
* proportional to the program on a bar that changed one number, and a live
|
|
15
|
+
* chart pays it on every tick. So a cell's previous value is recorded the first
|
|
16
|
+
* time a bar writes it and a state region is copied the first time a bar
|
|
17
|
+
* touches it, and a bar that changes nothing costs nothing at all.
|
|
18
|
+
*
|
|
19
|
+
* **`live var` is the one exception, and it is the whole of 6.3.** Everything
|
|
20
|
+
* else rolls back, so executing a moving bar ten times gives the same answer as
|
|
21
|
+
* executing it once. A `"live"` cell keeps its current value, which is what
|
|
22
|
+
* makes a script using one not reproducible by design. Its previous value is
|
|
23
|
+
* still recorded, because a debugger stepping backwards has to be able to show
|
|
24
|
+
* what the value actually was rather than what a replay would recompute.
|
|
25
|
+
*/
|
|
26
|
+
import type { StateRecord } from './library/index.js';
|
|
27
|
+
import type { Cell, StateRegion } from './types.js';
|
|
28
|
+
import type { Value } from './values/index.js';
|
|
29
|
+
export declare class Memory {
|
|
30
|
+
private readonly values;
|
|
31
|
+
private readonly initialised;
|
|
32
|
+
private readonly live;
|
|
33
|
+
private readonly regions;
|
|
34
|
+
private readonly undoCells;
|
|
35
|
+
private readonly undoRegions;
|
|
36
|
+
constructor(cells: readonly Cell[], states: readonly StateRegion[]);
|
|
37
|
+
/**
|
|
38
|
+
* `CELL_INIT`: whether the cell is already initialised.
|
|
39
|
+
*
|
|
40
|
+
* The cell is marked before the initialiser runs, not after. The two differ
|
|
41
|
+
* only if the initialiser could reach the same `CELL_INIT` again, which needs
|
|
42
|
+
* recursion, which is an error; marking first means the flag is set by one
|
|
43
|
+
* instruction rather than by a pair that must stay together across a jump.
|
|
44
|
+
*/
|
|
45
|
+
initialise(cell: number): boolean;
|
|
46
|
+
load(cell: number): Value;
|
|
47
|
+
store(cell: number, value: Value): void;
|
|
48
|
+
/** The region a `CALL_LIB` names, created on first use and kept across bars. */
|
|
49
|
+
region(index: number): StateRecord;
|
|
50
|
+
private recordCell;
|
|
51
|
+
/** What each cell held when this bar began, which is what a debugger shows. */
|
|
52
|
+
previousCells(): ReadonlyMap<number, Value>;
|
|
53
|
+
/** 6.3: restore the checkpoint, except that `"live"` cells keep their value. */
|
|
54
|
+
rollback(): void;
|
|
55
|
+
/** The checkpoint at the end of this bar: everything since is accepted. */
|
|
56
|
+
commit(): void;
|
|
57
|
+
/** Every value a cell holds, for the heap's reachability walk. */
|
|
58
|
+
walk(visit: (value: Value) => void): void;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=memory.d.ts.map
|