openalgo-script 0.7.2 → 0.8.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 +51 -0
- package/README.md +19 -10
- package/dist/adapters/charts/capabilities.d.ts +48 -0
- package/dist/adapters/charts/capabilities.d.ts.map +1 -0
- package/dist/adapters/charts/capabilities.js +82 -0
- package/dist/adapters/charts/capabilities.js.map +1 -0
- package/dist/adapters/charts/columns.d.ts +2 -0
- package/dist/adapters/charts/columns.d.ts.map +1 -1
- package/dist/adapters/charts/columns.js +4 -0
- package/dist/adapters/charts/columns.js.map +1 -1
- package/dist/adapters/charts/contract.d.ts +35 -3
- package/dist/adapters/charts/contract.d.ts.map +1 -1
- package/dist/adapters/charts/descriptor.d.ts +1 -1
- package/dist/adapters/charts/descriptor.d.ts.map +1 -1
- package/dist/adapters/charts/descriptor.js +17 -5
- package/dist/adapters/charts/descriptor.js.map +1 -1
- package/dist/adapters/charts/fills.d.ts +26 -5
- package/dist/adapters/charts/fills.d.ts.map +1 -1
- package/dist/adapters/charts/fills.js +55 -7
- package/dist/adapters/charts/fills.js.map +1 -1
- package/dist/adapters/charts/index.d.ts +9 -3
- package/dist/adapters/charts/index.d.ts.map +1 -1
- package/dist/adapters/charts/index.js +7 -1
- package/dist/adapters/charts/index.js.map +1 -1
- package/dist/adapters/charts/produced.d.ts +3 -2
- package/dist/adapters/charts/produced.d.ts.map +1 -1
- package/dist/adapters/charts/produced.js +1 -1
- package/dist/adapters/charts/produced.js.map +1 -1
- package/dist/adapters/charts/run.d.ts +23 -0
- package/dist/adapters/charts/run.d.ts.map +1 -1
- package/dist/adapters/charts/run.js +2 -1
- package/dist/adapters/charts/run.js.map +1 -1
- package/dist/adapters/charts/surfaces.d.ts +11 -0
- package/dist/adapters/charts/surfaces.d.ts.map +1 -1
- package/dist/adapters/charts/tables.d.ts +21 -11
- package/dist/adapters/charts/tables.d.ts.map +1 -1
- package/dist/adapters/charts/tables.js +17 -6
- package/dist/adapters/charts/tables.js.map +1 -1
- package/dist/adapters/charts/undrawable.d.ts +2 -1
- package/dist/adapters/charts/undrawable.d.ts.map +1 -1
- package/dist/adapters/charts/undrawable.js +24 -14
- package/dist/adapters/charts/undrawable.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 +1 -1
- package/src/adapters/charts/capabilities.ts +103 -0
- package/src/adapters/charts/columns.ts +5 -0
- package/src/adapters/charts/contract.ts +36 -2
- package/src/adapters/charts/descriptor.ts +21 -6
- package/src/adapters/charts/fills.ts +95 -11
- package/src/adapters/charts/index.ts +9 -1
- package/src/adapters/charts/produced.ts +4 -3
- package/src/adapters/charts/run.ts +25 -1
- package/src/adapters/charts/surfaces.ts +12 -0
- package/src/adapters/charts/tables.ts +31 -14
- package/src/adapters/charts/undrawable.ts +24 -14
- package/src/core/version/version.generated.ts +1 -1
|
@@ -3,17 +3,24 @@
|
|
|
3
3
|
*
|
|
4
4
|
* `compiled-program.md` section 11: a host draws what its surface has room for,
|
|
5
5
|
* and refuses what it does not with OS6024 rather than drawing part of a study
|
|
6
|
-
* and saying nothing. Two things a version 1 program can declare have
|
|
7
|
-
* on
|
|
6
|
+
* and saying nothing. Two things a version 1 program can declare have a place
|
|
7
|
+
* on a newer chart and none on an older one (`capabilities.ts` says which is
|
|
8
|
+
* which), and on an older one both used to be dropped in silence.
|
|
8
9
|
*
|
|
9
|
-
* - **A second grid.**
|
|
10
|
-
* a pane. Merging two into it would put cells somewhere the script
|
|
11
|
-
* asked for, and drawing the first alone is a study whose second panel
|
|
12
|
-
* appears and whose cells look broken.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* colour the script did not choose.
|
|
10
|
+
* - **A second grid.** An older descriptor has one `table` hook, so one grid
|
|
11
|
+
* reaches a pane. Merging two into it would put cells somewhere the script
|
|
12
|
+
* never asked for, and drawing the first alone is a study whose second panel
|
|
13
|
+
* never appears and whose cells look broken. A newer chart's list of grids
|
|
14
|
+
* carries every one (`tables.ts`).
|
|
15
|
+
* - **A band colour computed per bar.** An older chart's band takes one colour
|
|
16
|
+
* for each side for the whole run, and a band whose colour the script
|
|
17
|
+
* computes would be drawn in a colour the script did not choose. A newer
|
|
18
|
+
* chart's band has a per-bar colour callback (`fills.ts`).
|
|
19
|
+
*
|
|
20
|
+
* Which chart the descriptor is registered with is what the host states, and
|
|
21
|
+
* `capabilities.ts` reads it. A host that states nothing is refused both, as
|
|
22
|
+
* before, because a chart that ignores a hook it does not know draws the
|
|
23
|
+
* silent version of each.
|
|
17
24
|
*
|
|
18
25
|
* The compiled program carries no source position for a declaration, so the
|
|
19
26
|
* refusal names the declaration by its title, which is what a reader sees in
|
|
@@ -22,23 +29,26 @@
|
|
|
22
29
|
import { diagnosticFor, makeSpan } from '../../core/index.js';
|
|
23
30
|
import type { Diagnostic } from '../../core/index.js';
|
|
24
31
|
import type { CompiledProgram, Field } from '../../core/emit/index.js';
|
|
32
|
+
import { lacking } from './capabilities.js';
|
|
33
|
+
import type { ChartCapabilities } from './capabilities.js';
|
|
25
34
|
|
|
26
35
|
/** A load refusal has no line of its own: the program is what was refused. */
|
|
27
36
|
const AT_LOAD = makeSpan(0, 0, 0, 0);
|
|
28
37
|
|
|
29
|
-
export function undrawable(program: CompiledProgram): Diagnostic | undefined {
|
|
38
|
+
export function undrawable(program: CompiledProgram, chart: ChartCapabilities): Diagnostic | undefined {
|
|
30
39
|
const second = program.outputs.tables[1];
|
|
31
|
-
if (second !== undefined) {
|
|
40
|
+
if (second !== undefined && !chart.grids) {
|
|
32
41
|
return diagnosticFor('OS6024', AT_LOAD, {
|
|
33
42
|
what: `the table ${titled(second.title, 'after the first')}, the second grid this study declares`,
|
|
34
|
-
limit: 'a chart pane draws one grid',
|
|
43
|
+
limit: lacking(chart, 'grids', 'a chart pane draws one grid'),
|
|
35
44
|
});
|
|
36
45
|
}
|
|
46
|
+
if (chart.bandColours) return undefined;
|
|
37
47
|
for (const band of program.outputs.fills) {
|
|
38
48
|
if (band.colorUpChannel !== null || band.colorDownChannel !== null) {
|
|
39
49
|
return diagnosticFor('OS6024', AT_LOAD, {
|
|
40
50
|
what: "a band's colour that is computed per bar",
|
|
41
|
-
limit: "a chart's band takes one colour for the whole run",
|
|
51
|
+
limit: lacking(chart, 'bandColours', "a chart's band takes one colour for the whole run"),
|
|
42
52
|
});
|
|
43
53
|
}
|
|
44
54
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// spec/compiled-program.md, so neither can drift from the thing it names.
|
|
5
5
|
|
|
6
6
|
/** This build's package version. The release refuses to publish unless the tag, the manifest and this agree. */
|
|
7
|
-
export const VERSION = "0.
|
|
7
|
+
export const VERSION = "0.8.0";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* The compiled program format this compiler emits.
|