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.
Files changed (57) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +19 -10
  3. package/dist/adapters/charts/capabilities.d.ts +48 -0
  4. package/dist/adapters/charts/capabilities.d.ts.map +1 -0
  5. package/dist/adapters/charts/capabilities.js +82 -0
  6. package/dist/adapters/charts/capabilities.js.map +1 -0
  7. package/dist/adapters/charts/columns.d.ts +2 -0
  8. package/dist/adapters/charts/columns.d.ts.map +1 -1
  9. package/dist/adapters/charts/columns.js +4 -0
  10. package/dist/adapters/charts/columns.js.map +1 -1
  11. package/dist/adapters/charts/contract.d.ts +35 -3
  12. package/dist/adapters/charts/contract.d.ts.map +1 -1
  13. package/dist/adapters/charts/descriptor.d.ts +1 -1
  14. package/dist/adapters/charts/descriptor.d.ts.map +1 -1
  15. package/dist/adapters/charts/descriptor.js +17 -5
  16. package/dist/adapters/charts/descriptor.js.map +1 -1
  17. package/dist/adapters/charts/fills.d.ts +26 -5
  18. package/dist/adapters/charts/fills.d.ts.map +1 -1
  19. package/dist/adapters/charts/fills.js +55 -7
  20. package/dist/adapters/charts/fills.js.map +1 -1
  21. package/dist/adapters/charts/index.d.ts +9 -3
  22. package/dist/adapters/charts/index.d.ts.map +1 -1
  23. package/dist/adapters/charts/index.js +7 -1
  24. package/dist/adapters/charts/index.js.map +1 -1
  25. package/dist/adapters/charts/produced.d.ts +3 -2
  26. package/dist/adapters/charts/produced.d.ts.map +1 -1
  27. package/dist/adapters/charts/produced.js +1 -1
  28. package/dist/adapters/charts/produced.js.map +1 -1
  29. package/dist/adapters/charts/run.d.ts +23 -0
  30. package/dist/adapters/charts/run.d.ts.map +1 -1
  31. package/dist/adapters/charts/run.js +2 -1
  32. package/dist/adapters/charts/run.js.map +1 -1
  33. package/dist/adapters/charts/surfaces.d.ts +11 -0
  34. package/dist/adapters/charts/surfaces.d.ts.map +1 -1
  35. package/dist/adapters/charts/tables.d.ts +21 -11
  36. package/dist/adapters/charts/tables.d.ts.map +1 -1
  37. package/dist/adapters/charts/tables.js +17 -6
  38. package/dist/adapters/charts/tables.js.map +1 -1
  39. package/dist/adapters/charts/undrawable.d.ts +2 -1
  40. package/dist/adapters/charts/undrawable.d.ts.map +1 -1
  41. package/dist/adapters/charts/undrawable.js +24 -14
  42. package/dist/adapters/charts/undrawable.js.map +1 -1
  43. package/dist/core/version/version.generated.d.ts +1 -1
  44. package/dist/core/version/version.generated.js +1 -1
  45. package/package.json +1 -1
  46. package/src/adapters/charts/capabilities.ts +103 -0
  47. package/src/adapters/charts/columns.ts +5 -0
  48. package/src/adapters/charts/contract.ts +36 -2
  49. package/src/adapters/charts/descriptor.ts +21 -6
  50. package/src/adapters/charts/fills.ts +95 -11
  51. package/src/adapters/charts/index.ts +9 -1
  52. package/src/adapters/charts/produced.ts +4 -3
  53. package/src/adapters/charts/run.ts +25 -1
  54. package/src/adapters/charts/surfaces.ts +12 -0
  55. package/src/adapters/charts/tables.ts +31 -14
  56. package/src/adapters/charts/undrawable.ts +24 -14
  57. 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 no place
7
- * on this chart's surface, and both used to be dropped in silence.
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.** The descriptor has one `table` hook, so one grid reaches
10
- * a pane. Merging two into it would put cells somewhere the script never
11
- * asked for, and drawing the first alone is a study whose second panel never
12
- * appears and whose cells look broken.
13
- * - **A band colour computed per bar.** The chart's band takes one colour for
14
- * the whole run and has no channel to point at, so a band whose colour the
15
- * script computes was drawn in the first plot's colour faded, which is a
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.2";
7
+ export const VERSION = "0.8.0";
8
8
 
9
9
  /**
10
10
  * The compiled program format this compiler emits.