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,280 @@
|
|
|
1
|
+
import { conditionalCalls } from './conditional.js';
|
|
2
|
+
import { libraryNames } from './surface.js';
|
|
3
|
+
import { closestName } from './suggest.js';
|
|
4
|
+
import { UNKNOWN } from './types.js';
|
|
5
|
+
import { BAR_ZERO } from './warmup.js';
|
|
6
|
+
export const TOP_LEVEL = {
|
|
7
|
+
topLevel: true,
|
|
8
|
+
construct: undefined,
|
|
9
|
+
inLoop: false,
|
|
10
|
+
};
|
|
11
|
+
export class Checker {
|
|
12
|
+
file;
|
|
13
|
+
sink;
|
|
14
|
+
script;
|
|
15
|
+
/** The file scope, which is also where a `fn` puts its name. */
|
|
16
|
+
fileScope;
|
|
17
|
+
scope;
|
|
18
|
+
declaration = undefined;
|
|
19
|
+
inputs = [];
|
|
20
|
+
outputs = [];
|
|
21
|
+
functions = [];
|
|
22
|
+
bindings = [];
|
|
23
|
+
calls = [];
|
|
24
|
+
requests = [];
|
|
25
|
+
types = new Map();
|
|
26
|
+
warmups = new Map();
|
|
27
|
+
/**
|
|
28
|
+
* The expressions a declaration handle is allowed to stand in, 5.4.
|
|
29
|
+
*
|
|
30
|
+
* `handles.ts` holds the rule and fills this. It is a set of permissions
|
|
31
|
+
* rather than a flag on the pass, because the permission belongs to one
|
|
32
|
+
* written expression: `fill(upper, lower)` may name a handle, and an
|
|
33
|
+
* expression inside one of those arguments may not.
|
|
34
|
+
*/
|
|
35
|
+
handleSites = new Set();
|
|
36
|
+
references = new Map();
|
|
37
|
+
targets = new Map();
|
|
38
|
+
callSites = new Map();
|
|
39
|
+
/**
|
|
40
|
+
* The multi-output call a name holds, by binding, for `m[1]`.
|
|
41
|
+
*
|
|
42
|
+
* A warmup is recorded against an expression, and an element's warmup is not
|
|
43
|
+
* a fact about the array expression: it is a fact about the call the name was
|
|
44
|
+
* given, which `m[1]` has to reach two statements later. Only the calls whose
|
|
45
|
+
* outputs warm up at different bars are kept, because for every other one the
|
|
46
|
+
* array's warmup is already the element's.
|
|
47
|
+
*/
|
|
48
|
+
multiOutputs = new Map();
|
|
49
|
+
/** The declarations of every `fn`, collected before any body is checked. */
|
|
50
|
+
functionsByName = new Map();
|
|
51
|
+
functionNodes = new Map();
|
|
52
|
+
/** Bodies already checked, and the ones being checked, so a cycle stops. */
|
|
53
|
+
checkedFunctions = new Set();
|
|
54
|
+
checkingFunctions = new Set();
|
|
55
|
+
repaints = false;
|
|
56
|
+
stateCount = 0;
|
|
57
|
+
/** How deep inside a `req` expression the pass is, `stdlib.md` 15.4. */
|
|
58
|
+
requestDepth = 0;
|
|
59
|
+
/** The function whose body is being checked, for its own statefulness. */
|
|
60
|
+
currentFunction = undefined;
|
|
61
|
+
/** What the body being checked returns, gathered as the `return`s are met. */
|
|
62
|
+
pendingReturns = [];
|
|
63
|
+
/** Every call site a bar can pass without evaluating, `language.md` 11.4. */
|
|
64
|
+
conditional;
|
|
65
|
+
constructor(file, script, sink) {
|
|
66
|
+
this.file = file;
|
|
67
|
+
this.script = script;
|
|
68
|
+
this.sink = sink;
|
|
69
|
+
this.fileScope = { kind: 'file', names: new Map(), parent: undefined, loopVariable: undefined };
|
|
70
|
+
this.scope = this.fileScope;
|
|
71
|
+
this.conditional = conditionalCalls(script);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Whether this call site can be skipped on a bar, which is what OS8001 asks.
|
|
75
|
+
*
|
|
76
|
+
* Asked of the call rather than of the pass that reached it, so the answer is
|
|
77
|
+
* the same wherever the call was written: inside an `if`, in a ternary arm,
|
|
78
|
+
* or on the right of an `and` that short-circuited.
|
|
79
|
+
*/
|
|
80
|
+
isConditional(call) {
|
|
81
|
+
return this.conditional.has(call);
|
|
82
|
+
}
|
|
83
|
+
report(code, span, values) {
|
|
84
|
+
this.sink.report(code, span, values);
|
|
85
|
+
}
|
|
86
|
+
/** The source text a span covers, for the codes that quote what was written. */
|
|
87
|
+
textOf(span) {
|
|
88
|
+
return this.file.text.slice(span.offset, span.offset + span.length).trim();
|
|
89
|
+
}
|
|
90
|
+
/** Opens a scope, runs the body in it, and closes it however the body ends. */
|
|
91
|
+
inScope(kind, loopVariable, body) {
|
|
92
|
+
const parent = this.scope;
|
|
93
|
+
this.scope = { kind, names: new Map(), parent, loopVariable };
|
|
94
|
+
try {
|
|
95
|
+
return body();
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
this.scope = parent;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The declaration a name means here, and whether a function body stands
|
|
103
|
+
* between the two.
|
|
104
|
+
*
|
|
105
|
+
* A plain assignment updates an enclosing name (`language.md` 12.2), and a
|
|
106
|
+
* function body is the one place that does not hold: 12.3's own example makes
|
|
107
|
+
* an assignment to a file-scope name from inside a `fn` OS2002.
|
|
108
|
+
*/
|
|
109
|
+
lookupAcross(name) {
|
|
110
|
+
let crossedFunction = false;
|
|
111
|
+
for (let scope = this.scope; scope !== undefined; scope = scope.parent) {
|
|
112
|
+
const found = scope.names.get(name);
|
|
113
|
+
if (found !== undefined)
|
|
114
|
+
return { binding: found, crossedFunction };
|
|
115
|
+
if (scope.kind === 'function')
|
|
116
|
+
crossedFunction = true;
|
|
117
|
+
}
|
|
118
|
+
return { binding: undefined, crossedFunction };
|
|
119
|
+
}
|
|
120
|
+
/** The declaration a name means here, or nothing when no scope holds it. */
|
|
121
|
+
lookup(name) {
|
|
122
|
+
for (let scope = this.scope; scope !== undefined; scope = scope.parent) {
|
|
123
|
+
const found = scope.names.get(name);
|
|
124
|
+
if (found !== undefined)
|
|
125
|
+
return found;
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
/** Whether an enclosing scope already holds the name, which is OS2002. */
|
|
130
|
+
enclosing(name) {
|
|
131
|
+
for (let scope = this.scope.parent; scope !== undefined; scope = scope.parent) {
|
|
132
|
+
const found = scope.names.get(name);
|
|
133
|
+
if (found !== undefined)
|
|
134
|
+
return found;
|
|
135
|
+
}
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
/** Whether the name belongs to the loop being executed, `language.md` 10.3. */
|
|
139
|
+
loopVariableNamed(name) {
|
|
140
|
+
for (let scope = this.scope; scope !== undefined; scope = scope.parent) {
|
|
141
|
+
if (scope.loopVariable === name)
|
|
142
|
+
return true;
|
|
143
|
+
if (scope.names.has(name))
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
/** Declares a name in the current scope and records it in the checked tree. */
|
|
149
|
+
declare(name, kind, type, warmup, persistence = 'none') {
|
|
150
|
+
const binding = {
|
|
151
|
+
id: this.bindings.length,
|
|
152
|
+
name: name.text,
|
|
153
|
+
kind,
|
|
154
|
+
persistence,
|
|
155
|
+
type,
|
|
156
|
+
warmup,
|
|
157
|
+
storage: storageFor(kind, persistence),
|
|
158
|
+
declaredAt: name.span,
|
|
159
|
+
readsHistory: false,
|
|
160
|
+
isRead: false,
|
|
161
|
+
input: undefined,
|
|
162
|
+
handle: undefined,
|
|
163
|
+
};
|
|
164
|
+
this.bindings.push(binding);
|
|
165
|
+
this.scope.names.set(name.text, binding);
|
|
166
|
+
this.targets.set(name, binding);
|
|
167
|
+
return binding;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Remembers, or forgets, the multi-output call a name was just given.
|
|
171
|
+
*
|
|
172
|
+
* Forgetting on a reassignment rather than keeping the first call is what
|
|
173
|
+
* stops `m[1]` from being answered about a call the name no longer holds:
|
|
174
|
+
* the array's own warmup is the fallback, and it is a floor for every
|
|
175
|
+
* element.
|
|
176
|
+
*/
|
|
177
|
+
holdsMultiOutput(binding, call) {
|
|
178
|
+
if (call === undefined || call.entry === undefined || call.entry.elements.length === 0) {
|
|
179
|
+
this.multiOutputs.delete(binding);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
this.multiOutputs.set(binding, call);
|
|
183
|
+
}
|
|
184
|
+
/** The multi-output call this name holds here, when it holds one. */
|
|
185
|
+
multiOutputOf(name) {
|
|
186
|
+
const binding = this.lookup(name);
|
|
187
|
+
return binding === undefined ? undefined : this.multiOutputs.get(binding.id);
|
|
188
|
+
}
|
|
189
|
+
record(expression, type, warmup) {
|
|
190
|
+
this.types.set(expression, type);
|
|
191
|
+
this.warmups.set(expression, warmup);
|
|
192
|
+
return type;
|
|
193
|
+
}
|
|
194
|
+
typeOf(expression) {
|
|
195
|
+
return this.types.get(expression) ?? UNKNOWN;
|
|
196
|
+
}
|
|
197
|
+
warmupOf(expression) {
|
|
198
|
+
return this.warmups.get(expression) ?? BAR_ZERO;
|
|
199
|
+
}
|
|
200
|
+
/** Every name a reader could have meant here: the scopes, then the library. */
|
|
201
|
+
namesInScope() {
|
|
202
|
+
const names = new Set();
|
|
203
|
+
for (let scope = this.scope; scope !== undefined; scope = scope.parent) {
|
|
204
|
+
for (const name of scope.names.keys())
|
|
205
|
+
names.add(name);
|
|
206
|
+
}
|
|
207
|
+
for (const name of libraryNames())
|
|
208
|
+
names.add(name);
|
|
209
|
+
return [...names];
|
|
210
|
+
}
|
|
211
|
+
suggestionFor(written) {
|
|
212
|
+
return closestName(written, this.namesInScope());
|
|
213
|
+
}
|
|
214
|
+
/** A state region for one call site, `compiled-program.md` 2.11. */
|
|
215
|
+
takeStateId() {
|
|
216
|
+
const id = this.stateCount;
|
|
217
|
+
this.stateCount += 1;
|
|
218
|
+
return id;
|
|
219
|
+
}
|
|
220
|
+
finish() {
|
|
221
|
+
return {
|
|
222
|
+
script: this.script,
|
|
223
|
+
declaration: this.declaration,
|
|
224
|
+
inputs: this.inputs,
|
|
225
|
+
outputs: this.outputs,
|
|
226
|
+
functions: this.functions,
|
|
227
|
+
bindings: this.bindings,
|
|
228
|
+
calls: this.calls,
|
|
229
|
+
requests: this.requests,
|
|
230
|
+
repaints: this.repaints,
|
|
231
|
+
stateCount: this.stateCount,
|
|
232
|
+
types: this.types,
|
|
233
|
+
warmups: this.warmups,
|
|
234
|
+
references: this.references,
|
|
235
|
+
targets: this.targets,
|
|
236
|
+
callSites: this.callSites,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* OS7001: a name the library gives only to a file declared with `strategy()`.
|
|
242
|
+
*
|
|
243
|
+
* The message names the line of the `study()` declaration rather than the call,
|
|
244
|
+
* because that is the line the reader has to change: the call is what they
|
|
245
|
+
* meant, and the declaration is what refuses it.
|
|
246
|
+
*/
|
|
247
|
+
export function reportStrategyOnly(checker, name, span, strategyOnly) {
|
|
248
|
+
const declaration = checker.declaration;
|
|
249
|
+
if (!strategyOnly || declaration === undefined || declaration.form === 'strategy')
|
|
250
|
+
return;
|
|
251
|
+
checker.report('OS7001', span, { name, line: declaration.node.span.line });
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Where a name's value lives between bars.
|
|
255
|
+
*
|
|
256
|
+
* A top-level name starts in a slot and is moved to a register only when the
|
|
257
|
+
* program turns out to read its history, which the checker knows by the end and
|
|
258
|
+
* `finaliseStorage` applies. Everything below the top level is a slot, and a
|
|
259
|
+
* `var` is a cell whatever scope it was written in.
|
|
260
|
+
*/
|
|
261
|
+
function storageFor(kind, persistence) {
|
|
262
|
+
if (persistence !== 'none')
|
|
263
|
+
return 'cell';
|
|
264
|
+
return kind === 'library' || kind === 'function' ? 'none' : 'slot';
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Promotes the top-level names whose history is read to series registers.
|
|
268
|
+
*
|
|
269
|
+
* `compiled-program.md` 2.10 allocates a register only for a name the program
|
|
270
|
+
* reads the past of, and this is the one place that decides it, once every read
|
|
271
|
+
* in the file has been seen.
|
|
272
|
+
*/
|
|
273
|
+
export function finaliseStorage(checker) {
|
|
274
|
+
for (const binding of checker.bindings) {
|
|
275
|
+
if (binding.readsHistory && binding.kind === 'file' && binding.persistence === 'none') {
|
|
276
|
+
binding.storage = 'register';
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../../../src/core/check/checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which call sites do not run on every bar.
|
|
3
|
+
*
|
|
4
|
+
* `language.md` 11.4 states its rule about a call site rather than about a
|
|
5
|
+
* statement: a call site that does not execute on a bar leaves its series
|
|
6
|
+
* absent for that bar and its state untouched. OS8001 is the warning for a
|
|
7
|
+
* stateful call written in one, so what the warning needs is a fact about where
|
|
8
|
+
* a call sits in the tree, and that is the whole of what this file works out.
|
|
9
|
+
*
|
|
10
|
+
* It is a file rather than a flag carried down the passes because the passes
|
|
11
|
+
* are the wrong place to keep it. Two of the constructs that skip an operand
|
|
12
|
+
* are operators rather than statements: the ternary evaluates only the taken
|
|
13
|
+
* arm (9.5), and `and` and `or` evaluate the right operand only when it can
|
|
14
|
+
* change the answer (9.4). A third is inside a statement the pass does walk,
|
|
15
|
+
* where it walks only the bodies: a branch after the first is reached only when
|
|
16
|
+
* every condition above it was false, so an `else if` condition and a later
|
|
17
|
+
* `case` arm's values are skipped as readily as the bodies are (10.2 and 10.6).
|
|
18
|
+
* What an analysis misses there is silent: a real number computed from a subset
|
|
19
|
+
* of the bars and drawn as though it came from all of them.
|
|
20
|
+
*
|
|
21
|
+
* So the question is asked once, of the tree, through the one traversal in
|
|
22
|
+
* `childrenOf`. `reachOf` says how a node reaches each of its children and has
|
|
23
|
+
* no default arm, which means a node kind added to the language stops the build
|
|
24
|
+
* here, at the one place that has to decide whether it can skip a child.
|
|
25
|
+
*/
|
|
26
|
+
import type { Call, Script } from '../ast/index.js';
|
|
27
|
+
/**
|
|
28
|
+
* Every call site in the file that a bar can pass without evaluating.
|
|
29
|
+
*
|
|
30
|
+
* Calls rather than nodes, because a call site is what 11.4 is about and what
|
|
31
|
+
* holds state. Kept as the nodes themselves rather than as spans, so the answer
|
|
32
|
+
* cannot drift from the tree the checker is walking.
|
|
33
|
+
*/
|
|
34
|
+
export declare function conditionalCalls(script: Script): ReadonlySet<Call>;
|
|
35
|
+
//# sourceMappingURL=conditional.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional.d.ts","sourceRoot":"","sources":["../../../src/core/check/conditional.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAa7D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAIlE"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { childrenOf } from '../ast/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Every call site in the file that a bar can pass without evaluating.
|
|
4
|
+
*
|
|
5
|
+
* Calls rather than nodes, because a call site is what 11.4 is about and what
|
|
6
|
+
* holds state. Kept as the nodes themselves rather than as spans, so the answer
|
|
7
|
+
* cannot drift from the tree the checker is walking.
|
|
8
|
+
*/
|
|
9
|
+
export function conditionalCalls(script) {
|
|
10
|
+
const found = new Set();
|
|
11
|
+
collect(script, false, found);
|
|
12
|
+
return found;
|
|
13
|
+
}
|
|
14
|
+
function collect(node, conditional, found) {
|
|
15
|
+
if (conditional && node.kind === 'call')
|
|
16
|
+
found.add(node);
|
|
17
|
+
for (const child of childrenOf(node)) {
|
|
18
|
+
const reach = reachOf(node, child);
|
|
19
|
+
collect(child, reach === 'apart' ? false : conditional || reach === 'sometimes', found);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function reachOf(node, child) {
|
|
23
|
+
switch (node.kind) {
|
|
24
|
+
// 9.5: only the taken arm is evaluated. Both arms and not only the true
|
|
25
|
+
// one, because a stateful call in the false arm advances only on the bars
|
|
26
|
+
// the condition failed, which is the same defect wearing the other sign.
|
|
27
|
+
case 'ternary':
|
|
28
|
+
return child === node.condition ? 'always' : 'sometimes';
|
|
29
|
+
// 9.4: `and` and `or` evaluate the right operand only when it can change
|
|
30
|
+
// the answer. Every other operator evaluates both sides.
|
|
31
|
+
case 'binary':
|
|
32
|
+
return child === node.right && (node.operator === 'and' || node.operator === 'or')
|
|
33
|
+
? 'sometimes'
|
|
34
|
+
: 'always';
|
|
35
|
+
// 10.2: the first branch is reached on every bar the `if` is, and a branch
|
|
36
|
+
// after it only when every condition above it was false. A later condition
|
|
37
|
+
// is inside that, which is why the whole branch is answered for here and
|
|
38
|
+
// its body separately below.
|
|
39
|
+
case 'ifStatement':
|
|
40
|
+
return child === node.branches[0] ? 'always' : 'sometimes';
|
|
41
|
+
case 'ifBranch':
|
|
42
|
+
return child === node.condition ? 'always' : 'sometimes';
|
|
43
|
+
case 'elseBranch':
|
|
44
|
+
return 'always';
|
|
45
|
+
// 10.6: the same shape. The subject is evaluated once and the first arm's
|
|
46
|
+
// values are compared on every bar, but a later arm is reached only when
|
|
47
|
+
// nothing above it matched. Values within one arm are all evaluated.
|
|
48
|
+
case 'switchStatement':
|
|
49
|
+
return child === node.subject || child === node.cases[0] ? 'always' : 'sometimes';
|
|
50
|
+
case 'switchCase':
|
|
51
|
+
return child === node.body ? 'sometimes' : 'always';
|
|
52
|
+
case 'switchDefault':
|
|
53
|
+
return 'always';
|
|
54
|
+
// 10.3 and 10.4: a loop body may run no times at all, and what decides how
|
|
55
|
+
// many times it runs is evaluated before it does.
|
|
56
|
+
case 'forRangeStatement':
|
|
57
|
+
case 'forInStatement':
|
|
58
|
+
case 'whileStatement':
|
|
59
|
+
return child === node.body ? 'sometimes' : 'always';
|
|
60
|
+
// 11.4: state is allocated per call site, so the calls in a body belong to
|
|
61
|
+
// whoever calls the function.
|
|
62
|
+
case 'functionDeclaration':
|
|
63
|
+
return 'apart';
|
|
64
|
+
// Everything else evaluates every child it has, every time it is reached.
|
|
65
|
+
// A call evaluates each of its arguments, including the expression a `req`
|
|
66
|
+
// reads, which runs on every bar of the series it is read against.
|
|
67
|
+
case 'script':
|
|
68
|
+
case 'parameter':
|
|
69
|
+
case 'versionLine':
|
|
70
|
+
case 'scriptDeclaration':
|
|
71
|
+
case 'limitsLine':
|
|
72
|
+
case 'block':
|
|
73
|
+
case 'expressionStatement':
|
|
74
|
+
case 'assignment':
|
|
75
|
+
case 'varDeclaration':
|
|
76
|
+
case 'breakStatement':
|
|
77
|
+
case 'continueStatement':
|
|
78
|
+
case 'returnStatement':
|
|
79
|
+
case 'numberLiteral':
|
|
80
|
+
case 'stringLiteral':
|
|
81
|
+
case 'booleanLiteral':
|
|
82
|
+
case 'colorLiteral':
|
|
83
|
+
case 'noneLiteral':
|
|
84
|
+
case 'nameReference':
|
|
85
|
+
case 'missingExpression':
|
|
86
|
+
case 'arrayLiteral':
|
|
87
|
+
case 'grouping':
|
|
88
|
+
case 'unary':
|
|
89
|
+
case 'call':
|
|
90
|
+
case 'argument':
|
|
91
|
+
case 'index':
|
|
92
|
+
case 'member':
|
|
93
|
+
case 'namedType':
|
|
94
|
+
case 'seriesType':
|
|
95
|
+
case 'arrayType':
|
|
96
|
+
case 'name':
|
|
97
|
+
return 'always';
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=conditional.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional.js","sourceRoot":"","sources":["../../../src/core/check/conditional.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether an expression is settled before the first bar runs.
|
|
3
|
+
*
|
|
4
|
+
* `language.md` 13.2 states the rule once and every option, declaration field
|
|
5
|
+
* and marker argument follows it: a literal, arithmetic over literals, or a
|
|
6
|
+
* call to `input()`. A settings dialog and a legend are built before bar 0, so
|
|
7
|
+
* a field that depended on a bar could not be filled in at the moment the host
|
|
8
|
+
* needs it, and that is OS3003.
|
|
9
|
+
*
|
|
10
|
+
* An `input()` counts because it is resolved before bar 0 as well. The name a
|
|
11
|
+
* script assigns an input to counts for the same reason, which is what lets
|
|
12
|
+
* `table(position = corner)` work with `corner` declared above it.
|
|
13
|
+
*
|
|
14
|
+
* So does a colour built out of constants, which is the one call in the library
|
|
15
|
+
* whose result is settled before bar 0 as surely as a literal is. `fade(red, 50)`
|
|
16
|
+
* is the same four numbers on every bar, it is what a level and a marker are
|
|
17
|
+
* normally coloured with, and refusing it would leave a script no way to write a
|
|
18
|
+
* translucent colour in a field that has to be fixed.
|
|
19
|
+
*/
|
|
20
|
+
import type { Expression } from '../ast/index.js';
|
|
21
|
+
import type { Checker } from './checker.js';
|
|
22
|
+
/**
|
|
23
|
+
* The calls that produce a value before the first bar, `stdlib.md` 11.2.
|
|
24
|
+
*
|
|
25
|
+
* A colour built out of constants is a constant: `fade(red, 50)` is the same
|
|
26
|
+
* four numbers on every bar, and a level or a marker declared with one has a
|
|
27
|
+
* colour to carry. The list is here, beside the rule, because the compiler folds
|
|
28
|
+
* exactly these and the two have to be one list rather than two. A call this
|
|
29
|
+
* accepted and the emitter could not fold would reach a declaration field with
|
|
30
|
+
* nothing to write in it, and the compiler would have to refuse a script that
|
|
31
|
+
* the checker had already passed.
|
|
32
|
+
*/
|
|
33
|
+
export declare const FOLDABLE_CALLS: ReadonlySet<string>;
|
|
34
|
+
export declare function isCompileTimeConstant(checker: Checker, expression: Expression): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Whether the expression names one of the price series an `input` may default
|
|
37
|
+
* to, `stdlib.md` 13.1.
|
|
38
|
+
*
|
|
39
|
+
* A source input is the one place a bar series stands where a constant is
|
|
40
|
+
* otherwise required: `input(close, "Source")` does not read `close`, it names
|
|
41
|
+
* which column the study is to read, and the host resolves that before bar 0
|
|
42
|
+
* exactly as it resolves a number.
|
|
43
|
+
*/
|
|
44
|
+
export declare function isSourceName(expression: Expression): boolean;
|
|
45
|
+
/** The dotted name a callee spells, or nothing when it is not a name at all. */
|
|
46
|
+
export declare function calleeNameOf(callee: Expression): string | undefined;
|
|
47
|
+
//# sourceMappingURL=constant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../../../src/core/check/constant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAM5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAO7C,CAAC;AAEH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CA4CvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAG5D;AAiBD,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAEnE"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { withoutGrouping } from '../ast/index.js';
|
|
2
|
+
import { inputHeldBy } from './checked.js';
|
|
3
|
+
import { BAR_SERIES } from './surface.js';
|
|
4
|
+
/** The names `math` holds that are numbers rather than functions. */
|
|
5
|
+
const CONSTANT_MEMBERS = new Set(['math.pi', 'math.e']);
|
|
6
|
+
/**
|
|
7
|
+
* The calls that produce a value before the first bar, `stdlib.md` 11.2.
|
|
8
|
+
*
|
|
9
|
+
* A colour built out of constants is a constant: `fade(red, 50)` is the same
|
|
10
|
+
* four numbers on every bar, and a level or a marker declared with one has a
|
|
11
|
+
* colour to carry. The list is here, beside the rule, because the compiler folds
|
|
12
|
+
* exactly these and the two have to be one list rather than two. A call this
|
|
13
|
+
* accepted and the emitter could not fold would reach a declaration field with
|
|
14
|
+
* nothing to write in it, and the compiler would have to refuse a script that
|
|
15
|
+
* the checker had already passed.
|
|
16
|
+
*/
|
|
17
|
+
export const FOLDABLE_CALLS = new Set([
|
|
18
|
+
'rgb',
|
|
19
|
+
'rgba',
|
|
20
|
+
'fade',
|
|
21
|
+
'withAlpha',
|
|
22
|
+
'alpha',
|
|
23
|
+
'mix',
|
|
24
|
+
]);
|
|
25
|
+
export function isCompileTimeConstant(checker, expression) {
|
|
26
|
+
const inner = withoutGrouping(expression);
|
|
27
|
+
switch (inner.kind) {
|
|
28
|
+
case 'numberLiteral':
|
|
29
|
+
case 'stringLiteral':
|
|
30
|
+
case 'booleanLiteral':
|
|
31
|
+
case 'colorLiteral':
|
|
32
|
+
case 'noneLiteral':
|
|
33
|
+
return true;
|
|
34
|
+
case 'arrayLiteral':
|
|
35
|
+
return inner.elements.every((element) => isCompileTimeConstant(checker, element));
|
|
36
|
+
case 'unary':
|
|
37
|
+
return isCompileTimeConstant(checker, inner.operand);
|
|
38
|
+
case 'binary':
|
|
39
|
+
return (isCompileTimeConstant(checker, inner.left) && isCompileTimeConstant(checker, inner.right));
|
|
40
|
+
case 'ternary':
|
|
41
|
+
return (isCompileTimeConstant(checker, inner.condition) &&
|
|
42
|
+
isCompileTimeConstant(checker, inner.whenTrue) &&
|
|
43
|
+
isCompileTimeConstant(checker, inner.whenFalse));
|
|
44
|
+
case 'nameReference': {
|
|
45
|
+
const binding = checker.lookup(inner.name);
|
|
46
|
+
// A name that holds a setting is one, and a `var` initialised from one is
|
|
47
|
+
// not: the cell is the setting's value on the first bar and whatever the
|
|
48
|
+
// bar puts in it after that, so it is fixed before bar 0 only until
|
|
49
|
+
// something assigns to it (`language.md` 8.2 and 13.4).
|
|
50
|
+
if (binding !== undefined)
|
|
51
|
+
return inputHeldBy(binding) !== undefined;
|
|
52
|
+
// A colour name is an ordinary global of type `color` and never changes.
|
|
53
|
+
return checker.typeOf(inner).kind === 'color';
|
|
54
|
+
}
|
|
55
|
+
case 'member':
|
|
56
|
+
return CONSTANT_MEMBERS.has(memberPath(inner.object, inner.member.text));
|
|
57
|
+
case 'call': {
|
|
58
|
+
const name = calleeName(inner.callee);
|
|
59
|
+
if (name === 'input')
|
|
60
|
+
return true;
|
|
61
|
+
if (name === undefined || !FOLDABLE_CALLS.has(name))
|
|
62
|
+
return false;
|
|
63
|
+
return inner.args.every((argument) => isCompileTimeConstant(checker, argument.value));
|
|
64
|
+
}
|
|
65
|
+
default:
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Whether the expression names one of the price series an `input` may default
|
|
71
|
+
* to, `stdlib.md` 13.1.
|
|
72
|
+
*
|
|
73
|
+
* A source input is the one place a bar series stands where a constant is
|
|
74
|
+
* otherwise required: `input(close, "Source")` does not read `close`, it names
|
|
75
|
+
* which column the study is to read, and the host resolves that before bar 0
|
|
76
|
+
* exactly as it resolves a number.
|
|
77
|
+
*/
|
|
78
|
+
export function isSourceName(expression) {
|
|
79
|
+
const inner = withoutGrouping(expression);
|
|
80
|
+
return inner.kind === 'nameReference' && BAR_SERIES.includes(inner.name);
|
|
81
|
+
}
|
|
82
|
+
function memberPath(object, member) {
|
|
83
|
+
const inner = withoutGrouping(object);
|
|
84
|
+
return inner.kind === 'nameReference' ? `${inner.name}.${member}` : member;
|
|
85
|
+
}
|
|
86
|
+
function calleeName(callee) {
|
|
87
|
+
const inner = withoutGrouping(callee);
|
|
88
|
+
if (inner.kind === 'nameReference')
|
|
89
|
+
return inner.name;
|
|
90
|
+
if (inner.kind === 'member') {
|
|
91
|
+
const object = withoutGrouping(inner.object);
|
|
92
|
+
if (object.kind === 'nameReference')
|
|
93
|
+
return `${object.name}.${inner.member.text}`;
|
|
94
|
+
}
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
/** The dotted name a callee spells, or nothing when it is not a name at all. */
|
|
98
|
+
export function calleeNameOf(callee) {
|
|
99
|
+
return calleeName(callee);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=constant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant.js","sourceRoot":"","sources":["../../../src/core/check/constant.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The three lines that describe the file rather than compute anything: the
|
|
3
|
+
* version line, the `study()` or `strategy()` declaration, and `limits()`.
|
|
4
|
+
*
|
|
5
|
+
* Every option of both declarations is written out here once, from
|
|
6
|
+
* `language.md` 13.2 and 13.3, which are the only place either is defined. They
|
|
7
|
+
* are written as ordinary library signatures so that the same argument checking
|
|
8
|
+
* runs over them as over any other call: the option that does not exist, the
|
|
9
|
+
* one given twice, the one given a bar-dependent value. A second, private way
|
|
10
|
+
* of checking arguments would be a second set of behaviours to keep in step.
|
|
11
|
+
*/
|
|
12
|
+
import type { LimitsLine, Script, ScriptDeclaration } from '../ast/index.js';
|
|
13
|
+
import type { Checker } from './checker.js';
|
|
14
|
+
/**
|
|
15
|
+
* Finds the file's declaration and reads the two options every later rule needs.
|
|
16
|
+
*
|
|
17
|
+
* This runs before anything else is checked, because OS7001 has to know whether
|
|
18
|
+
* the file is a strategy and OS8002 has to know whether it runs on a bar that
|
|
19
|
+
* is still moving, and both questions are asked of lines above the declaration
|
|
20
|
+
* as readily as of lines below it.
|
|
21
|
+
*/
|
|
22
|
+
export declare function readHeader(checker: Checker, script: Script): void;
|
|
23
|
+
/** The declaration's own arguments, checked where the declaration is written. */
|
|
24
|
+
export declare function checkDeclaration(checker: Checker, node: ScriptDeclaration): void;
|
|
25
|
+
/**
|
|
26
|
+
* `limits()`, which appears at most once and immediately after the declaration.
|
|
27
|
+
*
|
|
28
|
+
* Its values are literal numbers rather than compile-time constants, because
|
|
29
|
+
* the host is asked whether it will run them before the program is loaded and
|
|
30
|
+
* an `input()` is not resolved that early.
|
|
31
|
+
*/
|
|
32
|
+
export declare function checkLimits(checker: Checker, node: LimitsLine, script: Script, seen: boolean): void;
|
|
33
|
+
//# sourceMappingURL=declaration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../src/core/check/declaration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAKzF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAoD5C;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA6BjE;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAWhF;AAoCD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,GACZ,IAAI,CAsBN"}
|