@explorable-viz/fluid 0.7.59 → 0.7.61
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/lib/text-viz.fld +5 -5
- package/dist/fluid/shared/fluid.mjs +49 -45
- package/dist/fluid/shared/load-figure.js +94 -68
- 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
|
|
@@ -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";
|
|
@@ -24828,17 +24828,18 @@ var parseProgram = (loadFile2) => (folder) => (file) => (dictMonadAff) => (dictM
|
|
|
24828
24828
|
})());
|
|
24829
24829
|
var module_2 = (dictMonadAff) => {
|
|
24830
24830
|
const Monad0 = dictMonadAff.MonadEffect0().Monad0();
|
|
24831
|
-
const
|
|
24831
|
+
const Bind1 = Monad0.Bind1();
|
|
24832
|
+
const Applicative0 = Monad0.Applicative0();
|
|
24832
24833
|
return (dictMonadError) => {
|
|
24833
24834
|
const parse1 = parse(dictMonadError);
|
|
24834
24835
|
const desugarModuleFwd = moduleFwd(dictMonadError)(boundedLattice2);
|
|
24835
|
-
return (loadFile2) => (file) => (v) => {
|
|
24836
|
-
const $
|
|
24837
|
-
return
|
|
24836
|
+
return (loadFile2) => (folder) => (file) => (v) => {
|
|
24837
|
+
const $0 = v.mods;
|
|
24838
|
+
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
24839
|
primitives: v.primitives,
|
|
24839
|
-
mods: $List("Cons", mod, $
|
|
24840
|
+
mods: $List("Cons", mod, $0),
|
|
24840
24841
|
datasets: v.datasets
|
|
24841
|
-
})));
|
|
24842
|
+
}))));
|
|
24842
24843
|
};
|
|
24843
24844
|
};
|
|
24844
24845
|
};
|
|
@@ -24872,7 +24873,7 @@ var prepConfig = (dictMonadAff) => {
|
|
|
24872
24873
|
return (dictMonadError) => {
|
|
24873
24874
|
const desug1 = exprFwd(boundedLattice2)(dictMonadError)(joinSemilatticeUnit);
|
|
24874
24875
|
const initialConfig1 = initialConfig(dictMonadError)(fVExpr);
|
|
24875
|
-
return (
|
|
24876
|
+
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
24877
|
s,
|
|
24877
24878
|
e,
|
|
24878
24879
|
gconfig
|
|
@@ -24884,10 +24885,10 @@ var datasetAs = (dictMonadAff) => {
|
|
|
24884
24885
|
const $0 = Monad0.Bind1();
|
|
24885
24886
|
return (dictMonadError) => {
|
|
24886
24887
|
const desug1 = exprFwd(boundedLattice2)(dictMonadError)(joinSemilatticeUnit);
|
|
24887
|
-
return (loadFile2) => (v) => (v1) => {
|
|
24888
|
+
return (loadFile2) => (folder) => (v) => (v1) => {
|
|
24888
24889
|
const $1 = v1.datasets;
|
|
24889
24890
|
const $2 = v._1;
|
|
24890
|
-
return $0.bind($0.bind(parseProgram(loadFile2)(
|
|
24891
|
+
return $0.bind($0.bind(parseProgram(loadFile2)(folder)(v._2)(dictMonadAff)(dictMonadError))(desug1))((e\u03B1) => Monad0.Applicative0().pure({
|
|
24891
24892
|
primitives: v1.primitives,
|
|
24892
24893
|
mods: v1.mods,
|
|
24893
24894
|
datasets: $List("Cons", $Tuple($2, e\u03B1), $1)
|
|
@@ -24904,12 +24905,12 @@ var loadProgCxt = (dictMonadAff) => {
|
|
|
24904
24905
|
return (dictMonadError) => {
|
|
24905
24906
|
const module_22 = module_1(dictMonadError);
|
|
24906
24907
|
const datasetAs2 = datasetAs1(dictMonadError);
|
|
24907
|
-
return (
|
|
24908
|
+
return (v) => (mods) => (datasets) => $0.bind($0.bind(Monad0.Applicative0().pure({
|
|
24908
24909
|
primitives,
|
|
24909
24910
|
mods: Nil,
|
|
24910
24911
|
datasets: Nil
|
|
24911
|
-
}))(concatM1(arrayMap(module_22(
|
|
24912
|
-
const $1 = datasetAs2(
|
|
24912
|
+
}))(concatM1(arrayMap(module_22(v.loadFile)(v.fluidSrcPath))(["lib/prelude", ...mods]))))(concatM1(arrayMap((() => {
|
|
24913
|
+
const $1 = datasetAs2(v.loadFile)(v.fluidSrcPath);
|
|
24913
24914
|
return (x) => $1($Tuple(x._1, x._2));
|
|
24914
24915
|
})())(datasets)));
|
|
24915
24916
|
};
|
|
@@ -25068,6 +25069,20 @@ var loadFile = (v) => (v1) => (dictMonadAff) => {
|
|
|
25068
25069
|
const Monad0 = dictMonadAff.MonadEffect0().Monad0();
|
|
25069
25070
|
return (dictMonadError) => Monad0.Bind1().bind(dictMonadAff.liftAff(toAff2(readTextFile)(UTF8)(v + "/" + v1 + ".fld")))((buffer) => Monad0.Applicative0().pure(buffer));
|
|
25070
25071
|
};
|
|
25072
|
+
var loadProgCxt2 = (dictMonadAff) => {
|
|
25073
|
+
const loadProgCxt1 = loadProgCxt(dictMonadAff);
|
|
25074
|
+
return (dictMonadError) => {
|
|
25075
|
+
const loadProgCxt22 = loadProgCxt1(dictMonadError);
|
|
25076
|
+
return (fluidSrcPath) => loadProgCxt22({ loadFile, fluidSrcPath });
|
|
25077
|
+
};
|
|
25078
|
+
};
|
|
25079
|
+
var prepConfig2 = (dictMonadAff) => {
|
|
25080
|
+
const prepConfig1 = prepConfig(dictMonadAff);
|
|
25081
|
+
return (dictMonadError) => {
|
|
25082
|
+
const prepConfig22 = prepConfig1(dictMonadError);
|
|
25083
|
+
return (fluidSrcPath) => prepConfig22({ loadFile, fluidSrcPath });
|
|
25084
|
+
};
|
|
25085
|
+
};
|
|
25071
25086
|
|
|
25072
25087
|
// output-es/Node.ChildProcess/foreign.js
|
|
25073
25088
|
import { spawn, exec, execFile, execSync, execFileSync, fork as cp_fork } from "child_process";
|
|
@@ -28359,8 +28374,8 @@ var execParserPure = (pprefs) => (pinfo) => (args) => {
|
|
|
28359
28374
|
// output-es/Fluid/index.js
|
|
28360
28375
|
var $Command = (tag, _1, _2) => ({ tag, _1, _2 });
|
|
28361
28376
|
var $Program = (_1) => ({ tag: "Program", _1 });
|
|
28362
|
-
var
|
|
28363
|
-
var
|
|
28377
|
+
var loadProgCxt3 = /* @__PURE__ */ loadProgCxt2(monadAffAff)(monadErrorAff);
|
|
28378
|
+
var prepConfig3 = /* @__PURE__ */ prepConfig2(monadAffAff)(monadErrorAff);
|
|
28364
28379
|
var graphEval2 = /* @__PURE__ */ graphEval(monadErrorAff);
|
|
28365
28380
|
var fromFoldable29 = /* @__PURE__ */ (() => fromFoldableImpl(foldableList.foldr))();
|
|
28366
28381
|
var Evaluate = (value0) => $Command("Evaluate", value0);
|
|
@@ -28368,7 +28383,7 @@ var Publish = (value0) => (value1) => $Command("Publish", value0, value1);
|
|
|
28368
28383
|
var parseImports = /* @__PURE__ */ $Parser(
|
|
28369
28384
|
"BindP",
|
|
28370
28385
|
/* @__PURE__ */ manyM(/* @__PURE__ */ option(readerAsk)(/* @__PURE__ */ (() => {
|
|
28371
|
-
const $0 = help("
|
|
28386
|
+
const $0 = help("Comma-separated list of files to import");
|
|
28372
28387
|
const $1 = $0._2._1.tag === "Nothing" ? Nothing : $0._2._1;
|
|
28373
28388
|
const $2 = $0._2._2.tag === "Nothing" ? Nothing : $0._2._2;
|
|
28374
28389
|
return $Mod(
|
|
@@ -28384,7 +28399,7 @@ var parseImports = /* @__PURE__ */ $Parser(
|
|
|
28384
28399
|
);
|
|
28385
28400
|
var evaluate = (v) => {
|
|
28386
28401
|
const $0 = v._1.fileName;
|
|
28387
|
-
return _bind(
|
|
28402
|
+
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
28403
|
void 0,
|
|
28389
28404
|
functorBaseVal.map((v$1) => {
|
|
28390
28405
|
})(v2["out\u03B1"]._2)
|
|
@@ -28401,19 +28416,22 @@ var copyOptions = {
|
|
|
28401
28416
|
encoding: Nothing,
|
|
28402
28417
|
shell: Nothing
|
|
28403
28418
|
};
|
|
28404
|
-
var publish = (website) => ($$package) =>
|
|
28405
|
-
|
|
28406
|
-
|
|
28407
|
-
|
|
28408
|
-
|
|
28409
|
-
|
|
28410
|
-
|
|
28411
|
-
const $
|
|
28412
|
-
return
|
|
28413
|
-
|
|
28414
|
-
|
|
28415
|
-
|
|
28416
|
-
}
|
|
28419
|
+
var publish = (website) => ($$package) => {
|
|
28420
|
+
const cmd$p = "/script/bundle-website.sh -w " + website;
|
|
28421
|
+
return exec2($$package ? "./node_modules/@explorable-viz/fluid" + cmd$p + " -r true" : "." + cmd$p)(copyOptions)((v) => {
|
|
28422
|
+
if (v.error.tag === "Just") {
|
|
28423
|
+
return log(showErrorImpl(v.error._1));
|
|
28424
|
+
}
|
|
28425
|
+
if (v.error.tag === "Nothing") {
|
|
28426
|
+
const $0 = toString2(monadEffect)(ASCII)(v.stdout);
|
|
28427
|
+
return () => {
|
|
28428
|
+
const $1 = $0();
|
|
28429
|
+
return log($1)();
|
|
28430
|
+
};
|
|
28431
|
+
}
|
|
28432
|
+
fail();
|
|
28433
|
+
});
|
|
28434
|
+
};
|
|
28417
28435
|
var dispatchCommand = (v) => {
|
|
28418
28436
|
if (v.tag === "Evaluate") {
|
|
28419
28437
|
return _bind(evaluate(v._1))((v1) => _liftEffect(log(intercalate4("\n")(removeDocWS(prettyVal(highlightableUnit).pretty(v1)).lines))));
|
|
@@ -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(
|
|
@@ -43673,17 +43673,18 @@ var parseProgram = (loadFile2) => (folder) => (file) => (dictMonadAff) => (dictM
|
|
|
43673
43673
|
})());
|
|
43674
43674
|
var module_2 = (dictMonadAff) => {
|
|
43675
43675
|
const Monad0 = dictMonadAff.MonadEffect0().Monad0();
|
|
43676
|
-
const
|
|
43676
|
+
const Bind1 = Monad0.Bind1();
|
|
43677
|
+
const Applicative0 = Monad0.Applicative0();
|
|
43677
43678
|
return (dictMonadError) => {
|
|
43678
43679
|
const parse1 = parse(dictMonadError);
|
|
43679
43680
|
const desugarModuleFwd = moduleFwd(dictMonadError)(boundedLattice2);
|
|
43680
|
-
return (loadFile2) => (file) => (v) => {
|
|
43681
|
-
const $
|
|
43682
|
-
return
|
|
43681
|
+
return (loadFile2) => (folder) => (file) => (v) => {
|
|
43682
|
+
const $0 = v.mods;
|
|
43683
|
+
return Bind1.bind(Applicative0.pure())(() => Bind1.bind(loadFile2(folder)(file)(dictMonadAff)(dictMonadError))((src) => Bind1.bind(Bind1.bind(parse1(src)(module_))(desugarModuleFwd))((mod) => Applicative0.pure({
|
|
43683
43684
|
primitives: v.primitives,
|
|
43684
|
-
mods: $List("Cons", mod, $
|
|
43685
|
+
mods: $List("Cons", mod, $0),
|
|
43685
43686
|
datasets: v.datasets
|
|
43686
|
-
})));
|
|
43687
|
+
}))));
|
|
43687
43688
|
};
|
|
43688
43689
|
};
|
|
43689
43690
|
};
|
|
@@ -43717,7 +43718,7 @@ var prepConfig = (dictMonadAff) => {
|
|
|
43717
43718
|
return (dictMonadError) => {
|
|
43718
43719
|
const desug1 = exprFwd(boundedLattice2)(dictMonadError)(joinSemilatticeUnit);
|
|
43719
43720
|
const initialConfig1 = initialConfig(dictMonadError)(fVExpr);
|
|
43720
|
-
return (
|
|
43721
|
+
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({
|
|
43721
43722
|
s,
|
|
43722
43723
|
e,
|
|
43723
43724
|
gconfig
|
|
@@ -43729,10 +43730,10 @@ var datasetAs = (dictMonadAff) => {
|
|
|
43729
43730
|
const $0 = Monad0.Bind1();
|
|
43730
43731
|
return (dictMonadError) => {
|
|
43731
43732
|
const desug1 = exprFwd(boundedLattice2)(dictMonadError)(joinSemilatticeUnit);
|
|
43732
|
-
return (loadFile2) => (v) => (v1) => {
|
|
43733
|
+
return (loadFile2) => (folder) => (v) => (v1) => {
|
|
43733
43734
|
const $1 = v1.datasets;
|
|
43734
43735
|
const $2 = v._1;
|
|
43735
|
-
return $0.bind($0.bind(parseProgram(loadFile2)(
|
|
43736
|
+
return $0.bind($0.bind(parseProgram(loadFile2)(folder)(v._2)(dictMonadAff)(dictMonadError))(desug1))((e\u03B1) => Monad0.Applicative0().pure({
|
|
43736
43737
|
primitives: v1.primitives,
|
|
43737
43738
|
mods: v1.mods,
|
|
43738
43739
|
datasets: $List("Cons", $Tuple($2, e\u03B1), $1)
|
|
@@ -43749,12 +43750,12 @@ var loadProgCxt = (dictMonadAff) => {
|
|
|
43749
43750
|
return (dictMonadError) => {
|
|
43750
43751
|
const module_22 = module_1(dictMonadError);
|
|
43751
43752
|
const datasetAs2 = datasetAs1(dictMonadError);
|
|
43752
|
-
return (
|
|
43753
|
+
return (v) => (mods) => (datasets) => $0.bind($0.bind(Monad0.Applicative0().pure({
|
|
43753
43754
|
primitives,
|
|
43754
43755
|
mods: Nil,
|
|
43755
43756
|
datasets: Nil
|
|
43756
|
-
}))(concatM1(arrayMap(module_22(
|
|
43757
|
-
const $1 = datasetAs2(
|
|
43757
|
+
}))(concatM1(arrayMap(module_22(v.loadFile)(v.fluidSrcPath))(["lib/prelude", ...mods]))))(concatM1(arrayMap((() => {
|
|
43758
|
+
const $1 = datasetAs2(v.loadFile)(v.fluidSrcPath);
|
|
43758
43759
|
return (x2) => $1($Tuple(x2._1, x2._2));
|
|
43759
43760
|
})())(datasets)));
|
|
43760
43761
|
};
|
|
@@ -43765,9 +43766,10 @@ var loadFile = (v) => (v1) => (dictMonadAff) => {
|
|
|
43765
43766
|
const MonadEffect0 = dictMonadAff.MonadEffect0();
|
|
43766
43767
|
const Monad0 = MonadEffect0.Monad0();
|
|
43767
43768
|
const Bind1 = Monad0.Bind1();
|
|
43769
|
+
const Applicative0 = Monad0.Applicative0();
|
|
43768
43770
|
return (dictMonadError) => Bind1.bind(dictMonadAff.liftAff(request(driver)({
|
|
43769
43771
|
method: $Either("Left", GET),
|
|
43770
|
-
url:
|
|
43772
|
+
url: v + "/" + v1 + ".fld",
|
|
43771
43773
|
headers: [],
|
|
43772
43774
|
content: Nothing,
|
|
43773
43775
|
username: Nothing,
|
|
@@ -43781,12 +43783,27 @@ var loadFile = (v) => (v1) => (dictMonadAff) => {
|
|
|
43781
43783
|
return Bind1.bind(MonadEffect0.liftEffect(log2("Failed with " + printError($0))))(() => dictMonadError.MonadThrow0().throwError(error(printError($0))));
|
|
43782
43784
|
}
|
|
43783
43785
|
if (result.tag === "Right") {
|
|
43784
|
-
|
|
43786
|
+
const $0 = result._1;
|
|
43787
|
+
return Bind1.bind(Applicative0.pure())(() => Applicative0.pure($0.body));
|
|
43785
43788
|
}
|
|
43786
43789
|
fail();
|
|
43787
43790
|
});
|
|
43788
43791
|
};
|
|
43789
43792
|
var loadFile$p = (folder) => (file) => (dictMonadAff) => (dictMonadError) => dictMonadAff.MonadEffect0().Monad0().Bind1().Apply0().Functor0().map((v) => $Tuple(file, v))(loadFile(folder)(file)(dictMonadAff)(dictMonadError));
|
|
43793
|
+
var loadProgCxt2 = (dictMonadAff) => {
|
|
43794
|
+
const loadProgCxt1 = loadProgCxt(dictMonadAff);
|
|
43795
|
+
return (dictMonadError) => {
|
|
43796
|
+
const loadProgCxt22 = loadProgCxt1(dictMonadError);
|
|
43797
|
+
return (fluidSrcPath) => loadProgCxt22({ loadFile, fluidSrcPath });
|
|
43798
|
+
};
|
|
43799
|
+
};
|
|
43800
|
+
var prepConfig2 = (dictMonadAff) => {
|
|
43801
|
+
const prepConfig1 = prepConfig(dictMonadAff);
|
|
43802
|
+
return (dictMonadError) => {
|
|
43803
|
+
const prepConfig22 = prepConfig1(dictMonadError);
|
|
43804
|
+
return (fluidSrcPath) => prepConfig22({ loadFile, fluidSrcPath });
|
|
43805
|
+
};
|
|
43806
|
+
};
|
|
43790
43807
|
|
|
43791
43808
|
// output-es/App.Fig/index.js
|
|
43792
43809
|
var highlightableSelState2 = /* @__PURE__ */ highlightableSelState(highlightableBoolean)(joinSemilatticeBoolean);
|
|
@@ -43972,67 +43989,68 @@ var lift3 = /* @__PURE__ */ lift(applyVal)(applyEnv);
|
|
|
43972
43989
|
var loadFig = (v) => (dictMonadAff) => {
|
|
43973
43990
|
const Monad0 = dictMonadAff.MonadEffect0().Monad0();
|
|
43974
43991
|
const $0 = Monad0.Bind1();
|
|
43975
|
-
const
|
|
43976
|
-
const
|
|
43992
|
+
const loadProgCxt3 = loadProgCxt2(dictMonadAff);
|
|
43993
|
+
const prepConfig3 = prepConfig2(dictMonadAff);
|
|
43977
43994
|
return (dictMonadError) => {
|
|
43978
|
-
const prepConfig1
|
|
43995
|
+
const prepConfig1 = prepConfig3(dictMonadError);
|
|
43979
43996
|
const graphEval2 = graphEval(dictMonadError);
|
|
43980
43997
|
const $1 = v.file;
|
|
43981
|
-
const $2 = v.
|
|
43982
|
-
|
|
43983
|
-
|
|
43998
|
+
const $2 = v.fluidSrcPath;
|
|
43999
|
+
const $3 = v.inputs;
|
|
44000
|
+
return $0.bind(loadProgCxt3(dictMonadError)($2)(v.imports)(v.datasets))((progCxt) => $0.bind(prepConfig1($2)($1)(progCxt))((v1) => {
|
|
44001
|
+
const $4 = v1.s;
|
|
43984
44002
|
return $0.bind(graphEval2(v1.gconfig)(v1.e))((v2) => {
|
|
43985
44003
|
const v3 = functorEnvExpr.map((v$1) => {
|
|
43986
44004
|
})(v2["in\u03B1"]);
|
|
43987
44005
|
const \u03B30 = _fmapObject(v2["in\u03B1"]._1, functorVal.map((v$1) => false));
|
|
43988
44006
|
const v0 = $Val(false, functorBaseVal.map((v$1) => false)(v2["out\u03B1"]._2));
|
|
43989
|
-
const $
|
|
43990
|
-
const $
|
|
43991
|
-
const focus = { fwd: (x2) => $
|
|
43992
|
-
const $
|
|
43993
|
-
const gc = { fwd: (x2) => $
|
|
43994
|
-
const $
|
|
43995
|
-
const vInert = $Val(selState($
|
|
44007
|
+
const $5 = unrestrictGC(boundedMeetSemilatticeBoo)(v3._1)(fromFoldable28($3));
|
|
44008
|
+
const $6 = unprojExpr(boundedMeetSemilatticeBoo)($EnvExpr(v3._1, v3._2));
|
|
44009
|
+
const focus = { fwd: (x2) => $6.fwd($5.fwd(x2)), bwd: (x2) => $5.bwd($6.bwd(x2)) };
|
|
44010
|
+
const $7 = graphGC1(v2);
|
|
44011
|
+
const gc = { fwd: (x2) => $7.fwd(focus.fwd(x2)), bwd: (x2) => focus.bwd($7.bwd(x2)) };
|
|
44012
|
+
const $8 = gc.fwd(\u03B30);
|
|
44013
|
+
const vInert = $Val(selState($8._1), functorBaseVal.map(selState)($8._2));
|
|
43996
44014
|
const \u03B3Inert = _fmapObject(
|
|
43997
44015
|
_fmapObject(gc.bwd($Val(true, functorBaseVal.map((v$1) => true)(v2["out\u03B1"]._2))), functorVal.map(boolNot)),
|
|
43998
44016
|
functorVal.map(selState)
|
|
43999
44017
|
);
|
|
44000
|
-
const $
|
|
44018
|
+
const $9 = graphGC22({
|
|
44001
44019
|
g: $GraphImpl({ out: v2.g._1.in_, in_: v2.g._1.out, sinks: v2.g._1.sources, sources: v2.g._1.sinks, vertices: v2.g._1.vertices }),
|
|
44002
44020
|
graph_fwd: v2.graph_fwd,
|
|
44003
44021
|
graph_bwd: v2.graph_bwd,
|
|
44004
44022
|
"in\u03B1": v2["out\u03B1"],
|
|
44005
44023
|
"out\u03B1": v2["in\u03B1"]
|
|
44006
44024
|
});
|
|
44007
|
-
const $
|
|
44008
|
-
const gc_dual = { fwd: (x2) => $
|
|
44025
|
+
const $10 = dual(focus);
|
|
44026
|
+
const gc_dual = { fwd: (x2) => $10.fwd($9.fwd(x2)), bwd: (x2) => $9.bwd($10.bwd(x2)) };
|
|
44009
44027
|
return Monad0.Applicative0().pure({
|
|
44010
44028
|
spec: v,
|
|
44011
|
-
s: $
|
|
44029
|
+
s: $4,
|
|
44012
44030
|
"\u03B3": intersectionWith_Object(apply)(_fmapObject(
|
|
44013
44031
|
intersectionWith_Object(apply)(_fmapObject(\u03B3Inert, applyVal.apply))(\u03B30),
|
|
44014
44032
|
applyVal.apply
|
|
44015
44033
|
))(\u03B30),
|
|
44016
44034
|
v: applyVal.apply(applyVal.apply(vInert)(v0))(v0),
|
|
44017
44035
|
linkedOutputs: (() => {
|
|
44018
|
-
const $
|
|
44019
|
-
const $
|
|
44036
|
+
const $11 = lift3(vInert)(\u03B3Inert)(gc_dual);
|
|
44037
|
+
const $12 = lift1(\u03B3Inert)(vInert)(gc);
|
|
44020
44038
|
return {
|
|
44021
|
-
fwd: (x2) => $
|
|
44039
|
+
fwd: (x2) => $12.fwd(meet1.fwd($Tuple($11.fwd(x2._1), categoryGaloisConnection.identity.fwd(x2._2)))),
|
|
44022
44040
|
bwd: (x2) => {
|
|
44023
|
-
const $
|
|
44024
|
-
return $Tuple($
|
|
44041
|
+
const $13 = meet1.bwd($12.bwd(x2));
|
|
44042
|
+
return $Tuple($11.bwd($13._1), categoryGaloisConnection.identity.bwd($13._2));
|
|
44025
44043
|
}
|
|
44026
44044
|
};
|
|
44027
44045
|
})(),
|
|
44028
44046
|
linkedInputs: (() => {
|
|
44029
|
-
const $
|
|
44030
|
-
const $
|
|
44047
|
+
const $11 = lift1(\u03B3Inert)(vInert)(gc);
|
|
44048
|
+
const $12 = lift3(vInert)(\u03B3Inert)(gc_dual);
|
|
44031
44049
|
return {
|
|
44032
|
-
fwd: (x2) => $
|
|
44050
|
+
fwd: (x2) => $12.fwd(meet.fwd($Tuple($11.fwd(x2._1), categoryGaloisConnection.identity.fwd(x2._2)))),
|
|
44033
44051
|
bwd: (x2) => {
|
|
44034
|
-
const $
|
|
44035
|
-
return $Tuple($
|
|
44052
|
+
const $13 = meet.bwd($12.bwd(x2));
|
|
44053
|
+
return $Tuple($11.bwd($13._1), categoryGaloisConnection.identity.bwd($13._2));
|
|
44036
44054
|
}
|
|
44037
44055
|
};
|
|
44038
44056
|
})(),
|
|
@@ -44250,7 +44268,26 @@ var gDecodeJsonCons = (dictDecodeJsonField) => (dictGDecodeJson) => (dictIsSymbo
|
|
|
44250
44268
|
var monadAffAff = { liftAff: (x2) => x2, MonadEffect0: () => monadEffectAff };
|
|
44251
44269
|
|
|
44252
44270
|
// output-es/App.LoadFigure/index.js
|
|
44253
|
-
var gDecodeJsonCons2 = /* @__PURE__ */ gDecodeJsonCons(
|
|
44271
|
+
var gDecodeJsonCons2 = /* @__PURE__ */ gDecodeJsonCons({
|
|
44272
|
+
decodeJsonField: (j) => {
|
|
44273
|
+
if (j.tag === "Just") {
|
|
44274
|
+
return $Maybe(
|
|
44275
|
+
"Just",
|
|
44276
|
+
_caseJson(
|
|
44277
|
+
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
|
44278
|
+
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
|
44279
|
+
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
|
44280
|
+
Right,
|
|
44281
|
+
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
|
44282
|
+
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
|
44283
|
+
j._1
|
|
44284
|
+
)
|
|
44285
|
+
);
|
|
44286
|
+
}
|
|
44287
|
+
return Nothing;
|
|
44288
|
+
}
|
|
44289
|
+
});
|
|
44290
|
+
var gDecodeJsonCons1 = /* @__PURE__ */ gDecodeJsonCons(/* @__PURE__ */ (() => {
|
|
44254
44291
|
const $0 = decodeArray(caseJsonString($Either(
|
|
44255
44292
|
"Left",
|
|
44256
44293
|
$JsonDecodeError("TypeMismatch", "String")
|
|
@@ -44264,7 +44301,7 @@ var gDecodeJsonCons2 = /* @__PURE__ */ gDecodeJsonCons(/* @__PURE__ */ (() => {
|
|
|
44264
44301
|
}
|
|
44265
44302
|
};
|
|
44266
44303
|
})());
|
|
44267
|
-
var
|
|
44304
|
+
var decodeJson = /* @__PURE__ */ (() => decodeRecord(gDecodeJsonCons((() => {
|
|
44268
44305
|
const $0 = decodeArray(decodeTuple(caseJsonString($Either(
|
|
44269
44306
|
"Left",
|
|
44270
44307
|
$JsonDecodeError("TypeMismatch", "String")
|
|
@@ -44277,40 +44314,28 @@ var jsonToSpec = /* @__PURE__ */ (() => decodeRecord(gDecodeJsonCons((() => {
|
|
|
44277
44314
|
return Nothing;
|
|
44278
44315
|
}
|
|
44279
44316
|
};
|
|
44280
|
-
})())(
|
|
44281
|
-
|
|
44282
|
-
|
|
44283
|
-
|
|
44284
|
-
"Just",
|
|
44285
|
-
_caseJson(
|
|
44286
|
-
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
|
44287
|
-
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
|
44288
|
-
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
|
44289
|
-
Right,
|
|
44290
|
-
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
|
44291
|
-
(v) => $Either("Left", $JsonDecodeError("TypeMismatch", "String")),
|
|
44292
|
-
j._1
|
|
44293
|
-
)
|
|
44294
|
-
);
|
|
44295
|
-
}
|
|
44296
|
-
return Nothing;
|
|
44297
|
-
}
|
|
44298
|
-
})(gDecodeJsonCons2(gDecodeJsonCons2(gDecodeJsonNil)({ reflectSymbol: () => "inputs" })()())({ reflectSymbol: () => "imports" })()())({
|
|
44299
|
-
reflectSymbol: () => "file"
|
|
44300
|
-
})()())({ reflectSymbol: () => "datasets" })()())().decodeJson)();
|
|
44301
|
-
var figSpecFromJson = (spec) => ({ datasets: spec.datasets, imports: spec.imports, file: spec.file, inputs: spec.inputs });
|
|
44317
|
+
})())(gDecodeJsonCons2(gDecodeJsonCons2(gDecodeJsonCons1(gDecodeJsonCons1(gDecodeJsonNil)({ reflectSymbol: () => "inputs" })()())({
|
|
44318
|
+
reflectSymbol: () => "imports"
|
|
44319
|
+
})()())({ reflectSymbol: () => "fluidSrcPath" })()())({ reflectSymbol: () => "file" })()())({ reflectSymbol: () => "datasets" })()())().decodeJson)();
|
|
44320
|
+
var figSpecFromJson = (spec) => ({ fluidSrcPath: spec.fluidSrcPath, datasets: spec.datasets, imports: spec.imports, file: spec.file, inputs: spec.inputs });
|
|
44302
44321
|
var loadFigure = (fileName) => runAffs_((v) => drawFig(v._1)(v._2))([
|
|
44303
44322
|
_bind($$get(driver)($ResponseFormat("Json", identity))(fileName))((result) => {
|
|
44304
44323
|
if (result.tag === "Left") {
|
|
44305
44324
|
return throwException(error("Json fetching failed with " + printError(result._1)))();
|
|
44306
44325
|
}
|
|
44307
44326
|
if (result.tag === "Right") {
|
|
44308
|
-
const v =
|
|
44327
|
+
const v = decodeJson(result._1.body);
|
|
44309
44328
|
if (v.tag === "Left") {
|
|
44310
44329
|
return throwException(error("JSON decoding failed with " + showJsonDecodeError.show(v._1)))();
|
|
44311
44330
|
}
|
|
44312
44331
|
if (v.tag === "Right") {
|
|
44313
|
-
return _map((v1) => $Tuple("fig", v1))(loadFig({
|
|
44332
|
+
return _map((v1) => $Tuple("fig", v1))(loadFig({
|
|
44333
|
+
fluidSrcPath: v._1.fluidSrcPath,
|
|
44334
|
+
datasets: v._1.datasets,
|
|
44335
|
+
imports: v._1.imports,
|
|
44336
|
+
file: v._1.file,
|
|
44337
|
+
inputs: v._1.inputs
|
|
44338
|
+
})(monadAffAff)(monadErrorAff));
|
|
44314
44339
|
}
|
|
44315
44340
|
}
|
|
44316
44341
|
fail();
|
|
@@ -44318,9 +44343,10 @@ var loadFigure = (fileName) => runAffs_((v) => drawFig(v._1)(v._2))([
|
|
|
44318
44343
|
]);
|
|
44319
44344
|
var drawCode2 = (folder) => (file) => runAffs_(drawFile)([loadFile$p(folder)(file)(monadAffAff)(monadErrorAff)]);
|
|
44320
44345
|
export {
|
|
44346
|
+
decodeJson,
|
|
44321
44347
|
drawCode2 as drawCode,
|
|
44322
44348
|
figSpecFromJson,
|
|
44323
44349
|
gDecodeJsonCons2 as gDecodeJsonCons,
|
|
44324
|
-
|
|
44350
|
+
gDecodeJsonCons1,
|
|
44325
44351
|
loadFigure
|
|
44326
44352
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@explorable-viz/fluid",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.61",
|
|
4
4
|
"description": "Fluid is an experimental programming language which integrates a bidirectional dynamic analysis to connect outputs to data sources in a fine-grained way. Fluid is implemented in PureScript and runs in the browser.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": {
|
|
@@ -25,23 +25,22 @@
|
|
|
25
25
|
"script/util/lisp-case.sh"
|
|
26
26
|
],
|
|
27
27
|
"scripts": {
|
|
28
|
-
"
|
|
28
|
+
"benchmark": "./script/benchmark.sh",
|
|
29
29
|
"build": "./script/build.sh",
|
|
30
30
|
"build-test": "./script/build-test.sh",
|
|
31
31
|
"bundle-fluid": "./script/bundle-fluid.sh",
|
|
32
32
|
"bundle-page": "./script/bundle-page.sh",
|
|
33
33
|
"bundle-website": "./script/bundle-website.sh",
|
|
34
34
|
"bundle-website-all": "./script/bundle-website-all.sh",
|
|
35
|
+
"npm-publish": "./script/npm-publish.sh",
|
|
35
36
|
"serve": "./script/serve.sh",
|
|
36
37
|
"test": "./script/test.sh",
|
|
38
|
+
"test-all": "./script/test-all.sh",
|
|
37
39
|
"test-browser": "./script/test.sh --browsers=Chrome --singleRun=false",
|
|
38
40
|
"test-page": "./script/test-page.sh",
|
|
39
41
|
"test-website": "./script/test-website.sh",
|
|
40
42
|
"test-website-all": "./script/test-website-all.sh",
|
|
41
|
-
"
|
|
42
|
-
"npm-publish": "./script/npm-publish.sh",
|
|
43
|
-
"fluid": "./script/fluid.sh",
|
|
44
|
-
"benchmark": "./script/benchmark.sh"
|
|
43
|
+
"tidy": "./script/tidy.sh"
|
|
45
44
|
},
|
|
46
45
|
"dependencies": {
|
|
47
46
|
"@codemirror/commands": "6.2.2",
|
package/script/bundle-website.sh
CHANGED
|
@@ -50,7 +50,6 @@ echo "Processing shared js files:"
|
|
|
50
50
|
cp -r "${PREFIX:+$PREFIX/}dist/fluid/shared" dist/$WEBSITE_LISP_CASE
|
|
51
51
|
cp -r fluid dist/$WEBSITE_LISP_CASE
|
|
52
52
|
|
|
53
|
-
|
|
54
53
|
if [[ -e "website/$SRC_PATH/test.mjs" ]]; then
|
|
55
54
|
cp website/$SRC_PATH/test.mjs dist/SRC_PATH_LISP_CASE/test.mjs
|
|
56
55
|
fi
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"env": { "browser": true },
|
|
3
|
-
"extends": "eslint:recommended",
|
|
4
|
-
"parserOptions": { "ecmaVersion": 6, "sourceType": "module" },
|
|
5
|
-
"rules": {
|
|
6
|
-
"block-scoped-var": "error",
|
|
7
|
-
"consistent-return": "error",
|
|
8
|
-
"eqeqeq": "error",
|
|
9
|
-
"guard-for-in": "error",
|
|
10
|
-
"no-bitwise": "error",
|
|
11
|
-
"no-caller": "error",
|
|
12
|
-
"no-constant-condition": ["error", { "checkLoops": false }],
|
|
13
|
-
"no-extra-parens": "off",
|
|
14
|
-
"no-extend-native": "error",
|
|
15
|
-
"no-loop-func": "error",
|
|
16
|
-
"no-new": "error",
|
|
17
|
-
"no-param-reassign": "error",
|
|
18
|
-
"no-return-assign": "error",
|
|
19
|
-
"no-sequences": "error",
|
|
20
|
-
"no-unused-expressions": "error",
|
|
21
|
-
"no-use-before-define": "error",
|
|
22
|
-
"no-undef": "error",
|
|
23
|
-
"no-eq-null": "error",
|
|
24
|
-
"radix": ["error", "always"],
|
|
25
|
-
"indent": ["error", 2, { "SwitchCase": 0 }],
|
|
26
|
-
"quotes": ["error", "double"],
|
|
27
|
-
"semi": ["error", "always"],
|
|
28
|
-
"strict": ["error", "global"]
|
|
29
|
-
}
|
|
30
|
-
}
|