openalgo-script 0.5.0 → 0.6.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 +121 -0
- package/README.md +53 -22
- package/dist/adapters/charts/run.d.ts.map +1 -1
- package/dist/adapters/charts/run.js +6 -0
- package/dist/adapters/charts/run.js.map +1 -1
- package/dist/adapters/charts/tables.d.ts +6 -19
- package/dist/adapters/charts/tables.d.ts.map +1 -1
- package/dist/adapters/charts/tables.js.map +1 -1
- package/dist/adapters/charts/undrawable.d.ts +4 -0
- package/dist/adapters/charts/undrawable.d.ts.map +1 -0
- package/dist/adapters/charts/undrawable.js +47 -0
- package/dist/adapters/charts/undrawable.js.map +1 -0
- package/dist/core/backtest/drive.d.ts +36 -1
- package/dist/core/backtest/drive.d.ts.map +1 -1
- package/dist/core/backtest/drive.js +13 -107
- package/dist/core/backtest/drive.js.map +1 -1
- package/dist/core/backtest/index.d.ts +2 -0
- package/dist/core/backtest/index.d.ts.map +1 -1
- package/dist/core/backtest/index.js.map +1 -1
- package/dist/core/backtest/walk.d.ts +39 -0
- package/dist/core/backtest/walk.d.ts.map +1 -0
- package/dist/core/backtest/walk.js +125 -0
- package/dist/core/backtest/walk.js.map +1 -0
- package/dist/core/catalogue/catalogue.generated.d.ts +178 -1
- package/dist/core/catalogue/catalogue.generated.d.ts.map +1 -1
- package/dist/core/catalogue/catalogue.generated.js +18 -1
- package/dist/core/catalogue/catalogue.generated.js.map +1 -1
- package/dist/core/catalogue/types.d.ts +8 -2
- package/dist/core/catalogue/types.d.ts.map +1 -1
- package/dist/core/catalogue/values.generated.d.ts +51 -0
- package/dist/core/catalogue/values.generated.d.ts.map +1 -1
- package/dist/core/check/assigned.d.ts +19 -0
- package/dist/core/check/assigned.d.ts.map +1 -0
- package/dist/core/check/assigned.js +14 -0
- package/dist/core/check/assigned.js.map +1 -0
- package/dist/core/check/call-sites.d.ts.map +1 -1
- package/dist/core/check/call-sites.js +9 -4
- package/dist/core/check/call-sites.js.map +1 -1
- package/dist/core/check/calls.d.ts.map +1 -1
- package/dist/core/check/calls.js +12 -4
- package/dist/core/check/calls.js.map +1 -1
- package/dist/core/check/check.d.ts.map +1 -1
- package/dist/core/check/check.js +15 -2
- package/dist/core/check/check.js.map +1 -1
- package/dist/core/check/checker.d.ts +26 -0
- package/dist/core/check/checker.d.ts.map +1 -1
- package/dist/core/check/checker.js +38 -2
- package/dist/core/check/checker.js.map +1 -1
- package/dist/core/check/constant.d.ts +16 -0
- package/dist/core/check/constant.d.ts.map +1 -1
- package/dist/core/check/constant.js +52 -0
- package/dist/core/check/constant.js.map +1 -1
- package/dist/core/check/deleted.d.ts +3 -0
- package/dist/core/check/deleted.d.ts.map +1 -0
- package/dist/core/check/deleted.js +109 -0
- package/dist/core/check/deleted.js.map +1 -0
- package/dist/core/check/expressions.js +1 -1
- package/dist/core/check/expressions.js.map +1 -1
- package/dist/core/check/library-output.d.ts.map +1 -1
- package/dist/core/check/library-output.js +1 -0
- package/dist/core/check/library-output.js.map +1 -1
- package/dist/core/check/library-prose.generated.js +10 -10
- package/dist/core/check/library-prose.generated.js.map +1 -1
- package/dist/core/check/library.d.ts +7 -0
- package/dist/core/check/library.d.ts.map +1 -1
- package/dist/core/check/library.js +1 -0
- package/dist/core/check/library.js.map +1 -1
- package/dist/core/check/surface.d.ts +9 -0
- package/dist/core/check/surface.d.ts.map +1 -1
- package/dist/core/check/surface.js +13 -0
- package/dist/core/check/surface.js.map +1 -1
- package/dist/core/engine/bar-source.d.ts +65 -0
- package/dist/core/engine/bar-source.d.ts.map +1 -0
- package/dist/core/engine/bar-source.js +58 -0
- package/dist/core/engine/bar-source.js.map +1 -0
- package/dist/core/engine/engine.d.ts +9 -11
- package/dist/core/engine/engine.d.ts.map +1 -1
- package/dist/core/engine/engine.js +24 -24
- package/dist/core/engine/engine.js.map +1 -1
- package/dist/core/engine/guard.d.ts.map +1 -1
- package/dist/core/engine/guard.js +10 -0
- package/dist/core/engine/guard.js.map +1 -1
- package/dist/core/engine/host.d.ts +4 -2
- package/dist/core/engine/host.d.ts.map +1 -1
- package/dist/core/engine/host.js.map +1 -1
- package/dist/core/engine/index.d.ts +1 -0
- package/dist/core/engine/index.d.ts.map +1 -1
- package/dist/core/engine/index.js.map +1 -1
- package/dist/core/engine/library/binding.d.ts +2 -0
- package/dist/core/engine/library/binding.d.ts.map +1 -1
- package/dist/core/engine/library/binding.js.map +1 -1
- package/dist/core/engine/library/index.d.ts +8 -0
- package/dist/core/engine/library/index.d.ts.map +1 -1
- package/dist/core/engine/library/index.js +10 -0
- package/dist/core/engine/library/index.js.map +1 -1
- package/dist/core/engine/library/objects.d.ts.map +1 -1
- package/dist/core/engine/library/objects.js +1 -1
- package/dist/core/engine/library/objects.js.map +1 -1
- package/dist/core/engine/request-body.d.ts +3 -1
- package/dist/core/engine/request-body.d.ts.map +1 -1
- package/dist/core/engine/request-body.js +3 -1
- package/dist/core/engine/request-body.js.map +1 -1
- package/dist/core/engine/request-plan.d.ts +3 -3
- package/dist/core/engine/request-plan.js +3 -3
- package/dist/core/engine/requests.d.ts +2 -2
- package/dist/core/engine/requests.d.ts.map +1 -1
- package/dist/core/engine/requests.js +5 -4
- package/dist/core/engine/requests.js.map +1 -1
- package/dist/core/engine/series.d.ts +18 -6
- package/dist/core/engine/series.d.ts.map +1 -1
- package/dist/core/engine/series.js +24 -5
- package/dist/core/engine/series.js.map +1 -1
- package/dist/core/engine/session/record.d.ts +4 -4
- package/dist/core/engine/session/record.js +4 -4
- package/dist/core/importer/calls.d.ts +29 -0
- package/dist/core/importer/calls.d.ts.map +1 -0
- package/dist/core/importer/calls.js +267 -0
- package/dist/core/importer/calls.js.map +1 -0
- package/dist/core/importer/context.d.ts +118 -0
- package/dist/core/importer/context.d.ts.map +1 -0
- package/dist/core/importer/context.js +120 -0
- package/dist/core/importer/context.js.map +1 -0
- package/dist/core/importer/expressions.d.ts +44 -0
- package/dist/core/importer/expressions.d.ts.map +1 -0
- package/dist/core/importer/expressions.js +223 -0
- package/dist/core/importer/expressions.js.map +1 -0
- package/dist/core/importer/importer.d.ts +13 -0
- package/dist/core/importer/importer.d.ts.map +1 -0
- package/dist/core/importer/importer.js +220 -0
- package/dist/core/importer/importer.js.map +1 -0
- package/dist/core/importer/index.d.ts +20 -0
- package/dist/core/importer/index.d.ts.map +1 -0
- package/dist/core/importer/index.js +18 -0
- package/dist/core/importer/index.js.map +1 -0
- package/dist/core/importer/lexer.d.ts +68 -0
- package/dist/core/importer/lexer.d.ts.map +1 -0
- package/dist/core/importer/lexer.js +207 -0
- package/dist/core/importer/lexer.js.map +1 -0
- package/dist/core/importer/names.d.ts +41 -0
- package/dist/core/importer/names.d.ts.map +1 -0
- package/dist/core/importer/names.js +78 -0
- package/dist/core/importer/names.js.map +1 -0
- package/dist/core/importer/orders.d.ts +8 -0
- package/dist/core/importer/orders.d.ts.map +1 -0
- package/dist/core/importer/orders.js +332 -0
- package/dist/core/importer/orders.js.map +1 -0
- package/dist/core/importer/outputs.d.ts +19 -0
- package/dist/core/importer/outputs.d.ts.map +1 -0
- package/dist/core/importer/outputs.js +266 -0
- package/dist/core/importer/outputs.js.map +1 -0
- package/dist/core/importer/parser.d.ts +5 -0
- package/dist/core/importer/parser.d.ts.map +1 -0
- package/dist/core/importer/parser.js +439 -0
- package/dist/core/importer/parser.js.map +1 -0
- package/dist/core/importer/presence.d.ts +32 -0
- package/dist/core/importer/presence.d.ts.map +1 -0
- package/dist/core/importer/presence.js +146 -0
- package/dist/core/importer/presence.js.map +1 -0
- package/dist/core/importer/settle.d.ts +23 -0
- package/dist/core/importer/settle.d.ts.map +1 -0
- package/dist/core/importer/settle.js +135 -0
- package/dist/core/importer/settle.js.map +1 -0
- package/dist/core/importer/statements.d.ts +4 -0
- package/dist/core/importer/statements.d.ts.map +1 -0
- package/dist/core/importer/statements.js +339 -0
- package/dist/core/importer/statements.js.map +1 -0
- package/dist/core/importer/syntax.d.ts +182 -0
- package/dist/core/importer/syntax.d.ts.map +1 -0
- package/dist/core/importer/syntax.js +14 -0
- package/dist/core/importer/syntax.js.map +1 -0
- package/dist/core/importer/table.d.ts +52 -0
- package/dist/core/importer/table.d.ts.map +1 -0
- package/dist/core/importer/table.js +156 -0
- package/dist/core/importer/table.js.map +1 -0
- package/dist/core/importer/values.d.ts +27 -0
- package/dist/core/importer/values.d.ts.map +1 -0
- package/dist/core/importer/values.js +236 -0
- package/dist/core/importer/values.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +11 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/stdlib/calendar/civil.d.ts.map +1 -1
- package/dist/core/stdlib/calendar/civil.js +5 -2
- package/dist/core/stdlib/calendar/civil.js.map +1 -1
- package/dist/core/version/version.generated.d.ts +1 -1
- package/dist/core/version/version.generated.js +1 -1
- package/package.json +5 -2
- package/spec/errors.json +380 -20
- package/src/adapters/charts/run.ts +6 -0
- package/src/adapters/charts/tables.ts +6 -19
- package/src/adapters/charts/undrawable.ts +51 -0
- package/src/core/backtest/drive.ts +66 -154
- package/src/core/backtest/index.ts +2 -0
- package/src/core/backtest/walk.ts +182 -0
- package/src/core/catalogue/catalogue.generated.ts +18 -1
- package/src/core/catalogue/types.ts +8 -2
- package/src/core/catalogue/values.generated.ts +16 -0
- package/src/core/check/assigned.ts +31 -0
- package/src/core/check/call-sites.ts +11 -4
- package/src/core/check/calls.ts +13 -4
- package/src/core/check/check.ts +14 -2
- package/src/core/check/checker.ts +39 -2
- package/src/core/check/constant.ts +57 -0
- package/src/core/check/deleted.ts +135 -0
- package/src/core/check/expressions.ts +1 -1
- package/src/core/check/library-output.ts +1 -0
- package/src/core/check/library-prose.generated.ts +10 -10
- package/src/core/check/library.ts +8 -0
- package/src/core/check/surface.ts +16 -0
- package/src/core/engine/bar-source.ts +113 -0
- package/src/core/engine/engine.ts +26 -25
- package/src/core/engine/guard.ts +12 -1
- package/src/core/engine/host.ts +4 -2
- package/src/core/engine/index.ts +1 -0
- package/src/core/engine/library/binding.ts +2 -0
- package/src/core/engine/library/index.ts +11 -0
- package/src/core/engine/library/objects.ts +1 -6
- package/src/core/engine/request-body.ts +5 -7
- package/src/core/engine/request-plan.ts +3 -3
- package/src/core/engine/requests.ts +11 -8
- package/src/core/engine/series.ts +30 -6
- package/src/core/engine/session/record.ts +4 -4
- package/src/core/importer/calls.ts +274 -0
- package/src/core/importer/context.ts +197 -0
- package/src/core/importer/expressions.ts +247 -0
- package/src/core/importer/importer.ts +226 -0
- package/src/core/importer/index.ts +19 -0
- package/src/core/importer/lexer.ts +285 -0
- package/src/core/importer/names.ts +104 -0
- package/src/core/importer/orders.ts +307 -0
- package/src/core/importer/outputs.ts +245 -0
- package/src/core/importer/parser.ts +436 -0
- package/src/core/importer/presence.ts +164 -0
- package/src/core/importer/settle.ts +141 -0
- package/src/core/importer/statements.ts +331 -0
- package/src/core/importer/syntax.ts +144 -0
- package/src/core/importer/table.ts +191 -0
- package/src/core/importer/values.ts +241 -0
- package/src/core/index.ts +13 -0
- package/src/core/stdlib/calendar/civil.ts +5 -2
- package/src/core/version/version.generated.ts +1 -1
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
* given less gets a read that is absent for longer rather than a wrong number.
|
|
48
48
|
*/
|
|
49
49
|
import type { Span } from '../span/index.js';
|
|
50
|
-
import type {
|
|
50
|
+
import type { BarSource } from './bar-source.js';
|
|
51
51
|
import type { Clock, EngineLimits } from './budget.js';
|
|
52
52
|
import type { EngineHost } from './host.js';
|
|
53
53
|
import type { ResolvedInput } from './inputs.js';
|
|
@@ -96,7 +96,7 @@ export declare class RequestSet {
|
|
|
96
96
|
* have been revised since the last execution, and the bucket it is inside has
|
|
97
97
|
* to be rebuilt from the revision rather than from the reading it replaced.
|
|
98
98
|
*/
|
|
99
|
-
fill(registers: Registers, bars:
|
|
99
|
+
fill(registers: Registers, bars: BarSource, index: number, fresh: boolean): void;
|
|
100
100
|
/** `req.isReady(read)`: whether the host has answered this one yet. */
|
|
101
101
|
answered(id: Value): Value;
|
|
102
102
|
/** `req.error(read)`: the reason it failed, or the empty string when none has. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../../src/core/engine/requests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../../src/core/engine/requests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC;;;;;;OAMG;IACH,MAAM,IAAI,IAAI,CAAC;IACf,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAgCD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE;IAW7D,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED;;;;;;;;;;OAUG;IACH,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAchF,uEAAuE;IACvE,QAAQ,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK;IAI1B,kFAAkF;IAClF,OAAO,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK;CAG1B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { sourceOf } from './bar-source.js';
|
|
1
2
|
import { RequestBody, bodyProgram } from './request-body.js';
|
|
2
3
|
import { askHost, reasonFor, undatable, undatableReason } from './request-plan.js';
|
|
3
4
|
import { bucketKeyOf } from './timeframe.js';
|
|
@@ -104,7 +105,7 @@ function build(parts, request, plan) {
|
|
|
104
105
|
plan,
|
|
105
106
|
register: request.series,
|
|
106
107
|
body,
|
|
107
|
-
source: answer !== undefined && 'bars' in answer ? answer.bars : undefined,
|
|
108
|
+
source: answer !== undefined && 'bars' in answer ? sourceOf(answer.bars) : undefined,
|
|
108
109
|
// A fold of the chart's own bars needs nothing from the host, so it is
|
|
109
110
|
// answered the moment it is planned. A read the host is still fetching is
|
|
110
111
|
// not: the read is absent, `req.isReady` is false, and the study keeps
|
|
@@ -125,7 +126,7 @@ function build(parts, request, plan) {
|
|
|
125
126
|
function valueOf(read, bars, index) {
|
|
126
127
|
if (!read.ready)
|
|
127
128
|
return ABSENT;
|
|
128
|
-
const bar = bars
|
|
129
|
+
const bar = bars.at(index);
|
|
129
130
|
const at = bar?.time ?? null;
|
|
130
131
|
if (at === null)
|
|
131
132
|
return ABSENT;
|
|
@@ -135,7 +136,7 @@ function valueOf(read, bars, index) {
|
|
|
135
136
|
const source = read.source ?? bars;
|
|
136
137
|
const lookahead = read.plan.request.mode === 'lookahead';
|
|
137
138
|
for (;;) {
|
|
138
|
-
const next = source
|
|
139
|
+
const next = source.at(read.cursor);
|
|
139
140
|
if (next === undefined)
|
|
140
141
|
break;
|
|
141
142
|
const found = next.time === null ? undefined : keyOf(read, next.time);
|
|
@@ -196,7 +197,7 @@ function restore(read, bars) {
|
|
|
196
197
|
return;
|
|
197
198
|
const source = read.source ?? bars;
|
|
198
199
|
for (let at = read.openFrom; at < read.cursor; at += 1) {
|
|
199
|
-
const bar = source
|
|
200
|
+
const bar = source.at(at);
|
|
200
201
|
if (bar === undefined || bar.time === null)
|
|
201
202
|
continue;
|
|
202
203
|
if (keyOf(read, bar.time) !== read.openKey)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../../src/core/engine/requests.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../../src/core/engine/requests.ts"],"names":[],"mappings":"AAkDA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAO3C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAuD3C,MAAM,KAAK,GAAS,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAEnE,MAAM,OAAO,UAAU;IACJ,KAAK,GAAW,EAAE,CAAC;IACnB,IAAI,GAAG,IAAI,GAAG,EAAgB,CAAC;IAC/B,KAAK,CAAe;IAErC,YAAY,KAAmB,EAAE,QAA4B;QAC3D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,IAAI,KAAK,SAAS;gBAAE,SAAS;YACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;;;OAUG;IACH,IAAI,CAAC,SAAoB,EAAE,IAAe,EAAE,KAAa,EAAE,KAAc;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtB,CAAC;YACD,sEAAsE;YACtE,4DAA4D;YAC5D,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,QAAQ,CAAC,EAAS;QAChB,OAAO,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5E,CAAC;IAED,kFAAkF;IAClF,OAAO,CAAC,EAAS;QACf,OAAO,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;CACF;AAED,SAAS,KAAK,CAAC,KAAmB,EAAE,OAAgB,EAAE,IAAiB;IACrE,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,IAAI,IAA6B,CAAC;IAElC,4EAA4E;IAC5E,2EAA2E;IAC3E,8EAA8E;IAC9E,qEAAqE;IACrE,IAAI,MAA8B,CAAC;IACnC,MAAM,KAAK,GAAc;QACvB,GAAG,KAAK,CAAC,KAAK;QACd,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;QAC3D,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC7D,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS;QACpC,YAAY,EAAE,CAAC,EAAS,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK;QAC1D,YAAY,EAAE,CAAC,EAAS,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;KACvD,CAAC;IACF,MAAM,GAAG,IAAI,UAAU;IACrB,0EAA0E;IAC1E,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAE,IAAoB,CAAC,OAAO,EAAE,EAC/E,OAAO,CAAC,IAAI,CAAC,QAAQ,CACtB,CAAC;IAEF,IAAI,GAAG,IAAI,WAAW,CAAC;QACrB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI;SAC5E,CAAC,CAAC;QACH,MAAM;QACN,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC,CAAC;IAEH,yEAAyE;IACzE,4EAA4E;IAC5E,wEAAwE;IACxE,8EAA8E;IAC9E,qCAAqC;IACrC,MAAM,MAAM,GACV,OAAO,KAAK,SAAS;QACnB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;QAChC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,CAAC,CAAC,EAAE,CAAC;IAEX,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE,OAAO,CAAC,MAAM;QACxB,IAAI;QACJ,MAAM,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QACpF,uEAAuE;QACvE,0EAA0E;QAC1E,uEAAuE;QACvE,yEAAyE;QACzE,+CAA+C;QAC/C,KAAK,EACH,MAAM,KAAK,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;QAC9F,MAAM;QACN,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,MAAM;QACnB,aAAa,EAAE,SAAS;QACxB,IAAI,EAAE,KAAK;KACZ,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,SAAS,OAAO,CAAC,IAAU,EAAE,IAAe,EAAE,KAAa;IACzD,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC;IAC7B,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAErC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;IACzD,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,wEAAwE;YACxE,yEAAyE;YACzE,sBAAsB;YACtB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,2EAA2E;QAC3E,4EAA4E;QAC5E,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE;YAAE,MAAM;QAC3D,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC,WAAW,CAAC;IACpE,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,KAAK,CAAC,IAAU,EAAE,OAAe;IACxC,OAAO,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,IAAI,CAAC,IAAU,EAAE,GAAY,EAAE,GAAW;IACjD,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;QACpC,CAAC;IACH,CAAC;IACD,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,kEAAkE;AAClE,SAAS,OAAO,CAAC,IAAU,EAAE,IAAe;IAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACtB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;IACnC,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;YAAE,SAAS;QACrD,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO;YAAE,SAAS;QACrD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,KAAK,CAAC,GAAY;IACzB,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;QAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,IAAI;KACnB,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,MAAM,CAAC,IAAa,EAAE,GAAY;IACzC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;QACjC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;QAC7B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,IAAI;QACxB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;QACrD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,IAAI;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,CAAgB,EAAE,CAA4B;IAC5D,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,KAAK,CAAC,CAAgB,EAAE,CAA4B;IAC3D,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,IAAI,CAAC,CAAgB,EAAE,CAAgB;IAC9C,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
2
|
+
* The three things the engine checks about the bars it is handed,
|
|
3
3
|
* `host-interface.md` 3.5 and conformance item 1.
|
|
4
4
|
*
|
|
5
5
|
* Everything else about a series the engine takes exactly as stated: it does
|
|
@@ -43,6 +43,18 @@ import type { Instrument } from './host.js';
|
|
|
43
43
|
* sends the reader back to the chart to work it out.
|
|
44
44
|
*/
|
|
45
45
|
export declare function noBars(instrument: Instrument | undefined): Diagnostic;
|
|
46
|
+
/**
|
|
47
|
+
* A bar handed over with no time, OS6025.
|
|
48
|
+
*
|
|
49
|
+
* `host-interface.md` 3.1 states `time` for every bar with no absent case, and
|
|
50
|
+
* the order rule is built on it. Reading a missing one as the absent value, as
|
|
51
|
+
* `barField` would, steps the bar over every calendar fold and makes every
|
|
52
|
+
* session fact absent on a bar that is on the chart: a study draws a gap where
|
|
53
|
+
* the host has data, and nothing says why. It is a bar of the wrong shape, not
|
|
54
|
+
* one out of order, so it has a code and a fix of its own. A time that is not a
|
|
55
|
+
* finite number is no time either.
|
|
56
|
+
*/
|
|
57
|
+
export declare function undated(bar: HostBar, index: number): Diagnostic | undefined;
|
|
46
58
|
/**
|
|
47
59
|
* A bar whose time does not follow the one before it, OS6011.
|
|
48
60
|
*
|
|
@@ -51,11 +63,11 @@ export declare function noBars(instrument: Instrument | undefined): Diagnostic;
|
|
|
51
63
|
* only one whose position tells the host where its own ordering went wrong.
|
|
52
64
|
*
|
|
53
65
|
* `previous` is the bar already handed over, or nothing for the first bar of a
|
|
54
|
-
* run, which follows nothing and is therefore always in order. A
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* so inventing this one for it would be a refusal the specification does not
|
|
58
|
-
* describe.
|
|
66
|
+
* run, which follows nothing and is therefore always in order. A bar with no
|
|
67
|
+
* time never reaches this comparison: `undated` refuses it first, because a
|
|
68
|
+
* bar dated nothing is not two instants in the wrong order.
|
|
59
69
|
*/
|
|
60
70
|
export declare function outOfOrder(bar: HostBar, previous: HostBar | undefined, index: number): Diagnostic | undefined;
|
|
71
|
+
/** Both checks of a bar handed over, in the order they are made: its shape, then its order. */
|
|
72
|
+
export declare function handOver(bar: HostBar, previous: HostBar | undefined, index: number): Diagnostic | undefined;
|
|
61
73
|
//# sourceMappingURL=series.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"series.d.ts","sourceRoot":"","sources":["../../../src/core/engine/series.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAM5C;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAKrE;AAED
|
|
1
|
+
{"version":3,"file":"series.d.ts","sourceRoot":"","sources":["../../../src/core/engine/series.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAM5C;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAKrE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAI3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,GACZ,UAAU,GAAG,SAAS,CAMxB;AAED,+FAA+F;AAC/F,wBAAgB,QAAQ,CACtB,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,GACZ,UAAU,GAAG,SAAS,CAExB"}
|
|
@@ -15,6 +15,23 @@ export function noBars(instrument) {
|
|
|
15
15
|
timeframe: instrument?.interval ?? UNNAMED_INTERVAL,
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* A bar handed over with no time, OS6025.
|
|
20
|
+
*
|
|
21
|
+
* `host-interface.md` 3.1 states `time` for every bar with no absent case, and
|
|
22
|
+
* the order rule is built on it. Reading a missing one as the absent value, as
|
|
23
|
+
* `barField` would, steps the bar over every calendar fold and makes every
|
|
24
|
+
* session fact absent on a bar that is on the chart: a study draws a gap where
|
|
25
|
+
* the host has data, and nothing says why. It is a bar of the wrong shape, not
|
|
26
|
+
* one out of order, so it has a code and a fix of its own. A time that is not a
|
|
27
|
+
* finite number is no time either.
|
|
28
|
+
*/
|
|
29
|
+
export function undated(bar, index) {
|
|
30
|
+
const time = bar.time;
|
|
31
|
+
if (typeof time === 'number' && Number.isFinite(time))
|
|
32
|
+
return undefined;
|
|
33
|
+
return failure('OS6025', NO_POSITION, { index });
|
|
34
|
+
}
|
|
18
35
|
/**
|
|
19
36
|
* A bar whose time does not follow the one before it, OS6011.
|
|
20
37
|
*
|
|
@@ -23,11 +40,9 @@ export function noBars(instrument) {
|
|
|
23
40
|
* only one whose position tells the host where its own ordering went wrong.
|
|
24
41
|
*
|
|
25
42
|
* `previous` is the bar already handed over, or nothing for the first bar of a
|
|
26
|
-
* run, which follows nothing and is therefore always in order. A
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* so inventing this one for it would be a refusal the specification does not
|
|
30
|
-
* describe.
|
|
43
|
+
* run, which follows nothing and is therefore always in order. A bar with no
|
|
44
|
+
* time never reaches this comparison: `undated` refuses it first, because a
|
|
45
|
+
* bar dated nothing is not two instants in the wrong order.
|
|
31
46
|
*/
|
|
32
47
|
export function outOfOrder(bar, previous, index) {
|
|
33
48
|
const time = bar.time;
|
|
@@ -38,4 +53,8 @@ export function outOfOrder(bar, previous, index) {
|
|
|
38
53
|
return undefined;
|
|
39
54
|
return failure('OS6011', NO_POSITION, { index, time, previous: index - 1 });
|
|
40
55
|
}
|
|
56
|
+
/** Both checks of a bar handed over, in the order they are made: its shape, then its order. */
|
|
57
|
+
export function handOver(bar, previous, index) {
|
|
58
|
+
return undated(bar, index) ?? outOfOrder(bar, previous, index);
|
|
59
|
+
}
|
|
41
60
|
//# sourceMappingURL=series.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"series.js","sourceRoot":"","sources":["../../../src/core/engine/series.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGnD,sEAAsE;AACtE,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AACrD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,UAAkC;IACvD,OAAO,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE;QACpC,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,kBAAkB;QAChD,SAAS,EAAE,UAAU,EAAE,QAAQ,IAAI,gBAAgB;KACpD,CAAC,CAAC;AACL,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"series.js","sourceRoot":"","sources":["../../../src/core/engine/series.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGnD,sEAAsE;AACtE,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AACrD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,UAAkC;IACvD,OAAO,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE;QACpC,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,kBAAkB;QAChD,SAAS,EAAE,UAAU,EAAE,QAAQ,IAAI,gBAAgB;KACpD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CAAC,GAAY,EAAE,KAAa;IACjD,MAAM,IAAI,GAAY,GAAG,CAAC,IAAI,CAAC;IAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACxE,OAAO,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CACxB,GAAY,EACZ,QAA6B,EAC7B,KAAa;IAEb,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,MAAM,GAAG,QAAQ,EAAE,IAAI,CAAC;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC7E,IAAI,IAAI,GAAG,MAAM;QAAE,OAAO,SAAS,CAAC;IACpC,OAAO,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,QAAQ,CACtB,GAAY,EACZ,QAA6B,EAC7B,KAAa;IAEb,OAAO,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -34,10 +34,10 @@ export declare const NO_SESSION: SessionFacts;
|
|
|
34
34
|
*
|
|
35
35
|
* Each of the three is reported at load rather than answered with absence,
|
|
36
36
|
* because absence there is indistinguishable from the honest case and the honest
|
|
37
|
-
* case is the one a reader will assume.
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
37
|
+
* case is the one a reader will assume. A bare read of an instrument fact the
|
|
38
|
+
* host did not state is a different question with the opposite answer: it is
|
|
39
|
+
* absent and never refused (`host-interface.md` 4.5, decision 66), because a
|
|
40
|
+
* record the host contradicts itself in is not a fact it left out.
|
|
41
41
|
*/
|
|
42
42
|
export declare function recordProblem(stated: SessionHours | undefined, zone: string | null): string | undefined;
|
|
43
43
|
/** Reads one run's session facts, one bar at a time. */
|
|
@@ -89,10 +89,10 @@ function hoursOf(stated) {
|
|
|
89
89
|
*
|
|
90
90
|
* Each of the three is reported at load rather than answered with absence,
|
|
91
91
|
* because absence there is indistinguishable from the honest case and the honest
|
|
92
|
-
* case is the one a reader will assume.
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
92
|
+
* case is the one a reader will assume. A bare read of an instrument fact the
|
|
93
|
+
* host did not state is a different question with the opposite answer: it is
|
|
94
|
+
* absent and never refused (`host-interface.md` 4.5, decision 66), because a
|
|
95
|
+
* record the host contradicts itself in is not a fact it left out.
|
|
96
96
|
*/
|
|
97
97
|
export function recordProblem(stated, zone) {
|
|
98
98
|
if (zone !== null && fieldsIn(0, zone) === null)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Context } from './context.js';
|
|
2
|
+
import type { Arg, CallExpr, Place } from './syntax.js';
|
|
3
|
+
import type { Mapping } from './table.js';
|
|
4
|
+
import type { Out } from './values.js';
|
|
5
|
+
/** A call's arguments against a parameter list: by name, and what fitted none. */
|
|
6
|
+
export interface Bound {
|
|
7
|
+
readonly byName: ReadonlyMap<string, Arg>;
|
|
8
|
+
/** Arguments past the positional list, named by their position. */
|
|
9
|
+
readonly stray: readonly {
|
|
10
|
+
readonly arg: Arg;
|
|
11
|
+
readonly name: string;
|
|
12
|
+
}[];
|
|
13
|
+
}
|
|
14
|
+
export declare function bind(call: CallExpr, positional: readonly string[]): Bound;
|
|
15
|
+
/**
|
|
16
|
+
* Refuses the first argument that is not one of `known`, with OS9006. Returns
|
|
17
|
+
* whether the call may go on.
|
|
18
|
+
*/
|
|
19
|
+
export declare function onlyKnown(ctx: Context, path: string, bound: Bound, known: readonly string[]): boolean;
|
|
20
|
+
/** OS9007, once per built-in: its first bars follow OpenScript's own rules. */
|
|
21
|
+
export declare function warmupNote(ctx: Context, at: Place, call: string, target: string): void;
|
|
22
|
+
/** The translated text of one argument, or undefined where the call left it out. */
|
|
23
|
+
export declare function argText(ctx: Context, bound: Bound, name: string): string | undefined;
|
|
24
|
+
/** A row whose arguments line up one to one, which is most of the table. */
|
|
25
|
+
export declare function generic(ctx: Context, call: CallExpr, row: Mapping, path: string): Out;
|
|
26
|
+
/** `ta.tr` read as a value, which is the call with `handle_na` false. */
|
|
27
|
+
export declare function trueRangeValue(): Out;
|
|
28
|
+
export declare function translateCall(ctx: Context, call: CallExpr): Out;
|
|
29
|
+
//# sourceMappingURL=calls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../src/core/importer/calls.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAK5C,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEvC,kFAAkF;AAClF,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1C,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACzE;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,KAAK,CAezE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAYrG;AAED,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAEtF;AAED,oFAAoF;AACpF,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGpF;AAsBD,4EAA4E;AAC5E,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAUrF;AAWD,yEAAyE;AACzE,wBAAgB,cAAc,IAAI,GAAG,CAEpC;AAqGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,GAAG,CA8C/D"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calls, written out as OpenScript text.
|
|
3
|
+
*
|
|
4
|
+
* A call to a function the script declares keeps its arguments, with a named
|
|
5
|
+
* argument's label following the parameter's new spelling where it was renamed.
|
|
6
|
+
* A call to a built-in is translated from its row in the table, one argument to
|
|
7
|
+
* one argument where they line up, and by a translator of its own where they do
|
|
8
|
+
* not: the highest and lowest of a window that default their source, a
|
|
9
|
+
* deviation whose `biased` flag is the negation of OpenScript's `sample`, a
|
|
10
|
+
* true range whose absent first bar is a flag, and the handful of conversions
|
|
11
|
+
* that are an expression rather than a call in OpenScript.
|
|
12
|
+
*
|
|
13
|
+
* A call that draws or trades is a statement, not a value, and its translator
|
|
14
|
+
* lives with the other statements; used as a value it is refused.
|
|
15
|
+
*/
|
|
16
|
+
import { diagnosticFor } from '../diagnostics/index.js';
|
|
17
|
+
import { canonicalNumber } from '../emit/index.js';
|
|
18
|
+
import { levelCall, plotCall, translateInput } from './outputs.js';
|
|
19
|
+
import { neverAbsent } from './presence.js';
|
|
20
|
+
import { pathOf } from './syntax.js';
|
|
21
|
+
import { CALLS } from './table.js';
|
|
22
|
+
import { NOTHING, PREC, atom, translate, wrap } from './values.js';
|
|
23
|
+
export function bind(call, positional) {
|
|
24
|
+
const byName = new Map();
|
|
25
|
+
const stray = [];
|
|
26
|
+
let position = 0;
|
|
27
|
+
for (const arg of call.args) {
|
|
28
|
+
if (arg.label !== undefined) {
|
|
29
|
+
byName.set(arg.label, arg);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const name = positional[position];
|
|
33
|
+
if (name === undefined)
|
|
34
|
+
stray.push({ arg, name: `argument ${canonicalNumber(position + 1)}` });
|
|
35
|
+
else
|
|
36
|
+
byName.set(name, arg);
|
|
37
|
+
position += 1;
|
|
38
|
+
}
|
|
39
|
+
return { byName, stray };
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Refuses the first argument that is not one of `known`, with OS9006. Returns
|
|
43
|
+
* whether the call may go on.
|
|
44
|
+
*/
|
|
45
|
+
export function onlyKnown(ctx, path, bound, known) {
|
|
46
|
+
const first = bound.stray[0];
|
|
47
|
+
if (first !== undefined) {
|
|
48
|
+
ctx.refuse(diagnosticFor('OS9006', ctx.span(first.arg.at), { argument: first.name, call: path }));
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
for (const [name, arg] of bound.byName) {
|
|
52
|
+
if (known.includes(name))
|
|
53
|
+
continue;
|
|
54
|
+
ctx.refuse(diagnosticFor('OS9006', ctx.span(arg.at), { argument: name, call: path }));
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
/** OS9007, once per built-in: its first bars follow OpenScript's own rules. */
|
|
60
|
+
export function warmupNote(ctx, at, call, target) {
|
|
61
|
+
ctx.note(diagnosticFor('OS9007', ctx.span(at), { call, target }), `OS9007 ${call}`);
|
|
62
|
+
}
|
|
63
|
+
/** The translated text of one argument, or undefined where the call left it out. */
|
|
64
|
+
export function argText(ctx, bound, name) {
|
|
65
|
+
const arg = bound.byName.get(name);
|
|
66
|
+
return arg === undefined ? undefined : translate(ctx, arg.value).text;
|
|
67
|
+
}
|
|
68
|
+
/** Arguments by position up to the first one left out, and by name after it. */
|
|
69
|
+
function written(texts, labels) {
|
|
70
|
+
const parts = [];
|
|
71
|
+
let gap = false;
|
|
72
|
+
for (let i = 0; i < texts.length; i += 1) {
|
|
73
|
+
const text = texts[i];
|
|
74
|
+
if (text === undefined) {
|
|
75
|
+
gap = true;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (!gap)
|
|
79
|
+
parts.push(text);
|
|
80
|
+
else {
|
|
81
|
+
const label = labels[i];
|
|
82
|
+
if (label === undefined)
|
|
83
|
+
return undefined;
|
|
84
|
+
parts.push(`${label} = ${text}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return parts;
|
|
88
|
+
}
|
|
89
|
+
/** A row whose arguments line up one to one, which is most of the table. */
|
|
90
|
+
export function generic(ctx, call, row, path) {
|
|
91
|
+
const bound = bind(call, row.params);
|
|
92
|
+
if (!onlyKnown(ctx, path, bound, row.params))
|
|
93
|
+
return NOTHING;
|
|
94
|
+
const parts = written(row.params.map((name) => argText(ctx, bound, name)), row.targets);
|
|
95
|
+
if (parts === undefined) {
|
|
96
|
+
ctx.refuse(diagnosticFor('OS9006', ctx.span(call.at), { argument: 'an argument left out before another', call: path }));
|
|
97
|
+
return NOTHING;
|
|
98
|
+
}
|
|
99
|
+
if (row.difference === 'warmup')
|
|
100
|
+
warmupNote(ctx, call.callee.at, path, row.target);
|
|
101
|
+
return atom(`${row.target}(${parts.join(', ')})`);
|
|
102
|
+
}
|
|
103
|
+
function userCall(ctx, call, binding) {
|
|
104
|
+
const parts = call.args.map((arg) => {
|
|
105
|
+
const text = translate(ctx, arg.value).text;
|
|
106
|
+
if (arg.label === undefined)
|
|
107
|
+
return text;
|
|
108
|
+
return `${binding.labels?.get(arg.label) ?? arg.label} = ${text}`;
|
|
109
|
+
});
|
|
110
|
+
return atom(`${binding.output}(${parts.join(', ')})`);
|
|
111
|
+
}
|
|
112
|
+
/** `ta.tr` read as a value, which is the call with `handle_na` false. */
|
|
113
|
+
export function trueRangeValue() {
|
|
114
|
+
return { text: 'isNone(close[1]) ? none : trueRange()', prec: PREC.ternary };
|
|
115
|
+
}
|
|
116
|
+
function trueRangeCall(ctx, call, path) {
|
|
117
|
+
const bound = bind(call, ['handle_na']);
|
|
118
|
+
if (!onlyKnown(ctx, path, bound, ['handle_na']))
|
|
119
|
+
return NOTHING;
|
|
120
|
+
const flag = bound.byName.get('handle_na')?.value;
|
|
121
|
+
if (flag === undefined || (flag.kind === 'bool' && !flag.value))
|
|
122
|
+
return trueRangeValue();
|
|
123
|
+
if (flag.kind === 'bool')
|
|
124
|
+
return atom('trueRange()');
|
|
125
|
+
const handled = translate(ctx, flag);
|
|
126
|
+
return { text: `${wrap(handled, PREC.or)} or not isNone(close[1]) ? trueRange() : none`, prec: PREC.ternary };
|
|
127
|
+
}
|
|
128
|
+
function extreme(ctx, call, row, path) {
|
|
129
|
+
const one = call.args.length === 1 && call.args[0]?.label === undefined;
|
|
130
|
+
const bound = bind(call, one ? ['length'] : ['source', 'length']);
|
|
131
|
+
if (!onlyKnown(ctx, path, bound, ['source', 'length']))
|
|
132
|
+
return NOTHING;
|
|
133
|
+
const source = argText(ctx, bound, 'source') ?? (row.target === 'highest' ? 'high' : 'low');
|
|
134
|
+
const length = argText(ctx, bound, 'length');
|
|
135
|
+
if (length === undefined) {
|
|
136
|
+
ctx.refuse(diagnosticFor('OS9006', ctx.span(call.at), { argument: 'length', call: path }));
|
|
137
|
+
return NOTHING;
|
|
138
|
+
}
|
|
139
|
+
warmupNote(ctx, call.callee.at, path, row.target);
|
|
140
|
+
return atom(`${row.target}(${source}, ${length})`);
|
|
141
|
+
}
|
|
142
|
+
function deviation(ctx, call, row, path) {
|
|
143
|
+
const bound = bind(call, row.params);
|
|
144
|
+
if (!onlyKnown(ctx, path, bound, row.params))
|
|
145
|
+
return NOTHING;
|
|
146
|
+
const source = argText(ctx, bound, 'source');
|
|
147
|
+
const length = argText(ctx, bound, 'length');
|
|
148
|
+
if (source === undefined || length === undefined) {
|
|
149
|
+
ctx.refuse(diagnosticFor('OS9006', ctx.span(call.at), { argument: source === undefined ? 'source' : 'length', call: path }));
|
|
150
|
+
return NOTHING;
|
|
151
|
+
}
|
|
152
|
+
const biased = bound.byName.get('biased')?.value;
|
|
153
|
+
let sample = '';
|
|
154
|
+
if (biased !== undefined && !(biased.kind === 'bool' && biased.value)) {
|
|
155
|
+
sample = biased.kind === 'bool' ? ', sample = true' : `, sample = not ${wrap(translate(ctx, biased), PREC.unary)}`;
|
|
156
|
+
}
|
|
157
|
+
warmupNote(ctx, call.callee.at, path, row.target);
|
|
158
|
+
return atom(`${row.target}(${source}, ${length}${sample})`);
|
|
159
|
+
}
|
|
160
|
+
/** A condition handed to a counting built-in, which the source dialect never sees absent. */
|
|
161
|
+
function condition(ctx, call, row, path) {
|
|
162
|
+
const bound = bind(call, row.params);
|
|
163
|
+
if (!onlyKnown(ctx, path, bound, row.params))
|
|
164
|
+
return NOTHING;
|
|
165
|
+
const texts = row.params.map((name) => {
|
|
166
|
+
const arg = bound.byName.get(name);
|
|
167
|
+
if (arg === undefined)
|
|
168
|
+
return undefined;
|
|
169
|
+
const text = translate(ctx, arg.value).text;
|
|
170
|
+
return name === 'condition' && !neverAbsent(ctx, arg.value) ? `orElse(${text}, false)` : text;
|
|
171
|
+
});
|
|
172
|
+
const parts = written(texts, row.targets);
|
|
173
|
+
if (parts === undefined || texts[0] === undefined) {
|
|
174
|
+
ctx.refuse(diagnosticFor('OS9006', ctx.span(call.at), { argument: 'condition', call: path }));
|
|
175
|
+
return NOTHING;
|
|
176
|
+
}
|
|
177
|
+
warmupNote(ctx, call.callee.at, path, row.target);
|
|
178
|
+
return atom(`${row.target}(${parts.join(', ')})`);
|
|
179
|
+
}
|
|
180
|
+
/** `math.max` and `math.min` take any number of arguments; OpenScript's take two. */
|
|
181
|
+
function extremes(ctx, call, row, path) {
|
|
182
|
+
const labelled = call.args.find((arg) => arg.label !== undefined);
|
|
183
|
+
if (labelled !== undefined || call.args.length < 2) {
|
|
184
|
+
const at = labelled?.at ?? call.at;
|
|
185
|
+
ctx.refuse(diagnosticFor('OS9006', ctx.span(at), { argument: labelled?.label ?? 'a single argument', call: path }));
|
|
186
|
+
return NOTHING;
|
|
187
|
+
}
|
|
188
|
+
const texts = call.args.map((arg) => translate(ctx, arg.value).text);
|
|
189
|
+
let text = texts[0] ?? '';
|
|
190
|
+
for (const next of texts.slice(1))
|
|
191
|
+
text = `${row.target}(${text}, ${next})`;
|
|
192
|
+
return atom(text);
|
|
193
|
+
}
|
|
194
|
+
function fallback(ctx, call, row, path) {
|
|
195
|
+
const bound = bind(call, row.params);
|
|
196
|
+
if (!onlyKnown(ctx, path, bound, row.params))
|
|
197
|
+
return NOTHING;
|
|
198
|
+
const source = argText(ctx, bound, 'source');
|
|
199
|
+
if (source === undefined) {
|
|
200
|
+
ctx.refuse(diagnosticFor('OS9006', ctx.span(call.at), { argument: 'source', call: path }));
|
|
201
|
+
return NOTHING;
|
|
202
|
+
}
|
|
203
|
+
return atom(`orElse(${source}, ${argText(ctx, bound, 'replacement') ?? '0'})`);
|
|
204
|
+
}
|
|
205
|
+
function rgb(ctx, call, row, path) {
|
|
206
|
+
const bound = bind(call, row.params);
|
|
207
|
+
if (!onlyKnown(ctx, path, bound, row.params))
|
|
208
|
+
return NOTHING;
|
|
209
|
+
const channels = ['red', 'green', 'blue'].map((name) => argText(ctx, bound, name));
|
|
210
|
+
if (channels.some((one) => one === undefined)) {
|
|
211
|
+
ctx.refuse(diagnosticFor('OS9006', ctx.span(call.at), { argument: 'a colour channel', call: path }));
|
|
212
|
+
return NOTHING;
|
|
213
|
+
}
|
|
214
|
+
const colour = `rgb(${channels.join(', ')})`;
|
|
215
|
+
const transp = argText(ctx, bound, 'transp');
|
|
216
|
+
return atom(transp === undefined ? colour : `fade(${colour}, ${transp})`);
|
|
217
|
+
}
|
|
218
|
+
export function translateCall(ctx, call) {
|
|
219
|
+
const path = pathOf(call.callee);
|
|
220
|
+
const root = path?.split('.')[0];
|
|
221
|
+
const binding = root === undefined ? undefined : ctx.lookup(root, call.callee.at);
|
|
222
|
+
if (path === undefined || (binding !== undefined && (path !== root || binding.kind !== 'function'))) {
|
|
223
|
+
ctx.refuse(diagnosticFor('OS9002', ctx.span(call.callee.at), { construct: 'a call on a value' }));
|
|
224
|
+
return NOTHING;
|
|
225
|
+
}
|
|
226
|
+
if (binding !== undefined)
|
|
227
|
+
return userCall(ctx, call, binding);
|
|
228
|
+
const row = CALLS.get(path);
|
|
229
|
+
if (row === undefined) {
|
|
230
|
+
ctx.refuse(diagnosticFor('OS9003', ctx.span(call.callee.at), { name: path }));
|
|
231
|
+
return NOTHING;
|
|
232
|
+
}
|
|
233
|
+
switch (row.special) {
|
|
234
|
+
case undefined:
|
|
235
|
+
return generic(ctx, call, row, path);
|
|
236
|
+
case 'trueRange':
|
|
237
|
+
return trueRangeCall(ctx, call, path);
|
|
238
|
+
case 'extreme':
|
|
239
|
+
return extreme(ctx, call, row, path);
|
|
240
|
+
case 'deviation':
|
|
241
|
+
return deviation(ctx, call, row, path);
|
|
242
|
+
case 'condition':
|
|
243
|
+
return condition(ctx, call, row, path);
|
|
244
|
+
case 'extremes':
|
|
245
|
+
return extremes(ctx, call, row, path);
|
|
246
|
+
case 'fallback':
|
|
247
|
+
return fallback(ctx, call, row, path);
|
|
248
|
+
case 'rgb':
|
|
249
|
+
return rgb(ctx, call, row, path);
|
|
250
|
+
case 'float': {
|
|
251
|
+
const bound = bind(call, row.params);
|
|
252
|
+
if (!onlyKnown(ctx, path, bound, row.params))
|
|
253
|
+
return NOTHING;
|
|
254
|
+
const arg = bound.byName.get('x');
|
|
255
|
+
return arg === undefined ? atom('none') : atom(`(${translate(ctx, arg.value).text})`);
|
|
256
|
+
}
|
|
257
|
+
case 'input':
|
|
258
|
+
return translateInput(ctx, call, path, false);
|
|
259
|
+
case 'plot':
|
|
260
|
+
return plotCall(ctx, call, path);
|
|
261
|
+
case 'hline':
|
|
262
|
+
return levelCall(ctx, call, path);
|
|
263
|
+
}
|
|
264
|
+
ctx.refuse(diagnosticFor('OS9002', ctx.span(call.callee.at), { construct: `${path} used as a value` }));
|
|
265
|
+
return NOTHING;
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=calls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../src/core/importer/calls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAUnE,MAAM,UAAU,IAAI,CAAC,IAAc,EAAE,UAA6B;IAChE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IACtC,MAAM,KAAK,GAAiC,EAAE,CAAC;IAC/C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,eAAe,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;YAC1F,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3B,QAAQ,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAY,EAAE,IAAY,EAAE,KAAY,EAAE,KAAwB;IAC1F,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAClG,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAS;QACnC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,UAAU,CAAC,GAAY,EAAE,EAAS,EAAE,IAAY,EAAE,MAAc;IAC9E,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;AACtF,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,OAAO,CAAC,GAAY,EAAE,KAAY,EAAE,IAAY;IAC9D,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACxE,CAAC;AAED,gFAAgF;AAChF,SAAS,OAAO,CAAC,KAAsC,EAAE,MAAyB;IAChF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,GAAG,GAAG,IAAI,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtB,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,OAAO,CAAC,GAAY,EAAE,IAAc,EAAE,GAAY,EAAE,IAAY;IAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACxF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,qCAAqC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxH,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,KAAK,QAAQ;QAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnF,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,QAAQ,CAAC,GAAY,EAAE,IAAc,EAAE,OAAgB;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QAC5C,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,IAAI,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,IAAI,EAAE,uCAAuC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/E,CAAC;AAED,SAAS,aAAa,CAAC,GAAY,EAAE,IAAc,EAAE,IAAY;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAChE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;IAClD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,cAAc,EAAE,CAAC;IACzF,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,+CAA+C,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAChH,CAAC;AAED,SAAS,OAAO,CAAC,GAAY,EAAE,IAAc,EAAE,GAAY,EAAE,IAAY;IACvE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,SAAS,CAAC;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3F,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,SAAS,CAAC,GAAY,EAAE,IAAc,EAAE,GAAY,EAAE,IAAY;IACzE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACjD,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7H,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACrH,CAAC;IACD,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,6FAA6F;AAC7F,SAAS,SAAS,CAAC,GAAY,EAAE,IAAc,EAAE,GAAY,EAAE,IAAY;IACzE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7D,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACxC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QAC5C,OAAO,IAAI,KAAK,WAAW,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IAChG,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9F,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,qFAAqF;AACrF,SAAS,QAAQ,CAAC,GAAY,EAAE,IAAc,EAAE,GAAY,EAAE,IAAY;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAClE,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnD,MAAM,EAAE,GAAG,QAAQ,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpH,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IACrE,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,KAAK,IAAI,GAAG,CAAC;IAC5E,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAY,EAAE,IAAc,EAAE,GAAY,EAAE,IAAY;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3F,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,UAAU,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,GAAG,CAAC,GAAY,EAAE,IAAc,EAAE,GAAY,EAAE,IAAY;IACnE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7D,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACnF,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrG,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAY,EAAE,IAAc;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClF,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC;QACpG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;QAClG,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,QAAQ,GAAG,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACvC,KAAK,WAAW;YACd,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACvC,KAAK,WAAW;YACd,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,KAAK,WAAW;YACd,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACxC,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACxC,KAAK,KAAK;YACR,OAAO,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,OAAO,CAAC;YAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,KAAK,OAAO;YACV,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAChD,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,KAAK,OAAO;YACV,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC;IACxG,OAAO,OAAO,CAAC;AACjB,CAAC"}
|