@explorable-viz/fluid 0.7.60 → 0.7.62
Sign up to get free protection for your applications and to get access to all the features.
- 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(
|