Compare commits

..

1259 Commits

Author SHA1 Message Date
Vyacheslav Matyukhin
9e2eace05e
Merge pull request #1231 from quantified-uncertainty/project-in-editors
Project in editors and remove warnings
2022-10-14 18:06:49 +03:00
Vyacheslav Matyukhin
a0000cd179
Merge branch 'develop' into project-in-editors 2022-10-13 03:36:08 +04:00
Vyacheslav Matyukhin
56771820aa
Merge pull request #965 from quantified-uncertainty/experiment-10.0rc1
bump `rescript` and `@rescript/std` to `10.0.1`
2022-10-13 02:25:23 +03:00
Vyacheslav Matyukhin
33f0647be8
Merge pull request #1260 from quantified-uncertainty/drop-bisect-ppx
remove bisect_ppx
2022-10-13 02:24:53 +03:00
cab
878c6f3d4b
Removed nixos.sh
Also added a note in README.md for NixOS users
2022-10-13 01:03:16 +04:00
Vyacheslav Matyukhin
4cd045b9c8
format rescript 2022-10-12 20:11:28 +04:00
Vyacheslav Matyukhin
a617ec0436
update coverage name in prettierignore 2022-10-12 20:00:27 +04:00
Vyacheslav Matyukhin
80cc20ac72
fix tests 2022-10-12 19:49:14 +04:00
Vyacheslav Matyukhin
666524a36a
Merge branch 'drop-bisect-ppx' into experiment-10.0rc1 2022-10-12 19:36:23 +04:00
Vyacheslav Matyukhin
2ed3633fe5
coverage:local echo note 2022-10-12 19:31:44 +04:00
Vyacheslav Matyukhin
deb88c60fb
Merge branch 'develop' into drop-bisect-ppx 2022-10-12 19:12:25 +04:00
Vyacheslav Matyukhin
838d13086a
remove nyc dependency, jest is enough for coverage 2022-10-12 19:09:17 +04:00
cab
11e80941bc
nix: remove bisect_ppx from build 2022-10-12 18:32:08 +04:00
dependabot[bot]
e11cca658e
Merge pull request #1248 from quantified-uncertainty/dependabot/npm_and_yarn/jest-environment-jsdom-29.1.2 2022-10-12 12:38:35 +00:00
dependabot[bot]
2d0949c3f6
⬆️ Bump jest-environment-jsdom from 29.0.3 to 29.1.2
Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 29.0.3 to 29.1.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.1.2/packages/jest-environment-jsdom)

---
updated-dependencies:
- dependency-name: jest-environment-jsdom
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-12 12:30:46 +00:00
Vyacheslav Matyukhin
8dac70082c
remove bisect_ppx 2022-10-12 16:21:07 +04:00
Vyacheslav Matyukhin
d7e548d84e
Merge pull request #1259 from quantified-uncertainty/fetch-depth-for-coverage
fetch-depth for coverage job
2022-10-12 15:00:30 +03:00
dependabot[bot]
2cd22fa8e5
Merge pull request #1245 from quantified-uncertainty/dependabot/npm_and_yarn/framer-motion-7.5.3 2022-10-12 11:48:03 +00:00
dependabot[bot]
21e4908fbf
Merge pull request #1247 from quantified-uncertainty/dependabot/npm_and_yarn/web-vitals-3.0.3 2022-10-12 11:40:54 +00:00
dependabot[bot]
07802ff151
Merge pull request #1252 from quantified-uncertainty/dependabot/npm_and_yarn/react-hook-form-7.37.0 2022-10-12 11:40:33 +00:00
dependabot[bot]
f079c1f6ef
Merge pull request #1249 from quantified-uncertainty/dependabot/npm_and_yarn/ts-jest-29.0.3 2022-10-12 11:40:25 +00:00
dependabot[bot]
91a3a066c2
Merge pull request #1251 from quantified-uncertainty/dependabot/npm_and_yarn/chalk-5.1.0 2022-10-12 11:40:24 +00:00
dependabot[bot]
8608faa79b
Merge pull request #1250 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.8.3 2022-10-12 11:39:53 +00:00
Vyacheslav Matyukhin
e076bd935f
fetch-depth for coverage job 2022-10-12 15:35:42 +04:00
dependabot[bot]
fdcdf2fa3d
Merge pull request #1253 from quantified-uncertainty/dependabot/npm_and_yarn/jsdom-20.0.1 2022-10-12 11:34:14 +00:00
Vyacheslav Matyukhin
2d9fea4f21
Merge pull request #1244 from quantified-uncertainty/squiggle-cli-docs-2022-10-10
tweak: Add more verbose documentation to the cli README
2022-10-12 10:59:50 +03:00
Vyacheslav Matyukhin
f6322fad13
Merge pull request #1255 from quantified-uncertainty/fix-docs-truncate-right
Should be truncateRight
2022-10-12 10:36:50 +03:00
Sam Nolan
699960d220 Should be truncateRight 2022-10-12 14:30:38 +11:00
Ozzie Gooen
ac0cc01852 Ran formatting 2022-10-11 18:58:35 -07:00
Ozzie Gooen
c65a9d3ae6
Merge pull request #1238 from quantified-uncertainty/fix-manual-run
Fix manual run
2022-10-11 14:20:34 -07:00
dependabot[bot]
113be7d8cb
⬆️ Bump jsdom from 20.0.0 to 20.0.1
Bumps [jsdom](https://github.com/jsdom/jsdom) from 20.0.0 to 20.0.1.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/master/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/20.0.0...20.0.1)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 15:37:48 +00:00
dependabot[bot]
2596d1a695
⬆️ Bump react-hook-form from 7.36.1 to 7.37.0
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.36.1 to 7.37.0.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.36.1...v7.37.0)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 15:34:57 +00:00
dependabot[bot]
41153988d8
⬆️ Bump chalk from 5.0.1 to 5.1.0
Bumps [chalk](https://github.com/chalk/chalk) from 5.0.1 to 5.1.0.
- [Release notes](https://github.com/chalk/chalk/releases)
- [Commits](https://github.com/chalk/chalk/compare/v5.0.1...v5.1.0)

---
updated-dependencies:
- dependency-name: chalk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 15:34:54 +00:00
dependabot[bot]
8c7340185c
⬆️ Bump @types/node from 18.8.0 to 18.8.3
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.8.0 to 18.8.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 15:34:12 +00:00
dependabot[bot]
bd4250c793
⬆️ Bump ts-jest from 29.0.2 to 29.0.3
Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 29.0.2 to 29.0.3.
- [Release notes](https://github.com/kulshekhar/ts-jest/releases)
- [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.0.2...v29.0.3)

---
updated-dependencies:
- dependency-name: ts-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 15:33:01 +00:00
dependabot[bot]
c204ce37ad
⬆️ Bump web-vitals from 3.0.2 to 3.0.3
Bumps [web-vitals](https://github.com/GoogleChrome/web-vitals) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/GoogleChrome/web-vitals/releases)
- [Changelog](https://github.com/GoogleChrome/web-vitals/blob/main/CHANGELOG.md)
- [Commits](https://github.com/GoogleChrome/web-vitals/compare/v3.0.2...v3.0.3)

---
updated-dependencies:
- dependency-name: web-vitals
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 15:31:36 +00:00
dependabot[bot]
344ee0ce17
⬆️ Bump framer-motion from 7.5.1 to 7.5.3
Bumps [framer-motion](https://github.com/framer/motion) from 7.5.1 to 7.5.3.
- [Release notes](https://github.com/framer/motion/releases)
- [Changelog](https://github.com/framer/motion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/framer/motion/compare/v7.5.1...v7.5.3)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 15:28:06 +00:00
71db023f0c tweak: Add more verbose documentation to the cli README 2022-10-10 14:24:42 +01:00
Vyacheslav Matyukhin
bd94e51b31
Merge pull request #1240 from quantified-uncertainty/1109-fix
note that SquiggleEditorWithImportedBindings is broken (fixes #1109)
2022-10-10 12:35:36 +03:00
Vyacheslav Matyukhin
964e95f598
Merge pull request #1242 from quantified-uncertainty/changelog
Changelog page
2022-10-10 12:35:24 +03:00
Sam Nolan
98454a87b5 Get projects working in Playgrounds 2022-10-10 14:23:04 +11:00
Vyacheslav Matyukhin
5efb66c3e5
changelog page 2022-10-09 15:27:47 +04:00
Vyacheslav Matyukhin
2389dff69a
note that SquiggleEditorWithImportedBindings is broken (fixes #1109) 2022-10-09 15:04:45 +04:00
Vyacheslav Matyukhin
1ea3c975d5
Merge pull request #1233 from quantified-uncertainty/turborepo
Turborepo
2022-10-09 13:03:20 +03:00
Vyacheslav Matyukhin
1e13dc71f1
Merge branch 'develop' into turborepo 2022-10-09 13:47:41 +04:00
Vyacheslav Matyukhin
a515d9560c
Merge pull request #1232 from cab404/cab/esbuild-vsix
vscode-ext: move to esbuild bundling, cleanup
2022-10-09 12:42:38 +03:00
cab
9582be7331
lint 2022-10-09 13:28:59 +04:00
Vyacheslav Matyukhin
827bb43354
fix #1236 2022-10-09 13:15:51 +04:00
Vyacheslav Matyukhin
27c4c9acf2
playground and autorun tests (incomplete) 2022-10-09 13:15:26 +04:00
cab
28e944dd04
tsconfig: switch includes 2022-10-08 22:06:26 +04:00
Vyacheslav Matyukhin
9992d7da1a
empty outputs of lint and test 2022-10-08 21:34:31 +04:00
Vyacheslav Matyukhin
de532c72d6
custom squiggle-components outputs; never cache coverage 2022-10-08 21:15:37 +04:00
Vyacheslav Matyukhin
fd6c4ae1de
yarn in CI tuning 2022-10-08 19:55:57 +04:00
Vyacheslav Matyukhin
5621567af2
nudge CI to check caching 2022-10-08 19:55:33 +04:00
Vyacheslav Matyukhin
000b7a6248
change coverage:local order too 2022-10-08 19:46:59 +04:00
cab
13a54f3e3d
vscode-ext: move to esbuild bundling, cleanup
This removes node_modules from dependencies all together fixing long
time issue with yarn putting only a subset of dependencies in the
extension source tree.

It as well makes extension footprint 15x smaller. (down to 2.3Mb)

Kinda fixes #1162? It actually un-patches vsce though — it really is not
an issue it should be solving :D
2022-10-08 19:24:30 +04:00
Vyacheslav Matyukhin
4abdb69f23
fix coverage? 2022-10-08 19:24:12 +04:00
Vyacheslav Matyukhin
ed86fd9f77
separate job for coverage, fix infinite loop 2022-10-08 19:13:44 +04:00
Vyacheslav Matyukhin
bcc5b5846f
list all turbo outputs for squiggle-lang 2022-10-08 19:02:31 +04:00
Vyacheslav Matyukhin
da8db5db9c
call yarn 2022-10-08 18:37:34 +04:00
Vyacheslav Matyukhin
d7c6996284
vscode-ext depends on old 0.2.11 lang again for parsing; more turbo tuning 2022-10-08 18:16:54 +04:00
Vyacheslav Matyukhin
b7d56a3f1f
turbo tuning 2022-10-08 18:03:47 +04:00
Vyacheslav Matyukhin
d037913e7c
npx turbo 2022-10-08 17:45:59 +04:00
Vyacheslav Matyukhin
2c01c77646
Merge branch 'develop' into turborepo 2022-10-08 17:44:52 +04:00
Vyacheslav Matyukhin
7493f2e2e5
update vercel configs to use turbo 2022-10-08 17:41:58 +04:00
Vyacheslav Matyukhin
07fcbeb568
more turbo; rewrite and simplify github CI 2022-10-08 17:28:43 +04:00
Sam Nolan
0f8e7ce6b6 Project in editors and remove warnings 2022-10-08 16:23:58 +11:00
Vyacheslav Matyukhin
cc846aa74c
turborepo 2022-10-08 05:19:15 +04:00
Vyacheslav Matyukhin
214a54e57e
prettierignore generated files 2022-10-08 05:18:44 +04:00
Vyacheslav Matyukhin
eaa7d38428
Merge pull request #1230 from quantified-uncertainty/merge-master-to-develop
Merge master to develop
2022-10-08 04:07:54 +03:00
Vyacheslav Matyukhin
96e0418f60
Merge branch 'master' into remerge-develop-from-master 2022-10-08 04:45:30 +04:00
Vyacheslav Matyukhin
2bb9622edd
Merge pull request #1172 from quantified-uncertainty/error-locations
Error locations and stacktraces
2022-10-08 03:41:55 +03:00
Vyacheslav Matyukhin
76ea024342
Merge branch 'develop' into error-locations 2022-10-08 04:29:57 +04:00
Vyacheslav Matyukhin
d5f0a6bcf8
Merge branch 'develop' into error-locations 2022-10-08 04:12:19 +04:00
Vyacheslav Matyukhin
b2c10924cd
Merge pull request #1142 from quantified-uncertainty/project-component
Add projects to components
2022-10-08 02:58:48 +03:00
Vyacheslav Matyukhin
7bfe52c2d3
Merge pull request #1228 from quantified-uncertainty/vercel-on-master
Vercel on master
2022-10-07 15:45:04 +03:00
Vyacheslav Matyukhin
d6a48d9cb9
disable ignoreCommand in vercel.json for now 2022-10-07 16:23:28 +04:00
Vyacheslav Matyukhin
4efd2c9e05
remove special dependabot case from ignoreCommand 2022-10-07 16:09:37 +04:00
Vyacheslav Matyukhin
0ab03eca96
fix broken link in docs 2022-10-07 16:09:35 +04:00
Vyacheslav Matyukhin
9107b241f5
replace netlify with vercel; update CONTRIBUTING.md 2022-10-07 16:09:32 +04:00
Vyacheslav Matyukhin
c1e67066aa
vercel.json configs 2022-10-07 16:09:30 +04:00
Vyacheslav Matyukhin
ccdcb1a72b
Merge pull request #1227 from quantified-uncertainty/vercel
Move to Vercel
2022-10-07 15:07:29 +03:00
Sam Nolan
85a8c06107 Respond to review comments 2022-10-07 11:18:13 +11:00
Vyacheslav Matyukhin
871254dff9
nudging Vercel to check ignoreCommand 2022-10-07 02:54:27 +04:00
Vyacheslav Matyukhin
ff5e0dd14c
remove special dependabot case from ignoreCommand 2022-10-07 02:47:43 +04:00
Vyacheslav Matyukhin
f6e69dad38
fix broken link in docs 2022-10-07 02:20:33 +04:00
Vyacheslav Matyukhin
7e4139acb3
replace netlify with vercel; update CONTRIBUTING.md 2022-10-07 02:09:30 +04:00
Vyacheslav Matyukhin
af885ef58f
vercel.json configs 2022-10-07 01:38:38 +04:00
Vyacheslav Matyukhin
061d785996
Merge pull request #1226 from skejeton/sampleset-fix-error-message
SampleSet.fromList fix error message
2022-10-06 23:38:18 +03:00
skejeton
355ff199c1
fix: merge 2022-10-06 23:31:34 +03:00
skejeton
a48efc23b0 Merge branch 'develop' of https://github.com/skejeton/squiggle into sampleset-fix-error-message 2022-10-06 23:24:45 +03:00
skejeton
2c5511efc1
fix: SampleSet.fromList giving bad error message #1186 2022-10-06 23:19:43 +03:00
Vyacheslav Matyukhin
f39c69a2d4
Merge pull request #1225 from quantified-uncertainty/epic-0.5.0
Remerge epic-0.5.0 to develop
2022-10-06 22:51:33 +03:00
Vyacheslav Matyukhin
b4c649d03b
Merge branch 'develop' into epic-0.5.0 2022-10-06 23:33:40 +04:00
Vyacheslav Matyukhin
8184396d3e
Merge pull request #1224 from skejeton/list-length
feature: List.length
2022-10-06 22:05:40 +03:00
skejeton
1a131828e6
fix: List.length requiresNamespace wasn't set to true 2022-10-06 21:39:44 +03:00
skejeton
92d3c761fa
feature: List.length 2022-10-06 16:49:33 +03:00
Sam Nolan
42e9ad810d Format typescript 2022-10-06 13:40:31 +11:00
Sam Nolan
a718b369c2 Make code neccesary in hook 2022-10-06 13:38:59 +11:00
Vyacheslav Matyukhin
bac954d949
nudge vercel CI 2022-10-06 02:42:50 +04:00
Ozzie Gooen
1474630af8
Merge pull request #1216 from david-mears-2/suffix-numbers
English language pedantry: Fix use of 'prefix' in docs
2022-10-05 11:01:33 -07:00
Ozzie Gooen
ffc6cd3840
Merge pull request #1222 from quantified-uncertainty/no-dark-mode
Disable dark mode
2022-10-05 11:01:02 -07:00
Vyacheslav Matyukhin
b5c5b81db4
nudge CI 2022-10-05 19:56:48 +04:00
Vyacheslav Matyukhin
77dbb223f9
disable dark mode 2022-10-05 19:36:48 +04:00
Vyacheslav Matyukhin
19a44eb12f
fix #1214 2022-10-05 19:19:22 +04:00
Vyacheslav Matyukhin
8cbbdf5489
stacktrace test 2022-10-05 18:07:37 +04:00
Vyacheslav Matyukhin
2d0e6432cd
fix #1199 2022-10-05 17:10:53 +04:00
Vyacheslav Matyukhin
0137b44689
more cleanups, some tests 2022-10-05 16:22:29 +04:00
Vyacheslav Matyukhin
6055320aa2
more cleanups 2022-10-05 15:56:13 +04:00
Vyacheslav Matyukhin
6463c4db5a
minor cleanups 2022-10-05 15:49:16 +04:00
Vyacheslav Matyukhin
a45d6c6c57
format 2022-10-05 05:22:00 +04:00
Vyacheslav Matyukhin
9f1c5affc4
ts fix 2022-10-05 05:21:39 +04:00
Vyacheslav Matyukhin
234ebe2103
locations for syntax errors 2022-10-05 05:17:30 +04:00
Sam Nolan
f19c096e7c Remove needsClean 2022-10-05 12:06:03 +11:00
Vyacheslav Matyukhin
298492b3b8
Merge branch 'develop' into error-locations 2022-10-05 05:00:02 +04:00
Sam Nolan
bb6fece694 Restrict interfaces with projects for components 2022-10-05 11:57:32 +11:00
Vyacheslav Matyukhin
26dbd29ec8
framestack reimplemented 2022-10-05 04:51:23 +04:00
David Mears
c11fbda8b0
English language: Fix use of 'prefix' in docs
prefixes come before, postfixes come after, suffixes is a generic term
2022-10-04 21:33:40 +01:00
Vyacheslav Matyukhin
d60792aa93
Merge pull request #1201 from quantified-uncertainty/issue-to-operator-priority
to operator priority
2022-10-04 15:23:44 +03:00
Umur Ozkul
39cc4a32ca to operator priority test 2022-10-04 13:04:57 +02:00
Umur Ozkul
1bb9e75ed3 Merge branch 'develop' into issue-to-operator-priority 2022-10-04 13:01:48 +02:00
Sam Nolan
b512751110 Update yarn.lock 2022-10-04 14:03:35 +11:00
Sam Nolan
b412eee646 Add tests for different types of cleanup 2022-10-04 13:38:15 +11:00
Sam Nolan
a0e3f70dbb Add cleanup tests 2022-10-04 12:22:41 +11:00
Sam Nolan
2be9d274f2 Merge branch 'develop' into project-component 2022-10-04 11:07:20 +11:00
Sam Nolan
60f464ebac
Merge pull request #1188 from quantified-uncertainty/component-testing
Component testing
2022-10-04 11:05:29 +11:00
Sam Nolan
2ed234b83b Merge branch 'develop' into component-testing 2022-10-04 10:35:48 +11:00
Sam Nolan
be8dbf8aa1 Merge branch 'remove-sources' into develop 2022-10-04 10:24:07 +11:00
Sam Nolan
9caee0fecd
Merge pull request #1167 from quantified-uncertainty/remove-sources
Add removeSource to project
2022-10-04 10:20:40 +11:00
Sam Nolan
156d98c979 Add comment about when width is not finite 2022-10-04 09:54:43 +11:00
Sam Nolan
20382a5476 Update incorrect comments 2022-10-04 09:47:17 +11:00
dependabot[bot]
d13b14b18c
Merge pull request #1205 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.8.0 2022-10-03 14:58:49 +00:00
dependabot[bot]
48e19000f2
Merge pull request #1208 from quantified-uncertainty/dependabot/github_actions/fkirc/skip-duplicate-actions-5.2.0 2022-10-03 14:51:34 +00:00
dependabot[bot]
e21eedd579
⬆️ Bump @types/node from 18.7.22 to 18.8.0
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.22 to 18.8.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 14:50:50 +00:00
dependabot[bot]
ab8f11abe0
Merge pull request #1207 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-4.8.4 2022-10-03 14:47:30 +00:00
dependabot[bot]
c95152f4f5
Merge pull request #1206 from quantified-uncertainty/dependabot/npm_and_yarn/framer-motion-7.5.1 2022-10-03 14:45:05 +00:00
dependabot[bot]
8dbdc89fa0
Merge pull request #1204 from quantified-uncertainty/dependabot/npm_and_yarn/types/lodash-4.14.186 2022-10-03 14:42:56 +00:00
dependabot[bot]
42c67c549a
⬆️ Bump fkirc/skip-duplicate-actions from 5.1.0 to 5.2.0
Bumps [fkirc/skip-duplicate-actions](https://github.com/fkirc/skip-duplicate-actions) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/fkirc/skip-duplicate-actions/releases)
- [Commits](https://github.com/fkirc/skip-duplicate-actions/compare/v5.1.0...v5.2.0)

---
updated-dependencies:
- dependency-name: fkirc/skip-duplicate-actions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 14:42:35 +00:00
dependabot[bot]
344fb8eba4
Merge pull request #1202 from quantified-uncertainty/dependabot/npm_and_yarn/headlessui/react-1.7.3 2022-10-03 14:41:25 +00:00
dependabot[bot]
02eb10f092
⬆️ Bump typescript from 4.8.3 to 4.8.4
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.8.3 to 4.8.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.8.3...v4.8.4)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 14:38:15 +00:00
dependabot[bot]
058ea0a6bb
Merge pull request #1203 from quantified-uncertainty/dependabot/npm_and_yarn/commander-9.4.1 2022-10-03 14:37:31 +00:00
dependabot[bot]
9f57645c90
⬆️ Bump framer-motion from 7.4.0 to 7.5.1
Bumps [framer-motion](https://github.com/framer/motion) from 7.4.0 to 7.5.1.
- [Release notes](https://github.com/framer/motion/releases)
- [Changelog](https://github.com/framer/motion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/framer/motion/compare/v7.4.0...v7.5.1)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 14:37:08 +00:00
dependabot[bot]
fd5ef6720e
⬆️ Bump @types/lodash from 4.14.185 to 4.14.186
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.185 to 4.14.186.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

---
updated-dependencies:
- dependency-name: "@types/lodash"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 14:34:00 +00:00
dependabot[bot]
545d74131c
⬆️ Bump commander from 9.4.0 to 9.4.1
Bumps [commander](https://github.com/tj/commander.js) from 9.4.0 to 9.4.1.
- [Release notes](https://github.com/tj/commander.js/releases)
- [Changelog](https://github.com/tj/commander.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tj/commander.js/compare/v9.4.0...v9.4.1)

---
updated-dependencies:
- dependency-name: commander
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 14:32:55 +00:00
dependabot[bot]
f5d1777ce8
⬆️ Bump @headlessui/react from 1.7.2 to 1.7.3
Bumps [@headlessui/react](https://github.com/tailwindlabs/headlessui/tree/HEAD/packages/@headlessui-react) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/tailwindlabs/headlessui/releases)
- [Changelog](https://github.com/tailwindlabs/headlessui/blob/main/packages/@headlessui-react/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/headlessui/commits/@headlessui/react@v1.7.3/packages/@headlessui-react)

---
updated-dependencies:
- dependency-name: "@headlessui/react"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 14:32:28 +00:00
Umur Ozkul
54cbcea5d6 to operator priority
higher than logical operators, lower than all other operators
2022-10-03 16:16:00 +02:00
Vyacheslav Matyukhin
5f5334ed8e
Merge pull request #1200 from quantified-uncertainty/sampleset-doc-fix
fix SampleSet.fromDist docs (fixes #1039)
2022-10-03 02:45:38 +03:00
Vyacheslav Matyukhin
f33323c4d7
fix SampleSet.fromDist docs (fixes #1039) 2022-10-03 03:29:02 +04:00
Vyacheslav Matyukhin
54d52e4d91
Merge pull request #1193 from quantified-uncertainty/develop
Disable algolia search on master
2022-10-02 17:02:18 +03:00
Vyacheslav Matyukhin
7856669239
Merge pull request #1191 from quantified-uncertainty/disable-search
Disable algolia search
2022-10-02 16:54:20 +03:00
Vyacheslav Matyukhin
ca91604ce2
disable algolia search 2022-10-02 17:47:49 +04:00
Vyacheslav Matyukhin
b1639bf62c
Merge pull request #1190 from quantified-uncertainty/develop
0.5.0
2022-10-02 14:39:11 +03:00
Vyacheslav Matyukhin
d5a0e0fe6c
0.5 release versions 2022-10-02 15:30:17 +04:00
Vyacheslav Matyukhin
ef3069c665
Merge pull request #1185 from quantified-uncertainty/epic-0.5.0
0.5.0 overhaul
2022-10-02 13:48:30 +03:00
Vyacheslav Matyukhin
c47d5b4e62
remove SquigglePartial story (was broken since 0.4) 2022-10-02 14:28:03 +04:00
Vyacheslav Matyukhin
a764f3075c
WIP (broken) 2022-10-02 14:04:45 +04:00
dependabot[bot]
832bfd82dd
Merge pull request #1176 from quantified-uncertainty/dependabot/npm_and_yarn/ts-loader-9.4.1 2022-09-30 15:37:55 +00:00
dependabot[bot]
6819e6d38d
⬆️ Bump ts-loader from 9.4.0 to 9.4.1
Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 9.4.0 to 9.4.1.
- [Release notes](https://github.com/TypeStrong/ts-loader/releases)
- [Changelog](https://github.com/TypeStrong/ts-loader/blob/main/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/ts-loader/compare/v9.4.0...9.4.1)

---
updated-dependencies:
- dependency-name: ts-loader
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-30 15:28:46 +00:00
Sam Nolan
afaabdb5b3 Fix github CI grammar 2022-09-30 15:31:39 +10:00
Sam Nolan
9321fe5681 Add component testing to CI 2022-09-30 15:27:07 +10:00
Sam Nolan
056bbb65f4 Merge branch 'epic-0.5.0' into component-testing 2022-09-30 15:21:29 +10:00
Sam Nolan
5d38871e25 Add component testing and remove vega warnings 2022-09-30 15:19:49 +10:00
Sam Nolan
c5370dd799 Merge branch 'epic-0.5.0' into remove-sources 2022-09-30 11:51:39 +10:00
Sam Nolan
6cd368ba7d Format components 2022-09-30 10:38:48 +10:00
Sam Nolan
8477b0c5f7 Format Rescript + fix ts error 2022-09-30 10:36:42 +10:00
Sam Nolan
ecf9d43401 Format rescript 2022-09-30 10:34:15 +10:00
Sam Nolan
32cd765969 Merge branch 'develop' into epic-0.5.0 2022-09-30 10:30:36 +10:00
Sam Nolan
7bff9bafb8 Merge branch 'develop' into project-component 2022-09-30 10:23:42 +10:00
Sam Nolan
b00edc78f9 Merge branch 'develop' into remove-sources 2022-09-30 10:22:40 +10:00
Sam Nolan
33c16bd072 Start component testing 2022-09-30 10:22:14 +10:00
Vyacheslav Matyukhin
184584c9f3
CallStack, location -> frame, WIP 2022-09-29 19:48:31 +04:00
dependabot[bot]
46e689af51
Merge pull request #1182 from quantified-uncertainty/dependabot/npm_and_yarn/framer-motion-7.4.0 2022-09-28 21:58:04 +00:00
Ozzie Gooen
d001b3c245
Add epic-0.5.0 to pull_request branch 2022-09-28 09:52:45 -04:00
Sam Nolan
c9e5b11416 Format rescript 2022-09-28 14:16:05 +10:00
Vyacheslav Matyukhin
4c56b2fd07
implement error markers in editor 2022-09-27 02:29:00 +04:00
dependabot[bot]
c44c4baa5f
Merge pull request #1177 from quantified-uncertainty/dependabot/npm_and_yarn/webpack-dev-server-4.11.1 2022-09-26 18:51:49 +00:00
dependabot[bot]
67e8f1a196
Merge pull request #1180 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.7.22 2022-09-26 18:33:57 +00:00
dependabot[bot]
acae4bfd3e
Merge pull request #1174 from quantified-uncertainty/dependabot/npm_and_yarn/react-hook-form-7.36.1 2022-09-26 18:29:59 +00:00
dependabot[bot]
3098cf7b71
⬆️ Bump @types/node from 18.7.18 to 18.7.22
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.18 to 18.7.22.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-26 18:24:08 +00:00
dependabot[bot]
bc1bfeb5cd
⬆️ Bump webpack-dev-server from 4.11.0 to 4.11.1
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.11.0 to 4.11.1.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.11.0...v4.11.1)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-26 18:24:06 +00:00
dependabot[bot]
dd20b52ee8
Merge pull request #1179 from quantified-uncertainty/dependabot/npm_and_yarn/fast-check-3.1.4 2022-09-26 18:22:17 +00:00
dependabot[bot]
28ba89b8c8
⬆️ Bump react-hook-form from 7.35.0 to 7.36.1
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.35.0 to 7.36.1.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.35.0...v7.36.1)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-26 18:21:37 +00:00
dependabot[bot]
f02e522a2e
⬆️ Bump fast-check from 3.1.3 to 3.1.4
Bumps [fast-check](https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/dubzzz/fast-check/releases)
- [Changelog](https://github.com/dubzzz/fast-check/blob/main/packages/fast-check/CHANGELOG.md)
- [Commits](https://github.com/dubzzz/fast-check/commits/v3.1.4/packages/fast-check)

---
updated-dependencies:
- dependency-name: fast-check
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-26 18:12:34 +00:00
dependabot[bot]
730851379e
⬆️ Bump framer-motion from 7.3.5 to 7.4.0
Bumps [framer-motion](https://github.com/framer/motion) from 7.3.5 to 7.4.0.
- [Release notes](https://github.com/framer/motion/releases)
- [Changelog](https://github.com/framer/motion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/framer/motion/compare/v7.3.5...v7.4.0)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-26 18:08:09 +00:00
Quinn
cca9786b8a
Merge pull request #1178 from quantified-uncertainty/dependabot/github_actions/fkirc/skip-duplicate-actions-5.1.0
⬆️ Bump fkirc/skip-duplicate-actions from 4.0.0 to 5.1.0
2022-09-26 13:53:51 -04:00
Quinn
4521d03664
Merge pull request #1181 from quantified-uncertainty/dependabot/npm_and_yarn/types/react-18.0.21
⬆️ Bump @types/react from 18.0.20 to 18.0.21
2022-09-26 13:52:32 -04:00
Ozzie Gooen
6d1bc4009f
Merge pull request #1171 from quantified-uncertainty/sampleset-cdf 2022-09-26 12:23:24 -04:00
Ozzie Gooen
7498eb4925
Merge pull request #1170 from quantified-uncertainty/OAGr-remove-Function
Delete Function.md
2022-09-26 10:57:12 -04:00
dependabot[bot]
bf3f71c721
⬆️ Bump @types/react from 18.0.20 to 18.0.21
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.0.20 to 18.0.21.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-26 14:38:43 +00:00
dependabot[bot]
1548033fb4
⬆️ Bump fkirc/skip-duplicate-actions from 4.0.0 to 5.1.0
Bumps [fkirc/skip-duplicate-actions](https://github.com/fkirc/skip-duplicate-actions) from 4.0.0 to 5.1.0.
- [Release notes](https://github.com/fkirc/skip-duplicate-actions/releases)
- [Commits](https://github.com/fkirc/skip-duplicate-actions/compare/v4.0.0...v5.1.0)

---
updated-dependencies:
- dependency-name: fkirc/skip-duplicate-actions
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-26 14:36:11 +00:00
Vyacheslav Matyukhin
845d38e375
top-level SqError; expose stacktrace in TS API 2022-09-26 16:27:45 +04:00
Sam Nolan
b2ae31742e Format rescript 2022-09-26 14:20:00 +10:00
Sam Nolan
96a0d9c489 Add removeSource to project 2022-09-26 14:14:37 +10:00
Sam Nolan
b4fbd1f8e8 Format and ts errors 2022-09-26 13:55:22 +10:00
Sam Nolan
64f9c9ddfc Merge branch 'overhaul' into project-component 2022-09-26 13:35:12 +10:00
Vyacheslav Matyukhin
69b32d0b93
refactor into SqError 2022-09-26 04:44:08 +04:00
Vyacheslav Matyukhin
111dd5535c
move location to Reducer_Peggy_Parse, separate parse errors 2022-09-26 03:42:34 +04:00
Vyacheslav Matyukhin
41574e08c9
error stacktraces and locations (initial take, WIP) 2022-09-25 03:16:14 +04:00
Vyacheslav Matyukhin
d3bc08ab9d
remove all type-related code 2022-09-24 21:26:44 +04:00
Vyacheslav Matyukhin
c337211af6
rename tests 2022-09-24 20:39:09 +04:00
Vyacheslav Matyukhin
2e9dabccd9
Merge branch 'develop' into overhaul 2022-09-24 20:29:00 +04:00
Vyacheslav Matyukhin
bfcea1df02
implement SampleSet.cdf 2022-09-24 19:18:30 +04:00
Ozzie Gooen
f82cff9c19
Delete Function.md 2022-09-24 10:13:20 -04:00
Sam Nolan
3ae442ee1f Fix some collection issues 2022-09-22 10:02:15 +10:00
Sam Nolan
94b4744bea Merge branch 'develop' into project-component 2022-09-22 08:30:57 +10:00
Vyacheslav Matyukhin
9ddd1bfae0
Merge pull request #1166 from quantified-uncertainty/fix-multiple-plots
Fixes multiple plots
2022-09-21 22:50:29 +04:00
Sam Nolan
46fd5900d2 Make distributions required 2022-09-21 16:14:06 +10:00
Sam Nolan
d619794cf6 Merge branch 'develop' into project-component 2022-09-21 16:09:58 +10:00
Sam Nolan
b7d634de86 Rename import as prefix to real source name 2022-09-21 13:40:15 +10:00
Sam Nolan
2458762acd Add auto generated cell ids 2022-09-21 13:02:33 +10:00
Sam Nolan
59e937ad7c Re-add noUnknown to yup schema for plots 2022-09-21 09:42:21 +09:30
Sam Nolan
483aaf73db Fixes multiple plots 2022-09-21 09:39:28 +09:30
Vyacheslav Matyukhin
4be410e33b
0.5.0-alpha.2 2022-09-21 03:41:12 +04:00
Vyacheslav Matyukhin
14070a589d
Merge pull request #1165 from quantified-uncertainty/typed-pointset-conversion
Typed pointset conversion
2022-09-21 03:21:22 +04:00
Vyacheslav Matyukhin
824749976e
tweaking names 2022-09-21 03:19:39 +04:00
Vyacheslav Matyukhin
59d38f7885
E.A.Floats.sort uses typed arrays 2022-09-21 03:17:25 +04:00
Vyacheslav Matyukhin
c9fc08672d
Merge pull request #1164 from quantified-uncertainty/no-fr-values
No frValues
2022-09-21 03:03:51 +04:00
Vyacheslav Matyukhin
25dce72f11
getExn -> get 2022-09-21 03:03:17 +04:00
Vyacheslav Matyukhin
d9f4171943
Merge pull request #1161 from quantified-uncertainty/sampleset-to-pointset-speedups
Sampleset to pointset speedups
2022-09-21 02:51:26 +04:00
Vyacheslav Matyukhin
a96f9ffa9a
another splitContinuousAndDiscrete test 2022-09-21 02:25:14 +04:00
Vyacheslav Matyukhin
13f352752e
review updates 2022-09-21 02:20:17 +04:00
Vyacheslav Matyukhin
5db63fbe9f
fastSort in toPointSet conversion 2022-09-21 01:42:54 +04:00
Vyacheslav Matyukhin
9f103f5cbe
3-arg fnDefinition 2022-09-20 21:08:42 +04:00
Vyacheslav Matyukhin
a4fd10e1fb
Merge branch 'overhaul' into no-fr-values 2022-09-20 20:54:36 +04:00
Vyacheslav Matyukhin
e07236c22d
fix scripts, support SAMPLE_COUNT 2022-09-20 20:54:26 +04:00
Vyacheslav Matyukhin
e079404f7c
Merge branch 'develop' into overhaul 2022-09-20 19:46:02 +04:00
Vyacheslav Matyukhin
4ed5ce0d47
WIP 2022-09-20 19:42:50 +04:00
dependabot[bot]
13f599be33
Merge pull request #1160 from quantified-uncertainty/dependabot/npm_and_yarn/storybook/addon-essentials-6.5.12 2022-09-20 04:15:35 +00:00
dependabot[bot]
a247a05340
⬆️ Bump @storybook/addon-essentials from 6.5.10 to 6.5.12
Bumps [@storybook/addon-essentials](https://github.com/storybookjs/storybook/tree/HEAD/addons/essentials) from 6.5.10 to 6.5.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.12/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.12/addons/essentials)

---
updated-dependencies:
- dependency-name: "@storybook/addon-essentials"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 04:06:31 +00:00
dependabot[bot]
80bbe2efb0
Merge pull request #1152 from quantified-uncertainty/dependabot/npm_and_yarn/storybook/manager-webpack5-6.5.12 2022-09-20 04:01:24 +00:00
dependabot[bot]
795b432f86
⬆️ Bump @storybook/manager-webpack5 from 6.5.10 to 6.5.12
Bumps [@storybook/manager-webpack5](https://github.com/storybookjs/storybook/tree/HEAD/lib/core) from 6.5.10 to 6.5.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.12/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.12/lib/core)

---
updated-dependencies:
- dependency-name: "@storybook/manager-webpack5"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 03:52:37 +00:00
dependabot[bot]
7021286035
Merge pull request #1153 from quantified-uncertainty/dependabot/npm_and_yarn/ts-loader-9.4.0 2022-09-20 03:50:21 +00:00
dependabot[bot]
ce89041d68
Merge pull request #1158 from quantified-uncertainty/dependabot/npm_and_yarn/storybook/addon-links-6.5.12 2022-09-20 03:44:37 +00:00
dependabot[bot]
bdffee0e13
Merge pull request #1151 from quantified-uncertainty/dependabot/npm_and_yarn/storybook/addon-actions-6.5.12 2022-09-20 03:44:32 +00:00
dependabot[bot]
a30c63d547
Merge pull request #1155 from quantified-uncertainty/dependabot/npm_and_yarn/storybook/react-6.5.12 2022-09-20 03:42:28 +00:00
dependabot[bot]
336c8b7d48
Merge pull request #1156 from quantified-uncertainty/dependabot/npm_and_yarn/headlessui/react-1.7.2 2022-09-20 03:39:30 +00:00
dependabot[bot]
ccc20e472e
⬆️ Bump ts-loader from 9.3.1 to 9.4.0
Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 9.3.1 to 9.4.0.
- [Release notes](https://github.com/TypeStrong/ts-loader/releases)
- [Changelog](https://github.com/TypeStrong/ts-loader/blob/main/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/ts-loader/compare/v9.3.1...v9.4.0)

---
updated-dependencies:
- dependency-name: ts-loader
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 03:36:48 +00:00
dependabot[bot]
170b91742c
⬆️ Bump @storybook/addon-links from 6.5.10 to 6.5.12
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 6.5.10 to 6.5.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.12/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.12/addons/links)

---
updated-dependencies:
- dependency-name: "@storybook/addon-links"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 03:28:59 +00:00
dependabot[bot]
958c451589
⬆️ Bump @storybook/addon-actions from 6.5.10 to 6.5.12
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 6.5.10 to 6.5.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.12/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.12/addons/actions)

---
updated-dependencies:
- dependency-name: "@storybook/addon-actions"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 03:28:33 +00:00
Quinn
0c12abe159
Merge pull request #1159 from quantified-uncertainty/dependabot/npm_and_yarn/vscode-uri-3.0.6
⬆️ Bump vscode-uri from 3.0.3 to 3.0.6
2022-09-19 23:28:21 -04:00
dependabot[bot]
388c2adcd4
⬆️ Bump @headlessui/react from 1.6.6 to 1.7.2
Bumps [@headlessui/react](https://github.com/tailwindlabs/headlessui/tree/HEAD/packages/@headlessui-react) from 1.6.6 to 1.7.2.
- [Release notes](https://github.com/tailwindlabs/headlessui/releases)
- [Changelog](https://github.com/tailwindlabs/headlessui/blob/main/packages/@headlessui-react/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/headlessui/commits/@headlessui/react@v1.7.2/packages/@headlessui-react)

---
updated-dependencies:
- dependency-name: "@headlessui/react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 03:28:08 +00:00
dependabot[bot]
7d7cb74ad8
⬆️ Bump @storybook/react from 6.5.10 to 6.5.12
Bumps [@storybook/react](https://github.com/storybookjs/storybook/tree/HEAD/app/react) from 6.5.10 to 6.5.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.12/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.12/app/react)

---
updated-dependencies:
- dependency-name: "@storybook/react"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 03:27:57 +00:00
Quinn
8034de892e
Merge pull request #1157 from quantified-uncertainty/dependabot/npm_and_yarn/web-vitals-3.0.2
⬆️ Bump web-vitals from 3.0.1 to 3.0.2
2022-09-19 23:27:19 -04:00
Quinn
bb09fe9018
Merge pull request #1154 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.7.18
⬆️ Bump @types/node from 18.7.16 to 18.7.18
2022-09-19 23:25:01 -04:00
Quinn
7045fc6646
Merge pull request #1147 from quantified-uncertainty/dependabot/npm_and_yarn/framer-motion-7.3.5
⬆️ Bump framer-motion from 7.3.2 to 7.3.5
2022-09-19 23:22:56 -04:00
Quinn
e01f12656a
Merge pull request #1146 from quantified-uncertainty/dependabot/npm_and_yarn/postcss-nesting-10.2.0
⬆️ Bump postcss-nesting from 10.1.10 to 10.2.0
2022-09-19 23:22:20 -04:00
Quinn
01031e9f97
Merge pull request #1145 from quantified-uncertainty/dependabot/npm_and_yarn/storybook/builder-webpack5-6.5.12
⬆️ Bump @storybook/builder-webpack5 from 6.5.10 to 6.5.12
2022-09-19 23:21:44 -04:00
Quinn
198dcc78c4
Merge pull request #1144 from quantified-uncertainty/dependabot/npm_and_yarn/floating-ui/react-dom-interactions-0.10.1
⬆️ Bump @floating-ui/react-dom-interactions from 0.9.3 to 0.10.1
2022-09-19 23:21:15 -04:00
Vyacheslav Matyukhin
cdc49b378a
cleanup 2022-09-20 03:06:56 +04:00
Vyacheslav Matyukhin
5cf17f5dbf
cleanups 2022-09-20 02:47:29 +04:00
Vyacheslav Matyukhin
630128ae3f
bump website -> components dependency 2022-09-20 02:32:57 +04:00
Vyacheslav Matyukhin
4779ac2476
fix build errors 2022-09-20 02:25:28 +04:00
Vyacheslav Matyukhin
92483e66e0
yarn format 2022-09-20 02:19:55 +04:00
Vyacheslav Matyukhin
2392002172
0.5.0-alpha.1 versions 2022-09-20 02:07:47 +04:00
Vyacheslav Matyukhin
4a08718184
v0.5.0-alpha.0 2022-09-20 01:39:23 +04:00
Vyacheslav Matyukhin
fcbcfe3b66
Merge branch 'sampleset-to-pointset-speedups' into overhaul 2022-09-20 01:32:19 +04:00
Vyacheslav Matyukhin
6fc21ddda6
sampleset benchmark reports errors and accepts SAMPLE_COUNT 2022-09-20 01:26:19 +04:00
Vyacheslav Matyukhin
35671c5c51
format 2022-09-20 01:26:00 +04:00
Vyacheslav Matyukhin
ea71595e23
lower maxP in pointset benchmark 2022-09-20 00:59:46 +04:00
Vyacheslav Matyukhin
cb4e1199fc
reimplement splitContinuousAndDiscreteForMinWeight 2022-09-20 00:57:20 +04:00
Vyacheslav Matyukhin
8e396c44f9
refactor scripts 2022-09-20 00:57:20 +04:00
Vyacheslav Matyukhin
4f90dccdf1
refactor scripts 2022-09-20 00:55:32 +04:00
Vyacheslav Matyukhin
8e13caae84
fix merge artifacts 2022-09-19 23:20:37 +04:00
Vyacheslav Matyukhin
b24cfbc328
cleanups; ReducerInterface is no more 2022-09-19 23:10:09 +04:00
Vyacheslav Matyukhin
7a0c10d895
Merge branch 'develop' into overhaul 2022-09-19 22:07:25 +04:00
Vyacheslav Matyukhin
674213360c
trim lodash usage, remove unused module 2022-09-19 22:00:01 +04:00
Vyacheslav Matyukhin
f8b743feb5
tests; drop mathjs; new FR helpers; disable type tests 2022-09-19 21:46:37 +04:00
dependabot[bot]
a8e632f671
⬆️ Bump vscode-uri from 3.0.3 to 3.0.6
Bumps [vscode-uri](https://github.com/microsoft/vscode-uri) from 3.0.3 to 3.0.6.
- [Release notes](https://github.com/microsoft/vscode-uri/releases)
- [Commits](https://github.com/microsoft/vscode-uri/compare/v3.0.3...v3.0.6)

---
updated-dependencies:
- dependency-name: vscode-uri
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 15:27:32 +00:00
dependabot[bot]
72d6fa937d
⬆️ Bump web-vitals from 3.0.1 to 3.0.2
Bumps [web-vitals](https://github.com/GoogleChrome/web-vitals) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/GoogleChrome/web-vitals/releases)
- [Changelog](https://github.com/GoogleChrome/web-vitals/blob/main/CHANGELOG.md)
- [Commits](https://github.com/GoogleChrome/web-vitals/compare/v3.0.1...v3.0.2)

---
updated-dependencies:
- dependency-name: web-vitals
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 15:22:54 +00:00
dependabot[bot]
348ecc5eac
⬆️ Bump @types/node from 18.7.16 to 18.7.18
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.16 to 18.7.18.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 15:14:36 +00:00
dependabot[bot]
a15aa26439
Merge pull request #1143 from quantified-uncertainty/dependabot/npm_and_yarn/mathjs-11.2.1 2022-09-19 15:05:48 +00:00
dependabot[bot]
69cb8190f4
⬆️ Bump framer-motion from 7.3.2 to 7.3.5
Bumps [framer-motion](https://github.com/framer/motion) from 7.3.2 to 7.3.5.
- [Release notes](https://github.com/framer/motion/releases)
- [Changelog](https://github.com/framer/motion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/framer/motion/compare/v7.3.2...v7.3.5)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 15:04:25 +00:00
dependabot[bot]
3a255b397b
⬆️ Bump postcss-nesting from 10.1.10 to 10.2.0
Bumps [postcss-nesting](https://github.com/csstools/postcss-plugins/tree/HEAD/plugins/postcss-nesting) from 10.1.10 to 10.2.0.
- [Release notes](https://github.com/csstools/postcss-plugins/releases)
- [Changelog](https://github.com/csstools/postcss-plugins/blob/main/plugins/postcss-nesting/CHANGELOG.md)
- [Commits](https://github.com/csstools/postcss-plugins/commits/HEAD/plugins/postcss-nesting)

---
updated-dependencies:
- dependency-name: postcss-nesting
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 15:02:50 +00:00
dependabot[bot]
2d4e529940
⬆️ Bump @storybook/builder-webpack5 from 6.5.10 to 6.5.12
Bumps [@storybook/builder-webpack5](https://github.com/storybookjs/storybook/tree/HEAD/lib/core) from 6.5.10 to 6.5.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.12/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.12/lib/core)

---
updated-dependencies:
- dependency-name: "@storybook/builder-webpack5"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 15:01:34 +00:00
dependabot[bot]
de4cac47cb
⬆️ Bump @floating-ui/react-dom-interactions from 0.9.3 to 0.10.1
Bumps [@floating-ui/react-dom-interactions](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/react-dom-interactions) from 0.9.3 to 0.10.1.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/react-dom-interactions@0.10.1/packages/react-dom-interactions)

---
updated-dependencies:
- dependency-name: "@floating-ui/react-dom-interactions"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 14:59:38 +00:00
dependabot[bot]
d245971842
⬆️ Bump mathjs from 11.2.0 to 11.2.1
Bumps [mathjs](https://github.com/josdejong/mathjs) from 11.2.0 to 11.2.1.
- [Release notes](https://github.com/josdejong/mathjs/releases)
- [Changelog](https://github.com/josdejong/mathjs/blob/develop/HISTORY.md)
- [Commits](https://github.com/josdejong/mathjs/compare/v11.2.0...v11.2.1)

---
updated-dependencies:
- dependency-name: mathjs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 14:57:13 +00:00
Vyacheslav Matyukhin
271303fb5f
fix more tests; FR improvements/refactorings 2022-09-19 15:00:38 +04:00
Sam Nolan
bd34b145f0 Remove re-export 2022-09-19 14:04:04 +10:00
Sam Nolan
c20af0edbd Format components 2022-09-19 14:00:49 +10:00
Sam Nolan
07731adc6f Add projects to components 2022-09-19 13:58:20 +10:00
Vyacheslav Matyukhin
2aaf6816f6
Merge pull request #1140 from quantified-uncertainty/scripts
benchmarking and testing scripts for squiggle-lang
2022-09-18 21:28:52 +04:00
Vyacheslav Matyukhin
a77bb36219
var name cleanups 2022-09-18 20:13:54 +04:00
Vyacheslav Matyukhin
66d9cb0ab1
.mjs for all scripts 2022-09-18 19:18:10 +04:00
Vyacheslav Matyukhin
a78797bb9c
benchmarking and testing scripts for squiggle-lang 2022-09-18 19:14:32 +04:00
Vyacheslav Matyukhin
6aa2280543
conver the rest of dispatch functions (Date, Duration) 2022-09-18 18:33:20 +04:00
Vyacheslav Matyukhin
bbc1bee313
fix more tests 2022-09-18 18:33:01 +04:00
Vyacheslav Matyukhin
fd4137b596
run-file.js improvements 2022-09-18 18:32:53 +04:00
Vyacheslav Matyukhin
43635bd39b
remove IEvArrayString, implement __result__, cleanups 2022-09-18 03:15:58 +04:00
Vyacheslav Matyukhin
065a7aeec0
immutable bindings; test fixes 2022-09-18 02:19:08 +04:00
Ozzie Gooen
7a220eae22
Merge pull request #1139 from quantified-uncertainty/components-build-fix
components v0.4.3 - fix build
2022-09-17 09:03:13 -07:00
Vyacheslav Matyukhin
21d84a5396
v0.4.3 2022-09-17 13:18:18 +04:00
Vyacheslav Matyukhin
89397d3584
ERecord->toString, fix warning 2022-09-17 00:41:58 +04:00
Vyacheslav Matyukhin
f62e90fa98
Reducer_Namespace; remove Module type; temporarily disable tests compilation 2022-09-17 00:30:44 +04:00
Vyacheslav Matyukhin
6463b52052
benchmark and other scripts 2022-09-15 15:17:19 +04:00
Ozzie Gooen
da8860ac41
Fixed typo in CODEOWNERS 2022-09-14 13:56:32 -07:00
Ozzie Gooen
36f7f00fc3
Merge pull request #1137 from quantified-uncertainty/develop
0.4.2 release
2022-09-14 13:44:31 -07:00
Vyacheslav Matyukhin
267023240f
Merge pull request #1136 from quantified-uncertainty/v0.4.2
V0.4.2
2022-09-15 00:25:18 +04:00
Vyacheslav Matyukhin
a6b24cb9e5
vscode ext 0.4.2 2022-09-15 00:24:46 +04:00
Vyacheslav Matyukhin
8d268ec433
v0.4.2 2022-09-15 00:11:39 +04:00
Vyacheslav Matyukhin
7b77dd09cf
v0.4.2 2022-09-15 00:07:16 +04:00
Vyacheslav Matyukhin
1e6a3d6495
Merge branch 'develop' into overhaul 2022-09-14 15:15:03 +04:00
Vyacheslav Matyukhin
884359597f
Merge branch 'develop' into overhaul 2022-09-14 14:49:44 +04:00
Vyacheslav Matyukhin
294acffb89
minor cleanups 2022-09-14 14:48:58 +04:00
Ozzie Gooen
cfb06afa2b
Merge pull request #1129 from quantified-uncertainty/dependabot/npm_and_yarn/framer-motion-7.3.2
⬆️ Bump framer-motion from 7.2.1 to 7.3.2
2022-09-12 19:23:33 -07:00
Ozzie Gooen
9aa1d1fe93
Merge pull request #1125 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.7.16
⬆️ Bump @types/node from 18.7.15 to 18.7.16
2022-09-12 19:23:24 -07:00
Ozzie Gooen
47d00a350c
Merge pull request #1132 from quantified-uncertainty/no-pointset-sideeffects
fix sampleset -> pointset sorting sideeffects
2022-09-12 19:21:21 -07:00
Vyacheslav Matyukhin
1b714f0633
fix sampleset -> pointset sorting sideeffects 2022-09-13 03:55:59 +04:00
Vyacheslav Matyukhin
02c84983a4
more builtin functions 2022-09-13 03:51:49 +04:00
Vyacheslav Matyukhin
93b021dc52
Merge pull request #1130 from quantified-uncertainty/revert-1124-dependabot/npm_and_yarn/headlessui/react-1.7.0
Revert "⬆️ Bump @headlessui/react from 1.6.6 to 1.7.0"
2022-09-13 02:48:50 +04:00
Vyacheslav Matyukhin
be934af684
Revert "⬆️ Bump @headlessui/react from 1.6.6 to 1.7.0" 2022-09-13 01:07:32 +03:00
dependabot[bot]
e72ac8a44f
⬆️ Bump framer-motion from 7.2.1 to 7.3.2
Bumps [framer-motion](https://github.com/framer/motion) from 7.2.1 to 7.3.2.
- [Release notes](https://github.com/framer/motion/releases)
- [Changelog](https://github.com/framer/motion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/framer/motion/compare/v7.2.1...v7.3.2)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 16:02:32 +00:00
dependabot[bot]
b892a97e09
⬆️ Bump @types/node from 18.7.15 to 18.7.16
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.15 to 18.7.16.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 15:59:40 +00:00
Ozzie Gooen
4533d1a4fb
Merge pull request #1128 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-4.8.3
⬆️ Bump typescript from 4.8.2 to 4.8.3
2022-09-12 08:55:43 -07:00
Ozzie Gooen
4beb1e5378
Merge pull request #1127 from quantified-uncertainty/dependabot/npm_and_yarn/types/lodash-4.14.185
⬆️ Bump @types/lodash from 4.14.184 to 4.14.185
2022-09-12 08:55:28 -07:00
Ozzie Gooen
95d0884ce6
Merge pull request #1126 from quantified-uncertainty/dependabot/npm_and_yarn/hookform/resolvers-2.9.8
⬆️ Bump @hookform/resolvers from 2.9.7 to 2.9.8
2022-09-12 08:55:20 -07:00
Ozzie Gooen
a47107e2a4
Merge pull request #1124 from quantified-uncertainty/dependabot/npm_and_yarn/headlessui/react-1.7.0
⬆️ Bump @headlessui/react from 1.6.6 to 1.7.0
2022-09-12 08:55:10 -07:00
Ozzie Gooen
4c0b5e5e97
Merge pull request #1123 from quantified-uncertainty/dependabot/npm_and_yarn/webpack-dev-server-4.11.0
⬆️ Bump webpack-dev-server from 4.10.1 to 4.11.0
2022-09-12 08:54:57 -07:00
Ozzie Gooen
0c9c2c5c50
Merge pull request #1122 from quantified-uncertainty/dependabot/npm_and_yarn/fast-check-3.1.3
⬆️ Bump fast-check from 3.1.2 to 3.1.3
2022-09-12 08:54:46 -07:00
Ozzie Gooen
9cd2b661db
Merge pull request #1121 from quantified-uncertainty/dependabot/npm_and_yarn/mathjs-11.2.0
⬆️ Bump mathjs from 11.1.0 to 11.2.0
2022-09-12 08:54:37 -07:00
Ozzie Gooen
1132b54be6
Merge pull request #1120 from quantified-uncertainty/dependabot/npm_and_yarn/react-hook-form-7.35.0
⬆️ Bump react-hook-form from 7.34.2 to 7.35.0
2022-09-12 08:54:28 -07:00
dependabot[bot]
60eba96172
⬆️ Bump typescript from 4.8.2 to 4.8.3
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.8.2 to 4.8.3.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.8.2...v4.8.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 14:39:54 +00:00
dependabot[bot]
f41447c263
⬆️ Bump @types/lodash from 4.14.184 to 4.14.185
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.184 to 4.14.185.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

---
updated-dependencies:
- dependency-name: "@types/lodash"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 14:38:30 +00:00
dependabot[bot]
ae130bbef4
⬆️ Bump @hookform/resolvers from 2.9.7 to 2.9.8
Bumps [@hookform/resolvers](https://github.com/react-hook-form/resolvers) from 2.9.7 to 2.9.8.
- [Release notes](https://github.com/react-hook-form/resolvers/releases)
- [Commits](https://github.com/react-hook-form/resolvers/compare/v2.9.7...v2.9.8)

---
updated-dependencies:
- dependency-name: "@hookform/resolvers"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 14:37:48 +00:00
dependabot[bot]
159f8721d8
⬆️ Bump @headlessui/react from 1.6.6 to 1.7.0
Bumps [@headlessui/react](https://github.com/tailwindlabs/headlessui/tree/HEAD/packages/@headlessui-react) from 1.6.6 to 1.7.0.
- [Release notes](https://github.com/tailwindlabs/headlessui/releases)
- [Changelog](https://github.com/tailwindlabs/headlessui/blob/main/packages/@headlessui-react/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/headlessui/commits/@headlessui/react@v1.7.0/packages/@headlessui-react)

---
updated-dependencies:
- dependency-name: "@headlessui/react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 14:35:58 +00:00
dependabot[bot]
901ee9f2fd
⬆️ Bump webpack-dev-server from 4.10.1 to 4.11.0
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.10.1 to 4.11.0.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.10.1...v4.11.0)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 14:34:46 +00:00
dependabot[bot]
20654c4f08
⬆️ Bump fast-check from 3.1.2 to 3.1.3
Bumps [fast-check](https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/dubzzz/fast-check/releases)
- [Changelog](https://github.com/dubzzz/fast-check/blob/main/packages/fast-check/CHANGELOG.md)
- [Commits](https://github.com/dubzzz/fast-check/commits/v3.1.3/packages/fast-check)

---
updated-dependencies:
- dependency-name: fast-check
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 14:32:53 +00:00
dependabot[bot]
565bcf8331
⬆️ Bump mathjs from 11.1.0 to 11.2.0
Bumps [mathjs](https://github.com/josdejong/mathjs) from 11.1.0 to 11.2.0.
- [Release notes](https://github.com/josdejong/mathjs/releases)
- [Changelog](https://github.com/josdejong/mathjs/blob/develop/HISTORY.md)
- [Commits](https://github.com/josdejong/mathjs/compare/v11.1.0...v11.2.0)

---
updated-dependencies:
- dependency-name: mathjs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 14:32:19 +00:00
dependabot[bot]
28310168cb
⬆️ Bump react-hook-form from 7.34.2 to 7.35.0
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.34.2 to 7.35.0.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.34.2...v7.35.0)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 14:31:47 +00:00
Vyacheslav Matyukhin
36127d8947
cleanup benchmark script 2022-09-12 14:44:35 +04:00
Vyacheslav Matyukhin
97ff56b46a
link dependencies 2022-09-12 13:42:39 +04:00
Vyacheslav Matyukhin
757d458ecf
more FR 2022-09-12 13:33:41 +04:00
dependabot[bot]
d02aa61b87
Merge pull request #1080 from quantified-uncertainty/dependabot/npm_and_yarn/postcss-import-15.0.0 2022-09-12 07:23:58 +00:00
dependabot[bot]
e571700944
⬆️ Bump postcss-import from 14.1.0 to 15.0.0
Bumps [postcss-import](https://github.com/postcss/postcss-import) from 14.1.0 to 15.0.0.
- [Release notes](https://github.com/postcss/postcss-import/releases)
- [Changelog](https://github.com/postcss/postcss-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss-import/compare/14.1.0...15.0.0)

---
updated-dependencies:
- dependency-name: postcss-import
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 07:14:42 +00:00
Quinn
d57fe27a0d
Merge pull request #1118 from quantified-uncertainty/revert-nix
restore old ci
2022-09-12 02:07:51 -04:00
Quinn Dougherty
7beff3f834 uncommented out most of the jobs 2022-09-12 13:50:21 +08:00
Quinn Dougherty
3677b9582e Merge remote-tracking branch 'origin/develop' into fix-nixbuild 2022-09-12 11:53:46 +08:00
Quinn Dougherty
b49e8c43f0 added another file to un.gitignore 2022-09-12 11:53:29 +08:00
Ozzie Gooen
8b4ea5079a
Added @berekuk as codeowner. 2022-09-11 19:28:26 -07:00
Vyacheslav Matyukhin
681a1b42c6
delete unused 2022-09-12 03:21:49 +04:00
Vyacheslav Matyukhin
6dc1cea045
more WIP 2022-09-12 03:07:34 +04:00
Ozzie Gooen
4408ed642d
Merge pull request #1117 from quantified-uncertainty/e-modules-ocaml
E modules OCaml style
2022-09-11 13:52:24 -07:00
Ozzie Gooen
f7f3e449d1
Delete E copy.resxxx 2022-09-11 13:47:58 -07:00
Ozzie Gooen
d55c72f39e
Merge pull request #1115 from quantified-uncertainty/map-efficiency
Slightly faster map and filter implementations
2022-09-11 13:44:56 -07:00
Vyacheslav Matyukhin
fea89abff9
more WIP 2022-09-11 23:56:07 +04:00
Umur Ozkul
5de73f171c E modules OCaml style
Huge E decomposed in to files
2022-09-11 21:52:25 +02:00
Vyacheslav Matyukhin
f2dccd4f1e
still WIP, FR works 2022-09-11 20:57:28 +04:00
Vyacheslav Matyukhin
7a29be3845
WIP (basic functionality, stdlib not converted yet) 2022-09-11 19:22:07 +04:00
Ozzie Gooen
5772c458a8
Merge pull request #1047 from quantified-uncertainty/exceptional-reducer
Exceptional reducer (~20% speedup)
2022-09-11 08:09:51 -07:00
Umur Ozkul
c59404e65f Merge branch 'exceptional-reducer' into map-efficiency 2022-09-11 17:01:39 +02:00
Umur Ozkul
4346ba992f Merge branch 'develop' into exceptional-reducer
packages/squiggle-lang/src/rescript/ReducerProject/ReducerProject_IncludeParser.js
2022-09-11 17:00:18 +02:00
Umur Ozkul
4fc10823fe Merge branch 'exceptional-reducer' into map-efficiency 2022-09-11 15:31:40 +02:00
Vyacheslav Matyukhin
fe56e81710
WIP 2022-09-10 21:01:04 +04:00
Vyacheslav Matyukhin
1187c0330a
faster filter 2022-09-09 17:04:32 +04:00
Vyacheslav Matyukhin
4d1f76f80e
slightly faster map implementation
see this comment: https://github.com/quantified-uncertainty/squiggle/pull/1047#issuecomment-1241805927
2022-09-09 14:39:42 +04:00
Quinn Dougherty
4dc7619e5a hotfix: manual versions in .release-please-manifest.json 2022-09-09 15:28:29 +08:00
Quinn Dougherty
3c0255cfb9 hotfix: lint docs 2022-09-09 15:26:20 +08:00
Umur Ozkul
5d17301016 remove raise 2022-09-09 01:14:42 +02:00
Ozzie Gooen
45323b0e08
Merge pull request #1008 from ideopunk/feature/distribution_tweaks
Distribution component tweaks
2022-09-08 15:49:58 -07:00
Umur Ozkul
1c98aaa3e2 value vs result conversion functions 2022-09-09 00:43:21 +02:00
Conor Barnes
2736fb9a17 delete conflicting file 2022-09-08 16:31:02 -03:00
Ozzie Gooen
b5f5cca0dc
Merge pull request #1110 from quantified-uncertainty/remove-generated-include-parser
remove generated ReducerProject_IncludeParser.js from repo
2022-09-08 10:36:41 -07:00
Vyacheslav Matyukhin
d3788fb411
remove generated ReducerProject_IncludeParser.js from repo 2022-09-08 16:27:32 +04:00
Vyacheslav Matyukhin
ecc82ba8f7
reformat for lint 2022-09-07 23:04:07 +04:00
Vyacheslav Matyukhin
06ec2caae0
remove unused code 2022-09-07 22:50:24 +04:00
Vyacheslav Matyukhin
c0ccdbc1e9
experimental: replace result with exceptions in reducer 2022-09-07 22:45:19 +04:00
Ozzie Gooen
45dd199925
Merge pull request #1102 from quantified-uncertainty/develop
V0.4.1
2022-09-07 09:44:37 -07:00
Conor Barnes
5b0d7a898f remove dead comments and simplify sample inclusion 2022-09-07 11:01:18 -03:00
Conor Barnes
0c614a3fcf samples in own shape 2022-09-07 09:18:01 -03:00
Ozzie Gooen
7d6ffecc4a Merge branch 'develop' of github.com:quantified-uncertainty/squiggle into develop
* 'develop' of github.com:quantified-uncertainty/squiggle:
  fix: docs bug
  0.4.1 version of all packages
  0.0.0 version for website package
  bump components dependency for website
  bump and sync versions for 0.4.0-alpha.4 release
2022-09-06 15:03:36 -07:00
Ozzie Gooen
7d8a7e19d5 Ran yarn format 2022-09-06 15:03:24 -07:00
Ozzie Gooen
046f4f4f47
Merge pull request #1101 from quantified-uncertainty/0.4-release
0.4.1 release
2022-09-06 14:50:07 -07:00
ad32921ed0 fix: docs bug 2022-09-06 23:44:34 +02:00
Vyacheslav Matyukhin
6f10b276e9
0.4.1 version of all packages 2022-09-07 01:24:08 +04:00
Vyacheslav Matyukhin
4a75a97cb4
0.0.0 version for website package
we don't have to set it since we never publish the website to npm, and
bumping the version does nothing useful

0.0.0 is from here: https://github.com/yarnpkg/yarn/issues/5936#issuecomment-395912169

see that issue for details on how this was fixed with yarn@2, but we're
still on yarn@1.22
2022-09-07 00:39:19 +04:00
Vyacheslav Matyukhin
36cd9271f6
bump components dependency for website 2022-09-07 00:24:52 +04:00
Vyacheslav Matyukhin
2a8e5866cb
bump and sync versions for 0.4.0-alpha.4 release 2022-09-07 00:18:56 +04:00
Ozzie Gooen
9a67b16eee
Merge pull request #1069 from quantified-uncertainty/more-functions
[work in progress] Add more functions
2022-09-06 13:03:54 -07:00
Ozzie Gooen
00a22b456d Removed now-not-needed text 2022-09-06 13:03:39 -07:00
458c4f65b1 tweak: remove vscode config 2022-09-06 21:49:26 +02:00
Vyacheslav Matyukhin
00a0005e56
Merge branch 'develop' into fixes-for-ideopunk
Also some SqDistribution fixes.
2022-09-06 23:35:37 +04:00
fad1b51630 feat: simplify Danger functions
yarn.lock also changed because of the previous commmit
2022-09-06 21:16:29 +02:00
b7a186f8ac fix: components warning
Solution per
<https://tailwindcss.com/docs/using-with-preprocessors#nesting>
was enabled, but the necessary dev dependencies not enabled,
which caused problems
2022-09-06 21:07:49 +02:00
4917c2e0e2 Merge branch 'develop' of github.com:quantified-uncertainty/squiggle into more-functions 2022-09-06 21:00:17 +02:00
Ozzie Gooen
ceb92ccfc6
Merge pull request #1097 from quantified-uncertainty/reducer-constructArray
fixes #558 fixes #1038 construct an array of lambda functions
2022-09-06 11:37:07 -07:00
Umur Ozkul
0131498aca fixes #558 fixes #1038 2022-09-06 20:15:57 +02:00
Conor Barnes
e0cd95fe5c remove unnecessary mapping of sample array to array of objects 2022-09-06 14:52:57 -03:00
Ozzie Gooen
84be552782
Merge pull request #1009 from quantified-uncertainty/epic-reducer-project
0.4.0 - Epic reducer project
2022-09-06 10:42:15 -07:00
Conor Barnes
6c87a9e712 rename to xAxisType 2022-09-06 14:30:52 -03:00
Conor Barnes
3ea747fae4 simplify code by not mapping x property to dateTime property 2022-09-06 14:27:01 -03:00
3b45355ce7 feat: Add documentation 2022-09-06 15:43:58 +02:00
cf75152608 tweak: more cleanup 2022-09-06 15:17:20 +02:00
162f158dbc tweak: Use firstErrorOrOpen instead of hack 2022-09-06 14:54:59 +02:00
fc2d647b62 tweak: Add error checking to dmr calculation 2022-09-06 14:49:58 +02:00
60e42cf1e8 cleanup: More Dangers cleanup
and formatting
2022-09-06 14:25:03 +02:00
ae71bb8ec5 tweak: Move cast function to registry helpers file and rename 2022-09-06 14:05:08 +02:00
4903319073 format 2022-09-06 13:59:21 +02:00
edce22050a cleanup: Move integrals to its own module 2022-09-06 13:59:03 +02:00
8ddd1a166a tweak: Move combinatorics functions to its own module 2022-09-06 13:55:28 +02:00
697e3ba852 cleanup: Delete large amounts of dead code from Danger.
But keep pointer to commit
2022-09-06 13:44:55 +02:00
5ce0a6979d tweak: Also use helpers in Number lib
Avoids code duplication
2022-09-06 13:39:02 +02:00
d8d68445b6 git add: Use helpers in Danger lib 2022-09-06 13:37:36 +02:00
b21d5d09a8 tweak: Add number function helpers 2022-09-06 13:36:43 +02:00
Ozzie Gooen
6c3f719e74
Merge pull request #1094 from quantified-uncertainty/danger-adjustments
Danger adjustments
2022-09-05 20:21:37 -07:00
Ozzie Gooen
38447f1633 Merged with epic-reducer-project 2022-09-05 20:19:35 -07:00
Ozzie Gooen
c5928129d7 Minor cleanup to danger files 2022-09-05 20:16:41 -07:00
Ozzie Gooen
ddfc617776
Merge pull request #1074 from Nathanpmyoung/patch-3
Added detail to explanation of quantile function
2022-09-05 14:37:12 -07:00
Ozzie Gooen
4fbbd39638
Merge branch 'develop' into patch-3 2022-09-05 14:26:54 -07:00
Ozzie Gooen
c44d75695d
Merge pull request #1088 from quantified-uncertainty/function-charts-without-pointset-conversion
don't convert dists to pointset when rendering lambdas
2022-09-05 13:59:58 -07:00
Ozzie Gooen
b833da4ac2
Merge pull request #1084 from quantified-uncertainty/dependabot/npm_and_yarn/docusaurus/preset-classic-2.1.0
⬆️ Bump @docusaurus/preset-classic from 2.0.1 to 2.1.0
2022-09-05 13:58:17 -07:00
cae8f8cb65 tweak: tested examples in playground 2022-09-05 22:14:26 +02:00
bfc3b39b2b tweak: format 2022-09-05 22:08:20 +02:00
e1760dab2d tweak: Cleanup 2022-09-05 22:08:00 +02:00
f76de31d26 faustian bargain: create 6 different Danger.dmr functions
So ugly that it's almost beautiful. Except it's not
2022-09-05 21:59:53 +02:00
c183dbd24b tweak: Continue building skeleton for Danger dmr 2022-09-05 21:40:20 +02:00
70d9a5c9f3 tweak: save intermediary state 2022-09-05 20:52:23 +02:00
dependabot[bot]
db3326ac34
⬆️ Bump @docusaurus/preset-classic from 2.0.1 to 2.1.0
Bumps [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) from 2.0.1 to 2.1.0.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v2.1.0/packages/docusaurus-preset-classic)

---
updated-dependencies:
- dependency-name: "@docusaurus/preset-classic"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 17:58:50 +00:00
Ozzie Gooen
edc7173fb6
Merge pull request #1076 from quantified-uncertainty/dependabot/npm_and_yarn/web-vitals-3.0.1
⬆️ Bump web-vitals from 3.0.0 to 3.0.1
2022-09-05 10:56:53 -07:00
Ozzie Gooen
d033db1155
Merge pull request #1077 from quantified-uncertainty/dependabot/npm_and_yarn/types/glob-8.0.0
⬆️ Bump @types/glob from 7.2.0 to 8.0.0
2022-09-05 10:56:46 -07:00
Ozzie Gooen
deec676d4e
Merge pull request #1078 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.7.15
⬆️ Bump @types/node from 18.7.14 to 18.7.15
2022-09-05 10:56:36 -07:00
Ozzie Gooen
02033b8dc1
Merge pull request #1079 from quantified-uncertainty/dependabot/npm_and_yarn/types/vscode-1.71.0
⬆️ Bump @types/vscode from 1.70.0 to 1.71.0
2022-09-05 10:56:29 -07:00
Ozzie Gooen
2b86fb7723
Merge pull request #1083 from quantified-uncertainty/dependabot/npm_and_yarn/testing-library/react-13.4.0
⬆️ Bump @testing-library/react from 13.3.0 to 13.4.0
2022-09-05 10:56:20 -07:00
Ozzie Gooen
8db0562f75
Merge pull request #1082 from quantified-uncertainty/dependabot/npm_and_yarn/vscode-languageserver-textdocument-1.0.7
⬆️ Bump vscode-languageserver-textdocument from 1.0.5 to 1.0.7
2022-09-05 10:56:11 -07:00
Ozzie Gooen
660aaf24ab
Merge pull request #1081 from quantified-uncertainty/dependabot/npm_and_yarn/docusaurus/core-2.1.0
⬆️ Bump @docusaurus/core from 2.0.1 to 2.1.0
2022-09-05 10:55:44 -07:00
Vyacheslav Matyukhin
74e54c6e91
Merge branch 'epic-reducer-project' into function-charts-without-pointset-conversion 2022-09-05 21:41:01 +04:00
Vyacheslav Matyukhin
3c879432f2
Merge branch 'develop' into epic-reducer-project 2022-09-05 21:40:45 +04:00
Vyacheslav Matyukhin
2942067849
don't convert dists to pointset when rendering lambdas 2022-09-05 21:39:03 +04:00
dependabot[bot]
5607d65599
⬆️ Bump @testing-library/react from 13.3.0 to 13.4.0
Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 13.3.0 to 13.4.0.
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/react-testing-library/compare/v13.3.0...v13.4.0)

---
updated-dependencies:
- dependency-name: "@testing-library/react"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 16:58:04 +00:00
dependabot[bot]
86e41e0fe2
⬆️ Bump @types/node from 18.7.14 to 18.7.15
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.14 to 18.7.15.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 16:55:19 +00:00
dependabot[bot]
f76a5f5ce4
⬆️ Bump web-vitals from 3.0.0 to 3.0.1
Bumps [web-vitals](https://github.com/GoogleChrome/web-vitals) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/GoogleChrome/web-vitals/releases)
- [Changelog](https://github.com/GoogleChrome/web-vitals/blob/main/CHANGELOG.md)
- [Commits](https://github.com/GoogleChrome/web-vitals/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: web-vitals
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 16:52:55 +00:00
dependabot[bot]
de06586784
⬆️ Bump @types/glob from 7.2.0 to 8.0.0
Bumps [@types/glob](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/glob) from 7.2.0 to 8.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/glob)

---
updated-dependencies:
- dependency-name: "@types/glob"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 16:46:36 +00:00
dependabot[bot]
41e5f300ef
⬆️ Bump vscode-languageserver-textdocument from 1.0.5 to 1.0.7
Bumps [vscode-languageserver-textdocument](https://github.com/Microsoft/vscode-languageserver-node/tree/HEAD/textDocument) from 1.0.5 to 1.0.7.
- [Release notes](https://github.com/Microsoft/vscode-languageserver-node/releases)
- [Commits](https://github.com/Microsoft/vscode-languageserver-node/commits/release/textdocument/1.0.7/textDocument)

---
updated-dependencies:
- dependency-name: vscode-languageserver-textdocument
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 16:46:15 +00:00
dependabot[bot]
417df076d0
⬆️ Bump @types/vscode from 1.70.0 to 1.71.0
Bumps [@types/vscode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/vscode) from 1.70.0 to 1.71.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/vscode)

---
updated-dependencies:
- dependency-name: "@types/vscode"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 16:45:33 +00:00
dependabot[bot]
3084c557fd
⬆️ Bump @docusaurus/core from 2.0.1 to 2.1.0
Bumps [@docusaurus/core](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus) from 2.0.1 to 2.1.0.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v2.1.0/packages/docusaurus)

---
updated-dependencies:
- dependency-name: "@docusaurus/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 16:35:54 +00:00
8bdfa03799 feat: In Danger, add dmr for many functions
Still to be tested
2022-09-05 17:05:25 +02:00
Ozzie Gooen
7f8f6f4fd6
Merge pull request #1086 from quantified-uncertainty/dependabot/npm_and_yarn/types/react-18.0.18
⬆️ Bump @types/react from 18.0.17 to 18.0.18
2022-09-05 07:44:56 -07:00
2f33559e77 tweak: in Danger namespace change function name
to make clear that it takes only two inputs,
while I build the many-inputs version
2022-09-05 16:40:17 +02:00
Ozzie Gooen
6a38d6c0bf
Merge pull request #1073 from Nathanpmyoung/patch-2
Correct spelling error in "quantile section"
2022-09-05 07:31:06 -07:00
9551aae634 tweak: format 2022-09-05 16:08:06 +02:00
8f8ca02730 tweak: get possibly working dmr function 2022-09-05 15:58:08 +02:00
b13da70c38 tweak: Build Danger.dmr skeleton more 2022-09-05 15:51:55 +02:00
dependabot[bot]
d71e6cf7d5
⬆️ Bump @types/react from 18.0.17 to 18.0.18
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.0.17 to 18.0.18.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 13:44:29 +00:00
be4e1b1a85 tweak: In Danger namespace, build dmr function further
dmr = diminishing marginal returns
2022-09-05 15:27:59 +02:00
Nathanpmyoung
54fe141a7d
Added detail to explanation of quantile function
I didn't understand it so I thought I'd make it easier for the next person.
2022-09-05 13:26:36 +01:00
Nathanpmyoung
6ea94b0c8f
Correct spelling error 2022-09-05 13:18:01 +01:00
fe3075b3bf tweak: In Danger namespace, further diminishingMarginalReturnsSkeleton 2022-09-05 14:12:34 +02:00
aa3173f85b tweak: Add skeleton for calculating dimishing returns allocation 2022-09-05 14:00:14 +02:00
f370c44771 tiny tweak: better example 2022-09-05 13:09:28 +02:00
c0713b16c2 tweak: Add better error messages for common use case
I.e., the case of integrating a function which
doesn't return a number but a distribution
2022-09-05 13:03:56 +02:00
2b414191ac tweak: Numerate integration errors. 2022-09-05 12:49:47 +02:00
a45e38d75d feat: Cleanup of Danger namespace 2022-09-05 12:38:15 +02:00
6d75af61c3 fix: formatting 2022-09-05 12:16:19 +02:00
27ca86e729 feat: Worked out kinks of the integral! 2022-09-05 12:11:42 +02:00
fd7720b045 fix: formatting 2022-09-05 09:39:55 +02:00
2fa97c20f7 fix: Off by one error due to Belt.Array.makeBy 2022-09-05 09:37:48 +02:00
6c04f9bff1 fix: change expected output type of integrals 2022-09-05 09:10:42 +02:00
e73ffaa10a feat: Added a slightly better integral function
Slightly better because the handling of bounds is better.
Previously we were integrating at min, min + interval,
min + i*interval, ...
which meanst that sometimes we weren't integrating at
max.

Also a minimal amount of cleanup
2022-09-05 09:08:53 +02:00
abad453523 fix: no small integration error 2022-09-05 08:41:33 +02:00
Quinn
65e083eda2
Merge pull request #1070 from quantified-uncertainty/dependabot-labels
explicit and minimal dependabot labels config
2022-09-04 23:09:25 -04:00
244f3ea8d9 feat: Note that this isn't tested yet. 2022-09-04 22:48:29 +02:00
ecf5249b5c feat: And integration function to Danger namespace
Note that I haven't tested this yet.
2022-09-04 22:45:55 +02:00
Umur Ozkul
3794909efc format js 2022-09-04 21:53:02 +02:00
Umur Ozkul
b73924135f format rescritp 2022-09-04 21:52:48 +02:00
Umur Ozkul
247e101324 PR comment 2022-09-04 21:24:53 +02:00
Umur Ozkul
044ed0bea3 qualify IEvVoid 2022-09-04 21:19:27 +02:00
943e63b379 link: run pretty 2022-09-04 20:26:57 +02:00
Vyacheslav Matyukhin
af079d3cb7
explicit and minimal dependabot lables config 2022-09-04 22:17:05 +04:00
b292a3e6fd tweak: Add to dos to continue tomorrow 2022-09-04 20:07:10 +02:00
f82c00a6ed tweak: Work out how to apply a function to an
arbitrary value in the Danger domain
2022-09-04 19:29:22 +02:00
b45ab3dba2 feat: In Danger namespace, work out how to apply function 2022-09-04 19:22:12 +02:00
b57233096d tweak: Revert back to working state in Danger namespace 2022-09-04 19:04:13 +02:00
dc34e7c0b8 feat: Danger namespace function tweaking 2022-09-04 18:58:19 +02:00
85fe4d16a2 tweak: Intermediary step while figuring out
function application
2022-09-04 18:53:57 +02:00
Ozzie Gooen
641b51f4d5
Merge pull request #1068 from quantified-uncertainty/clean-components-builds
Clean components builds
2022-09-04 09:38:28 -07:00
803231d620 feat: add a few more simple functions to Danger namespace 2022-09-04 17:12:18 +02:00
3106a10b90 tweak: Move new functions to the "Danger" namespace 2022-09-04 15:31:18 +02:00
19ddd4eb3f tweak: Add TwoNumbersToNumber wrapper to function registry. 2022-09-04 15:09:09 +02:00
Vyacheslav Matyukhin
cebd8118b0
clean dist/src on components builds 2022-09-04 16:30:03 +04:00
Ozzie Gooen
58a44fe437
Merge pull request #1064 from quantified-uncertainty/v0.4.0-alpha-versioning
Version packages for 0.4.0-alpha
2022-09-03 18:37:16 -07:00
Ozzie Gooen
520b361f2c Alpha-versioning 2022-09-02 19:53:22 -07:00
Ozzie Gooen
7a60f736f1
Merge branch 'develop' into epic-reducer-project 2022-09-01 13:45:20 -07:00
Ozzie Gooen
4ecb692e80
Merge pull request #1057 from quantified-uncertainty/develop
V0.3.1
2022-09-01 11:23:27 -07:00
Ozzie Gooen
462f1c9649
Merge pull request #1056 from quantified-uncertainty/to-0.3.1
0.3.0 -> 0.3.1
2022-09-01 11:00:52 -07:00
Ozzie Gooen
e522eb4c5f 0.3.0 -> 0.3.1 2022-09-01 11:00:23 -07:00
Vyacheslav Matyukhin
7e3fa1d65a
Merge branch 'develop' into epic-reducer-project 2022-09-01 21:15:18 +04:00
Ozzie Gooen
a97d1bae6d
Merge pull request #1050 from quantified-uncertainty/SampleSet.max-min
Added SampleSet.min and Sampleset.max
2022-09-01 09:07:02 -07:00
Vyacheslav Matyukhin
4d2fefad69
fix typo in test name 2022-09-01 19:26:57 +04:00
Vyacheslav Matyukhin
4f10cabdd3
Merge pull request #1053 from quantified-uncertainty/lambdas-in-result
support for __result__ in web components and SqLambda
2022-09-01 19:24:34 +04:00
Vyacheslav Matyukhin
130af680f6
Merge pull request #1052 from quantified-uncertainty/reducer-project-imports
Reducer project imports
2022-09-01 19:12:37 +04:00
Vyacheslav Matyukhin
fc3a7c6cf9
support for __result__ in web components and SqLambda 2022-09-01 19:11:49 +04:00
Vyacheslav Matyukhin
e2abc53200
improve code generation for jsImports 2022-09-01 18:55:15 +04:00
Vyacheslav Matyukhin
64ed32a17c
support jsImports 2022-09-01 18:44:13 +04:00
Vyacheslav Matyukhin
8842f7b25e
delete getDependents and getDependencies methods from TS API 2022-09-01 18:15:36 +04:00
Vyacheslav Matyukhin
d76c2f8ac7
new jsImports (WIP) 2022-09-01 18:14:12 +04:00
Vyacheslav Matyukhin
407984344b
test for project with multiple independent sources 2022-09-01 18:13:11 +04:00
Umur Ozkul
f21f635bf0
Merge pull request #1051 from quantified-uncertainty/topsort-improvement
Topological sort improvement
2022-09-01 16:08:47 +02:00
Vyacheslav Matyukhin
dd3a8ab736
getRunOrderFor runs topological sort from current id 2022-09-01 17:57:04 +04:00
Umur Ozkul
ec93a82110 format 2022-09-01 14:53:01 +02:00
Umur Ozkul
1fe0aefd6b Merge branch 'epic-reducer-project' of github.com:quantified-uncertainty/squiggle into epic-reducer-project 2022-09-01 14:52:14 +02:00
Umur Ozkul
7eef1d30f3 __result__ variable in bindings 2022-09-01 14:51:20 +02:00
Umur Ozkul
82a4e52384 include and "include as" 2022-09-01 14:32:24 +02:00
Vyacheslav Matyukhin
b3d5a98518
Merge pull request #1011 from quantified-uncertainty/reducer-project-ts
ReducerProject - TS side
2022-09-01 15:08:54 +04:00
Vyacheslav Matyukhin
59ed741f33
show either result or bindings in viewer 2022-09-01 15:02:32 +04:00
Vyacheslav Matyukhin
4a3c982c57
remove SquiggleEditorWithImportedBindings 2022-09-01 14:45:47 +04:00
Vyacheslav Matyukhin
48fb634140
fix more tests for new TS classes 2022-09-01 14:36:27 +04:00
Vyacheslav Matyukhin
eda1a45fda
reenable environment in useSquiggle 2022-09-01 13:32:11 +04:00
Quinn
e6d543daef
Merge pull request #1002 from quantified-uncertainty/sampleset-mixture
Sampleset mixture
2022-09-01 03:00:17 -04:00
Quinn Dougherty
38d0ea79e4 yarn format:all compels me 2022-09-01 14:22:32 +08:00
Quinn Dougherty
57dca26d2b fix the resolve to @stdlib/buffer 2022-09-01 14:08:14 +08:00
Ozzie Gooen
e582fc5be3 library1 -> libraryBase 2022-08-31 22:15:13 -07:00
Ozzie Gooen
96815b6ee5 Really simple tests for SampleSet.min and max 2022-08-31 22:14:41 -07:00
Quinn Dougherty
ab9a83bcf7 I think we're done here? 2022-09-01 13:07:13 +08:00
Quinn Dougherty
ab5b54413b it string in tests 2022-09-01 12:54:04 +08:00
Quinn Dougherty
9366ce61f3 yarn format compels me 2022-09-01 12:48:20 +08:00
Quinn Dougherty
989fa9644a rm |> in favor of -> 2022-09-01 12:48:07 +08:00
Ozzie Gooen
255541a679 Added SampleSet.min and Sampleset.max 2022-08-31 21:43:36 -07:00
Quinn Dougherty
729fc2c59d Merge remote-tracking branch 'origin/develop' into sampleset-mixture 2022-09-01 12:39:55 +08:00
Quinn Dougherty
152432b6d6 hotfix: switch release-please to master (3) 2022-09-01 12:17:42 +08:00
Quinn Dougherty
2209fd179e hotfix: switch release-please to master (2) 2022-09-01 12:14:23 +08:00
Quinn Dougherty
b6a2eac8fc hotfix: switch release-please to master 2022-09-01 12:12:34 +08:00
Ozzie Gooen
d50c9ca930
Merge pull request #1049 from quantified-uncertainty/playground-show-summary-by-default
Playground should show stat summary by default
2022-08-31 20:54:27 -07:00
Ozzie Gooen
64539bc121 Playground should show stat summary by default 2022-08-31 20:53:48 -07:00
Quinn Dougherty
3153b9620a fix: test trigger release-please, for fun 2022-09-01 11:37:24 +08:00
Ozzie Gooen
5e9bf521fa
Merge pull request #1042 from quantified-uncertainty/getByWithFn
Changed getByWithFn to not need two function calls
2022-08-31 20:10:30 -07:00
Ozzie Gooen
0fa34b09e4
Merge pull request #995 from quantified-uncertainty/sampleSet-truncate
Added truncate for SampleSet distribution
2022-08-31 19:57:49 -07:00
Ozzie Gooen
6631c9bad7 Renamed getByWithFn 2022-08-31 19:56:12 -07:00
Quinn Dougherty
cd20bef11d Merge remote-tracking branch 'origin/develop' into getByWithFn 2022-09-01 08:27:54 +08:00
Conor Barnes
2087a30b6b use in multiple plots 2022-08-31 12:15:43 -03:00
Conor Barnes
bc64d2882f more elegantly handle samples, properly use sample data in SampleSets for bands 2022-08-31 11:19:11 -03:00
Ozzie Gooen
a9dd18cbcd
Merge pull request #1034 from quantified-uncertainty/nix-cached-ci
`ci-cachix.yml`
2022-08-31 07:04:34 -07:00
Quinn Dougherty
39a9cd4eb9 a few unit tests 2022-08-31 10:31:32 +08:00
Ozzie Gooen
22458aa9e5 Proper formatting 2022-08-30 18:17:00 -07:00
Ozzie Gooen
2f77888365 Changed getByWithFn to not need two function calls 2022-08-30 17:58:51 -07:00
Conor Barnes
07b7b26d60 include sample band on sampleset story 2022-08-30 09:14:25 -03:00
Quinn Dougherty
2f525c4f8e put .#js in devshells job where it was supposed to be 2022-08-30 19:44:34 +08:00
Vyacheslav Matyukhin
ba280c9292
implement lambda calls in web components 2022-08-30 15:16:57 +04:00
Quinn Dougherty
02cbf227ad rescript-association merged the gentype flake, so our flake inputs are updated accordingly 2022-08-30 19:10:59 +08:00
Quinn Dougherty
4b6a565c33 minor cleanup 2022-08-30 17:12:50 +08:00
Quinn Dougherty
83ee5dfb63 cut down trad ci.yml by commenting out stuff covered by nix; added cli lint 2022-08-30 14:16:29 +08:00
Quinn Dougherty
3f50cde0a6 refactored shells nix code 2022-08-30 13:45:12 +08:00
Quinn Dougherty
37dfc49c58 a modest dag (2) 2022-08-30 13:25:02 +08:00
Quinn Dougherty
d6490be96f a modest dag 2022-08-30 13:23:32 +08:00
Quinn Dougherty
842157ee1b added devShell build to ci-cachix.yml 2022-08-30 13:18:35 +08:00
Quinn Dougherty
b89e4f1bd8 edited trigger conditions in two ci .yml files 2022-08-30 11:36:32 +08:00
Quinn Dougherty
b935621d2a changed @types/lodash version 2022-08-30 11:28:52 +08:00
Quinn Dougherty
905b5fc569 nixfmt compels me 2022-08-30 11:23:33 +08:00
Quinn Dougherty
21eeb63cf2 fix call to pkgs.writeText 2022-08-30 11:23:15 +08:00
Quinn Dougherty
05a7d5c09a rm need for @types/lodash in lang/package.json 2022-08-30 11:19:54 +08:00
Quinn Dougherty
73e1f0b206 rm spurious override of nixpkgs from flake-utils input; cleanup ci-cachix.yml 2022-08-30 09:34:35 +08:00
Quinn Dougherty
8319a484ac Merge remote-tracking branch 'origin/develop' into nix-cached-ci 2022-08-30 09:21:36 +08:00
Quinn
9a8ec06ca7
Merge pull request #1015 from quantified-uncertainty/factor-vscode-lint-to-prettier
rm eslint
2022-08-29 21:19:21 -04:00
Quinn Dougherty
39566696f6 manually fix yarn.lock for prettier action 2022-08-30 09:12:21 +08:00
Quinn Dougherty
e8e0332e2e Merge remote-tracking branch 'origin/develop' into factor-vscode-lint-to-prettier
Manually regenerated lockfile
2022-08-30 09:11:30 +08:00
Ozzie Gooen
c7bc526b38
Merge pull request #1033 from quantified-uncertainty/10k-to-1k-default
Changed samples and xyPointLength from 10K to 1K
2022-08-29 18:10:32 -07:00
dependabot[bot]
1c015599a8
Merge pull request #1021 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-4.8.2 2022-08-30 01:05:03 +00:00
Quinn Dougherty
4341d62893 fixed new bug 2022-08-30 08:55:45 +08:00
Ozzie Gooen
4368bb53fa
Changed samples and xyPointLength from 10K to 1K
See: https://eaforecasting.slack.com/archives/C030T49UHSS/p1661817834362619
2022-08-29 17:52:59 -07:00
Quinn Dougherty
228277d0e8 use prettier action instead of yarn 2022-08-30 08:34:50 +08:00
Quinn Dougherty
d137d6a2b4 manually fix problem with yarn.lock? 2022-08-30 08:28:45 +08:00
Quinn Dougherty
a83b46af25 regenerating lockfile isn't helping 2022-08-30 08:22:55 +08:00
Conor Barnes
a1db813b8b pr comment tweaks 2022-08-29 21:11:48 -03:00
Quinn Dougherty
4f3c84c8ac Merge remote-tracking branch 'origin/develop' into factor-vscode-lint-to-prettier
Piggybacked small changes to `./nixos.sh`
2022-08-30 08:07:35 +08:00
Conor Barnes
87c6ff1c3d width substitute 2022-08-29 20:32:32 -03:00
Vyacheslav Matyukhin
a7bbfad94b
store location in values; render both result and bindings 2022-08-30 01:51:44 +04:00
Conor Barnes
496bd0e539 storybook for date distribution, grab missing things necessary for date distribution in spec 2022-08-29 18:01:07 -03:00
Conor Barnes
0292c66c80 combined distribution chart component 2022-08-29 17:27:13 -03:00
Conor Barnes
7c00897833 don't let rule-line intercept hover events 2022-08-29 16:00:51 -03:00
Conor Barnes
e88d93ac9e more stringent logic over visibility of rule-line and announcer 2022-08-29 15:28:31 -03:00
Vyacheslav Matyukhin
ddfd4e0024
cleanup commented old code 2022-08-29 21:02:05 +04:00
dependabot[bot]
47ccba4c46
⬆️ Bump typescript from 4.7.4 to 4.8.2
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.7.4 to 4.8.2.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.7.4...v4.8.2)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-29 15:16:16 +00:00
Ozzie Gooen
d28a1ffe0b
Merge pull request #1020 from quantified-uncertainty/dependabot/npm_and_yarn/eslint-8.23.0
⬆️ Bump eslint from 8.22.0 to 8.23.0
2022-08-29 08:11:44 -07:00
dependabot[bot]
48409c7f82
⬆️ Bump eslint from 8.22.0 to 8.23.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.22.0 to 8.23.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.22.0...v8.23.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-29 14:59:45 +00:00
Ozzie Gooen
b3549348b0
Merge pull request #1027 from quantified-uncertainty/dependabot/npm_and_yarn/glennsl/rescript-jest-0.9.2
⬆️ Bump @glennsl/rescript-jest from 0.9.1 to 0.9.2
2022-08-29 07:58:23 -07:00
Ozzie Gooen
c52f3b9a55
Merge pull request #1026 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/parser-5.35.1
⬆️ Bump @typescript-eslint/parser from 5.33.1 to 5.35.1
2022-08-29 07:53:41 -07:00
Ozzie Gooen
2b846cae71
Merge pull request #1025 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.7.13
⬆️ Bump @types/node from 18.7.9 to 18.7.13
2022-08-29 07:53:31 -07:00
Ozzie Gooen
4d9eab8303
Merge pull request #1023 from quantified-uncertainty/dependabot/npm_and_yarn/web-vitals-3.0.0
⬆️ Bump web-vitals from 2.1.4 to 3.0.0
2022-08-29 07:53:24 -07:00
Ozzie Gooen
99551f7d1e
Merge pull request #1022 from quantified-uncertainty/dependabot/npm_and_yarn/floating-ui/react-dom-interactions-0.9.3
⬆️ Bump @floating-ui/react-dom-interactions from 0.9.2 to 0.9.3
2022-08-29 07:53:15 -07:00
dependabot[bot]
745c8f9aeb
⬆️ Bump @typescript-eslint/parser from 5.33.1 to 5.35.1
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.33.1 to 5.35.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.35.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-29 14:40:13 +00:00
dependabot[bot]
ea053d4869
⬆️ Bump @types/node from 18.7.9 to 18.7.13
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.9 to 18.7.13.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-29 14:39:50 +00:00
Ozzie Gooen
7f7aefb129
Merge pull request #1019 from quantified-uncertainty/dependabot/npm_and_yarn/mathjs-11.1.0
⬆️ Bump mathjs from 11.0.1 to 11.1.0
2022-08-29 07:38:12 -07:00
Ozzie Gooen
377e99157c
Merge pull request #1018 from quantified-uncertainty/dependabot/npm_and_yarn/fast-check-3.1.2
⬆️ Bump fast-check from 3.1.1 to 3.1.2
2022-08-29 07:38:05 -07:00
Ozzie Gooen
59ff0c61dc
Merge pull request #1017 from quantified-uncertainty/dependabot/npm_and_yarn/framer-motion-7.2.1
⬆️ Bump framer-motion from 7.2.0 to 7.2.1
2022-08-29 07:37:58 -07:00
dependabot[bot]
28067ffcbd
⬆️ Bump @glennsl/rescript-jest from 0.9.1 to 0.9.2
Bumps [@glennsl/rescript-jest](https://github.com/glennsl/rescript-jest) from 0.9.1 to 0.9.2.
- [Release notes](https://github.com/glennsl/rescript-jest/releases)
- [Commits](https://github.com/glennsl/rescript-jest/compare/v0.9.1...v0.9.2)

---
updated-dependencies:
- dependency-name: "@glennsl/rescript-jest"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-29 14:35:37 +00:00
Ozzie Gooen
ed7562c6c6
Merge pull request #1016 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-5.35.1
⬆️ Bump @typescript-eslint/eslint-plugin from 5.33.1 to 5.35.1
2022-08-29 07:32:46 -07:00
dependabot[bot]
790cffec8a
⬆️ Bump web-vitals from 2.1.4 to 3.0.0
Bumps [web-vitals](https://github.com/GoogleChrome/web-vitals) from 2.1.4 to 3.0.0.
- [Release notes](https://github.com/GoogleChrome/web-vitals/releases)
- [Changelog](https://github.com/GoogleChrome/web-vitals/blob/main/CHANGELOG.md)
- [Commits](https://github.com/GoogleChrome/web-vitals/compare/v2.1.4...v3.0.0)

---
updated-dependencies:
- dependency-name: web-vitals
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-29 14:31:20 +00:00
dependabot[bot]
92fb4c47c1
⬆️ Bump @floating-ui/react-dom-interactions from 0.9.2 to 0.9.3
Bumps [@floating-ui/react-dom-interactions](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/react-dom-interactions) from 0.9.2 to 0.9.3.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/react-dom-interactions@0.9.3/packages/react-dom-interactions)

---
updated-dependencies:
- dependency-name: "@floating-ui/react-dom-interactions"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-29 14:30:36 +00:00
dependabot[bot]
1ce657d634
⬆️ Bump mathjs from 11.0.1 to 11.1.0
Bumps [mathjs](https://github.com/josdejong/mathjs) from 11.0.1 to 11.1.0.
- [Release notes](https://github.com/josdejong/mathjs/releases)
- [Changelog](https://github.com/josdejong/mathjs/blob/develop/HISTORY.md)
- [Commits](https://github.com/josdejong/mathjs/compare/v11.0.1...v11.1.0)

---
updated-dependencies:
- dependency-name: mathjs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-29 14:26:59 +00:00
dependabot[bot]
a68c3c0615
⬆️ Bump fast-check from 3.1.1 to 3.1.2
Bumps [fast-check](https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/dubzzz/fast-check/releases)
- [Changelog](https://github.com/dubzzz/fast-check/blob/main/packages/fast-check/CHANGELOG.md)
- [Commits](https://github.com/dubzzz/fast-check/commits/v3.1.2/packages/fast-check)

---
updated-dependencies:
- dependency-name: fast-check
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-29 14:26:20 +00:00
dependabot[bot]
353ea7e130
⬆️ Bump framer-motion from 7.2.0 to 7.2.1
Bumps [framer-motion](https://github.com/framer/motion) from 7.2.0 to 7.2.1.
- [Release notes](https://github.com/framer/motion/releases)
- [Changelog](https://github.com/framer/motion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/framer/motion/compare/v7.2.0...v7.2.1)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-29 14:25:49 +00:00
dependabot[bot]
1c0dc6af06
⬆️ Bump @typescript-eslint/eslint-plugin from 5.33.1 to 5.35.1
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.33.1 to 5.35.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.35.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-29 14:23:47 +00:00
Quinn Dougherty
b6a261bfb0 rm .eslintrc.json 2022-08-29 21:50:51 +08:00
Quinn Dougherty
06cd81eee3 rm eslint 2022-08-29 21:48:14 +08:00
Quinn Dougherty
9e342d884f init nix 2022-08-29 21:39:18 +08:00
Sam Nolan
e493437135 Remove hardcoded enum strings 2022-08-29 13:46:52 +10:00
Sam Nolan
25565ce5c0 Fix tests failing 2022-08-29 12:50:51 +10:00
Vyacheslav Matyukhin
9c3d41427e
update System.version 2022-08-29 00:01:26 +04:00
Vyacheslav Matyukhin
fe8e980d27
fix enum types; remove accidental generated .js file 2022-08-28 23:59:56 +04:00
Vyacheslav Matyukhin
b7aa126e6a
output bindings when result is void 2022-08-28 21:45:15 +04:00
Vyacheslav Matyukhin
481483e937
rename and stringify enum tags 2022-08-28 21:33:16 +04:00
Vyacheslav Matyukhin
b50061a91a
rename all TS classes 2022-08-28 20:19:44 +04:00
Vyacheslav Matyukhin
feeb9e85f1
fix typescript errors, basic playground features work 2022-08-28 00:02:13 +04:00
Vyacheslav Matyukhin
32cefb40da
TS & components (WIP) 2022-08-27 23:57:45 +04:00
Umur Ozkul
68ddf35387 format 2022-08-27 20:39:09 +02:00
Umur Ozkul
e18a06f584 get parameters 2022-08-27 20:38:46 +02:00
Umur Ozkul
687576547c fix lambda toString 2022-08-27 20:36:15 +02:00
Umur Ozkul
dd363d1e45 lambda parameters 2022-08-27 20:35:37 +02:00
Umur Ozkul
e2491bda88 toString for each squiggleValue 2022-08-27 20:24:13 +02:00
Umur Ozkul
2fc325beb6 format 2022-08-27 20:23:49 +02:00
Umur Ozkul
eaa1f60555 ForTS_Dsitribution, proxies for DistributionOperation.Constructors 2022-08-27 20:12:36 +02:00
Umur Ozkul
934144fce8 fix toString 2022-08-27 19:39:13 +02:00
Umur Ozkul
7b4e38a983 consistent to string for every value 2022-08-27 19:34:08 +02:00
Umur Ozkul
efd4fd322c PR968 - start tutorials from 1 instead of 0 2022-08-27 18:36:18 +02:00
Quinn Dougherty
36c3a93d08 10.0.0 2022-08-27 10:37:01 +08:00
Quinn Dougherty
f67abe55a8 Merge remote-tracking branch 'origin/develop' into experiment-10.0rc1 2022-08-27 10:33:48 +08:00
Umur Ozkul
a8efd66fa3 handle topology changes in the project 2022-08-26 02:01:27 +02:00
Umur Ozkul
0a8afc66a4 fix Topology test 2022-08-26 01:32:38 +02:00
Umur Ozkul
4e5e05530e Fix topology runOrderDiff 2022-08-26 00:45:13 +02:00
Umur Ozkul
ac63b57478 Merge branch 'develop' into epic-reducer-project 2022-08-26 00:09:50 +02:00
Ozzie Gooen
668756f874
Merge pull request #1010 from quantified-uncertainty/issue-1007
fix #1007
2022-08-25 13:34:09 -07:00
Umur Ozkul
d29b77ca61 fix #1007
variables that start with true/false
2022-08-25 22:19:29 +02:00
Umur Ozkul
2d59898b4f topology work in progress 2022-08-25 21:59:15 +02:00
Umur Ozkul
9a536d2a38 spell check 2022-08-25 20:56:27 +02:00
Ozzie Gooen
05299c78e6
Merge pull request #968 from quantified-uncertainty/reducer-project
Reducer Project - API Revamp
2022-08-25 08:31:56 -07:00
Vyacheslav Matyukhin
1f22d1f837
non-opaque results 2022-08-25 17:47:41 +04:00
Vyacheslav Matyukhin
7dd9a5bb77
string enum for SquiggleValue tags 2022-08-25 17:47:28 +04:00
Umur Ozkul
1dfc9fe820 RENeedToRun->Error 2022-08-25 10:43:51 +02:00
Conor Barnes
754fc8531f combined distribution chart component 2022-08-24 21:45:46 -03:00
Conor Barnes
a9e43ee7cf bring back the stems 2022-08-24 21:13:50 -03:00
Conor Barnes
a99ee96f5c announce x-axis date properly 2022-08-24 20:56:22 -03:00
Conor Barnes
f8e5396d57 use domain to feed sample for bottom band 2022-08-24 15:26:47 -03:00
Conor Barnes
865b01f48d significant digits on hover value 2022-08-24 13:57:35 -03:00
Umur Ozkul
b2fa0db627 Merge branch 'develop' into reducer-project 2022-08-24 12:24:31 +02:00
Conor Barnes
10db239920 hover line 2022-08-23 12:04:35 -03:00
Conor Barnes
d0468f9ea3 sample points below 2022-08-23 11:05:02 -03:00
Quinn
6a2ff40279
Replace algolia app
They ended up giving us premium for free (I think: the dashboard is pretty bad so it's hard to tell), so I'm replacing the algolia app with another one.
2022-08-23 08:59:52 -04:00
Umur Ozkul
441854ffec Merge branch 'develop' into reducer-project 2022-08-23 14:46:37 +02:00
Umur Ozkul
8de8cc3633 tutorial calling functions 2022-08-23 14:01:07 +02:00
Umur Ozkul
22e45d0e7b tutorial injecting user values 2022-08-23 13:39:19 +02:00
Umur Ozkul
5bc4395ff6 spelling 2022-08-23 13:25:02 +02:00
Umur Ozkul
d37f0fe117 tutorial includes final 2022-08-23 13:18:56 +02:00
Umur Ozkul
63cc9353b1 initial includes tutorial 2022-08-23 12:22:35 +02:00
Umur Ozkul
cd205f2eb9 test for parseInclude 2022-08-23 11:48:22 +02:00
Umur Ozkul
9cf3a93b70 fix parseInludes bug 2022-08-23 11:47:24 +02:00
Umur Ozkul
b7ae9804a5 format 2022-08-23 09:38:12 +02:00
Umur Ozkul
a394e93e06 tutorial intro to includes 2022-08-23 09:35:29 +02:00
Umur Ozkul
f23e26fbbf tutorial 1 depending 2022-08-23 09:20:18 +02:00
Ozzie Gooen
b8d7737aeb
Merge pull request #972 from quantified-uncertainty/pointset-mapy
Pointset mapY
2022-08-22 11:28:12 -07:00
Vyacheslav Matyukhin
59573e60f2
Merge pull request #1004 from orpheuslummis/orpheus/fix/vscode-ext-repo-link
fix: Update vscode ext manifest repository link
2022-08-22 20:34:52 +04:00
Orpheus Lummis
063b6b67a1 fix: Update vscode ext manifest repository link 2022-08-22 11:08:51 -05:00
Umur Ozkul
1250e66fb0 fix RT 2022-08-22 17:24:58 +02:00
dependabot[bot]
ae20ba8a70
Merge pull request #1000 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.7.9 2022-08-22 15:10:55 +00:00
dependabot[bot]
7eec5b397c
⬆️ Bump @types/node from 18.7.4 to 18.7.9
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.7.4 to 18.7.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 15:03:39 +00:00
Ozzie Gooen
2b92341257
Merge pull request #1001 from quantified-uncertainty/dependabot/npm_and_yarn/react-hook-form-7.34.2
⬆️ Bump react-hook-form from 7.34.1 to 7.34.2
2022-08-22 08:01:48 -07:00
Ozzie Gooen
8be02f3344
Merge pull request #999 from quantified-uncertainty/dependabot/npm_and_yarn/framer-motion-7.2.0
⬆️ Bump framer-motion from 7.1.1 to 7.2.0
2022-08-22 08:01:32 -07:00
Ozzie Gooen
267c610263
Merge pull request #998 from quantified-uncertainty/dependabot/npm_and_yarn/vega-lite-5.5.0
⬆️ Bump vega-lite from 5.4.0 to 5.5.0
2022-08-22 08:00:45 -07:00
Conor Barnes
90ad0fdbdc announcer for hover values 2022-08-22 12:00:28 -03:00
Ozzie Gooen
90b8c083df
Merge pull request #997 from quantified-uncertainty/dependabot/npm_and_yarn/types/lodash-4.14.184
⬆️ Bump @types/lodash from 4.14.182 to 4.14.184
2022-08-22 08:00:26 -07:00
Ozzie Gooen
49429fcff8
Merge pull request #996 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/parser-5.33.1
⬆️ Bump @typescript-eslint/parser from 5.33.0 to 5.33.1
2022-08-22 08:00:17 -07:00
Conor Barnes
376e272c08 add offset 2022-08-22 11:42:21 -03:00
dependabot[bot]
fabd8daf9a
⬆️ Bump react-hook-form from 7.34.1 to 7.34.2
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.34.1 to 7.34.2.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.34.1...v7.34.2)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 14:27:31 +00:00
dependabot[bot]
2eb011d965
⬆️ Bump framer-motion from 7.1.1 to 7.2.0
Bumps [framer-motion](https://github.com/framer/motion) from 7.1.1 to 7.2.0.
- [Release notes](https://github.com/framer/motion/releases)
- [Changelog](https://github.com/framer/motion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/framer/motion/compare/v7.1.1...v7.2.0)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 14:23:50 +00:00
dependabot[bot]
6b46817f70
⬆️ Bump vega-lite from 5.4.0 to 5.5.0
Bumps [vega-lite](https://github.com/vega/vega-lite) from 5.4.0 to 5.5.0.
- [Release notes](https://github.com/vega/vega-lite/releases)
- [Changelog](https://github.com/vega/vega-lite/blob/v5.5.0/CHANGELOG.md)
- [Commits](https://github.com/vega/vega-lite/compare/v5.4.0...v5.5.0)

---
updated-dependencies:
- dependency-name: vega-lite
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 14:22:54 +00:00
dependabot[bot]
e205133c8e
⬆️ Bump @types/lodash from 4.14.182 to 4.14.184
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.182 to 4.14.184.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

---
updated-dependencies:
- dependency-name: "@types/lodash"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 14:22:07 +00:00
dependabot[bot]
9bffa25dea
⬆️ Bump @typescript-eslint/parser from 5.33.0 to 5.33.1
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.33.0 to 5.33.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.33.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 14:20:27 +00:00
Umur Ozkul
e6464dbe5c make ts compatible
commit 94803421acd2e5cb3a0f88e10f9244d374fab20b
Author: Umur Ozkul <umur@hightechmind.io>
Date:   Mon Aug 22 08:48:33 2022 +0200

    note on old habbits

commit 2c47f80fce8fa6c12cb53b97f7150758eaa74b88
Author: Umur Ozkul <umur@hightechmind.io>
Date:   Mon Aug 22 08:18:16 2022 +0200

    getTag returns enum value

commit 733b9a820f1d01b618708896451a112d638ee811
Author: Umur Ozkul <umur@hightechmind.io>
Date:   Mon Aug 22 07:07:30 2022 +0200

    result

commit 64698f4a930182b3ccf122849824e4b6df251a9f
Author: Umur Ozkul <umur@hightechmind.io>
Date:   Mon Aug 22 06:48:30 2022 +0200

    return tags as ts enum

commit 8ac802428a7aaac5367f5e8a9aaa592b89e305eb
Author: Umur Ozkul <umur@hightechmind.io>
Date:   Mon Aug 22 06:16:26 2022 +0200

    export tags

commit 6c843e475a98ca1fcfa893d09d45ac9ad7c633ee
Author: Umur Ozkul <umur@hightechmind.io>
Date:   Mon Aug 22 06:11:00 2022 +0200

    distribution tag

commit 9a43ec30fcaf967a672475431243949748d00bc7
Author: Umur Ozkul <umur@hightechmind.io>
Date:   Mon Aug 22 05:46:24 2022 +0200

    opaque result

commit f89bdd47c41135135baac99b18faf1c418cc4142
Author: Umur Ozkul <umur@hightechmind.io>
Date:   Mon Aug 22 05:24:18 2022 +0200

    make ts compilable

    commit 6609bb3691b08405639e6f20da0fad309f2f232e
    Author: Umur Ozkul <umur@hightechmind.io>
    Date:   Mon Aug 22 05:21:34 2022 +0200

        compiles

    commit bace3eca63079de8f285069c65b219601e7310bf
    Author: Umur Ozkul <umur@hightechmind.io>
    Date:   Mon Aug 22 04:33:34 2022 +0200

        rescript compiles

    commit cd095f605c543902edec08fdcd407600296ec0cb
    Author: Umur Ozkul <umur@hightechmind.io>
    Date:   Mon Aug 22 02:40:31 2022 +0200

        squiggleValue

    commit 9b78b5d6c8b69287458fe392f142ceb3bca99407
    Author: Umur Ozkul <umur@hightechmind.io>
    Date:   Mon Aug 22 02:37:11 2022 +0200

        project

    commit 20c8693b1eb6492f1662bedbb26b469aac11f8ff
    Author: Umur Ozkul <umur@hightechmind.io>
    Date:   Mon Aug 22 00:59:44 2022 +0200

        compiles
2022-08-22 08:50:59 +02:00
Ozzie Gooen
e1efefaf7d Added sampleN from Stdlib to allow for correct sampling of discrete distributions 2022-08-21 21:45:05 -07:00
Ozzie Gooen
7237f2709b First implementation of sampleSet mixed distribution 2022-08-20 20:32:41 -07:00
Ozzie Gooen
516f4fa39d Added truncate for SampleSet distribution 2022-08-20 17:10:08 -07:00
Ozzie Gooen
72b1d6af3e Formatted 2022-08-20 15:59:25 -07:00
Ozzie Gooen
15debbddea Added very minimal documentation for PointSet mapY 2022-08-20 15:56:59 -07:00
Ozzie Gooen
a04761226d Improved error messages of function library 2022-08-20 15:50:30 -07:00
Umur Ozkul
25fb6dec82 Merge branch 'develop' into reducer-project 2022-08-20 08:12:56 +02:00
Umur Ozkul
c380ee2206 toStringResult for easy testing 2022-08-20 08:11:20 +02:00
Umur Ozkul
347c85324b opaque distribution type 2022-08-20 07:37:38 +02:00
Umur Ozkul
feb7627ad0 result fmap 2022-08-20 06:47:23 +02:00
Quinn
c3bb0ba291
Merge pull request #992 from quantified-uncertainty/algolia
docs site: algolia search
2022-08-19 20:19:40 -04:00
Umur Ozkul
ddb6d7f958 remove opaque type violations 2022-08-19 23:20:45 +02:00
Umur Ozkul
7957b89bb4 remove opaque type violations 2022-08-19 23:19:30 +02:00
Umur Ozkul
05ce6d2872 Comment opaue type violations 2022-08-19 23:01:38 +02:00
Umur Ozkul
bc86988453 Merge branch 'develop' into reducer-project 2022-08-19 22:35:32 +02:00
Umur Ozkul
4bf5f33f25 result tag 2022-08-19 22:03:55 +02:00
Umur Ozkul
5c75da4736 TypescriptInterface functions 2022-08-19 21:58:06 +02:00
Umur Ozkul
d7ed875566 demolish external value 2022-08-19 21:12:04 +02:00
Umur Ozkul
f573c326d2 demolish ExternalValue 2022-08-19 21:01:02 +02:00
Umur Ozkul
decc12637f bind common type 2022-08-19 20:23:30 +02:00
Umur Ozkul
a9ce3ca40d fix errorValue 2022-08-19 20:11:43 +02:00
Vyacheslav Matyukhin
bb4a108e59
Merge pull request #993 from quantified-uncertainty/fix-playground
Fix playground
2022-08-19 22:09:53 +04:00
Umur Ozkul
3e3ae50498 fix getIncldues result 2022-08-19 20:09:26 +02:00
Vyacheslav Matyukhin
c468457052
update squiggle-components version (fixes playground) 2022-08-19 21:54:29 +04:00
Umur Ozkul
14ceaa2667 missing genType 2022-08-19 19:54:20 +02:00
Vyacheslav Matyukhin
514af05fc2
Merge pull request #824 from quantified-uncertainty/multiple-charts
Add multiple plotting
2022-08-19 21:45:52 +04:00
Vyacheslav Matyukhin
bf02f69aca
legends, blues colors scheme, remove color setting 2022-08-19 21:14:08 +04:00
Umur Ozkul
3c1a49e44d index.ts 2022-08-19 18:44:32 +02:00
Umur Ozkul
610fa0227e opaque result 2022-08-19 18:28:03 +02:00
Umur Ozkul
bc7f1317da fix project test 2022-08-19 18:27:50 +02:00
Umur Ozkul
975b1ffda8 error value 2022-08-19 18:04:24 +02:00
Umur Ozkul
e9c55fe802 demolish FFI 2022-08-19 17:33:37 +02:00
Umur Ozkul
af4070a34f demolish external expression value 2022-08-19 17:30:29 +02:00
Umur Ozkul
f0ba68f64a project 2022-08-19 17:22:22 +02:00
Vyacheslav Matyukhin
fc29a7211e
minor improvements 2022-08-19 15:17:41 +04:00
Vyacheslav Matyukhin
7866203ac4
reimplement parsePlot with yup 2022-08-19 15:17:31 +04:00
Vyacheslav Matyukhin
61051ffe5f
multiple plots story 2022-08-19 15:15:43 +04:00
Quinn Dougherty
127fbe50a2 docs site: algolia search 2022-08-18 15:13:23 -07:00
Umur Ozkul
fdc7f06f08 result 2022-08-18 15:33:01 +02:00
Umur Ozkul
868f9f428a parametric types for typescript 2022-08-17 21:22:10 +02:00
Umur Ozkul
55c03ed520 missing gentype 2022-08-17 19:32:11 +02:00
Umur Ozkul
a8c7297621 TypeScript experiment 2022-08-17 18:57:34 +02:00
Umur Ozkul
3f92e7c3e1 Merge branch 'reducer-project' of github.com:quantified-uncertainty/squiggle into reducer-project 2022-08-16 19:02:05 +02:00
Umur Ozkul
32f3aeba13 tutorial TODO 2022-08-16 19:01:47 +02:00
Vyacheslav Matyukhin
c204156b75
fix gentype issues with "this" keyword 2022-08-16 20:58:47 +04:00
Umur Ozkul
454a545ef6 tutorial: initial
Also missing public API function
2022-08-16 17:07:15 +02:00
Vyacheslav Matyukhin
716ec61913
fix some gentype errors 2022-08-16 16:02:23 +04:00
Umur Ozkul
dc642774eb reformat 2022-08-16 02:49:16 +02:00
Umur Ozkul
b3a32b1231 more typescript friendly 2022-08-16 02:14:45 +02:00
Umur Ozkul
ee17bd9e57 more typescript friendly & remove an unnecessary call 2022-08-16 01:51:01 +02:00
Umur Ozkul
966fc7ad98 Merge branch 'develop' into reducer-project 2022-08-15 20:22:03 +02:00
dependabot[bot]
7925ffd640
Merge pull request #989 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-5.33.1 2022-08-15 18:02:30 +00:00
dependabot[bot]
6bed1cb7de
⬆️ Bump @typescript-eslint/eslint-plugin from 5.32.0 to 5.33.1
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.32.0 to 5.33.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.33.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 17:54:58 +00:00
Quinn
10ae50aeb6
Merge pull request #979 from quantified-uncertainty/dependabot/npm_and_yarn/types/styled-components-5.1.26
⬆️ Bump @types/styled-components from 5.1.25 to 5.1.26
2022-08-15 13:53:41 -04:00
Quinn
b21a19015a
Merge pull request #984 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/parser-5.33.0
⬆️ Bump @typescript-eslint/parser from 5.32.0 to 5.33.0
2022-08-15 13:53:07 -04:00
dependabot[bot]
7c92808c67
⬆️ Bump @types/styled-components from 5.1.25 to 5.1.26
Bumps [@types/styled-components](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/styled-components) from 5.1.25 to 5.1.26.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/styled-components)

---
updated-dependencies:
- dependency-name: "@types/styled-components"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 15:01:43 +00:00
dependabot[bot]
bef4dc91f2
⬆️ Bump @typescript-eslint/parser from 5.32.0 to 5.33.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.32.0 to 5.33.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.33.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 15:00:01 +00:00
Ozzie Gooen
d21704e667
Merge pull request #978 from quantified-uncertainty/dependabot/npm_and_yarn/floating-ui/react-dom-interactions-0.9.2
⬆️ Bump @floating-ui/react-dom-interactions from 0.9.1 to 0.9.2
2022-08-15 07:58:41 -07:00
Ozzie Gooen
7ebb66bb4a
Merge pull request #981 from quantified-uncertainty/dependabot/npm_and_yarn/react-hook-form-7.34.1
⬆️ Bump react-hook-form from 7.34.0 to 7.34.1
2022-08-15 07:58:26 -07:00
Ozzie Gooen
0a5c655b5b
Merge pull request #983 from quantified-uncertainty/dependabot/npm_and_yarn/framer-motion-7.1.1
⬆️ Bump framer-motion from 7.0.0 to 7.1.1
2022-08-15 07:58:17 -07:00
Ozzie Gooen
ef5906db52
Merge pull request #985 from quantified-uncertainty/dependabot/npm_and_yarn/webpack-dev-server-4.10.0
⬆️ Bump webpack-dev-server from 4.9.3 to 4.10.0
2022-08-15 07:58:05 -07:00
Ozzie Gooen
6c1513f65b
Merge pull request #986 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.7.4
⬆️ Bump @types/node from 18.6.4 to 18.7.4
2022-08-15 07:57:58 -07:00
Ozzie Gooen
1b9f11612b
Merge pull request #987 from quantified-uncertainty/dependabot/npm_and_yarn/eslint-8.22.0
⬆️ Bump eslint from 8.21.0 to 8.22.0
2022-08-15 07:57:50 -07:00
Ozzie Gooen
bce8daf43c
Merge pull request #988 from quantified-uncertainty/dependabot/npm_and_yarn/testing-library/user-event-14.4.3
⬆️ Bump @testing-library/user-event from 14.4.2 to 14.4.3
2022-08-15 07:57:43 -07:00
dependabot[bot]
39b37960dd
⬆️ Bump @testing-library/user-event from 14.4.2 to 14.4.3
Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 14.4.2 to 14.4.3.
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/user-event/compare/v14.4.2...v14.4.3)

---
updated-dependencies:
- dependency-name: "@testing-library/user-event"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 14:45:23 +00:00
dependabot[bot]
00c6ea7d3e
⬆️ Bump eslint from 8.21.0 to 8.22.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.21.0 to 8.22.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.21.0...v8.22.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 14:44:53 +00:00
dependabot[bot]
e7bae5fcb5
⬆️ Bump @types/node from 18.6.4 to 18.7.4
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.6.4 to 18.7.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 14:44:23 +00:00
dependabot[bot]
a1e79422a9
⬆️ Bump webpack-dev-server from 4.9.3 to 4.10.0
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.9.3 to 4.10.0.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.9.3...v4.10.0)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 14:43:38 +00:00
dependabot[bot]
1d9d24e08c
⬆️ Bump framer-motion from 7.0.0 to 7.1.1
Bumps [framer-motion](https://github.com/framer/motion) from 7.0.0 to 7.1.1.
- [Release notes](https://github.com/framer/motion/releases)
- [Changelog](https://github.com/framer/motion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/framer/motion/compare/v7.0.0...v7.1.1)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 14:41:28 +00:00
dependabot[bot]
5e16c2f76e
⬆️ Bump react-hook-form from 7.34.0 to 7.34.1
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.34.0 to 7.34.1.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.34.0...v7.34.1)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 14:40:22 +00:00
dependabot[bot]
b55bd59219
⬆️ Bump @floating-ui/react-dom-interactions from 0.9.1 to 0.9.2
Bumps [@floating-ui/react-dom-interactions](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/react-dom-interactions) from 0.9.1 to 0.9.2.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/react-dom-interactions@0.9.2/packages/react-dom-interactions)

---
updated-dependencies:
- dependency-name: "@floating-ui/react-dom-interactions"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 14:39:20 +00:00
Umur Ozkul
1b69ce3aa1 compatibility to change environment at runtime
There will be changes in develop to change environment at runtime. This
fix provides compatibility. So that they can be merged easier.
2022-08-15 15:18:14 +02:00
Umur Ozkul
66f2f18a00 fix merging develop 2022-08-15 14:45:45 +02:00
Umur Ozkul
58e1cf187d Merge branch 'develop' into reducer-project 2022-08-15 13:59:07 +02:00
Umur Ozkul
9075b74536 Edit comments 2022-08-14 17:40:52 +02:00
Umur Ozkul
0c1c5c9499 seperate Project Topology Module 2022-08-14 16:18:07 +02:00
Sam Nolan
e7a1fe1c17 Merge branch 'develop' into multiple-charts 2022-08-13 10:53:09 +01:00
Sam Nolan
70f26a08ba Fix multiple charting 2022-08-13 10:52:56 +01:00
Ozzie Gooen
5dd988ac13
Merge pull request #900 from quantified-uncertainty/reducer-typecheck-example
Reducer real life type checking example to build a library
2022-08-11 17:45:30 -07:00
Sam Nolan
c97d1d457e Remove unneccesary line 2022-08-11 14:22:55 +01:00
Sam Nolan
4aab78b45c Format code 2022-08-11 12:31:44 +01:00
Sam Nolan
ffb9e85d75 Merge branch 'develop' into multiple-charts 2022-08-11 12:29:08 +01:00
Sam Nolan
ba59047d31 Merge branch 'develop' into multiple-charts 2022-08-11 12:12:59 +01:00
Umur Ozkul
f21725d86c remove TODO 2022-08-10 12:09:06 +02:00
Umur Ozkul
2e8e71bbd0 project
test

remove setResult

parse end of outerblock

test end of outer block

compiles

testing

bindings tested

todo chain bindings

topological sort
2022-08-10 11:53:39 +02:00
Ozzie Gooen
f1f274127b
Merge pull request #967 from quantified-uncertainty/0.3.0
0.2.x -> 0.3.0
2022-08-09 14:16:29 -07:00
Quinn Dougherty
c288fd58c3 versions correction (manual) 2022-08-09 13:57:45 -07:00
Ozzie Gooen
80e17be903 Updated Squiggle components package 2022-08-09 13:53:29 -07:00
Ozzie Gooen
63e2b1f8c9 Updated npm versions to 0.3.0 2022-08-09 11:55:49 -07:00
Ozzie Gooen
f015e2ed19
Merge pull request #966 from quantified-uncertainty/develop
Develop -> Master, Aug 8
2022-08-08 22:22:20 -07:00
Quinn
07af79adc8
bump rescript and @rescript/std to 10.0.0-rc.1 2022-08-08 14:54:57 -04:00
Ozzie Gooen
2aaa43008d Very simple implementation of pointset mapY 2022-08-08 10:31:05 -07:00
dependabot[bot]
31d27a97c8
Merge pull request #961 from quantified-uncertainty/dependabot/npm_and_yarn/testing-library/user-event-14.4.2 2022-08-08 15:01:04 +00:00
dependabot[bot]
e2fe12c5f7
⬆️ Bump @testing-library/user-event from 14.4.1 to 14.4.2
Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 14.4.1 to 14.4.2.
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/user-event/compare/v14.4.1...v14.4.2)

---
updated-dependencies:
- dependency-name: "@testing-library/user-event"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 14:53:27 +00:00
dependabot[bot]
e095838a0e
Merge pull request #958 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.6.4 2022-08-08 14:47:53 +00:00
Quinn
46f8570d33
Merge pull request #962 from quantified-uncertainty/dependabot/npm_and_yarn/tailwindcss-3.1.8
⬆️ Bump tailwindcss from 3.1.7 to 3.1.8
2022-08-08 10:45:13 -04:00
dependabot[bot]
6d07228a9c
⬆️ Bump @types/node from 18.6.3 to 18.6.4
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.6.3 to 18.6.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 14:40:08 +00:00
Quinn
450634f7e2
Merge pull request #959 from quantified-uncertainty/dependabot/npm_and_yarn/framer-motion-7.0.0
⬆️ Bump framer-motion from 6.5.1 to 7.0.0
2022-08-08 10:36:04 -04:00
dependabot[bot]
29c5d30ef9
Merge pull request #957 from quantified-uncertainty/dependabot/npm_and_yarn/testing-library/jest-dom-5.16.5 2022-08-08 14:34:34 +00:00
dependabot[bot]
d6655bde2f
⬆️ Bump tailwindcss from 3.1.7 to 3.1.8
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss) from 3.1.7 to 3.1.8.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.7...v3.1.8)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 14:32:06 +00:00
dependabot[bot]
2880e447bb
Merge pull request #956 from quantified-uncertainty/dependabot/npm_and_yarn/types/vscode-1.70.0 2022-08-08 14:29:03 +00:00
dependabot[bot]
7422e5becf
⬆️ Bump framer-motion from 6.5.1 to 7.0.0
Bumps [framer-motion](https://github.com/framer/motion) from 6.5.1 to 7.0.0.
- [Release notes](https://github.com/framer/motion/releases)
- [Changelog](https://github.com/framer/motion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/framer/motion/compare/v6.5.1...v7.0.0)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 14:28:42 +00:00
dependabot[bot]
dce0864bde
⬆️ Bump @testing-library/jest-dom from 5.16.4 to 5.16.5
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.16.4 to 5.16.5.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v5.16.4...v5.16.5)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 14:26:50 +00:00
dependabot[bot]
c2f2b644a6
⬆️ Bump @types/vscode from 1.69.0 to 1.70.0
Bumps [@types/vscode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/vscode) from 1.69.0 to 1.70.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/vscode)

---
updated-dependencies:
- dependency-name: "@types/vscode"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 14:22:30 +00:00
Ozzie Gooen
a984e6a5f9
Merge pull request #954 from ForrestWeiswolf/fix-npm-package-example
Fix example in squiggle-lang README
2022-08-04 12:36:43 -07:00
Ozzie Gooen
159e9763d7
Merge pull request #955 from ForrestWeiswolf/update-docs-links
Update 'Language Basics' and 'Squiggle functions' links in README
2022-08-04 12:09:56 -07:00
Forrest Wolf
9c25c90a33 Update 'Language Basics' and 'Squiggle functions' links in README 2022-08-04 15:05:46 -04:00
Forrest Wolf
90cd7f2a4a Fix example in squiggle-lang README 2022-08-04 15:00:05 -04:00
dependabot[bot]
71a237bfb6
Merge pull request #951 from quantified-uncertainty/dependabot/npm_and_yarn/storybook/builder-webpack5-6.5.10 2022-08-04 14:00:06 +00:00
dependabot[bot]
0e7ea923d5
⬆️ Bump @storybook/builder-webpack5 from 6.5.9 to 6.5.10
Bumps [@storybook/builder-webpack5](https://github.com/storybookjs/storybook/tree/HEAD/lib/core) from 6.5.9 to 6.5.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.10/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.10/lib/core)

---
updated-dependencies:
- dependency-name: "@storybook/builder-webpack5"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 13:51:23 +00:00
dependabot[bot]
e23899f0d2
Merge pull request #948 from quantified-uncertainty/dependabot/npm_and_yarn/testing-library/user-event-14.4.1 2022-08-04 13:46:33 +00:00
Quinn
9ac89ed9a7
Merge pull request #952 from quantified-uncertainty/dependabot/npm_and_yarn/storybook/manager-webpack5-6.5.10
⬆️ Bump @storybook/manager-webpack5 from 6.5.9 to 6.5.10
2022-08-04 09:44:48 -04:00
dependabot[bot]
582f957b87
Merge pull request #949 from quantified-uncertainty/dependabot/npm_and_yarn/storybook/addon-links-6.5.10 2022-08-04 13:39:33 +00:00
dependabot[bot]
0092923543
⬆️ Bump @testing-library/user-event from 14.3.0 to 14.4.1
Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 14.3.0 to 14.4.1.
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/user-event/compare/v14.3...v14.4.1)

---
updated-dependencies:
- dependency-name: "@testing-library/user-event"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 13:35:32 +00:00
dependabot[bot]
cc86186e0a
⬆️ Bump @storybook/addon-links from 6.5.9 to 6.5.10
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 6.5.9 to 6.5.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.10/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.10/addons/links)

---
updated-dependencies:
- dependency-name: "@storybook/addon-links"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 13:32:35 +00:00
dependabot[bot]
b65102721e
⬆️ Bump @storybook/manager-webpack5 from 6.5.9 to 6.5.10
Bumps [@storybook/manager-webpack5](https://github.com/storybookjs/storybook/tree/HEAD/lib/core) from 6.5.9 to 6.5.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.10/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.10/lib/core)

---
updated-dependencies:
- dependency-name: "@storybook/manager-webpack5"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 13:32:10 +00:00
dependabot[bot]
bc81ee0227
Merge pull request #947 from quantified-uncertainty/dependabot/npm_and_yarn/storybook/addon-essentials-6.5.10 2022-08-04 13:27:50 +00:00
dependabot[bot]
69fa7f2762
Merge pull request #946 from quantified-uncertainty/dependabot/npm_and_yarn/storybook/react-6.5.10 2022-08-04 13:25:01 +00:00
Quinn
f3843d9390
Merge pull request #944 from quantified-uncertainty/dependabot/github_actions/actions/checkout-3
⬆️ Bump actions/checkout from 2 to 3
2022-08-04 09:20:50 -04:00
Quinn
40f61c66dd
Merge pull request #942 from quantified-uncertainty/dependabot/github_actions/fkirc/skip-duplicate-actions-4.0.0
⬆️ Bump fkirc/skip-duplicate-actions from 3.4.1 to 4.0.0
2022-08-04 09:18:53 -04:00
Quinn
3884ff8cfb
Merge pull request #943 from quantified-uncertainty/dependabot/github_actions/google-github-actions/release-please-action-3
⬆️ Bump google-github-actions/release-please-action from 2 to 3
2022-08-04 09:18:33 -04:00
dependabot[bot]
4cbea6826f
⬆️ Bump @storybook/addon-essentials from 6.5.9 to 6.5.10
Bumps [@storybook/addon-essentials](https://github.com/storybookjs/storybook/tree/HEAD/addons/essentials) from 6.5.9 to 6.5.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.10/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.10/addons/essentials)

---
updated-dependencies:
- dependency-name: "@storybook/addon-essentials"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 13:17:28 +00:00
Quinn
1e6294b365
Merge pull request #945 from quantified-uncertainty/dependabot/github_actions/github/codeql-action-2
⬆️ Bump github/codeql-action from 1 to 2
2022-08-04 09:16:20 -04:00
dependabot[bot]
6a6fdcfee7
⬆️ Bump @storybook/react from 6.5.9 to 6.5.10
Bumps [@storybook/react](https://github.com/storybookjs/storybook/tree/HEAD/app/react) from 6.5.9 to 6.5.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.10/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v6.5.10/app/react)

---
updated-dependencies:
- dependency-name: "@storybook/react"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 13:15:12 +00:00
dependabot[bot]
a9d80ea0a2
⬆️ Bump github/codeql-action from 1 to 2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 13:10:56 +00:00
dependabot[bot]
130e8fb3f6
⬆️ Bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 13:10:53 +00:00
dependabot[bot]
4fd80a46ee
⬆️ Bump google-github-actions/release-please-action from 2 to 3
Bumps [google-github-actions/release-please-action](https://github.com/google-github-actions/release-please-action) from 2 to 3.
- [Release notes](https://github.com/google-github-actions/release-please-action/releases)
- [Changelog](https://github.com/google-github-actions/release-please-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google-github-actions/release-please-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: google-github-actions/release-please-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 13:10:51 +00:00
dependabot[bot]
1dd74ed33e
⬆️ Bump fkirc/skip-duplicate-actions from 3.4.1 to 4.0.0
Bumps [fkirc/skip-duplicate-actions](https://github.com/fkirc/skip-duplicate-actions) from 3.4.1 to 4.0.0.
- [Release notes](https://github.com/fkirc/skip-duplicate-actions/releases)
- [Commits](https://github.com/fkirc/skip-duplicate-actions/compare/v3.4.1...v4.0.0)

---
updated-dependencies:
- dependency-name: fkirc/skip-duplicate-actions
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 13:10:48 +00:00
Quinn Dougherty
14df9d6438 hotfix: set dependabot on gh actions versions 2022-08-04 09:10:26 -04:00
dependabot[bot]
497a5d31ae
Merge pull request #940 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-5.32.0 2022-08-01 19:14:31 +00:00
dependabot[bot]
d3da994230
⬆️ Bump @typescript-eslint/eslint-plugin from 5.31.0 to 5.32.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.31.0 to 5.32.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.32.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 19:08:01 +00:00
Quinn Dougherty
4d78980530 yarn format:all compels me :) 2022-08-01 15:05:00 -04:00
dependabot[bot]
632f4b7b1d
Merge pull request #939 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/parser-5.32.0 2022-08-01 18:58:32 +00:00
Quinn Dougherty
5d1bdbb68c rm bootstrap sha 2022-08-01 14:57:06 -04:00
Quinn
d6e6b8007f
Merge pull request #938 from quantified-uncertainty/release-please/branches/develop
chore: release develop
2022-08-01 14:52:27 -04:00
dependabot[bot]
31085f8218
⬆️ Bump @typescript-eslint/parser from 5.31.0 to 5.32.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.31.0 to 5.32.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.32.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 18:49:08 +00:00
github-actions[bot]
1e70bff069
chore: release develop 2022-08-01 18:45:32 +00:00
Quinn Dougherty
89e5f7e072 Added note about dynamic custom component in internal docs 2022-08-01 14:44:40 -04:00
Quinn Dougherty
1a09f400e0 yarn format:all compels me 2022-08-01 14:40:37 -04:00
Quinn Dougherty
c366476cf7 removed release-please from devDependencies; added skip-github-release to release-please.yml 2022-08-01 14:40:01 -04:00
Quinn Dougherty
fd411c49b9 fix: so the PR it opens is proper this time 2022-08-01 14:18:21 -04:00
Quinn Dougherty
7ea95225b2 fix: added NextJS starter to Integrations.md 2022-08-01 14:06:29 -04:00
Quinn Dougherty
ae9e99fab8 fix: (for triggering releaes-please)
should_skip_action material is now written in `release-please.yml`
2022-08-01 13:59:04 -04:00
Quinn Dougherty
b1cbce1aaa perhaps a proper .release-please-manifest.json now 2022-08-01 13:46:28 -04:00
Quinn Dougherty
a1853388fd fix: triggering patch increment (via release-please.yml) 2022-08-01 13:42:43 -04:00
Quinn Dougherty
155f03dc09 fixed release-please.yml 2022-08-01 13:41:13 -04:00
Quinn
a120251882
Merge pull request #935 from quantified-uncertainty/releaseplease
Releaseplease
2022-08-01 13:37:51 -04:00
Quinn Dougherty
2abe92cf42 added json updater to .release-please-manifest.json 2022-08-01 13:13:29 -04:00
Quinn Dougherty
29144335c1 init release please (rm npm publishing) 2022-08-01 12:59:43 -04:00
Quinn Dougherty
ab518a067e init release please 2022-08-01 12:59:21 -04:00
dependabot[bot]
6a2584d800
Merge pull request #934 from quantified-uncertainty/dependabot/npm_and_yarn/floating-ui/react-dom-interactions-0.9.1 2022-08-01 15:29:47 +00:00
dependabot[bot]
9d238fc42e
Merge pull request #933 from quantified-uncertainty/dependabot/npm_and_yarn/fast-check-3.1.1 2022-08-01 15:25:14 +00:00
dependabot[bot]
b1d225765b
Merge pull request #932 from quantified-uncertainty/dependabot/npm_and_yarn/vega-lite-5.4.0 2022-08-01 15:23:49 +00:00
dependabot[bot]
e7369b61fa
⬆️ Bump @floating-ui/react-dom-interactions from 0.6.6 to 0.9.1
Bumps [@floating-ui/react-dom-interactions](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/react-dom-interactions) from 0.6.6 to 0.9.1.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/react-dom-interactions@0.9.1/packages/react-dom-interactions)

---
updated-dependencies:
- dependency-name: "@floating-ui/react-dom-interactions"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 15:16:15 +00:00
dependabot[bot]
8b124376b2
⬆️ Bump vega-lite from 5.3.0 to 5.4.0
Bumps [vega-lite](https://github.com/vega/vega-lite) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/vega/vega-lite/releases)
- [Changelog](https://github.com/vega/vega-lite/blob/v5.4.0/CHANGELOG.md)
- [Commits](https://github.com/vega/vega-lite/compare/v5.3.0...v5.4.0)

---
updated-dependencies:
- dependency-name: vega-lite
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 15:15:57 +00:00
dependabot[bot]
bf90427bfa
⬆️ Bump fast-check from 3.1.0 to 3.1.1
Bumps [fast-check](https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/dubzzz/fast-check/releases)
- [Changelog](https://github.com/dubzzz/fast-check/blob/main/packages/fast-check/CHANGELOG.md)
- [Commits](https://github.com/dubzzz/fast-check/commits/v3.1.1/packages/fast-check)

---
updated-dependencies:
- dependency-name: fast-check
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 15:13:32 +00:00
dependabot[bot]
f431e7fadb
Merge pull request #927 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/parser-5.31.0 2022-08-01 15:09:34 +00:00
Quinn
079d8304ef
Update dependabot.yml: open-pull-request-limit: 100 2022-08-01 11:07:19 -04:00
dependabot[bot]
f8bcd1c4b3
Merge pull request #930 from quantified-uncertainty/dependabot/npm_and_yarn/docusaurus/core-2.0.1 2022-08-01 15:07:13 +00:00
dependabot[bot]
77fb3b14a0
⬆️ Bump @typescript-eslint/parser from 5.30.7 to 5.31.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.30.7 to 5.31.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.31.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 15:03:42 +00:00
dependabot[bot]
0ebb948a17
Merge pull request #931 from quantified-uncertainty/dependabot/npm_and_yarn/react-hook-form-7.34.0 2022-08-01 15:03:20 +00:00
dependabot[bot]
05c2743ac1
⬆️ Bump @docusaurus/core from 2.0.0-rc.1 to 2.0.1
Bumps [@docusaurus/core](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus) from 2.0.0-rc.1 to 2.0.1.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v2.0.1/packages/docusaurus)

---
updated-dependencies:
- dependency-name: "@docusaurus/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 14:57:42 +00:00
dependabot[bot]
75be1eaeae
Merge pull request #929 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-5.31.0 2022-08-01 14:57:25 +00:00
Quinn
f822552133
Merge pull request #928 from quantified-uncertainty/dependabot/npm_and_yarn/docusaurus/preset-classic-2.0.1
⬆️ Bump @docusaurus/preset-classic from 2.0.0-rc.1 to 2.0.1
2022-08-01 10:55:49 -04:00
dependabot[bot]
f60da1d5a1
⬆️ Bump react-hook-form from 7.33.1 to 7.34.0
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.33.1 to 7.34.0.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.33.1...v7.34.0)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 14:53:30 +00:00
dependabot[bot]
ffc22706db
Merge pull request #926 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.6.3 2022-08-01 14:53:24 +00:00
dependabot[bot]
49c1881d29
⬆️ Bump @typescript-eslint/eslint-plugin from 5.30.7 to 5.31.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.30.7 to 5.31.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.31.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 14:49:59 +00:00
dependabot[bot]
eff4756762
⬆️ Bump @docusaurus/preset-classic from 2.0.0-rc.1 to 2.0.1
Bumps [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) from 2.0.0-rc.1 to 2.0.1.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v2.0.1/packages/docusaurus-preset-classic)

---
updated-dependencies:
- dependency-name: "@docusaurus/preset-classic"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 14:49:03 +00:00
dependabot[bot]
871fc8c3c9
⬆️ Bump @types/node from 18.6.1 to 18.6.3
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.6.1 to 18.6.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 14:47:04 +00:00
Quinn
f96bc855b6
Merge pull request #924 from quantified-uncertainty/dependabot/npm_and_yarn/hookform/resolvers-2.9.7
⬆️ Bump @hookform/resolvers from 2.9.6 to 2.9.7
2022-08-01 10:42:12 -04:00
Quinn
fcd143e763
Merge pull request #923 from quantified-uncertainty/dependabot/npm_and_yarn/eslint-8.21.0
⬆️ Bump eslint from 8.20.0 to 8.21.0
2022-08-01 10:41:42 -04:00
Quinn
330d35f65a
Merge pull request #922 from quantified-uncertainty/dependabot/npm_and_yarn/tsconfig-paths-webpack-plugin-4.0.0
⬆️ Bump tsconfig-paths-webpack-plugin from 3.5.2 to 4.0.0
2022-08-01 10:41:10 -04:00
Quinn
d5b18d2c07
Merge pull request #921 from quantified-uncertainty/dependabot/npm_and_yarn/tailwindcss-3.1.7
⬆️ Bump tailwindcss from 3.1.6 to 3.1.7
2022-08-01 10:40:31 -04:00
Quinn
3d34888410
Merge pull request #920 from quantified-uncertainty/dependabot/npm_and_yarn/floating-ui/react-dom-1.0.0
⬆️ Bump @floating-ui/react-dom from 0.7.2 to 1.0.0
2022-08-01 10:39:37 -04:00
dependabot[bot]
f638baedd3
⬆️ Bump @hookform/resolvers from 2.9.6 to 2.9.7
Bumps [@hookform/resolvers](https://github.com/react-hook-form/resolvers) from 2.9.6 to 2.9.7.
- [Release notes](https://github.com/react-hook-form/resolvers/releases)
- [Commits](https://github.com/react-hook-form/resolvers/compare/v2.9.6...v2.9.7)

---
updated-dependencies:
- dependency-name: "@hookform/resolvers"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 14:31:49 +00:00
dependabot[bot]
2783da37b7
⬆️ Bump eslint from 8.20.0 to 8.21.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.20.0 to 8.21.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.20.0...v8.21.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 14:31:04 +00:00
dependabot[bot]
1462422e35
⬆️ Bump tsconfig-paths-webpack-plugin from 3.5.2 to 4.0.0
Bumps [tsconfig-paths-webpack-plugin](https://github.com/dividab/tsconfig-paths-webpack-plugin) from 3.5.2 to 4.0.0.
- [Release notes](https://github.com/dividab/tsconfig-paths-webpack-plugin/releases)
- [Changelog](https://github.com/dividab/tsconfig-paths-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dividab/tsconfig-paths-webpack-plugin/compare/v3.5.2...v4.0.0)

---
updated-dependencies:
- dependency-name: tsconfig-paths-webpack-plugin
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 14:30:27 +00:00
dependabot[bot]
636d8c1b53
⬆️ Bump tailwindcss from 3.1.6 to 3.1.7
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss) from 3.1.6 to 3.1.7.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.6...v3.1.7)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 14:29:37 +00:00
dependabot[bot]
c569dee224
⬆️ Bump @floating-ui/react-dom from 0.7.2 to 1.0.0
Bumps [@floating-ui/react-dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/react-dom) from 0.7.2 to 1.0.0.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
- [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/react-dom@1.0.0/packages/react-dom)

---
updated-dependencies:
- dependency-name: "@floating-ui/react-dom"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 14:28:47 +00:00
Vyacheslav Matyukhin
a313dd61eb
vscode ext 0.3.1 2022-07-31 00:53:59 +04:00
Vyacheslav Matyukhin
37aa63438f
Merge pull request #917 from quantified-uncertainty/issue-916
Reducer lambda context, hiddenNameSpace
2022-07-31 00:35:13 +04:00
Ozzie Gooen
b23dbc1c8b
Merge pull request #918 from quantified-uncertainty/squiggle-record-syntax
the last property of a record can have a following comma
2022-07-30 13:26:12 -07:00
Vyacheslav Matyukhin
5d744fe2d0
fix genType 2022-07-31 00:20:51 +04:00
Umur Ozkul
4c21aa902e the last property of a record can have a following comma 2022-07-30 22:14:16 +02:00
Umur Ozkul
17c3fe9dd8 hiddenNameSpace 2022-07-30 16:58:45 +02:00
Ozzie Gooen
d9aef8d9c1
Merge pull request #914 from quantified-uncertainty/vscode-ext-0.3
Vscode ext 0.3
2022-07-29 12:45:21 -07:00
Ozzie Gooen
2988b9bcb6
Merge pull request #915 from quantified-uncertainty/mitigate-void
Void bug fixes
2022-07-29 12:45:07 -07:00
Vyacheslav Matyukhin
52bee6a0e3
fix EvVoid ts conversion 2022-07-29 23:35:11 +04:00
Vyacheslav Matyukhin
482ceb76dc
check expression type in viewer to mitigate the void bug 2022-07-29 23:20:15 +04:00
Vyacheslav Matyukhin
9188dc19f0
update ext icon 2022-07-29 23:12:13 +04:00
Vyacheslav Matyukhin
1642aa5fce
bump vscode ext version 2022-07-29 22:59:49 +04:00
Ozzie Gooen
7f99e9b324
Merge pull request #913 from quantified-uncertainty/develop
Develop -> Master, V0.3.0
2022-07-29 10:45:34 -07:00
Ozzie Gooen
f96f8de92a
Merge pull request #912 from quantified-uncertainty/doc-refactor-july2022-2
Next documentation update, july 2022
2022-07-29 10:38:03 -07:00
Ozzie Gooen
c4bc4a2832 Formatting 2022-07-29 10:26:14 -07:00
Ozzie Gooen
fa1ec55e75 Minor fix 2022-07-29 10:25:38 -07:00
Ozzie Gooen
209ecafb22
Updating to version 0.3.0 2022-07-29 10:25:27 -07:00
Ozzie Gooen
9096ee7051 More small modifications 2022-07-29 08:07:11 -07:00
Umur Ozkul
c6eb69628d merge issue 904 2022-07-29 05:53:47 +02:00
Umur Ozkul
1a5f8dee72 Merge branch 'develop' into reducer-typecheck-example 2022-07-29 05:52:35 +02:00
Ozzie Gooen
e13fe6277d
Merge pull request #881 from quantified-uncertainty/documentation-refactors-jul
New logo, lots of documentation improvements
2022-07-28 18:43:30 -07:00
Ozzie Gooen
a23b2e3709 Minor text fix 2022-07-28 18:12:25 -07:00
Ozzie Gooen
a5adcdbeb6 Changed FunctionChart1Number to use regular count of operations, was slow for many functions 2022-07-28 17:32:25 -07:00
Ozzie Gooen
4e2f0d1413
Merge pull request #905 from quantified-uncertainty/issue-904
fixes #904. E.O.default performance
2022-07-28 17:26:42 -07:00
Umur Ozkul
5576bf2ef3 fixes #904. E.O.default performance 2022-07-29 02:12:07 +02:00
Ozzie Gooen
b37e372815 Formatted 2022-07-28 17:00:06 -07:00
Ozzie Gooen
f7834b0f46 Lots of minor touch-ups 2022-07-28 16:59:52 -07:00
Ozzie Gooen
3613a754c5
Merge pull request #902 from quantified-uncertainty/develop
Develop -> Master July 28 2022
2022-07-28 16:36:24 -07:00
Ozzie Gooen
42528eb07e Merge branch 'develop' into documentation-refactors-jul
* develop:
  delete SquiggleItem
  hotfix: version increment
  copy share link button
  revert last commit
  changed import from local docusaurus component to `@quri/squiggle-components` component
  inherit props to `runPartial`
  absolute path for `bindingsImportsFile`
  `yarn format` compels me
  fix build
  trailing slash?
  @berekuk's CR
  lazy tabs (fixes #506)
  remove SquiggleItem, unused
  fix lint
  checking in editor.jsx file
  removed comment, cleaned up a function
  imported bindings
2022-07-28 16:00:13 -07:00
Umur Ozkul
e1c53c9087 any type
any will be depreciated after the implementation of binding type
variables
2022-07-28 22:25:51 +02:00
Umur Ozkul
6733319403 switch replacement by type checking 2022-07-28 22:20:00 +02:00
Ozzie Gooen
f7e6061f17
Merge pull request #897 from quantified-uncertainty/copy-share-link
"Copy share link" button
2022-07-28 12:18:10 -07:00
Vyacheslav Matyukhin
3d41d8a8d1
delete SquiggleItem 2022-07-28 23:03:13 +04:00
Quinn Dougherty
73d1586858 hotfix: version increment 2022-07-28 12:59:11 -04:00
Quinn
b064e6bd7f
Merge pull request #893 from quantified-uncertainty/fix-chart-size
Fix chart sizes in tabs in docs
2022-07-28 12:56:30 -04:00
Quinn
ffa0f40fb1
Merge pull request #892 from quantified-uncertainty/mdx-cli
imported bindings
2022-07-28 12:55:35 -04:00
Vyacheslav Matyukhin
55ec328745
copy share link button 2022-07-28 20:24:09 +04:00
Quinn Dougherty
3f6e1b2caf revert last commit 2022-07-28 11:26:22 -04:00
Quinn Dougherty
91246ffad3 changed import from local docusaurus component to @quri/squiggle-components component 2022-07-28 11:17:14 -04:00
Quinn Dougherty
779fcf4fc6 inherit props to runPartial 2022-07-28 11:07:32 -04:00
Quinn Dougherty
c77795c832 absolute path for bindingsImportsFile 2022-07-28 10:57:58 -04:00
Quinn Dougherty
33e5ebd6da yarn format compels me 2022-07-28 10:43:59 -04:00
Quinn Dougherty
7fc646f5b5 fix build 2022-07-28 10:43:27 -04:00
Quinn Dougherty
a536f1f4e1 trailing slash? 2022-07-28 10:37:00 -04:00
Quinn Dougherty
ff05685634 @berekuk's CR 2022-07-28 10:33:31 -04:00
Vyacheslav Matyukhin
e1f178d0ae
lazy tabs (fixes #506) 2022-07-28 18:16:31 +04:00
Vyacheslav Matyukhin
5618ef3f34
remove SquiggleItem, unused 2022-07-28 18:14:20 +04:00
Umur Ozkul
fc88b065f5 remove unused test file 2022-07-28 13:42:27 +02:00
Ozzie Gooen
31626b05c4 Added a simple example 2022-07-27 22:09:43 -07:00
Ozzie Gooen
327dc521f1 Modifiying Overview page and Guides 2022-07-27 21:08:10 -07:00
Ozzie Gooen
b1cc459d13 Merge branch 'develop' into documentation-refactors-jul
* develop: (35 commits)
  don't spin pause icon on runs
  delayed overlay and autorun spinner
  playground renders code on second pass
  executionId for code re-runs
  spinner in autorun mode; autorun refactorings
  increase modal width
  remove toggle animation
  hideOnScoll navbar on website
  smooth scrolling when scrolling back to item from modal
  improve tooltip positioning
  fix tooltip padding on website
  close modals on escape key
  change variable border color
  smart modal positioning
  fixes #872
  ⬆️ Bump @typescript-eslint/parser from 5.30.6 to 5.30.7
  ⬆️ Bump @types/node from 18.0.6 to 18.6.1
  ⬆️ Bump mathjs from 10.6.4 to 11.0.1
  ⬆️ Bump webpack from 5.73.0 to 5.74.0
  ⬆️ Bump @testing-library/user-event from 14.2.6 to 14.3.0
  ...
2022-07-27 16:54:50 -07:00
Ozzie Gooen
3f8b99aa3a Improving Overview 2022-07-27 16:54:25 -07:00
Quinn Dougherty
5f3dd12542 fix lint 2022-07-27 17:44:09 -04:00
Quinn Dougherty
2279624750 checking in editor.jsx file 2022-07-27 17:42:46 -04:00
Quinn Dougherty
a46f50dd0f removed comment, cleaned up a function 2022-07-27 17:40:21 -04:00
Quinn Dougherty
405c1bf8f3 imported bindings 2022-07-27 17:31:40 -04:00
Ozzie Gooen
dcd25c2254
Merge pull request #889 from quantified-uncertainty/autorun-improvements
Autorun improvements
2022-07-27 12:36:34 -07:00
Vyacheslav Matyukhin
ec4777bd61
don't spin pause icon on runs 2022-07-27 23:01:15 +04:00
Vyacheslav Matyukhin
b1e7164c7e
delayed overlay and autorun spinner 2022-07-27 22:37:46 +04:00
Vyacheslav Matyukhin
329bb9432e
playground renders code on second pass 2022-07-27 21:28:21 +04:00
Vyacheslav Matyukhin
9ec84d2c96
Merge branch 'develop' into autorun-improvements 2022-07-27 13:06:05 +04:00
Vyacheslav Matyukhin
eacc1adf1d
executionId for code re-runs 2022-07-27 13:03:23 +04:00
Vyacheslav Matyukhin
724fb4956d
Merge branch 'collapsible' into autorun-improvements 2022-07-27 13:02:38 +04:00
Vyacheslav Matyukhin
3bdc5c67a2
spinner in autorun mode; autorun refactorings 2022-07-27 12:12:03 +04:00
Ozzie Gooen
563f82f48c
Merge pull request #796 from quantified-uncertainty/collapsible
Collapsible records in playground output
2022-07-26 17:26:21 -07:00
Ozzie Gooen
b7d6256032
Merge pull request #875 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/parser-5.30.7
⬆️ Bump @typescript-eslint/parser from 5.30.6 to 5.30.7
2022-07-26 16:17:43 -07:00
Vyacheslav Matyukhin
a599768638
increase modal width 2022-07-27 01:26:54 +04:00
Vyacheslav Matyukhin
d6cc3a419b
remove toggle animation 2022-07-26 23:00:20 +04:00
Vyacheslav Matyukhin
8fbf5decf8
hideOnScoll navbar on website 2022-07-26 21:58:03 +04:00
Vyacheslav Matyukhin
e3e9c76af2
smooth scrolling when scrolling back to item from modal 2022-07-26 21:56:12 +04:00
Vyacheslav Matyukhin
8be3f91d8e
improve tooltip positioning 2022-07-26 21:55:38 +04:00
Vyacheslav Matyukhin
2abb3968dd
fix tooltip padding on website 2022-07-26 20:47:42 +04:00
Vyacheslav Matyukhin
e76a4beb4d
close modals on escape key 2022-07-26 20:27:10 +04:00
Vyacheslav Matyukhin
fd36e9ef9e
change variable border color 2022-07-26 20:19:31 +04:00
Vyacheslav Matyukhin
b76e1df819
smart modal positioning 2022-07-26 20:17:36 +04:00
Ozzie Gooen
fb0aa72aac
Merge pull request #882 from quantified-uncertainty/issue-872
fixes #872
2022-07-25 12:10:36 -07:00
Umur Ozkul
66e48dd834 fixes #872 2022-07-25 19:56:18 +02:00
dependabot[bot]
79c86146ca
⬆️ Bump @typescript-eslint/parser from 5.30.6 to 5.30.7
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.30.6 to 5.30.7.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.7/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 16:13:13 +00:00
Ozzie Gooen
4c756a1448
Merge pull request #879 from quantified-uncertainty/dependabot/npm_and_yarn/mathjs-11.0.1
⬆️ Bump mathjs from 10.6.4 to 11.0.1
2022-07-25 09:08:00 -07:00
Ozzie Gooen
03fba76ae9
Merge pull request #876 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-5.30.7
⬆️ Bump @typescript-eslint/eslint-plugin from 5.30.6 to 5.30.7
2022-07-25 09:06:51 -07:00
Ozzie Gooen
556480e8fc
Merge pull request #880 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.6.1
⬆️ Bump @types/node from 18.0.6 to 18.6.1
2022-07-25 09:06:29 -07:00
dependabot[bot]
12cdc53f47
⬆️ Bump @types/node from 18.0.6 to 18.6.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.0.6 to 18.6.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 15:50:26 +00:00
dependabot[bot]
6f1f23108b
⬆️ Bump mathjs from 10.6.4 to 11.0.1
Bumps [mathjs](https://github.com/josdejong/mathjs) from 10.6.4 to 11.0.1.
- [Release notes](https://github.com/josdejong/mathjs/releases)
- [Changelog](https://github.com/josdejong/mathjs/blob/develop/HISTORY.md)
- [Commits](https://github.com/josdejong/mathjs/compare/v10.6.4...v11.0.1)

---
updated-dependencies:
- dependency-name: mathjs
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 15:46:51 +00:00
Quinn
69f0f5af87
Merge pull request #877 from quantified-uncertainty/dependabot/npm_and_yarn/testing-library/user-event-14.3.0
⬆️ Bump @testing-library/user-event from 14.2.6 to 14.3.0
2022-07-25 11:44:39 -04:00
Quinn
fbb6b03e5b
Merge pull request #878 from quantified-uncertainty/dependabot/npm_and_yarn/webpack-5.74.0
⬆️ Bump webpack from 5.73.0 to 5.74.0
2022-07-25 11:44:06 -04:00
Quinn
4265fa651b
Merge pull request #874 from quantified-uncertainty/dependabot/npm_and_yarn/fast-check-3.1.0
⬆️ Bump fast-check from 3.0.1 to 3.1.0
2022-07-25 11:43:36 -04:00
dependabot[bot]
26a6f06c1a
⬆️ Bump webpack from 5.73.0 to 5.74.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.73.0 to 5.74.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.73.0...v5.74.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 14:25:33 +00:00
dependabot[bot]
c91defc307
⬆️ Bump @testing-library/user-event from 14.2.6 to 14.3.0
Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 14.2.6 to 14.3.0.
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/user-event/compare/v14.2.6...v14.3)

---
updated-dependencies:
- dependency-name: "@testing-library/user-event"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 14:24:31 +00:00
dependabot[bot]
3d2b2f4c62
⬆️ Bump @typescript-eslint/eslint-plugin from 5.30.6 to 5.30.7
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.30.6 to 5.30.7.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.7/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 14:23:47 +00:00
dependabot[bot]
712f393df6
⬆️ Bump fast-check from 3.0.1 to 3.1.0
Bumps [fast-check](https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check) from 3.0.1 to 3.1.0.
- [Release notes](https://github.com/dubzzz/fast-check/releases)
- [Changelog](https://github.com/dubzzz/fast-check/blob/main/packages/fast-check/CHANGELOG.md)
- [Commits](https://github.com/dubzzz/fast-check/commits/v3.1.0/packages/fast-check)

---
updated-dependencies:
- dependency-name: fast-check
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-25 14:22:11 +00:00
Ozzie Gooen
68238ba914 Added new logo 2022-07-24 16:37:24 -07:00
Vyacheslav Matyukhin
a11030814c
Merge branch 'develop' into collapsible 2022-07-24 02:26:46 +04:00
Ozzie Gooen
25c95170e6
Merge pull request #873 from quantified-uncertainty/homepage-changes
Docs improvements - July 23
2022-07-23 11:54:16 -07:00
Ozzie Gooen
8414cde819 Ran formatting 2022-07-23 11:41:12 -07:00
Ozzie Gooen
6341dedaf2
Merge pull request #871 from quantified-uncertainty/playground-padding
Padding and loading spinner improvements for the website
2022-07-23 11:37:41 -07:00
Vyacheslav Matyukhin
dd778dab76
show spinner immediately 2022-07-23 22:17:04 +04:00
Ozzie Gooen
ff1f8e8e84 Several small documentation improvements 2022-07-23 11:06:15 -07:00
Vyacheslav Matyukhin
111b4975ee
prettify 2022-07-23 22:03:50 +04:00
Vyacheslav Matyukhin
ce31dc62c2
more precise FallbackSpinner height for SquiggleEditor 2022-07-23 21:56:28 +04:00
Vyacheslav Matyukhin
0ad09c96aa
fallback spinner for the website 2022-07-23 21:44:08 +04:00
Vyacheslav Matyukhin
b9dc7c7033
improve playground padding on the website 2022-07-23 21:14:12 +04:00
Ozzie Gooen
349b99b3ef Minor docs cleanup 2022-07-22 15:31:05 -07:00
Vyacheslav Matyukhin
3eccd9afd1
filter out Math.* and System.* in viewer 2022-07-23 00:18:38 +04:00
Vyacheslav Matyukhin
c7bf40e3e8
remove showControls from website code and vscode ext 2022-07-23 00:03:55 +04:00
Vyacheslav Matyukhin
43fed64f82
Merge branch 'develop' into collapsible 2022-07-22 23:59:50 +04:00
Vyacheslav Matyukhin
daf11ea121
remove DropdownMenu, it's not needed 2022-07-22 23:54:06 +04:00
Vyacheslav Matyukhin
9385146d56
some comments 2022-07-22 23:51:54 +04:00
Vyacheslav Matyukhin
d2fb973e1d
disableLogX flag in local settings 2022-07-22 23:32:39 +04:00
Vyacheslav Matyukhin
eefdfbb2fe
modal window for local settings 2022-07-22 23:24:49 +04:00
Ozzie Gooen
3250d6009a Updated colors and light styles of homepage 2022-07-22 11:50:56 -07:00
Ozzie Gooen
85a1223f63
Merge pull request #870 from quantified-uncertainty/reducer-fix-warnings
fix compiler warnings
2022-07-22 10:47:52 -07:00
Umur Ozkul
4a98cc210a fix compiler warnings 2022-07-22 17:49:53 +02:00
Ozzie Gooen
0ef01da963
Update DistGeneric.mdx 2022-07-21 15:44:46 -07:00
Ozzie Gooen
5c78ad1fc4
Update DistSampleSet.md 2022-07-21 15:36:56 -07:00
Ozzie Gooen
7f87398c1f
Merge pull request #864 from quantified-uncertainty/add-reducer-to-function-registry
Add reducer to function registry
2022-07-21 14:59:57 -07:00
Ozzie Gooen
57782aa2a6
Update DistSampleSet.md 2022-07-21 14:59:36 -07:00
Ozzie Gooen
3165e1e499 Updated version 2022-07-21 13:57:11 -07:00
Ozzie Gooen
38ef109291 Merge branch 'develop' into add-reducer-to-function-registry
* develop:
  Simple refactors to versioning
2022-07-21 13:56:48 -07:00
Ozzie Gooen
3af6ac9c20
Merge pull request #867 from quantified-uncertainty/Add-versions-simple
Simple refactors to add versioning
2022-07-21 13:56:19 -07:00
Ozzie Gooen
e7d63a463c Merge branch 'develop' into add-reducer-to-function-registry
* develop:
  Simple version number
  ⬆️ Bump terser from 4.8.0 to 4.8.1
2022-07-21 13:55:04 -07:00
Ozzie Gooen
0d4141a899 Simple refactors to versioning 2022-07-21 13:51:14 -07:00
Ozzie Gooen
8dd7aff77f Simple version number 2022-07-21 13:48:51 -07:00
Ozzie Gooen
0a806b4fe2 Website lint 2022-07-21 11:41:32 -07:00
Ozzie Gooen
47f1be0702 Story cleanup 2022-07-21 11:29:59 -07:00
Ozzie Gooen
acebaa517b Simple SampleSet.fromDist function 2022-07-21 10:31:53 -07:00
Ozzie Gooen
223ddf6a3e Fixed bug with namespaces 2022-07-21 08:54:41 -07:00
Ozzie Gooen
d3a12eb4e9 Fixed bug with namespaces 2022-07-21 08:31:46 -07:00
Ozzie Gooen
666a6311ae
Merge pull request #866 from quantified-uncertainty/dependabot/npm_and_yarn/terser-4.8.1
⬆️ Bump terser from 4.8.0 to 4.8.1
2022-07-21 07:33:13 -07:00
Ozzie Gooen
aa3d91d78f Merge branch 'develop' into add-reducer-to-function-registry
* develop:
  Minor component fix to show Void statements
  Fixed typescript build
  Introduce void type
2022-07-20 16:50:49 -07:00
dependabot[bot]
fe552eb6ef
⬆️ Bump terser from 4.8.0 to 4.8.1
Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-20 23:47:59 +00:00
Ozzie Gooen
4055d1e93c
Merge pull request #865 from quantified-uncertainty/reducer-void
Reducer: void type
2022-07-20 16:46:48 -07:00
Vyacheslav Matyukhin
8f4259cef3
Merge branch 'develop' into collapsible 2022-07-20 23:22:16 +04:00
Vyacheslav Matyukhin
8d390c4433
local chart settings via dropdown menu 2022-07-20 23:16:34 +04:00
Ozzie Gooen
590ffac552 Minor component fix to show Void statements 2022-07-20 09:28:32 -07:00
Ozzie Gooen
078534f7c8 Fixed typescript build 2022-07-20 08:27:57 -07:00
Umur Ozkul
1c4557b638 Introduce void type
yarn all:rescript

EvVoid

parsing void

void
2022-07-20 17:01:42 +02:00
Ozzie Gooen
9173b103f5 Fixed major bug for module functions 2022-07-19 23:06:10 -07:00
Ozzie Gooen
90d3f89c0a Trying to fix things, but breaking a lot of tests. 2022-07-19 21:32:11 -07:00
Ozzie Gooen
35cd9f37d1 Basic changes to API 2022-07-19 20:52:08 -07:00
Ozzie Gooen
100ec2c1a8 Adjusting documentation to reflect new functions 2022-07-19 16:18:28 -07:00
Ozzie Gooen
7316d27b54 Added SampleSet fns to FunctionRegistry 2022-07-19 15:52:28 -07:00
Ozzie Gooen
f8d6db61c5 Moved list functions into FunctionRegistry 2022-07-19 10:35:31 -07:00
Ozzie Gooen
835ce6b81f Added reducer to Function Registry 2022-07-19 08:42:08 -07:00
Ozzie Gooen
12ac2f551b
Merge pull request #821 from quantified-uncertainty/namespace-integration
Adds module namespace support to Function Registry
2022-07-19 08:20:28 -07:00
Ozzie Gooen
28036bfb36 Minor cleanup 2022-07-19 08:12:04 -07:00
Ozzie Gooen
ee244463fa Merged with develop 2022-07-18 22:27:59 -07:00
Ozzie Gooen
5891d23462
Merge pull request #845 from quantified-uncertainty/reducer-typecheck
Reducer typecheck
2022-07-18 22:25:40 -07:00
Ozzie Gooen
6f25fca814 Minor cleanup 2022-07-18 22:21:57 -07:00
Ozzie Gooen
173c17e13d Simple cleanup 2022-07-18 22:17:38 -07:00
Ozzie Gooen
dbfee988d2 Pulled out cache in Registry, to make more sense 2022-07-18 22:14:46 -07:00
Ozzie Gooen
905d2fbb23 Removed now-uneeded Function Registry test file 2022-07-18 21:29:46 -07:00
Ozzie Gooen
e6b402c7d8
Merge pull request #860 from quantified-uncertainty/sampleN
`mapSamplesN`
2022-07-18 21:17:38 -07:00
Ozzie Gooen
5aa2689832
Merge pull request #861 from quantified-uncertainty/error-message-function-fail
Print error messages when functions fail
2022-07-18 21:13:24 -07:00
Ozzie Gooen
ff2eb42847
Merge pull request #862 from quantified-uncertainty/show-x-coordinate-discrete
Show x coordinate when drawing discrete distributions
2022-07-18 21:13:06 -07:00
Sam Nolan
03edf60663 Show x coordinate when drawing discrete distributions 2022-07-19 13:08:45 +10:00
Sam Nolan
938b20b4cd Print error messages when functions fail 2022-07-19 12:38:05 +10:00
Sam Nolan
7887256ca1 Reorder function declarations to compile 2022-07-19 11:45:07 +10:00
Sam Nolan
b71823b4c5 Merge branch 'develop' into multiple-charts 2022-07-19 11:42:44 +10:00
Sam Nolan
7e33ea1fe7 Merge branch 'develop' into multiple-charts 2022-07-19 11:40:59 +10:00
Sam Nolan
5bdc19f35f Refactor sampleN code and remove log 2022-07-19 11:38:43 +10:00
Sam Nolan
ffaf349e0a Basic mapSampleN support 2022-07-19 11:33:11 +10:00
Ozzie Gooen
30f721eeb6 Simple conversion away from using modules 2022-07-18 16:10:19 -07:00
Ozzie Gooen
2c903a335e
Merge pull request #851 from quantified-uncertainty/dependabot/npm_and_yarn/vscode-languageclient-8.0.2
⬆️ Bump vscode-languageclient from 8.0.1 to 8.0.2
2022-07-18 16:04:03 -07:00
Ozzie Gooen
5db6ed257e
Merge pull request #858 from quantified-uncertainty/dependabot/npm_and_yarn/framer-motion-6.5.1
⬆️ Bump framer-motion from 6.4.3 to 6.5.1
2022-07-18 16:03:56 -07:00
Ozzie Gooen
c6ae5107c6
Merge pull request #856 from quantified-uncertainty/dependabot/npm_and_yarn/commander-9.4.0
⬆️ Bump commander from 9.3.0 to 9.4.0
2022-07-18 16:03:49 -07:00
Umur Ozkul
4535041876 less test clutter 2022-07-18 22:52:19 +02:00
Umur Ozkul
fa2561306d Merge branch 'reducer-typecheck2' into reducer-typecheck 2022-07-18 18:52:49 +02:00
Umur Ozkul
6e1be862d2 reducer passed to external library 2022-07-18 18:51:05 +02:00
dependabot[bot]
074a084853
Merge pull request #859 from quantified-uncertainty/dependabot/npm_and_yarn/gentype-4.5.0 2022-07-18 16:39:43 +00:00
Ozzie Gooen
cb17f2a25f
Merge pull request #857 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.0.6
⬆️ Bump @types/node from 18.0.3 to 18.0.6
2022-07-18 09:37:00 -07:00
Ozzie Gooen
e0f97d8af0 Merge branch 'reducer-typecheck' of github.com:quantified-uncertainty/squiggle into reducer-typecheck
* 'reducer-typecheck' of github.com:quantified-uncertainty/squiggle:
  type modifiers -> type contracts
  simplified modules
  before math library
2022-07-18 09:34:52 -07:00
Ozzie Gooen
beb22274d6 Immediate fix for merge conflict 2022-07-18 09:32:23 -07:00
Umur Ozkul
15d63a6a96 type modifiers -> type contracts 2022-07-18 18:31:09 +02:00
dependabot[bot]
925d2e65bb
⬆️ Bump gentype from 4.4.0 to 4.5.0
Bumps [gentype](https://github.com/cristianoc/gentype) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/cristianoc/gentype/releases)
- [Changelog](https://github.com/rescript-association/genType/blob/master/Changes.md)
- [Commits](https://github.com/cristianoc/gentype/compare/v4.4.0...v4.5.0)

---
updated-dependencies:
- dependency-name: gentype
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 16:28:39 +00:00
dependabot[bot]
03486a0453
⬆️ Bump framer-motion from 6.4.3 to 6.5.1
Bumps [framer-motion](https://github.com/framer/motion) from 6.4.3 to 6.5.1.
- [Release notes](https://github.com/framer/motion/releases)
- [Changelog](https://github.com/framer/motion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/framer/motion/compare/v6.4.3...v6.5.1)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 16:27:45 +00:00
dependabot[bot]
813c97db18
⬆️ Bump vscode-languageclient from 8.0.1 to 8.0.2
Bumps [vscode-languageclient](https://github.com/Microsoft/vscode-languageserver-node/tree/HEAD/client) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/Microsoft/vscode-languageserver-node/releases)
- [Commits](https://github.com/Microsoft/vscode-languageserver-node/commits/release/client/8.0.2/client)

---
updated-dependencies:
- dependency-name: vscode-languageclient
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 16:25:40 +00:00
dependabot[bot]
fe4e475ff4
⬆️ Bump @types/node from 18.0.3 to 18.0.6
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.0.3 to 18.0.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 16:24:23 +00:00
dependabot[bot]
bcd74eefda
⬆️ Bump commander from 9.3.0 to 9.4.0
Bumps [commander](https://github.com/tj/commander.js) from 9.3.0 to 9.4.0.
- [Release notes](https://github.com/tj/commander.js/releases)
- [Changelog](https://github.com/tj/commander.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tj/commander.js/compare/v9.3.0...v9.4.0)

---
updated-dependencies:
- dependency-name: commander
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 16:19:30 +00:00
Ozzie Gooen
2b220b59e6
Merge pull request #849 from quantified-uncertainty/dependabot/npm_and_yarn/docusaurus/preset-classic-2.0.0-rc.1
⬆️ Bump @docusaurus/preset-classic from 2.0.0-beta.22 to 2.0.0-rc.1
2022-07-18 09:18:05 -07:00
Ozzie Gooen
72659050c3
Merge pull request #852 from quantified-uncertainty/dependabot/npm_and_yarn/ts-node-10.9.1
⬆️ Bump ts-node from 10.8.2 to 10.9.1
2022-07-18 09:17:53 -07:00
Ozzie Gooen
ed83af7568
Merge pull request #854 from quantified-uncertainty/dependabot/npm_and_yarn/testing-library/user-event-14.2.6
⬆️ Bump @testing-library/user-event from 14.2.1 to 14.2.6
2022-07-18 09:17:27 -07:00
Ozzie Gooen
70994b7244
Merge pull request #853 from quantified-uncertainty/dependabot/npm_and_yarn/hookform/resolvers-2.9.6
⬆️ Bump @hookform/resolvers from 2.9.5 to 2.9.6
2022-07-18 09:17:23 -07:00
Umur Ozkul
c1429e0907 simplified modules 2022-07-18 18:16:49 +02:00
Ozzie Gooen
9fb33776c5
Merge pull request #855 from quantified-uncertainty/reducer-parsermodules
Reducer: Simplified modules
2022-07-18 09:13:57 -07:00
Umur Ozkul
06134a6524 Merge branch 'reducer-parsermodules' into reducer-typecheck 2022-07-18 18:08:44 +02:00
Umur Ozkul
479f60df01 before math library
no module (tested)

fix parser and Math library
2022-07-18 18:04:47 +02:00
dependabot[bot]
ac4ea69fa0
⬆️ Bump @testing-library/user-event from 14.2.1 to 14.2.6
Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 14.2.1 to 14.2.6.
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/user-event/compare/v14.2.1...v14.2.6)

---
updated-dependencies:
- dependency-name: "@testing-library/user-event"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 15:56:48 +00:00
dependabot[bot]
f265bf3e7f
⬆️ Bump @hookform/resolvers from 2.9.5 to 2.9.6
Bumps [@hookform/resolvers](https://github.com/react-hook-form/resolvers) from 2.9.5 to 2.9.6.
- [Release notes](https://github.com/react-hook-form/resolvers/releases)
- [Commits](https://github.com/react-hook-form/resolvers/compare/v2.9.5...v2.9.6)

---
updated-dependencies:
- dependency-name: "@hookform/resolvers"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 15:55:28 +00:00
dependabot[bot]
dda6d652a6
⬆️ Bump ts-node from 10.8.2 to 10.9.1
Bumps [ts-node](https://github.com/TypeStrong/ts-node) from 10.8.2 to 10.9.1.
- [Release notes](https://github.com/TypeStrong/ts-node/releases)
- [Commits](https://github.com/TypeStrong/ts-node/compare/v10.8.2...v10.9.1)

---
updated-dependencies:
- dependency-name: ts-node
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 15:51:07 +00:00
Ozzie Gooen
5ee75d343e
Merge pull request #850 from quantified-uncertainty/dependabot/npm_and_yarn/eslint-8.20.0
⬆️ Bump eslint from 8.19.0 to 8.20.0
2022-07-18 08:50:17 -07:00
dependabot[bot]
9a3c569290
⬆️ Bump @docusaurus/preset-classic
Bumps [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) from 2.0.0-beta.22 to 2.0.0-rc.1.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v2.0.0-rc.1/packages/docusaurus-preset-classic)

---
updated-dependencies:
- dependency-name: "@docusaurus/preset-classic"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 15:48:58 +00:00
Ozzie Gooen
8aa6997699
Merge pull request #848 from quantified-uncertainty/dependabot/npm_and_yarn/tailwindcss-3.1.6
⬆️ Bump tailwindcss from 3.1.5 to 3.1.6
2022-07-18 08:48:10 -07:00
Ozzie Gooen
5d50f22010
Merge pull request #847 from quantified-uncertainty/dependabot/npm_and_yarn/docusaurus/core-2.0.0-rc.1
⬆️ Bump @docusaurus/core from 2.0.0-beta.22 to 2.0.0-rc.1
2022-07-18 08:48:02 -07:00
Ozzie Gooen
81782fb402
Merge pull request #846 from quantified-uncertainty/dependabot/npm_and_yarn/vscode-languageserver-8.0.2
⬆️ Bump vscode-languageserver from 8.0.1 to 8.0.2
2022-07-18 08:47:52 -07:00
Ozzie Gooen
8f742bf99f Quick fix for component 2022-07-18 08:47:02 -07:00
Ozzie Gooen
628b105535 PointSet -> Pointset 2022-07-18 08:24:11 -07:00
dependabot[bot]
93d1b486f8
⬆️ Bump eslint from 8.19.0 to 8.20.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.19.0 to 8.20.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.19.0...v8.20.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 14:37:20 +00:00
dependabot[bot]
d41ad3bc56
⬆️ Bump tailwindcss from 3.1.5 to 3.1.6
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss) from 3.1.5 to 3.1.6.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.5...v3.1.6)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 14:36:09 +00:00
dependabot[bot]
715000daf1
⬆️ Bump @docusaurus/core from 2.0.0-beta.22 to 2.0.0-rc.1
Bumps [@docusaurus/core](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus) from 2.0.0-beta.22 to 2.0.0-rc.1.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v2.0.0-rc.1/packages/docusaurus)

---
updated-dependencies:
- dependency-name: "@docusaurus/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 14:35:08 +00:00
dependabot[bot]
5d02c82915
⬆️ Bump vscode-languageserver from 8.0.1 to 8.0.2
Bumps [vscode-languageserver](https://github.com/Microsoft/vscode-languageserver-node/tree/HEAD/server) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/Microsoft/vscode-languageserver-node/releases)
- [Commits](https://github.com/Microsoft/vscode-languageserver-node/commits/release/client/8.0.2/server)

---
updated-dependencies:
- dependency-name: vscode-languageserver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-18 14:32:03 +00:00
Umur Ozkul
abee4db340 Merge branch 'develop' into reducer-typecheck 2022-07-18 15:18:10 +02:00
Umur Ozkul
6966c8d3e5 ternary validation 2022-07-18 15:17:41 +02:00
Umur Ozkul
8fb75d57fc type check 2022-07-18 15:15:36 +02:00
Ozzie Gooen
08a7b8586b Simple tests for function library 2022-07-16 22:01:26 -07:00
Ozzie Gooen
b502e21a0f Format 2022-07-16 20:33:15 -07:00
Ozzie Gooen
c5447b8d7a All autogenerated FunctionLibrary tests pass 2022-07-16 20:32:37 -07:00
Ozzie Gooen
395477ed12 Initial testing of FunctionRegistry Library 2022-07-16 19:50:18 -07:00
Ozzie Gooen
5e8b46b7df Cleaning up Function Registry to Reducer interface 2022-07-16 19:06:48 -07:00
Ozzie Gooen
d88fb95767 Simple reformatting, got RequiresNamespace to work 2022-07-16 18:11:38 -07:00
Ozzie Gooen
0c032e710c Moved function library modules to separate files 2022-07-16 14:01:00 -07:00
Ozzie Gooen
9e1a7e700d
Merge pull request #840 from quantified-uncertainty/fix-837
Fix #837
2022-07-16 13:16:50 -07:00
Umur Ozkul
b65aeaf0d2 spell check 2022-07-16 17:09:39 +02:00
Umur Ozkul
4522b46900 basic type compiler 2022-07-16 16:13:39 +02:00
Sam Nolan
2f789e983a Fix #837 2022-07-16 13:29:18 +10:00
Ozzie Gooen
e3ef7a3048 Added examples to most items in function registry library 2022-07-15 19:47:57 -07:00
Ozzie Gooen
9d5aaf43a8 Simple tests for fake FunctionRegistry output types 2022-07-15 19:18:36 -07:00
Ozzie Gooen
8839f1d9c7 Added FunctionRegistry test and got simple polymorphism working 2022-07-14 22:14:23 -07:00
Ozzie Gooen
3f09f5f307 Move namespace from fnDefinition to fn 2022-07-14 17:21:07 -07:00
Ozzie Gooen
3c396e0ccc FunctionRegistry examples should be an array 2022-07-14 16:43:38 -07:00
Ozzie Gooen
c3b0009fb8 Minor cleanup 2022-07-14 16:13:22 -07:00
Ozzie Gooen
fc95253dd5 Cleanup of Dict Fromlist in Function Registry Library 2022-07-14 15:15:03 -07:00
Ozzie Gooen
feb198d205 Add and use extra pathway for FunctionRegistry to use internalValues directly 2022-07-14 14:53:53 -07:00
Ozzie Gooen
cae59cb84b Split up function definitions 2022-07-14 13:31:48 -07:00
Sam Nolan
ad1d391f49 Rename plotting to plotParser 2022-07-14 16:36:12 +10:00
Ozzie Gooen
04accf0075 Merge branch 'develop' into namespace-integration
* develop: (61 commits)
  Minor UI refactors
  tweak: Indicate that the configuration step is optional
  tweak: Show what to click in the extension
  tweak: Better documentation
  Formatted code
  Moved env to GenericDist, and used it
  Replaced some scoring functions with functionRegistry functions
  Prior can't be a point
  v0.2.23
  Made new test call polymorphic constructor #ToFloat
  ⬆️ Bump @typescript-eslint/parser from 5.30.5 to 5.30.6
  ⬆️ Bump postcss-cli from 9.1.0 to 10.0.0
  ⬆️ Bump @typescript-eslint/eslint-plugin from 5.30.5 to 5.30.6
  ⬆️ Bump @docusaurus/preset-classic
  ⬆️ Bump clsx from 1.2.0 to 1.2.1
  ⬆️ Bump postcss-loader from 7.0.0 to 7.0.1
  ⬆️ Bump @hookform/resolvers from 2.9.3 to 2.9.5
  ⬆️ Bump @types/node from 18.0.0 to 18.0.3
  ⬆️ Bump @docusaurus/core from 2.0.0-beta.21 to 2.0.0-beta.22
  ⬆️ Bump @typescript-eslint/parser from 5.30.4 to 5.30.5
  ...
2022-07-13 15:19:26 -07:00
Ozzie Gooen
fdf1da7886
Merge pull request #831 from quantified-uncertainty/design-refactors-2020-July
Minor UI refactors
2022-07-13 14:57:13 -07:00
Ozzie Gooen
c1a351a704 Minor UI refactors 2022-07-13 13:55:35 -07:00
Ozzie Gooen
742b67d5bd
Merge pull request #830 from quantified-uncertainty/vscode-extension-documentation
tweak: Better documentation
2022-07-13 13:29:48 -07:00
42730e980f tweak: Indicate that the configuration step is optional 2022-07-13 13:39:07 -04:00
abedb59a17 tweak: Show what to click in the extension 2022-07-13 13:37:17 -04:00
a9d9ed9ae6 tweak: Better documentation
So that even newbies can understand.
2022-07-13 13:29:32 -04:00
Ozzie Gooen
606cbd8859
Merge pull request #589 from quantified-uncertainty/scoring-cleanup-three
Scoring cleanup
2022-07-13 10:21:40 -07:00
Ozzie Gooen
d8b1e0d5ff Formatted code 2022-07-13 10:11:59 -07:00
Ozzie Gooen
4853df39bb
Merge pull request #829 from quantified-uncertainty/scoring-cleanup-three-fixes
Scoring cleanup three fixes
2022-07-13 10:00:06 -07:00
Ozzie Gooen
78e9e48626 Moved env to GenericDist, and used it 2022-07-13 09:37:39 -07:00
Ozzie Gooen
3d71d7bf4e Replaced some scoring functions with functionRegistry functions 2022-07-13 08:56:22 -07:00
Sam Nolan
9cc000070b Refactor parsing to lib files 2022-07-13 15:54:45 +10:00
Sam Nolan
a5a131daf1 Remove console.log 2022-07-13 15:33:38 +10:00
Sam Nolan
0c7ac98aaf Color discrete components of distributions 2022-07-13 15:32:28 +10:00
Sam Nolan
b536637c98 Make parser of distributions stricter 2022-07-13 15:29:39 +10:00
Sam Nolan
98ae0459c9 Refactor specification to include discrete 2022-07-13 14:15:07 +10:00
Ozzie Gooen
652394f535 Prior can't be a point 2022-07-12 09:45:41 -07:00
Sam Nolan
9cbeee0451 Add multiple plotting 2022-07-12 17:09:24 +10:00
Sam Nolan
af4423cc2e v0.2.23 2022-07-12 12:50:20 +10:00
Quinn Dougherty
e9968288fd Merge remote-tracking branch 'origin/develop' into scoring-cleanup-three 2022-07-11 15:34:50 -04:00
Ozzie Gooen
cca6ab1df0
Merge pull request #760 from quantified-uncertainty/more-graph-settings
Add more options for distribution charts
2022-07-11 12:34:04 -07:00
Ozzie Gooen
50049177e4
Merge pull request #803 from quantified-uncertainty/reducer-modules
Reducer modules - define function returning result
2022-07-11 12:28:26 -07:00
Quinn Dougherty
20114d9a84 Made new test call polymorphic constructor #ToFloat 2022-07-11 14:23:58 -04:00
Quinn Dougherty
d682f28faf Merge remote-tracking branch 'origin/develop' into scoring-cleanup-three 2022-07-11 14:20:00 -04:00
dependabot[bot]
c6b3e05365
Merge pull request #820 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/parser-5.30.6 2022-07-11 18:19:12 +00:00
dependabot[bot]
4fb6a58689
Merge pull request #818 from quantified-uncertainty/dependabot/npm_and_yarn/postcss-cli-10.0.0 2022-07-11 18:15:07 +00:00
dependabot[bot]
9a5c101d9d
⬆️ Bump @typescript-eslint/parser from 5.30.5 to 5.30.6
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.30.5 to 5.30.6.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.6/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 18:07:30 +00:00
dependabot[bot]
82a64165ea
Merge pull request #819 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-5.30.6 2022-07-11 18:02:12 +00:00
dependabot[bot]
a9177e585c
⬆️ Bump postcss-cli from 9.1.0 to 10.0.0
Bumps [postcss-cli](https://github.com/postcss/postcss-cli) from 9.1.0 to 10.0.0.
- [Release notes](https://github.com/postcss/postcss-cli/releases)
- [Changelog](https://github.com/postcss/postcss-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss-cli/compare/9.1.0...10.0.0)

---
updated-dependencies:
- dependency-name: postcss-cli
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 17:59:23 +00:00
dependabot[bot]
7fd4012454
⬆️ Bump @typescript-eslint/eslint-plugin from 5.30.5 to 5.30.6
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.30.5 to 5.30.6.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.6/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 17:51:55 +00:00
dependabot[bot]
f4188ef5c9
Merge pull request #812 from quantified-uncertainty/dependabot/npm_and_yarn/docusaurus/preset-classic-2.0.0-beta.22 2022-07-11 17:50:28 +00:00
dependabot[bot]
7fcc3e5137
Merge pull request #817 from quantified-uncertainty/dependabot/npm_and_yarn/postcss-loader-7.0.1 2022-07-11 17:42:22 +00:00
Quinn
19d9ab7019
Merge pull request #816 from quantified-uncertainty/dependabot/npm_and_yarn/hookform/resolvers-2.9.5
⬆️ Bump @hookform/resolvers from 2.9.3 to 2.9.5
2022-07-11 13:40:48 -04:00
dependabot[bot]
2e5ec355d6
⬆️ Bump @docusaurus/preset-classic
Bumps [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) from 2.0.0-beta.21 to 2.0.0-beta.22.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v2.0.0-beta.22/packages/docusaurus-preset-classic)

---
updated-dependencies:
- dependency-name: "@docusaurus/preset-classic"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 17:35:37 +00:00
dependabot[bot]
604953a346
Merge pull request #815 from quantified-uncertainty/dependabot/npm_and_yarn/clsx-1.2.1 2022-07-11 17:33:42 +00:00
dependabot[bot]
d87e5062c2
⬆️ Bump clsx from 1.2.0 to 1.2.1
Bumps [clsx](https://github.com/lukeed/clsx) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/lukeed/clsx/releases)
- [Commits](https://github.com/lukeed/clsx/compare/v1.2.0...v1.2.1)

---
updated-dependencies:
- dependency-name: clsx
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 17:26:24 +00:00
dependabot[bot]
4516b886df
Merge pull request #813 from quantified-uncertainty/dependabot/npm_and_yarn/docusaurus/core-2.0.0-beta.22 2022-07-11 17:25:58 +00:00
dependabot[bot]
65e78556c2
⬆️ Bump postcss-loader from 7.0.0 to 7.0.1
Bumps [postcss-loader](https://github.com/webpack-contrib/postcss-loader) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/webpack-contrib/postcss-loader/releases)
- [Changelog](https://github.com/webpack-contrib/postcss-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/postcss-loader/compare/v7.0.0...v7.0.1)

---
updated-dependencies:
- dependency-name: postcss-loader
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 17:14:14 +00:00
dependabot[bot]
ba5b83eb02
Merge pull request #811 from quantified-uncertainty/dependabot/npm_and_yarn/framer-motion-6.4.3 2022-07-11 17:13:21 +00:00
dependabot[bot]
e9710bb71d
⬆️ Bump @hookform/resolvers from 2.9.3 to 2.9.5
Bumps [@hookform/resolvers](https://github.com/react-hook-form/resolvers) from 2.9.3 to 2.9.5.
- [Release notes](https://github.com/react-hook-form/resolvers/releases)
- [Commits](https://github.com/react-hook-form/resolvers/compare/v2.9.3...v2.9.5)

---
updated-dependencies:
- dependency-name: "@hookform/resolvers"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 17:10:34 +00:00
dependabot[bot]
e1ea19deb4
Merge pull request #810 from quantified-uncertainty/dependabot/npm_and_yarn/react-vega-7.6.0 2022-07-11 17:08:53 +00:00
dependabot[bot]
b48a7f21e3
Merge pull request #814 from quantified-uncertainty/dependabot/npm_and_yarn/types/node-18.0.3 2022-07-11 17:08:10 +00:00
dependabot[bot]
6bd584a36a
⬆️ Bump @types/node from 18.0.0 to 18.0.3
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.0.0 to 18.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 17:01:07 +00:00
dependabot[bot]
5e4f99f5a1
⬆️ Bump @docusaurus/core from 2.0.0-beta.21 to 2.0.0-beta.22
Bumps [@docusaurus/core](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus) from 2.0.0-beta.21 to 2.0.0-beta.22.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v2.0.0-beta.22/packages/docusaurus)

---
updated-dependencies:
- dependency-name: "@docusaurus/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 17:00:08 +00:00
dependabot[bot]
0250d8eb48
Merge pull request #807 from quantified-uncertainty/dependabot/npm_and_yarn/ts-node-10.8.2 2022-07-11 16:56:24 +00:00
dependabot[bot]
ddbc0026e3
Merge pull request #808 from quantified-uncertainty/dependabot/npm_and_yarn/headlessui/react-1.6.6 2022-07-11 16:55:31 +00:00
dependabot[bot]
eac958f9e2
Merge pull request #809 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/parser-5.30.5 2022-07-11 16:55:23 +00:00
dependabot[bot]
f0afcc4a66
⬆️ Bump @typescript-eslint/parser from 5.30.4 to 5.30.5
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.30.4 to 5.30.5.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.5/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 16:50:34 +00:00
dependabot[bot]
d387b86dcf
⬆️ Bump framer-motion from 6.4.1 to 6.4.3
Bumps [framer-motion](https://github.com/framer/motion) from 6.4.1 to 6.4.3.
- [Release notes](https://github.com/framer/motion/releases)
- [Changelog](https://github.com/framer/motion/blob/main/CHANGELOG.md)
- [Commits](https://github.com/framer/motion/compare/v6.4.1...v6.4.3)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 16:47:49 +00:00
dependabot[bot]
472a6dd6e9
Merge pull request #804 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-5.30.5 2022-07-11 16:47:44 +00:00
dependabot[bot]
2f620b2a85
⬆️ Bump react-vega from 7.5.1 to 7.6.0
Bumps [react-vega](https://github.com/vega/react-vega) from 7.5.1 to 7.6.0.
- [Release notes](https://github.com/vega/react-vega/releases)
- [Changelog](https://github.com/vega/react-vega/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vega/react-vega/compare/v7.5.1...v7.6.0)

---
updated-dependencies:
- dependency-name: react-vega
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 16:44:15 +00:00
dependabot[bot]
efb0c4fac0
Merge pull request #805 from quantified-uncertainty/dependabot/npm_and_yarn/react-hook-form-7.33.1 2022-07-11 16:42:49 +00:00
dependabot[bot]
3fa0904d28
⬆️ Bump @typescript-eslint/eslint-plugin from 5.30.4 to 5.30.5
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.30.4 to 5.30.5.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.5/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 16:41:02 +00:00
Quinn
b5f6aa64ac
Merge pull request #806 from quantified-uncertainty/dependabot/npm_and_yarn/eslint-8.19.0
⬆️ Bump eslint from 8.18.0 to 8.19.0
2022-07-11 12:38:26 -04:00
dependabot[bot]
4524e1e55a
⬆️ Bump @headlessui/react from 1.6.5 to 1.6.6
Bumps [@headlessui/react](https://github.com/tailwindlabs/headlessui/tree/HEAD/packages/@headlessui-react) from 1.6.5 to 1.6.6.
- [Release notes](https://github.com/tailwindlabs/headlessui/releases)
- [Changelog](https://github.com/tailwindlabs/headlessui/blob/main/packages/@headlessui-react/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/headlessui/commits/@headlessui/react@v1.6.6/packages/@headlessui-react)

---
updated-dependencies:
- dependency-name: "@headlessui/react"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 16:28:03 +00:00
dependabot[bot]
89ac966276
⬆️ Bump ts-node from 10.8.1 to 10.8.2
Bumps [ts-node](https://github.com/TypeStrong/ts-node) from 10.8.1 to 10.8.2.
- [Release notes](https://github.com/TypeStrong/ts-node/releases)
- [Commits](https://github.com/TypeStrong/ts-node/compare/v10.8.1...v10.8.2)

---
updated-dependencies:
- dependency-name: ts-node
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 16:27:40 +00:00
dependabot[bot]
af75f4fd1d
⬆️ Bump eslint from 8.18.0 to 8.19.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.18.0 to 8.19.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.18.0...v8.19.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 16:26:53 +00:00
dependabot[bot]
a344a215c4
⬆️ Bump react-hook-form from 7.33.0 to 7.33.1
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.33.0 to 7.33.1.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.33.0...v7.33.1)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 16:26:17 +00:00
Quinn
0b77a61938
Merge pull request #801 from quantified-uncertainty/dependabot/npm_and_yarn/babel/plugin-proposal-private-property-in-object-7.18.6
⬆️ Bump @babel/plugin-proposal-private-property-in-object from 7.17.12 to 7.18.6
2022-07-11 12:24:04 -04:00
Quinn
8ae5be9f80
Merge pull request #800 from quantified-uncertainty/dependabot/npm_and_yarn/types/vscode-1.69.0
⬆️ Bump @types/vscode from 1.68.0 to 1.69.0
2022-07-11 12:23:35 -04:00
Quinn
44a13affe0
Merge pull request #802 from quantified-uncertainty/dependabot/npm_and_yarn/tailwindcss-3.1.5
⬆️ Bump tailwindcss from 3.1.4 to 3.1.5
2022-07-11 12:23:11 -04:00
Quinn
f542c68eae
Merge pull request #798 from quantified-uncertainty/dependabot/npm_and_yarn/webpack-dev-server-4.9.3
⬆️ Bump webpack-dev-server from 4.9.2 to 4.9.3
2022-07-11 12:22:42 -04:00
Quinn
76fa5dcabe
Merge pull request #799 from quantified-uncertainty/dependabot/npm_and_yarn/vega-lite-5.3.0
⬆️ Bump vega-lite from 5.2.0 to 5.3.0
2022-07-11 12:22:28 -04:00
Umur Ozkul
532a878911 define function returning result 2022-07-11 17:46:50 +02:00
Umur Ozkul
d25e052b61 rename to Reducer_Module_test 2022-07-11 17:04:21 +02:00
Umur Ozkul
1b3626aeee Merge branch 'develop' into reducer-modules 2022-07-11 16:59:44 +02:00
dependabot[bot]
2d5f52aa5b
⬆️ Bump tailwindcss from 3.1.4 to 3.1.5
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v3.1.4...v3.1.5)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 14:51:38 +00:00
dependabot[bot]
d401b12839
⬆️ Bump @babel/plugin-proposal-private-property-in-object
Bumps [@babel/plugin-proposal-private-property-in-object](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-private-property-in-object) from 7.17.12 to 7.18.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.18.6/packages/babel-plugin-proposal-private-property-in-object)

---
updated-dependencies:
- dependency-name: "@babel/plugin-proposal-private-property-in-object"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 14:51:09 +00:00
dependabot[bot]
fbbab10391
⬆️ Bump @types/vscode from 1.68.0 to 1.69.0
Bumps [@types/vscode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/vscode) from 1.68.0 to 1.69.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/vscode)

---
updated-dependencies:
- dependency-name: "@types/vscode"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 14:50:42 +00:00
dependabot[bot]
cd95992805
⬆️ Bump vega-lite from 5.2.0 to 5.3.0
Bumps [vega-lite](https://github.com/vega/vega-lite) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/vega/vega-lite/releases)
- [Changelog](https://github.com/vega/vega-lite/blob/v5.3.0/CHANGELOG.md)
- [Commits](https://github.com/vega/vega-lite/compare/v5.2.0...v5.3.0)

---
updated-dependencies:
- dependency-name: vega-lite
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 14:48:36 +00:00
dependabot[bot]
740f07a2b6
⬆️ Bump webpack-dev-server from 4.9.2 to 4.9.3
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.9.2 to 4.9.3.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.9.2...v4.9.3)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 14:48:04 +00:00
Sam Nolan
6973f70e4c Add graph settings to playground 2022-07-11 11:22:21 +10:00
Sam Nolan
2e9872f958 Merge branch 'develop' into more-graph-settings 2022-07-11 10:54:03 +10:00
Vyacheslav Matyukhin
12eb63c789
SquiggleViewer refactoring; persistent collapsed settings via context 2022-07-08 18:28:12 +04:00
Vyacheslav Matyukhin
3ca80daee8
remove showTypes setting 2022-07-08 17:13:26 +04:00
Vyacheslav Matyukhin
a4684ddf39
collapse on border click 2022-07-08 17:09:46 +04:00
Vyacheslav Matyukhin
c401f39520
remove collapse animation; tooltips with types 2022-07-08 16:58:34 +04:00
Ozzie Gooen
7afae96cf4 Simple integration of module functionality 2022-07-07 18:30:56 -07:00
Ozzie Gooen
c866cc812a wip 2022-07-07 18:09:41 -07:00
Vyacheslav Matyukhin
0ef2428c80
Merge branch 'develop' into collapsible 2022-07-08 02:00:54 +04:00
Ozzie Gooen
9f0e4f34fe First attempt at integrating namespaces 2022-07-07 12:01:02 -07:00
Vyacheslav Matyukhin
afbc1e1455
collapsible tree 2022-07-07 20:54:40 +04:00
Vyacheslav Matyukhin
012112336f
Merge pull request #780 from quantified-uncertainty/dependabot/npm_and_yarn/vscode-languageserver-8.0.1
⬆️ Bump vscode-languageserver from 7.0.0 to 8.0.1
2022-07-07 15:13:33 +03:00
Ozzie Gooen
d096bd1f24
Merge pull request #795 from quantified-uncertainty/fix-playground-links 2022-07-06 12:16:35 -04:00
Vyacheslav Matyukhin
7746b5673d
hotfix: hash links in playground 2022-07-06 19:34:39 +04:00
Vyacheslav Matyukhin
8a2269b7d0
collapsible results (WIP) 2022-07-06 19:21:54 +04:00
Sam Nolan
ec721b83ce Merge branch 'develop' into more-graph-settings 2022-07-06 11:59:53 +10:00
Ozzie Gooen
6e968c492b
Merge pull request #786 from quantified-uncertainty/reducer-modules
Module.defineFFI
2022-07-05 21:26:20 -04:00
Ozzie Gooen
b425743484
Merge pull request #785 from quantified-uncertainty/beta-from-mean-stdev
`beta({mean: 0.39, stdev: 0.1})` #497
2022-07-05 21:02:38 -04:00
Ozzie Gooen
f2ccf574ed
Merge pull request #777 from quantified-uncertainty/pause-autoplay
Manual play mode
2022-07-05 19:52:29 -04:00
Ozzie Gooen
4054f7dbff
Small beta error message change 2022-07-05 19:48:41 -04:00
Vyacheslav Matyukhin
82dc860985
Merge branch 'develop' into pause-autoplay 2022-07-06 02:23:17 +04:00
Vyacheslav Matyukhin
cdfddf5888
animate autorun toggle 2022-07-06 02:07:18 +04:00
Vyacheslav Matyukhin
7d3366389b
extract run logic to a custom hook 2022-07-06 01:41:29 +04:00
Sam Nolan
d46d524859
Merge pull request #759 from quantified-uncertainty/observable-refactor
Remove observable boilerplate + refactors
2022-07-06 07:36:28 +10:00
Vyacheslav Matyukhin
87bb752c92
extract ui components from playground; show spinner on keyboard-initiated plays 2022-07-06 00:49:48 +04:00
Vyacheslav Matyukhin
4fe30107a4
submit editor on cmd+enter 2022-07-06 00:47:55 +04:00
Vyacheslav Matyukhin
9208330038
playground: manual play mode 2022-07-06 00:46:47 +04:00
Umur Ozkul
b3ac8848d2 comment 2022-07-05 15:27:56 +02:00
Sam Nolan
2c2f299e46 Fix build error 2022-07-05 17:43:13 +10:00
Sam Nolan
04188a55f1 Merge branch 'develop' into more-graph-settings 2022-07-05 17:35:50 +10:00
Sam Nolan
c4d2ad922a Respond to PR comments 2022-07-05 17:32:02 +10:00
Umur Ozkul
e0b2632028 format 2022-07-05 06:20:57 +02:00
Umur Ozkul
29c9cad510 remove dead line 2022-07-05 06:19:42 +02:00
Umur Ozkul
746ca695af fix test 2022-07-05 06:17:26 +02:00
Umur Ozkul
f5f2d94fbc remove dead line 2022-07-05 06:17:15 +02:00
Umur Ozkul
a285d0b493 fix peggy warning 2022-07-05 06:17:03 +02:00
Umur Ozkul
742fc10e0d comment 2022-07-05 05:54:56 +02:00
Umur Ozkul
6edacc78e4 foo test 2022-07-05 05:16:00 +02:00
Umur Ozkul
c0329dc73d resolve PR786 2022-07-05 00:58:25 +02:00
Umur Ozkul
308601b358 Merge branch 'develop' into reducer-modules 2022-07-04 23:05:53 +02:00
Quinn
973ba8a4da
hotfix: remove quinn from rescript PR autoping 2022-07-04 11:52:37 -04:00
Quinn Dougherty
7889332052 polymorphic variants to neatly constrain types 2022-07-04 11:24:30 -04:00
Quinn
bceb9821bd
Merge pull request #790 from quantified-uncertainty/dependabot/npm_and_yarn/clsx-1.2.0
⬆️ Bump clsx from 1.1.1 to 1.2.0
2022-07-04 11:23:31 -04:00
dependabot[bot]
e60dff110a
Merge pull request #791 from quantified-uncertainty/dependabot/npm_and_yarn/mathjs-10.6.4 2022-07-04 14:58:10 +00:00
dependabot[bot]
a8eb9a3aaa
Merge pull request #789 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-5.30.4 2022-07-04 14:50:48 +00:00
dependabot[bot]
d7952e82f5
⬆️ Bump @typescript-eslint/eslint-plugin from 5.29.0 to 5.30.4
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.29.0 to 5.30.4.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.4/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-04 14:45:33 +00:00
dependabot[bot]
c065510413
⬆️ Bump clsx from 1.1.1 to 1.2.0
Bumps [clsx](https://github.com/lukeed/clsx) from 1.1.1 to 1.2.0.
- [Release notes](https://github.com/lukeed/clsx/releases)
- [Commits](https://github.com/lukeed/clsx/compare/v1.1.1...v1.2.0)

---
updated-dependencies:
- dependency-name: clsx
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-04 14:44:40 +00:00
dependabot[bot]
5bee5cb4b8
Merge pull request #788 from quantified-uncertainty/dependabot/npm_and_yarn/prism-react-renderer-1.3.5 2022-07-04 14:43:18 +00:00
dependabot[bot]
4915f6a5b8
⬆️ Bump mathjs from 10.6.3 to 10.6.4
Bumps [mathjs](https://github.com/josdejong/mathjs) from 10.6.3 to 10.6.4.
- [Release notes](https://github.com/josdejong/mathjs/releases)
- [Changelog](https://github.com/josdejong/mathjs/blob/develop/HISTORY.md)
- [Commits](https://github.com/josdejong/mathjs/compare/v10.6.3...v10.6.4)

---
updated-dependencies:
- dependency-name: mathjs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-04 14:39:55 +00:00
dependabot[bot]
a236b3704d
Merge pull request #787 from quantified-uncertainty/dependabot/npm_and_yarn/typescript-eslint/parser-5.30.4 2022-07-04 14:39:38 +00:00
dependabot[bot]
0eb2268875
⬆️ Bump prism-react-renderer from 1.3.3 to 1.3.5
Bumps [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer) from 1.3.3 to 1.3.5.
- [Release notes](https://github.com/FormidableLabs/prism-react-renderer/releases)
- [Commits](https://github.com/FormidableLabs/prism-react-renderer/compare/v1.3.3...v1.3.5)

---
updated-dependencies:
- dependency-name: prism-react-renderer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-04 14:33:51 +00:00
dependabot[bot]
7c0e4e778c
⬆️ Bump @typescript-eslint/parser from 5.29.0 to 5.30.4
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.29.0 to 5.30.4.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.4/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-04 14:32:46 +00:00
Quinn Dougherty
4858aa9fe5 **most** comments, might do something with polymorphic variants so that types are more truthful next, but might not 2022-07-04 10:22:06 -04:00
Quinn Dougherty
9225710d2d Merge remote-tracking branch 'origin/develop' into scoring-cleanup-three 2022-07-04 10:19:52 -04:00
Quinn Dougherty
7a419742ad moved error message sooner for invalid mean and stdev 2022-07-04 09:57:00 -04:00
Ozzie Gooen
d6bdf5bfeb Formatted code 2022-07-02 15:02:43 -04:00
Ozzie Gooen
d888f685d0 Quick fixes for EvType typescripting 2022-07-02 14:25:05 -04:00
Umur Ozkul
38cc93bdec Module.defineFFI 2022-07-02 14:53:33 +02:00
Quinn Dougherty
5b41019c04 hotfix: relative path 2022-06-30 14:38:59 -04:00
Quinn Dougherty
e0289ed23f documented addition to beta api 2022-06-30 12:29:09 -04:00
Quinn Dougherty
9dcac8dd48 fixed \-1\ I had forgotten; added basic mean tests 2022-06-30 12:20:50 -04:00
Sam Nolan
df3608d9b2 Merge branch 'develop' into observable-refactor 2022-06-28 00:37:16 +00:00
Quinn Dougherty
54cd636524 added comment for more direct wikipedia citation 2022-06-27 14:37:12 -04:00
Quinn Dougherty
14189fd848 #497 (no tests or examples) 2022-06-27 14:31:35 -04:00
Quinn
8d7e6297cc
Merge pull request #784 from quantified-uncertainty/dependabot/npm_and_yarn/mathjs-10.6.3
⬆️ Bump mathjs from 10.6.1 to 10.6.3
2022-06-27 12:49:25 -04:00
Quinn
c8a25546dc
Merge pull request #783 from quantified-uncertainty/dependabot/npm_and_yarn/fast-check-3.0.1
⬆️ Bump fast-check from 3.0.0 to 3.0.1
2022-06-27 12:48:57 -04:00
Quinn
e964814895
Merge pull request #782 from quantified-uncertainty/dependabot/npm_and_yarn/hookform/resolvers-2.9.3
⬆️ Bump @hookform/resolvers from 2.9.1 to 2.9.3
2022-06-27 12:48:27 -04:00
Quinn
812d120d79
Merge pull request #781 from quantified-uncertainty/dependabot/npm_and_yarn/react-hook-form-7.33.0
⬆️ Bump react-hook-form from 7.32.2 to 7.33.0
2022-06-27 12:48:03 -04:00
dependabot[bot]
581d21be93
⬆️ Bump mathjs from 10.6.1 to 10.6.3
Bumps [mathjs](https://github.com/josdejong/mathjs) from 10.6.1 to 10.6.3.
- [Release notes](https://github.com/josdejong/mathjs/releases)
- [Changelog](https://github.com/josdejong/mathjs/blob/develop/HISTORY.md)
- [Commits](https://github.com/josdejong/mathjs/compare/v10.6.1...v10.6.3)

---
updated-dependencies:
- dependency-name: mathjs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-27 14:25:22 +00:00
dependabot[bot]
587ca1f42b
⬆️ Bump fast-check from 3.0.0 to 3.0.1
Bumps [fast-check](https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/dubzzz/fast-check/releases)
- [Changelog](https://github.com/dubzzz/fast-check/blob/main/packages/fast-check/CHANGELOG.md)
- [Commits](https://github.com/dubzzz/fast-check/commits/v3.0.1/packages/fast-check)

---
updated-dependencies:
- dependency-name: fast-check
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-27 14:24:50 +00:00
dependabot[bot]
a877be36fa
⬆️ Bump @hookform/resolvers from 2.9.1 to 2.9.3
Bumps [@hookform/resolvers](https://github.com/react-hook-form/resolvers) from 2.9.1 to 2.9.3.
- [Release notes](https://github.com/react-hook-form/resolvers/releases)
- [Commits](https://github.com/react-hook-form/resolvers/compare/v2.9.1...v2.9.3)

---
updated-dependencies:
- dependency-name: "@hookform/resolvers"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-27 14:24:19 +00:00
dependabot[bot]
5e7f85dbb7
⬆️ Bump react-hook-form from 7.32.2 to 7.33.0
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.32.2 to 7.33.0.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.32.2...v7.33.0)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-27 14:23:58 +00:00
dependabot[bot]
043205eca8
⬆️ Bump vscode-languageserver from 7.0.0 to 8.0.1
Bumps [vscode-languageserver](https://github.com/Microsoft/vscode-languageserver-node/tree/HEAD/server) from 7.0.0 to 8.0.1.
- [Release notes](https://github.com/Microsoft/vscode-languageserver-node/releases)
- [Commits](https://github.com/Microsoft/vscode-languageserver-node/commits/release/client/8.0.1/server)

---
updated-dependencies:
- dependency-name: vscode-languageserver
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-27 14:23:31 +00:00
Sam Nolan
f836afce7a Merge branch 'develop' into observable-refactor 2022-06-27 07:08:00 +00:00
Sam Nolan
69aa8a8cc1 Add controlled and uncontrolled versions of components 2022-06-27 07:07:09 +00:00
Quinn Dougherty
acb0d3b9ee removed \TwoScalars\ material 2022-06-26 12:28:04 -04:00
Ozzie Gooen
c0b632325e
Merge pull request #775 from quantified-uncertainty/semantic-highlight
Semantic highlighting
2022-06-26 06:50:46 -07:00
Vyacheslav Matyukhin
8880b91c28
peggy: require instead of import, fixes tests 2022-06-26 12:13:38 +03:00
Vyacheslav Matyukhin
81854702a7
highlight record keys 2022-06-26 11:42:56 +03:00
Vyacheslav Matyukhin
7cbece9212
optional location on NodeString (for record keys) 2022-06-26 11:42:33 +03:00
Vyacheslav Matyukhin
96c2a982cb
semantic highlight based on squiggle-lang AST 2022-06-26 11:15:25 +03:00
Vyacheslav Matyukhin
5a2b5b2a4d
return typed peggy AST from parse 2022-06-26 11:14:51 +03:00
Quinn Dougherty
29cf1cebb2 fixed paths to constructors 2022-06-24 09:19:15 -04:00
Quinn Dougherty
e0e2f12e27 added path to constructors 2022-06-24 09:07:15 -04:00
Quinn Dougherty
9dbd4f076c fixed paren balancing and so on 2022-06-24 08:56:16 -04:00
Quinn Dougherty
3e67180fe1 Merge remote-tracking branch 'origin/develop' into scoring-cleanup-three 2022-06-24 08:48:07 -04:00
Sam Nolan
0c66bb0579 Add more options for distribution charts
Changing title, color, tick format, and domain
2022-06-24 07:22:31 +00:00
Sam Nolan
ac7ecd9bdc Merge branch 'develop' into observable-refactor 2022-06-24 05:14:21 +00:00
Sam Nolan
06f86963d1 Update documentation for squiggleString 2022-06-24 05:10:28 +00:00
Sam Nolan
fc68a8d069 Remove observable boilerplate + refactors 2022-06-24 03:43:30 +00:00
Quinn Dougherty
b74b83a2cb Merge remote-tracking branch 'origin/develop' into scoring-cleanup-three 2022-06-23 11:34:03 -04:00
Quinn Dougherty
13ba7d1a5e Merge remote-tracking branch 'origin/develop' into scoring-cleanup-three 2022-06-22 22:06:16 -04:00
Quinn Dougherty
d80ea676c5 fixed tests after pair; error'd out mixed case 2022-06-21 12:23:58 -04:00
Quinn Dougherty
95adc67701 some adjustments I guess 2022-06-21 11:55:15 -04:00
93f5b4ba2a feat: Fix remaining scoring errors with Quinn
Value::0.3 to 0.9
2022-06-20 16:39:48 -04:00
4b1c226173 fix: PointSetDist_Scoring.WithScalarAnswer.scoreWithPrior
Done in pair coding with Quinn.
Value::[0.3 to 0.9]
2022-06-20 16:14:41 -04:00
Quinn Dougherty
7e859c7823 Merge remote-tracking branch 'origin/develop' into scoring-cleanup-three 2022-06-20 13:38:52 -04:00
Quinn Dougherty
633bab9c30 a fistful of comments 2022-06-20 11:11:11 -04:00
Quinn Dougherty
2c72972097 the lintness 2022-06-20 09:35:25 -04:00
Quinn Dougherty
1a6ced0373 a few comments more 2022-06-20 09:34:56 -04:00
Quinn Dougherty
d156b24fd1 \yarn format\ pass 2022-06-20 08:51:34 -04:00
Quinn Dougherty
f5366540f7 Merge remote-tracking branch 'origin/develop' into scoring-cleanup-three 2022-06-20 08:50:59 -04:00
Quinn Dougherty
18733f2d09 merged 592 2022-06-20 08:47:16 -04:00
Quinn Dougherty
74fe0296e0 Merge remote-tracking branch 'origin/scoring-cleanup-refactor' into scoring-cleanup-three 2022-06-20 08:36:31 -04:00
Quinn Dougherty
584c639d01 some of the comments 2022-06-20 08:28:30 -04:00
Ozzie Gooen
a8ad464623
Merge pull request #697 from quantified-uncertainty/develop
Develop -> Master, 14/06/2022
2022-06-14 17:28:25 -07:00
Ozzie Gooen
b63039b803
Merge pull request #675 from quantified-uncertainty/develop
Develop -> Master
2022-06-11 13:38:40 -07:00
Ozzie Gooen
8d9d4f397d
Merge pull request #674 from quantified-uncertainty/develop
June 10th Dev -> Master
2022-06-10 11:39:43 -07:00
Ozzie Gooen
239abbdcf8 Minor refactors 2022-05-25 18:10:05 -04:00
Quinn Dougherty
6a9179d4b8 Last cleanup
Value: [1e-5 to 1e-3]
2022-05-25 14:40:39 -04:00
Quinn Dougherty
3aaad14f11 slghtly more robust solution to mixed kldivergences (and removed a
warning)

Value: [1e-5 to 1e-2]
2022-05-25 13:51:01 -04:00
Quinn Dougherty
a266b8ed09 Fixed tests (plausibly slightly naively)
Value: [1e-4 to 1e-1]
2022-05-25 13:38:55 -04:00
Quinn Dougherty
cbaf4c150d one CR comment; chasing kldivergence on mixeds bug
Value: [1e-10 to 1e-3]
2022-05-25 13:10:31 -04:00
Quinn Dougherty
249f58d3d8 Slightly baffled why klDivergence : mixed x mixed -> float is busted.
Value: [1e-4 to 3e-2]

hypothesis: I need to reintroduce `combineAlongSupportOfSecondArgument`
2022-05-25 10:39:30 -04:00
Quinn Dougherty
f2460a5e12 It compiles
Value: [1e-3 to 4e-1]
2022-05-25 08:22:57 -04:00
Quinn Dougherty
3a56d6fca4 intermediate commit
Value: [1e-10 to 1e-5]
2022-05-25 08:22:57 -04:00
Quinn Dougherty
bafcb4f7b8 Cleaned up Scoring file: no dispatch yet
Value: [1e-4 to 6e-2]
2022-05-25 08:22:57 -04:00
Ozzie Gooen
183ec02376
Merge pull request #485 from quantified-uncertainty/develop
Develop -> Master
2022-05-04 17:42:02 -04:00
Quinn
1806ba80fb
Merge pull request #419 from quantified-uncertainty/develop
`master` <-  `develop` sync apr28
2022-04-28 14:13:30 -04:00
Ozzie Gooen
09080f8d73
Merge pull request #296 from quantified-uncertainty/develop
Develop -> Master, April 15
2022-04-15 19:25:41 -04:00
370 changed files with 20552 additions and 12607 deletions

20
.github/CODEOWNERS vendored
View File

@ -9,22 +9,22 @@
# This also holds true for GitHub teams. # This also holds true for GitHub teams.
# Rescript # Rescript
*.res @OAGr @quinn-dougherty *.res @berekuk @OAGr
*.resi @OAGr @quinn-dougherty *.resi @berekuk @OAGr
# Typescript # Typescript
*.tsx @Hazelfire @OAGr *.tsx @Hazelfire @berekuk @OAGr
*.ts @Hazelfire @OAGr *.ts @Hazelfire @berekuk @OAGr
# Javascript # Javascript
*.js @Hazelfire @OAGr *.js @Hazelfire @berekuk @OAGr
# Any opsy files # Any opsy files
.github/** @quinn-dougherty @OAGr .github/** @quinn-dougherty @berekuk @OAGr
*.json @quinn-dougherty @Hazelfire @OAGr *.json @quinn-dougherty @Hazelfire @berekuk @OAGr
*.y*ml @quinn-dougherty @OAGr *.y*ml @quinn-dougherty @berekuk @OAGr
*.config.js @Hazelfire @OAGr *.config.js @Hazelfire @berekuk @OAGr
netlify.toml @quinn-dougherty @OAGr @Hazelfire vercel.json @OAGr @berekuk @Hazelfire
# Documentation # Documentation
*.md @quinn-dougherty @OAGr @Hazelfire *.md @quinn-dougherty @OAGr @Hazelfire

View File

@ -11,3 +11,14 @@ updates:
interval: "weekly" interval: "weekly"
commit-message: commit-message:
prefix: "⬆️" prefix: "⬆️"
open-pull-requests-limit: 100
labels:
- "dependencies"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "⬆️"
labels:
- "dependencies"

87
.github/workflows/ci-cachix.yml vendored Normal file
View File

@ -0,0 +1,87 @@
name: Nix build
on:
push:
branches:
- master
- develop
pull_request:
branches:
- master
- develop
- reducer-dev
- epic-reducer-project
jobs:
flake-lints:
name: All lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install nix
uses: cachix/install-nix-action@v17
with:
nix_path: nixpkgs=channel:nixos-22.05
- name: Use cachix
uses: cachix/cachix-action@v10
with:
name: quantified-uncertainty
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- name: Check that lang lints
run: nix build .#lang-lint
- name: Check that components lints
run: nix build .#components-lint
- name: Check that website lints
run: nix build .#docusaurus-lint
- name: Check that vscode extension lints
run: nix build .#vscode-lint
- name: Check that cli lints
run: nix build .#cli-lint
flake-packages:
name: Builds, tests, and bundles
runs-on: ubuntu-latest
needs: flake-lints
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install nix
uses: cachix/install-nix-action@v17
with:
nix_path: nixpkgs=channel:nixos-22.05
- name: Use cachix
uses: cachix/cachix-action@v10
with:
name: quantified-uncertainty
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- name: Check all lang tests
run: nix build .#lang-test
- name: Check that lang bundles
run: nix build .#lang-bundle
- name: Check that components builds
run: nix build .#components
- name: Check that components bundles
run: nix build .#components-bundle
flake-devshells:
name: Development shell environment
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install nix
uses: cachix/install-nix-action@v17
with:
nix_path: nixpkgs=channel:nixos-22.05
- name: Use cachix
uses: cachix/cachix-action@v10
with:
name: quantified-uncertainty
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- name: Build js devshell
run: nix develop .#js --profile just-js
- name: Build js & wasm devshell
run: nix develop --profile full-shell

View File

@ -1,4 +1,4 @@
name: Squiggle packages check name: Squiggle packages checks
on: on:
push: push:
@ -9,213 +9,40 @@ on:
branches: branches:
- master - master
- develop - develop
- reducer-dev
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: quantified-uncertainty
jobs: jobs:
pre_check: build-test-lint:
name: Precheck for skipping redundant jobs name: Build, test, lint
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs:
should_skip_lang: ${{ steps.skip_lang_check.outputs.should_skip }}
should_skip_components: ${{ steps.skip_components_check.outputs.should_skip }}
should_skip_website: ${{ steps.skip_website_check.outputs.should_skip }}
should_skip_vscodeext: ${{ steps.skip_vscodeext_check.outputs.should_skip }}
should_skip_cli: ${{ steps.skip_cli_check.outputs.should_skip }}
steps: steps:
- id: skip_lang_check - uses: actions/checkout@v3
name: Check if the changes are about squiggle-lang src files - name: Setup Node.js environment
uses: fkirc/skip-duplicate-actions@v3.4.1 uses: actions/setup-node@v3
with: with:
paths: '["packages/squiggle-lang/**"]' node-version: 16
- id: skip_components_check cache: 'yarn'
name: Check if the changes are about components src files - name: Install dependencies
uses: fkirc/skip-duplicate-actions@v3.4.1 run: yarn --frozen-lockfile
with: - name: Turbo run
paths: '["packages/components/**"]' run: npx turbo run build test lint bundle
- id: skip_website_check
name: Check if the changes are about website src files
uses: fkirc/skip-duplicate-actions@v3.4.1
with:
paths: '["packages/website/**"]'
- id: skip_vscodeext_check
name: Check if the changes are about vscode extension src files
uses: fkirc/skip-duplicate-actions@v3.4.1
with:
paths: '["packages/vscode-ext/**"]'
- id: skip_cli_check
name: Check if the changes are about cli src files
uses: fkirc/skip-duplicate-actions@v3.4.1
with:
paths: '["packages/cli/**"]'
lang-lint: coverage:
name: Language lint name: Coverage
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_lang != 'true' }}
defaults:
run:
shell: bash
working-directory: packages/squiggle-lang
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- name: Install Dependencies
run: cd ../../ && yarn
- name: Check rescript lint
run: yarn lint:rescript
- name: Check javascript, typescript, and markdown lint
uses: creyD/prettier_action@v4.2
with:
dry: true
prettier_options: --check packages/squiggle-lang
lang-build-test-bundle:
name: Language build, test, and bundle
runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_lang != 'true' }}
defaults:
run:
shell: bash
working-directory: packages/squiggle-lang
steps:
- uses: actions/checkout@v2
with: with:
fetch-depth: 2 fetch-depth: 2
- name: Install dependencies from monorepo level - name: Setup Node.js environment
run: cd ../../ && yarn uses: actions/setup-node@v2
- name: Build rescript codebase
run: yarn build
- name: Run rescript tests
run: yarn test:rescript
- name: Run typescript tests
run: yarn test:ts
- name: Run webpack
run: yarn bundle
- name: Upload rescript coverage report
run: yarn coverage:rescript:ci
- name: Upload typescript coverage report
run: yarn coverage:ts:ci
components-lint:
name: Components lint
runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_components != 'true' }}
defaults:
run:
shell: bash
working-directory: packages/components
steps:
- uses: actions/checkout@v2
- name: Check javascript, typescript, and markdown lint
uses: creyD/prettier_action@v4.2
with: with:
dry: true node-version: 16
prettier_options: --check packages/components --ignore-path packages/components/.prettierignore cache: 'yarn'
- name: Install dependencies
components-bundle-build: run: yarn
name: Components bundle and build - name: Coverage
runs-on: ubuntu-latest run: npx turbo run coverage
needs: pre_check
if: ${{ (needs.pre_check.outputs.should_skip_components != 'true') || (needs.pre_check.outputs.should_skip_lang != 'true') }}
defaults:
run:
shell: bash
working-directory: packages/components
steps:
- uses: actions/checkout@v2
- name: Install dependencies from monorepo level
run: cd ../../ && yarn
- name: Build rescript codebase in squiggle-lang
run: cd ../squiggle-lang && yarn build
- name: Run webpack
run: yarn bundle
- name: Build storybook
run: yarn build
website-lint:
name: Website lint
runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_website != 'true' }}
defaults:
run:
shell: bash
working-directory: packages/website
steps:
- uses: actions/checkout@v2
- name: Check javascript, typescript, and markdown lint
uses: creyD/prettier_action@v4.2
with:
dry: true
prettier_options: --check packages/website
website-build:
name: Website build
runs-on: ubuntu-latest
needs: pre_check
if: ${{ (needs.pre_check.outputs.should_skip_website != 'true') || (needs.pre_check.outputs.should_skip_lang != 'true') || (needs.pre_check.outputs.should_skip_components != 'true') }}
defaults:
run:
shell: bash
working-directory: packages/website
steps:
- uses: actions/checkout@v2
- name: Install dependencies from monorepo level
run: cd ../../ && yarn
- name: Build rescript in squiggle-lang
run: cd ../squiggle-lang && yarn build
- name: Build components
run: cd ../components && yarn build
- name: Build website assets
run: yarn build
vscode-ext-lint:
name: VS Code extension lint
runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_vscodeext != 'true' }}
defaults:
run:
shell: bash
working-directory: packages/vscode-ext
steps:
- uses: actions/checkout@v2
- name: Install dependencies from monorepo level
run: cd ../../ && yarn
- name: Lint the VSCode Extension source code
run: yarn lint
vscode-ext-build:
name: VS Code extension build
runs-on: ubuntu-latest
needs: pre_check
if: ${{ (needs.pre_check.outputs.should_skip_components != 'true') || (needs.pre_check.outputs.should_skip_lang != 'true') }} || (needs.pre_check.outputs.should_skip_vscodeext != 'true') }}
defaults:
run:
shell: bash
working-directory: packages/vscode-ext
steps:
- uses: actions/checkout@v2
- name: Install dependencies from monorepo level
run: cd ../../ && yarn
- name: Build
run: yarn compile
cli-lint:
name: CLI lint
runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_cli != 'true' }}
defaults:
run:
shell: bash
working-directory: packages/cli
steps:
- uses: actions/checkout@v2
- name: Check javascript, typescript, and markdown lint
uses: creyD/prettier_action@v4.2
with:
dry: true
prettier_options: --check packages/cli

View File

@ -33,11 +33,11 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v2 uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v1 uses: github/codeql-action/init@v2
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file. # If you wish to specify custom queries, you can do so here or in a config file.
@ -48,7 +48,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below) # If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@v1 uses: github/codeql-action/autobuild@v2
- name: Install dependencies - name: Install dependencies
run: yarn run: yarn
- name: Build rescript - name: Build rescript
@ -65,4 +65,4 @@ jobs:
# make release # make release
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1 uses: github/codeql-action/analyze@v2

141
.github/workflows/release-please.yml vendored Normal file
View File

@ -0,0 +1,141 @@
name: Run Release Please
on:
push:
branches:
- master
jobs:
pre_check:
name: Precheck for skipping redundant jobs
runs-on: ubuntu-latest
outputs:
should_skip_lang: ${{ steps.skip_lang_check.outputs.should_skip }}
should_skip_components: ${{ steps.skip_components_check.outputs.should_skip }}
should_skip_website: ${{ steps.skip_website_check.outputs.should_skip }}
should_skip_vscodeext: ${{ steps.skip_vscodeext_check.outputs.should_skip }}
should_skip_cli: ${{ steps.skip_cli_check.outputs.should_skip }}
steps:
- id: skip_lang_check
name: Check if the changes are about squiggle-lang src files
uses: fkirc/skip-duplicate-actions@v5.2.0
with:
paths: '["packages/squiggle-lang/**"]'
- id: skip_components_check
name: Check if the changes are about components src files
uses: fkirc/skip-duplicate-actions@v5.2.0
with:
paths: '["packages/components/**"]'
- id: skip_website_check
name: Check if the changes are about website src files
uses: fkirc/skip-duplicate-actions@v5.2.0
with:
paths: '["packages/website/**"]'
- id: skip_vscodeext_check
name: Check if the changes are about vscode extension src files
uses: fkirc/skip-duplicate-actions@v5.2.0
with:
paths: '["packages/vscode-ext/**"]'
- id: skip_cli_check
name: Check if the changes are about cli src files
uses: fkirc/skip-duplicate-actions@v5.2.0
with:
paths: '["packages/cli/**"]'
relplz-lang:
name: for squiggle-lang
runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_lang != 'true' }}
steps:
- name: Release please (squiggle-lang)
uses: google-github-actions/release-please-action@v3
id: release
with:
token: ${{secrets.GITHUB_TOKEN}}
command: manifest-pr
path: packages/squiggle-lang
# bump-patch-for-minor-pre-major: true
skip-github-release: true
- name: Publish- Checkout source
uses: actions/checkout@v3
# these if statements ensure that a publication only occurs when
# a new release is created:
if: ${{ steps.release.outputs.release_created }}
- name: Publish- Install dependencies
run: yarn
if: ${{ steps.release.outputs.release_created }}
- name: Publish
run: cd packages/squiggle-lang && yarn publish
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
if: ${{ steps.release.outputs.release_created }}
relplz-components:
name: for components
runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_components != 'true' }}
steps:
- name: Release please (components)
uses: google-github-actions/release-please-action@v3
with:
token: ${{secrets.GITHUB_TOKEN}}
command: manifest-pr
path: packages/components
# bump-patch-for-minor-pre-major: true
skip-github-release: true
- name: Publish- Checkout source
uses: actions/checkout@v3
# these if statements ensure that a publication only occurs when
# a new release is created:
if: ${{ steps.release.outputs.release_created }}
- name: Publish- Install dependencies
run: yarn
if: ${{ steps.release.outputs.release_created }}
- name: Publish
run: cd packages/components && yarn publish
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
relplz-website:
name: for website
runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_website != 'true' }}
steps:
- name: Release please (website)
uses: google-github-actions/release-please-action@v3
with:
token: ${{secrets.GITHUB_TOKEN}}
command: manifest-pr
path: packages/website
# bump-patch-for-minor-pre-major: true
skip-github-release: true
relplz-vscodeext:
name: for vscode-ext
runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_vscodeext != 'true' }}
steps:
- name: Release please (vscode-ext)
uses: google-github-actions/release-please-action@v3
with:
token: ${{secrets.GITHUB_TOKEN}}
command: manifest-pr
path: packages/vscode-ext
# bump-patch-for-minor-pre-major: true
skip-github-release: true
relplz-cl:
name: for cli
runs-on: ubuntu-latest
needs: pre_check
if: ${{ needs.pre_check.outputs.should_skip_cli != 'true' }}
steps:
- name: Release please (cli)
uses: google-github-actions/release-please-action@v3
with:
token: ${{secrets.GITHUB_TOKEN}}
command: manifest-pr
path: packages/cli
bump-patch-for-minor-pre-major: true
skip-github-release: true

6
.gitignore vendored
View File

@ -7,3 +7,9 @@ yarn-error.log
**/.sync.ffs_db **/.sync.ffs_db
.direnv .direnv
.log .log
.vscode
todo.txt
result
shell.nix
.turbo

View File

@ -1,15 +1,16 @@
.direnv .direnv
*.bs.js *.bs.js
*.gen.tsx *.gen.tsx
packages/*/dist
packages/components/storybook-static packages/components/storybook-static
node_modules node_modules
packages/*/node_modules packages/*/node_modules
packages/website/.docusaurus packages/website/.docusaurus
packages/squiggle-lang/lib packages/squiggle-lang/lib
packages/squiggle-lang/.nyc_output/
packages/squiggle-lang/coverage/ packages/squiggle-lang/coverage/
packages/squiggle-lang/.cache/ packages/squiggle-lang/.cache/
packages/website/build/ packages/website/build/
packages/squiggle-lang/src/rescript/Reducer/Reducer_Peggy/Reducer_Peggy_GeneratedParser.js packages/squiggle-lang/src/rescript/Reducer/Reducer_Peggy/Reducer_Peggy_GeneratedParser.js
packages/vscode-ext/media/vendor/ packages/vscode-ext/media/vendor/
packages/squiggle-lang/.nyc_output/
packages/*/dist
result

View File

@ -0,0 +1,7 @@
{
"packages/cli": "0.0.3",
"packages/components": "0.4.1",
"packages/squiggle-lang": "0.4.1",
"packages/vscode-ext": "0.4.1",
"packages/website": "0.0.0"
}

1
CHANGELOG.md Normal file
View File

@ -0,0 +1 @@
See the [Changelog.mdx page](./packages/website/docs/Changelog.mdx) for the changelog.

View File

@ -16,7 +16,7 @@ Squiggle is currently pre-alpha.
# Bug reports # Bug reports
Anyone (with a github account) can file an issue at any time. Please allow Quinn, Sam, and Ozzie to triage, but otherwise just follow the suggestions in the issue templates. Anyone (with a github account) can file an issue at any time. Please allow Slava, Sam, and Ozzie to triage, but otherwise just follow the suggestions in the issue templates.
# Project structure # Project structure
@ -28,7 +28,7 @@ Squiggle is a **monorepo** with three **packages**.
# Deployment ops # Deployment ops
We use netlify, and it should only concern Quinn, Sam, and Ozzie. We use Vercel, and it should only concern Slava, Sam, and Ozzie.
# Development environment, building, testing, dev server # Development environment, building, testing, dev server
@ -56,9 +56,9 @@ If you absolutely must, please prefix your commit message with `hotfix: `.
Please work against `develop` branch. **Do not** work against `master`. Please work against `develop` branch. **Do not** work against `master`.
- For rescript code: Quinn and Ozzie are reviewers - For rescript code: Slava and Ozzie are reviewers
- For js or typescript code: Sam and Ozzie are reviewers - For js or typescript code: Sam and Ozzie are reviewers
- For ops code (i.e. yaml, package.json): Quinn and Sam are reviewers - For ops code (i.e. yaml, package.json): Slava and Sam are reviewers
Autopings are set up: if you are not autopinged, you are welcome to comment, but please do not use the formal review feature, send approvals, rejections, or merges. Autopings are set up: if you are not autopinged, you are welcome to comment, but please do not use the formal review feature, send approvals, rejections, or merges.

View File

@ -12,8 +12,8 @@ _An estimation language_.
- [Gallery](https://www.squiggle-language.com/docs/Discussions/Gallery) - [Gallery](https://www.squiggle-language.com/docs/Discussions/Gallery)
- [Squiggle playground](https://squiggle-language.com/playground) - [Squiggle playground](https://squiggle-language.com/playground)
- [Language basics](https://www.squiggle-language.com/docs/Features/Language) - [Language basics](https://www.squiggle-language.com/docs/Guides/Language)
- [Squiggle functions source of truth](https://www.squiggle-language.com/docs/Features/Functions) - [Squiggle functions source of truth](https://www.squiggle-language.com/docs/Guides/Functions)
- [Known bugs](https://www.squiggle-language.com/docs/Discussions/Bugs) - [Known bugs](https://www.squiggle-language.com/docs/Discussions/Bugs)
- [Original lesswrong sequence](https://www.lesswrong.com/s/rDe8QE5NvXcZYzgZ3) - [Original lesswrong sequence](https://www.lesswrong.com/s/rDe8QE5NvXcZYzgZ3)
- [Author your squiggle models as Observable notebooks](https://observablehq.com/@hazelfire/squiggle) - [Author your squiggle models as Observable notebooks](https://observablehq.com/@hazelfire/squiggle)
@ -21,10 +21,10 @@ _An estimation language_.
## Our deployments ## Our deployments
- **website/docs prod**: https://squiggle-language.com [![Netlify Status](https://api.netlify.com/api/v1/badges/2139af5c-671d-473d-a9f6-66c96077d8a1/deploy-status)](https://app.netlify.com/sites/squiggle-documentation/deploys) - **website/docs prod**: https://squiggle-language.com
- **website/docs staging**: https://develop--squiggle-documentation.netlify.app/ - **website/docs staging**: https://preview.squiggle-language.com
- **components storybook prod**: https://squiggle-components.netlify.app/ [![Netlify Status](https://api.netlify.com/api/v1/badges/b7f724aa-6b20-4d0e-bf86-3fcd1a3e9a70/deploy-status)](https://app.netlify.com/sites/squiggle-components/deploys) - **components storybook prod**: https://components.squiggle-language.com
- **components storybook staging**: https://develop--squiggle-components.netlify.app/ - **components storybook staging**: https://preview-components.squiggle-language.com
- **legacy (2020) playground**: https://playground.squiggle-language.com - **legacy (2020) playground**: https://playground.squiggle-language.com
## Packages ## Packages
@ -51,7 +51,25 @@ For any project in the repo, begin by running `yarn` in the top level
yarn yarn
``` ```
See `packages/*/README.md` to work with whatever project you're interested in. Then use `turbo` to build the specific packages or the entire monorepo:
```sh
turbo run build
```
Or:
```sh
turbo run build --filter=@quri/squiggle-components
```
You can also run specific npm scripts for the package you're working on. See `packages/*/README.md` for the details.
# NixOS users
This repository requires the use of bundled binaries from node_modules, which
are not linked statically. The easiest way to get them working is to enable
[nix-ld](https://github.com/Mic92/nix-ld).
# Contributing # Contributing

79
flake.lock Normal file
View File

@ -0,0 +1,79 @@
{
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gentype": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1661855866,
"narHash": "sha256-+q0OOTyaq8eOn9BOWdPOCtSDOISW4A59v3mq3JOZyug=",
"owner": "rescript-association",
"repo": "genType",
"rev": "6b5f164b4f6ced456019b7579a0ab7e0a86518ad",
"type": "github"
},
"original": {
"owner": "rescript-association",
"repo": "genType",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1661617163,
"narHash": "sha256-NN9Ky47j8ohgPhA9JZyfkYIbbAo6RJkGz+7h8/exVpE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0ba2543f8c855d7be8e90ef6c8dc89c1617e8a08",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-22.05",
"type": "indirect"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"gentype": "gentype",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

99
flake.nix Normal file
View File

@ -0,0 +1,99 @@
{
description = "Squiggle packages";
inputs = {
nixpkgs.url = "nixpkgs/nixos-22.05";
gentype = {
url = "github:rescript-association/genType";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, gentype, flake-utils }:
let
version = builtins.substring 0 8 self.lastModifiedDate;
overlays = [
(final: prev: {
# set the node version here
nodejs = prev.nodejs-18_x;
# The override is the only way to get it into mkYarnModules
})
];
commonFn = pkgs: {
buildInputs = with pkgs; [ nodejs yarn ];
prettier = with pkgs.nodePackages; [ prettier ];
which = [ pkgs.which ];
};
gentypeOutputFn = pkgs: gentype.outputs.packages.${pkgs.system}.default;
langFn = { pkgs, ... }:
# Probably doesn't work on i686-linux
import ./nix/squiggle-lang.nix {
inherit pkgs commonFn gentypeOutputFn;
};
componentsFn = { pkgs, ... }:
import ./nix/squiggle-components.nix { inherit pkgs commonFn langFn; };
websiteFn = { pkgs, ... }:
import ./nix/squiggle-website.nix {
inherit pkgs commonFn langFn componentsFn;
};
vscodeextFn = { pkgs, ... }:
import ./nix/squiggle-vscode.nix {
inherit pkgs commonFn langFn componentsFn;
};
cliFn = { pkgs, ... }:
import ./nix/squiggle-cli.nix {
inherit pkgs commonFn;
};
# local machines
localFlakeOutputs = { pkgs, ... }:
let
lang = langFn pkgs;
components = componentsFn pkgs;
website = websiteFn pkgs;
vscodeext = vscodeextFn pkgs;
cli = cliFn pkgs;
in {
# validating
checks = flake-utils.lib.flattenTree {
lang-lint = lang.lint;
lang-test = lang.test;
components-lint = components.lint;
docusaurus-lint = website.lint;
cli-lint = cli.lint;
};
# building
packages = flake-utils.lib.flattenTree {
default = components.build;
lang = lang.build;
lang-bundle = lang.bundle;
lang-test = lang.test;
components = components.build;
components-bundle = components.bundle;
# Lint
lang-lint = lang.lint;
components-lint = components.lint;
docusaurus-lint = website.lint;
vscode-lint = vscodeext.lint;
cli-lint = cli.lint;
};
# developing
devShells = let shellNix = import ./nix/shell.nix { inherit pkgs; };
in flake-utils.lib.flattenTree {
default = shellNix.all;
js = shellNix.just-js;
};
};
in flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = overlays;
};
in localFlakeOutputs pkgs);
}

1
nix/README.md Normal file
View File

@ -0,0 +1 @@
Visit `quantified-uncertainty.cachix.org` for information about how to add our binary cache to your local dev environment.

25
nix/shell.nix Normal file
View File

@ -0,0 +1,25 @@
{ pkgs }:
with pkgs;
let
js = [ yarn nodejs nodePackages.ts-node ];
rust = [
wasm-pack
cargo
rustup
pkg-config
libressl
rustfmt
wasmtime
binaryen
wasm-bindgen-cli
];
in {
all = mkShell {
name = "squiggle_yarn-wasm-devshell";
buildInputs = builtins.concatLists [ js rust [ nixfmt ] ];
};
just-js = mkShell {
name = "squiggle_yarn-devshell";
buildInputs = js ++ [ nixfmt ];
};
}

13
nix/squiggle-cli.nix Normal file
View File

@ -0,0 +1,13 @@
{ pkgs, commonFn }:
rec {
common = commonFn pkgs;
lint = pkgs.stdenv.mkDerivation {
name = "squiggle-cli-lint";
buildInputs = common.buildInputs ++ common.prettier;
src = ../packages/cli;
buildPhase = "prettier --check .";
installPhase = "mkdir -p $out";
};
}

View File

@ -0,0 +1,75 @@
{ pkgs, commonFn, langFn }:
rec {
common = commonFn pkgs;
lang = langFn pkgs;
componentsPackageJson = let
raw = pkgs.lib.importJSON ../packages/components/package.json;
modified =
pkgs.lib.recursiveUpdate raw { dependencies.react-dom = "^18.2.0"; };
packageJsonString = builtins.toJSON modified;
in pkgs.writeText "packages/components/patched-package.json"
packageJsonString;
yarn-source = pkgs.mkYarnPackage {
name = "squiggle-components_yarnsource";
buildInputs = common.buildInputs;
src = ../packages/components;
packageJSON = componentsPackageJson;
yarnLock = ../yarn.lock;
packageResolutions."@quri/squiggle-lang" = lang.build;
};
lint = pkgs.stdenv.mkDerivation {
name = "squiggle-components-lint";
src = ../packages/components;
buildInputs = common.buildInputs ++ common.prettier;
buildPhase = "yarn lint";
installPhase = "mkdir -p $out";
};
build = pkgs.stdenv.mkDerivation {
name = "squiggle-components-build";
src = yarn-source + "/libexec/@quri/squiggle-components";
buildInputs = common.buildInputs;
buildPhase = ''
cp -r node_modules/@quri/squiggle-lang deps/@quri
pushd deps/@quri/squiggle-components
yarn --offline build:cjs
yarn --offline build:css
popd
'';
installPhase = ''
mkdir -p $out
# annoying hack because permissions on transitive dependencies later on
mv deps/@quri/squiggle-components/node_modules deps/@quri/squiggle-components/NODE_MODULES
mv node_modules deps/@quri/squiggle-components
# patching .gitignore so flake keeps build artefacts
sed -i /dist/d deps/@quri/squiggle-components/.gitignore
cp -r deps/@quri/squiggle-components/. $out
'';
};
bundle = pkgs.stdenv.mkDerivation {
name = "squiggle-components-bundle";
src = yarn-source + "/libexec/@quri/squiggle-components";
buildInputs = common.buildInputs;
buildPhase = ''
cp -r node_modules/@quri/squiggle-lang deps/@quri
pushd deps/@quri/squiggle-components
yarn --offline bundle
popd
'';
installPhase = ''
mkdir -p $out
# annoying hack because permissions on transitive dependencies later on
mv deps/@quri/squiggle-components/node_modules deps/@quri/squiggle-components/NODE_MODULES
mv node_modules deps/@quri/squiggle-components
# patching .gitignore so flake keeps build artefacts
sed -i /dist/d deps/@quri/squiggle-components/.gitignore
cp -r deps/@quri/squiggle-components/. $out
'';
};
}

116
nix/squiggle-lang.nix Normal file
View File

@ -0,0 +1,116 @@
{ pkgs, commonFn, gentypeOutputFn }:
rec {
common = commonFn pkgs;
langPackageJson = let
raw = pkgs.lib.importJSON ../packages/squiggle-lang/package.json;
modified = pkgs.lib.recursiveUpdate raw {
devDependencies."@types/lodash" = "^4.14.167";
};
packageJsonString = builtins.toJSON modified;
in pkgs.writeText "packages/squiggle-lang/patched-package.json"
packageJsonString;
yarn-source = pkgs.mkYarnPackage {
name = "squiggle-lang_yarnsource";
src = ../packages/squiggle-lang;
packageJSON = langPackageJson;
yarnLock = ../yarn.lock;
pkgConfig = {
rescript = {
buildInputs = common.which
++ (if pkgs.system != "i686-linux" then [ pkgs.gcc_multi ] else [ ]);
postInstall = ''
echo "PATCHELF'ING RESCRIPT EXECUTABLES (INCL NINJA)"
# Patching interpreter for linux/*.exe's
THE_LD=$(patchelf --print-interpreter $(which mkdir))
patchelf --set-interpreter $THE_LD linux/*.exe && echo "- patched interpreter for linux/*.exe's"
# Replacing needed shared library for linux/ninja.exe
THE_SO=$(find /nix/store/*/lib64 -name libstdc++.so.6 | head -n 1)
patchelf --replace-needed libstdc++.so.6 $THE_SO linux/ninja.exe && echo "- replaced needed for linux/ninja.exe"
'';
};
gentype = {
postInstall = ''
mv gentype.exe ELFLESS-gentype.exe
cp ${gentypeOutputFn pkgs}/src/GenType.exe gentype.exe
'';
};
};
};
lint = pkgs.stdenv.mkDerivation {
name = "squiggle-lang-lint";
src = yarn-source + "/libexec/@quri/squiggle-lang/deps/@quri/squiggle-lang";
buildInputs = common.buildInputs ++ common.prettier;
buildPhase = ''
yarn lint:prettier
yarn lint:rescript
'';
installPhase = "mkdir -p $out";
};
build = pkgs.stdenv.mkDerivation {
name = "squiggle-lang-build";
# `peggy` is in the `node_modules` that's adjacent to `deps`.
src = yarn-source + "/libexec/@quri/squiggle-lang";
buildInputs = common.buildInputs;
buildPhase = ''
# so that the path to ppx doesn't need to be patched.
mv node_modules deps
pushd deps/@quri/squiggle-lang
yarn --offline build:peggy
yarn --offline build:rescript
yarn --offline build:typescript
# custom gitignore so that the flake keeps build artefacts
mv .gitignore GITIGNORE
sed -i /Reducer_Peggy_GeneratedParser.js/d GITIGNORE
sed -i /ReducerProject_IncludeParser.js/d GITIGNORE
sed -i /\*.bs.js/d GITIGNORE
sed -i /\*.gen.ts/d GITIGNORE
sed -i /\*.gen.tsx/d GITIGNORE
sed -i /\*.gen.js/d GITIGNORE
sed -i /helpers.js/d GITIGNORE
popd
'';
installPhase = ''
mkdir -p $out
# mkdir -p $out/node_modules
mv deps/@quri/squiggle-lang/GITIGNORE deps/@quri/squiggle-lang/.gitignore
# annoying hack because permissions on transitive dependencies later on
mv deps/@quri/squiggle-lang/node_modules deps/@quri/squiggle-lang/NODE_MODULES
mv deps/node_modules deps/@quri/squiggle-lang
# the proper install phase
cp -r deps/@quri/squiggle-lang/. $out
'';
};
test = pkgs.stdenv.mkDerivation {
name = "squiggle-lang-test";
src = build;
buildInputs = common.buildInputs;
buildPhase = ''
yarn --offline test
'';
installPhase = ''
mkdir -p $out
cp -r . $out
'';
};
bundle = pkgs.stdenv.mkDerivation {
name = "squiggle-lang-bundle";
src = test;
buildInputs = common.buildInputs;
buildPhase = ''
yarn --offline bundle
'';
installPhase = ''
mkdir -p $out
cp -r dist $out
cp *.json $out/dist
'';
};
}

24
nix/squiggle-vscode.nix Normal file
View File

@ -0,0 +1,24 @@
{ pkgs, commonFn, langFn, componentsFn }:
rec {
common = commonFn pkgs;
lang = langFn pkgs;
components = componentsFn pkgs;
yarn-source = pkgs.mkYarnPackage {
name = "squiggle-vscodeext_yarnsource";
src = ../packages/vscode-ext;
packageJson = ../packages/vscode-ext/package.json;
yarnLock = ../yarn.lock;
packageResolutions."@quri/squiggle-lang" = lang.build;
packageResolutions."@quri/squiggle-components" = components.build;
};
lint = pkgs.stdenv.mkDerivation {
name = "squiggle-vscode-lint";
buildInputs = common.buildInputs ++ common.prettier;
src =
../packages/vscode-ext; # yarn-source + "/libexec/vscode-squiggle/deps/vscode-squiggle";
buildPhase = "prettier --check .";
installPhase = "mkdir -p $out";
};
}

30
nix/squiggle-website.nix Normal file
View File

@ -0,0 +1,30 @@
{ pkgs, commonFn, langFn, componentsFn }:
rec {
common = commonFn pkgs;
lang = langFn pkgs;
components = componentsFn pkgs;
websitePackageJson = let
raw = pkgs.lib.importJSON ../packages/website/package.json;
modified = pkgs.lib.recursiveUpdate raw {
dependencies.postcss-import = "^14.1.0";
dependencies.tailwindcss = "^3.1.8";
};
packageJsonString = builtins.toJSON modified;
in pkgs.writeText "packages/website/patched-package.json" packageJsonString;
yarn-source = pkgs.mkYarnPackage {
name = "squiggle-website_yarnsource";
src = ../packages/website;
packageJSON = websitePackageJson;
yarnLock = ../yarn.lock;
packageResolutions."@quri/squiggle-lang" = lang.build;
packageResolutions."@quri/squiggle-components" = components.build;
};
lint = pkgs.stdenv.mkDerivation {
name = "squiggle-website-lint";
buildInputs = common.buildInputs ++ common.prettier;
src = ../packages/website;
buildPhase = "yarn lint";
installPhase = "mkdir -p $out";
};
}

View File

@ -1,18 +0,0 @@
#!/usr/bin/env bash
# This script is only relevant if you're rolling nixos.
# Esy (a bisect_ppx dependency/build tool) is borked on nixos without using an FHS shell. https://github.com/esy/esy/issues/858
# We need to patchelf rescript executables. https://github.com/NixOS/nixpkgs/issues/107375
set -x
fhsShellName="squiggle-development"
fhsShellDotNix="{pkgs ? import <nixpkgs> {} }: (pkgs.buildFHSUserEnv { name = \"${fhsShellName}\"; targetPkgs = pkgs: [pkgs.yarn]; runScript = \"yarn\"; }).env"
nix-shell - <<<"$fhsShellDotNix"
theLd=$(patchelf --print-interpreter $(which mkdir))
patchelf --set-interpreter $theLd ./node_modules/gentype/gentype.exe
patchelf --set-interpreter $theLd ./node_modules/rescript/linux/*.exe
patchelf --set-interpreter $theLd ./node_modules/bisect_ppx/ppx
patchelf --set-interpreter $theLd ./node_moduels/bisect_ppx/bisect-ppx-report
theSo=$(find /nix/store/*$fhsShellName*/lib64 -name libstdc++.so.6 | grep $fhsShellName | head -n 1)
patchelf --replace-needed libstdc++.so.6 $theSo ./node_modules/rescript/linux/ninja.exe

View File

@ -2,12 +2,11 @@
"private": true, "private": true,
"name": "squiggle", "name": "squiggle",
"scripts": { "scripts": {
"nodeclean": "rm -r node_modules && rm -r packages/*/node_modules", "nodeclean": "rm -r node_modules && rm -r packages/*/node_modules"
"format:all": "prettier --write . && cd packages/squiggle-lang && yarn format",
"lint:all": "prettier --check . && cd packages/squiggle-lang && yarn lint:rescript"
}, },
"devDependencies": { "devDependencies": {
"prettier": "^2.7.1" "prettier": "^2.7.1",
"turbo": "^1.5.5"
}, },
"workspaces": [ "workspaces": [
"packages/*" "packages/*"

View File

@ -20,3 +20,30 @@ Runs compilation in the current directory and all of its subdirectories.
### `npx squiggle-cli-experimental watch` ### `npx squiggle-cli-experimental watch`
Watches `.squiggleU` files in the current directory (and subdirectories) and rebuilds them when they are saved. Note that this will _not_ rebuild files when their dependencies are changed, just when they are changed directly. Watches `.squiggleU` files in the current directory (and subdirectories) and rebuilds them when they are saved. Note that this will _not_ rebuild files when their dependencies are changed, just when they are changed directly.
## Further instructions
The above requires having node, npm and npx. To install the first two, see [here](https://nodejs.org/en/), to install npx, run:
```
npm install -g npx
```
Alternatively, you can run the following without the need for npx:
```
npm install squiggle-cli-experimental
node node_modules/squiggle-cli-experimental/index.js compile
```
or you can add a script to your `package.json`, like:
```
...
scripts: {
"compile": "squiggle-cli-experimental compile"
}
...
```
This can be run with `npm run compile`. `npm` knows how to reach into the node_modules directly, so it's not necessary to specify that.

View File

@ -7,13 +7,15 @@
"bin": "index.js", "bin": "index.js",
"type": "module", "type": "module",
"scripts": { "scripts": {
"start": "node ." "start": "node .",
"lint": "prettier --check .",
"format": "prettier --write ."
}, },
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"chalk": "^5.0.1", "chalk": "^5.1.0",
"chokidar": "^3.5.3", "chokidar": "^3.5.3",
"commander": "^9.3.0", "commander": "^9.4.1",
"fs": "^0.0.1-security", "fs": "^0.0.1-security",
"glob": "^8.0.3", "glob": "^8.0.3",
"indent-string": "^5.0.0" "indent-string": "^5.0.0"

View File

@ -20,7 +20,7 @@ Add to `App.js`:
```jsx ```jsx
import { SquiggleEditor } from "@quri/squiggle-components"; import { SquiggleEditor } from "@quri/squiggle-components";
<SquiggleEditor <SquiggleEditor
initialSquiggleString="x = beta($alpha, 10); x + $shift" defaultCode="x = beta($alpha, 10); x + $shift"
jsImports={{ alpha: 3, shift: 20 }} jsImports={{ alpha: 3, shift: 20 }}
/>; />;
``` ```
@ -50,11 +50,10 @@ export function DynamicSquiggleChart({ squiggleString }) {
} else { } else {
return ( return (
<SquiggleChart <SquiggleChart
squiggleString={squiggleString} defaultCode={squiggleString}
width={445} width={445}
height={200} height={200}
showSummary={true} showSummary={true}
showTypes={true}
/> />
); );
} }

View File

@ -0,0 +1,6 @@
/** @type {import('ts-jest').JestConfigWithTsJest} */
module.exports = {
preset: "ts-jest",
setupFilesAfterEnv: ["<rootDir>/test/setup.js"],
testEnvironment: "jsdom",
};

View File

@ -1,8 +0,0 @@
[build]
base = "packages/components/"
command = "cd ../squiggle-lang && yarn build && cd ../components && yarn build"
publish = "storybook-static/"
ignore = "node -e 'process.exitCode = process.env.BRANCH.includes(\"dependabot\") ? 0 : 1' && git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF . ../squiggle-lang"
[build.environment]
NETLIFY_USE_YARN = "true"

View File

@ -1,63 +1,73 @@
{ {
"name": "@quri/squiggle-components", "name": "@quri/squiggle-components",
"version": "0.2.20", "version": "0.5.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@headlessui/react": "^1.6.5", "@floating-ui/react-dom": "^1.0.0",
"@floating-ui/react-dom-interactions": "^0.10.1",
"@headlessui/react": "^1.7.3",
"@heroicons/react": "^1.0.6", "@heroicons/react": "^1.0.6",
"@hookform/resolvers": "^2.9.1", "@hookform/resolvers": "^2.9.8",
"@quri/squiggle-lang": "^0.2.8", "@quri/squiggle-lang": "^0.5.0",
"@react-hook/size": "^2.1.2", "@react-hook/size": "^2.1.2",
"clsx": "^1.1.1", "@types/uuid": "^8.3.4",
"clsx": "^1.2.1",
"framer-motion": "^7.5.3",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"react": "^18.1.0", "react": "^18.1.0",
"react-ace": "^10.1.0", "react-ace": "^10.1.0",
"react-hook-form": "^7.32.2", "react-hook-form": "^7.37.0",
"react-use": "^17.4.0", "react-use": "^17.4.0",
"react-vega": "^7.5.1", "react-vega": "^7.6.0",
"uuid": "^9.0.0",
"vega": "^5.22.1", "vega": "^5.22.1",
"vega-embed": "^6.21.0", "vega-embed": "^6.21.0",
"vega-lite": "^5.2.0", "vega-lite": "^5.5.0",
"vscode-uri": "^3.0.3", "vscode-uri": "^3.0.6",
"yup": "^0.32.11" "yup": "^0.32.11"
}, },
"devDependencies": { "devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.17.12", "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
"@storybook/addon-actions": "^6.5.9", "@storybook/addon-actions": "^6.5.12",
"@storybook/addon-essentials": "^6.5.9", "@storybook/addon-essentials": "^6.5.12",
"@storybook/addon-links": "^6.5.9", "@storybook/addon-links": "^6.5.12",
"@storybook/builder-webpack5": "^6.5.9", "@storybook/builder-webpack5": "^6.5.12",
"@storybook/manager-webpack5": "^6.5.9", "@storybook/manager-webpack5": "^6.5.12",
"@storybook/node-logger": "^6.5.9", "@storybook/node-logger": "^6.5.9",
"@storybook/preset-create-react-app": "^4.1.2", "@storybook/preset-create-react-app": "^4.1.2",
"@storybook/react": "^6.5.9", "@storybook/react": "^6.5.12",
"@testing-library/jest-dom": "^5.16.4", "@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.3.0", "@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^14.2.1", "@testing-library/user-event": "^14.4.3",
"@types/jest": "^27.5.0", "@types/jest": "^27.5.0",
"@types/lodash": "^4.14.182", "@types/lodash": "^4.14.186",
"@types/node": "^18.0.0", "@types/node": "^18.8.3",
"@types/react": "^18.0.9", "@types/react": "^18.0.21",
"@types/react-dom": "^18.0.5", "@types/styled-components": "^5.1.26",
"@types/styled-components": "^5.1.24", "@types/uuid": "^8.3.4",
"@types/webpack": "^5.28.0", "@types/webpack": "^5.28.0",
"canvas": "^2.10.1",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"jest": "^29.0.3",
"jest-environment-jsdom": "^29.1.2",
"jsdom": "^20.0.1",
"mini-css-extract-plugin": "^2.6.1", "mini-css-extract-plugin": "^2.6.1",
"postcss-cli": "^9.1.0", "postcss-cli": "^10.0.0",
"postcss-import": "^14.1.0", "postcss-import": "^15.0.0",
"postcss-loader": "^7.0.0", "postcss-loader": "^7.0.1",
"postcss-nesting": "^10.2.0",
"react": "^18.1.0", "react": "^18.1.0",
"react-dom": "^18.2.0",
"react-scripts": "^5.0.1", "react-scripts": "^5.0.1",
"style-loader": "^3.3.1", "style-loader": "^3.3.1",
"tailwindcss": "^3.1.3", "tailwindcss": "^3.1.8",
"ts-loader": "^9.3.0", "ts-jest": "^29.0.3",
"tsconfig-paths-webpack-plugin": "^3.5.2", "ts-loader": "^9.4.1",
"typescript": "^4.7.4", "tsconfig-paths-webpack-plugin": "^4.0.0",
"web-vitals": "^2.1.4", "typescript": "^4.8.4",
"webpack": "^5.73.0", "web-vitals": "^3.0.3",
"webpack": "^5.74.0",
"webpack-cli": "^4.10.0", "webpack-cli": "^4.10.0",
"webpack-dev-server": "^4.9.2" "webpack-dev-server": "^4.11.1"
}, },
"peerDependencies": { "peerDependencies": {
"react": "^16.8.0 || ^17 || ^18", "react": "^16.8.0 || ^17 || ^18",
@ -65,7 +75,7 @@
}, },
"scripts": { "scripts": {
"start": "cross-env REACT_APP_FAST_REFRESH=false && start-storybook -p 6006 -s public", "start": "cross-env REACT_APP_FAST_REFRESH=false && start-storybook -p 6006 -s public",
"build:cjs": "tsc -b", "build:cjs": "rm -rf dist/src && rm -f dist/tsconfig.tsbuildinfo && tsc -b",
"build:css": "postcss ./src/styles/main.css -o ./dist/main.css", "build:css": "postcss ./src/styles/main.css -o ./dist/main.css",
"build:storybook": "build-storybook -s public", "build:storybook": "build-storybook -s public",
"build": "yarn run build:cjs && yarn run build:css && yarn run build:storybook", "build": "yarn run build:cjs && yarn run build:css && yarn run build:storybook",
@ -73,7 +83,10 @@
"all": "yarn bundle && yarn build", "all": "yarn bundle && yarn build",
"lint": "prettier --check .", "lint": "prettier --check .",
"format": "prettier --write .", "format": "prettier --write .",
"prepack": "yarn bundle && tsc -b" "prepack": "yarn run build:cjs && yarn run bundle",
"test": "jest",
"test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand",
"test:profile": "node --cpu-prof node_modules/.bin/jest --runInBand"
}, },
"eslintConfig": { "eslintConfig": {
"extends": [ "extends": [

View File

@ -24,13 +24,13 @@ export const Alert: React.FC<{
children, children,
}) => { }) => {
return ( return (
<div className={clsx("rounded-md p-4", backgroundColor)}> <div className={clsx("rounded-md p-4", backgroundColor)} role="status">
<div className="flex"> <div className="flex">
<Icon <Icon
className={clsx("h-5 w-5 flex-shrink-0", iconColor)} className={clsx("h-5 w-5 flex-shrink-0", iconColor)}
aria-hidden="true" aria-hidden="true"
/> />
<div className="ml-3"> <div className="ml-3 grow">
<header className={clsx("text-sm font-medium", headingColor)}> <header className={clsx("text-sm font-medium", headingColor)}>
{heading} {heading}
</header> </header>

View File

@ -1,31 +1,44 @@
import _ from "lodash"; import _ from "lodash";
import React, { FC, useMemo } from "react"; import React, { FC, useMemo, useRef } from "react";
import AceEditor from "react-ace"; import AceEditor from "react-ace";
import "ace-builds/src-noconflict/mode-golang"; import "ace-builds/src-noconflict/mode-golang";
import "ace-builds/src-noconflict/theme-github"; import "ace-builds/src-noconflict/theme-github";
import { SqLocation } from "@quri/squiggle-lang";
interface CodeEditorProps { interface CodeEditorProps {
value: string; value: string;
onChange: (value: string) => void; onChange: (value: string) => void;
onSubmit?: () => void;
oneLine?: boolean; oneLine?: boolean;
width?: number; width?: number;
height: number; height: number;
showGutter?: boolean; showGutter?: boolean;
errorLocations?: SqLocation[];
} }
export const CodeEditor: FC<CodeEditorProps> = ({ export const CodeEditor: FC<CodeEditorProps> = ({
value, value,
onChange, onChange,
onSubmit,
height,
oneLine = false, oneLine = false,
showGutter = false, showGutter = false,
height, errorLocations = [],
}) => { }) => {
const lineCount = value.split("\n").length; const lineCount = value.split("\n").length;
const id = useMemo(() => _.uniqueId(), []); const id = useMemo(() => _.uniqueId(), []);
// this is necessary because AceEditor binds commands on mount, see https://github.com/securingsincity/react-ace/issues/684
const onSubmitRef = useRef<typeof onSubmit | null>(null);
onSubmitRef.current = onSubmit;
const editorEl = useRef<AceEditor | null>(null);
return ( return (
<AceEditor <AceEditor
ref={editorEl}
value={value} value={value}
mode="golang" mode="golang"
theme="github" theme="github"
@ -42,10 +55,22 @@ export const CodeEditor: FC<CodeEditorProps> = ({
editorProps={{ editorProps={{
$blockScrolling: true, $blockScrolling: true,
}} }}
setOptions={{ setOptions={{}}
enableBasicAutocompletion: false, commands={[
enableLiveAutocompletion: false, {
}} name: "submit",
bindKey: { mac: "Cmd-Enter", win: "Ctrl-Enter" },
exec: () => onSubmitRef.current?.(),
},
]}
markers={errorLocations?.map((location) => ({
startRow: location.start.line - 1,
startCol: location.start.column - 1,
endRow: location.end.line - 1,
endCol: location.end.column - 1,
className: "ace-error-marker",
type: "text",
}))}
/> />
); );
}; };

View File

@ -1,120 +1,106 @@
import * as React from "react"; import * as React from "react";
import { import {
Distribution, SqDistribution,
result, result,
distributionError, SqDistributionError,
distributionErrorToString, resultMap,
SqRecord,
environment,
SqDistributionTag,
} from "@quri/squiggle-lang"; } from "@quri/squiggle-lang";
import { Vega, VisualizationSpec } from "react-vega"; import { Vega } from "react-vega";
import * as chartSpecification from "../vega-specs/spec-distributions.json";
import { ErrorAlert } from "./Alert"; import { ErrorAlert } from "./Alert";
import { useSize } from "react-use"; import { useSize } from "react-use";
import clsx from "clsx";
import { import {
linearXScale, buildVegaSpec,
logXScale, DistributionChartSpecOptions,
linearYScale, } from "../lib/distributionSpecBuilder";
expYScale,
} from "./DistributionVegaScales";
import { NumberShower } from "./NumberShower"; import { NumberShower } from "./NumberShower";
import { Plot, parsePlot } from "../lib/plotParser";
import { flattenResult } from "../lib/utility";
import { hasMassBelowZero } from "../lib/distributionUtils";
export type DistributionPlottingSettings = { export type DistributionPlottingSettings = {
/** Whether to show a summary of means, stdev, percentiles etc */ /** Whether to show a summary of means, stdev, percentiles etc */
showSummary: boolean; showSummary: boolean;
/** Whether to show the user graph controls (scale etc) */ actions?: boolean;
showControls: boolean; } & DistributionChartSpecOptions;
/** Set the x scale to be logarithmic by deault */
logX: boolean;
/** Set the y scale to be exponential by deault */
expY: boolean;
truncateToNthci: number;
};
export type DistributionChartProps = { export type DistributionChartProps = {
distribution: Distribution; plot: Plot;
environment: environment;
width?: number; width?: number;
height: number; height: number;
xAxisType?: "number" | "dateTime";
} & DistributionPlottingSettings; } & DistributionPlottingSettings;
export const DistributionChart: React.FC<DistributionChartProps> = ({ export function defaultPlot(distribution: SqDistribution): Plot {
distribution, return { distributions: [{ name: "default", distribution }] };
height, }
showSummary,
width,
showControls,
logX,
expY,
truncateToNthci,
}) => {
const [isLogX, setLogX] = React.useState(logX);
const [isExpY, setExpY] = React.useState(expY);
React.useEffect(() => setLogX(logX), [logX]); export function makePlot(record: SqRecord): Plot | void {
React.useEffect(() => setExpY(expY), [expY]); const plotResult = parsePlot(record);
if (plotResult.tag === "Ok") {
return plotResult.value;
}
}
export const DistributionChart: React.FC<DistributionChartProps> = (props) => {
const {
plot,
environment,
height,
showSummary,
width,
logX,
actions = false,
} = props;
const [sized] = useSize((size) => { const [sized] = useSize((size) => {
const delta = truncateToNthci / 100 / 2; const shapes = flattenResult(
if (truncateToNthci <= 0 || truncateToNthci > 100) { plot.distributions.map((x) =>
return ( resultMap(x.distribution.pointSet(environment), (pointSet) => ({
<ErrorAlert heading="Confidence interval error"> name: x.name,
{"Confidence interval must be between 0 and 100"} // color: x.color, // not supported yet
</ErrorAlert> ...pointSet.asShape(),
); }))
} )
const pMinwrapped = distribution.inv(0.5 - delta); );
const pMaxwrapped = distribution.inv(0.5 + delta);
if (pMinwrapped.tag == "Error") {
return (
<ErrorAlert heading="Distribution Calculation Error">
{distributionErrorToString(pMinwrapped.value)}
</ErrorAlert>
);
} else if (pMaxwrapped.tag == "Error") {
return (
<ErrorAlert heading="Distribution Calculation Error">
{distributionErrorToString(pMaxwrapped.value)}
</ErrorAlert>
);
}
const pMin = pMinwrapped.value;
const pMax = pMaxwrapped.value;
const truncatedDistributionWrapper = distribution.truncate(pMin, pMax); if (shapes.tag === "Error") {
if (truncatedDistributionWrapper.tag == "Error") {
return (
<ErrorAlert heading="Distribution Truncation For Display Error">
{distributionErrorToString(truncatedDistributionWrapper.value)}
</ErrorAlert>
);
}
const truncatedDistribution = truncatedDistributionWrapper.value;
const shape = distribution.pointSet();
const shapeTruncated = truncatedDistribution.pointSet(); // distribution.pointSet();
if (shapeTruncated.tag === "Error") {
return ( return (
<ErrorAlert heading="Distribution Error"> <ErrorAlert heading="Distribution Error">
{distributionErrorToString(shapeTruncated.value)} {shapes.value.toString()}
</ErrorAlert> </ErrorAlert>
); );
} }
if (shape.tag === "Error") { // if this is a sample set, include the samples
return ( const samples: number[] = [];
<ErrorAlert heading="Distribution Error"> for (const { distribution } of plot?.distributions) {
{distributionErrorToString(shape.value)} if (distribution.tag === SqDistributionTag.SampleSet) {
</ErrorAlert> samples.push(...distribution.value());
); }
} }
const massBelow0 = const domain = shapes.value.flatMap((shape) =>
shape.value.continuous.some((x) => x.x <= 0) || shape.discrete.concat(shape.continuous)
shape.value.discrete.some((x) => x.x <= 0); );
const spec = buildVegaSpec(isLogX, isExpY);
let widthProp = width ? width : size.width; const spec = buildVegaSpec({
...props,
minX: props.minX ?? Math.min(...domain.map((x) => x.x)),
maxX: props.minX ?? Math.max(...domain.map((x) => x.x)),
maxY: Math.max(...domain.map((x) => x.y)),
});
// I think size.width is sometimes not finite due to the component not being in a visible context
// This occurs during testing
let widthProp = width
? width
: Number.isFinite(size.width)
? size.width
: 400;
if (widthProp < 20) { if (widthProp < 20) {
console.warn( console.warn(
`Width of Distribution is set to ${widthProp}, which is too small` `Width of Distribution is set to ${widthProp}, which is too small`
@ -122,94 +108,37 @@ export const DistributionChart: React.FC<DistributionChartProps> = ({
widthProp = 20; widthProp = 20;
} }
const vegaData = { data: shapes.value, samples };
return ( return (
<div style={{ width: widthProp }}> <div style={{ width: widthProp }}>
{!(isLogX && massBelow0) ? ( {logX && shapes.value.some(hasMassBelowZero) ? (
<Vega
spec={spec}
data={
truncateToNthci != 100
? {
con: shapeTruncated.value.continuous,
dis: shapeTruncated.value.discrete,
}
: { con: shape.value.continuous, dis: shape.value.discrete }
}
width={widthProp - 10}
height={height}
actions={false}
/>
) : (
<ErrorAlert heading="Log Domain Error"> <ErrorAlert heading="Log Domain Error">
Cannot graph distribution with negative values on logarithmic scale. Cannot graph distribution with negative values on logarithmic scale.
</ErrorAlert> </ErrorAlert>
) : (
<Vega
spec={spec}
data={vegaData}
width={widthProp - 10}
height={height}
actions={actions}
/>
)} )}
<div className="flex justify-center"> <div className="flex justify-center">
{showSummary && <SummaryTable distribution={distribution} />} {showSummary && plot.distributions.length === 1 && (
</div> <SummaryTable
{showControls && ( distribution={plot.distributions[0].distribution}
<div> environment={environment}
<CheckBox
label="Log X scale"
value={isLogX}
onChange={setLogX}
// Check whether we should disable the checkbox
{...(massBelow0
? {
disabled: true,
tooltip:
"Your distribution has mass lower than or equal to 0. Log only works on strictly positive values.",
}
: {})}
/> />
<CheckBox label="Exp Y scale" value={isExpY} onChange={setExpY} /> )}
</div> </div>
)}
</div> </div>
); );
}); });
return sized; return sized;
}; };
function buildVegaSpec(isLogX: boolean, isExpY: boolean): VisualizationSpec {
return {
...chartSpecification,
scales: [
isLogX ? logXScale : linearXScale,
isExpY ? expYScale : linearYScale,
],
} as VisualizationSpec;
}
interface CheckBoxProps {
label: string;
onChange: (x: boolean) => void;
value: boolean;
disabled?: boolean;
tooltip?: string;
}
export const CheckBox: React.FC<CheckBoxProps> = ({
label,
onChange,
value,
disabled = false,
tooltip,
}) => {
return (
<span title={tooltip}>
<input
type="checkbox"
checked={value}
onChange={() => onChange(!value)}
disabled={disabled}
className="form-checkbox"
/>
<label className={clsx(disabled && "text-slate-400")}> {label}</label>
</span>
);
};
const TableHeadCell: React.FC<{ children: React.ReactNode }> = ({ const TableHeadCell: React.FC<{ children: React.ReactNode }> = ({
children, children,
}) => ( }) => (
@ -225,32 +154,36 @@ const Cell: React.FC<{ children: React.ReactNode }> = ({ children }) => (
); );
type SummaryTableProps = { type SummaryTableProps = {
distribution: Distribution; distribution: SqDistribution;
environment: environment;
}; };
const SummaryTable: React.FC<SummaryTableProps> = ({ distribution }) => { const SummaryTable: React.FC<SummaryTableProps> = ({
const mean = distribution.mean(); distribution,
const stdev = distribution.stdev(); environment,
const p5 = distribution.inv(0.05); }) => {
const p10 = distribution.inv(0.1); const mean = distribution.mean(environment);
const p25 = distribution.inv(0.25); const stdev = distribution.stdev(environment);
const p50 = distribution.inv(0.5); const p5 = distribution.inv(environment, 0.05);
const p75 = distribution.inv(0.75); const p10 = distribution.inv(environment, 0.1);
const p90 = distribution.inv(0.9); const p25 = distribution.inv(environment, 0.25);
const p95 = distribution.inv(0.95); const p50 = distribution.inv(environment, 0.5);
const p75 = distribution.inv(environment, 0.75);
const p90 = distribution.inv(environment, 0.9);
const p95 = distribution.inv(environment, 0.95);
const hasResult = (x: result<number, distributionError>): boolean => const hasResult = (x: result<number, SqDistributionError>): boolean =>
x.tag === "Ok"; x.tag === "Ok";
const unwrapResult = ( const unwrapResult = (
x: result<number, distributionError> x: result<number, SqDistributionError>
): React.ReactNode => { ): React.ReactNode => {
if (x.tag === "Ok") { if (x.tag === "Ok") {
return <NumberShower number={x.value} />; return <NumberShower number={x.value} />;
} else { } else {
return ( return (
<ErrorAlert heading="Distribution Error"> <ErrorAlert heading="Distribution Error">
{distributionErrorToString(x.value)} {x.value.toString()}
</ErrorAlert> </ErrorAlert>
); );
} }

View File

@ -1,9 +1,15 @@
import * as React from "react"; import * as React from "react";
import { lambdaValue, environment, runForeign } from "@quri/squiggle-lang"; import {
SqLambda,
environment,
SqValueTag,
SqError,
} from "@quri/squiggle-lang";
import { FunctionChart1Dist } from "./FunctionChart1Dist"; import { FunctionChart1Dist } from "./FunctionChart1Dist";
import { FunctionChart1Number } from "./FunctionChart1Number"; import { FunctionChart1Number } from "./FunctionChart1Number";
import { DistributionPlottingSettings } from "./DistributionChart"; import { DistributionPlottingSettings } from "./DistributionChart";
import { ErrorAlert, MessageAlert } from "./Alert"; import { MessageAlert } from "./Alert";
import { SquiggleErrorAlert } from "./SquiggleErrorAlert";
export type FunctionChartSettings = { export type FunctionChartSettings = {
start: number; start: number;
@ -12,13 +18,32 @@ export type FunctionChartSettings = {
}; };
interface FunctionChartProps { interface FunctionChartProps {
fn: lambdaValue; fn: SqLambda;
chartSettings: FunctionChartSettings; chartSettings: FunctionChartSettings;
distributionPlotSettings: DistributionPlottingSettings; distributionPlotSettings: DistributionPlottingSettings;
environment: environment; environment: environment;
height: number; height: number;
} }
const FunctionCallErrorAlert = ({ error }: { error: SqError }) => {
const [expanded, setExpanded] = React.useState(false);
if (expanded) {
}
return (
<MessageAlert heading="Function Display Failed">
<div className="space-y-2">
<span
className="underline decoration-dashed cursor-pointer"
onClick={() => setExpanded(!expanded)}
>
{expanded ? "Hide" : "Show"} error details
</span>
{expanded ? <SquiggleErrorAlert error={error} /> : null}
</div>
</MessageAlert>
);
};
export const FunctionChart: React.FC<FunctionChartProps> = ({ export const FunctionChart: React.FC<FunctionChartProps> = ({
fn, fn,
chartSettings, chartSettings,
@ -26,15 +51,16 @@ export const FunctionChart: React.FC<FunctionChartProps> = ({
distributionPlotSettings, distributionPlotSettings,
height, height,
}) => { }) => {
if (fn.parameters.length > 1) { console.log(fn.parameters().length);
if (fn.parameters().length !== 1) {
return ( return (
<MessageAlert heading="Function Display Not Supported"> <MessageAlert heading="Function Display Not Supported">
Only functions with one parameter are displayed. Only functions with one parameter are displayed.
</MessageAlert> </MessageAlert>
); );
} }
const result1 = runForeign(fn, [chartSettings.start], environment); const result1 = fn.call([chartSettings.start]);
const result2 = runForeign(fn, [chartSettings.stop], environment); const result2 = fn.call([chartSettings.stop]);
const getValidResult = () => { const getValidResult = () => {
if (result1.tag === "Ok") { if (result1.tag === "Ok") {
return result1; return result1;
@ -45,11 +71,13 @@ export const FunctionChart: React.FC<FunctionChartProps> = ({
} }
}; };
const validResult = getValidResult(); const validResult = getValidResult();
const resultType =
validResult.tag === "Ok" ? validResult.value.tag : ("Error" as const);
switch (resultType) { if (validResult.tag === "Error") {
case "distribution": return <FunctionCallErrorAlert error={validResult.value} />;
}
switch (validResult.value.tag) {
case SqValueTag.Distribution:
return ( return (
<FunctionChart1Dist <FunctionChart1Dist
fn={fn} fn={fn}
@ -59,7 +87,7 @@ export const FunctionChart: React.FC<FunctionChartProps> = ({
distributionPlotSettings={distributionPlotSettings} distributionPlotSettings={distributionPlotSettings}
/> />
); );
case "number": case SqValueTag.Number:
return ( return (
<FunctionChart1Number <FunctionChart1Number
fn={fn} fn={fn}
@ -68,15 +96,11 @@ export const FunctionChart: React.FC<FunctionChartProps> = ({
height={height} height={height}
/> />
); );
case "Error":
return (
<ErrorAlert heading="Error">The function failed to be run</ErrorAlert>
);
default: default:
return ( return (
<MessageAlert heading="Function Display Not Supported"> <MessageAlert heading="Function Display Not Supported">
There is no function visualization for this type of output:{" "} There is no function visualization for this type of output:{" "}
<span className="font-bold">{resultType}</span> <span className="font-bold">{validResult.value.tag}</span>
</MessageAlert> </MessageAlert>
); );
} }

View File

@ -2,20 +2,20 @@ import * as React from "react";
import _ from "lodash"; import _ from "lodash";
import type { Spec } from "vega"; import type { Spec } from "vega";
import { import {
Distribution, SqDistribution,
result, result,
lambdaValue, SqLambda,
environment, environment,
runForeign, SqError,
squiggleExpression, SqValue,
errorValue, SqValueTag,
errorValueToString,
} from "@quri/squiggle-lang"; } from "@quri/squiggle-lang";
import { createClassFromSpec } from "react-vega"; import { createClassFromSpec } from "react-vega";
import * as percentilesSpec from "../vega-specs/spec-percentiles.json"; import * as percentilesSpec from "../vega-specs/spec-percentiles.json";
import { import {
DistributionChart, DistributionChart,
DistributionPlottingSettings, DistributionPlottingSettings,
defaultPlot,
} from "./DistributionChart"; } from "./DistributionChart";
import { NumberShower } from "./NumberShower"; import { NumberShower } from "./NumberShower";
import { ErrorAlert } from "./Alert"; import { ErrorAlert } from "./Alert";
@ -45,7 +45,7 @@ export type FunctionChartSettings = {
}; };
interface FunctionChart1DistProps { interface FunctionChart1DistProps {
fn: lambdaValue; fn: SqLambda;
chartSettings: FunctionChartSettings; chartSettings: FunctionChartSettings;
distributionPlotSettings: DistributionPlottingSettings; distributionPlotSettings: DistributionPlottingSettings;
environment: environment; environment: environment;
@ -76,9 +76,17 @@ type errors = _.Dictionary<
}[] }[]
>; >;
type point = { x: number; value: result<Distribution, string> }; type point = { x: number; value: result<SqDistribution, string> };
let getPercentiles = ({ chartSettings, fn, environment }) => { let getPercentiles = ({
chartSettings,
fn,
environment,
}: {
chartSettings: FunctionChartSettings;
fn: SqLambda;
environment: environment;
}) => {
let chartPointsToRender = _rangeByCount( let chartPointsToRender = _rangeByCount(
chartSettings.start, chartSettings.start,
chartSettings.stop, chartSettings.stop,
@ -86,9 +94,9 @@ let getPercentiles = ({ chartSettings, fn, environment }) => {
); );
let chartPointsData: point[] = chartPointsToRender.map((x) => { let chartPointsData: point[] = chartPointsToRender.map((x) => {
let result = runForeign(fn, [x], environment); let result = fn.call([x]);
if (result.tag === "Ok") { if (result.tag === "Ok") {
if (result.value.tag == "distribution") { if (result.value.tag === SqValueTag.Distribution) {
return { x, value: { tag: "Ok", value: result.value.value } }; return { x, value: { tag: "Ok", value: result.value.value } };
} else { } else {
return { return {
@ -103,13 +111,13 @@ let getPercentiles = ({ chartSettings, fn, environment }) => {
} else { } else {
return { return {
x, x,
value: { tag: "Error", value: errorValueToString(result.value) }, value: { tag: "Error", value: result.value.toString() },
}; };
} }
}); });
let initialPartition: [ let initialPartition: [
{ x: number; value: Distribution }[], { x: number; value: SqDistribution }[],
{ x: number; value: string }[] { x: number; value: string }[]
] = [[], []]; ] = [[], []];
@ -125,26 +133,23 @@ let getPercentiles = ({ chartSettings, fn, environment }) => {
let groupedErrors: errors = _.groupBy(errors, (x) => x.value); let groupedErrors: errors = _.groupBy(errors, (x) => x.value);
let percentiles: percentiles = functionImage.map(({ x, value }) => { let percentiles: percentiles = functionImage.map(({ x, value }) => {
// We convert it to to a pointSet distribution first, so that in case its a sample set const res = {
// distribution, it doesn't internally convert it to a pointSet distribution for every
// single inv() call.
let toPointSet: Distribution = unwrap(value.toPointSet());
return {
x: x, x: x,
p1: unwrap(toPointSet.inv(0.01)), p1: unwrap(value.inv(environment, 0.01)),
p5: unwrap(toPointSet.inv(0.05)), p5: unwrap(value.inv(environment, 0.05)),
p10: unwrap(toPointSet.inv(0.1)), p10: unwrap(value.inv(environment, 0.1)),
p20: unwrap(toPointSet.inv(0.2)), p20: unwrap(value.inv(environment, 0.2)),
p30: unwrap(toPointSet.inv(0.3)), p30: unwrap(value.inv(environment, 0.3)),
p40: unwrap(toPointSet.inv(0.4)), p40: unwrap(value.inv(environment, 0.4)),
p50: unwrap(toPointSet.inv(0.5)), p50: unwrap(value.inv(environment, 0.5)),
p60: unwrap(toPointSet.inv(0.6)), p60: unwrap(value.inv(environment, 0.6)),
p70: unwrap(toPointSet.inv(0.7)), p70: unwrap(value.inv(environment, 0.7)),
p80: unwrap(toPointSet.inv(0.8)), p80: unwrap(value.inv(environment, 0.8)),
p90: unwrap(toPointSet.inv(0.9)), p90: unwrap(value.inv(environment, 0.9)),
p95: unwrap(toPointSet.inv(0.95)), p95: unwrap(value.inv(environment, 0.95)),
p99: unwrap(toPointSet.inv(0.99)), p99: unwrap(value.inv(environment, 0.99)),
}; };
return res;
}); });
return { percentiles, errors: groupedErrors }; return { percentiles, errors: groupedErrors };
@ -165,19 +170,22 @@ export const FunctionChart1Dist: React.FC<FunctionChart1DistProps> = ({
setMouseOverlay(NaN); setMouseOverlay(NaN);
} }
const signalListeners = { mousemove: handleHover, mouseout: handleOut }; const signalListeners = { mousemove: handleHover, mouseout: handleOut };
let mouseItem: result<squiggleExpression, errorValue> = !!mouseOverlay
? runForeign(fn, [mouseOverlay], environment) //TODO: This custom error handling is a bit hacky and should be improved.
let mouseItem: result<SqValue, SqError> = !!mouseOverlay
? fn.call([mouseOverlay])
: { : {
tag: "Error", tag: "Error",
value: { value: SqError.createOtherError(
tag: "REExpectedType", "Hover x-coordinate returned NaN. Expected a number."
value: "Hover x-coordinate returned NaN. Expected a number.", ),
},
}; };
let showChart = let showChart =
mouseItem.tag === "Ok" && mouseItem.value.tag === "distribution" ? ( mouseItem.tag === "Ok" &&
mouseItem.value.tag === SqValueTag.Distribution ? (
<DistributionChart <DistributionChart
distribution={mouseItem.value.value} plot={defaultPlot(mouseItem.value.value)}
environment={environment}
width={400} width={400}
height={50} height={50}
{...distributionPlotSettings} {...distributionPlotSettings}

View File

@ -1,16 +1,11 @@
import * as React from "react"; import * as React from "react";
import _ from "lodash"; import _ from "lodash";
import type { Spec } from "vega"; import type { Spec } from "vega";
import { import { result, SqLambda, environment, SqValueTag } from "@quri/squiggle-lang";
result,
lambdaValue,
environment,
runForeign,
errorValueToString,
} from "@quri/squiggle-lang";
import { createClassFromSpec } from "react-vega"; import { createClassFromSpec } from "react-vega";
import * as lineChartSpec from "../vega-specs/spec-line-chart.json"; import * as lineChartSpec from "../vega-specs/spec-line-chart.json";
import { ErrorAlert } from "./Alert"; import { ErrorAlert } from "./Alert";
import { squiggleValueTag } from "@quri/squiggle-lang/src/rescript/ForTS/ForTS_SquiggleValue/ForTS_SquiggleValue_tag";
let SquiggleLineChart = createClassFromSpec({ let SquiggleLineChart = createClassFromSpec({
spec: lineChartSpec as Spec, spec: lineChartSpec as Spec,
@ -30,7 +25,7 @@ export type FunctionChartSettings = {
}; };
interface FunctionChart1NumberProps { interface FunctionChart1NumberProps {
fn: lambdaValue; fn: SqLambda;
chartSettings: FunctionChartSettings; chartSettings: FunctionChartSettings;
environment: environment; environment: environment;
height: number; height: number;
@ -38,20 +33,25 @@ interface FunctionChart1NumberProps {
type point = { x: number; value: result<number, string> }; type point = { x: number; value: result<number, string> };
let getFunctionImage = ({ chartSettings, fn, environment }) => { let getFunctionImage = ({
//We adjust the count, because the count is made for distributions, which are much more expensive to estimate chartSettings,
let adjustedCount = chartSettings.count * 20; fn,
environment,
}: {
chartSettings: FunctionChartSettings;
fn: SqLambda;
environment: environment;
}) => {
let chartPointsToRender = _rangeByCount( let chartPointsToRender = _rangeByCount(
chartSettings.start, chartSettings.start,
chartSettings.stop, chartSettings.stop,
adjustedCount chartSettings.count
); );
let chartPointsData: point[] = chartPointsToRender.map((x) => { let chartPointsData: point[] = chartPointsToRender.map((x) => {
let result = runForeign(fn, [x], environment); let result = fn.call([x]);
if (result.tag === "Ok") { if (result.tag === "Ok") {
if (result.value.tag == "number") { if (result.value.tag === SqValueTag.Number) {
return { x, value: { tag: "Ok", value: result.value.value } }; return { x, value: { tag: "Ok", value: result.value.value } };
} else { } else {
return { return {
@ -65,7 +65,7 @@ let getFunctionImage = ({ chartSettings, fn, environment }) => {
} else { } else {
return { return {
x, x,
value: { tag: "Error", value: errorValueToString(result.value) }, value: { tag: "Error", value: result.value.toString() },
}; };
} }
}); });

View File

@ -1,98 +1,158 @@
import * as React from "react"; import * as React from "react";
import { import {
squiggleExpression, SqValue,
bindings,
environment, environment,
jsImports, SqProject,
defaultImports,
defaultBindings,
defaultEnvironment, defaultEnvironment,
} from "@quri/squiggle-lang"; } from "@quri/squiggle-lang";
import { FunctionChartSettings } from "./FunctionChart";
import { useSquiggle } from "../lib/hooks"; import { useSquiggle } from "../lib/hooks";
import { SquiggleErrorAlert } from "./SquiggleErrorAlert"; import { SquiggleViewer } from "./SquiggleViewer";
import { SquiggleItem } from "./SquiggleItem"; import { JsImports } from "../lib/jsImports";
import { getValueToRender } from "../lib/utility";
export interface SquiggleChartProps { export type SquiggleChartProps = {
/** The input string for squiggle */ /** The input string for squiggle */
squiggleString?: string; code: string;
/** Allows to re-run the code if code hasn't changed */
executionId?: number;
/** If the output requires monte carlo sampling, the amount of samples */ /** If the output requires monte carlo sampling, the amount of samples */
sampleCount?: number; sampleCount?: number;
/** The amount of points returned to draw the distribution */ /** If the result is a function, where the function domain starts */
environment?: environment; diagramStart?: number;
/** If the result is a function, where the function starts, ends and the amount of stops */ /** If the result is a function, where the function domain ends */
chartSettings?: FunctionChartSettings; diagramStop?: number;
/** If the result is a function, the amount of stops sampled */
diagramCount?: number;
/** When the squiggle code gets reevaluated */ /** When the squiggle code gets reevaluated */
onChange?(expr: squiggleExpression | undefined): void; onChange?(expr: SqValue | undefined, sourceName: string): void;
/** CSS width of the element */ /** CSS width of the element */
width?: number; width?: number;
height?: number; height?: number;
/** Bindings of previous variables declared */
bindings?: bindings;
/** JS imported parameters */ /** JS imported parameters */
jsImports?: jsImports; jsImports?: JsImports;
/** Whether to show a summary of the distribution */ /** Whether to show a summary of the distribution */
showSummary?: boolean; showSummary?: boolean;
/** Whether to show type information about returns, default false */
showTypes?: boolean;
/** Whether to show graph controls (scale etc)*/
showControls?: boolean;
/** Set the x scale to be logarithmic by deault */ /** Set the x scale to be logarithmic by deault */
logX?: boolean; logX?: boolean;
/** Set the y scale to be exponential by deault */ /** Set the y scale to be exponential by deault */
expY?: boolean; expY?: boolean;
/** Display 94% interval; useful for thin lognormals */ /** How to format numbers on the x axis */
truncateToNthci?: number; tickFormat?: string;
} /** Title of the graphed distribution */
title?: string;
/** Color of the graphed distribution */
color?: string;
/** Specify the lower bound of the x scale */
minX?: number;
/** Specify the upper bound of the x scale */
maxX?: number;
/** Whether the x-axis should be dates or numbers */
xAxisType?: "number" | "dateTime";
/** Whether to show vega actions to the user, so they can copy the chart spec */
distributionChartActions?: boolean;
enableLocalSettings?: boolean;
} & (StandaloneExecutionProps | ProjectExecutionProps);
// Props needed for a standalone execution
type StandaloneExecutionProps = {
project?: undefined;
continues?: undefined;
/** The amount of points returned to draw the distribution, not needed if using a project */
environment?: environment;
};
// Props needed when executing inside a project.
type ProjectExecutionProps = {
environment?: undefined;
/** The project that this execution is part of */
project: SqProject;
/** What other squiggle sources from the project to continue. Default [] */
continues?: string[];
};
const defaultOnChange = () => {}; const defaultOnChange = () => {};
const defaultChartSettings = { start: 0, stop: 10, count: 20 }; const defaultImports: JsImports = {};
export const SquiggleChart: React.FC<SquiggleChartProps> = ({ export const splitSquiggleChartSettings = (props: SquiggleChartProps) => {
squiggleString = "", const {
environment, showSummary = false,
onChange = defaultOnChange, // defaultOnChange must be constant, don't move its definition here logX = false,
height = 200, expY = false,
bindings = defaultBindings, diagramStart = 0,
jsImports = defaultImports, diagramStop = 10,
showSummary = false, diagramCount = 20,
width, tickFormat,
showTypes = false, minX,
showControls = false, maxX,
logX = false, color,
expY = false, title,
truncateToNthci = 100, xAxisType = "number",
chartSettings = defaultChartSettings, distributionChartActions,
}) => { } = props;
const { result } = useSquiggle({
code: squiggleString,
bindings,
environment,
jsImports,
onChange,
});
if (result.tag !== "Ok") { const distributionPlotSettings = {
return <SquiggleErrorAlert error={result.value} />;
}
let distributionPlotSettings = {
showControls,
showSummary, showSummary,
logX, logX,
expY, expY,
truncateToNthci, format: tickFormat,
minX,
maxX,
color,
title,
xAxisType,
actions: distributionChartActions,
}; };
return ( const chartSettings = {
<SquiggleItem start: diagramStart,
expression={result.value} stop: diagramStop,
width={width} count: diagramCount,
height={height} };
distributionPlotSettings={distributionPlotSettings}
showTypes={showTypes} return { distributionPlotSettings, chartSettings };
chartSettings={chartSettings}
environment={environment ?? defaultEnvironment}
/>
);
}; };
export const SquiggleChart: React.FC<SquiggleChartProps> = React.memo(
(props) => {
const { distributionPlotSettings, chartSettings } =
splitSquiggleChartSettings(props);
const {
code,
jsImports = defaultImports,
onChange = defaultOnChange, // defaultOnChange must be constant, don't move its definition here
executionId = 0,
width,
height = 200,
enableLocalSettings = false,
continues,
project,
environment,
} = props;
const resultAndBindings = useSquiggle({
environment,
continues,
project,
code,
jsImports,
onChange,
executionId,
});
const valueToRender = getValueToRender(resultAndBindings);
return (
<SquiggleViewer
result={valueToRender}
width={width}
height={height}
distributionPlotSettings={distributionPlotSettings}
chartSettings={chartSettings}
environment={
project ? project.getEnvironment() : environment ?? defaultEnvironment
}
enableLocalSettings={enableLocalSettings}
/>
);
}
);

View File

@ -13,6 +13,7 @@ const SquiggleContext = React.createContext<SquiggleContextShape>({
export const SquiggleContainer: React.FC<Props> = ({ children }) => { export const SquiggleContainer: React.FC<Props> = ({ children }) => {
const context = useContext(SquiggleContext); const context = useContext(SquiggleContext);
if (context.containerized) { if (context.containerized) {
return <>{children}</>; return <>{children}</>;
} else { } else {

View File

@ -1,188 +1,92 @@
import React, { useState } from "react"; import React from "react";
import * as ReactDOM from "react-dom";
import { CodeEditor } from "./CodeEditor"; import { CodeEditor } from "./CodeEditor";
import {
squiggleExpression,
environment,
bindings,
jsImports,
defaultEnvironment,
} from "@quri/squiggle-lang";
import { defaultImports, defaultBindings } from "@quri/squiggle-lang";
import { SquiggleContainer } from "./SquiggleContainer"; import { SquiggleContainer } from "./SquiggleContainer";
import { useSquiggle, useSquigglePartial } from "../lib/hooks"; import {
import { SquiggleErrorAlert } from "./SquiggleErrorAlert"; splitSquiggleChartSettings,
import { SquiggleItem } from "./SquiggleItem"; SquiggleChartProps,
} from "./SquiggleChart";
import { useMaybeControlledValue, useSquiggle } from "../lib/hooks";
import { JsImports } from "../lib/jsImports";
import { defaultEnvironment, SqLocation, SqProject } from "@quri/squiggle-lang";
import { SquiggleViewer } from "./SquiggleViewer";
import { getErrorLocations, getValueToRender } from "../lib/utility";
const WrappedCodeEditor: React.FC<{ const WrappedCodeEditor: React.FC<{
code: string; code: string;
setCode: (code: string) => void; setCode: (code: string) => void;
}> = ({ code, setCode }) => ( errorLocations?: SqLocation[];
<div className="border border-grey-200 p-2 m-4"> }> = ({ code, setCode, errorLocations }) => (
<div className="border border-grey-200 p-2 m-4" data-testid="squiggle-editor">
<CodeEditor <CodeEditor
value={code} value={code}
onChange={setCode} onChange={setCode}
oneLine={true} oneLine={true}
showGutter={false} showGutter={false}
height={20} height={20}
errorLocations={errorLocations}
/> />
</div> </div>
); );
export interface SquiggleEditorProps { export type SquiggleEditorProps = SquiggleChartProps & {
/** The input string for squiggle */ defaultCode?: string;
initialSquiggleString?: string; onCodeChange?: (code: string) => void;
/** The width of the element */
width?: number;
/** If the result is a function, where the function starts */
diagramStart?: number;
/** If the result is a function, where the function ends */
diagramStop?: number;
/** If the result is a function, how many points along the function it samples */
diagramCount?: number;
/** When the environment changes. Used again for notebook magic */
onChange?(expr: squiggleExpression | undefined): void;
/** Previous variable declarations */
bindings?: bindings;
/** If the output requires monte carlo sampling, the amount of samples */
environment?: environment;
/** JS Imports */
jsImports?: jsImports;
/** Whether to show detail about types of the returns, default false */
showTypes?: boolean;
/** Whether to give users access to graph controls */
showControls?: boolean;
/** Whether to show a summary table */
showSummary?: boolean;
/** Whether to log the x coordinate on distribution charts */
logX?: boolean;
/** Whether to exp the y coordinate on distribution charts */
expY?: boolean;
/** Display 94% interval; useful for thin lognormals */
truncateToNthci?: number;
}
export const SquiggleEditor: React.FC<SquiggleEditorProps> = ({
initialSquiggleString = "",
width,
diagramStart = 0,
diagramStop = 10,
diagramCount = 20,
onChange,
bindings = defaultBindings,
environment,
jsImports = defaultImports,
showTypes = false,
showControls = false,
showSummary = false,
logX = false,
expY = false,
truncateToNthci = 100,
}: SquiggleEditorProps) => {
const [code, setCode] = useState(initialSquiggleString);
React.useEffect(
() => setCode(initialSquiggleString),
[initialSquiggleString]
);
const { result, observableRef } = useSquiggle({
code,
bindings,
environment,
jsImports,
onChange,
});
const chartSettings = {
start: diagramStart,
stop: diagramStop,
count: diagramCount,
};
const distributionPlotSettings = {
showControls,
showSummary,
logX,
expY,
truncateToNthci,
};
return (
<div ref={observableRef}>
<SquiggleContainer>
<WrappedCodeEditor code={code} setCode={setCode} />
{result.tag === "Ok" ? (
<SquiggleItem
expression={result.value}
width={width}
height={200}
distributionPlotSettings={distributionPlotSettings}
showTypes={showTypes}
chartSettings={chartSettings}
environment={environment ?? defaultEnvironment}
/>
) : (
<SquiggleErrorAlert error={result.value} />
)}
</SquiggleContainer>
</div>
);
}; };
export function renderSquiggleEditorToDom(props: SquiggleEditorProps) { const defaultOnChange = () => {};
const parent = document.createElement("div"); const defaultImports: JsImports = {};
ReactDOM.render(<SquiggleEditor {...props} />, parent);
return parent;
}
export interface SquigglePartialProps { export const SquiggleEditor: React.FC<SquiggleEditorProps> = (props) => {
/** The input string for squiggle */ const [code, setCode] = useMaybeControlledValue({
initialSquiggleString?: string; value: props.code,
/** when the environment changes. Used again for notebook magic*/ defaultValue: props.defaultCode ?? "",
onChange?(expr: bindings | undefined): void; onChange: props.onCodeChange,
/** Previously declared variables */
bindings?: bindings;
/** If the output requires monte carlo sampling, the amount of samples */
environment?: environment;
/** Variables imported from js */
jsImports?: jsImports;
}
export const SquigglePartial: React.FC<SquigglePartialProps> = ({
initialSquiggleString = "",
onChange,
bindings = defaultBindings,
environment,
jsImports = defaultImports,
}: SquigglePartialProps) => {
const [code, setCode] = useState(initialSquiggleString);
React.useEffect(
() => setCode(initialSquiggleString),
[initialSquiggleString]
);
const { result, observableRef } = useSquigglePartial({
code,
bindings,
environment,
jsImports,
onChange,
}); });
const { distributionPlotSettings, chartSettings } =
splitSquiggleChartSettings(props);
const {
environment,
jsImports = defaultImports,
onChange = defaultOnChange, // defaultOnChange must be constant, don't move its definition here
executionId = 0,
width,
height = 200,
enableLocalSettings = false,
continues,
project,
} = props;
const resultAndBindings = useSquiggle({
environment,
continues,
code,
project,
jsImports,
onChange,
executionId,
});
const valueToRender = getValueToRender(resultAndBindings);
const errorLocations = getErrorLocations(resultAndBindings.result);
return ( return (
<div ref={observableRef}> <SquiggleContainer>
<SquiggleContainer> <WrappedCodeEditor
<WrappedCodeEditor code={code} setCode={setCode} /> code={code}
{result.tag !== "Ok" ? ( setCode={setCode}
<SquiggleErrorAlert error={result.value} /> errorLocations={errorLocations}
) : null} />
</SquiggleContainer> <SquiggleViewer
</div> result={valueToRender}
width={width}
height={height}
distributionPlotSettings={distributionPlotSettings}
chartSettings={chartSettings}
environment={environment ?? defaultEnvironment}
enableLocalSettings={enableLocalSettings}
/>
</SquiggleContainer>
); );
}; };
export function renderSquigglePartialToDom(props: SquigglePartialProps) {
const parent = document.createElement("div");
ReactDOM.render(<SquigglePartial {...props} />, parent);
return parent;
}

View File

@ -1,11 +1,44 @@
import { errorValue, errorValueToString } from "@quri/squiggle-lang"; import { SqError, SqFrame } from "@quri/squiggle-lang";
import React from "react"; import React from "react";
import { ErrorAlert } from "./Alert"; import { ErrorAlert } from "./Alert";
type Props = { type Props = {
error: errorValue; error: SqError;
};
const StackTraceFrame: React.FC<{ frame: SqFrame }> = ({ frame }) => {
const location = frame.location();
return (
<div>
{frame.name()}
{location
? ` at line ${location.start.line}, column ${location.start.column}`
: ""}
</div>
);
};
const StackTrace: React.FC<Props> = ({ error }) => {
const frames = error.getFrameArray();
return frames.length ? (
<div>
<div className="font-medium">Stack trace:</div>
<div className="ml-4">
{frames.map((frame, i) => (
<StackTraceFrame frame={frame} key={i} />
))}
</div>
</div>
) : null;
}; };
export const SquiggleErrorAlert: React.FC<Props> = ({ error }) => { export const SquiggleErrorAlert: React.FC<Props> = ({ error }) => {
return <ErrorAlert heading="Error">{errorValueToString(error)}</ErrorAlert>; return (
<ErrorAlert heading="Error">
<div className="space-y-4">
<div>{error.toString()}</div>
<StackTrace error={error} />
</div>
</ErrorAlert>
);
}; };

View File

@ -1,281 +0,0 @@
import * as React from "react";
import {
squiggleExpression,
environment,
declaration,
} from "@quri/squiggle-lang";
import { NumberShower } from "./NumberShower";
import {
DistributionChart,
DistributionPlottingSettings,
} from "./DistributionChart";
import { FunctionChart, FunctionChartSettings } from "./FunctionChart";
function getRange<a>(x: declaration<a>) {
const first = x.args[0];
switch (first.tag) {
case "Float": {
return { floats: { min: first.value.min, max: first.value.max } };
}
case "Date": {
return { time: { min: first.value.min, max: first.value.max } };
}
}
}
function getChartSettings<a>(x: declaration<a>): FunctionChartSettings {
const range = getRange(x);
const min = range.floats ? range.floats.min : 0;
const max = range.floats ? range.floats.max : 10;
return {
start: min,
stop: max,
count: 20,
};
}
interface VariableBoxProps {
heading: string;
children: React.ReactNode;
showTypes: boolean;
}
export const VariableBox: React.FC<VariableBoxProps> = ({
heading = "Error",
children,
showTypes = false,
}) => {
if (showTypes) {
return (
<div className="bg-white border border-grey-200 m-2">
<div className="border-b border-grey-200 p-3">
<header className="font-mono">{heading}</header>
</div>
<div className="p-3">{children}</div>
</div>
);
} else {
return <div>{children}</div>;
}
};
export interface SquiggleItemProps {
/** The input string for squiggle */
expression: squiggleExpression;
width?: number;
height: number;
distributionPlotSettings: DistributionPlottingSettings;
/** Whether to show type information */
showTypes: boolean;
/** Settings for displaying functions */
chartSettings: FunctionChartSettings;
/** Environment for further function executions */
environment: environment;
}
export const SquiggleItem: React.FC<SquiggleItemProps> = ({
expression,
width,
height,
distributionPlotSettings,
showTypes = false,
chartSettings,
environment,
}) => {
switch (expression.tag) {
case "number":
return (
<VariableBox heading="Number" showTypes={showTypes}>
<div className="font-semibold text-slate-600">
<NumberShower precision={3} number={expression.value} />
</div>
</VariableBox>
);
case "distribution": {
const distType = expression.value.type();
return (
<VariableBox
heading={`Distribution (${distType})`}
showTypes={showTypes}
>
{distType === "Symbolic" && showTypes ? (
<div>{expression.value.toString()}</div>
) : null}
<DistributionChart
distribution={expression.value}
{...distributionPlotSettings}
height={height}
width={width}
/>
</VariableBox>
);
}
case "string":
return (
<VariableBox heading="String" showTypes={showTypes}>
<span className="text-slate-400">"</span>
<span className="text-slate-600 font-semibold">
{expression.value}
</span>
<span className="text-slate-400">"</span>
</VariableBox>
);
case "boolean":
return (
<VariableBox heading="Boolean" showTypes={showTypes}>
{expression.value.toString()}
</VariableBox>
);
case "symbol":
return (
<VariableBox heading="Symbol" showTypes={showTypes}>
<span className="text-slate-500 mr-2">Undefined Symbol:</span>
<span className="text-slate-600">{expression.value}</span>
</VariableBox>
);
case "call":
return (
<VariableBox heading="Call" showTypes={showTypes}>
{expression.value}
</VariableBox>
);
case "array":
return (
<VariableBox heading="Array" showTypes={showTypes}>
{expression.value.map((r, i) => (
<div key={i} className="flex pt-1">
<div className="flex-none bg-slate-100 rounded-sm px-1">
<header className="text-slate-400 font-mono">{i}</header>
</div>
<div className="px-2 mb-2 grow">
<SquiggleItem
key={i}
expression={r}
width={width !== undefined ? width - 20 : width}
height={50}
distributionPlotSettings={distributionPlotSettings}
showTypes={showTypes}
chartSettings={chartSettings}
environment={environment}
/>
</div>
</div>
))}
</VariableBox>
);
case "record":
return (
<VariableBox heading="Record" showTypes={showTypes}>
<div className="space-y-3">
{Object.entries(expression.value).map(([key, r]) => (
<div key={key} className="flex space-x-2">
<div className="flex-none">
<header className="text-slate-500 font-mono">{key}:</header>
</div>
<div className="px-2 grow bg-gray-50 border border-gray-100 rounded-sm">
<SquiggleItem
expression={r}
width={width !== undefined ? width - 20 : width}
height={height / 3}
showTypes={showTypes}
distributionPlotSettings={distributionPlotSettings}
chartSettings={chartSettings}
environment={environment}
/>
</div>
</div>
))}
</div>
</VariableBox>
);
case "arraystring":
return (
<VariableBox heading="Array String" showTypes={showTypes}>
{expression.value.map((r) => `"${r}"`).join(", ")}
</VariableBox>
);
case "date":
return (
<VariableBox heading="Date" showTypes={showTypes}>
{expression.value.toDateString()}
</VariableBox>
);
case "timeDuration": {
return (
<VariableBox heading="Time Duration" showTypes={showTypes}>
<NumberShower precision={3} number={expression.value} />
</VariableBox>
);
}
case "lambda":
return (
<VariableBox heading="Function" showTypes={showTypes}>
<div className="text-amber-700 bg-amber-100 rounded-md font-mono p-1 pl-2 mb-3 mt-1 text-sm">{`function(${expression.value.parameters.join(
","
)})`}</div>
<FunctionChart
fn={expression.value}
chartSettings={chartSettings}
distributionPlotSettings={distributionPlotSettings}
height={height}
environment={{
sampleCount: environment.sampleCount / 10,
xyPointLength: environment.xyPointLength / 10,
}}
/>
</VariableBox>
);
case "lambdaDeclaration": {
return (
<VariableBox heading="Function Declaration" showTypes={showTypes}>
<FunctionChart
fn={expression.value.fn}
chartSettings={getChartSettings(expression.value)}
distributionPlotSettings={distributionPlotSettings}
height={height}
environment={{
sampleCount: environment.sampleCount / 10,
xyPointLength: environment.xyPointLength / 10,
}}
/>
</VariableBox>
);
}
case "module": {
return (
<VariableBox heading="Module" showTypes={showTypes}>
<div className="space-y-3">
{Object.entries(expression.value)
.filter(([key, r]) => key !== "Math")
.map(([key, r]) => (
<div key={key} className="flex space-x-2">
<div className="flex-none">
<header className="text-slate-500 font-mono">{key}:</header>
</div>
<div className="px-2 grow bg-gray-50 border border-gray-100 rounded-sm">
<SquiggleItem
expression={r}
width={width !== undefined ? width - 20 : width}
height={height / 3}
showTypes={showTypes}
distributionPlotSettings={distributionPlotSettings}
chartSettings={chartSettings}
environment={environment}
/>
</div>
</div>
))}
</div>
</VariableBox>
);
}
default: {
return (
<div>
<span>No display for type: </span>{" "}
<span className="font-semibold text-slate-600">{expression.tag}</span>
</div>
);
}
}
};

View File

@ -1,53 +1,66 @@
import React, { FC, Fragment, useState, useEffect } from "react"; import React, {
import ReactDOM from "react-dom"; FC,
import { Path, useForm, UseFormRegister, useWatch } from "react-hook-form"; useState,
useEffect,
useMemo,
useRef,
useCallback,
} from "react";
import { useForm, UseFormRegister, useWatch } from "react-hook-form";
import * as yup from "yup"; import * as yup from "yup";
import {
useMaybeControlledValue,
useRunnerState,
useSquiggle,
} from "../lib/hooks";
import { yupResolver } from "@hookform/resolvers/yup"; import { yupResolver } from "@hookform/resolvers/yup";
import { Tab } from "@headlessui/react";
import { import {
ChartSquareBarIcon, ChartSquareBarIcon,
CheckCircleIcon,
ClipboardCopyIcon,
CodeIcon, CodeIcon,
CogIcon, CogIcon,
CurrencyDollarIcon, CurrencyDollarIcon,
EyeIcon, EyeIcon,
PauseIcon,
PlayIcon,
RefreshIcon,
} from "@heroicons/react/solid"; } from "@heroicons/react/solid";
import clsx from "clsx"; import clsx from "clsx";
import { defaultBindings, environment } from "@quri/squiggle-lang"; import { environment, SqProject } from "@quri/squiggle-lang";
import { SquiggleChart } from "./SquiggleChart"; import { SquiggleChartProps } from "./SquiggleChart";
import { CodeEditor } from "./CodeEditor"; import { CodeEditor } from "./CodeEditor";
import { JsonEditor } from "./JsonEditor"; import { JsonEditor } from "./JsonEditor";
import { ErrorAlert, SuccessAlert } from "./Alert"; import { ErrorAlert, SuccessAlert } from "./Alert";
import { SquiggleContainer } from "./SquiggleContainer"; import { SquiggleContainer } from "./SquiggleContainer";
import { Toggle } from "./ui/Toggle";
import { StyledTab } from "./ui/StyledTab";
import { InputItem } from "./ui/InputItem";
import { Text } from "./ui/Text";
import { ViewSettings, viewSettingsSchema } from "./ViewSettings";
import { HeadedSection } from "./ui/HeadedSection";
import { defaultTickFormat } from "../lib/distributionSpecBuilder";
import { Button } from "./ui/Button";
import { JsImports } from "../lib/jsImports";
import { getErrorLocations, getValueToRender } from "../lib/utility";
import { SquiggleViewer } from "./SquiggleViewer";
interface PlaygroundProps { type PlaygroundProps = SquiggleChartProps & {
/** The initial squiggle string to put in the playground */ /** The initial squiggle string to put in the playground */
initialSquiggleString?: string; defaultCode?: string;
/** How many pixels high is the playground */
height?: number;
/** Whether to show the types of outputs in the playground */
showTypes?: boolean;
/** Whether to show the log scale controls in the playground */
showControls?: boolean;
/** Whether to show the summary table in the playground */
showSummary?: boolean;
/** Whether to log the x coordinate on distribution charts */
logX?: boolean;
/** Whether to exp the y coordinate on distribution charts */
expY?: boolean;
/** Display 94% interval; useful for thin lognormals */
truncateToNthci?: number;
/** If code is set, component becomes controlled */
code?: string;
onCodeChange?(expr: string): void; onCodeChange?(expr: string): void;
/* When settings change */
onSettingsChange?(settings: any): void; onSettingsChange?(settings: any): void;
/** Should we show the editor? */ /** Should we show the editor? */
showEditor?: boolean; showEditor?: boolean;
} /** Useful for playground on squiggle website, where we update the anchor link based on current code and settings */
showShareButton?: boolean;
};
const schema = yup const schema = yup
.object() .object({})
.shape({ .shape({
sampleCount: yup sampleCount: yup
.number() .number()
@ -65,342 +78,68 @@ const schema = yup
.default(1000) .default(1000)
.min(10) .min(10)
.max(10000), .max(10000),
chartHeight: yup.number().required().positive().integer().default(350),
leftSizePercent: yup
.number()
.required()
.positive()
.integer()
.min(10)
.max(100)
.default(50),
showTypes: yup.boolean(),
showControls: yup.boolean(),
showSummary: yup.boolean(),
showEditor: yup.boolean(),
logX: yup.boolean(),
expY: yup.boolean(),
truncateToNthci: yup.number().required().min(0).max(100).default(100),
showSettingsPage: yup.boolean().default(false),
diagramStart: yup
.number()
.required()
.positive()
.integer()
.default(0)
.min(0),
diagramStop: yup
.number()
.required()
.positive()
.integer()
.default(10)
.min(0),
diagramCount: yup
.number()
.required()
.positive()
.integer()
.default(20)
.min(2),
}) })
.required(); .concat(viewSettingsSchema);
type StyledTabProps = { type FormFields = yup.InferType<typeof schema>;
name: string;
icon: (props: React.ComponentProps<"svg">) => JSX.Element;
};
const StyledTab: React.FC<StyledTabProps> = ({ name, icon: Icon }) => { const SamplingSettings: React.FC<{ register: UseFormRegister<FormFields> }> = ({
return ( register,
<Tab key={name} as={Fragment}>
{({ selected }) => (
<button className="group flex rounded-md focus:outline-none focus-visible:ring-offset-gray-100">
<span
className={clsx(
"p-1 pl-2.5 pr-3.5 rounded-md flex items-center text-sm font-medium",
selected && "bg-white shadow-sm ring-1 ring-black ring-opacity-5"
)}
>
<Icon
className={clsx(
"-ml-0.5 mr-2 h-4 w-4",
selected
? "text-slate-500"
: "text-gray-400 group-hover:text-gray-900"
)}
/>
<span
className={clsx(
selected
? "text-gray-900"
: "text-gray-600 group-hover:text-gray-900"
)}
>
{name}
</span>
</span>
</button>
)}
</Tab>
);
};
const HeadedSection: FC<{ title: string; children: React.ReactNode }> = ({
title,
children,
}) => ( }) => (
<div> <div className="space-y-6 p-3 max-w-xl">
<header className="text-lg leading-6 font-medium text-gray-900"> <div>
{title} <InputItem
</header> name="sampleCount"
<div className="mt-4">{children}</div> type="number"
label="Sample Count"
register={register}
/>
<div className="mt-2">
<Text>
How many samples to use for Monte Carlo simulations. This can
occasionally be overridden by specific Squiggle programs.
</Text>
</div>
</div>
<div>
<InputItem
name="xyPointLength"
type="number"
register={register}
label="Coordinate Count (For PointSet Shapes)"
/>
<div className="mt-2">
<Text>
When distributions are converted into PointSet shapes, we need to know
how many coordinates to use.
</Text>
</div>
</div>
</div> </div>
); );
const Text: FC<{ children: React.ReactNode }> = ({ children }) => ( const InputVariablesSettings: React.FC<{
<p className="text-sm text-gray-500">{children}</p> initialImports: JsImports;
); setImports: (imports: JsImports) => void;
}> = ({ initialImports, setImports }) => {
function InputItem<T>({ const [importString, setImportString] = useState(() =>
name, JSON.stringify(initialImports)
label,
type,
register,
}: {
name: Path<T>;
label: string;
type: "number";
register: UseFormRegister<T>;
}) {
return (
<label className="block">
<div className="text-sm font-medium text-gray-600 mb-1">{label}</div>
<input
type={type}
{...register(name)}
className="form-input max-w-lg block w-full shadow-sm focus:ring-indigo-500 focus:border-indigo-500 sm:max-w-xs sm:text-sm border-gray-300 rounded-md"
/>
</label>
); );
}
function Checkbox<T>({
name,
label,
register,
}: {
name: Path<T>;
label: string;
register: UseFormRegister<T>;
}) {
return (
<label className="flex items-center">
<input
type="checkbox"
{...register(name)}
className="form-checkbox focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
/>
{/* Clicking on the div makes the checkbox lose focus while mouse button is pressed, leading to annoying blinking; I couldn't figure out how to fix this. */}
<div className="ml-3 text-sm font-medium text-gray-700">{label}</div>
</label>
);
}
export const SquigglePlayground: FC<PlaygroundProps> = ({
initialSquiggleString = "",
height = 500,
showTypes = false,
showControls = false,
showSummary = false,
logX = false,
expY = false,
truncateToNthci = 100,
code: controlledCode,
onCodeChange,
onSettingsChange,
showEditor = true,
}) => {
const [uncontrolledCode, setUncontrolledCode] = useState(
initialSquiggleString
);
const [importString, setImportString] = useState("{}");
const [imports, setImports] = useState({});
const [importsAreValid, setImportsAreValid] = useState(true); const [importsAreValid, setImportsAreValid] = useState(true);
const { register, control } = useForm({
resolver: yupResolver(schema),
defaultValues: {
sampleCount: 1000,
xyPointLength: 1000,
chartHeight: 150,
showTypes,
showControls,
logX,
expY,
truncateToNthci,
showSummary,
showEditor,
leftSizePercent: 50,
showSettingsPage: false,
diagramStart: 0,
diagramStop: 10,
diagramCount: 20,
},
});
const vars = useWatch({
control,
});
useEffect(() => { const onChange = (value: string) => {
onSettingsChange?.(vars); setImportString(value);
}, [vars, onSettingsChange]); let imports = {};
const chartSettings = {
start: Number(vars.diagramStart),
stop: Number(vars.diagramStop),
count: Number(vars.diagramCount),
};
const env: environment = {
sampleCount: Number(vars.sampleCount),
xyPointLength: Number(vars.xyPointLength),
};
const getChangeJson = (r: string) => {
setImportString(r);
try { try {
setImports(JSON.parse(r)); imports = JSON.parse(value);
setImportsAreValid(true); setImportsAreValid(true);
} catch (e) { } catch (e) {
setImportsAreValid(false); setImportsAreValid(false);
} }
setImports(imports);
}; };
const code = controlledCode ?? uncontrolledCode; return (
const samplingSettings = (
<div className="space-y-6 p-3 max-w-xl">
<div>
<InputItem
name="sampleCount"
type="number"
label="Sample Count"
register={register}
/>
<div className="mt-2">
<Text>
How many samples to use for Monte Carlo simulations. This can
occasionally be overridden by specific Squiggle programs.
</Text>
</div>
</div>
<div>
<InputItem
name="xyPointLength"
type="number"
register={register}
label="Coordinate Count (For PointSet Shapes)"
/>
<div className="mt-2">
<Text>
When distributions are converted into PointSet shapes, we need to
know how many coordinates to use.
</Text>
</div>
</div>
</div>
);
const viewSettings = (
<div className="space-y-6 p-3 divide-y divide-gray-200 max-w-xl">
<HeadedSection title="General Display Settings">
<div className="space-y-4">
<Checkbox
name="showEditor"
register={register}
label="Show code editor on left"
/>
<InputItem
name="chartHeight"
type="number"
register={register}
label="Chart Height (in pixels)"
/>
<Checkbox
name="showTypes"
register={register}
label="Show information about displayed types"
/>
</div>
</HeadedSection>
<div className="pt-8">
<HeadedSection title="Distribution Display Settings">
<div className="space-y-2">
<Checkbox
register={register}
name="logX"
label="Show x scale logarithmically"
/>
<Checkbox
register={register}
name="expY"
label="Show y scale exponentially"
/>
<InputItem
name="truncateToNthci"
type="number"
register={register}
label="Show nth percentile confidence interval (useful for thin lognormals)"
/>
<Checkbox
register={register}
name="showControls"
label="Show toggles to adjust scale of x and y axes"
/>
<Checkbox
register={register}
name="showSummary"
label="Show summary statistics"
/>
</div>
</HeadedSection>
</div>
<div className="pt-8">
<HeadedSection title="Function Display Settings">
<div className="space-y-6">
<Text>
When displaying functions of single variables that return numbers
or distributions, we need to use defaults for the x-axis. We need
to select a minimum and maximum value of x to sample, and a number
n of the number of points to sample.
</Text>
<div className="space-y-4">
<InputItem
type="number"
name="diagramStart"
register={register}
label="Min X Value"
/>
<InputItem
type="number"
name="diagramStop"
register={register}
label="Max X Value"
/>
<InputItem
type="number"
name="diagramCount"
register={register}
label="Points between X min and X max to sample"
/>
</div>
</div>
</HeadedSection>
</div>
</div>
);
const inputVariableSettings = (
<div className="p-3 max-w-3xl"> <div className="p-3 max-w-3xl">
<HeadedSection title="Import Variables from JSON"> <HeadedSection title="Import Variables from JSON">
<div className="space-y-6"> <div className="space-y-6">
@ -412,7 +151,7 @@ export const SquigglePlayground: FC<PlaygroundProps> = ({
<div className="border border-slate-200 mt-6 mb-2"> <div className="border border-slate-200 mt-6 mb-2">
<JsonEditor <JsonEditor
value={importString} value={importString}
onChange={getChangeJson} onChange={onChange}
oneLine={false} oneLine={false}
showGutter={true} showGutter={true}
height={150} height={150}
@ -431,35 +170,193 @@ export const SquigglePlayground: FC<PlaygroundProps> = ({
</HeadedSection> </HeadedSection>
</div> </div>
); );
};
const squiggleChart = ( const RunControls: React.FC<{
<SquiggleChart autorunMode: boolean;
squiggleString={code} isRunning: boolean;
environment={env} isStale: boolean;
chartSettings={chartSettings} onAutorunModeChange: (value: boolean) => void;
height={vars.chartHeight} run: () => void;
showTypes={vars.showTypes} }> = ({ autorunMode, isRunning, isStale, onAutorunModeChange, run }) => {
showControls={vars.showControls} const CurrentPlayIcon = isRunning ? RefreshIcon : PlayIcon;
showSummary={vars.showSummary}
logX={vars.logX} return (
expY={vars.expY} <div className="flex space-x-1 items-center" data-testid="autorun-controls">
truncateToNthci={vars.truncateToNthci} {autorunMode ? null : (
bindings={defaultBindings} <button onClick={run}>
jsImports={imports} <CurrentPlayIcon
/> className={clsx(
"w-8 h-8",
isRunning && "animate-spin",
isStale ? "text-indigo-500" : "text-gray-400"
)}
/>
</button>
)}
<Toggle
texts={["Autorun", "Paused"]}
icons={[CheckCircleIcon, PauseIcon]}
status={autorunMode}
onChange={onAutorunModeChange}
spinIcon={autorunMode && isRunning}
/>
</div>
);
};
const ShareButton: React.FC = () => {
const [isCopied, setIsCopied] = useState(false);
const copy = () => {
navigator.clipboard.writeText((window.top || window).location.href);
setIsCopied(true);
setTimeout(() => setIsCopied(false), 1000);
};
return (
<div className="w-36">
<Button onClick={copy} wide>
{isCopied ? (
"Copied to clipboard!"
) : (
<div className="flex items-center space-x-1">
<ClipboardCopyIcon className="w-4 h-4" />
<span>Copy share link</span>
</div>
)}
</Button>
</div>
);
};
type PlaygroundContextShape = {
getLeftPanelElement: () => HTMLDivElement | undefined;
};
export const PlaygroundContext = React.createContext<PlaygroundContextShape>({
getLeftPanelElement: () => undefined,
});
export const SquigglePlayground: FC<PlaygroundProps> = ({
defaultCode = "",
height = 500,
showSummary = true,
logX = false,
expY = false,
title,
minX,
maxX,
tickFormat = defaultTickFormat,
distributionChartActions,
code: controlledCode,
onCodeChange,
onSettingsChange,
showEditor = true,
showShareButton = false,
continues,
project,
}) => {
const [code, setCode] = useMaybeControlledValue({
value: controlledCode,
defaultValue: defaultCode,
onChange: onCodeChange,
});
const [imports, setImports] = useState<JsImports>({});
const { register, control } = useForm({
resolver: yupResolver(schema),
defaultValues: {
sampleCount: 1000,
xyPointLength: 1000,
chartHeight: 150,
logX,
expY,
title,
minX,
maxX,
tickFormat,
distributionChartActions,
showSummary,
showEditor,
diagramStart: 0,
diagramStop: 10,
diagramCount: 20,
},
});
const vars = useWatch({
control,
});
useEffect(() => {
onSettingsChange?.(vars);
}, [vars, onSettingsChange]);
const environment: environment = useMemo(
() => ({
sampleCount: Number(vars.sampleCount),
xyPointLength: Number(vars.xyPointLength),
}),
[vars.sampleCount, vars.xyPointLength]
); );
const {
run,
autorunMode,
setAutorunMode,
isRunning,
renderedCode,
executionId,
} = useRunnerState(code);
const resultAndBindings = useSquiggle({
environment,
continues,
code: renderedCode,
project,
jsImports: imports,
executionId,
});
const valueToRender = getValueToRender(resultAndBindings);
const squiggleChart =
renderedCode === "" ? null : (
<div className="relative">
{isRunning ? (
<div className="absolute inset-0 bg-white opacity-0 animate-semi-appear" />
) : null}
<SquiggleViewer
result={valueToRender}
environment={environment}
height={vars.chartHeight || 150}
distributionPlotSettings={{
showSummary: vars.showSummary ?? false,
logX: vars.logX ?? false,
expY: vars.expY ?? false,
format: vars.tickFormat,
minX: vars.minX,
maxX: vars.maxX,
title: vars.title,
actions: vars.distributionChartActions,
}}
chartSettings={{
start: vars.diagramStart ?? 0,
stop: vars.diagramStop ?? 10,
count: vars.diagramCount ?? 20,
}}
enableLocalSettings={true}
/>
</div>
);
const errorLocations = getErrorLocations(resultAndBindings.result);
const firstTab = vars.showEditor ? ( const firstTab = vars.showEditor ? (
<div className="border border-slate-200"> <div className="border border-slate-200" data-testid="squiggle-editor">
<CodeEditor <CodeEditor
errorLocations={errorLocations}
value={code} value={code}
onChange={(newCode) => { onChange={setCode}
if (controlledCode === undefined) { onSubmit={run}
// uncontrolled mode
setUncontrolledCode(newCode);
}
onCodeChange?.(newCode);
}}
oneLine={false} oneLine={false}
showGutter={true} showGutter={true}
height={height - 1} height={height - 1}
@ -470,45 +367,84 @@ export const SquigglePlayground: FC<PlaygroundProps> = ({
); );
const tabs = ( const tabs = (
<Tab.Panels> <StyledTab.Panels>
<Tab.Panel>{firstTab}</Tab.Panel> <StyledTab.Panel>{firstTab}</StyledTab.Panel>
<Tab.Panel>{samplingSettings}</Tab.Panel> <StyledTab.Panel>
<Tab.Panel>{viewSettings}</Tab.Panel> <SamplingSettings register={register} />
<Tab.Panel>{inputVariableSettings}</Tab.Panel> </StyledTab.Panel>
</Tab.Panels> <StyledTab.Panel>
<ViewSettings
register={
// This is dangerous, but doesn't cause any problems.
// I tried to make `ViewSettings` generic (to allow it to accept any extension of a settings schema), but it didn't work.
register as unknown as UseFormRegister<
yup.InferType<typeof viewSettingsSchema>
>
}
/>
</StyledTab.Panel>
<StyledTab.Panel>
<InputVariablesSettings
initialImports={imports}
setImports={setImports}
/>
</StyledTab.Panel>
</StyledTab.Panels>
); );
const leftPanelRef = useRef<HTMLDivElement | null>(null);
const withEditor = ( const withEditor = (
<div className="flex mt-1"> <div className="flex mt-2">
<div className="w-1/2">{tabs}</div> <div
<div className="w-1/2 p-2 pl-4">{squiggleChart}</div> className="w-1/2 relative"
style={{ minHeight: height }}
ref={leftPanelRef}
>
{tabs}
</div>
<div className="w-1/2 p-2 pl-4" data-testid="playground-result">
{squiggleChart}
</div>
</div> </div>
); );
const withoutEditor = <div className="mt-3">{tabs}</div>; const withoutEditor = <div className="mt-3">{tabs}</div>;
const getLeftPanelElement = useCallback(() => {
return leftPanelRef.current ?? undefined;
}, []);
return ( return (
<SquiggleContainer> <SquiggleContainer>
<Tab.Group> <PlaygroundContext.Provider value={{ getLeftPanelElement }}>
<div className="pb-4"> <StyledTab.Group>
<Tab.List className="flex w-fit p-0.5 mt-2 rounded-md bg-slate-100 hover:bg-slate-200"> <div className="pb-4">
<StyledTab <div className="flex justify-between items-center">
name={vars.showEditor ? "Code" : "Display"} <StyledTab.List>
icon={vars.showEditor ? CodeIcon : EyeIcon} <StyledTab
/> name={vars.showEditor ? "Code" : "Display"}
<StyledTab name="Sampling Settings" icon={CogIcon} /> icon={vars.showEditor ? CodeIcon : EyeIcon}
<StyledTab name="View Settings" icon={ChartSquareBarIcon} /> />
<StyledTab name="Input Variables" icon={CurrencyDollarIcon} /> <StyledTab name="Sampling Settings" icon={CogIcon} />
</Tab.List> <StyledTab name="View Settings" icon={ChartSquareBarIcon} />
{vars.showEditor ? withEditor : withoutEditor} <StyledTab name="Input Variables" icon={CurrencyDollarIcon} />
</div> </StyledTab.List>
</Tab.Group> <div className="flex space-x-2 items-center">
<RunControls
autorunMode={autorunMode}
isStale={renderedCode !== code}
run={run}
isRunning={isRunning}
onAutorunModeChange={setAutorunMode}
/>
{showShareButton && <ShareButton />}
</div>
</div>
{vars.showEditor ? withEditor : withoutEditor}
</div>
</StyledTab.Group>
</PlaygroundContext.Provider>
</SquiggleContainer> </SquiggleContainer>
); );
}; };
export function renderSquigglePlaygroundToDom(props: PlaygroundProps) {
const parent = document.createElement("div");
ReactDOM.render(<SquigglePlayground {...props} />, parent);
return parent;
}

View File

@ -0,0 +1,310 @@
import React, { useContext } from "react";
import { SqDistributionTag, SqValue, SqValueTag } from "@quri/squiggle-lang";
import { NumberShower } from "../NumberShower";
import { DistributionChart, defaultPlot, makePlot } from "../DistributionChart";
import { FunctionChart } from "../FunctionChart";
import clsx from "clsx";
import { VariableBox } from "./VariableBox";
import { ItemSettingsMenu } from "./ItemSettingsMenu";
import { hasMassBelowZero } from "../../lib/distributionUtils";
import { MergedItemSettings } from "./utils";
import { ViewerContext } from "./ViewerContext";
/*
// DISABLED FOR 0.4 branch, for now
function getRange<a>(x: declaration<a>) {
const first = x.args[0];
switch (first.tag) {
case "Float": {
return { floats: { min: first.value.min, max: first.value.max } };
}
case "Date": {
return { time: { min: first.value.min, max: first.value.max } };
}
}
}
function getChartSettings<a>(x: declaration<a>): FunctionChartSettings {
const range = getRange(x);
const min = range.floats ? range.floats.min : 0;
const max = range.floats ? range.floats.max : 10;
return {
start: min,
stop: max,
count: 20,
};
}
*/
const VariableList: React.FC<{
value: SqValue;
heading: string;
children: (settings: MergedItemSettings) => React.ReactNode;
}> = ({ value, heading, children }) => (
<VariableBox value={value} heading={heading}>
{(settings) => (
<div
className={clsx(
"space-y-3",
value.location.path.items.length ? "pt-1 mt-1" : null
)}
>
{children(settings)}
</div>
)}
</VariableBox>
);
export interface Props {
/** The output of squiggle's run */
value: SqValue;
width?: number;
}
export const ExpressionViewer: React.FC<Props> = ({ value, width }) => {
const { getMergedSettings } = useContext(ViewerContext);
switch (value.tag) {
case SqValueTag.Number:
return (
<VariableBox value={value} heading="Number">
{() => (
<div className="font-semibold text-slate-600">
<NumberShower precision={3} number={value.value} />
</div>
)}
</VariableBox>
);
case SqValueTag.Distribution: {
const distType = value.value.tag;
return (
<VariableBox
value={value}
heading={`Distribution (${distType})\n${
distType === SqDistributionTag.Symbolic
? value.value.toString()
: ""
}`}
renderSettingsMenu={({ onChange }) => {
const shape = value.value.pointSet(
getMergedSettings(value.location).environment
);
return (
<ItemSettingsMenu
value={value}
onChange={onChange}
disableLogX={
shape.tag === "Ok" && hasMassBelowZero(shape.value.asShape())
}
withFunctionSettings={false}
/>
);
}}
>
{(settings) => {
return (
<DistributionChart
plot={defaultPlot(value.value)}
environment={settings.environment}
{...settings.distributionPlotSettings}
height={settings.height}
width={width}
/>
);
}}
</VariableBox>
);
}
case SqValueTag.String:
return (
<VariableBox value={value} heading="String">
{() => (
<>
<span className="text-slate-400">"</span>
<span className="text-slate-600 font-semibold font-mono">
{value.value}
</span>
<span className="text-slate-400">"</span>
</>
)}
</VariableBox>
);
case SqValueTag.Bool:
return (
<VariableBox value={value} heading="Boolean">
{() => value.value.toString()}
</VariableBox>
);
case SqValueTag.Date:
return (
<VariableBox value={value} heading="Date">
{() => value.value.toDateString()}
</VariableBox>
);
case SqValueTag.Void:
return (
<VariableBox value={value} heading="Void">
{() => "Void"}
</VariableBox>
);
case SqValueTag.TimeDuration: {
return (
<VariableBox value={value} heading="Time Duration">
{() => <NumberShower precision={3} number={value.value} />}
</VariableBox>
);
}
case SqValueTag.Lambda:
return (
<VariableBox
value={value}
heading="Function"
renderSettingsMenu={({ onChange }) => {
return (
<ItemSettingsMenu
value={value}
onChange={onChange}
withFunctionSettings={true}
/>
);
}}
>
{(settings) => (
<>
<div className="text-amber-700 bg-amber-100 rounded-md font-mono p-1 pl-2 mb-3 mt-1 text-sm">{`function(${value.value
.parameters()
.join(",")})`}</div>
<FunctionChart
fn={value.value}
chartSettings={settings.chartSettings}
distributionPlotSettings={settings.distributionPlotSettings}
height={settings.height}
environment={{
sampleCount: settings.environment.sampleCount / 10,
xyPointLength: settings.environment.xyPointLength / 10,
}}
/>
</>
)}
</VariableBox>
);
case SqValueTag.Declaration: {
return (
<VariableBox
value={value}
heading="Function Declaration"
renderSettingsMenu={({ onChange }) => {
return (
<ItemSettingsMenu
onChange={onChange}
value={value}
withFunctionSettings={true}
/>
);
}}
>
{(settings) => (
<div>NOT IMPLEMENTED IN 0.4 YET</div>
// <FunctionChart
// fn={expression.value.fn}
// chartSettings={getChartSettings(expression.value)}
// distributionPlotSettings={settings.distributionPlotSettings}
// height={settings.height}
// environment={{
// sampleCount: settings.environment.sampleCount / 10,
// xyPointLength: settings.environment.xyPointLength / 10,
// }}
// />
)}
</VariableBox>
);
}
case SqValueTag.Record:
const plot = makePlot(value.value);
if (plot) {
return (
<VariableBox
value={value}
heading="Plot"
renderSettingsMenu={({ onChange }) => {
let disableLogX = plot.distributions.some((x) => {
let pointSet = x.distribution.pointSet(
getMergedSettings(value.location).environment
);
return (
pointSet.tag === "Ok" &&
hasMassBelowZero(pointSet.value.asShape())
);
});
return (
<ItemSettingsMenu
value={value}
onChange={onChange}
disableLogX={disableLogX}
withFunctionSettings={false}
/>
);
}}
>
{(settings) => {
return (
<DistributionChart
plot={plot}
environment={settings.environment}
{...settings.distributionPlotSettings}
height={settings.height}
width={width}
/>
);
}}
</VariableBox>
);
} else {
return (
<VariableList value={value} heading="Record">
{(_) =>
value.value
.entries()
.map(([key, r]) => (
<ExpressionViewer
key={key}
value={r}
width={width !== undefined ? width - 20 : width}
/>
))
}
</VariableList>
);
}
case SqValueTag.Array:
return (
<VariableList value={value} heading="Array">
{(_) =>
value.value
.getValues()
.map((r, i) => (
<ExpressionViewer
key={i}
value={r}
width={width !== undefined ? width - 20 : width}
/>
))
}
</VariableList>
);
default: {
return (
<VariableList value={value} heading="Error">
{() => (
<div>
<span>No display for type: </span>{" "}
<span className="font-semibold text-slate-600">
{(value as { tag: string }).tag}
</span>
</div>
)}
</VariableList>
);
}
}
};

View File

@ -0,0 +1,164 @@
import { CogIcon } from "@heroicons/react/solid";
import React, { useContext, useRef, useState, useEffect } from "react";
import { useForm } from "react-hook-form";
import { yupResolver } from "@hookform/resolvers/yup";
import { Modal } from "../ui/Modal";
import { ViewSettings, viewSettingsSchema } from "../ViewSettings";
import { ViewerContext } from "./ViewerContext";
import { defaultTickFormat } from "../../lib/distributionSpecBuilder";
import { PlaygroundContext } from "../SquigglePlayground";
import { SqValue } from "@quri/squiggle-lang";
import { locationAsString } from "./utils";
type Props = {
value: SqValue;
onChange: () => void;
disableLogX?: boolean;
withFunctionSettings: boolean;
};
const ItemSettingsModal: React.FC<
Props & { close: () => void; resetScroll: () => void }
> = ({
value,
onChange,
disableLogX,
withFunctionSettings,
close,
resetScroll,
}) => {
const { setSettings, getSettings, getMergedSettings } =
useContext(ViewerContext);
const mergedSettings = getMergedSettings(value.location);
const { register, watch } = useForm({
resolver: yupResolver(viewSettingsSchema),
defaultValues: {
// this is a mess and should be fixed
showEditor: true, // doesn't matter
chartHeight: mergedSettings.height,
showSummary: mergedSettings.distributionPlotSettings.showSummary,
logX: mergedSettings.distributionPlotSettings.logX,
expY: mergedSettings.distributionPlotSettings.expY,
tickFormat:
mergedSettings.distributionPlotSettings.format || defaultTickFormat,
title: mergedSettings.distributionPlotSettings.title,
minX: mergedSettings.distributionPlotSettings.minX,
maxX: mergedSettings.distributionPlotSettings.maxX,
distributionChartActions: mergedSettings.distributionPlotSettings.actions,
diagramStart: mergedSettings.chartSettings.start,
diagramStop: mergedSettings.chartSettings.stop,
diagramCount: mergedSettings.chartSettings.count,
},
});
useEffect(() => {
const subscription = watch((vars) => {
const settings = getSettings(value.location); // get the latest version
setSettings(value.location, {
...settings,
distributionPlotSettings: {
showSummary: vars.showSummary,
logX: vars.logX,
expY: vars.expY,
format: vars.tickFormat,
title: vars.title,
minX: vars.minX,
maxX: vars.maxX,
actions: vars.distributionChartActions,
},
chartSettings: {
start: vars.diagramStart,
stop: vars.diagramStop,
count: vars.diagramCount,
},
});
onChange();
});
return () => subscription.unsubscribe();
}, [getSettings, setSettings, onChange, value.location, watch]);
const { getLeftPanelElement } = useContext(PlaygroundContext);
return (
<Modal container={getLeftPanelElement()} close={close}>
<Modal.Header>
Chart settings
{value.location.path.items.length ? (
<>
{" for "}
<span
title="Scroll to item"
className="cursor-pointer"
onClick={resetScroll}
>
{locationAsString(value.location)}
</span>{" "}
</>
) : (
""
)}
</Modal.Header>
<Modal.Body>
<ViewSettings
register={register}
withShowEditorSetting={false}
withFunctionSettings={withFunctionSettings}
disableLogXSetting={disableLogX}
/>
</Modal.Body>
</Modal>
);
};
export const ItemSettingsMenu: React.FC<Props> = (props) => {
const [isOpen, setIsOpen] = useState(false);
const { enableLocalSettings, setSettings, getSettings } =
useContext(ViewerContext);
const ref = useRef<HTMLDivElement | null>(null);
if (!enableLocalSettings) {
return null;
}
const settings = getSettings(props.value.location);
const resetScroll = () => {
if (!ref.current) return;
window.scroll({
top: ref.current.getBoundingClientRect().y + window.scrollY,
behavior: "smooth",
});
};
return (
<div className="flex gap-2" ref={ref}>
<CogIcon
className="h-5 w-5 cursor-pointer text-slate-400 hover:text-slate-500"
onClick={() => setIsOpen(!isOpen)}
/>
{settings.distributionPlotSettings || settings.chartSettings ? (
<button
onClick={() => {
setSettings(props.value.location, {
...settings,
distributionPlotSettings: undefined,
chartSettings: undefined,
});
props.onChange();
}}
className="text-xs px-1 py-0.5 rounded bg-slate-300"
>
Reset settings
</button>
) : null}
{isOpen ? (
<ItemSettingsModal
{...props}
close={() => setIsOpen(false)}
resetScroll={resetScroll}
/>
) : null}
</div>
);
};

View File

@ -0,0 +1,82 @@
import { SqValue } from "@quri/squiggle-lang";
import React, { useContext, useReducer } from "react";
import { Tooltip } from "../ui/Tooltip";
import { LocalItemSettings, MergedItemSettings } from "./utils";
import { ViewerContext } from "./ViewerContext";
type SettingsMenuParams = {
onChange: () => void; // used to notify VariableBox that settings have changed, so that VariableBox could re-render itself
};
type VariableBoxProps = {
value: SqValue;
heading: string;
renderSettingsMenu?: (params: SettingsMenuParams) => React.ReactNode;
children: (settings: MergedItemSettings) => React.ReactNode;
};
export const VariableBox: React.FC<VariableBoxProps> = ({
value: { location },
heading = "Error",
renderSettingsMenu,
children,
}) => {
const { setSettings, getSettings, getMergedSettings } =
useContext(ViewerContext);
// Since ViewerContext doesn't keep the actual settings, VariableBox won't rerender when setSettings is called.
// So we use `forceUpdate` to force rerendering.
const [_, forceUpdate] = useReducer((x) => x + 1, 0);
const settings = getSettings(location);
const setSettingsAndUpdate = (newSettings: LocalItemSettings) => {
setSettings(location, newSettings);
forceUpdate();
};
const toggleCollapsed = () => {
setSettingsAndUpdate({ ...settings, collapsed: !settings.collapsed });
};
const isTopLevel = location.path.items.length === 0;
const name = isTopLevel
? { result: "Result", bindings: "Bindings" }[location.path.root]
: location.path.items[location.path.items.length - 1];
return (
<div role={isTopLevel ? "status" : undefined}>
<header className="inline-flex space-x-1">
<Tooltip text={heading}>
<span
className="text-slate-500 font-mono text-sm cursor-pointer"
onClick={toggleCollapsed}
>
{name}:
</span>
</Tooltip>
{settings.collapsed ? (
<span
className="rounded p-0.5 bg-slate-200 text-slate-500 font-mono text-xs cursor-pointer"
onClick={toggleCollapsed}
>
...
</span>
) : renderSettingsMenu ? (
renderSettingsMenu({ onChange: forceUpdate })
) : null}
</header>
{settings.collapsed ? null : (
<div className="flex w-full">
{location.path.items.length ? (
<div
className="shrink-0 border-l-2 border-slate-200 hover:border-indigo-600 w-4 cursor-pointer"
onClick={toggleCollapsed}
></div>
) : null}
<div className="grow">{children(getMergedSettings(location))}</div>
</div>
)}
</div>
);
};

View File

@ -0,0 +1,35 @@
import { defaultEnvironment, SqValueLocation } from "@quri/squiggle-lang";
import React from "react";
import { LocalItemSettings, MergedItemSettings } from "./utils";
type ViewerContextShape = {
// Note that we don't store settings themselves in the context (that would cause rerenders of the entire tree on each settings update).
// Instead, we keep settings in local state and notify the global context via setSettings to pass them down the component tree again if it got rebuilt from scratch.
// See ./SquiggleViewer.tsx and ./VariableBox.tsx for other implementation details on this.
getSettings(location: SqValueLocation): LocalItemSettings;
getMergedSettings(location: SqValueLocation): MergedItemSettings;
setSettings(location: SqValueLocation, value: LocalItemSettings): void;
enableLocalSettings: boolean; // show local settings icon in the UI
};
export const ViewerContext = React.createContext<ViewerContextShape>({
getSettings: () => ({ collapsed: false }),
getMergedSettings: () => ({
collapsed: false,
// copy-pasted from SquiggleChart
chartSettings: {
start: 0,
stop: 10,
count: 100,
},
distributionPlotSettings: {
showSummary: false,
logX: false,
expY: false,
},
environment: defaultEnvironment,
height: 150,
}),
setSettings() {},
enableLocalSettings: false,
});

View File

@ -0,0 +1,99 @@
import React, { useCallback, useRef } from "react";
import { environment, SqValueLocation } from "@quri/squiggle-lang";
import { DistributionPlottingSettings } from "../DistributionChart";
import { FunctionChartSettings } from "../FunctionChart";
import { ExpressionViewer } from "./ExpressionViewer";
import { ViewerContext } from "./ViewerContext";
import {
LocalItemSettings,
locationAsString,
MergedItemSettings,
} from "./utils";
import { useSquiggle } from "../../lib/hooks";
import { SquiggleErrorAlert } from "../SquiggleErrorAlert";
type Props = {
/** The output of squiggle's run */
result: ReturnType<typeof useSquiggle>["result"];
width?: number;
height: number;
distributionPlotSettings: DistributionPlottingSettings;
/** Settings for displaying functions */
chartSettings: FunctionChartSettings;
/** Environment for further function executions */
environment: environment;
enableLocalSettings?: boolean;
};
type Settings = {
[k: string]: LocalItemSettings;
};
const defaultSettings: LocalItemSettings = { collapsed: false };
export const SquiggleViewer: React.FC<Props> = ({
result,
width,
height,
distributionPlotSettings,
chartSettings,
environment,
enableLocalSettings = false,
}) => {
// can't store settings in the state because we don't want to rerender the entire tree on every change
const settingsRef = useRef<Settings>({});
const getSettings = useCallback(
(location: SqValueLocation) => {
return settingsRef.current[locationAsString(location)] || defaultSettings;
},
[settingsRef]
);
const setSettings = useCallback(
(location: SqValueLocation, value: LocalItemSettings) => {
settingsRef.current[locationAsString(location)] = value;
},
[settingsRef]
);
const getMergedSettings = useCallback(
(location: SqValueLocation) => {
const localSettings = getSettings(location);
const result: MergedItemSettings = {
distributionPlotSettings: {
...distributionPlotSettings,
...(localSettings.distributionPlotSettings || {}),
},
chartSettings: {
...chartSettings,
...(localSettings.chartSettings || {}),
},
environment: {
...environment,
...(localSettings.environment || {}),
},
height: localSettings.height || height,
};
return result;
},
[distributionPlotSettings, chartSettings, environment, height, getSettings]
);
return (
<ViewerContext.Provider
value={{
getSettings,
setSettings,
getMergedSettings,
enableLocalSettings,
}}
>
{result.tag === "Ok" ? (
<ExpressionViewer value={result.value} width={width} />
) : (
<SquiggleErrorAlert error={result.value} />
)}
</ViewerContext.Provider>
);
};

View File

@ -0,0 +1,21 @@
import { DistributionPlottingSettings } from "../DistributionChart";
import { FunctionChartSettings } from "../FunctionChart";
import { environment, SqValueLocation } from "@quri/squiggle-lang";
export type LocalItemSettings = {
collapsed: boolean;
distributionPlotSettings?: Partial<DistributionPlottingSettings>;
chartSettings?: Partial<FunctionChartSettings>;
height?: number;
environment?: Partial<environment>;
};
export type MergedItemSettings = {
distributionPlotSettings: DistributionPlottingSettings;
chartSettings: FunctionChartSettings;
height: number;
environment: environment;
};
export const locationAsString = (location: SqValueLocation) =>
location.path.items.join(".");

View File

@ -0,0 +1,153 @@
import React from "react";
import * as yup from "yup";
import { UseFormRegister } from "react-hook-form";
import { InputItem } from "./ui/InputItem";
import { Checkbox } from "./ui/Checkbox";
import { HeadedSection } from "./ui/HeadedSection";
import { Text } from "./ui/Text";
import { defaultTickFormat } from "../lib/distributionSpecBuilder";
export const viewSettingsSchema = yup.object({}).shape({
chartHeight: yup.number().required().positive().integer().default(350),
showSummary: yup.boolean().required(),
showEditor: yup.boolean().required(),
logX: yup.boolean().required(),
expY: yup.boolean().required(),
tickFormat: yup.string().default(defaultTickFormat),
title: yup.string(),
minX: yup.number(),
maxX: yup.number(),
distributionChartActions: yup.boolean(),
diagramStart: yup.number().required().positive().integer().default(0).min(0),
diagramStop: yup.number().required().positive().integer().default(10).min(0),
diagramCount: yup.number().required().positive().integer().default(20).min(2),
});
type FormFields = yup.InferType<typeof viewSettingsSchema>;
// This component is used in two places: for global settings in SquigglePlayground, and for item-specific settings in modal dialogs.
export const ViewSettings: React.FC<{
withShowEditorSetting?: boolean;
withFunctionSettings?: boolean;
disableLogXSetting?: boolean;
register: UseFormRegister<FormFields>;
}> = ({
withShowEditorSetting = true,
withFunctionSettings = true,
disableLogXSetting,
register,
}) => {
return (
<div className="space-y-6 p-3 divide-y divide-gray-200 max-w-xl">
<HeadedSection title="General Display Settings">
<div className="space-y-4">
{withShowEditorSetting ? (
<Checkbox
name="showEditor"
register={register}
label="Show code editor on left"
/>
) : null}
<InputItem
name="chartHeight"
type="number"
register={register}
label="Chart Height (in pixels)"
/>
</div>
</HeadedSection>
<div className="pt-8">
<HeadedSection title="Distribution Display Settings">
<div className="space-y-2">
<Checkbox
register={register}
name="logX"
label="Show x scale logarithmically"
disabled={disableLogXSetting}
tooltip={
disableLogXSetting
? "Your distribution has mass lower than or equal to 0. Log only works on strictly positive values."
: undefined
}
/>
<Checkbox
register={register}
name="expY"
label="Show y scale exponentially"
/>
<Checkbox
register={register}
name="distributionChartActions"
label="Show vega chart controls"
/>
<Checkbox
register={register}
name="showSummary"
label="Show summary statistics"
/>
<InputItem
name="minX"
type="number"
register={register}
label="Min X Value"
/>
<InputItem
name="maxX"
type="number"
register={register}
label="Max X Value"
/>
<InputItem
name="title"
type="text"
register={register}
label="Title"
/>
<InputItem
name="tickFormat"
type="text"
register={register}
label="Tick Format"
/>
</div>
</HeadedSection>
</div>
{withFunctionSettings ? (
<div className="pt-8">
<HeadedSection title="Function Display Settings">
<div className="space-y-6">
<Text>
When displaying functions of single variables that return
numbers or distributions, we need to use defaults for the
x-axis. We need to select a minimum and maximum value of x to
sample, and a number n of the number of points to sample.
</Text>
<div className="space-y-4">
<InputItem
type="number"
name="diagramStart"
register={register}
label="Min X Value"
/>
<InputItem
type="number"
name="diagramStop"
register={register}
label="Max X Value"
/>
<InputItem
type="number"
name="diagramCount"
register={register}
label="Points between X min and X max to sample"
/>
</div>
</div>
</HeadedSection>
</div>
) : null}
</div>
);
};

View File

@ -0,0 +1,22 @@
import clsx from "clsx";
import React from "react";
type Props = {
onClick: () => void;
children: React.ReactNode;
wide?: boolean; // stretch the button horizontally
};
export const Button: React.FC<Props> = ({ onClick, wide, children }) => {
return (
<button
className={clsx(
"rounded-md py-1.5 px-2 bg-slate-500 text-white text-xs font-semibold flex items-center justify-center space-x-1",
wide && "w-full"
)}
onClick={onClick}
>
{children}
</button>
);
};

View File

@ -0,0 +1,37 @@
import clsx from "clsx";
import React from "react";
import { Path, UseFormRegister, FieldValues } from "react-hook-form";
export function Checkbox<T extends FieldValues>({
name,
label,
register,
disabled,
tooltip,
}: {
name: Path<T>;
label: string;
register: UseFormRegister<T>;
disabled?: boolean;
tooltip?: string;
}) {
return (
<label className="flex items-center" title={tooltip}>
<input
type="checkbox"
disabled={disabled}
{...register(name)}
className="form-checkbox focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
/>
{/* Clicking on the div makes the checkbox lose focus while mouse button is pressed, leading to annoying blinking; I couldn't figure out how to fix this. */}
<div
className={clsx(
"ml-3 text-sm font-medium",
disabled ? "text-gray-400" : "text-gray-700"
)}
>
{label}
</div>
</label>
);
}

View File

@ -0,0 +1,13 @@
import React from "react";
export const HeadedSection: React.FC<{
title: string;
children: React.ReactNode;
}> = ({ title, children }) => (
<div>
<header className="text-lg leading-6 font-medium text-gray-900">
{title}
</header>
<div className="mt-4">{children}</div>
</div>
);

View File

@ -0,0 +1,25 @@
import React from "react";
import { Path, UseFormRegister, FieldValues } from "react-hook-form";
export function InputItem<T extends FieldValues>({
name,
label,
type,
register,
}: {
name: Path<T>;
label: string;
type: "number" | "text" | "color";
register: UseFormRegister<T>;
}) {
return (
<label className="block">
<div className="text-sm font-medium text-gray-600 mb-1">{label}</div>
<input
type={type}
{...register(name, { valueAsNumber: type === "number" })}
className="form-input max-w-lg block w-full shadow-sm focus:ring-indigo-500 focus:border-indigo-500 sm:max-w-xs sm:text-sm border-gray-300 rounded-md"
/>
</label>
);
}

View File

@ -0,0 +1,184 @@
import { motion } from "framer-motion";
import React, { useContext } from "react";
import * as ReactDOM from "react-dom";
import { XIcon } from "@heroicons/react/solid";
import clsx from "clsx";
import { useWindowScroll, useWindowSize } from "react-use";
type ModalContextShape = {
close: () => void;
};
const ModalContext = React.createContext<ModalContextShape>({
close: () => undefined,
});
const Overlay: React.FC = () => {
const { close } = useContext(ModalContext);
return (
<motion.div
className="absolute inset-0 -z-10 bg-black"
initial={{ opacity: 0 }}
animate={{ opacity: 0.1 }}
onClick={close}
/>
);
};
const ModalHeader: React.FC<{
children: React.ReactNode;
}> = ({ children }) => {
const { close } = useContext(ModalContext);
return (
<header className="px-5 py-3 border-b border-gray-200 font-bold flex items-center justify-between">
<div>{children}</div>
<button
className="px-1 bg-transparent cursor-pointer text-gray-700 hover:text-accent-500"
type="button"
onClick={close}
>
<XIcon className="h-5 w-5 cursor-pointer text-slate-400 hover:text-slate-500" />
</button>
</header>
);
};
// TODO - get rid of forwardRef, support `focus` and `{...hotkeys}` via smart props
const ModalBody = React.forwardRef<
HTMLDivElement,
JSX.IntrinsicElements["div"]
>(function ModalBody(props, ref) {
return <div ref={ref} className="px-5 py-3 overflow-auto" {...props} />;
});
const ModalFooter: React.FC<{ children: React.ReactNode }> = ({ children }) => (
<div className="px-5 py-3 border-t border-gray-200">{children}</div>
);
const ModalWindow: React.FC<{
children: React.ReactNode;
container?: HTMLElement;
}> = ({ children, container }) => {
// This component works in two possible modes:
// 1. container mode - the modal is rendered inside a container element
// 2. centered mode - the modal is rendered in the middle of the screen
// The mode is determined by the presence of the `container` prop and by whether the available space is large enough to fit the modal.
// Necessary for container mode - need to reposition the modal on scroll and resize events.
useWindowSize();
useWindowScroll();
let position:
| {
left: number;
top: number;
maxWidth: number;
maxHeight: number;
transform: string;
}
| undefined;
// If available space in `visibleRect` is smaller than these, fallback to positioning in the middle of the screen.
const minWidth = 384;
const minHeight = 300;
const offset = 8;
const naturalWidth = 576; // maximum possible width; modal tries to take this much space, but can be smaller
if (container) {
const { clientWidth: screenWidth, clientHeight: screenHeight } =
document.documentElement;
const rect = container?.getBoundingClientRect();
const visibleRect = {
left: Math.max(rect.left, 0),
right: Math.min(rect.right, screenWidth),
top: Math.max(rect.top, 0),
bottom: Math.min(rect.bottom, screenHeight),
};
const maxWidth = visibleRect.right - visibleRect.left - 2 * offset;
const maxHeight = visibleRect.bottom - visibleRect.top - 2 * offset;
const center = {
left: visibleRect.left + (visibleRect.right - visibleRect.left) / 2,
top: visibleRect.top + (visibleRect.bottom - visibleRect.top) / 2,
};
position = {
left: center.left,
top: center.top,
transform: "translate(-50%, -50%)",
maxWidth,
maxHeight,
};
if (maxWidth < minWidth || maxHeight < minHeight) {
position = undefined; // modal is hard to fit in the container, fallback to positioning it in the middle of the screen
}
}
return (
<div
className={clsx(
"bg-white rounded-md shadow-toast flex flex-col overflow-auto border",
position ? "fixed" : null
)}
style={{
width: naturalWidth,
...(position ?? {
maxHeight: "calc(100% - 20px)",
maxWidth: "calc(100% - 20px)",
width: naturalWidth,
}),
}}
>
{children}
</div>
);
};
type ModalType = React.FC<{
children: React.ReactNode;
container?: HTMLElement; // if specified, modal will be positioned over the visible part of the container, if it's not too small
close: () => void;
}> & {
Body: typeof ModalBody;
Footer: typeof ModalFooter;
Header: typeof ModalHeader;
};
export const Modal: ModalType = ({ children, container, close }) => {
const [el] = React.useState(() => document.createElement("div"));
React.useEffect(() => {
document.body.appendChild(el);
return () => {
document.body.removeChild(el);
};
}, [el]);
React.useEffect(() => {
const handleEscape = (e: KeyboardEvent) => {
if (e.key === "Escape") {
close();
}
};
document.addEventListener("keydown", handleEscape);
return () => {
document.removeEventListener("keydown", handleEscape);
};
}, [close]);
const modal = (
<ModalContext.Provider value={{ close }}>
<div className="squiggle">
<div className="fixed inset-0 z-40 flex justify-center items-center">
<Overlay />
<ModalWindow container={container}>{children}</ModalWindow>
</div>
</div>
</ModalContext.Provider>
);
return ReactDOM.createPortal(modal, container || el);
};
Modal.Body = ModalBody;
Modal.Footer = ModalFooter;
Modal.Header = ModalHeader;

View File

@ -0,0 +1,60 @@
import React, { Fragment } from "react";
import { Tab } from "@headlessui/react";
import clsx from "clsx";
type StyledTabProps = {
name: string;
icon: (props: React.ComponentProps<"svg">) => JSX.Element;
};
type StyledTabType = React.FC<StyledTabProps> & {
List: React.FC<{ children: React.ReactNode }>;
Group: typeof Tab.Group;
Panels: typeof Tab.Panels;
Panel: typeof Tab.Panel;
};
export const StyledTab: StyledTabType = ({ name, icon: Icon }) => {
return (
<Tab as={Fragment}>
{({ selected }) => (
<button className="group flex rounded-md focus:outline-none focus-visible:ring-offset-gray-100">
<span
className={clsx(
"p-1 pl-2.5 pr-3.5 rounded-md flex items-center text-sm font-medium",
selected && "bg-white shadow-sm ring-1 ring-black ring-opacity-5"
)}
>
<Icon
className={clsx(
"-ml-0.5 mr-2 h-4 w-4",
selected
? "text-slate-500"
: "text-gray-400 group-hover:text-gray-900"
)}
/>
<span
className={clsx(
selected
? "text-gray-900"
: "text-gray-600 group-hover:text-gray-900"
)}
>
{name}
</span>
</span>
</button>
)}
</Tab>
);
};
StyledTab.List = ({ children }) => (
<Tab.List className="flex w-fit p-0.5 rounded-md bg-slate-100 hover:bg-slate-200">
{children}
</Tab.List>
);
StyledTab.Group = Tab.Group;
StyledTab.Panels = Tab.Panels;
StyledTab.Panel = Tab.Panel;

View File

@ -0,0 +1,5 @@
import React from "react";
export const Text: React.FC<{ children: React.ReactNode }> = ({ children }) => (
<p className="text-sm text-gray-500">{children}</p>
);

View File

@ -0,0 +1,47 @@
import { RefreshIcon } from "@heroicons/react/solid";
import clsx from "clsx";
import React from "react";
type IconType = (props: React.ComponentProps<"svg">) => JSX.Element;
type Props = {
status: boolean;
onChange: (status: boolean) => void;
texts: [string, string];
icons: [IconType, IconType];
spinIcon?: boolean;
};
export const Toggle: React.FC<Props> = ({
status,
onChange,
texts: [onText, offText],
icons: [OnIcon, OffIcon],
spinIcon,
}) => {
const CurrentIcon = status ? OnIcon : OffIcon;
return (
<button
className={clsx(
"rounded-md py-0.5 bg-slate-500 text-white text-xs font-semibold flex items-center space-x-1",
status ? "bg-slate-500" : "bg-gray-400",
status ? "pl-1 pr-3" : "pl-3 pr-1",
!status && "flex-row-reverse space-x-reverse"
)}
onClick={() => onChange(!status)}
>
<div className="relative w-6 h-6" key={String(spinIcon)}>
<CurrentIcon
className={clsx(
"w-6 h-6 absolute opacity-100",
spinIcon && "animate-hide"
)}
/>
{spinIcon && (
<RefreshIcon className="w-6 h-6 absolute opacity-0 animate-appear-and-spin" />
)}
</div>
<span>{status ? onText : offText}</span>
</button>
);
};

View File

@ -0,0 +1,64 @@
import React, { cloneElement, useState } from "react";
import { AnimatePresence, motion } from "framer-motion";
import {
flip,
shift,
useDismiss,
useFloating,
useHover,
useInteractions,
useRole,
} from "@floating-ui/react-dom-interactions";
interface Props {
text: string;
children: JSX.Element;
}
export const Tooltip: React.FC<Props> = ({ text, children }) => {
const [isOpen, setIsOpen] = useState(false);
const { x, y, reference, floating, strategy, context } = useFloating({
placement: "top",
open: isOpen,
onOpenChange: setIsOpen,
middleware: [shift(), flip()],
});
const { getReferenceProps, getFloatingProps } = useInteractions([
useHover(context),
useRole(context, { role: "tooltip" }),
useDismiss(context),
]);
return (
<>
{cloneElement(
children,
getReferenceProps({ ref: reference, ...children.props })
)}
<AnimatePresence>
{isOpen && (
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
transition={{ duration: 0.15 }}
{...getFloatingProps({
ref: floating,
className:
"text-xs p-2 border border-gray-300 rounded bg-white z-10",
style: {
position: strategy,
top: y ?? 0,
left: x ?? 0,
},
})}
>
<div className="font-mono whitespace-pre">{text}</div>
</motion.div>
)}
</AnimatePresence>
</>
);
};

View File

@ -1,14 +1,5 @@
export { SqProject } from "@quri/squiggle-lang/";
export { SquiggleChart } from "./components/SquiggleChart"; export { SquiggleChart } from "./components/SquiggleChart";
export { export { SquiggleEditor } from "./components/SquiggleEditor";
SquiggleEditor, export { SquigglePlayground } from "./components/SquigglePlayground";
SquigglePartial,
renderSquiggleEditorToDom,
renderSquigglePartialToDom,
} from "./components/SquiggleEditor";
export {
SquigglePlayground,
renderSquigglePlaygroundToDom,
} from "./components/SquigglePlayground";
export { SquiggleContainer } from "./components/SquiggleContainer"; export { SquiggleContainer } from "./components/SquiggleContainer";
export { mergeBindings } from "@quri/squiggle-lang";

View File

@ -0,0 +1,398 @@
import { VisualizationSpec } from "react-vega";
import type { LogScale, LinearScale, PowScale, TimeScale } from "vega";
export type DistributionChartSpecOptions = {
/** Set the x scale to be logarithmic by deault */
logX: boolean;
/** Set the y scale to be exponential by deault */
expY: boolean;
/** The minimum x coordinate shown on the chart */
minX?: number;
/** The maximum x coordinate shown on the chart */
maxX?: number;
/** The title of the chart */
title?: string;
/** The formatting of the ticks */
format?: string;
/** Whether the x-axis should be dates or numbers */
xAxisType?: "number" | "dateTime";
};
/** X Scales */
export const linearXScale: LinearScale = {
name: "xscale",
clamp: true,
type: "linear",
range: "width",
zero: false,
nice: false,
};
export const logXScale: LogScale = {
name: "xscale",
type: "log",
range: "width",
zero: false,
base: 10,
nice: false,
clamp: true,
};
export const timeXScale: TimeScale = {
name: "xscale",
clamp: true,
type: "time",
range: "width",
nice: false,
};
/** Y Scales */
export const linearYScale: LinearScale = {
name: "yscale",
type: "linear",
range: "height",
zero: true,
};
export const expYScale: PowScale = {
name: "yscale",
type: "pow",
exponent: 0.1,
range: "height",
zero: true,
nice: false,
};
export const defaultTickFormat = ".9~s";
export const timeTickFormat = "%b %d, %Y %H:%M";
const width = 500;
export function buildVegaSpec(
specOptions: DistributionChartSpecOptions & { maxY: number }
): VisualizationSpec {
const {
title,
minX,
maxX,
logX,
expY,
xAxisType = "number",
maxY,
} = specOptions;
const dateTime = xAxisType === "dateTime";
// some fallbacks
const format = specOptions?.format
? specOptions.format
: dateTime
? timeTickFormat
: defaultTickFormat;
let xScale = dateTime ? timeXScale : logX ? logXScale : linearXScale;
xScale = {
...xScale,
domain: [minX ?? 0, maxX ?? 1],
domainMin: minX,
domainMax: maxX,
};
let yScale = expY ? expYScale : linearYScale;
yScale = { ...yScale, domain: [0, maxY ?? 1], domainMin: 0, domainMax: maxY };
const spec: VisualizationSpec = {
$schema: "https://vega.github.io/schema/vega/v5.json",
description: "Squiggle plot chart",
width: width,
height: 100,
padding: 5,
data: [{ name: "data" }, { name: "domain" }, { name: "samples" }],
signals: [
{
name: "hover",
value: null,
on: [
{ events: "mouseover", update: "datum" },
{ events: "mouseout", update: "null" },
],
},
{
name: "position",
value: "[0, 0]",
on: [
{ events: "mousemove", update: "xy() " },
{ events: "mouseout", update: "null" },
],
},
{
name: "position_scaled",
value: null,
update: "isArray(position) ? invert('xscale', position[0]) : ''",
},
],
scales: [
xScale,
yScale,
{
name: "color",
type: "ordinal",
domain: {
data: "data",
field: "name",
},
range: { scheme: "blues" },
},
],
axes: [
{
orient: "bottom",
scale: "xscale",
labelColor: "#727d93",
tickColor: "#fff",
tickOpacity: 0.0,
domainColor: "#fff",
domainOpacity: 0.0,
format: format,
tickCount: dateTime ? 3 : 10,
labelOverlap: "greedy",
},
],
marks: [
{
name: "all_distributions",
type: "group",
from: {
facet: {
name: "distribution_facet",
data: "data",
groupby: ["name"],
},
},
marks: [
{
name: "continuous_distribution",
type: "group",
from: {
facet: {
name: "continuous_facet",
data: "distribution_facet",
field: "continuous",
},
},
encode: {
update: {},
},
marks: [
{
name: "continuous_area",
type: "area",
from: {
data: "continuous_facet",
},
encode: {
update: {
interpolate: { value: "linear" },
x: {
scale: "xscale",
field: "x",
},
y: {
scale: "yscale",
field: "y",
},
fill: {
scale: "color",
field: { parent: "name" },
},
y2: {
scale: "yscale",
value: 0,
},
fillOpacity: {
value: 1,
},
},
},
},
],
},
{
name: "discrete_distribution",
type: "group",
from: {
facet: {
name: "discrete_facet",
data: "distribution_facet",
field: "discrete",
},
},
marks: [
{
type: "rect",
from: {
data: "discrete_facet",
},
encode: {
enter: {
width: {
value: 1,
},
},
update: {
x: {
scale: "xscale",
field: "x",
},
y: {
scale: "yscale",
field: "y",
},
y2: {
scale: "yscale",
value: 0,
},
fill: {
scale: "color",
field: { parent: "name" },
},
},
},
},
{
type: "symbol",
from: {
data: "discrete_facet",
},
encode: {
enter: {
shape: {
value: "circle",
},
size: [{ value: 100 }],
tooltip: {
signal: dateTime
? "{ probability: datum.y, value: datetime(datum.x) }"
: "{ probability: datum.y, value: datum.x }",
},
},
update: {
x: {
scale: "xscale",
field: "x",
offset: 0.5, // if this is not included, the circles are slightly left of center.
},
y: {
scale: "yscale",
field: "y",
},
fill: {
scale: "color",
field: { parent: "name" },
},
},
},
},
],
},
],
},
{
name: "sampleset",
type: "rect",
from: { data: "samples" },
encode: {
enter: {
x: { scale: "xscale", field: "data" },
width: { value: 0.1 },
y: { value: 25, offset: { signal: "height" } },
height: { value: 5 },
},
},
},
{
type: "text",
name: "announcer",
interactive: false,
encode: {
enter: {
x: { signal: String(width), offset: 1 }, // vega would prefer its internal ` "width" ` variable, but that breaks the squiggle playground. Just setting it to the same var as used elsewhere in the spec achieves the same result.
fill: { value: "black" },
fontSize: { value: 20 },
align: { value: "right" },
},
update: {
text: {
signal: dateTime
? "position_scaled ? utcyear(position_scaled) + '-' + utcmonth(position_scaled) + '-' + utcdate(position_scaled) + 'T' + utchours(position_scaled)+':' +utcminutes(position_scaled) : ''"
: "position_scaled ? format(position_scaled, ',.4r') : ''",
},
},
},
},
{
type: "rule",
interactive: false,
encode: {
enter: {
x: { value: 0 },
y: { scale: "yscale", value: 0 },
y2: {
signal: "height",
offset: 2,
},
strokeDash: { value: [5, 5] },
},
update: {
x: {
signal:
"position ? position[0] < 0 ? null : position[0] > width ? null : position[0]: null",
},
opacity: {
signal:
"position ? position[0] < 0 ? 0 : position[0] > width ? 0 : 1 : 0",
},
},
},
},
],
legends: [
{
fill: "color",
orient: "top",
labelFontSize: 12,
encode: {
symbols: {
update: {
fill: [
{ test: "length(domain('color')) == 1", value: "transparent" },
{ scale: "color", field: "value" },
],
},
},
labels: {
interactive: true,
update: {
fill: [
{ test: "length(domain('color')) == 1", value: "transparent" },
{ value: "black" },
],
},
},
},
},
],
...(title && {
title: {
text: title,
},
}),
};
return spec;
}

View File

@ -0,0 +1,5 @@
import { SqShape } from "@quri/squiggle-lang";
export const hasMassBelowZero = (shape: SqShape) =>
shape.continuous.some((x) => x.x <= 0) ||
shape.discrete.some((x) => x.x <= 0);

View File

@ -1,63 +0,0 @@
import {
bindings,
environment,
jsImports,
run,
runPartial,
} from "@quri/squiggle-lang";
import { useEffect, useMemo, useRef } from "react";
type SquiggleArgs<T extends ReturnType<typeof run | typeof runPartial>> = {
code: string;
bindings?: bindings;
jsImports?: jsImports;
environment?: environment;
onChange?: (expr: Extract<T, { tag: "Ok" }>["value"] | undefined) => void;
};
const useSquiggleAny = <T extends ReturnType<typeof run | typeof runPartial>>(
args: SquiggleArgs<T>,
f: (...args: Parameters<typeof run>) => T
) => {
// We're using observable, where div elements can have a `value` property:
// https://observablehq.com/@observablehq/introduction-to-views
//
// This is here to get the 'viewof' part of:
// viewof env = cell('normal(0,1)')
// to work
const ref = useRef<
HTMLDivElement & { value?: Extract<T, { tag: "Ok" }>["value"] }
>(null);
const result: T = useMemo<T>(
() => f(args.code, args.bindings, args.environment, args.jsImports),
[f, args.code, args.bindings, args.environment, args.jsImports]
);
useEffect(() => {
if (!ref.current) return;
ref.current.value = result.tag === "Ok" ? result.value : undefined;
ref.current.dispatchEvent(new CustomEvent("input"));
}, [result]);
const { onChange } = args;
useEffect(() => {
onChange?.(result.tag === "Ok" ? result.value : undefined);
}, [result, onChange]);
return {
result, // squiggleExpression or externalBindings
observableRef: ref, // can be passed to outermost <div> if you want to use your component as an observablehq's view
};
};
export const useSquigglePartial = (
args: SquiggleArgs<ReturnType<typeof runPartial>>
) => {
return useSquiggleAny(args, runPartial);
};
export const useSquiggle = (args: SquiggleArgs<ReturnType<typeof run>>) => {
return useSquiggleAny(args, run);
};

View File

@ -0,0 +1,3 @@
export { useMaybeControlledValue } from "./useMaybeControlledValue";
export { useSquiggle } from "./useSquiggle";
export { useRunnerState } from "./useRunnerState";

View File

@ -0,0 +1,22 @@
import { useState } from "react";
type ControlledValueArgs<T> = {
value?: T;
defaultValue: T;
onChange?: (x: T) => void;
};
export function useMaybeControlledValue<T>(
args: ControlledValueArgs<T>
): [T, (x: T) => void] {
let [uncontrolledValue, setUncontrolledValue] = useState(args.defaultValue);
let value = args.value ?? uncontrolledValue;
let onChange = (newValue: T) => {
if (args.value === undefined) {
// uncontrolled mode
setUncontrolledValue(newValue);
}
args.onChange?.(newValue);
};
return [value, onChange];
}

View File

@ -0,0 +1,100 @@
import { useLayoutEffect, useReducer } from "react";
type State = {
autorunMode: boolean;
renderedCode: string;
// "prepared" is for rendering a spinner; "run" for executing squiggle code; then it gets back to "none" on the next render
runningState: "none" | "prepared" | "run";
executionId: number;
};
const buildInitialState = (code: string): State => ({
autorunMode: true,
renderedCode: "",
runningState: "none",
executionId: 1,
});
type Action =
| {
type: "SET_AUTORUN_MODE";
value: boolean;
code: string;
}
| {
type: "PREPARE_RUN";
}
| {
type: "RUN";
code: string;
}
| {
type: "STOP_RUN";
};
const reducer = (state: State, action: Action): State => {
switch (action.type) {
case "SET_AUTORUN_MODE":
return {
...state,
autorunMode: action.value,
};
case "PREPARE_RUN":
return {
...state,
runningState: "prepared",
};
case "RUN":
return {
...state,
runningState: "run",
renderedCode: action.code,
executionId: state.executionId + 1,
};
case "STOP_RUN":
return {
...state,
runningState: "none",
};
}
};
export const useRunnerState = (code: string) => {
const [state, dispatch] = useReducer(reducer, buildInitialState(code));
useLayoutEffect(() => {
if (state.runningState === "prepared") {
// this is necessary for async playground loading - otherwise it executes the code synchronously on the initial load
// (it's surprising that this is necessary, but empirically it _is_ necessary, both with `useEffect` and `useLayoutEffect`)
setTimeout(() => {
dispatch({ type: "RUN", code });
}, 0);
} else if (state.runningState === "run") {
dispatch({ type: "STOP_RUN" });
}
}, [state.runningState, code]);
const run = () => {
// The rest will be handled by dispatches above on following renders, but we need to update the spinner first.
dispatch({ type: "PREPARE_RUN" });
};
if (
state.autorunMode &&
state.renderedCode !== code &&
state.runningState === "none"
) {
run();
}
return {
run,
autorunMode: state.autorunMode,
renderedCode: state.renderedCode,
isRunning: state.runningState !== "none",
executionId: state.executionId,
setAutorunMode: (newValue: boolean) => {
dispatch({ type: "SET_AUTORUN_MODE", value: newValue, code });
},
};
};

View File

@ -0,0 +1,97 @@
import {
result,
SqError,
SqProject,
SqRecord,
SqValue,
environment,
} from "@quri/squiggle-lang";
import { useEffect, useMemo } from "react";
import { JsImports, jsImportsToSquiggleCode } from "../jsImports";
import * as uuid from "uuid";
type SquiggleArgs = {
environment?: environment;
code: string;
executionId?: number;
jsImports?: JsImports;
project?: SqProject;
continues?: string[];
onChange?: (expr: SqValue | undefined, sourceName: string) => void;
};
export type ResultAndBindings = {
result: result<SqValue, SqError>;
bindings: SqRecord;
};
const importSourceName = (sourceName: string) => "imports-" + sourceName;
const defaultContinues = [];
export const useSquiggle = (args: SquiggleArgs): ResultAndBindings => {
const project = useMemo(() => {
if (args.project) {
return args.project;
} else {
const p = SqProject.create();
if (args.environment) {
p.setEnvironment(args.environment);
}
return p;
}
}, [args.project, args.environment]);
const sourceName = useMemo(() => uuid.v4(), []);
const env = project.getEnvironment();
const continues = args.continues || defaultContinues;
const result = useMemo(
() => {
project.setSource(sourceName, args.code);
let fullContinues = continues;
if (args.jsImports && Object.keys(args.jsImports).length) {
const importsSource = jsImportsToSquiggleCode(args.jsImports);
project.setSource(importSourceName(sourceName), importsSource);
fullContinues = continues.concat(importSourceName(sourceName));
}
project.setContinues(sourceName, fullContinues);
project.run(sourceName);
const result = project.getResult(sourceName);
const bindings = project.getBindings(sourceName);
return { result, bindings };
},
// This complains about executionId not being used inside the function body.
// This is on purpose, as executionId simply allows you to run the squiggle
// code again
// eslint-disable-next-line react-hooks/exhaustive-deps
[
args.code,
args.jsImports,
args.executionId,
sourceName,
continues,
project,
env,
]
);
const { onChange } = args;
useEffect(() => {
onChange?.(
result.result.tag === "Ok" ? result.result.value : undefined,
sourceName
);
}, [result, onChange, sourceName]);
useEffect(() => {
return () => {
project.removeSource(sourceName);
if (project.getSource(importSourceName(sourceName)))
project.removeSource(importSourceName(sourceName));
};
}, [project, sourceName]);
return result;
};

View File

@ -0,0 +1,51 @@
type JsImportsValue =
| number
| string
| JsImportsValue[]
| {
[k: string]: JsImportsValue;
};
export type JsImports = {
[k: string]: JsImportsValue;
};
const quote = (arg: string) => `"${arg.replace(new RegExp('"', "g"), '\\"')}"`;
const jsImportsValueToSquiggleCode = (v: JsImportsValue): string => {
if (typeof v === "number") {
return String(v);
} else if (typeof v === "string") {
return quote(v);
} else if (v instanceof Array) {
return "[" + v.map((x) => jsImportsValueToSquiggleCode(x)) + "]";
} else {
if (Object.keys(v).length) {
return (
"{" +
Object.entries(v)
.map(([k, v]) => `${quote(k)}:${jsImportsValueToSquiggleCode(v)},`)
.join("") +
"}"
);
} else {
return "0"; // squiggle doesn't support empty `{}`
}
}
};
export const jsImportsToSquiggleCode = (v: JsImports) => {
const validId = new RegExp("[a-zA-Z][[a-zA-Z0-9]*");
let result = Object.entries(v)
.map(([k, v]) => {
if (!k.match(validId)) {
return ""; // skipping without warnings; can be improved
}
return `$${k} = ${jsImportsValueToSquiggleCode(v)}\n`;
})
.join("");
if (!result) {
result = "$__no_valid_imports__ = 1"; // without this generated squiggle code can be invalid
}
return result;
};

View File

@ -0,0 +1,83 @@
import * as yup from "yup";
import {
SqValue,
SqValueTag,
SqDistribution,
result,
SqRecord,
} from "@quri/squiggle-lang";
export type LabeledDistribution = {
name: string;
distribution: SqDistribution;
color?: string;
};
export type Plot = {
distributions: LabeledDistribution[];
};
function error<a, b>(err: b): result<a, b> {
return { tag: "Error", value: err };
}
function ok<a, b>(x: a): result<a, b> {
return { tag: "Ok", value: x };
}
const schema = yup
.object()
.noUnknown()
.strict()
.shape({
distributions: yup
.array()
.required()
.of(
yup.object().required().shape({
name: yup.string().required(),
distribution: yup.mixed().required(),
})
),
});
type JsonObject =
| string
| { [key: string]: JsonObject }
| JsonObject[]
| SqDistribution;
function toJson(val: SqValue): JsonObject {
if (val.tag === SqValueTag.String) {
return val.value;
} else if (val.tag === SqValueTag.Record) {
return toJsonRecord(val.value);
} else if (val.tag === SqValueTag.Array) {
return val.value.getValues().map(toJson);
} else if (val.tag === SqValueTag.Distribution) {
return val.value;
} else {
throw new Error("Could not parse object of type " + val.tag);
}
}
function toJsonRecord(val: SqRecord): JsonObject {
let recordObject: JsonObject = {};
val.entries().forEach(([key, value]) => (recordObject[key] = toJson(value)));
return recordObject;
}
export function parsePlot(record: SqRecord): result<Plot, string> {
try {
const plotRecord = schema.validateSync(toJsonRecord(record));
if (plotRecord.distributions) {
return ok({ distributions: plotRecord.distributions.map((x) => x) });
} else {
// I have no idea why yup's typings thinks this is possible
return error("no distributions field. Should never get here");
}
} catch (e) {
const message = e instanceof Error ? e.message : "Unknown error";
return error(message);
}
}

View File

@ -0,0 +1,53 @@
import { result, resultMap, SqValueTag } from "@quri/squiggle-lang";
import { ResultAndBindings } from "./hooks/useSquiggle";
export function flattenResult<a, b>(x: result<a, b>[]): result<a[], b> {
if (x.length === 0) {
return { tag: "Ok", value: [] };
} else {
if (x[0].tag === "Error") {
return x[0];
} else {
let rest = flattenResult(x.splice(1));
if (rest.tag === "Error") {
return rest;
} else {
return { tag: "Ok", value: [x[0].value].concat(rest.value) };
}
}
}
}
export function resultBind<a, b, c>(
x: result<a, b>,
fn: (y: a) => result<c, b>
): result<c, b> {
if (x.tag === "Ok") {
return fn(x.value);
} else {
return x;
}
}
export function all(arr: boolean[]): boolean {
return arr.reduce((x, y) => x && y, true);
}
export function some(arr: boolean[]): boolean {
return arr.reduce((x, y) => x || y, false);
}
export function getValueToRender({ result, bindings }: ResultAndBindings) {
return resultMap(result, (value) =>
value.tag === SqValueTag.Void ? bindings.asValue() : value
);
}
export function getErrorLocations(result: ResultAndBindings["result"]) {
if (result.tag === "Error") {
const location = result.value.location();
return location ? [location] : [];
} else {
return [];
}
}

View File

@ -3,7 +3,7 @@ import { Canvas, Meta, Story, Props } from "@storybook/addon-docs";
<Meta title="Squiggle/SquiggleChart" component={SquiggleChart} /> <Meta title="Squiggle/SquiggleChart" component={SquiggleChart} />
export const Template = SquiggleChart; export const Template = (props) => <SquiggleChart {...props} />;
/* /*
We have to hardcode a width here, because otherwise some interaction with We have to hardcode a width here, because otherwise some interaction with
Storybook creates an infinite loop with the internal width Storybook creates an infinite loop with the internal width
@ -29,7 +29,7 @@ could be continuous, discrete or mixed.
<Story <Story
name="Continuous Symbolic" name="Continuous Symbolic"
args={{ args={{
squiggleString: "normal(5,2)", code: "normal(5,2)",
width, width,
}} }}
> >
@ -43,7 +43,7 @@ could be continuous, discrete or mixed.
<Story <Story
name="Continuous Pointset" name="Continuous Pointset"
args={{ args={{
squiggleString: "toPointSet(normal(5,2))", code: "PointSet.fromDist(normal(5,2))",
width, width,
}} }}
> >
@ -57,7 +57,7 @@ could be continuous, discrete or mixed.
<Story <Story
name="Continuous SampleSet" name="Continuous SampleSet"
args={{ args={{
squiggleString: "toSampleSet(normal(5,2), 1000)", code: "SampleSet.fromDist(normal(5,2))",
width, width,
}} }}
> >
@ -71,7 +71,23 @@ could be continuous, discrete or mixed.
<Story <Story
name="Discrete" name="Discrete"
args={{ args={{
squiggleString: "mx(0, 1, 3, 5, 8, 10, [0.1, 0.8, 0.5, 0.3, 0.2, 0.1])", code: "mx(0, 1, 3, 5, 8, 10, [0.1, 0.8, 0.5, 0.3, 0.2, 0.1])",
width,
}}
>
{Template.bind({})}
</Story>
</Canvas>
### Date Distribution
<Canvas>
<Story
name="Date Distribution"
args={{
code: "mx(1661819770311, 1661829770311, 1661839770311)",
width,
xAxisType: "dateTime",
width, width,
}} }}
> >
@ -85,8 +101,34 @@ could be continuous, discrete or mixed.
<Story <Story
name="Mixed" name="Mixed"
args={{ args={{
squiggleString: code: "mx(0, 1, 3, 5, 8, normal(8, 1), [0.1, 0.3, 0.4, 0.35, 0.2, 0.8])",
"mx(0, 1, 3, 5, 8, normal(8, 1), [0.1, 0.3, 0.4, 0.35, 0.2, 0.8])", width,
}}
>
{Template.bind({})}
</Story>
</Canvas>
## Multiple plots
<Canvas>
<Story
name="Multiple plots"
args={{
code: `
{
distributions: [
{
name: "one",
distribution: mx(0.5, normal(0,1))
},
{
name: "two",
distribution: mx(2, normal(5, 2)),
}
]
}
`,
width, width,
}} }}
> >
@ -103,7 +145,7 @@ to allow large and small numbers being printed cleanly.
<Story <Story
name="Constant" name="Constant"
args={{ args={{
squiggleString: "500000000", code: "500000000",
width, width,
}} }}
> >
@ -117,7 +159,7 @@ to allow large and small numbers being printed cleanly.
<Story <Story
name="Array" name="Array"
args={{ args={{
squiggleString: "[normal(5,2), normal(10,1), normal(40,2), 400000]", code: "[normal(5,2), normal(10,1), normal(40,2), 400000]",
width, width,
}} }}
> >
@ -131,7 +173,7 @@ to allow large and small numbers being printed cleanly.
<Story <Story
name="Error" name="Error"
args={{ args={{
squiggleString: "f(x) = normal(", code: "f(x) = normal(",
width, width,
}} }}
> >
@ -145,7 +187,7 @@ to allow large and small numbers being printed cleanly.
<Story <Story
name="Boolean" name="Boolean"
args={{ args={{
squiggleString: "3 == 3", code: "3 == 3",
width, width,
}} }}
> >
@ -159,7 +201,7 @@ to allow large and small numbers being printed cleanly.
<Story <Story
name="Function to Distribution" name="Function to Distribution"
args={{ args={{
squiggleString: "foo(t) = normal(t,2)*normal(5,3); foo", code: "foo(t) = normal(t,2)*normal(5,3); foo",
width, width,
}} }}
> >
@ -173,7 +215,7 @@ to allow large and small numbers being printed cleanly.
<Story <Story
name="Function to Number" name="Function to Number"
args={{ args={{
squiggleString: "foo(t) = t^2; foo", code: "foo(t) = t^2; foo",
width, width,
}} }}
> >
@ -187,7 +229,7 @@ to allow large and small numbers being printed cleanly.
<Story <Story
name="Record" name="Record"
args={{ args={{
squiggleString: "{foo: 35 to 50, bar: [1,2,3]}", code: "{foo: 35 to 50, bar: [1,2,3]}",
width, width,
}} }}
> >
@ -201,7 +243,7 @@ to allow large and small numbers being printed cleanly.
<Story <Story
name="String" name="String"
args={{ args={{
squiggleString: '"Lucky day!"', code: '"Lucky day!"',
width, width,
}} }}
> >

View File

@ -14,7 +14,20 @@ the distribution.
<Story <Story
name="Normal" name="Normal"
args={{ args={{
initialSquiggleString: "normal(5,2)", defaultCode: "normal(5,2)",
}}
>
{Template.bind({})}
</Story>
</Canvas>
It's also possible to create a controlled version of the same component
<Canvas>
<Story
name="Controlled"
args={{
code: "normal(5,2)",
}} }}
> >
{Template.bind({})} {Template.bind({})}
@ -27,7 +40,7 @@ You can also name variables like so:
<Story <Story
name="Variables" name="Variables"
args={{ args={{
initialSquiggleString: "x = 2\nnormal(x,2)", defaultCode: "x = 2\nnormal(x,2)",
}} }}
> >
{Template.bind({})} {Template.bind({})}

View File

@ -1,51 +0,0 @@
import { SquigglePartial, SquiggleEditor } from "../components/SquiggleEditor";
import { useState } from "react";
import { Canvas, Meta, Story, Props } from "@storybook/addon-docs";
<Meta title="Squiggle/SquigglePartial" component={SquigglePartial} />
export const Template = (props) => <SquigglePartial {...props} />;
# Squiggle Partial
A Squiggle Partial is an editor that does not return a graph to the user, but
instead returns bindings that can be used by further Squiggle Editors.
<Canvas>
<Story
name="Standalone"
args={{
initialSquiggleString: "x = normal(5,2)",
}}
>
{Template.bind({})}
</Story>
</Canvas>
<Canvas>
<Story
name="With Editor"
args={{
initialPartialString: "x = normal(5,2)",
initialEditorString: "x",
}}
>
{(props) => {
let [bindings, setBindings] = useState({});
return (
<>
<SquigglePartial
{...props}
initialSquiggleString={props.initialPartialString}
onChange={setBindings}
/>
<SquiggleEditor
{...props}
initialSquiggleString={props.initialEditorString}
bindings={bindings}
/>
</>
);
}}
</Story>
</Canvas>

View File

@ -14,10 +14,23 @@ including sampling settings, in squiggle.
<Story <Story
name="Normal" name="Normal"
args={{ args={{
initialSquiggleString: "normal(5,2)", defaultCode: "normal(5,2)",
height: 800, height: 800,
}} }}
> >
{Template.bind({})} {Template.bind({})}
</Story> </Story>
</Canvas> </Canvas>
<Canvas>
<Story
name="With share button"
args={{
defaultCode: "normal(5,2)",
height: 800,
showShareButton: true,
}}
>
{Template.bind({})}
</Story>
</Canvas>

View File

@ -22,3 +22,8 @@ but this line is still necessary for proper initialization of `--tw-*` variables
.ace_cursor { .ace_cursor {
border-left: 2px solid !important; border-left: 2px solid !important;
} }
.ace-error-marker {
position: absolute;
border-bottom: 1px solid red;
}

View File

@ -5,6 +5,27 @@ module.exports = {
}, },
important: ".squiggle", important: ".squiggle",
theme: { theme: {
extend: {}, extend: {
animation: {
"appear-and-spin":
"spin 1s linear infinite, squiggle-appear 0.2s forwards",
"semi-appear": "squiggle-semi-appear 0.2s forwards",
hide: "squiggle-hide 0.2s forwards",
},
keyframes: {
"squiggle-appear": {
from: { opacity: 0 },
to: { opacity: 1 },
},
"squiggle-semi-appear": {
from: { opacity: 0 },
to: { opacity: 0.5 },
},
"squiggle-hide": {
from: { opacity: 1 },
to: { opacity: 0 },
},
},
},
}, },
}; };

View File

@ -0,0 +1,55 @@
import { render, screen, waitFor, within } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import * as React from "react";
import "@testing-library/jest-dom";
import { SquigglePlayground } from "../src/index";
test("Autorun is default", async () => {
render(<SquigglePlayground code="70*30" />);
await waitFor(() =>
expect(screen.getByTestId("playground-result")).toHaveTextContent("2100")
);
});
test("Autorun can be switched off", async () => {
const user = userEvent.setup();
render(<SquigglePlayground code="70*30" />);
expect(screen.getByTestId("autorun-controls")).toHaveTextContent("Autorun");
await waitFor(() =>
expect(screen.getByTestId("playground-result")).toHaveTextContent("2100")
);
await user.click(screen.getByText("Autorun")); // disable
expect(screen.getByTestId("autorun-controls")).toHaveTextContent("Paused");
expect(screen.getByTestId("autorun-controls")).not.toHaveTextContent(
"Autorun"
);
await user.click(screen.getByText("Paused")); // enable autorun again
expect(screen.getByTestId("autorun-controls")).toHaveTextContent("Autorun");
// we should replace the code here, but it's hard to update react-ace state via user events: https://github.com/securingsincity/react-ace/issues/923
// ...or replace react-ace with something else
// TODO:
/*
const editor = screen
.getByTestId("squiggle-editor")
.querySelector(".ace_editor") as HTMLElement;
editor.focus();
// await user.clear(editor);
await userEvent.paste("40*40"); // https://github.com/securingsincity/react-ace/issues/923#issuecomment-755502696
screen.debug(editor);
// this makes the tests slower, but it's hard to test otherwise that the code _didn't_ execute
await new Promise((r) => setTimeout(r, 300));
expect(screen.getByTestId("playground-result")).toHaveTextContent("2100"); // still the old value
await waitFor(() =>
expect(screen.getByTestId("playground-result")).toHaveTextContent("1600")
);
*/
});

View File

@ -0,0 +1,53 @@
import { render, screen } from "@testing-library/react";
import React from "react";
import "@testing-library/jest-dom";
import {
SquiggleChart,
SquiggleEditor,
SquigglePlayground,
} from "../src/index";
import { SqProject } from "@quri/squiggle-lang";
test("Chart logs nothing on render", async () => {
const { unmount } = render(<SquiggleChart code={"normal(0, 1)"} />);
unmount();
expect(console.log).not.toBeCalled();
expect(console.warn).not.toBeCalled();
expect(console.error).not.toBeCalled();
});
test("Editor logs nothing on render", async () => {
const { unmount } = render(<SquiggleEditor code={"normal(0, 1)"} />);
unmount();
expect(console.log).not.toBeCalled();
expect(console.warn).not.toBeCalled();
expect(console.error).not.toBeCalled();
});
test("Project dependencies work in editors", async () => {
const project = SqProject.create();
render(<SquiggleEditor code={"x = 1"} project={project} />);
const source = project.getSourceIds()[0];
const { container } = render(
<SquiggleEditor code={"x + 1"} project={project} continues={[source]} />
);
expect(container).toHaveTextContent("2");
});
test("Project dependencies work in playgrounds", async () => {
const project = SqProject.create();
project.setSource("depend", "x = 1");
render(
<SquigglePlayground
code={"x + 1"}
project={project}
continues={["depend"]}
/>
);
// We must await here because SquigglePlayground loads results asynchronously
expect(await screen.findByRole("status")).toHaveTextContent("2");
});

View File

@ -0,0 +1,39 @@
import { render } from "@testing-library/react";
import React from "react";
import "@testing-library/jest-dom";
import { SquiggleChart } from "../src/index";
import { SqProject } from "@quri/squiggle-lang";
test("Creates and cleans up source", async () => {
const project = SqProject.create();
const { unmount } = render(
<SquiggleChart code={"normal(0, 1)"} project={project} />
);
expect(project.getSourceIds().length).toBe(1);
const sourceId = project.getSourceIds()[0];
expect(project.getSource(sourceId)).toBe("normal(0, 1)");
unmount();
expect(project.getSourceIds().length).toBe(0);
expect(project.getSource(sourceId)).toBe(undefined);
});
test("Creates and cleans up source and imports", async () => {
const project = SqProject.create();
const { unmount } = render(
<SquiggleChart
code={"normal($x, 1)"}
project={project}
jsImports={{ x: 3 }}
/>
);
expect(project.getSourceIds().length).toBe(2);
unmount();
expect(project.getSourceIds()).toStrictEqual([]);
});

View File

@ -0,0 +1,8 @@
global.console = {
...console,
log: jest.fn(console.log),
debug: jest.fn(console.debug),
info: jest.fn(console.info),
warn: jest.fn(console.warn),
error: jest.fn(console.error),
};

View File

@ -0,0 +1,4 @@
{
"buildCommand": "cd ../.. && npx turbo run build --filter=@quri/squiggle-components",
"outputDirectory": "storybook-static"
}

View File

@ -22,3 +22,5 @@ _coverage
coverage coverage
.nyc_output/ .nyc_output/
src/rescript/Reducer/Reducer_Peggy/Reducer_Peggy_GeneratedParser.js src/rescript/Reducer/Reducer_Peggy/Reducer_Peggy_GeneratedParser.js
src/rescript/Reducer/Reducer_Peggy/helpers.js
src/rescript/ReducerProject/ReducerProject_IncludeParser.js

View File

@ -3,6 +3,8 @@ lib
*.bs.js *.bs.js
*.gen.tsx *.gen.tsx
.nyc_output/ .nyc_output/
_coverage/ coverage/
.cache/ .cache/
Reducer_Peggy_GeneratedParser.js Reducer_Peggy_GeneratedParser.js
ReducerProject_IncludeParser.js
src/rescript/Reducer/Reducer_Peggy/helpers.js

View File

@ -20,7 +20,7 @@ environment created from the squiggle code.
```js ```js
import { run } from "@quri/squiggle-lang"; import { run } from "@quri/squiggle-lang";
run( run(
"normal(0, 1) * fromSamples([-3,-2,-1,1,2,3,3,3,4,9]" "normal(0, 1) * SampleSet.fromList([-3, 2,-1,1,2,3,3,3,4,9])"
).value.value.toSparkline().value; ).value.value.toSparkline().value;
``` ```

View File

@ -1,7 +1,7 @@
open Jest open Jest
open Expect open Expect
let env: DistributionOperation.env = { let env: GenericDist.env = {
sampleCount: 100, sampleCount: 100,
xyPointLength: 100, xyPointLength: 100,
} }
@ -34,7 +34,7 @@ describe("sparkline", () => {
expected: DistributionOperation.outputType, expected: DistributionOperation.outputType,
) => { ) => {
test(name, () => { test(name, () => {
let result = DistributionOperation.run(~env, FromDist(ToString(ToSparkline(20)), dist)) let result = DistributionOperation.run(~env, FromDist(#ToString(ToSparkline(20)), dist))
expect(result)->toEqual(expected) expect(result)->toEqual(expected)
}) })
} }
@ -81,8 +81,8 @@ describe("sparkline", () => {
describe("toPointSet", () => { describe("toPointSet", () => {
test("on symbolic normal distribution", () => { test("on symbolic normal distribution", () => {
let result = let result =
run(FromDist(ToDist(ToPointSet), normalDist5)) run(FromDist(#ToDist(ToPointSet), normalDist5))
->outputMap(FromDist(ToFloat(#Mean))) ->outputMap(FromDist(#ToFloat(#Mean)))
->toFloat ->toFloat
->toExt ->toExt
expect(result)->toBeSoCloseTo(5.0, ~digits=0) expect(result)->toBeSoCloseTo(5.0, ~digits=0)
@ -90,10 +90,10 @@ describe("toPointSet", () => {
test("on sample set", () => { test("on sample set", () => {
let result = let result =
run(FromDist(ToDist(ToPointSet), normalDist5)) run(FromDist(#ToDist(ToPointSet), normalDist5))
->outputMap(FromDist(ToDist(ToSampleSet(1000)))) ->outputMap(FromDist(#ToDist(ToSampleSet(1000))))
->outputMap(FromDist(ToDist(ToPointSet))) ->outputMap(FromDist(#ToDist(ToPointSet)))
->outputMap(FromDist(ToFloat(#Mean))) ->outputMap(FromDist(#ToFloat(#Mean)))
->toFloat ->toFloat
->toExt ->toExt
expect(result)->toBeSoCloseTo(5.0, ~digits=-1) expect(result)->toBeSoCloseTo(5.0, ~digits=-1)

View File

@ -32,25 +32,29 @@ describe("dotSubtract", () => {
*/ */
Skip.test("mean of normal minus exponential (property)", () => { Skip.test("mean of normal minus exponential (property)", () => {
assert_( assert_(
property2(float_(), floatRange(1e-5, 1e5), (mean, rate) => { property2(
// We limit ourselves to stdev=1 so that the integral is trivial float_(),
let dotDifference = DistributionOperation.Constructors.pointwiseSubtract( floatRange(1e-5, 1e5),
~env, (mean, rate) => {
mkNormal(mean, 1.0), // We limit ourselves to stdev=1 so that the integral is trivial
mkExponential(rate), let dotDifference = DistributionOperation.Constructors.pointwiseSubtract(
) ~env,
let meanResult = E.R2.bind(DistributionOperation.Constructors.mean(~env), dotDifference) mkNormal(mean, 1.0),
// according to algebra or random variables, mkExponential(rate),
let meanAnalytical =
mean -.
SymbolicDist.Exponential.mean({rate: rate})->E.R2.toExn(
"On trusted input this should never happen",
) )
switch meanResult { let meanResult = E.R2.bind(DistributionOperation.Constructors.mean(~env), dotDifference)
| Ok(meanValue) => abs_float(meanValue -. meanAnalytical) /. abs_float(meanValue) < 1e-2 // 1% relative error // according to algebra or random variables,
| Error(err) => err === DistributionTypes.OperationError(DivisionByZeroError) let meanAnalytical =
} mean -.
}), SymbolicDist.Exponential.mean({rate: rate})->E.R2.toExn(
"On trusted input this should never happen",
)
switch meanResult {
| Ok(meanValue) => abs_float(meanValue -. meanAnalytical) /. abs_float(meanValue) < 1e-2 // 1% relative error
| Error(err) => err === DistributionTypes.OperationError(DivisionByZeroError)
}
},
),
) )
pass pass
}) })

View File

@ -19,7 +19,6 @@ exception MixtureFailed
let float1 = 1.0 let float1 = 1.0
let float2 = 2.0 let float2 = 2.0
let float3 = 3.0 let float3 = 3.0
let {mkDelta} = module(TestHelpers) let point1 = TestHelpers.mkDelta(float1)
let point1 = mkDelta(float1) let point2 = TestHelpers.mkDelta(float2)
let point2 = mkDelta(float2) let point3 = TestHelpers.mkDelta(float3)
let point3 = mkDelta(float3)

View File

@ -40,51 +40,60 @@ let algebraicPower = algebraicPower(~env)
describe("(Algebraic) addition of distributions", () => { describe("(Algebraic) addition of distributions", () => {
describe("mean", () => { describe("mean", () => {
test("normal(mean=5) + normal(mean=20)", () => { test(
normalDist5 "normal(mean=5) + normal(mean=20)",
->algebraicAdd(normalDist20) () => {
->E.R2.fmap(DistributionTypes.Constructors.UsingDists.mean) normalDist5
->E.R2.fmap(run) ->algebraicAdd(normalDist20)
->E.R2.fmap(toFloat) ->E.R2.fmap(DistributionTypes.Constructors.UsingDists.mean)
->E.R.toExn("Expected float", _) ->E.R2.fmap(run)
->expect ->E.R2.fmap(toFloat)
->toBe(Some(2.5e1)) ->E.R.toExn("Expected float", _)
}) ->expect
->toBe(Some(2.5e1))
},
)
test("uniform(low=9, high=10) + beta(alpha=2, beta=5)", () => { test(
// let uniformMean = (9.0 +. 10.0) /. 2.0 "uniform(low=9, high=10) + beta(alpha=2, beta=5)",
// let betaMean = 1.0 /. (1.0 +. 5.0 /. 2.0) () => {
let received = // let uniformMean = (9.0 +. 10.0) /. 2.0
uniformDist // let betaMean = 1.0 /. (1.0 +. 5.0 /. 2.0)
->algebraicAdd(betaDist) let received =
->E.R2.fmap(DistributionTypes.Constructors.UsingDists.mean) uniformDist
->E.R2.fmap(run) ->algebraicAdd(betaDist)
->E.R2.fmap(toFloat) ->E.R2.fmap(DistributionTypes.Constructors.UsingDists.mean)
->E.R.toExn("Expected float", _) ->E.R2.fmap(run)
switch received { ->E.R2.fmap(toFloat)
| None => "algebraicAdd has"->expect->toBe("failed") ->E.R.toExn("Expected float", _)
// This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad. switch received {
// sometimes it works with ~digits=2. | None => "algebraicAdd has"->expect->toBe("failed")
| Some(x) => x->expect->toBeSoCloseTo(9.786831807237022, ~digits=1) // (uniformMean +. betaMean) // This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad.
} // sometimes it works with ~digits=2.
}) | Some(x) => x->expect->toBeSoCloseTo(9.786831807237022, ~digits=1) // (uniformMean +. betaMean)
test("beta(alpha=2, beta=5) + uniform(low=9, high=10)", () => { }
// let uniformMean = (9.0 +. 10.0) /. 2.0 },
// let betaMean = 1.0 /. (1.0 +. 5.0 /. 2.0) )
let received = test(
betaDist "beta(alpha=2, beta=5) + uniform(low=9, high=10)",
->algebraicAdd(uniformDist) () => {
->E.R2.fmap(DistributionTypes.Constructors.UsingDists.mean) // let uniformMean = (9.0 +. 10.0) /. 2.0
->E.R2.fmap(run) // let betaMean = 1.0 /. (1.0 +. 5.0 /. 2.0)
->E.R2.fmap(toFloat) let received =
->E.R.toExn("Expected float", _) betaDist
switch received { ->algebraicAdd(uniformDist)
| None => "algebraicAdd has"->expect->toBe("failed") ->E.R2.fmap(DistributionTypes.Constructors.UsingDists.mean)
// This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad. ->E.R2.fmap(run)
// sometimes it works with ~digits=2. ->E.R2.fmap(toFloat)
| Some(x) => x->expect->toBeSoCloseTo(9.784290207736126, ~digits=1) // (uniformMean +. betaMean) ->E.R.toExn("Expected float", _)
} switch received {
}) | None => "algebraicAdd has"->expect->toBe("failed")
// This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad.
// sometimes it works with ~digits=2.
| Some(x) => x->expect->toBeSoCloseTo(9.784290207736126, ~digits=1) // (uniformMean +. betaMean)
}
},
)
}) })
describe("pdf", () => { describe("pdf", () => {
// TEST IS WRONG. SEE STDEV ADDITION EXPRESSION. // TEST IS WRONG. SEE STDEV ADDITION EXPRESSION.
@ -122,247 +131,282 @@ describe("(Algebraic) addition of distributions", () => {
} }
}, },
) )
test("(normal(mean=10) + normal(mean=10)).pdf(1.9e1)", () => { test(
let received = "(normal(mean=10) + normal(mean=10)).pdf(1.9e1)",
normalDist20 () => {
->Ok let received =
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.pdf(d, 1.9e1)) normalDist20
->E.R2.fmap(run) ->Ok
->E.R2.fmap(toFloat) ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.pdf(d, 1.9e1))
->E.R.toOption ->E.R2.fmap(run)
->E.O.flatten ->E.R2.fmap(toFloat)
let calculated = ->E.R.toOption
normalDist10 ->E.O.flatten
->algebraicAdd(normalDist10) let calculated =
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.pdf(d, 1.9e1)) normalDist10
->E.R2.fmap(run) ->algebraicAdd(normalDist10)
->E.R2.fmap(toFloat) ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.pdf(d, 1.9e1))
->E.R.toOption ->E.R2.fmap(run)
->E.O.flatten ->E.R2.fmap(toFloat)
switch received { ->E.R.toOption
| None => ->E.O.flatten
"this branch occurs when the dispatch to Jstat on trusted input fails." switch received {
->expect | None =>
->toBe("never") "this branch occurs when the dispatch to Jstat on trusted input fails."
| Some(x) => ->expect
switch calculated { ->toBe("never")
| None => "algebraicAdd has"->expect->toBe("failed") | Some(x) =>
| Some(y) => x->expect->toBeSoCloseTo(y, ~digits=1) switch calculated {
| None => "algebraicAdd has"->expect->toBe("failed")
| Some(y) => x->expect->toBeSoCloseTo(y, ~digits=1)
}
} }
} },
}) )
test("(uniform(low=9, high=10) + beta(alpha=2, beta=5)).pdf(10)", () => { test(
let received = "(uniform(low=9, high=10) + beta(alpha=2, beta=5)).pdf(10)",
uniformDist () => {
->algebraicAdd(betaDist) let received =
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.pdf(d, 1e1)) uniformDist
->E.R2.fmap(run) ->algebraicAdd(betaDist)
->E.R2.fmap(toFloat) ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.pdf(d, 1e1))
->E.R.toExn("Expected float", _) ->E.R2.fmap(run)
switch received { ->E.R2.fmap(toFloat)
| None => "algebraicAdd has"->expect->toBe("failed") ->E.R.toExn("Expected float", _)
// This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad. switch received {
// sometimes it works with ~digits=4. | None => "algebraicAdd has"->expect->toBe("failed")
// This value was calculated by a python script // This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad.
| Some(x) => x->expect->toBeSoCloseTo(0.979023, ~digits=0) // sometimes it works with ~digits=4.
} // This value was calculated by a python script
}) | Some(x) => x->expect->toBeSoCloseTo(0.979023, ~digits=0)
test("(beta(alpha=2, beta=5) + uniform(low=9, high=10)).pdf(10)", () => { }
let received = },
betaDist )
->algebraicAdd(uniformDist) test(
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.pdf(d, 1e1)) "(beta(alpha=2, beta=5) + uniform(low=9, high=10)).pdf(10)",
->E.R2.fmap(run) () => {
->E.R2.fmap(toFloat) let received =
->E.R.toExn("Expected float", _) betaDist
switch received { ->algebraicAdd(uniformDist)
| None => "algebraicAdd has"->expect->toBe("failed") ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.pdf(d, 1e1))
// This is nondeterministic. ->E.R2.fmap(run)
| Some(x) => x->expect->toBeSoCloseTo(0.979023, ~digits=0) ->E.R2.fmap(toFloat)
} ->E.R.toExn("Expected float", _)
}) switch received {
| None => "algebraicAdd has"->expect->toBe("failed")
// This is nondeterministic.
| Some(x) => x->expect->toBeSoCloseTo(0.979023, ~digits=0)
}
},
)
}) })
describe("cdf", () => { describe("cdf", () => {
testAll("(normal(mean=5) + normal(mean=5)).cdf (imprecise)", list{6e0, 8e0, 1e1, 1.2e1}, x => { testAll(
let received = "(normal(mean=5) + normal(mean=5)).cdf (imprecise)",
normalDist10 list{6e0, 8e0, 1e1, 1.2e1},
->Ok x => {
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.cdf(d, x)) let received =
->E.R2.fmap(run) normalDist10
->E.R2.fmap(toFloat) ->Ok
->E.R.toOption ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.cdf(d, x))
->E.O.flatten ->E.R2.fmap(run)
let calculated = ->E.R2.fmap(toFloat)
normalDist5 ->E.R.toOption
->algebraicAdd(normalDist5) ->E.O.flatten
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.cdf(d, x)) let calculated =
->E.R2.fmap(run) normalDist5
->E.R2.fmap(toFloat) ->algebraicAdd(normalDist5)
->E.R.toOption ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.cdf(d, x))
->E.O.flatten ->E.R2.fmap(run)
->E.R2.fmap(toFloat)
->E.R.toOption
->E.O.flatten
switch received { switch received {
| None => | None =>
"this branch occurs when the dispatch to Jstat on trusted input fails." "this branch occurs when the dispatch to Jstat on trusted input fails."
->expect ->expect
->toBe("never") ->toBe("never")
| Some(x) => | Some(x) =>
switch calculated { switch calculated {
| None => "algebraicAdd has"->expect->toBe("failed") | None => "algebraicAdd has"->expect->toBe("failed")
| Some(y) => x->expect->toBeSoCloseTo(y, ~digits=0) | Some(y) => x->expect->toBeSoCloseTo(y, ~digits=0)
}
} }
} },
}) )
test("(normal(mean=10) + normal(mean=10)).cdf(1.25e1)", () => { test(
let received = "(normal(mean=10) + normal(mean=10)).cdf(1.25e1)",
normalDist20 () => {
->Ok let received =
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.cdf(d, 1.25e1)) normalDist20
->E.R2.fmap(run) ->Ok
->E.R2.fmap(toFloat) ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.cdf(d, 1.25e1))
->E.R.toOption ->E.R2.fmap(run)
->E.O.flatten ->E.R2.fmap(toFloat)
let calculated = ->E.R.toOption
normalDist10 ->E.O.flatten
->algebraicAdd(normalDist10) let calculated =
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.cdf(d, 1.25e1)) normalDist10
->E.R2.fmap(run) ->algebraicAdd(normalDist10)
->E.R2.fmap(toFloat) ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.cdf(d, 1.25e1))
->E.R.toOption ->E.R2.fmap(run)
->E.O.flatten ->E.R2.fmap(toFloat)
switch received { ->E.R.toOption
| None => ->E.O.flatten
"this branch occurs when the dispatch to Jstat on trusted input fails." switch received {
->expect | None =>
->toBe("never") "this branch occurs when the dispatch to Jstat on trusted input fails."
| Some(x) => ->expect
switch calculated { ->toBe("never")
| None => "algebraicAdd has"->expect->toBe("failed") | Some(x) =>
| Some(y) => x->expect->toBeSoCloseTo(y, ~digits=2) switch calculated {
| None => "algebraicAdd has"->expect->toBe("failed")
| Some(y) => x->expect->toBeSoCloseTo(y, ~digits=2)
}
} }
} },
}) )
test("(uniform(low=9, high=10) + beta(alpha=2, beta=5)).cdf(10)", () => { test(
let received = "(uniform(low=9, high=10) + beta(alpha=2, beta=5)).cdf(10)",
uniformDist () => {
->algebraicAdd(betaDist) let received =
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.cdf(d, 1e1)) uniformDist
->E.R2.fmap(run) ->algebraicAdd(betaDist)
->E.R2.fmap(toFloat) ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.cdf(d, 1e1))
->E.R.toExn("Expected float", _) ->E.R2.fmap(run)
switch received { ->E.R2.fmap(toFloat)
| None => "algebraicAdd has"->expect->toBe("failed") ->E.R.toExn("Expected float", _)
// This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad. switch received {
// The value was calculated externally using a python script | None => "algebraicAdd has"->expect->toBe("failed")
| Some(x) => x->expect->toBeSoCloseTo(0.71148, ~digits=1) // This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad.
} // The value was calculated externally using a python script
}) | Some(x) => x->expect->toBeSoCloseTo(0.71148, ~digits=1)
test("(beta(alpha=2, beta=5) + uniform(low=9, high=10)).cdf(10)", () => { }
let received = },
betaDist )
->algebraicAdd(uniformDist) test(
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.cdf(d, 1e1)) "(beta(alpha=2, beta=5) + uniform(low=9, high=10)).cdf(10)",
->E.R2.fmap(run) () => {
->E.R2.fmap(toFloat) let received =
->E.R.toExn("Expected float", _) betaDist
switch received { ->algebraicAdd(uniformDist)
| None => "algebraicAdd has"->expect->toBe("failed") ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.cdf(d, 1e1))
// This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad. ->E.R2.fmap(run)
// The value was calculated externally using a python script ->E.R2.fmap(toFloat)
| Some(x) => x->expect->toBeSoCloseTo(0.71148, ~digits=1) ->E.R.toExn("Expected float", _)
} switch received {
}) | None => "algebraicAdd has"->expect->toBe("failed")
// This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad.
// The value was calculated externally using a python script
| Some(x) => x->expect->toBeSoCloseTo(0.71148, ~digits=1)
}
},
)
}) })
describe("inv", () => { describe("inv", () => {
testAll("(normal(mean=5) + normal(mean=5)).inv (imprecise)", list{5e-2, 4.2e-3, 9e-3}, x => { testAll(
let received = "(normal(mean=5) + normal(mean=5)).inv (imprecise)",
normalDist10 list{5e-2, 4.2e-3, 9e-3},
->Ok x => {
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.inv(d, x)) let received =
->E.R2.fmap(run) normalDist10
->E.R2.fmap(toFloat) ->Ok
->E.R.toOption ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.inv(d, x))
->E.O.flatten ->E.R2.fmap(run)
let calculated = ->E.R2.fmap(toFloat)
normalDist5 ->E.R.toOption
->algebraicAdd(normalDist5) ->E.O.flatten
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.inv(d, x)) let calculated =
->E.R2.fmap(run) normalDist5
->E.R2.fmap(toFloat) ->algebraicAdd(normalDist5)
->E.R.toOption ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.inv(d, x))
->E.O.flatten ->E.R2.fmap(run)
->E.R2.fmap(toFloat)
->E.R.toOption
->E.O.flatten
switch received { switch received {
| None => | None =>
"this branch occurs when the dispatch to Jstat on trusted input fails." "this branch occurs when the dispatch to Jstat on trusted input fails."
->expect ->expect
->toBe("never") ->toBe("never")
| Some(x) => | Some(x) =>
switch calculated { switch calculated {
| None => "algebraicAdd has"->expect->toBe("failed") | None => "algebraicAdd has"->expect->toBe("failed")
| Some(y) => x->expect->toBeSoCloseTo(y, ~digits=-1) | Some(y) => x->expect->toBeSoCloseTo(y, ~digits=-1)
}
} }
} },
}) )
test("(normal(mean=10) + normal(mean=10)).inv(1e-1)", () => { test(
let received = "(normal(mean=10) + normal(mean=10)).inv(1e-1)",
normalDist20 () => {
->Ok let received =
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.inv(d, 1e-1)) normalDist20
->E.R2.fmap(run) ->Ok
->E.R2.fmap(toFloat) ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.inv(d, 1e-1))
->E.R.toOption ->E.R2.fmap(run)
->E.O.flatten ->E.R2.fmap(toFloat)
let calculated = ->E.R.toOption
normalDist10 ->E.O.flatten
->algebraicAdd(normalDist10) let calculated =
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.inv(d, 1e-1)) normalDist10
->E.R2.fmap(run) ->algebraicAdd(normalDist10)
->E.R2.fmap(toFloat) ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.inv(d, 1e-1))
->E.R.toOption ->E.R2.fmap(run)
->E.O.flatten ->E.R2.fmap(toFloat)
switch received { ->E.R.toOption
| None => ->E.O.flatten
"this branch occurs when the dispatch to Jstat on trusted input fails." switch received {
->expect | None =>
->toBe("never") "this branch occurs when the dispatch to Jstat on trusted input fails."
| Some(x) => ->expect
switch calculated { ->toBe("never")
| None => "algebraicAdd has"->expect->toBe("failed") | Some(x) =>
| Some(y) => x->expect->toBeSoCloseTo(y, ~digits=-1) switch calculated {
| None => "algebraicAdd has"->expect->toBe("failed")
| Some(y) => x->expect->toBeSoCloseTo(y, ~digits=-1)
}
} }
} },
}) )
test("(uniform(low=9, high=10) + beta(alpha=2, beta=5)).inv(2e-2)", () => { test(
let received = "(uniform(low=9, high=10) + beta(alpha=2, beta=5)).inv(2e-2)",
uniformDist () => {
->algebraicAdd(betaDist) let received =
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.inv(d, 2e-2)) uniformDist
->E.R2.fmap(run) ->algebraicAdd(betaDist)
->E.R2.fmap(toFloat) ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.inv(d, 2e-2))
->E.R.toExn("Expected float", _) ->E.R2.fmap(run)
switch received { ->E.R2.fmap(toFloat)
| None => "algebraicAdd has"->expect->toBe("failed") ->E.R.toExn("Expected float", _)
// This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad. switch received {
// sometimes it works with ~digits=2. | None => "algebraicAdd has"->expect->toBe("failed")
| Some(x) => x->expect->toBeSoCloseTo(9.179319623146968, ~digits=0) // This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad.
} // sometimes it works with ~digits=2.
}) | Some(x) => x->expect->toBeSoCloseTo(9.179319623146968, ~digits=0)
test("(beta(alpha=2, beta=5) + uniform(low=9, high=10)).inv(2e-2)", () => { }
let received = },
betaDist )
->algebraicAdd(uniformDist) test(
->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.inv(d, 2e-2)) "(beta(alpha=2, beta=5) + uniform(low=9, high=10)).inv(2e-2)",
->E.R2.fmap(run) () => {
->E.R2.fmap(toFloat) let received =
->E.R.toExn("Expected float", _) betaDist
switch received { ->algebraicAdd(uniformDist)
| None => "algebraicAdd has"->expect->toBe("failed") ->E.R2.fmap(d => DistributionTypes.Constructors.UsingDists.inv(d, 2e-2))
// This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad. ->E.R2.fmap(run)
// sometimes it works with ~digits=2. ->E.R2.fmap(toFloat)
| Some(x) => x->expect->toBeSoCloseTo(9.190872365862756, ~digits=0) ->E.R.toExn("Expected float", _)
} switch received {
}) | None => "algebraicAdd has"->expect->toBe("failed")
// This is nondeterministic, we could be in a situation where ci fails but you click rerun and it passes, which is bad.
// sometimes it works with ~digits=2.
| Some(x) => x->expect->toBeSoCloseTo(9.190872365862756, ~digits=0)
}
},
)
}) })
}) })

View File

@ -3,7 +3,7 @@ This is the most basic file in our invariants family of tests.
Validate that the addition of means equals the mean of the addition, similar for subtraction and multiplication. Validate that the addition of means equals the mean of the addition, similar for subtraction and multiplication.
Details in https://develop--squiggle-documentation.netlify.app/docs/internal/invariants/ Details in https://squiggle-language.com/docs/internal/invariants/
Note: epsilon of 1e3 means the invariants are, in general, not being satisfied. Note: epsilon of 1e3 means the invariants are, in general, not being satisfied.
*/ */
@ -87,14 +87,22 @@ describe("Means are invariant", () => {
let testAddInvariant = (t1, t2) => let testAddInvariant = (t1, t2) =>
E.R.liftM2(testAdditionMean, t1, t2)->E.R.toExn("Means were not invariant", _) E.R.liftM2(testAdditionMean, t1, t2)->E.R.toExn("Means were not invariant", _)
testAll("with two of the same distribution", distributions, dist => { testAll(
testAddInvariant(dist, dist) "with two of the same distribution",
}) distributions,
dist => {
testAddInvariant(dist, dist)
},
)
testAll("with two different distributions", pairsOfDifferentDistributions, dists => { testAll(
let (dist1, dist2) = dists "with two different distributions",
testAddInvariant(dist1, dist2) pairsOfDifferentDistributions,
}) dists => {
let (dist1, dist2) = dists
testAddInvariant(dist1, dist2)
},
)
testAll( testAll(
"with two different distributions in swapped order", "with two different distributions in swapped order",
@ -116,14 +124,22 @@ describe("Means are invariant", () => {
let testSubtractInvariant = (t1, t2) => let testSubtractInvariant = (t1, t2) =>
E.R.liftM2(testSubtractionMean, t1, t2)->E.R.toExn("Means were not invariant", _) E.R.liftM2(testSubtractionMean, t1, t2)->E.R.toExn("Means were not invariant", _)
testAll("with two of the same distribution", distributions, dist => { testAll(
testSubtractInvariant(dist, dist) "with two of the same distribution",
}) distributions,
dist => {
testSubtractInvariant(dist, dist)
},
)
testAll("with two different distributions", pairsOfDifferentDistributions, dists => { testAll(
let (dist1, dist2) = dists "with two different distributions",
testSubtractInvariant(dist1, dist2) pairsOfDifferentDistributions,
}) dists => {
let (dist1, dist2) = dists
testSubtractInvariant(dist1, dist2)
},
)
testAll( testAll(
"with two different distributions in swapped order", "with two different distributions in swapped order",
@ -145,14 +161,22 @@ describe("Means are invariant", () => {
let testMultiplicationInvariant = (t1, t2) => let testMultiplicationInvariant = (t1, t2) =>
E.R.liftM2(testMultiplicationMean, t1, t2)->E.R.toExn("Means were not invariant", _) E.R.liftM2(testMultiplicationMean, t1, t2)->E.R.toExn("Means were not invariant", _)
testAll("with two of the same distribution", distributions, dist => { testAll(
testMultiplicationInvariant(dist, dist) "with two of the same distribution",
}) distributions,
dist => {
testMultiplicationInvariant(dist, dist)
},
)
testAll("with two different distributions", pairsOfDifferentDistributions, dists => { testAll(
let (dist1, dist2) = dists "with two different distributions",
testMultiplicationInvariant(dist1, dist2) pairsOfDifferentDistributions,
}) dists => {
let (dist1, dist2) = dists
testMultiplicationInvariant(dist1, dist2)
},
)
testAll( testAll(
"with two different distributions in swapped order", "with two different distributions in swapped order",

View File

@ -11,7 +11,7 @@ describe("mixture", () => {
let (mean1, mean2) = tup let (mean1, mean2) = tup
let meanValue = { let meanValue = {
run(Mixture([(mkNormal(mean1, 9e-1), 0.5), (mkNormal(mean2, 9e-1), 0.5)]))->outputMap( run(Mixture([(mkNormal(mean1, 9e-1), 0.5), (mkNormal(mean2, 9e-1), 0.5)]))->outputMap(
FromDist(ToFloat(#Mean)), FromDist(#ToFloat(#Mean)),
) )
} }
meanValue->unpackFloat->expect->toBeSoCloseTo((mean1 +. mean2) /. 2.0, ~digits=-1) meanValue->unpackFloat->expect->toBeSoCloseTo((mean1 +. mean2) /. 2.0, ~digits=-1)
@ -28,7 +28,7 @@ describe("mixture", () => {
let meanValue = { let meanValue = {
run( run(
Mixture([(mkBeta(alpha, beta), betaWeight), (mkExponential(rate), exponentialWeight)]), Mixture([(mkBeta(alpha, beta), betaWeight), (mkExponential(rate), exponentialWeight)]),
)->outputMap(FromDist(ToFloat(#Mean))) )->outputMap(FromDist(#ToFloat(#Mean)))
} }
let betaMean = 1.0 /. (1.0 +. beta /. alpha) let betaMean = 1.0 /. (1.0 +. beta /. alpha)
let exponentialMean = 1.0 /. rate let exponentialMean = 1.0 /. rate
@ -52,7 +52,7 @@ describe("mixture", () => {
(mkUniform(low, high), uniformWeight), (mkUniform(low, high), uniformWeight),
(mkLognormal(mu, sigma), lognormalWeight), (mkLognormal(mu, sigma), lognormalWeight),
]), ]),
)->outputMap(FromDist(ToFloat(#Mean))) )->outputMap(FromDist(#ToFloat(#Mean)))
} }
let uniformMean = (low +. high) /. 2.0 let uniformMean = (low +. high) /. 2.0
let lognormalMean = mu +. sigma ** 2.0 /. 2.0 let lognormalMean = mu +. sigma ** 2.0 /. 2.0

View File

@ -3,6 +3,7 @@ open Expect
open TestHelpers open TestHelpers
open GenericDist_Fixtures open GenericDist_Fixtures
let klDivergence = DistributionOperation.Constructors.LogScore.distEstimateDistAnswer(~env)
// integral from low to high of 1 / (high - low) log(normal(mean, stdev)(x) / (1 / (high - low))) dx // integral from low to high of 1 / (high - low) log(normal(mean, stdev)(x) / (1 / (high - low))) dx
let klNormalUniform = (mean, stdev, low, high): float => let klNormalUniform = (mean, stdev, low, high): float =>
-.Js.Math.log((high -. low) /. Js.Math.sqrt(2.0 *. MagicNumbers.Math.pi *. stdev ** 2.0)) +. -.Js.Math.log((high -. low) /. Js.Math.sqrt(2.0 *. MagicNumbers.Math.pi *. stdev ** 2.0)) +.
@ -11,17 +12,14 @@ let klNormalUniform = (mean, stdev, low, high): float =>
(mean ** 2.0 -. (high +. low) *. mean +. (low ** 2.0 +. high *. low +. high ** 2.0) /. 3.0) (mean ** 2.0 -. (high +. low) *. mean +. (low ** 2.0 +. high *. low +. high ** 2.0) /. 3.0)
describe("klDivergence: continuous -> continuous -> float", () => { describe("klDivergence: continuous -> continuous -> float", () => {
let klDivergence = DistributionOperation.Constructors.klDivergence(~env)
let testUniform = (lowAnswer, highAnswer, lowPrediction, highPrediction) => { let testUniform = (lowAnswer, highAnswer, lowPrediction, highPrediction) => {
test("of two uniforms is equal to the analytic expression", () => { test("of two uniforms is equal to the analytic expression", () => {
let answer = let answer =
uniformMakeR(lowAnswer, highAnswer)->E.R2.errMap(s => DistributionTypes.ArgumentError(s)) uniformMakeR(lowAnswer, highAnswer)->E.R2.errMap(s => DistributionTypes.ArgumentError(s))
let prediction = let prediction =
uniformMakeR( uniformMakeR(lowPrediction, highPrediction)->E.R2.errMap(
lowPrediction, s => DistributionTypes.ArgumentError(s),
highPrediction, )
)->E.R2.errMap(s => DistributionTypes.ArgumentError(s))
// integral along the support of the answer of answer.pdf(x) times log of prediction.pdf(x) divided by answer.pdf(x) dx // integral along the support of the answer of answer.pdf(x) times log of prediction.pdf(x) divided by answer.pdf(x) dx
let analyticalKl = Js.Math.log((highPrediction -. lowPrediction) /. (highAnswer -. lowAnswer)) let analyticalKl = Js.Math.log((highPrediction -. lowPrediction) /. (highAnswer -. lowAnswer))
let kl = E.R.liftJoin2(klDivergence, prediction, answer) let kl = E.R.liftJoin2(klDivergence, prediction, answer)
@ -58,7 +56,7 @@ describe("klDivergence: continuous -> continuous -> float", () => {
let kl = E.R.liftJoin2(klDivergence, prediction, answer) let kl = E.R.liftJoin2(klDivergence, prediction, answer)
switch kl { switch kl {
| Ok(kl') => kl'->expect->toBeSoCloseTo(analyticalKl, ~digits=3) | Ok(kl') => kl'->expect->toBeSoCloseTo(analyticalKl, ~digits=2)
| Error(err) => { | Error(err) => {
Js.Console.log(DistributionTypes.Error.toString(err)) Js.Console.log(DistributionTypes.Error.toString(err))
raise(KlFailed) raise(KlFailed)
@ -82,7 +80,6 @@ describe("klDivergence: continuous -> continuous -> float", () => {
}) })
describe("klDivergence: discrete -> discrete -> float", () => { describe("klDivergence: discrete -> discrete -> float", () => {
let klDivergence = DistributionOperation.Constructors.klDivergence(~env)
let mixture = a => DistributionTypes.DistributionOperation.Mixture(a) let mixture = a => DistributionTypes.DistributionOperation.Mixture(a)
let a' = [(point1, 1e0), (point2, 1e0)]->mixture->run let a' = [(point1, 1e0), (point2, 1e0)]->mixture->run
let b' = [(point1, 1e0), (point2, 1e0), (point3, 1e0)]->mixture->run let b' = [(point1, 1e0), (point2, 1e0), (point3, 1e0)]->mixture->run
@ -117,7 +114,6 @@ describe("klDivergence: discrete -> discrete -> float", () => {
}) })
describe("klDivergence: mixed -> mixed -> float", () => { describe("klDivergence: mixed -> mixed -> float", () => {
let klDivergence = DistributionOperation.Constructors.klDivergence(~env)
let mixture' = a => DistributionTypes.DistributionOperation.Mixture(a) let mixture' = a => DistributionTypes.DistributionOperation.Mixture(a)
let mixture = a => { let mixture = a => {
let dist' = a->mixture'->run let dist' = a->mixture'->run
@ -186,18 +182,18 @@ describe("combineAlongSupportOfSecondArgument0", () => {
let answer = let answer =
uniformMakeR(lowAnswer, highAnswer)->E.R2.errMap(s => DistributionTypes.ArgumentError(s)) uniformMakeR(lowAnswer, highAnswer)->E.R2.errMap(s => DistributionTypes.ArgumentError(s))
let prediction = let prediction =
uniformMakeR(lowPrediction, highPrediction)->E.R2.errMap(s => DistributionTypes.ArgumentError( uniformMakeR(lowPrediction, highPrediction)->E.R2.errMap(
s, s => DistributionTypes.ArgumentError(s),
)) )
let answerWrapped = E.R.fmap(a => run(FromDist(ToDist(ToPointSet), a)), answer) let answerWrapped = E.R.fmap(a => run(FromDist(#ToDist(ToPointSet), a)), answer)
let predictionWrapped = E.R.fmap(a => run(FromDist(ToDist(ToPointSet), a)), prediction) let predictionWrapped = E.R.fmap(a => run(FromDist(#ToDist(ToPointSet), a)), prediction)
let interpolator = XYShape.XtoY.continuousInterpolator(#Stepwise, #UseZero) let interpolator = XYShape.XtoY.continuousInterpolator(#Stepwise, #UseZero)
let integrand = PointSetDist_Scoring.KLDivergence.integrand let integrand = PointSetDist_Scoring.WithDistAnswer.integrand
let result = switch (answerWrapped, predictionWrapped) { let result = switch (answerWrapped, predictionWrapped) {
| (Ok(Dist(PointSet(Continuous(a)))), Ok(Dist(PointSet(Continuous(b))))) => | (Ok(Dist(PointSet(Continuous(a)))), Ok(Dist(PointSet(Continuous(b))))) =>
Some(combineAlongSupportOfSecondArgument(integrand, interpolator, a.xyShape, b.xyShape)) Some(combineAlongSupportOfSecondArgument(interpolator, integrand, a.xyShape, b.xyShape))
| _ => None | _ => None
} }
result result

View File

@ -0,0 +1,68 @@
open Jest
open Expect
open TestHelpers
open GenericDist_Fixtures
exception ScoreFailed
describe("WithScalarAnswer: discrete -> scalar -> score", () => {
let mixture = a => DistributionTypes.DistributionOperation.Mixture(a)
let pointA = mkDelta(3.0)
let pointB = mkDelta(2.0)
let pointC = mkDelta(1.0)
let pointD = mkDelta(0.0)
test("score: agrees with analytical answer when finite", () => {
let prediction' = [(pointA, 0.25), (pointB, 0.25), (pointC, 0.25), (pointD, 0.25)]->mixture->run
let prediction = switch prediction' {
| Dist(PointSet(p)) => p
| _ => raise(MixtureFailed)
}
let answer = 2.0 // So this is: assigning 100% probability to 2.0
let result = PointSetDist_Scoring.WithScalarAnswer.score(~estimate=prediction, ~answer)
switch result {
| Ok(x) => x->expect->toEqual(-.Js.Math.log(0.25 /. 1.0))
| _ => raise(ScoreFailed)
}
})
test("score: agrees with analytical answer when finite", () => {
let prediction' = [(pointA, 0.75), (pointB, 0.25)]->mixture->run
let prediction = switch prediction' {
| Dist(PointSet(p)) => p
| _ => raise(MixtureFailed)
}
let answer = 3.0 // So this is: assigning 100% probability to 2.0
let result = PointSetDist_Scoring.WithScalarAnswer.score(~estimate=prediction, ~answer)
switch result {
| Ok(x) => x->expect->toEqual(-.Js.Math.log(0.75 /. 1.0))
| _ => raise(ScoreFailed)
}
})
test("scoreWithPrior: agrees with analytical answer when finite", () => {
let prior' = [(pointA, 0.5), (pointB, 0.5)]->mixture->run
let prediction' = [(pointA, 0.75), (pointB, 0.25)]->mixture->run
let prediction = switch prediction' {
| Dist(PointSet(p)) => p
| _ => raise(MixtureFailed)
}
let prior = switch prior' {
| Dist(PointSet(p)) => p
| _ => raise(MixtureFailed)
}
let answer = 3.0 // So this is: assigning 100% probability to 2.0
let result = PointSetDist_Scoring.WithScalarAnswer.scoreWithPrior(
~estimate=prediction,
~answer,
~prior,
)
switch result {
| Ok(x) => x->expect->toEqual(-.Js.Math.log(0.75 /. 1.0) -. -.Js.Math.log(0.5 /. 1.0))
| _ => raise(ScoreFailed)
}
})
})

View File

@ -3,39 +3,39 @@ open Expect
open TestHelpers open TestHelpers
// TODO: use Normal.make (but preferably after teh new validation dispatch is in) // TODO: use Normal.make (but preferably after teh new validation dispatch is in)
let mkNormal = (mean, stdev) => DistributionTypes.Symbolic(#Normal({mean: mean, stdev: stdev})) let mkNormal = (mean, stdev) => DistributionTypes.Symbolic(#Normal({mean, stdev}))
describe("(Symbolic) normalize", () => { describe("(Symbolic) normalize", () => {
testAll("has no impact on normal distributions", list{-1e8, -1e-2, 0.0, 1e-4, 1e16}, mean => { testAll("has no impact on normal distributions", list{-1e8, -1e-2, 0.0, 1e-4, 1e16}, mean => {
let normalValue = mkNormal(mean, 2.0) let normalValue = mkNormal(mean, 2.0)
let normalizedValue = run(FromDist(ToDist(Normalize), normalValue)) let normalizedValue = run(FromDist(#ToDist(Normalize), normalValue))
normalizedValue->unpackDist->expect->toEqual(normalValue) normalizedValue->unpackDist->expect->toEqual(normalValue)
}) })
}) })
describe("(Symbolic) mean", () => { describe("(Symbolic) mean", () => {
testAll("of normal distributions", list{-1e8, -16.0, -1e-2, 0.0, 1e-4, 32.0, 1e16}, mean => { testAll("of normal distributions", list{-1e8, -16.0, -1e-2, 0.0, 1e-4, 32.0, 1e16}, mean => {
run(FromDist(ToFloat(#Mean), mkNormal(mean, 4.0)))->unpackFloat->expect->toBeCloseTo(mean) run(FromDist(#ToFloat(#Mean), mkNormal(mean, 4.0)))->unpackFloat->expect->toBeCloseTo(mean)
}) })
Skip.test("of normal(0, -1) (it NaNs out)", () => { Skip.test("of normal(0, -1) (it NaNs out)", () => {
run(FromDist(ToFloat(#Mean), mkNormal(1e1, -1e0)))->unpackFloat->expect->ExpectJs.toBeFalsy run(FromDist(#ToFloat(#Mean), mkNormal(1e1, -1e0)))->unpackFloat->expect->ExpectJs.toBeFalsy
}) })
test("of normal(0, 1e-8) (it doesn't freak out at tiny stdev)", () => { test("of normal(0, 1e-8) (it doesn't freak out at tiny stdev)", () => {
run(FromDist(ToFloat(#Mean), mkNormal(0.0, 1e-8)))->unpackFloat->expect->toBeCloseTo(0.0) run(FromDist(#ToFloat(#Mean), mkNormal(0.0, 1e-8)))->unpackFloat->expect->toBeCloseTo(0.0)
}) })
testAll("of exponential distributions", list{1e-7, 2.0, 10.0, 100.0}, rate => { testAll("of exponential distributions", list{1e-7, 2.0, 10.0, 100.0}, rate => {
let meanValue = run( let meanValue = run(
FromDist(ToFloat(#Mean), DistributionTypes.Symbolic(#Exponential({rate: rate}))), FromDist(#ToFloat(#Mean), DistributionTypes.Symbolic(#Exponential({rate: rate}))),
) )
meanValue->unpackFloat->expect->toBeCloseTo(1.0 /. rate) // https://en.wikipedia.org/wiki/Exponential_distribution#Mean,_variance,_moments,_and_median meanValue->unpackFloat->expect->toBeCloseTo(1.0 /. rate) // https://en.wikipedia.org/wiki/Exponential_distribution#Mean,_variance,_moments,_and_median
}) })
test("of a cauchy distribution", () => { test("of a cauchy distribution", () => {
let meanValue = run( let meanValue = run(
FromDist(ToFloat(#Mean), DistributionTypes.Symbolic(#Cauchy({local: 1.0, scale: 1.0}))), FromDist(#ToFloat(#Mean), DistributionTypes.Symbolic(#Cauchy({local: 1.0, scale: 1.0}))),
) )
meanValue->unpackFloat->expect->toBeSoCloseTo(1.0098094001641797, ~digits=5) meanValue->unpackFloat->expect->toBeSoCloseTo(1.0098094001641797, ~digits=5)
//-> toBe(GenDistError(Other("Cauchy distributions may have no mean value."))) //-> toBe(GenDistError(Other("Cauchy distributions may have no mean value.")))
@ -47,10 +47,7 @@ describe("(Symbolic) mean", () => {
tup => { tup => {
let (low, medium, high) = tup let (low, medium, high) = tup
let meanValue = run( let meanValue = run(
FromDist( FromDist(#ToFloat(#Mean), DistributionTypes.Symbolic(#Triangular({low, medium, high}))),
ToFloat(#Mean),
DistributionTypes.Symbolic(#Triangular({low: low, medium: medium, high: high})),
),
) )
meanValue->unpackFloat->expect->toBeCloseTo((low +. medium +. high) /. 3.0) // https://www.statology.org/triangular-distribution/ meanValue->unpackFloat->expect->toBeCloseTo((low +. medium +. high) /. 3.0) // https://www.statology.org/triangular-distribution/
}, },
@ -63,7 +60,7 @@ describe("(Symbolic) mean", () => {
tup => { tup => {
let (alpha, beta) = tup let (alpha, beta) = tup
let meanValue = run( let meanValue = run(
FromDist(ToFloat(#Mean), DistributionTypes.Symbolic(#Beta({alpha: alpha, beta: beta}))), FromDist(#ToFloat(#Mean), DistributionTypes.Symbolic(#Beta({alpha, beta}))),
) )
meanValue->unpackFloat->expect->toBeCloseTo(1.0 /. (1.0 +. beta /. alpha)) // https://en.wikipedia.org/wiki/Beta_distribution#Mean meanValue->unpackFloat->expect->toBeCloseTo(1.0 /. (1.0 +. beta /. alpha)) // https://en.wikipedia.org/wiki/Beta_distribution#Mean
}, },
@ -72,18 +69,35 @@ describe("(Symbolic) mean", () => {
// TODO: When we have our theory of validators we won't want this to be NaN but to be an error. // TODO: When we have our theory of validators we won't want this to be NaN but to be an error.
test("of beta(0, 0)", () => { test("of beta(0, 0)", () => {
let meanValue = run( let meanValue = run(
FromDist(ToFloat(#Mean), DistributionTypes.Symbolic(#Beta({alpha: 0.0, beta: 0.0}))), FromDist(#ToFloat(#Mean), DistributionTypes.Symbolic(#Beta({alpha: 0.0, beta: 0.0}))),
) )
meanValue->unpackFloat->expect->ExpectJs.toBeFalsy meanValue->unpackFloat->expect->ExpectJs.toBeFalsy
}) })
testAll(
"of beta distributions from mean and standard dev",
list{(0.39, 0.1), (0.08, 0.1), (0.8, 0.3)},
tup => {
let (mean, stdev) = tup
let betaDistribution = SymbolicDist.Beta.fromMeanAndStdev(mean, stdev)
let meanValue =
betaDistribution->E.R2.fmap(
d => run(FromDist(#ToFloat(#Mean), d->DistributionTypes.Symbolic)),
)
switch meanValue {
| Ok(value) => value->unpackFloat->expect->toBeCloseTo(mean)
| Error(err) => err->expect->toBe("shouldn't happen")
}
},
)
testAll( testAll(
"of lognormal distributions", "of lognormal distributions",
list{(2.0, 4.0), (1e-7, 1e-2), (-1e6, 10.0), (1e3, -1e2), (-1e8, -1e4), (1e2, 1e-5)}, list{(2.0, 4.0), (1e-7, 1e-2), (-1e6, 10.0), (1e3, -1e2), (-1e8, -1e4), (1e2, 1e-5)},
tup => { tup => {
let (mu, sigma) = tup let (mu, sigma) = tup
let meanValue = run( let meanValue = run(
FromDist(ToFloat(#Mean), DistributionTypes.Symbolic(#Lognormal({mu: mu, sigma: sigma}))), FromDist(#ToFloat(#Mean), DistributionTypes.Symbolic(#Lognormal({mu, sigma}))),
) )
meanValue->unpackFloat->expect->toBeCloseTo(Js.Math.exp(mu +. sigma ** 2.0 /. 2.0)) // https://brilliant.org/wiki/log-normal-distribution/ meanValue->unpackFloat->expect->toBeCloseTo(Js.Math.exp(mu +. sigma ** 2.0 /. 2.0)) // https://brilliant.org/wiki/log-normal-distribution/
}, },
@ -95,14 +109,14 @@ describe("(Symbolic) mean", () => {
tup => { tup => {
let (low, high) = tup let (low, high) = tup
let meanValue = run( let meanValue = run(
FromDist(ToFloat(#Mean), DistributionTypes.Symbolic(#Uniform({low: low, high: high}))), FromDist(#ToFloat(#Mean), DistributionTypes.Symbolic(#Uniform({low, high}))),
) )
meanValue->unpackFloat->expect->toBeCloseTo((low +. high) /. 2.0) // https://en.wikipedia.org/wiki/Continuous_uniform_distribution#Moments meanValue->unpackFloat->expect->toBeCloseTo((low +. high) /. 2.0) // https://en.wikipedia.org/wiki/Continuous_uniform_distribution#Moments
}, },
) )
test("of a float", () => { test("of a float", () => {
let meanValue = run(FromDist(ToFloat(#Mean), DistributionTypes.Symbolic(#Float(7.7)))) let meanValue = run(FromDist(#ToFloat(#Mean), DistributionTypes.Symbolic(#Float(7.7))))
meanValue->unpackFloat->expect->toBeCloseTo(7.7) meanValue->unpackFloat->expect->toBeCloseTo(7.7)
}) })
}) })

View File

@ -0,0 +1,21 @@
open Jest
open TestHelpers
describe("E.A.getByFmap", () => {
makeTest("Empty list returns None", E.A.getByFmap([], x => x + 1, x => mod(x, 2) == 0), None)
makeTest(
"Never predicate returns None",
E.A.getByFmap([1, 2, 3, 4, 5, 6], x => x + 1, _ => false),
None,
)
makeTest(
"function evaluates",
E.A.getByFmap([1, 1, 1, 1, 1, 1, 1, 2, 1, 1], x => 3 * x, x => x > 4),
Some(6),
)
makeTest(
"always predicate returns fn(fst(a))",
E.A.getByFmap([0, 1, 2, 3, 4, 5, 6], x => 10 + x, _ => true),
Some(10),
)
})

View File

@ -9,22 +9,28 @@ let prepareInputs = (ar, minWeight) =>
describe("Continuous and discrete splits", () => { describe("Continuous and discrete splits", () => {
makeTest( makeTest(
"is empty, with no common elements", "is empty, with no common elements",
prepareInputs([1.432, 1.33455, 2.0], 2), prepareInputs([1.33455, 1.432, 2.0], 2),
([1.33455, 1.432, 2.0], []), ([1.33455, 1.432, 2.0], []),
) )
makeTest( makeTest(
"only stores 3.5 as discrete when minWeight is 3", "only stores 3.5 as discrete when minWeight is 3",
prepareInputs([1.432, 1.33455, 2.0, 2.0, 3.5, 3.5, 3.5], 3), prepareInputs([1.33455, 1.432, 2.0, 2.0, 3.5, 3.5, 3.5], 3),
([1.33455, 1.432, 2.0, 2.0], [(3.5, 3.0)]), ([1.33455, 1.432, 2.0, 2.0], [(3.5, 3.0)]),
) )
makeTest( makeTest(
"doesn't store 3.5 as discrete when minWeight is 5", "doesn't store 3.5 as discrete when minWeight is 5",
prepareInputs([1.432, 1.33455, 2.0, 2.0, 3.5, 3.5, 3.5], 5), prepareInputs([1.33455, 1.432, 2.0, 2.0, 3.5, 3.5, 3.5], 5),
([1.33455, 1.432, 2.0, 2.0, 3.5, 3.5, 3.5], []), ([1.33455, 1.432, 2.0, 2.0, 3.5, 3.5, 3.5], []),
) )
makeTest(
"more general test",
prepareInputs([10., 10., 11., 11., 11., 12., 13., 13., 13., 13., 13., 14.], 3),
([10., 10., 12., 14.], [(11., 3.), (13., 5.)]),
)
let makeDuplicatedArray = count => { let makeDuplicatedArray = count => {
let arr = Belt.Array.range(1, count) |> E.A.fmap(float_of_int) let arr = Belt.Array.range(1, count) |> E.A.fmap(float_of_int)
let sorted = arr |> Belt.SortArray.stableSortBy(_, compare) let sorted = arr |> Belt.SortArray.stableSortBy(_, compare)

View File

@ -1,20 +0,0 @@
open Jest
open Expect
let makeTest = (~only=false, str, item1, item2) =>
only
? Only.test(str, () => expect(item1)->toEqual(item2))
: test(str, () => expect(item1)->toEqual(item2))
describe("Lodash", () =>
describe("Lodash", () => {
makeTest("min", Lodash.min([1, 3, 4]), 1)
makeTest("max", Lodash.max([1, 3, 4]), 4)
makeTest("uniq", Lodash.uniq([1, 3, 4, 4]), [1, 3, 4])
makeTest(
"countBy",
Lodash.countBy([1, 3, 4, 4], r => r),
Js.Dict.fromArray([("1", 1), ("3", 1), ("4", 2)]),
)
})
)

View File

@ -0,0 +1,50 @@
@@warning("-44")
module Bindings = Reducer_Bindings
module Namespace = Reducer_Namespace
open Jest
open Expect
open Expect.Operators
describe("Bindings", () => {
let value = Reducer_T.IEvNumber(1967.0)
let bindings = Bindings.make()->Bindings.set("value", value)
test("get", () => {
expect(bindings->Bindings.get("value")) == Some(value)
})
test("get nonexisting value", () => {
expect(bindings->Bindings.get("nosuchvalue")) == None
})
test("get on extended", () => {
expect(bindings->Bindings.extend->Bindings.get("value")) == Some(value)
})
test("locals", () => {
expect(bindings->Bindings.locals->Namespace.get("value")) == Some(value)
})
test("locals on extendeed", () => {
expect(bindings->Bindings.extend->Bindings.locals->Namespace.get("value")) == None
})
describe("extend", () => {
let value2 = Reducer_T.IEvNumber(5.)
let extendedBindings = bindings->Bindings.extend->Bindings.set("value", value2)
test(
"get on extended",
() => {
expect(extendedBindings->Bindings.get("value")) == Some(value2)
},
)
test(
"get on original",
() => {
expect(bindings->Bindings.get("value")) == Some(value)
},
)
})
})

View File

@ -1,4 +0,0 @@
open Jest
open Expect
test("todo", () => expect("1")->toBe("1"))

View File

@ -1,146 +0,0 @@
open Jest
// open Expect
open Reducer_Expression_ExpressionBuilder
open Reducer_TestMacroHelpers
module ExpressionT = Reducer_Expression_T
let exampleExpression = eNumber(1.)
let exampleExpressionY = eSymbol("y")
let exampleStatementY = eLetStatement("y", eNumber(1.))
let exampleStatementX = eLetStatement("y", eSymbol("x"))
let exampleStatementZ = eLetStatement("z", eSymbol("y"))
// If it is not a macro then it is not expanded
testMacro([], exampleExpression, "Ok(1)")
describe("bindStatement", () => {
// A statement is bound by the bindings created by the previous statement
testMacro(
[],
eBindStatement(eBindings([]), exampleStatementY),
"Ok((:$_setBindings_$ @{} :y 1) context: @{})",
)
// Then it answers the bindings for the next statement when reduced
testMacroEval([], eBindStatement(eBindings([]), exampleStatementY), "Ok(@{y: 1})")
// Now let's feed a binding to see what happens
testMacro(
[],
eBindStatement(eBindings([("x", IEvNumber(2.))]), exampleStatementX),
"Ok((:$_setBindings_$ @{x: 2} :y 2) context: @{x: 2})",
)
// An expression does not return a binding, thus error
testMacro([], eBindStatement(eBindings([]), exampleExpression), "Assignment expected")
// When bindings from previous statement are missing the context is injected. This must be the first statement of a block
testMacro(
[("z", IEvNumber(99.))],
eBindStatementDefault(exampleStatementY),
"Ok((:$_setBindings_$ @{z: 99} :y 1) context: @{z: 99})",
)
})
describe("bindExpression", () => {
// x is simply bound in the expression
testMacro(
[],
eBindExpression(eBindings([("x", IEvNumber(2.))]), eSymbol("x")),
"Ok(2 context: @{x: 2})",
)
// When an let statement is the end expression then bindings are returned
testMacro(
[],
eBindExpression(eBindings([("x", IEvNumber(2.))]), exampleStatementY),
"Ok((:$_exportBindings_$ (:$_setBindings_$ @{x: 2} :y 1)) context: @{x: 2})",
)
// Now let's reduce that expression
testMacroEval(
[],
eBindExpression(eBindings([("x", IEvNumber(2.))]), exampleStatementY),
"Ok(@{x: 2,y: 1})",
)
// When bindings are missing the context is injected. This must be the first and last statement of a block
testMacroEval(
[("z", IEvNumber(99.))],
eBindExpressionDefault(exampleStatementY),
"Ok(@{y: 1,z: 99})",
)
})
describe("block", () => {
// Block with a single expression
testMacro([], eBlock(list{exampleExpression}), "Ok((:$$_bindExpression_$$ 1))")
testMacroEval([], eBlock(list{exampleExpression}), "Ok(1)")
// Block with a single statement
testMacro([], eBlock(list{exampleStatementY}), "Ok((:$$_bindExpression_$$ (:$_let_$ :y 1)))")
testMacroEval([], eBlock(list{exampleStatementY}), "Ok(@{y: 1})")
// Block with a statement and an expression
testMacro(
[],
eBlock(list{exampleStatementY, exampleExpressionY}),
"Ok((:$$_bindExpression_$$ (:$$_bindStatement_$$ (:$_let_$ :y 1)) :y))",
)
testMacroEval([], eBlock(list{exampleStatementY, exampleExpressionY}), "Ok(1)")
// Block with a statement and another statement
testMacro(
[],
eBlock(list{exampleStatementY, exampleStatementZ}),
"Ok((:$$_bindExpression_$$ (:$$_bindStatement_$$ (:$_let_$ :y 1)) (:$_let_$ :z :y)))",
)
testMacroEval([], eBlock(list{exampleStatementY, exampleStatementZ}), "Ok(@{y: 1,z: 1})")
// Block inside a block
testMacro([], eBlock(list{eBlock(list{exampleExpression})}), "Ok((:$$_bindExpression_$$ {1}))")
testMacroEval([], eBlock(list{eBlock(list{exampleExpression})}), "Ok(1)")
// Block assigned to a variable
testMacro(
[],
eBlock(list{eLetStatement("z", eBlock(list{eBlock(list{exampleExpressionY})}))}),
"Ok((:$$_bindExpression_$$ (:$_let_$ :z {{:y}})))",
)
testMacroEval(
[],
eBlock(list{eLetStatement("z", eBlock(list{eBlock(list{exampleExpressionY})}))}),
"Ok(@{z: :y})",
)
// Empty block
testMacro([], eBlock(list{}), "Ok(:undefined block)") //TODO: should be an error
// :$$_block_$$ (:$$_block_$$ (:$_let_$ :y (:add :x 1)) :y)"
testMacro(
[],
eBlock(list{
eBlock(list{
eLetStatement("y", eFunction("add", list{eSymbol("x"), eNumber(1.)})),
eSymbol("y"),
}),
}),
"Ok((:$$_bindExpression_$$ {(:$_let_$ :y (:add :x 1)); :y}))",
)
testMacroEval(
[("x", IEvNumber(1.))],
eBlock(list{
eBlock(list{
eLetStatement("y", eFunction("add", list{eSymbol("x"), eNumber(1.)})),
eSymbol("y"),
}),
}),
"Ok(2)",
)
})
describe("lambda", () => {
// assign a lambda to a variable
let lambdaExpression = eFunction("$$_lambda_$$", list{eArrayString(["y"]), exampleExpressionY})
testMacro([], lambdaExpression, "Ok(lambda(y=>internal code))")
// call a lambda
let callLambdaExpression = list{lambdaExpression, eNumber(1.)}->ExpressionT.EList
testMacro([], callLambdaExpression, "Ok(((:$$_lambda_$$ [y] :y) 1))")
testMacroEval([], callLambdaExpression, "Ok(1)")
// Parameters shadow the outer scope
testMacroEval([("y", IEvNumber(666.))], callLambdaExpression, "Ok(1)")
// When not shadowed by the parameters, the outer scope variables are available
let lambdaExpression = eFunction(
"$$_lambda_$$",
list{eArrayString(["z"]), eFunction("add", list{eSymbol("y"), eSymbol("z")})},
)
let callLambdaExpression = eList(list{lambdaExpression, eNumber(1.)})
testMacroEval([("y", IEvNumber(666.))], callLambdaExpression, "Ok(667)")
})

View File

@ -1,41 +0,0 @@
module ExpressionValue = ReducerInterface.ExternalExpressionValue
open Jest
open Expect
let expectEvalToBe = (expr: string, answer: string) =>
Reducer.evaluate(expr)->ExpressionValue.toStringResult->expect->toBe(answer)
let testEval = (expr, answer) => test(expr, () => expectEvalToBe(expr, answer))
describe("builtin", () => {
// All MathJs operators and functions are available for string, number and boolean
// .e.g + - / * > >= < <= == /= not and or
// See https://mathjs.org/docs/expressions/syntax.html
// See https://mathjs.org/docs/reference/functions.html
testEval("-1", "Ok(-1)")
testEval("1-1", "Ok(0)")
testEval("2>1", "Ok(true)")
testEval("concat('a','b')", "Ok('ab')")
testEval(
"addOne(t)=t+1; toList(mapSamples(fromSamples([1,2,3,4,5,6]), addOne))",
"Ok([2,3,4,5,6,7])",
)
})
describe("builtin exception", () => {
//It's a pity that MathJs does not return error position
test("MathJs Exception", () =>
expectEvalToBe("testZadanga(1)", "Error(JS Exception: Error: Undefined function testZadanga)")
)
})
describe("error reporting from collection functions", () => {
testEval("arr=[1,2,3]; map(arr, {|x| x*2})", "Ok([2,4,6])")
testEval(
"arr = [normal(3,2)]; map(arr, zarathsuzaWasHere)",
"Error(zarathsuzaWasHere is not defined)",
)
// FIXME: returns "Error(Function not found: map(Array,Symbol))"
// Actually this error is correct but not informative
})

View File

@ -1,22 +0,0 @@
// Reducer_Helpers
module ErrorValue = Reducer_ErrorValue
module ExternalExpressionValue = ReducerInterface.ExternalExpressionValue
module InternalExpressionValue = ReducerInterface.InternalExpressionValue
module Module = Reducer_Category_Module
let removeDefaultsInternal = (iev: InternalExpressionValue.t) => {
switch iev {
| InternalExpressionValue.IEvModule(nameSpace) =>
Module.removeOther(
nameSpace,
ReducerInterface.StdLib.internalStdLib,
)->InternalExpressionValue.IEvModule
| value => value
}
}
let removeDefaultsExternal = (ev: ExternalExpressionValue.t): ExternalExpressionValue.t =>
ev->InternalExpressionValue.toInternal->removeDefaultsInternal->InternalExpressionValue.toExternal
let rRemoveDefaultsInternal = r => Belt.Result.map(r, removeDefaultsInternal)
let rRemoveDefaultsExternal = r => Belt.Result.map(r, removeDefaultsExternal)

View File

@ -1,31 +0,0 @@
module MathJs = Reducer_MathJs
module ErrorValue = Reducer.ErrorValue
open Jest
open ExpectJs
describe("eval", () => {
test("Number", () => expect(MathJs.Eval.eval("1"))->toEqual(Ok(IEvNumber(1.))))
test("Number expr", () => expect(MathJs.Eval.eval("1-1"))->toEqual(Ok(IEvNumber(0.))))
test("String", () => expect(MathJs.Eval.eval("'hello'"))->toEqual(Ok(IEvString("hello"))))
test("String expr", () =>
expect(MathJs.Eval.eval("concat('hello ','world')"))->toEqual(Ok(IEvString("hello world")))
)
test("Boolean", () => expect(MathJs.Eval.eval("true"))->toEqual(Ok(IEvBool(true))))
test("Boolean expr", () => expect(MathJs.Eval.eval("2>1"))->toEqual(Ok(IEvBool(true))))
})
describe("errors", () => {
// All those errors propagete up and are returned by the resolver
test("unknown function", () =>
expect(MathJs.Eval.eval("testZadanga()"))->toEqual(
Error(ErrorValue.REJavaScriptExn(Some("Undefined function testZadanga"), Some("Error"))),
)
)
test("unknown answer type", () =>
expect(MathJs.Eval.eval("1+1i"))->toEqual(
Error(ErrorValue.RETodo("Unhandled MathJs literal type: object")),
)
)
})

Some files were not shown because too many files have changed in this diff Show More