@explorable-viz/fluid 0.7.60 → 0.7.62
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/.spago/node-process/v11.0.0/.eslintrc.json +29 -0
- package/.spago/node-process/v11.0.0/.gitignore +8 -0
- package/.spago/node-process/v11.1.0/.eslintrc.json +29 -0
- package/.spago/node-process/v11.1.0/.gitignore +8 -0
- package/.spago/node-process/v11.2.0/.eslintrc.json +29 -0
- package/.spago/node-process/v11.2.0/.gitignore +8 -0
- package/.spago/optparse/v6.0.0/.gitignore +8 -0
- package/.spago/optparse/v6.0.0/.npmrc +1 -0
- package/README.md +28 -9
- package/dist/fluid/fluid/.DS_Store +0 -0
- package/dist/fluid/fluid/example/linked-inputs/energyscatter.fld +1 -2
- package/dist/fluid/fluid/example/linked-inputs/mini-energyscatter.fld +1 -2
- package/dist/fluid/fluid/example/plot/non-renewables.fld +3 -4
- package/dist/fluid/fluid/example/slicing/linked-outputs/stacked-bar-scatter-plot.fld +1 -2
- package/dist/fluid/fluid/lib/convolution.fld +4 -3
- package/dist/fluid/fluid/lib/text-viz.fld +5 -5
- package/dist/fluid/shared/fluid.mjs +54 -50
- package/dist/fluid/shared/load-figure.js +192 -218
- package/package.json +5 -6
- package/script/bundle-website.sh +0 -1
- package/.spago/affjax-node/v1.0.0/.editorconfig +0 -13
- package/.spago/affjax-node/v1.0.0/.eslintrc.json +0 -30
- package/.spago/affjax-node/v1.0.0/.gitignore +0 -13
- package/.spago/pathy/v9.0.0/.editorconfig +0 -13
- package/.spago/pathy/v9.0.0/.gitignore +0 -9
- package/.spago/pathy/v9.0.0/.tidyrc.json +0 -10
@@ -0,0 +1,29 @@
|
|
1
|
+
{
|
2
|
+
"parserOptions": {
|
3
|
+
"ecmaVersion": 6,
|
4
|
+
"sourceType": "module"
|
5
|
+
},
|
6
|
+
"extends": "eslint:recommended",
|
7
|
+
"env": {
|
8
|
+
"node": true
|
9
|
+
},
|
10
|
+
"rules": {
|
11
|
+
"strict": [2, "global"],
|
12
|
+
"block-scoped-var": 2,
|
13
|
+
"consistent-return": 2,
|
14
|
+
"eqeqeq": [2, "smart"],
|
15
|
+
"guard-for-in": 2,
|
16
|
+
"no-caller": 2,
|
17
|
+
"no-extend-native": 2,
|
18
|
+
"no-loop-func": 2,
|
19
|
+
"no-new": 2,
|
20
|
+
"no-param-reassign": 2,
|
21
|
+
"no-return-assign": 2,
|
22
|
+
"no-unused-expressions": 2,
|
23
|
+
"no-use-before-define": 2,
|
24
|
+
"radix": [2, "always"],
|
25
|
+
"indent": [2, 2],
|
26
|
+
"quotes": [2, "double"],
|
27
|
+
"semi": [2, "always"]
|
28
|
+
}
|
29
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
{
|
2
|
+
"parserOptions": {
|
3
|
+
"ecmaVersion": 6,
|
4
|
+
"sourceType": "module"
|
5
|
+
},
|
6
|
+
"extends": "eslint:recommended",
|
7
|
+
"env": {
|
8
|
+
"node": true
|
9
|
+
},
|
10
|
+
"rules": {
|
11
|
+
"strict": [2, "global"],
|
12
|
+
"block-scoped-var": 2,
|
13
|
+
"consistent-return": 2,
|
14
|
+
"eqeqeq": [2, "smart"],
|
15
|
+
"guard-for-in": 2,
|
16
|
+
"no-caller": 2,
|
17
|
+
"no-extend-native": 2,
|
18
|
+
"no-loop-func": 2,
|
19
|
+
"no-new": 2,
|
20
|
+
"no-param-reassign": 2,
|
21
|
+
"no-return-assign": 2,
|
22
|
+
"no-unused-expressions": 2,
|
23
|
+
"no-use-before-define": 2,
|
24
|
+
"radix": [2, "always"],
|
25
|
+
"indent": [2, 2],
|
26
|
+
"quotes": [2, "double"],
|
27
|
+
"semi": [2, "always"]
|
28
|
+
}
|
29
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
{
|
2
|
+
"parserOptions": {
|
3
|
+
"ecmaVersion": 6,
|
4
|
+
"sourceType": "module"
|
5
|
+
},
|
6
|
+
"extends": "eslint:recommended",
|
7
|
+
"env": {
|
8
|
+
"node": true
|
9
|
+
},
|
10
|
+
"rules": {
|
11
|
+
"strict": [2, "global"],
|
12
|
+
"block-scoped-var": 2,
|
13
|
+
"consistent-return": 2,
|
14
|
+
"eqeqeq": [2, "smart"],
|
15
|
+
"guard-for-in": 2,
|
16
|
+
"no-caller": 2,
|
17
|
+
"no-extend-native": 2,
|
18
|
+
"no-loop-func": 2,
|
19
|
+
"no-new": 2,
|
20
|
+
"no-param-reassign": 2,
|
21
|
+
"no-return-assign": 2,
|
22
|
+
"no-unused-expressions": 2,
|
23
|
+
"no-use-before-define": 2,
|
24
|
+
"radix": [2, "always"],
|
25
|
+
"indent": [2, 2],
|
26
|
+
"quotes": [2, "double"],
|
27
|
+
"semi": [2, "always"]
|
28
|
+
}
|
29
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
package-lock=false
|
package/README.md
CHANGED
@@ -22,23 +22,42 @@ Additionally, for Windows users only:
|
|
22
22
|
- Run `./script/setup/dev-setup.sh` from the top-level directory
|
23
23
|
- Run `yarn build`
|
24
24
|
|
25
|
-
|
25
|
+
## Use
|
26
26
|
|
27
|
-
|
27
|
+
The following assumes you have already succesfully run `yarn build` (see above).
|
28
28
|
|
29
|
-
|
30
|
-
- As per command-line tests above, but run `yarn test-browser`, which opens
|
31
|
-
a browser window.
|
32
|
-
- To observe the status of tests, click `Debug` in the browser window, and then open the JavaScript Console for your browser (e.g., via the Developer Tools).
|
29
|
+
### Running programs from the command line
|
33
30
|
|
34
|
-
|
31
|
+
Fluid examples in the `dist/fluid/fluid` can be evaluated from the command line as follows
|
32
|
+
(from the top-level directory):
|
35
33
|
|
36
|
-
|
34
|
+
```
|
35
|
+
npx fluid evaluate -f <path>
|
36
|
+
```
|
37
|
+
Note that the path is relative and should not include the `.fld` extension, e.g. for the `range.fld` example:
|
38
|
+
```
|
39
|
+
% npx fluid evaluate -f example/range
|
40
|
+
((0, 0) : ((0, 1) : ((1, 0) : ((1, 1) : []))))
|
41
|
+
Success
|
42
|
+
```
|
43
|
+
|
44
|
+
### Running the fluid.org website locally
|
37
45
|
|
38
46
|
- `yarn serve fluid-org` (you may be prompted to proceed: type `y`).
|
39
47
|
- Open a browser at the served URL (usually `127.0.0.1:8080`)
|
40
48
|
|
41
|
-
|
49
|
+
## Testing
|
50
|
+
|
51
|
+
### Running the tests from the command line
|
52
|
+
|
53
|
+
After building, tests can be run from the command line via `yarn test-all`
|
54
|
+
|
55
|
+
### Running tests in browser
|
56
|
+
- As per command-line tests above, but run `yarn test-browser`, which opens
|
57
|
+
a browser window.
|
58
|
+
- To observe the status of tests, click `Debug` in the browser window, and then open the JavaScript Console for your browser (e.g., via the Developer Tools).
|
59
|
+
|
60
|
+
### Run Puppeteer tests for page Y of website X
|
42
61
|
|
43
62
|
Rebuild with `puppeteerTests.headless` set to `false` to run in browser. Then:
|
44
63
|
- `yarn bundle-website X`
|
Binary file
|
@@ -19,6 +19,5 @@ let plot year countries =
|
|
19
19
|
in ScatterPlot {
|
20
20
|
caption: "Clean energy efficiency vs. proportion of renewable energy capacity",
|
21
21
|
points: plot 2018 [ "BRA", "CHN", "DEU", "FRA", "EGY", "IND", "JPN", "MEX", "NGA", "USA" ],
|
22
|
-
|
23
|
-
ylabel: "Clean Capacity Factor"
|
22
|
+
labels: { x: "Renewables/TotalEnergyCap", y: "Clean Capacity Factor" }
|
24
23
|
}
|
@@ -25,6 +25,5 @@ in ScatterPlot {
|
|
25
25
|
x: country.nonRenewables / country.totalCap,
|
26
26
|
y: country.renCapFactor
|
27
27
|
}| country <- energy 2018 ["USA"]],
|
28
|
-
|
29
|
-
ylabel: "Clean Capacity Factor"
|
28
|
+
labels: { x: "Renewables/TotalEnergyCap", y: "Clean Capacity Factor" }
|
30
29
|
}
|
@@ -2,8 +2,8 @@ let countries = ["BRA", "EGY", "IND", "JPN"];
|
|
2
2
|
let totalFor year country =
|
3
3
|
let [ row ] = [ row | row <- nonRenewables, row.year == year, row.country == country ]
|
4
4
|
in row.nuclearOut + row.gasOut + row.coalOut + row.petrolOut;
|
5
|
-
|
6
|
-
|
5
|
+
let stack year = [ { y: country, z: totalFor year country } | country <- countries ];
|
6
|
+
let yearData year = [ row | row <- nonRenewables, row.year == year, row.country `elem` countries ]
|
7
7
|
in MultiView {
|
8
8
|
barChart: BarChart {
|
9
9
|
caption: "Non-renewables output",
|
@@ -16,7 +16,6 @@ in MultiView {
|
|
16
16
|
x: sum [ row.nuclearOut | row <- yearData year ],
|
17
17
|
y: sum [ row.nuclearCap | row <- yearData year ]
|
18
18
|
} | year <- [2014..2018] ],
|
19
|
-
|
20
|
-
ylabel: "Nuclear output"
|
19
|
+
labels: { x: "Nuclear capacity", y: "Nuclear output" }
|
21
20
|
}
|
22
21
|
}
|
@@ -33,7 +33,6 @@ MultiView {
|
|
33
33
|
in ScatterPlot {
|
34
34
|
caption: "Clean energy efficiency vs proportion of renewable energy capacity",
|
35
35
|
points: plot 2018 [ "BRA", "CHN", "DEU", "FRA", "EGY", "IND", "JPN", "MEX", "NGA", "USA" ],
|
36
|
-
|
37
|
-
ylabel: "Clean Capacity Factor"
|
36
|
+
labels: { x: "Renewables/TotalEnergyCap", y: "Clean Capacity Factor" }
|
38
37
|
}
|
39
38
|
}
|
@@ -2,15 +2,16 @@ let zero n = const n;
|
|
2
2
|
wrap n n_max = ((n - 1) `mod` n_max) + 1;
|
3
3
|
extend n = min (max n 1);
|
4
4
|
|
5
|
-
let convolve image kernel
|
5
|
+
let convolve image kernel boundary =
|
6
6
|
let ((m, n), (i, j)) = (dims image, dims kernel);
|
7
7
|
(half_i, half_j) = (i `quot` 2, j `quot` 2);
|
8
8
|
area = i * j
|
9
9
|
in [| let weightedSum = sum [
|
10
10
|
image!(x, y) * kernel!(i' + 1, j' + 1)
|
11
11
|
| (i', j') <- range (0, 0) (i - 1, j - 1),
|
12
|
-
let x =
|
13
|
-
let y =
|
12
|
+
let x = boundary (m' + i' - half_i) m,
|
13
|
+
let y = boundary (n' + j' - half_j) n,
|
14
14
|
x >= 1, x <= m, y >= 1, y <= n
|
15
15
|
] in weightedSum `quot` area
|
16
16
|
| (m', n') in (m, n) |];
|
17
|
+
|
@@ -2,17 +2,17 @@ let likelihoodMap table prob = (fromSome (find (fun x -> x.prob <= prob) table))
|
|
2
2
|
|
3
3
|
let mkPercent num = (numToStr (num * 100)) ++ "%";
|
4
4
|
|
5
|
-
let leqP n m =
|
5
|
+
let leqP n m =
|
6
6
|
if n <= m
|
7
7
|
then "less"
|
8
8
|
else "more";
|
9
9
|
|
10
|
-
let gradedLeqP n m =
|
11
|
-
let ratio = n / m
|
12
|
-
in if ratio <= 1.0
|
10
|
+
let gradedLeqP n m =
|
11
|
+
let ratio = n / m
|
12
|
+
in if ratio <= 1.0
|
13
13
|
then if ratio <=0.5
|
14
14
|
then "much less"
|
15
15
|
else "less"
|
16
16
|
else if ratio >= 2.0
|
17
17
|
then "much more"
|
18
|
-
else "more";
|
18
|
+
else "more";
|
@@ -10170,8 +10170,7 @@ var dataTypes = /* @__PURE__ */ foldrArray(Cons)(Nil)([
|
|
10170
10170
|
/* @__PURE__ */ $Tuple("Viewport", 9)
|
10171
10171
|
]),
|
10172
10172
|
/* @__PURE__ */ dataType("Transform")([/* @__PURE__ */ $Tuple("Scale", 2), /* @__PURE__ */ $Tuple("Translate", 2)]),
|
10173
|
-
/* @__PURE__ */ dataType("Marker")([/* @__PURE__ */ $Tuple("Arrowhead", 0)])
|
10174
|
-
/* @__PURE__ */ dataType("Explanation")([/* @__PURE__ */ $Tuple("Explained", 2)])
|
10173
|
+
/* @__PURE__ */ dataType("Marker")([/* @__PURE__ */ $Tuple("Arrowhead", 0)])
|
10175
10174
|
]);
|
10176
10175
|
var ctrToDataType = /* @__PURE__ */ (() => fromFoldable2(foldableList)(bindList.bind(listMap((d) => listMap((v) => $Tuple(
|
10177
10176
|
v,
|
@@ -24828,17 +24827,18 @@ var parseProgram = (loadFile2) => (folder) => (file) => (dictMonadAff) => (dictM
|
|
24828
24827
|
})());
|
24829
24828
|
var module_2 = (dictMonadAff) => {
|
24830
24829
|
const Monad0 = dictMonadAff.MonadEffect0().Monad0();
|
24831
|
-
const
|
24830
|
+
const Bind1 = Monad0.Bind1();
|
24831
|
+
const Applicative0 = Monad0.Applicative0();
|
24832
24832
|
return (dictMonadError) => {
|
24833
24833
|
const parse1 = parse(dictMonadError);
|
24834
24834
|
const desugarModuleFwd = moduleFwd(dictMonadError)(boundedLattice2);
|
24835
|
-
return (loadFile2) => (file) => (v) => {
|
24836
|
-
const $
|
24837
|
-
return
|
24835
|
+
return (loadFile2) => (folder) => (file) => (v) => {
|
24836
|
+
const $0 = v.mods;
|
24837
|
+
return Bind1.bind(Applicative0.pure())(() => Bind1.bind(loadFile2(folder)(file)(dictMonadAff)(dictMonadError))((src) => Bind1.bind(Bind1.bind(parse1(src)(module_))(desugarModuleFwd))((mod) => Applicative0.pure({
|
24838
24838
|
primitives: v.primitives,
|
24839
|
-
mods: $List("Cons", mod, $
|
24839
|
+
mods: $List("Cons", mod, $0),
|
24840
24840
|
datasets: v.datasets
|
24841
|
-
})));
|
24841
|
+
}))));
|
24842
24842
|
};
|
24843
24843
|
};
|
24844
24844
|
};
|
@@ -24872,7 +24872,7 @@ var prepConfig = (dictMonadAff) => {
|
|
24872
24872
|
return (dictMonadError) => {
|
24873
24873
|
const desug1 = exprFwd(boundedLattice2)(dictMonadError)(joinSemilatticeUnit);
|
24874
24874
|
const initialConfig1 = initialConfig(dictMonadError)(fVExpr);
|
24875
|
-
return (
|
24875
|
+
return (v) => (file) => (progCxt) => $0.bind(parseProgram(v.loadFile)(v.fluidSrcPath)(file)(dictMonadAff)(dictMonadError))((s) => $0.bind(desug1(s))((e) => $0.bind(initialConfig1(e)(progCxt))((gconfig) => Monad0.Applicative0().pure({
|
24876
24876
|
s,
|
24877
24877
|
e,
|
24878
24878
|
gconfig
|
@@ -24884,10 +24884,10 @@ var datasetAs = (dictMonadAff) => {
|
|
24884
24884
|
const $0 = Monad0.Bind1();
|
24885
24885
|
return (dictMonadError) => {
|
24886
24886
|
const desug1 = exprFwd(boundedLattice2)(dictMonadError)(joinSemilatticeUnit);
|
24887
|
-
return (loadFile2) => (v) => (v1) => {
|
24887
|
+
return (loadFile2) => (folder) => (v) => (v1) => {
|
24888
24888
|
const $1 = v1.datasets;
|
24889
24889
|
const $2 = v._1;
|
24890
|
-
return $0.bind($0.bind(parseProgram(loadFile2)(
|
24890
|
+
return $0.bind($0.bind(parseProgram(loadFile2)(folder)(v._2)(dictMonadAff)(dictMonadError))(desug1))((e\u03B1) => Monad0.Applicative0().pure({
|
24891
24891
|
primitives: v1.primitives,
|
24892
24892
|
mods: v1.mods,
|
24893
24893
|
datasets: $List("Cons", $Tuple($2, e\u03B1), $1)
|
@@ -24904,12 +24904,12 @@ var loadProgCxt = (dictMonadAff) => {
|
|
24904
24904
|
return (dictMonadError) => {
|
24905
24905
|
const module_22 = module_1(dictMonadError);
|
24906
24906
|
const datasetAs2 = datasetAs1(dictMonadError);
|
24907
|
-
return (
|
24907
|
+
return (v) => (mods) => (datasets) => $0.bind($0.bind(Monad0.Applicative0().pure({
|
24908
24908
|
primitives,
|
24909
24909
|
mods: Nil,
|
24910
24910
|
datasets: Nil
|
24911
|
-
}))(concatM1(arrayMap(module_22(
|
24912
|
-
const $1 = datasetAs2(
|
24911
|
+
}))(concatM1(arrayMap(module_22(v.loadFile)(v.fluidSrcPath))(["lib/prelude", ...mods]))))(concatM1(arrayMap((() => {
|
24912
|
+
const $1 = datasetAs2(v.loadFile)(v.fluidSrcPath);
|
24913
24913
|
return (x) => $1($Tuple(x._1, x._2));
|
24914
24914
|
})())(datasets)));
|
24915
24915
|
};
|
@@ -25068,6 +25068,20 @@ var loadFile = (v) => (v1) => (dictMonadAff) => {
|
|
25068
25068
|
const Monad0 = dictMonadAff.MonadEffect0().Monad0();
|
25069
25069
|
return (dictMonadError) => Monad0.Bind1().bind(dictMonadAff.liftAff(toAff2(readTextFile)(UTF8)(v + "/" + v1 + ".fld")))((buffer) => Monad0.Applicative0().pure(buffer));
|
25070
25070
|
};
|
25071
|
+
var loadProgCxt2 = (dictMonadAff) => {
|
25072
|
+
const loadProgCxt1 = loadProgCxt(dictMonadAff);
|
25073
|
+
return (dictMonadError) => {
|
25074
|
+
const loadProgCxt22 = loadProgCxt1(dictMonadError);
|
25075
|
+
return (fluidSrcPath) => loadProgCxt22({ loadFile, fluidSrcPath });
|
25076
|
+
};
|
25077
|
+
};
|
25078
|
+
var prepConfig2 = (dictMonadAff) => {
|
25079
|
+
const prepConfig1 = prepConfig(dictMonadAff);
|
25080
|
+
return (dictMonadError) => {
|
25081
|
+
const prepConfig22 = prepConfig1(dictMonadError);
|
25082
|
+
return (fluidSrcPath) => prepConfig22({ loadFile, fluidSrcPath });
|
25083
|
+
};
|
25084
|
+
};
|
25071
25085
|
|
25072
25086
|
// output-es/Node.ChildProcess/foreign.js
|
25073
25087
|
import { spawn, exec, execFile, execSync, execFileSync, fork as cp_fork } from "child_process";
|
@@ -28359,8 +28373,8 @@ var execParserPure = (pprefs) => (pinfo) => (args) => {
|
|
28359
28373
|
// output-es/Fluid/index.js
|
28360
28374
|
var $Command = (tag, _1, _2) => ({ tag, _1, _2 });
|
28361
28375
|
var $Program = (_1) => ({ tag: "Program", _1 });
|
28362
|
-
var
|
28363
|
-
var
|
28376
|
+
var loadProgCxt3 = /* @__PURE__ */ loadProgCxt2(monadAffAff)(monadErrorAff);
|
28377
|
+
var prepConfig3 = /* @__PURE__ */ prepConfig2(monadAffAff)(monadErrorAff);
|
28364
28378
|
var graphEval2 = /* @__PURE__ */ graphEval(monadErrorAff);
|
28365
28379
|
var fromFoldable29 = /* @__PURE__ */ (() => fromFoldableImpl(foldableList.foldr))();
|
28366
28380
|
var Evaluate = (value0) => $Command("Evaluate", value0);
|
@@ -28368,7 +28382,7 @@ var Publish = (value0) => (value1) => $Command("Publish", value0, value1);
|
|
28368
28382
|
var parseImports = /* @__PURE__ */ $Parser(
|
28369
28383
|
"BindP",
|
28370
28384
|
/* @__PURE__ */ manyM(/* @__PURE__ */ option(readerAsk)(/* @__PURE__ */ (() => {
|
28371
|
-
const $0 = help("
|
28385
|
+
const $0 = help("Comma-separated list of files to import");
|
28372
28386
|
const $1 = $0._2._1.tag === "Nothing" ? Nothing : $0._2._1;
|
28373
28387
|
const $2 = $0._2._2.tag === "Nothing" ? Nothing : $0._2._2;
|
28374
28388
|
return $Mod(
|
@@ -28384,7 +28398,7 @@ var parseImports = /* @__PURE__ */ $Parser(
|
|
28384
28398
|
);
|
28385
28399
|
var evaluate = (v) => {
|
28386
28400
|
const $0 = v._1.fileName;
|
28387
|
-
return _bind(
|
28401
|
+
return _bind(loadProgCxt3("fluid")(v._1.imports)(v._1.datasets))((progCxt) => _bind(prepConfig3("fluid")($0)(progCxt))((v1) => _bind(graphEval2(v1.gconfig)(v1.e))((v2) => _pure($Val(
|
28388
28402
|
void 0,
|
28389
28403
|
functorBaseVal.map((v$1) => {
|
28390
28404
|
})(v2["out\u03B1"]._2)
|
@@ -28401,26 +28415,29 @@ var copyOptions = {
|
|
28401
28415
|
encoding: Nothing,
|
28402
28416
|
shell: Nothing
|
28403
28417
|
};
|
28404
|
-
var publish = (website) => ($$package) =>
|
28405
|
-
|
28406
|
-
|
28407
|
-
|
28408
|
-
|
28409
|
-
|
28410
|
-
|
28411
|
-
const $
|
28412
|
-
return
|
28413
|
-
|
28414
|
-
|
28415
|
-
|
28416
|
-
}
|
28418
|
+
var publish = (website) => ($$package) => {
|
28419
|
+
const cmd$p = "/script/bundle-website.sh -w " + website;
|
28420
|
+
return exec2($$package ? "./node_modules/@explorable-viz/fluid" + cmd$p + " -r true" : "." + cmd$p)(copyOptions)((v) => {
|
28421
|
+
if (v.error.tag === "Just") {
|
28422
|
+
return log(showErrorImpl(v.error._1));
|
28423
|
+
}
|
28424
|
+
if (v.error.tag === "Nothing") {
|
28425
|
+
const $0 = toString2(monadEffect)(ASCII)(v.stdout);
|
28426
|
+
return () => {
|
28427
|
+
const $1 = $0();
|
28428
|
+
return log($1)();
|
28429
|
+
};
|
28430
|
+
}
|
28431
|
+
fail();
|
28432
|
+
});
|
28433
|
+
};
|
28417
28434
|
var dispatchCommand = (v) => {
|
28418
28435
|
if (v.tag === "Evaluate") {
|
28419
28436
|
return _bind(evaluate(v._1))((v1) => _liftEffect(log(intercalate4("\n")(removeDocWS(prettyVal(highlightableUnit).pretty(v1)).lines))));
|
28420
28437
|
}
|
28421
28438
|
if (v.tag === "Publish") {
|
28422
|
-
return
|
28423
|
-
})(_liftEffect(publish(v._1)(v._2)))
|
28439
|
+
return _map((v$1) => {
|
28440
|
+
})(_liftEffect(publish(v._1)(v._2)));
|
28424
28441
|
}
|
28425
28442
|
fail();
|
28426
28443
|
};
|
@@ -28429,7 +28446,8 @@ var callback = (v) => {
|
|
28429
28446
|
return log(showErrorImpl(v._1));
|
28430
28447
|
}
|
28431
28448
|
if (v.tag === "Right") {
|
28432
|
-
return
|
28449
|
+
return () => {
|
28450
|
+
};
|
28433
28451
|
}
|
28434
28452
|
fail();
|
28435
28453
|
};
|
@@ -28459,24 +28477,10 @@ var parsePair = /* @__PURE__ */ between3("(")(")")((s) => {
|
|
28459
28477
|
}
|
28460
28478
|
return $Either("Left", "Expected a pair but got " + s);
|
28461
28479
|
});
|
28462
|
-
var parseDataset$p = (s) => {
|
28463
|
-
const $0 = parsePair(s);
|
28464
|
-
return (() => {
|
28465
|
-
if ($0.tag === "Left") {
|
28466
|
-
const $1 = $0._1;
|
28467
|
-
return (v) => $Either("Left", $1);
|
28468
|
-
}
|
28469
|
-
if ($0.tag === "Right") {
|
28470
|
-
const $1 = $0._1;
|
28471
|
-
return (f) => f($1);
|
28472
|
-
}
|
28473
|
-
fail();
|
28474
|
-
})()((dataset) => $Either("Right", dataset));
|
28475
|
-
};
|
28476
28480
|
var parseDatasets = /* @__PURE__ */ $Parser(
|
28477
28481
|
"BindP",
|
28478
|
-
/* @__PURE__ */ manyM(/* @__PURE__ */ option(/* @__PURE__ */ eitherReader(
|
28479
|
-
const $0 = help("
|
28482
|
+
/* @__PURE__ */ manyM(/* @__PURE__ */ option(/* @__PURE__ */ eitherReader(parsePair))(/* @__PURE__ */ (() => {
|
28483
|
+
const $0 = help("Comma-separated list of datasets");
|
28480
28484
|
const $1 = $0._2._1.tag === "Nothing" ? Nothing : $0._2._1;
|
28481
28485
|
const $2 = $0._2._2.tag === "Nothing" ? Nothing : $0._2._2;
|
28482
28486
|
return $Mod(
|