├── .gitignore
├── .merlin
├── Readme.md
├── bsconfig.json
├── devtools.png
├── package-lock.json
├── package.json
├── public
├── awesome
├── index.html
├── more.html
├── script.js
├── style.css
└── thing.txt
├── screenshot.png
├── server
├── .merlin
├── dune-project
├── esy.json
├── esy.lock
│ ├── .gitattributes
│ ├── .gitignore
│ ├── index.json
│ ├── opam
│ │ ├── astring.0.8.3
│ │ │ └── opam
│ │ ├── base-bytes.base
│ │ │ └── opam
│ │ ├── base-threads.base
│ │ │ └── opam
│ │ ├── base-unix.base
│ │ │ └── opam
│ │ ├── base.v0.11.1
│ │ │ └── opam
│ │ ├── base64.2.3.0
│ │ │ └── opam
│ │ ├── cmdliner.1.0.3
│ │ │ └── opam
│ │ ├── cohttp-lwt-unix.1.2.0
│ │ │ └── opam
│ │ ├── cohttp-lwt.1.2.0
│ │ │ └── opam
│ │ ├── cohttp.1.2.0
│ │ │ └── opam
│ │ ├── conduit-lwt-unix.1.3.0
│ │ │ └── opam
│ │ ├── conduit-lwt.1.3.0
│ │ │ └── opam
│ │ ├── conduit.1.3.0
│ │ │ └── opam
│ │ ├── conf-m4.1
│ │ │ └── opam
│ │ ├── cppo.1.6.5
│ │ │ └── opam
│ │ ├── cstruct.3.7.0
│ │ │ └── opam
│ │ ├── dune.1.8.2
│ │ │ └── opam
│ │ ├── fieldslib.v0.11.0
│ │ │ └── opam
│ │ ├── fmt.0.8.5
│ │ │ └── opam
│ │ ├── hex.1.3.0
│ │ │ └── opam
│ │ ├── ipaddr.2.9.0
│ │ │ └── opam
│ │ ├── jbuilder.transition
│ │ │ └── opam
│ │ ├── jsonm.1.0.1
│ │ │ └── opam
│ │ ├── logs.0.6.2
│ │ │ └── opam
│ │ ├── lwt.4.2.0
│ │ │ └── opam
│ │ ├── magic-mime.1.1.1
│ │ │ └── opam
│ │ ├── menhir.20181113
│ │ │ └── opam
│ │ ├── merlin-extend.0.3
│ │ │ └── opam
│ │ ├── mmap.1.0.2
│ │ │ └── opam
│ │ ├── num.1.1
│ │ │ ├── files
│ │ │ │ ├── findlib-install.patch
│ │ │ │ └── installation-warning.patch
│ │ │ └── opam
│ │ ├── ocaml-compiler-libs.v0.11.0
│ │ │ └── opam
│ │ ├── ocaml-migrate-parsetree.1.2.0
│ │ │ └── opam
│ │ ├── ocamlbuild.0.14.0
│ │ │ └── opam
│ │ ├── ocamlfind.1.8.0
│ │ │ ├── files
│ │ │ │ ├── no-awk-check.patch
│ │ │ │ ├── ocaml-stub
│ │ │ │ └── ocamlfind.install
│ │ │ └── opam
│ │ ├── parsexp.v0.11.0
│ │ │ └── opam
│ │ ├── ppx_derivers.1.0
│ │ │ └── opam
│ │ ├── ppx_fields_conv.v0.11.0
│ │ │ └── opam
│ │ ├── ppx_sexp_conv.v0.11.2
│ │ │ └── opam
│ │ ├── ppx_tools_versioned.5.2.1
│ │ │ └── opam
│ │ ├── ppxlib.0.5.0
│ │ │ └── opam
│ │ ├── re.1.8.0
│ │ │ └── opam
│ │ ├── result.1.3
│ │ │ └── opam
│ │ ├── seq.0.1
│ │ │ └── opam
│ │ ├── sexplib.v0.11.0
│ │ │ └── opam
│ │ ├── sexplib0.v0.11.0
│ │ │ └── opam
│ │ ├── stdio.v0.11.0
│ │ │ └── opam
│ │ ├── stringext.1.5.0
│ │ │ └── opam
│ │ ├── topkg.1.0.0
│ │ │ └── opam
│ │ ├── uchar.0.0.2
│ │ │ └── opam
│ │ ├── uri.2.2.0
│ │ │ └── opam
│ │ └── uutf.1.0.2
│ │ │ └── opam
│ └── overrides
│ │ ├── opam__s__base_opam__c__v0.11.1_opam_override
│ │ ├── files
│ │ │ └── base-v0.11.1.patch
│ │ └── package.json
│ │ ├── opam__s__dune_opam__c__1.8.2_opam_override
│ │ └── package.json
│ │ ├── opam__s__merlin_extend_opam__c__0.3_opam_override
│ │ ├── files
│ │ │ └── merlin-extend-winfix.patch
│ │ └── package.json
│ │ ├── opam__s__num_opam__c__1.1_opam_override
│ │ ├── files
│ │ │ └── num-1.1.patch
│ │ └── package.json
│ │ ├── opam__s__ocamlbuild_opam__c__0.14.0_opam_override
│ │ ├── files
│ │ │ └── ocamlbuild-0.14.0.patch
│ │ └── package.json
│ │ └── opam__s__ocamlfind_opam__c__1.8.0_opam_override
│ │ ├── files
│ │ └── findlib-1.8.0.patch
│ │ └── package.json
├── isomagic-todos.install
├── isomagic-todos.opam
└── server
│ ├── .merlin
│ ├── Ez2.ml
│ ├── Main.re
│ ├── Server.re
│ └── dune
├── src
├── client
│ ├── Api.re
│ ├── App.re
│ ├── Devtools.re
│ ├── DevtoolsDemo.re
│ ├── Editor.re
│ ├── Loader.re
│ ├── Serde.re
│ ├── demo.re
│ └── lib.re
└── shared
│ ├── .merlin
│ ├── SApi.re
│ ├── Shared.re
│ ├── dune
│ ├── dune-project
│ ├── esy.json
│ ├── esy.lock
│ ├── .gitattributes
│ ├── .gitignore
│ ├── index.json
│ ├── opam
│ │ ├── base-threads.base
│ │ │ └── opam
│ │ ├── base-unix.base
│ │ │ └── opam
│ │ ├── conf-m4.1
│ │ │ └── opam
│ │ ├── cppo.1.6.5
│ │ │ └── opam
│ │ ├── cstruct.3.7.0
│ │ │ └── opam
│ │ ├── dune.1.8.2
│ │ │ └── opam
│ │ ├── hex.1.3.0
│ │ │ └── opam
│ │ ├── jbuilder.transition
│ │ │ └── opam
│ │ ├── jsonm.1.0.1
│ │ │ └── opam
│ │ ├── menhir.20181113
│ │ │ └── opam
│ │ ├── merlin-extend.0.3
│ │ │ └── opam
│ │ ├── num.1.1
│ │ │ ├── files
│ │ │ │ ├── findlib-install.patch
│ │ │ │ └── installation-warning.patch
│ │ │ └── opam
│ │ ├── ocaml-migrate-parsetree.1.2.0
│ │ │ └── opam
│ │ ├── ocamlbuild.0.14.0
│ │ │ └── opam
│ │ ├── ocamlfind.1.8.0
│ │ │ ├── files
│ │ │ │ ├── no-awk-check.patch
│ │ │ │ ├── ocaml-stub
│ │ │ │ └── ocamlfind.install
│ │ │ └── opam
│ │ ├── ppx_derivers.1.0
│ │ │ └── opam
│ │ ├── ppx_tools_versioned.5.2.1
│ │ │ └── opam
│ │ ├── result.1.3
│ │ │ └── opam
│ │ ├── sexplib.v0.10.0
│ │ │ └── opam
│ │ ├── topkg.1.0.0
│ │ │ └── opam
│ │ ├── uchar.0.0.2
│ │ │ └── opam
│ │ └── uutf.1.0.2
│ │ │ └── opam
│ └── overrides
│ │ ├── opam__s__dune_opam__c__1.8.2_opam_override
│ │ └── package.json
│ │ ├── opam__s__merlin_extend_opam__c__0.3_opam_override
│ │ ├── files
│ │ │ └── merlin-extend-winfix.patch
│ │ └── package.json
│ │ ├── opam__s__num_opam__c__1.1_opam_override
│ │ ├── files
│ │ │ └── num-1.1.patch
│ │ └── package.json
│ │ ├── opam__s__ocamlbuild_opam__c__0.14.0_opam_override
│ │ ├── files
│ │ │ └── ocamlbuild-0.14.0.patch
│ │ └── package.json
│ │ └── opam__s__ocamlfind_opam__c__1.8.0_opam_override
│ │ ├── files
│ │ └── findlib-1.8.0.patch
│ │ └── package.json
│ ├── isomagic-shared.opam
│ ├── locked
│ ├── .merlin
│ ├── LockedTypes.re
│ ├── Types.re
│ └── dune
│ └── server
│ ├── .merlin
│ ├── Serde.re
│ └── dune
├── types.json
├── types.lock.json
└── webpack.config.js
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | _esy
3 | lib
4 | public/bundle.js
5 |
--------------------------------------------------------------------------------
/.merlin:
--------------------------------------------------------------------------------
1 | ####{BSB GENERATED: NO EDIT
2 | FLG -ppx /Users/jared/clone/apps/isomagic-todos/node_modules/let-anything/ppx
3 | FLG -ppx '/Users/jared/clone/apps/isomagic-todos/node_modules/bs-platform/lib/reactjs_jsx_ppx_2.exe'
4 | FLG -ppx /Users/jared/clone/apps/isomagic-todos/node_modules/bs-platform/lib/bsppx.exe
5 | S /Users/jared/clone/apps/isomagic-todos/node_modules/bs-platform/lib/ocaml
6 | B /Users/jared/clone/apps/isomagic-todos/node_modules/bs-platform/lib/ocaml
7 | FLG -nostdlib -w -40 -w -30 -color always
8 | FLG -w -30-40+6+7+27+32..39+44+45+101
9 | S /Users/jared/clone/apps/isomagic-todos/node_modules/reason-react/lib/ocaml
10 | B /Users/jared/clone/apps/isomagic-todos/node_modules/reason-react/lib/ocaml
11 | S /Users/jared/clone/apps/isomagic-todos/node_modules/bs-css/lib/ocaml
12 | B /Users/jared/clone/apps/isomagic-todos/node_modules/bs-css/lib/ocaml
13 | S src/shared
14 | B lib/bs/src/shared
15 | S src/shared/locked
16 | B lib/bs/src/shared/locked
17 | S src/client
18 | B lib/bs/src/client
19 | ####BSB GENERATED: NO EDIT}
20 |
--------------------------------------------------------------------------------
/Readme.md:
--------------------------------------------------------------------------------
1 | # Isomagic Todos App
2 |
3 |
4 |
5 | Here's an example app that does a couple of neat tricks:
6 |
7 | - the server is compiled with bsb-native
8 | - the client is compiled with bsb
9 | - they share some code
10 | - it uses some custom ppxs that are installed via npm
11 | - `ppx_autoserialize`, which gives us json stringify/parse for free for all
12 | custom types, as well as nice chrome devtools object printing
13 | - `ppx_async`, for `async/await` goodness
14 | - `ppx_guard`, for `guard let` a la swift
15 |
16 |
17 | #### Here's some chrome devtools
18 | 
19 |
--------------------------------------------------------------------------------
/bsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "isomagic-todos",
3 | "version": "0.1.0",
4 | "sources": [
5 | {
6 | "dir": "src",
7 | "subdirs": [
8 | "client",
9 | {"dir": "shared","subdirs": [
10 | "locked"
11 | ]}
12 | ]
13 | }
14 | ],
15 | "refmt": 3,
16 | "bsc-flags": ["-w", "-40", "-w", "-30", "-bs-super-errors"],
17 | "reason": {
18 | "react-jsx": 2
19 | },
20 | "ppx-flags": [
21 | "let-anything/ppx"
22 | ],
23 | "bs-dependencies" : [
24 | "reason-react",
25 | "bs-css"
26 | ]
27 | }
28 |
--------------------------------------------------------------------------------
/devtools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jaredly/isomagic-todos/1ad477a9cefeea57e63b64b1f60f898baf76dac8/devtools.png
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "isomagic-todos",
3 | "version": "2.0.0",
4 | "scripts": {
5 | "build": "bsb -make-world",
6 | "start": "bsb -make-world -w -ws _ ",
7 | "types": "../../tools/reason-language-server/_esy/default/build/install/default/bin/type-digger types.json"
8 | },
9 | "keywords": [
10 | "BuckleScript"
11 | ],
12 | "author": "",
13 | "license": "MIT",
14 | "dependencies": {
15 | "bs-css": "^7.1.0",
16 | "react": "^16.2.0",
17 | "react-dom": "^16.2.0",
18 | "reason-react": ">=0.4.0",
19 | "let-anything": "1.0.3",
20 | "webpack": "^4.20.2"
21 | },
22 | "devDependencies": {
23 | "bs-platform": "^4.0.18",
24 | "webpack-cli": "^3.1.1"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/public/awesome:
--------------------------------------------------------------------------------
1 | hello
2 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Autoserialize
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/public/more.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | hi
4 |
8 |
9 |
--------------------------------------------------------------------------------
/public/script.js:
--------------------------------------------------------------------------------
1 | document.body.innerHTML += "awesome sauce"
2 |
3 | document.getElementById("submit").onclick = e => {
4 | e.preventDefault()
5 | e.stopPropagation()
6 | console.log('yeah')
7 | const name = document.querySelector('[name=name]').value;
8 | fetch('/name', {
9 | body: name,
10 | method: 'POST',
11 | }).then(res => res.json())
12 | .then(res => console.log('got', res))
13 | .catch(err => console.log('fail', err))
14 | }
--------------------------------------------------------------------------------
/public/style.css:
--------------------------------------------------------------------------------
1 |
2 | body {
3 | font-family: -apple-system, sans-serif;
4 | font-weight: 200;
5 | }
6 |
7 | input {
8 | font-family: inherit;
9 | font-weight: inherit;
10 | font-style: inherit;
11 | }
12 |
13 | div {
14 | flex-direction: column;
15 | display: flex;
16 | flex-shrink: 0;
17 | min-width: 0;
18 | min-height: 0;
19 | }
20 |
--------------------------------------------------------------------------------
/public/thing.txt:
--------------------------------------------------------------------------------
1 | hello folks
2 |
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jaredly/isomagic-todos/1ad477a9cefeea57e63b64b1f60f898baf76dac8/screenshot.png
--------------------------------------------------------------------------------
/server/.merlin:
--------------------------------------------------------------------------------
1 | ####{BSB GENERATED: NO EDIT
2 | FLG -ppx /Users/jared/clone/tools/isomagic-todos/server/../node_modules/.bin/ppx_magic_native
3 | FLG -ppx /Users/jared/clone/tools/isomagic-todos/server/../node_modules/.bin/ppx_guard
4 | FLG -ppx /Users/jared/clone/tools/isomagic-todos/server/../node_modules/.bin/reason_async
5 | FLG -ppx '/Users/jared/clone/tools/isomagic-todos/node_modules/bs-platform/bin/reactjs_jsx_ppx_2.exe'
6 | FLG -ppx /Users/jared/clone/tools/isomagic-todos/node_modules/bs-platform/bin/bsppx.exe
7 | S /Users/jared/clone/tools/isomagic-todos/node_modules/bs-platform/lib/ocaml/native
8 | B /Users/jared/clone/tools/isomagic-todos/node_modules/bs-platform/lib/ocaml/native
9 | FLG -nostdlib -w -40 -w -30 -no-alias-deps -color always
10 | S ../src
11 | B lib/bs/native/../src
12 | S ../src/server
13 | B lib/bs/native/../src/server
14 | S ../src/shared
15 | B lib/bs/native/../src/shared
16 | S ../src/client
17 | B lib/bs/native/../src/client
18 | PKG lwt lwt.unix cohttp cohttp.lwt yojson
19 | ####BSB GENERATED: NO EDIT}
20 |
--------------------------------------------------------------------------------
/server/dune-project:
--------------------------------------------------------------------------------
1 | (lang dune 1.0)
2 | (name isomagic-todos)
3 |
--------------------------------------------------------------------------------
/server/esy.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "isomagic-todos",
3 | "version": "0.0.0-dont-publish",
4 | "private": true,
5 | "scripts": {
6 | "symlink": "esy ln -s '#{self.target_dir}/install/default/bin/Bin' bin.exe",
7 | "cp-bin": "cp \"#{self.target_dir}/default/bin/Bin.exe\" bin.exe",
8 | "run-codemod": "./_build/install/default/bin/ExampleCodemod.exe ./examples/example-codemod",
9 | "types": "./_esy/default/build/install/default/bin/type-digger type-digger/types.json"
10 | },
11 | "keywords": [
12 | "Reason",
13 | "lsp",
14 | "IDE"
15 | ],
16 | "description": "A pure-reason implementation of a language server",
17 | "author": "Jared Forsyth",
18 | "license": "ISC",
19 | "esy": {
20 | "build": "dune build -p #{self.name}"
21 | },
22 | "dependencies": {
23 | "@opam/dune": "*",
24 | "@opam/conduit-lwt": "*",
25 | "@opam/conduit-lwt-unix": "1.3.0",
26 | "@opam/cohttp-lwt-unix": "1.2.0",
27 | "@esy-ocaml/reason": "*",
28 | "ezjsonm": "jaredly/ezjsonm#esy",
29 | "@opam/ppx_sexp_conv": "v0.11.2",
30 | "let-anything-esy": "*",
31 | "@opam/sexplib": "v0.11.0",
32 | "isomagic-shared": "*",
33 | "ocaml": "~4.6.0"
34 | },
35 | "resolutions": {
36 | "isomagic-shared": "link:../src/shared/esy.json"
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/server/esy.lock/.gitattributes:
--------------------------------------------------------------------------------
1 |
2 | # Set eol to LF so files aren't converted to CRLF-eol on Windows.
3 | * text eol=lf
4 |
--------------------------------------------------------------------------------
/server/esy.lock/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Reset any possible .gitignore, we want all esy.lock to be un-ignored.
3 | !*
4 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/astring.0.8.3/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Daniel Bünzli "
3 | authors: ["Daniel Bünzli "]
4 | homepage: "http://erratique.ch/software/astring"
5 | doc: "http://erratique.ch/software/astring/doc"
6 | dev-repo: "git+http://erratique.ch/repos/astring.git"
7 | bug-reports: "https://github.com/dbuenzli/astring/issues"
8 | tags: [ "string" "org:erratique" ]
9 | license: "ISC"
10 | depends: [
11 | "ocaml" {>= "4.01.0"}
12 | "ocamlfind" {build}
13 | "ocamlbuild" {build}
14 | "topkg" {build}
15 | "base-bytes"
16 | ]
17 | build: [[
18 | "ocaml" "pkg/pkg.ml" "build"
19 | "--pinned" "%{pinned}%" ]]
20 | synopsis: "Alternative String module for OCaml"
21 | description: """
22 | Astring exposes an alternative `String` module for OCaml. This module
23 | tries to balance minimality and expressiveness for basic, index-free,
24 | string processing and provides types and functions for substrings,
25 | string sets and string maps.
26 |
27 | Remaining compatible with the OCaml `String` module is a non-goal. The
28 | `String` module exposed by Astring has exception safe functions,
29 | removes deprecated and rarely used functions, alters some signatures
30 | and names, adds a few missing functions and fully exploits OCaml's
31 | newfound string immutability.
32 |
33 | Astring depends only on the OCaml standard library. It is distributed
34 | under the ISC license."""
35 | url {
36 | src: "http://erratique.ch/software/astring/releases/astring-0.8.3.tbz"
37 | checksum: "md5=c5bf6352b9ac27fbeab342740f4fa870"
38 | }
39 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/base-bytes.base/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: " "
3 | authors: " "
4 | homepage: " "
5 | depends: [
6 | "ocaml" {>= "4.02.0"}
7 | "ocamlfind" {>= "1.5.3"}
8 | ]
9 | synopsis: "Bytes library distributed with the OCaml compiler"
10 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/base-threads.base/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "https://github.com/ocaml/opam-repository/issues"
3 | description: """
4 | Threads library distributed with the OCaml compiler
5 | """
6 |
7 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/base-unix.base/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "https://github.com/ocaml/opam-repository/issues"
3 | description: """
4 | Unix library distributed with the OCaml compiler
5 | """
6 |
7 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/base.v0.11.1/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/janestreet/base"
5 | bug-reports: "https://github.com/janestreet/base/issues"
6 | dev-repo: "git+https://github.com/janestreet/base.git"
7 | license: "Apache-2.0"
8 | build: [
9 | ["jbuilder" "build" "-p" name "-j" jobs]
10 | ]
11 | depends: [
12 | "ocaml" {>= "4.04.1" & < "4.08.0"}
13 | "sexplib0" {>= "v0.11" & < "v0.12"}
14 | "jbuilder" {build & >= "1.0+beta18.1"}
15 | ]
16 | depopts: [
17 | "base-native-int63"
18 | ]
19 | synopsis: "Full standard library replacement for OCaml"
20 | description: """
21 | Full standard library replacement for OCaml
22 |
23 | Base is a complete and portable alternative to the OCaml standard
24 | library. It provides all standard functionalities one would expect
25 | from a language standard library. It uses consistent conventions
26 | across all of its module.
27 |
28 | Base aims to be usable in any context. As a result system dependent
29 | features such as I/O are not offered by Base. They are instead
30 | provided by companion libraries such as stdio:
31 |
32 | https://github.com/janestreet/stdio"""
33 | url {
34 | src:
35 | "https://github.com/janestreet/base/releases/download/v0.11.1/base-v0.11.1.tbz"
36 | checksum: "md5=e7e7dc5db3f1fea19d74a31bbd4ac621"
37 | }
38 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/base64.2.3.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "mirageos-devel@lists.xenproject.org"
3 | authors: [ "Thomas Gazagnaire"
4 | "Anil Madhavapeddy"
5 | "Peter Zotov" ]
6 | license: "ISC"
7 | homepage: "https://github.com/mirage/ocaml-base64"
8 | doc: "http://mirage.github.io/ocaml-base64/"
9 | bug-reports: "https://github.com/mirage/ocaml-base64/issues"
10 | dev-repo: "git+https://github.com/mirage/ocaml-base64.git"
11 | synopsis: "Base64 encoding for OCaml"
12 | description: """
13 | Base64 is a group of similar binary-to-text encoding schemes that represent
14 | binary data in an ASCII string format by translating it into a radix-64
15 | representation. It is specified in RFC 4648.
16 | """
17 | depends: [
18 | "base-bytes"
19 | "dune" {build & >= "1.0.1"}
20 | "bos" {with-test}
21 | "rresult" {with-test}
22 | "alcotest" {with-test}
23 | ]
24 | build: [
25 | ["dune" "subst"]
26 | ["dune" "build" "-p" name "-j" jobs]
27 | ["dune" "runtest" "-p" name] {with-test}
28 | ]
29 | url {
30 | src:
31 | "https://github.com/mirage/ocaml-base64/releases/download/v2.3.0/base64-v2.3.0.tbz"
32 | checksum: "md5=f0b29524dbaff3ac6eb4d6c578b1b80d"
33 | }
34 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/cmdliner.1.0.3/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Daniel Bünzli "
3 | authors: ["Daniel Bünzli "]
4 | homepage: "http://erratique.ch/software/cmdliner"
5 | doc: "http://erratique.ch/software/cmdliner/doc/Cmdliner"
6 | dev-repo: "git+http://erratique.ch/repos/cmdliner.git"
7 | bug-reports: "https://github.com/dbuenzli/cmdliner/issues"
8 | tags: [ "cli" "system" "declarative" "org:erratique" ]
9 | license: "ISC"
10 | depends:[ "ocaml" {>= "4.03.0"} ]
11 | build: [[ make "all" "PREFIX=%{prefix}%" ]]
12 | install:
13 | [[make "install" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ]
14 | [make "install-doc" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ]]
15 |
16 | synopsis: """Declarative definition of command line interfaces for OCaml"""
17 | description: """\
18 |
19 | Cmdliner allows the declarative definition of command line interfaces
20 | for OCaml.
21 |
22 | It provides a simple and compositional mechanism to convert command
23 | line arguments to OCaml values and pass them to your functions. The
24 | module automatically handles syntax errors, help messages and UNIX man
25 | page generation. It supports programs with single or multiple commands
26 | and respects most of the [POSIX][1] and [GNU][2] conventions.
27 |
28 | Cmdliner has no dependencies and is distributed under the ISC license.
29 |
30 | [1]: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html
31 | [2]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html
32 | """
33 | url {
34 | archive: "http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.3.tbz"
35 | checksum: "3674ad01d4445424105d33818c78fba8"
36 | }
37 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/cohttp-lwt-unix.1.2.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | synopsis: "An OCaml library for HTTP clients and servers"
3 | description: """
4 | [](https://gitter.im/mirage/ocaml-cohttp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
5 |
6 | Cohttp is an OCaml library for creating HTTP daemons. It has a portable
7 | HTTP parser, and implementations using various asynchronous programming
8 | libraries:
9 |
10 | * `Cohttp_lwt_unix` uses the [Lwt](https://ocsigen.org/lwt/) library, and
11 | specifically the UNIX bindings.
12 | * `Cohttp_async` uses the [Async](https://realworldocaml.org/v1/en/html/concurrent-programming-with-async.html)
13 | library.
14 | * `Cohttp_lwt` exposes an OS-independent Lwt interface, which is used
15 | by the [Mirage](https://mirage.io/) interface to generate standalone
16 | microkernels (use the cohttp-mirage subpackage).
17 | * `Cohttp_lwt_xhr` compiles to a JavaScript module that maps the Cohttp
18 | calls to XMLHTTPRequests. This is used to compile OCaml libraries like
19 | the GitHub bindings to JavaScript and still run efficiently.
20 |
21 | You can implement other targets using the parser very easily. Look at the `IO`
22 | signature in `lib/s.mli` and implement that in the desired backend.
23 |
24 | You can activate some runtime debugging by setting `COHTTP_DEBUG` to any
25 | value, and all requests and responses will be written to stderr. Further
26 | debugging of the connection layer can be obtained by setting `CONDUIT_DEBUG`
27 | to any value."""
28 | maintainer: "anil@recoil.org"
29 | authors: [
30 | "Anil Madhavapeddy"
31 | "Stefano Zacchiroli"
32 | "David Sheets"
33 | "Thomas Gazagnaire"
34 | "David Scott"
35 | "Rudi Grinberg"
36 | "Andy Ray"
37 | ]
38 | license: "ISC"
39 | tags: ["org:mirage" "org:xapi-project"]
40 | homepage: "https://github.com/mirage/ocaml-cohttp"
41 | doc: "https://mirage.github.io/ocaml-cohttp/"
42 | bug-reports: "https://github.com/mirage/ocaml-cohttp/issues"
43 | depends: [
44 | "ocaml" {>= "4.04.1"}
45 | "dune" {build & >= "1.1.0"}
46 | "conduit-lwt-unix" {>= "1.0.3"}
47 | "cmdliner"
48 | "magic-mime"
49 | "logs"
50 | "fmt" {>= "0.8.2"}
51 | "cohttp-lwt" {="1.2.0"}
52 | "lwt" {>= "3.0.0"}
53 | "base-unix"
54 | "ounit" {with-test}
55 | ]
56 | conflicts: [
57 | "lwt" {< "2.5.0"}
58 | ]
59 | build: [
60 | ["dune" "subst"] {pinned}
61 | ["dune" "build" "-p" name "-j" jobs]
62 | ["dune" "runtest" "-p" name "-j" jobs] {with-test & os != "macos"}
63 | ]
64 | dev-repo: "git+https://github.com/mirage/ocaml-cohttp.git"
65 | url {
66 | src:
67 | "https://github.com/mirage/ocaml-cohttp/releases/download/v1.2.0/cohttp-v1.2.0.tbz"
68 | checksum: "md5=7aa3d4582848afff9a62f866b23173e1"
69 | }
70 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/cohttp-lwt.1.2.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | synopsis: "An OCaml library for HTTP clients and servers"
3 | description: """
4 | [](https://gitter.im/mirage/ocaml-cohttp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
5 |
6 | Cohttp is an OCaml library for creating HTTP daemons. It has a portable
7 | HTTP parser, and implementations using various asynchronous programming
8 | libraries:
9 |
10 | * `Cohttp_lwt_unix` uses the [Lwt](https://ocsigen.org/lwt/) library, and
11 | specifically the UNIX bindings.
12 | * `Cohttp_async` uses the [Async](https://realworldocaml.org/v1/en/html/concurrent-programming-with-async.html)
13 | library.
14 | * `Cohttp_lwt` exposes an OS-independent Lwt interface, which is used
15 | by the [Mirage](https://mirage.io/) interface to generate standalone
16 | microkernels (use the cohttp-mirage subpackage).
17 | * `Cohttp_lwt_xhr` compiles to a JavaScript module that maps the Cohttp
18 | calls to XMLHTTPRequests. This is used to compile OCaml libraries like
19 | the GitHub bindings to JavaScript and still run efficiently.
20 |
21 | You can implement other targets using the parser very easily. Look at the `IO`
22 | signature in `lib/s.mli` and implement that in the desired backend.
23 |
24 | You can activate some runtime debugging by setting `COHTTP_DEBUG` to any
25 | value, and all requests and responses will be written to stderr. Further
26 | debugging of the connection layer can be obtained by setting `CONDUIT_DEBUG`
27 | to any value."""
28 | maintainer: "anil@recoil.org"
29 | authors: [
30 | "Anil Madhavapeddy"
31 | "Stefano Zacchiroli"
32 | "David Sheets"
33 | "Thomas Gazagnaire"
34 | "David Scott"
35 | "Rudi Grinberg"
36 | "Andy Ray"
37 | ]
38 | license: "ISC"
39 | tags: ["org:mirage" "org:xapi-project"]
40 | homepage: "https://github.com/mirage/ocaml-cohttp"
41 | doc: "https://mirage.github.io/ocaml-cohttp/"
42 | bug-reports: "https://github.com/mirage/ocaml-cohttp/issues"
43 | depends: [
44 | "ocaml" {>= "4.04.1"}
45 | "dune" {build & >= "1.1.0"}
46 | "cohttp" {>= "1.2.0" & <"1.3.0"}
47 | "lwt"
48 | "sexplib0" {< "v0.12"}
49 | "ppx_sexp_conv" {>= "v0.9.0" & < "v0.12"}
50 | ]
51 | conflicts: [
52 | "lwt" {< "2.5.0"}
53 | ]
54 | build: [
55 | ["dune" "subst"] {pinned}
56 | ["dune" "build" "-p" name "-j" jobs]
57 | ["dune" "runtest" "-p" name "-j" jobs] {with-test}
58 | ]
59 | dev-repo: "git+https://github.com/mirage/ocaml-cohttp.git"
60 | url {
61 | src:
62 | "https://github.com/mirage/ocaml-cohttp/releases/download/v1.2.0/cohttp-v1.2.0.tbz"
63 | checksum: "md5=7aa3d4582848afff9a62f866b23173e1"
64 | }
65 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/cohttp.1.2.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | synopsis: "An OCaml library for HTTP clients and servers"
3 | description: """
4 | [](https://gitter.im/mirage/ocaml-cohttp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
5 |
6 | Cohttp is an OCaml library for creating HTTP daemons. It has a portable
7 | HTTP parser, and implementations using various asynchronous programming
8 | libraries:
9 |
10 | * `Cohttp_lwt_unix` uses the [Lwt](https://ocsigen.org/lwt/) library, and
11 | specifically the UNIX bindings.
12 | * `Cohttp_async` uses the [Async](https://realworldocaml.org/v1/en/html/concurrent-programming-with-async.html)
13 | library.
14 | * `Cohttp_lwt` exposes an OS-independent Lwt interface, which is used
15 | by the [Mirage](https://mirage.io/) interface to generate standalone
16 | microkernels (use the cohttp-mirage subpackage).
17 | * `Cohttp_lwt_xhr` compiles to a JavaScript module that maps the Cohttp
18 | calls to XMLHTTPRequests. This is used to compile OCaml libraries like
19 | the GitHub bindings to JavaScript and still run efficiently.
20 |
21 | You can implement other targets using the parser very easily. Look at the `IO`
22 | signature in `lib/s.mli` and implement that in the desired backend.
23 |
24 | You can activate some runtime debugging by setting `COHTTP_DEBUG` to any
25 | value, and all requests and responses will be written to stderr. Further
26 | debugging of the connection layer can be obtained by setting `CONDUIT_DEBUG`
27 | to any value."""
28 | maintainer: "anil@recoil.org"
29 | authors: [
30 | "Anil Madhavapeddy"
31 | "Stefano Zacchiroli"
32 | "David Sheets"
33 | "Thomas Gazagnaire"
34 | "David Scott"
35 | "Rudi Grinberg"
36 | "Andy Ray"
37 | ]
38 | license: "ISC"
39 | tags: ["org:mirage" "org:xapi-project"]
40 | homepage: "https://github.com/mirage/ocaml-cohttp"
41 | doc: "https://mirage.github.io/ocaml-cohttp/"
42 | bug-reports: "https://github.com/mirage/ocaml-cohttp/issues"
43 | depends: [
44 | "ocaml" {>= "4.04.1"}
45 | "dune" {build & >= "1.1.0"}
46 | "re" {>= "1.7.2"}
47 | "uri" {>= "2.0.0"}
48 | "fieldslib" {< "v0.12"}
49 | "sexplib0" {< "v0.12"}
50 | "ppx_fields_conv" {>= "v0.9.0" & < "v0.12"}
51 | "ppx_sexp_conv" {>= "v0.9.0" & < "v0.12"}
52 | "stringext"
53 | "base64" {>= "2.0.0" & < "3.0.0"}
54 | "fmt" {with-test}
55 | "jsonm" {build}
56 | "alcotest" {with-test}
57 | ]
58 | build: [
59 | ["dune" "subst"] {pinned}
60 | ["dune" "build" "-p" name "-j" jobs]
61 | ["dune" "runtest" "-p" name "-j" jobs] {with-test}
62 | ]
63 | dev-repo: "git+https://github.com/mirage/ocaml-cohttp.git"
64 | url {
65 | src:
66 | "https://github.com/mirage/ocaml-cohttp/releases/download/v1.2.0/cohttp-v1.2.0.tbz"
67 | checksum: "md5=7aa3d4582848afff9a62f866b23173e1"
68 | }
69 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/conduit-lwt-unix.1.3.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | synopsis: "An OCaml network connection establishment library"
3 | description: """
4 | [](https://travis-ci.org/mirage/ocaml-conduit)
5 |
6 | The `conduit` library takes care of establishing and listening for
7 | TCP and SSL/TLS connections for the Lwt and Async libraries.
8 |
9 | The reason this library exists is to provide a degree of abstraction
10 | from the precise SSL library used, since there are a variety of ways
11 | to bind to a library (e.g. the C FFI, or the Ctypes library), as well
12 | as well as which library is used (just OpenSSL for now).
13 |
14 | By default, OpenSSL is used as the preferred connection library, but
15 | you can force the use of the pure OCaml TLS stack by setting the
16 | environment variable `CONDUIT_TLS=native` when starting your program.
17 |
18 | The opam packages available are:
19 |
20 | - `conduit`: the main `Conduit` module
21 | - `conduit-lwt`: the portable Lwt implementation
22 | - `conduit-lwt-unix`: the Lwt/Unix implementation
23 | - `conduit-async` the Jane Street Async implementation
24 | - `mirage-conduit`: the MirageOS compatible implementation
25 |
26 | ### Debugging
27 |
28 | Some of the `Lwt_unix`-based modules use a non-empty `CONDUIT_DEBUG`
29 | environment variable to output debugging information to standard error.
30 | Just set this variable when running the program to see what URIs
31 | are being resolved to.
32 |
33 | ### Further Informartion
34 |
35 | * **API Docs:** http://docs.mirage.io/
36 | * **WWW:** https://github.com/mirage/ocaml-conduit
37 | * **E-mail:**
38 | * **Bugs:** https://github.com/mirage/ocaml-conduit/issues"""
39 | maintainer: "anil@recoil.org"
40 | authors: [
41 | "Anil Madhavapeddy" "Thomas Leonard" "Thomas Gazagnaire" "Rudi Grinberg"
42 | ]
43 | license: "ISC"
44 | tags: "org:mirage"
45 | homepage: "https://github.com/mirage/ocaml-conduit"
46 | bug-reports: "https://github.com/mirage/ocaml-conduit/issues"
47 | depends: [
48 | "ocaml" {>= "4.03.0"}
49 | "dune" {build}
50 | "base-unix"
51 | "ppx_sexp_conv" {< "v0.12"}
52 | "conduit-lwt" {>= "1.3.0"}
53 | "lwt" {>= "3.0.0"}
54 | "uri" {>= "1.9.4"}
55 | "ipaddr" {>= "2.8.0" & < "3.0.0"}
56 | ]
57 | depopts: ["tls" "lwt_ssl" "launchd"]
58 | conflicts: [
59 | "tls" {< "0.8.0"}
60 | ]
61 | build: [
62 | ["dune" "subst"] {pinned}
63 | ["dune" "build" "-p" name "-j" jobs]
64 | ]
65 | dev-repo: "git+https://github.com/mirage/ocaml-conduit.git"
66 | url {
67 | src:
68 | "https://github.com/mirage/ocaml-conduit/releases/download/v1.3.0/conduit-v1.3.0.tbz"
69 | checksum: "md5=df1c271a56537f8176eba811ab40ec19"
70 | }
71 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/conduit-lwt.1.3.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | synopsis: "An OCaml network connection establishment library"
3 | description: """
4 | [](https://travis-ci.org/mirage/ocaml-conduit)
5 |
6 | The `conduit` library takes care of establishing and listening for
7 | TCP and SSL/TLS connections for the Lwt and Async libraries.
8 |
9 | The reason this library exists is to provide a degree of abstraction
10 | from the precise SSL library used, since there are a variety of ways
11 | to bind to a library (e.g. the C FFI, or the Ctypes library), as well
12 | as well as which library is used (just OpenSSL for now).
13 |
14 | By default, OpenSSL is used as the preferred connection library, but
15 | you can force the use of the pure OCaml TLS stack by setting the
16 | environment variable `CONDUIT_TLS=native` when starting your program.
17 |
18 | The opam packages available are:
19 |
20 | - `conduit`: the main `Conduit` module
21 | - `conduit-lwt`: the portable Lwt implementation
22 | - `conduit-lwt-unix`: the Lwt/Unix implementation
23 | - `conduit-async` the Jane Street Async implementation
24 | - `mirage-conduit`: the MirageOS compatible implementation
25 |
26 | ### Debugging
27 |
28 | Some of the `Lwt_unix`-based modules use a non-empty `CONDUIT_DEBUG`
29 | environment variable to output debugging information to standard error.
30 | Just set this variable when running the program to see what URIs
31 | are being resolved to.
32 |
33 | ### Further Informartion
34 |
35 | * **API Docs:** http://docs.mirage.io/
36 | * **WWW:** https://github.com/mirage/ocaml-conduit
37 | * **E-mail:**
38 | * **Bugs:** https://github.com/mirage/ocaml-conduit/issues"""
39 | maintainer: "anil@recoil.org"
40 | authors: [
41 | "Anil Madhavapeddy" "Thomas Leonard" "Thomas Gazagnaire" "Rudi Grinberg"
42 | ]
43 | license: "ISC"
44 | tags: "org:mirage"
45 | homepage: "https://github.com/mirage/ocaml-conduit"
46 | bug-reports: "https://github.com/mirage/ocaml-conduit/issues"
47 | depends: [
48 | "ocaml" {>= "4.03.0"}
49 | "dune" {build}
50 | "base-unix"
51 | "ppx_sexp_conv" {< "v0.12"}
52 | "sexplib" {< "v0.12"}
53 | "conduit" {="1.3.0"}
54 | "lwt" {>= "3.0.0"}
55 | ]
56 | build: [
57 | ["dune" "subst"] {pinned}
58 | ["dune" "build" "-p" name "-j" jobs]
59 | ]
60 | dev-repo: "git+https://github.com/mirage/ocaml-conduit.git"
61 | url {
62 | src:
63 | "https://github.com/mirage/ocaml-conduit/releases/download/v1.3.0/conduit-v1.3.0.tbz"
64 | checksum: "md5=df1c271a56537f8176eba811ab40ec19"
65 | }
66 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/conduit.1.3.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | synopsis: "An OCaml network connection establishment library"
3 | description: """
4 | [](https://travis-ci.org/mirage/ocaml-conduit)
5 |
6 | The `conduit` library takes care of establishing and listening for
7 | TCP and SSL/TLS connections for the Lwt and Async libraries.
8 |
9 | The reason this library exists is to provide a degree of abstraction
10 | from the precise SSL library used, since there are a variety of ways
11 | to bind to a library (e.g. the C FFI, or the Ctypes library), as well
12 | as well as which library is used (just OpenSSL for now).
13 |
14 | By default, OpenSSL is used as the preferred connection library, but
15 | you can force the use of the pure OCaml TLS stack by setting the
16 | environment variable `CONDUIT_TLS=native` when starting your program.
17 |
18 | The opam packages available are:
19 |
20 | - `conduit`: the main `Conduit` module
21 | - `conduit-lwt`: the portable Lwt implementation
22 | - `conduit-lwt-unix`: the Lwt/Unix implementation
23 | - `conduit-async` the Jane Street Async implementation
24 | - `mirage-conduit`: the MirageOS compatible implementation
25 |
26 | ### Debugging
27 |
28 | Some of the `Lwt_unix`-based modules use a non-empty `CONDUIT_DEBUG`
29 | environment variable to output debugging information to standard error.
30 | Just set this variable when running the program to see what URIs
31 | are being resolved to.
32 |
33 | ### Further Informartion
34 |
35 | * **API Docs:** http://docs.mirage.io/
36 | * **WWW:** https://github.com/mirage/ocaml-conduit
37 | * **E-mail:**
38 | * **Bugs:** https://github.com/mirage/ocaml-conduit/issues"""
39 | maintainer: "anil@recoil.org"
40 | authors: [
41 | "Anil Madhavapeddy" "Thomas Leonard" "Thomas Gazagnaire" "Rudi Grinberg"
42 | ]
43 | license: "ISC"
44 | tags: "org:mirage"
45 | homepage: "https://github.com/mirage/ocaml-conduit"
46 | doc: "https://mirage.github.io/ocaml-conduit/"
47 | bug-reports: "https://github.com/mirage/ocaml-conduit/issues"
48 | depends: [
49 | "ocaml" {>= "4.03.0"}
50 | "dune" {build}
51 | "ppx_sexp_conv" {< "v0.12"}
52 | "sexplib" {< "v0.12"}
53 | "astring"
54 | "uri"
55 | "result"
56 | "logs" {>= "0.5.0"}
57 | "ipaddr" {>= "2.5.0" & < "3.0.0"}
58 | ]
59 | build: [
60 | ["dune" "subst"] {pinned}
61 | ["dune" "build" "-p" name "-j" jobs]
62 | ]
63 | dev-repo: "git+https://github.com/mirage/ocaml-conduit.git"
64 | url {
65 | src:
66 | "https://github.com/mirage/ocaml-conduit/releases/download/v1.3.0/conduit-v1.3.0.tbz"
67 | checksum: "md5=df1c271a56537f8176eba811ab40ec19"
68 | }
69 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/conf-m4.1/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "tim@gfxmonk.net"
3 | homepage: "http://www.gnu.org/software/m4/m4.html"
4 | bug-reports: "https://github.com/ocaml/opam-repository/issues"
5 | authors: "GNU Project"
6 | license: "GPL-3"
7 | build: [["sh" "-exc" "echo | m4"]]
8 | depexts: [
9 | ["m4"] {os-distribution = "debian"}
10 | ["m4"] {os-distribution = "ubuntu"}
11 | ["m4"] {os-distribution = "fedora"}
12 | ["m4"] {os-distribution = "rhel"}
13 | ["m4"] {os-distribution = "centos"}
14 | ["m4"] {os-distribution = "alpine"}
15 | ["m4"] {os-distribution = "nixos"}
16 | ["m4"] {os-family = "suse"}
17 | ["m4"] {os-distribution = "ol"}
18 | ["m4"] {os-distribution = "arch"}
19 | ]
20 | synopsis: "Virtual package relying on m4"
21 | description:
22 | "This package can only install if the m4 binary is installed on the system."
23 | flags: conf
24 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/cppo.1.6.5/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "martin@mjambon.com"
3 | authors: ["Martin Jambon"]
4 | homepage: "https://github.com/mjambon/cppo"
5 | dev-repo: "git+https://github.com/mjambon/cppo.git"
6 | bug-reports: "https://github.com/mjambon/cppo/issues"
7 | license: "BSD-3-Clause"
8 |
9 | build: [
10 | ["jbuilder" "subst" "-p" name] {pinned}
11 | ["jbuilder" "build" "-p" name "-j" jobs]
12 | ["jbuilder" "runtest" "-p" name] {with-test}
13 | ]
14 | depends: [
15 | "ocaml"
16 | "jbuilder" {build & >= "1.0+beta17"}
17 | "base-unix"
18 | ]
19 | synopsis: "Equivalent of the C preprocessor for OCaml programs"
20 | url {
21 | src: "https://github.com/mjambon/cppo/archive/v1.6.5.tar.gz"
22 | checksum: "md5=1cd25741d31417995b0973fe0b6f6c82"
23 | }
24 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/cstruct.3.7.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "anil@recoil.org"
3 | authors: ["Anil Madhavapeddy" "Richard Mortier" "Thomas Gazagnaire"
4 | "Pierre Chambart" "David Kaloper" "Jeremy Yallop" "David Scott"
5 | "Mindy Preston" "Thomas Leonard" "Anton Kochkov" "Etienne Millon" ]
6 | homepage: "https://github.com/mirage/ocaml-cstruct"
7 | license: "ISC"
8 | dev-repo: "git+https://github.com/mirage/ocaml-cstruct.git"
9 | bug-reports: "https://github.com/mirage/ocaml-cstruct/issues"
10 | doc: "https://mirage.github.io/ocaml-cstruct/"
11 |
12 | tags: [ "org:mirage" "org:ocamllabs" ]
13 | build: [
14 | ["dune" "subst"] {pinned}
15 | ["dune" "build" "-p" name "-j" jobs]
16 | ["dune" "runtest" "-p" name "-j" jobs] {with-test}
17 | ]
18 | depends: [
19 | "ocaml" {>= "4.03.0"}
20 | "dune" {build & >= "1.0"}
21 | "sexplib" {< "v0.12"}
22 | "alcotest" {with-test}
23 | ]
24 | synopsis: "Access C-like structures directly from OCaml"
25 | description: """
26 | Cstruct is a library and syntax extension to make it easier to access C-like
27 | structures directly from OCaml. It supports both reading and writing to these
28 | structures, and they are accessed via the `Bigarray` module."""
29 | url {
30 | src:
31 | "https://github.com/mirage/ocaml-cstruct/releases/download/v3.7.0/cstruct-v3.7.0.tbz"
32 | checksum: "md5=60a83c96f5871a3caae091fd116f4f24"
33 | }
34 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/dune.1.8.2/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/ocaml/dune"
5 | bug-reports: "https://github.com/ocaml/dune/issues"
6 | dev-repo: "git+https://github.com/ocaml/dune.git"
7 | license: "MIT"
8 | depends: [
9 | "ocaml" {>= "4.02"}
10 | "base-unix"
11 | "base-threads"
12 | ]
13 | build: [
14 | # opam 2 sets OPAM_SWITCH_PREFIX, so we don't need a hardcoded path
15 | ["ocaml" "configure.ml" "--libdir" lib] {opam-version < "2"}
16 | ["ocaml" "bootstrap.ml"]
17 | ["./boot.exe" "--release" "--subst"] {pinned}
18 | ["./boot.exe" "--release" "-j" jobs]
19 | ]
20 | conflicts: [
21 | "jbuilder" {!= "transition"}
22 | "odoc" {< "1.3.0"}
23 | ]
24 |
25 | synopsis: "Fast, portable and opinionated build system"
26 | description: """
27 | dune is a build system that was designed to simplify the release of
28 | Jane Street packages. It reads metadata from "dune" files following a
29 | very simple s-expression syntax.
30 |
31 | dune is fast, it has very low-overhead and support parallel builds on
32 | all platforms. It has no system dependencies, all you need to build
33 | dune and packages using dune is OCaml. You don't need or make or bash
34 | as long as the packages themselves don't use bash explicitly.
35 |
36 | dune supports multi-package development by simply dropping multiple
37 | repositories into the same directory.
38 |
39 | It also supports multi-context builds, such as building against
40 | several opam roots/switches simultaneously. This helps maintaining
41 | packages across several versions of OCaml and gives cross-compilation
42 | for free.
43 | """
44 | url {
45 | src: "https://github.com/ocaml/dune/releases/download/1.8.2/dune-1.8.2.tbz"
46 | checksum: "md5=2b7f45a6e14865f2318d34f12221ec1e"
47 | }
48 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/fieldslib.v0.11.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/janestreet/fieldslib"
5 | bug-reports: "https://github.com/janestreet/fieldslib/issues"
6 | dev-repo: "git+https://github.com/janestreet/fieldslib.git"
7 | license: "Apache-2.0"
8 | build: [
9 | ["jbuilder" "build" "-p" name "-j" jobs]
10 | ]
11 | conflicts: [ "jbuilder" { = "1.0+beta19" } ]
12 | depends: [
13 | "ocaml" {>= "4.04.1"}
14 | "base" {>= "v0.11" & < "v0.12"}
15 | "jbuilder" {build & >= "1.0+beta18.1"}
16 | "ocaml-migrate-parsetree" {>= "1.0"}
17 | "ppxlib" {>= "0.1.0"}
18 | ]
19 | synopsis:
20 | "Syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of a record and create new record values"
21 | description: """
22 | Part of Jane Street's Core library
23 | The Core suite of libraries is an industrial strength alternative to
24 | OCaml's standard library that was developed by Jane Street, the
25 | largest industrial user of OCaml."""
26 | url {
27 | src:
28 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/fieldslib-v0.11.0.tar.gz"
29 | checksum: "md5=a42506b460a1dc47fb65a37d875211ae"
30 | }
31 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/fmt.0.8.5/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Daniel Bünzli "
3 | authors: [
4 | "Daniel Bünzli "
5 | "Gabriel Radanne"
6 | ]
7 | homepage: "http://erratique.ch/software/fmt"
8 | doc: "http://erratique.ch/software/fmt"
9 | dev-repo: "git+http://erratique.ch/repos/fmt.git"
10 | bug-reports: "https://github.com/dbuenzli/fmt/issues"
11 | tags: [ "string" "format" "pretty-print" "org:erratique" ]
12 | license: "ISC"
13 | depends: [
14 | "ocaml" {>= "4.01.0"}
15 | "ocamlfind" {build}
16 | "ocamlbuild" {build}
17 | "topkg" {build & >= "0.9.0"}
18 | "result"
19 | "uchar"
20 | ]
21 | depopts: [ "base-unix" "cmdliner" ]
22 | conflicts: [ "cmdliner" {< "0.9.8"} ]
23 | build: [[
24 | "ocaml" "pkg/pkg.ml" "build"
25 | "--dev-pkg" "%{pinned}%"
26 | "--with-base-unix" "%{base-unix:installed}%"
27 | "--with-cmdliner" "%{cmdliner:installed}%" ]]
28 | synopsis: "OCaml Format pretty-printer combinators"
29 | description: """
30 | Fmt exposes combinators to devise `Format` pretty-printing functions.
31 |
32 | Fmt depends only on the OCaml standard library. The optional `Fmt_tty`
33 | library that allows to setup formatters for terminal color output
34 | depends on the Unix library. The optional `Fmt_cli` library that
35 | provides command line support for Fmt depends on [`Cmdliner`][cmdliner].
36 |
37 | Fmt is distributed under the ISC license.
38 |
39 | [cmdliner]: http://erratique.ch/software/cmdliner"""
40 | url {
41 | src: "http://erratique.ch/software/fmt/releases/fmt-0.8.5.tbz"
42 | checksum: "md5=77b64aa6f20f09de28f2405d6195f12c"
43 | }
44 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/hex.1.3.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "thomas@gazagnaire.org"
3 | authors: ["Thomas Gazagnaire" "Trevor Summers Smith"]
4 | license: "ISC"
5 | homepage: "https://github.com/mirage/ocaml-hex"
6 | doc: "https://mirage.github.io/ocaml-hex/"
7 | bug-reports: "https://github.com/mirage/ocaml-hex/issues"
8 | depends: [
9 | "ocaml"
10 | "dune" {build & >= "1.0"}
11 | "cstruct" {>= "1.7.0"}
12 | ]
13 | build: [
14 | ["dune" "subst"] {pinned}
15 | ["dune" "build" "-p" name "-j" jobs]
16 | ["dune" "runtest" "-p" name "-j" jobs] {with-test}
17 | ]
18 | dev-repo: "git+https://github.com/mirage/ocaml-hex.git"
19 | synopsis: "Library providing hexadecimal converters"
20 | description: """
21 | ```ocaml
22 | #require "hex";;
23 | # Hex.of_string "Hello world!";;
24 | - : Hex.t = "48656c6c6f20776f726c6421"
25 | # Hex.to_string "dead-beef";;
26 | - : string = "ޭ��"
27 | # Hex.hexdump (Hex.of_string "Hello world!\n")
28 | 00000000: 4865 6c6c 6f20 776f 726c 6421 0a Hello world!.
29 | - : unit = ()
30 | ```
31 | """
32 | url {
33 | src:
34 | "https://github.com/mirage/ocaml-hex/releases/download/v1.3.0/hex-v1.3.0.tbz"
35 | checksum: "md5=c0baa72c9d7495cd3c6646f9a50b03c7"
36 | }
37 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ipaddr.2.9.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "anil@recoil.org"
3 | authors: ["David Sheets" "Anil Madhavapeddy" "Hugo Heuzard"]
4 | synopsis: "A library for manipulation of IP (and MAC) address representations"
5 | description: """
6 | Features:
7 | * Depends only on sexplib (conditionalization under consideration)
8 | * oUnit-based tests
9 | * IPv4 and IPv6 support
10 | * IPv4 and IPv6 CIDR prefix support
11 | * IPv4 and IPv6 [CIDR-scoped address](http://tools.ietf.org/html/rfc4291#section-2.3) support
12 | * `Ipaddr.V4` and `Ipaddr.V4.Prefix` modules are `Map.OrderedType`
13 | * `Ipaddr.V6` and `Ipaddr.V6.Prefix` modules are `Map.OrderedType`
14 | * `Ipaddr` and `Ipaddr.Prefix` modules are `Map.OrderedType`
15 | * `Ipaddr_unix` in findlib subpackage `ipaddr.unix` provides compatibility with the standard library `Unix` module
16 | * `Ipaddr_top` in findlib subpackage `ipaddr.top` provides top-level pretty printers (requires compiler-libs default since OCaml 4.0)
17 | * IP address scope classification
18 | * IPv4-mapped addresses in IPv6 (::ffff:0:0/96) are an embedding of IPv4
19 | * MAC-48 (Ethernet) address support
20 | * `Macaddr` is a `Map.OrderedType`
21 | * All types have sexplib serializers/deserializers
22 | """
23 |
24 | license: "ISC"
25 | tags: ["org:mirage" "org:xapi-project"]
26 | homepage: "https://github.com/mirage/ocaml-ipaddr"
27 | doc: "https://mirage.github.io/ocaml-ipaddr/"
28 | bug-reports: "https://github.com/mirage/ocaml-ipaddr/issues"
29 | depends: [
30 | "ocaml" {>= "4.03.0"}
31 | "dune" {build & >= "1.6.0"}
32 | "base-bytes"
33 | "ppx_sexp_conv" {>= "v0.9.0" & < "v0.12"}
34 | "sexplib" {< "v0.12"}
35 | "base-unix"
36 | "ounit" {with-test}
37 | ]
38 | build: [
39 | ["dune" "subst"] {pinned}
40 | ["dune" "build" "-p" name "-j" jobs]
41 | ["dune" "runtest" "-p" name "-j" jobs] {with-test}
42 | ]
43 | dev-repo: "git+https://github.com/mirage/ocaml-ipaddr.git"
44 | url {
45 | src:
46 | "https://github.com/mirage/ocaml-ipaddr/releases/download/2.9.0/ipaddr-2.9.0.tbz"
47 | checksum: "md5=7d4fa9d31d57d900f0042bd96cb76323"
48 | }
49 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/jbuilder.transition/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/ocaml/dune"
5 | bug-reports: "https://github.com/ocaml/dune/issues"
6 | dev-repo: "git+https://github.com/ocaml/dune.git"
7 | license: "MIT"
8 | depends: ["ocaml" "dune"]
9 | post-messages: [
10 | "Jbuilder has been renamed and the jbuilder package is now a transition \
11 | package. Use the dune package instead."
12 | ]
13 | synopsis:
14 | "This is a transition package, jbuilder is now named dune. Use the dune"
15 | description: "package instead."
16 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/jsonm.1.0.1/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Daniel Bünzli "
3 | authors: ["Daniel Bünzli "]
4 | homepage: "http://erratique.ch/software/jsonm"
5 | doc: "http://erratique.ch/software/jsonm/doc/Jsonm"
6 | dev-repo: "git+http://erratique.ch/repos/jsonm.git"
7 | bug-reports: "https://github.com/dbuenzli/jsonm/issues"
8 | tags: [ "json" "codec" "org:erratique" ]
9 | license: "ISC"
10 | depends: [
11 | "ocaml" {>= "4.01.0"}
12 | "ocamlfind" {build}
13 | "ocamlbuild" {build}
14 | "topkg" {build}
15 | "uchar"
16 | "uutf" {>= "1.0.0"}
17 | ]
18 | build:[[
19 | "ocaml" "pkg/pkg.ml" "build"
20 | "--pinned" "%{pinned}%" ]]
21 | synopsis: "Non-blocking streaming JSON codec for OCaml"
22 | description: """
23 | Jsonm is a non-blocking streaming codec to decode and encode the JSON
24 | data format. It can process JSON text without blocking on IO and
25 | without a complete in-memory representation of the data.
26 |
27 | The alternative "uncut" codec also processes whitespace and
28 | (non-standard) JSON with JavaScript comments.
29 |
30 | Jsonm is made of a single module and depends on [Uutf][uutf]. It is distributed
31 | under the ISC license.
32 |
33 | [uutf]: http://erratique.ch/software/uutf"""
34 | url {
35 | src: "http://erratique.ch/software/jsonm/releases/jsonm-1.0.1.tbz"
36 | checksum: "md5=e2ca39eaefd55b8d155c4f1ec5885311"
37 | }
38 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/logs.0.6.2/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Daniel Bünzli "
3 | authors: ["Daniel Bünzli "]
4 | homepage: "http://erratique.ch/software/logs"
5 | doc: "http://erratique.ch/software/logs/doc"
6 | dev-repo: "git+http://erratique.ch/repos/logs.git"
7 | bug-reports: "https://github.com/dbuenzli/logs/issues"
8 | tags: [ "log" "system" "org:erratique" ]
9 | license: "ISC"
10 | depends: [
11 | "ocaml" {>= "4.01.0"}
12 | "ocamlfind" {build}
13 | "ocamlbuild" {build}
14 | "topkg" {build}
15 | "result"
16 | "mtime" {with-test}
17 | ]
18 | depopts: [
19 | "js_of_ocaml"
20 | "fmt"
21 | "cmdliner"
22 | "lwt" ]
23 | conflicts: [ "cmdliner" {< "0.9.8"} ]
24 | build: [[
25 | "ocaml" "pkg/pkg.ml" "build"
26 | "--pinned" "%{pinned}%"
27 | "--with-js_of_ocaml" "%{js_of_ocaml:installed}%"
28 | "--with-fmt" "%{fmt:installed}%"
29 | "--with-cmdliner" "%{cmdliner:installed}%"
30 | "--with-lwt" "%{lwt:installed}%" ]]
31 | synopsis: "Logging infrastructure for OCaml"
32 | description: """
33 | Logs provides a logging infrastructure for OCaml. Logging is performed
34 | on sources whose reporting level can be set independently. Log message
35 | report is decoupled from logging and is handled by a reporter.
36 |
37 | A few optional log reporters are distributed with the base library and
38 | the API easily allows to implement your own.
39 |
40 | `Logs` depends only on the `result` compatibility package. The
41 | optional `Logs_fmt` reporter on OCaml formatters depends on [Fmt][fmt].
42 | The optional `Logs_browser` reporter that reports to the web browser
43 | console depends on [js_of_ocaml][jsoo]. The optional `Logs_cli` library
44 | that provides command line support for controlling Logs depends on
45 | [`Cmdliner`][cmdliner]. The optional `Logs_lwt` library that provides Lwt logging
46 | functions depends on [`Lwt`][lwt]
47 |
48 | Logs and its reporters are distributed under the ISC license.
49 |
50 | [fmt]: http://erratique.ch/software/fmt
51 | [jsoo]: http://ocsigen.org/js_of_ocaml/
52 | [cmdliner]: http://erratique.ch/software/cmdliner
53 | [lwt]: http://ocsigen.org/lwt/"""
54 | url {
55 | src: "http://erratique.ch/software/logs/releases/logs-0.6.2.tbz"
56 | checksum: "md5=19f824c02c83c6dddc3bfb6459e4743e"
57 | }
58 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/lwt.4.2.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 |
3 | synopsis: "Promises and event-driven I/O"
4 |
5 | license: "MIT"
6 | homepage: "https://github.com/ocsigen/lwt"
7 | doc: "https://ocsigen.org/lwt/manual/"
8 | bug-reports: "https://github.com/ocsigen/lwt/issues"
9 |
10 | authors: [
11 | "Jérôme Vouillon"
12 | "Jérémie Dimino"
13 | ]
14 | maintainer: [
15 | "Anton Bachin "
16 | "Mauricio Fernandez "
17 | "Simon Cruanes "
18 | ]
19 | dev-repo: "git+https://github.com/ocsigen/lwt.git"
20 |
21 | depends: [
22 | "cppo" {build & >= "1.1.0"}
23 | "dune" {build}
24 | "mmap"
25 | "ocaml" {>= "4.02.0"}
26 | "result" # result is needed as long as Lwt supports OCaml 4.02.
27 | "seq" # seq is needed as long as Lwt supports OCaml < 4.07.0.
28 |
29 | "bisect_ppx" {dev & >= "1.3.0"}
30 | "ocamlfind" {dev & >= "1.7.3-1"}
31 | ]
32 | depopts: [
33 | "base-threads"
34 | "base-unix"
35 | "conf-libev"
36 | ]
37 |
38 | conflicts: [
39 | "ocaml-variants" {= "4.02.1+BER"}
40 | ]
41 |
42 | build: [
43 | ["dune" "build" "-p" name "-j" jobs]
44 | ]
45 |
46 | description: "A promise is a value that may become determined in the future.
47 |
48 | Lwt provides typed, composable promises. Promises that are resolved by I/O are
49 | resolved by Lwt in parallel.
50 |
51 | Meanwhile, OCaml code, including code creating and waiting on promises, runs in
52 | a single thread by default. This reduces the need for locks or other
53 | synchronization primitives. Code can be run in parallel on an opt-in basis."
54 |
55 | url {
56 | src: "https://github.com/ocsigen/lwt/archive/4.2.0.tar.gz"
57 | checksum: "md5=2ce7827948adc611319f9449e4519070"
58 | }
59 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/magic-mime.1.1.1/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | name: "magic-mime"
3 | synopsis: "Map filenames to common MIME types"
4 | description: """
5 | This library contains a database of MIME types that maps filename extensions
6 | into MIME types suitable for use in many Internet protocols such as HTTP or
7 | e-mail. It is generated from the `mime.types` file found in Unix systems, but
8 | has no dependency on a filesystem since it includes the contents of the
9 | database as an ML datastructure.
10 |
11 | For example, here's how to lookup MIME types in the [utop] REPL:
12 |
13 | #require "magic-mime";;
14 | Magic_mime.lookup "/foo/bar.txt";;
15 | - : bytes = "text/plain"
16 | Magic_mime.lookup "bar.css";;
17 | - : bytes = "text/css"
18 | """
19 | maintainer: "Anil Madhavapeddy "
20 | authors: ["Anil Madhavapeddy" "Maxence Guesdon"]
21 | license: "ISC"
22 | homepage: "https://github.com/mirage/ocaml-magic-mime"
23 | doc: "https://mirage.github.io/ocaml-magic-mime/"
24 | bug-reports: "https://github.com/mirage/ocaml-magic-mime/issues"
25 | dev-repo: "git+https://github.com/mirage/ocaml-magic-mime.git"
26 | depends: [
27 | "ocaml" {>= "4.03.0"}
28 | "dune" {build}
29 | ]
30 | build: [
31 | ["dune" "subst"] {pinned}
32 | ["dune" "build" "-p" name "-j" jobs]
33 | ]
34 | url {
35 | src:
36 | "https://github.com/mirage/ocaml-magic-mime/releases/download/v1.1.1/magic-mime-v1.1.1.tbz"
37 | checksum: "md5=8430a2686206517f2753e47c9c038b5c"
38 | }
39 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/menhir.20181113/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "francois.pottier@inria.fr"
3 | authors: [
4 | "François Pottier "
5 | "Yann Régis-Gianas "
6 | ]
7 | homepage: "http://gitlab.inria.fr/fpottier/menhir"
8 | dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git"
9 | bug-reports: "menhir@inria.fr"
10 | build: [
11 | [make "-f" "Makefile" "PREFIX=%{prefix}%" "USE_OCAMLFIND=true" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"]
12 | ]
13 | install: [
14 | [make "-f" "Makefile" "install" "PREFIX=%{prefix}%" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"]
15 | ]
16 | remove: [
17 | [make "-f" "Makefile" "uninstall" "PREFIX=%{prefix}%" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"]
18 | ]
19 | depends: [
20 | "ocaml" {>= "4.02"}
21 | "ocamlfind" {build}
22 | "ocamlbuild" {build}
23 | ]
24 | synopsis: "An LR(1) parser generator"
25 | url {
26 | src:
27 | "https://gitlab.inria.fr/fpottier/menhir/repository/20181113/archive.tar.gz"
28 | checksum: [
29 | "md5=69ce441a06ea131cd43e7b44c4303f3c"
30 | "sha512=4ddefcd71d305bfb933a4056da57e36c13c99ec6dfcc4695814798fbbd78b4d65828381ebcb0e58c4c0394105ac763af3d475474e05e408f7080315bc3cf6176"
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/merlin-extend.0.3/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Frederic Bour "
3 | authors: "Frederic Bour "
4 | homepage: "https://github.com/let-def/merlin-extend"
5 | bug-reports: "https://github.com/let-def/merlin-extend"
6 | license: "MIT"
7 | dev-repo: "git+https://github.com/let-def/merlin-extend.git"
8 | build: [make]
9 | install: [make "install"]
10 | remove: ["ocamlfind" "remove" "merlin_extend"]
11 | depends: [
12 | "ocaml" {>= "4.02.3"}
13 | "ocamlfind" {build}
14 | "cppo" {build}
15 | ]
16 | synopsis: "A protocol to provide custom frontend to Merlin"
17 | description: """
18 | This protocol allows to replace the OCaml frontend of Merlin.
19 | It extends what used to be done with the `-pp' flag to handle a few more cases."""
20 | flags: light-uninstall
21 | url {
22 | src: "https://github.com/let-def/merlin-extend/archive/v0.3.tar.gz"
23 | checksum: "md5=9c6dfd4f53328f02f12fcc265f4e2dda"
24 | }
25 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/mmap.1.0.2/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "jeremie@dimino.org"
3 | authors: ["Jérémie Dimino "]
4 | homepage: "https://github.com/mirage/mmap"
5 | bug-reports: "https://github.com/mirage/mmap/issues"
6 | doc: "https://mirage.github.io/mmap/"
7 | dev-repo: "git+https://github.com/mirage/mmap.git"
8 | license: "LGPL 2.1 with linking exception"
9 | build: [
10 | ["dune" "build" "-p" name "-j" jobs]
11 | ]
12 | depends: [
13 | "ocaml" {>= "4.02.3"}
14 | "dune" {build & >= "1.6"}
15 | ]
16 | synopsis: "File mapping functionality"
17 | description: """
18 | This project provides a Mmap.map_file functions for mapping files in memory.
19 | """
20 | url {
21 | src:
22 | "https://github.com/mirage/mmap/releases/download/v1.0.2/mmap-v1.0.2.tbz"
23 | checksum: "md5=7880d4d74b37664f9bb0906ae1cadf6b"
24 | }
25 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/num.1.1/files/findlib-install.patch:
--------------------------------------------------------------------------------
1 | From 7688bb4fea24463c92e9c4870acc08495a4c77cb Mon Sep 17 00:00:00 2001
2 | From: David Allsopp
3 | Date: Wed, 10 Jan 2018 15:20:46 +0000
4 | Subject: [PATCH] Provide findlib-install target
5 |
6 | Allows installing the entire library using ocamlfind.
7 | ---
8 | Makefile | 10 +++++++++-
9 | src/META | 17 -----------------
10 | src/META.in | 19 +++++++++++++++++++
11 | src/Makefile | 17 +++++++++++++++--
12 | 4 files changed, 43 insertions(+), 20 deletions(-)
13 | delete mode 100644 src/META
14 | create mode 100644 src/META.in
15 |
16 | diff --git a/Makefile b/Makefile
17 | index 6a5d08f..b40e588 100644
18 | --- a/Makefile
19 | +++ b/Makefile
20 | @@ -14,8 +14,16 @@ install:
21 | $(MAKE) -C src install
22 | $(MAKE) -C toplevel install
23 |
24 | +findlib-install:
25 | + $(MAKE) -C src findlib-install
26 | + $(MAKE) -C toplevel install
27 | +
28 | uninstall:
29 | $(MAKE) -C src uninstall
30 | $(MAKE) -C toplevel uninstall
31 |
32 | -.PHONY: all test clean install uninstall
33 | +findlib-uninstall:
34 | + $(MAKE) -C src findlib-uninstall
35 | + $(MAKE) -C toplevel uninstall
36 | +
37 | +.PHONY: all test clean install uninstall findlib-install findlib-uninstall
38 | diff --git a/src/META b/src/META
39 | deleted file mode 100644
40 | index 66ac170..0000000
41 | --- a/src/META
42 | +++ /dev/null
43 | @@ -1,17 +0,0 @@
44 | -# This META is the one provided by findlib when the "num" library was
45 | -# part of the core OCaml distribution. For backward compatibility,
46 | -# it installs into OCaml's standard library directory, not in a subdirectory
47 | -
48 | -requires = "num.core"
49 | -requires(toploop) = "num.core,num-top"
50 | -version = "1.0"
51 | -description = "Arbitrary-precision rational arithmetic"
52 | -package "core" (
53 | - directory = "^"
54 | - version = "1.0"
55 | - browse_interfaces = ""
56 | - archive(byte) = "nums.cma"
57 | - archive(native) = "nums.cmxa"
58 | - plugin(byte) = "nums.cma"
59 | - plugin(native) = "nums.cmxs"
60 | -)
61 | diff --git a/src/META.in b/src/META.in
62 | new file mode 100644
63 | index 0000000..b5678b7
64 | --- /dev/null
65 | +++ b/src/META.in
66 | @@ -0,0 +1,19 @@
67 | +# This META is the one provided by findlib when the "num" library was
68 | +# part of the core OCaml distribution. For backward compatibility,
69 | +# it is installed into OCaml's standard library directory. If the
70 | +# directory line below is removed, then it's installed in a
71 | +# subdirectory, as normal for a findlib package.
72 | +
73 | +requires = "num.core"
74 | +requires(toploop) = "num.core,num-top"
75 | +version = "1.0"
76 | +description = "Arbitrary-precision rational arithmetic"
77 | +package "core" (
78 | + directory = "^"
79 | + version = "1.0"
80 | + browse_interfaces = ""
81 | + archive(byte) = "nums.cma"
82 | + archive(native) = "nums.cmxa"
83 | + plugin(byte) = "nums.cma"
84 | + plugin(native) = "nums.cmxs"
85 | +)
86 | diff --git a/src/Makefile b/src/Makefile
87 | index 97dc074..ff271fe 100644
88 | --- a/src/Makefile
89 | +++ b/src/Makefile
90 | @@ -80,21 +80,34 @@ endif
91 | ifeq "$(NATDYNLINK)" "true"
92 | TOINSTALL+=nums.cmxs
93 | endif
94 | +ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
95 | TOINSTALL_STUBS=dllnums.$(SO)
96 | +else
97 | +TOINSTALL_STUBS=
98 | +endif
99 |
100 | install:
101 | + cp META.in META
102 | $(OCAMLFIND) install num META
103 | + rm -f META
104 | $(INSTALL_DATA) $(TOINSTALL) $(STDLIBDIR)
105 | ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
106 | $(INSTALL_DLL) $(TOINSTALL_STUBS) $(STDLIBDIR)/stublibs
107 | endif
108 |
109 | -uninstall:
110 | +findlib-install:
111 | + grep -Fv '^' META.in > META
112 | + $(OCAMLFIND) install num META $(TOINSTALL) $(TOINSTALL_STUBS)
113 | + rm -f META
114 | +
115 | +findlib-uninstall:
116 | + $(OCAMLFIND) remove num
117 | +
118 | +uninstall: findlib-uninstall
119 | cd $(STDLIBDIR) && rm -f $(TOINSTALL)
120 | ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
121 | cd $(STDLIBDIR)/stublibs && rm -f $(TOINSTALL_STUBS)
122 | endif
123 | - $(OCAMLFIND) remove num
124 |
125 | clean:
126 | rm -f *.cm[ioxta] *.cmx[as] *.cmti *.$(O) *.$(A) *.$(SO)
127 | --
128 | 2.14.1
129 |
130 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/num.1.1/files/installation-warning.patch:
--------------------------------------------------------------------------------
1 | From db8d748b2cad0adc2698e9fcf28727083a711bae Mon Sep 17 00:00:00 2001
2 | From: David Allsopp
3 | Date: Wed, 24 Jan 2018 16:01:56 +0000
4 | Subject: [PATCH] Warn about installations broken by previous faulty package
5 |
6 | ---
7 | Makefile | 33 +++++++++++++++++++++++++++++++++
8 | 1 file changed, 33 insertions(+)
9 |
10 | diff --git a/Makefile b/Makefile
11 | index b40e588..d4dcd70 100644
12 | --- a/Makefile
13 | +++ b/Makefile
14 | @@ -14,9 +14,42 @@ install:
15 | $(MAKE) -C src install
16 | $(MAKE) -C toplevel install
17 |
18 | +OCAMLFIND_DIR:=$(dir $(shell command -v ocamlfind 2>/dev/null))
19 | +OCAMLC_DIR:=$(dir $(shell command -v ocamlc 2>/dev/null))
20 | +NUM_INSTALLED:=$(shell ocamlfind query num 2>/dev/null)
21 | +
22 | +ifeq ($(NUM_INSTALLED),)
23 | +# The num findlib package is not already present - wohoo!
24 | +OUR_FAULT=no
25 | +else
26 | +ifeq ($(OCAMLFIND_DIR),$(OCAMLC_DIR))
27 | +# The num findlib package is present, but ocamlc and ocamlfind are in the
28 | +# same place, which means that either we're looking at a system-installed
29 | +# ocamlfind (which isn't supported), or the user has done something else
30 | +# nefarious and doesn't deserve our sympathy (or, at least, our potentially
31 | +# unhelpful advice)
32 | +OUR_FAULT=no
33 | +else
34 | +# The num findlib package package is present, and ocamlc and ocamlfind reside
35 | +# in different directories, which means that we're almost certainly looking at
36 | +# a system switch which has been damaged by a previous num package installation
37 | +# on an OS which didn't protect the system lib directory.
38 | +OUR_FAULT=probably
39 | +endif
40 | +endif
41 | +
42 | findlib-install:
43 | +ifeq ($(OUR_FAULT),no)
44 | $(MAKE) -C src findlib-install
45 | $(MAKE) -C toplevel install
46 | +else
47 | + @echo "\033[0;31m[ERROR]\033[m It appears that the num library was previously installed to your system"
48 | + @echo " compiler's lib directory, probably by a faulty opam package."
49 | + @echo " You will need to remove arith_flags.*, arith_status.*, big_int.*,"
50 | + @echo " int_misc.*, nat.*, num.*, ratio.*, nums.*, libnums.* and"
51 | + @echo " stublibs/dllnums.* from $(shell ocamlc -where)."
52 | + @false
53 | +endif
54 |
55 | uninstall:
56 | $(MAKE) -C src uninstall
57 | --
58 | 2.14.1
59 |
60 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/num.1.1/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | name: "num"
3 | version: "1.1"
4 | maintainer: "Xavier Leroy "
5 | authors: [
6 | "Valérie Ménissier-Morain"
7 | "Pierre Weis"
8 | "Xavier Leroy"
9 | ]
10 | license: "LGPL 2.1 with OCaml linking exception"
11 |
12 | homepage: "https://github.com/ocaml/num/"
13 | bug-reports: "https://github.com/ocaml/num/issues"
14 | dev-repo: "git+https://github.com/ocaml/num.git"
15 | build: [
16 | [make]
17 | ]
18 | install: [
19 | make
20 | "install" {!ocaml:preinstalled}
21 | "findlib-install" {ocaml:preinstalled}
22 | ]
23 | remove: [
24 | make
25 | "uninstall" {!ocaml:preinstalled}
26 | "findlib-uninstall" {ocaml:preinstalled}
27 | ]
28 | depends: [
29 | "ocaml" {>= "4.06.0"}
30 | "ocamlfind" {build & >= "1.7.3"}
31 | ]
32 | conflicts: [ "base-num" ]
33 | patches: [ "findlib-install.patch" "installation-warning.patch" ]
34 | synopsis:
35 | "The legacy Num library for arbitrary-precision integer and rational arithmetic"
36 | extra-files: [
37 | ["installation-warning.patch" "md5=93c92bf6da6bae09d068da42b1bbaaac"]
38 | ["findlib-install.patch" "md5=3163a4c3f8dd084653eeb64d95311a2a"]
39 | ]
40 | url {
41 | src: "https://github.com/ocaml/num/archive/v1.1.tar.gz"
42 | checksum: "md5=710cbe18b144955687a03ebab439ff2b"
43 | }
44 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ocaml-compiler-libs.v0.11.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/janestreet/ocaml-compiler-libs"
5 | bug-reports: "https://github.com/janestreet/ocaml-compiler-libs/issues"
6 | dev-repo: "git+https://github.com/janestreet/ocaml-compiler-libs.git"
7 | license: "Apache-2.0"
8 | build: [
9 | ["jbuilder" "build" "-p" name "-j" jobs]
10 | ]
11 | depends: [
12 | "ocaml" {>= "4.04.1"}
13 | "jbuilder" {build & >= "1.0+beta12"}
14 | ]
15 | synopsis: "OCaml compiler libraries repackaged"
16 | description: """
17 | This packages exposes the OCaml compiler libraries repackages under
18 | the toplevel names Ocaml_common, Ocaml_bytecomp, ..."""
19 | url {
20 | src:
21 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/ocaml-compiler-libs-v0.11.0.tar.gz"
22 | checksum: "md5=e170c16186aa55b7e8b11e461418a10a"
23 | }
24 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ocaml-migrate-parsetree.1.2.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "frederic.bour@lakaban.net"
3 | authors: [
4 | "Frédéric Bour "
5 | "Jérémie Dimino "
6 | ]
7 | license: "LGPL-2.1"
8 | homepage: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree"
9 | bug-reports: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/issues"
10 | dev-repo: "git+https://github.com/ocaml-ppx/ocaml-migrate-parsetree.git"
11 | doc: "https://ocaml-ppx.github.io/ocaml-migrate-parsetree/"
12 | tags: [ "syntax" "org:ocamllabs" ]
13 | build: [
14 | ["dune" "build" "-p" name "-j" jobs]
15 | ]
16 | depends: [
17 | "result"
18 | "ppx_derivers"
19 | "dune" {build & >= "1.6.0"}
20 | "ocaml" {>= "4.02.3" & < "4.08.0"}
21 | ]
22 | synopsis: "Convert OCaml parsetrees between different versions"
23 | description: """
24 | Convert OCaml parsetrees between different versions
25 |
26 | This library converts parsetrees, outcometree and ast mappers between
27 | different OCaml versions. High-level functions help making PPX
28 | rewriters independent of a compiler version.
29 | """
30 | url {
31 | src:
32 | "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.2.0/ocaml-migrate-parsetree-v1.2.0.tbz"
33 | checksum: "md5=cc6fb09ad6f99156c7dba47711c62c6f"
34 | }
35 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ocamlbuild.0.14.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Gabriel Scherer "
3 | authors: ["Nicolas Pouillard" "Berke Durak"]
4 | homepage: "https://github.com/ocaml/ocamlbuild/"
5 | bug-reports: "https://github.com/ocaml/ocamlbuild/issues"
6 | license: "LGPL-2 with OCaml linking exception"
7 | doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc"
8 | dev-repo: "git+https://github.com/ocaml/ocamlbuild.git"
9 | build: [
10 | [
11 | make
12 | "-f"
13 | "configure.make"
14 | "all"
15 | "OCAMLBUILD_PREFIX=%{prefix}%"
16 | "OCAMLBUILD_BINDIR=%{bin}%"
17 | "OCAMLBUILD_LIBDIR=%{lib}%"
18 | "OCAMLBUILD_MANDIR=%{man}%"
19 | "OCAML_NATIVE=%{ocaml:native}%"
20 | "OCAML_NATIVE_TOOLS=%{ocaml:native}%"
21 | ]
22 | [make "check-if-preinstalled" "all" "opam-install"]
23 | ]
24 | conflicts: [
25 | "base-ocamlbuild"
26 | "ocamlfind" {< "1.6.2"}
27 | ]
28 | synopsis:
29 | "OCamlbuild is a build system with builtin rules to easily build most OCaml projects."
30 | depends: [
31 | "ocaml" {>= "4.03"}
32 | ]
33 | url {
34 | src: "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz"
35 | checksum: "sha256=87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78"
36 | }
37 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ocamlfind.1.8.0/files/no-awk-check.patch:
--------------------------------------------------------------------------------
1 | commit 40142bc941e6e308686e86be6fc2da92f346a22f
2 | Author: Kate
3 | Date: Tue Mar 19 16:29:06 2019 +0000
4 |
5 | Remove awk from the set of checked unix tools as it's not used anywhere
6 |
7 | diff --git a/configure b/configure
8 | index d9b587c..20e8dca 100755
9 | --- a/configure
10 | +++ b/configure
11 | @@ -184,7 +184,7 @@ echo "Configuring core..."
12 |
13 | # Some standard Unix tools must be available:
14 |
15 | -for tool in sed awk ocaml ocamlc uname rm make cat m4 dirname basename; do
16 | +for tool in sed ocaml ocamlc uname rm make cat m4 dirname basename; do
17 | if in_path $tool; then true; else
18 | echo "configure: $tool not in PATH; this is required" 1>&2
19 | exit 1
20 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ocamlfind.1.8.0/files/ocaml-stub:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BINDIR=$(dirname "$(command -v ocamlc)")
4 | "$BINDIR/ocaml" -I "$OCAML_TOPLEVEL_PATH" "$@"
5 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ocamlfind.1.8.0/files/ocamlfind.install:
--------------------------------------------------------------------------------
1 | bin: [
2 | "src/findlib/ocamlfind" {"ocamlfind"}
3 | "?src/findlib/ocamlfind_opt" {"ocamlfind"}
4 | "?tools/safe_camlp4"
5 | ]
6 | toplevel: ["src/findlib/topfind"]
7 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ocamlfind.1.8.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Thomas Gazagnaire "
3 | homepage: "http://projects.camlcity.org/projects/findlib.html"
4 | bug-reports: "https://gitlab.camlcity.org/gerd/lib-findlib/issues"
5 | dev-repo: "git+https://gitlab.camlcity.org/gerd/lib-findlib.git"
6 | patches: ["no-awk-check.patch"]
7 | build: [
8 | [
9 | "./configure"
10 | "-bindir"
11 | bin
12 | "-sitelib"
13 | lib
14 | "-mandir"
15 | man
16 | "-config"
17 | "%{lib}%/findlib.conf"
18 | "-no-custom"
19 | "-no-topfind" {ocaml:preinstalled}
20 | ]
21 | [make "all"]
22 | [make "opt"] {ocaml:native}
23 | ]
24 | install: [
25 | [make "install"]
26 | ["install" "-m" "0755" "ocaml-stub" "%{bin}%/ocaml"] {ocaml:preinstalled}
27 | ]
28 | remove: [
29 | ["ocamlfind" "remove" "bytes"]
30 | [
31 | "./configure"
32 | "-bindir"
33 | bin
34 | "-sitelib"
35 | lib
36 | "-mandir"
37 | man
38 | "-config"
39 | "%{lib}%/findlib.conf"
40 | "-no-topfind" {ocaml:preinstalled}
41 | ]
42 | [make "uninstall"]
43 | ["rm" "-f" "%{bin}%/ocaml"] {ocaml:preinstalled}
44 | ]
45 | depends: [
46 | "ocaml" {>= "4.00.0"}
47 | "conf-m4" {build}
48 | ]
49 | synopsis: "A library manager for OCaml"
50 | description: """
51 | Findlib is a library manager for OCaml. It provides a convention how
52 | to store libraries, and a file format ("META") to describe the
53 | properties of libraries. There is also a tool (ocamlfind) for
54 | interpreting the META files, so that it is very easy to use libraries
55 | in programs and scripts."""
56 | authors: "Gerd Stolpmann "
57 | extra-files: [
58 | ["ocamlfind.install" "md5=06f2c282ab52d93aa6adeeadd82a2543"]
59 | ["ocaml-stub" "md5=181f259c9e0bad9ef523e7d4abfdf87a"]
60 | ["no-awk-check.patch" "md5=0378123bf1a45fccdea434c053ddb687"]
61 | ]
62 | url {
63 | src: "http://download.camlcity.org/download/findlib-1.8.0.tar.gz"
64 | checksum: "md5=a710c559667672077a93d34eb6a42e5b"
65 | mirrors: "http://download2.camlcity.org/download/findlib-1.8.0.tar.gz"
66 | }
67 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/parsexp.v0.11.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/janestreet/parsexp"
5 | bug-reports: "https://github.com/janestreet/parsexp/issues"
6 | dev-repo: "git+https://github.com/janestreet/parsexp.git"
7 | license: "Apache-2.0"
8 | build: [
9 | ["jbuilder" "build" "-p" name "-j" jobs]
10 | ]
11 | depends: [
12 | "ocaml" {>= "4.04.1"}
13 | "sexplib0" {>= "v0.11" & < "v0.12"}
14 | "jbuilder" {build & >= "1.0+beta18.1"}
15 | ]
16 | synopsis: "S-expression parsing library"
17 | description: """
18 | This library provides generic parsers for parsing S-expressions from
19 | strings or other medium.
20 |
21 | The library is focused on performances but still provide full generic
22 | parsers that can be used with strings, bigstrings, lexing buffers,
23 | character streams or any other sources effortlessly.
24 |
25 | It provides three different class of parsers:
26 | - the normal parsers, producing [Sexp.t] or [Sexp.t list] values
27 | - the parsers with positions, building compact position sequences so
28 | that one can recover original positions in order to report properly
29 | located errors at little cost
30 | - the Concrete Syntax Tree parsers, produce values of type
31 | [Parsexp.Cst.t] which record the concrete layout of the s-expression
32 | syntax, including comments
33 |
34 | This library is portable and doesn't provide IO functions. To read
35 | s-expressions from files or other external sources, you should use
36 | parsexp_io."""
37 | url {
38 | src:
39 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/parsexp-v0.11.0.tar.gz"
40 | checksum: "md5=816fce8d14b71a379296577c803bdbca"
41 | }
42 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ppx_derivers.1.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "jeremie@dimino.org"
3 | authors: ["Jérémie Dimino"]
4 | license: "BSD3"
5 | homepage: "https://github.com/ocaml-ppx/ppx_derivers"
6 | bug-reports: "https://github.com/ocaml-ppx/ppx_derivers/issues"
7 | dev-repo: "git://github.com/ocaml-ppx/ppx_derivers.git"
8 | build: [
9 | ["jbuilder" "build" "-p" name "-j" jobs]
10 | ]
11 | depends: [
12 | "ocaml"
13 | "jbuilder" {build & >= "1.0+beta7"}
14 | ]
15 | synopsis: "Shared [@@deriving] plugin registry"
16 | description: """
17 | Ppx_derivers is a tiny package whose sole purpose is to allow
18 | ppx_deriving and ppx_type_conv to inter-operate gracefully when linked
19 | as part of the same ocaml-migrate-parsetree driver."""
20 | url {
21 | src: "https://github.com/ocaml-ppx/ppx_derivers/archive/1.0.tar.gz"
22 | checksum: "md5=4ddce8f43fdb9b0ef0ab6a7cbfebc3e3"
23 | }
24 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ppx_fields_conv.v0.11.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/janestreet/ppx_fields_conv"
5 | bug-reports: "https://github.com/janestreet/ppx_fields_conv/issues"
6 | dev-repo: "git+https://github.com/janestreet/ppx_fields_conv.git"
7 | license: "Apache-2.0"
8 | build: [
9 | ["jbuilder" "build" "-p" name "-j" jobs]
10 | ]
11 | depends: [
12 | "ocaml" {>= "4.04.1"}
13 | "base" {>= "v0.11" & < "v0.12"}
14 | "fieldslib" {>= "v0.11" & < "v0.12"}
15 | "jbuilder" {build & >= "1.0+beta18.1"}
16 | "ocaml-migrate-parsetree" {>= "1.0"}
17 | "ppxlib" {>= "0.1.0"}
18 | ]
19 | synopsis: "Generation of accessor and iteration functions for ocaml records"
20 | description: "Part of the Jane Street's PPX rewriters collection."
21 | url {
22 | src:
23 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/ppx_fields_conv-v0.11.0.tar.gz"
24 | checksum: "md5=72f207c23d65f7f3eaabcc92e33ccdab"
25 | }
26 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ppx_sexp_conv.v0.11.2/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/janestreet/ppx_sexp_conv"
5 | bug-reports: "https://github.com/janestreet/ppx_sexp_conv/issues"
6 | dev-repo: "git+https://github.com/janestreet/ppx_sexp_conv.git"
7 | license: "Apache-2.0"
8 | build: [
9 | ["jbuilder" "build" "-p" name "-j" jobs]
10 | ]
11 | conflicts: [ "jbuilder" { = "1.0+beta19" } ]
12 | depends: [
13 | "ocaml" {>= "4.04.1"}
14 | "base" {>= "v0.11" & < "v0.12"}
15 | "jbuilder" {build & >= "1.0+beta18.1"}
16 | "ocaml-migrate-parsetree" {>= "1.0"}
17 | "ppxlib" {>= "0.3.0"}
18 | ]
19 | synopsis:
20 | "Generation of S-expression conversion functions from type definitions"
21 | description: "Part of the Jane Street's PPX rewriters collection."
22 | url {
23 | src: "https://github.com/janestreet/ppx_sexp_conv/archive/v0.11.2.tar.gz"
24 | checksum: "md5=77d3b30b3d9c5810552bde2027656b8d"
25 | }
26 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ppx_tools_versioned.5.2.1/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "frederic.bour@lakaban.net"
3 | authors: [
4 | "Frédéric Bour "
5 | "Alain Frisch "
6 | ]
7 | license: "MIT"
8 | homepage: "https://github.com/let-def/ppx_tools_versioned"
9 | bug-reports: "https://github.com/let-def/ppx_tools_versioned/issues"
10 | dev-repo: "git://github.com/let-def/ppx_tools_versioned.git"
11 | tags: [ "syntax" ]
12 | build: [
13 | ["jbuilder" "subst" "-p" name] {pinned}
14 | ["jbuilder" "build" "-p" name "-j" jobs]
15 | ["jbuilder" "runtest" "-p" name "-j" jobs] {with-test}
16 | ]
17 | depends: [
18 | "ocaml" {>= "4.02.0"}
19 | "jbuilder" {build & >= "1.0+beta17"}
20 | "ocaml-migrate-parsetree" {>= "1.0.10"}
21 | ]
22 | synopsis: "A variant of ppx_tools based on ocaml-migrate-parsetree"
23 | url {
24 | src:
25 | "https://github.com/ocaml-ppx/ppx_tools_versioned/archive/5.2.1.tar.gz"
26 | checksum: "md5=1ae6ae43ec161fbbf12c2b4d3a7e26f5"
27 | }
28 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/ppxlib.0.5.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/ocaml-ppx/ppxlib"
5 | bug-reports: "https://github.com/ocaml-ppx/ppxlib/issues"
6 | dev-repo: "git+https://github.com/ocaml-ppx/ppxlib.git"
7 | doc: "https://ocaml-ppx.github.io/ppxlib/"
8 | license: "MIT"
9 | build: [
10 | ["dune" "subst"] {pinned}
11 | ["dune" "build" "-p" name "-j" jobs]
12 | ]
13 | run-test: [
14 | ["dune" "runtest" "-p" name "-j" jobs] { ocaml >= "4.06" }
15 | ]
16 | depends: [
17 | "ocaml" {>= "4.04.1"}
18 | "base" {>= "v0.11.0" & < "v0.13"}
19 | "dune" {build}
20 | "ocaml-compiler-libs" {>= "v0.11.0"}
21 | "ocaml-migrate-parsetree" {>= "1.0.9"}
22 | "ppx_derivers" {>= "1.0"}
23 | "stdio" {>= "v0.11.0" & < "v0.13"}
24 | "ocamlfind" {with-test}
25 | ]
26 | synopsis: "Base library and tools for ppx rewriters"
27 | description: """
28 | A comprehensive toolbox for ppx development. It features:
29 | - a OCaml AST / parser / pretty-printer snapshot,to create a full
30 | frontend independent of the version of OCaml;
31 | - a library for library for ppx rewriters in general, and type-driven
32 | code generators in particular;
33 | - a feature-full driver for OCaml AST transformers;
34 | - a quotation mechanism allowing to write values representing the
35 | OCaml AST in the OCaml syntax;
36 | - a generator of open recursion classes from type definitions.
37 | """
38 | url {
39 | src:
40 | "https://github.com/ocaml-ppx/ppxlib/releases/download/0.5.0/ppxlib-0.5.0.tbz"
41 | checksum: "md5=bb278ff6e819e0e4a4d8a005bb2512a4"
42 | }
43 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/re.1.8.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "rudi.grinberg@gmail.com"
3 | authors: [
4 | "Jerome Vouillon"
5 | "Thomas Gazagnaire"
6 | "Anil Madhavapeddy"
7 | "Rudi Grinberg"
8 | "Gabriel Radanne"
9 | ]
10 | license: "LGPL-2.0 with OCaml linking exception"
11 | homepage: "https://github.com/ocaml/ocaml-re"
12 | bug-reports: "https://github.com/ocaml/ocaml-re/issues"
13 | dev-repo: "git+https://github.com/ocaml/ocaml-re.git"
14 | build: [
15 | ["jbuilder" "subst" "-n" name] {pinned}
16 | ["jbuilder" "build" "-p" name "-j" jobs]
17 | ["jbuilder" "runtest" "-p" name "-j" jobs] {with-test}
18 | ]
19 | depends: [
20 | "ocaml" {>= "4.02.3"}
21 | "jbuilder" {build & >= "1.0+beta10"}
22 | "ounit" {with-test}
23 | "seq"
24 | ]
25 | synopsis: "RE is a regular expression library for OCaml"
26 | description: """
27 | Pure OCaml regular expressions with:
28 | * Perl-style regular expressions (module Re.Perl)
29 | * Posix extended regular expressions (module Re.Posix)
30 | * Emacs-style regular expressions (module Re.Emacs)
31 | * Shell-style file globbing (module Re.Glob)
32 | * Compatibility layer for OCaml's built-in Str module (module Re.Str)"""
33 | url {
34 | src:
35 | "https://github.com/ocaml/ocaml-re/releases/download/1.8.0/re-1.8.0.tbz"
36 | checksum: "md5=765f6f8d3e6ab200866e719ed7e5178d"
37 | }
38 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/result.1.3/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/janestreet/result"
5 | dev-repo: "git+https://github.com/janestreet/result.git"
6 | bug-reports: "https://github.com/janestreet/result/issues"
7 | license: "BSD3"
8 | build: [["jbuilder" "build" "-p" name "-j" jobs]]
9 | depends: [
10 | "ocaml"
11 | "jbuilder" {build & >= "1.0+beta11"}
12 | ]
13 | synopsis: "Compatibility Result module"
14 | description: """
15 | Projects that want to use the new result type defined in OCaml >= 4.03
16 | while staying compatible with older version of OCaml should use the
17 | Result module defined in this library."""
18 | url {
19 | src:
20 | "https://github.com/janestreet/result/releases/download/1.3/result-1.3.tbz"
21 | checksum: "md5=4beebefd41f7f899b6eeba7414e7ae01"
22 | }
23 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/seq.0.1/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "simon.cruanes.2007@m4x.org"
3 | authors: "Simon Cruanes"
4 | homepage: "https://github.com/c-cube/seq/"
5 | bug-reports: "https://github.com/c-cube/seq/issues"
6 | license: "GPL"
7 | tags: ["iterator" "seq" "pure" "list" "compatibility" "cascade"]
8 | dev-repo: "git+https://github.com/c-cube/seq.git"
9 | build: [make "build"]
10 | install: [make "install"]
11 | remove: [ "ocamlfind" "remove" "seq" ]
12 | depends: [
13 | "ocaml" {< "4.07.0"}
14 | "ocamlfind" {build}
15 | "ocamlbuild" {build}
16 | ]
17 | synopsis:
18 | "Compatibility package for OCaml's standard iterator type starting from 4.07."
19 | flags: light-uninstall
20 | url {
21 | src: "https://github.com/c-cube/seq/archive/0.1.tar.gz"
22 | checksum: "md5=0e87f9709541ed46ecb6f414bc31458c"
23 | }
24 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/sexplib.v0.11.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/janestreet/sexplib"
5 | bug-reports: "https://github.com/janestreet/sexplib/issues"
6 | dev-repo: "git+https://github.com/janestreet/sexplib.git"
7 | license: "Apache-2.0"
8 | build: [
9 | ["jbuilder" "build" "-p" name "-j" jobs]
10 | ]
11 | depends: [
12 | "ocaml" {>= "4.04.1"}
13 | "parsexp" {>= "v0.11" & < "v0.12"}
14 | "sexplib0" {>= "v0.11" & < "v0.12"}
15 | "jbuilder" {build & >= "1.0+beta18.1"}
16 | "num"
17 | ]
18 | synopsis: "Library for serializing OCaml values to and from S-expressions"
19 | description: """
20 | Part of Jane Street's Core library
21 | The Core suite of libraries is an industrial strength alternative to
22 | OCaml's standard library that was developed by Jane Street, the
23 | largest industrial user of OCaml."""
24 | url {
25 | src:
26 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/sexplib-v0.11.0.tar.gz"
27 | checksum: "md5=1d53d945914b6b9a380dc8923f19e9ae"
28 | }
29 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/sexplib0.v0.11.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/janestreet/sexplib0"
5 | bug-reports: "https://github.com/janestreet/sexplib0/issues"
6 | dev-repo: "git+https://github.com/janestreet/sexplib0.git"
7 | license: "Apache-2.0"
8 | build: [
9 | ["jbuilder" "build" "-p" name "-j" jobs]
10 | ]
11 | depends: [
12 | "ocaml" {>= "4.04.1"}
13 | "jbuilder" {build & >= "1.0+beta18.1"}
14 | ]
15 | conflicts: [
16 | "sexplib" { < "v0.11"}
17 | ]
18 | synopsis:
19 | "Library containing the definition of S-expressions and some base converters"
20 | description: """
21 | Part of Jane Street's Core library
22 | The Core suite of libraries is an industrial strength alternative to
23 | OCaml's standard library that was developed by Jane Street, the
24 | largest industrial user of OCaml."""
25 | url {
26 | src:
27 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/sexplib0-v0.11.0.tar.gz"
28 | checksum: "md5=1c14ba30b471e49f1b23fea5ff99ea6b"
29 | }
30 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/stdio.v0.11.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/janestreet/stdio"
5 | bug-reports: "https://github.com/janestreet/stdio/issues"
6 | dev-repo: "git+https://github.com/janestreet/stdio.git"
7 | license: "Apache-2.0"
8 | build: [
9 | ["jbuilder" "build" "-p" name "-j" jobs]
10 | ]
11 | depends: [
12 | "ocaml" {>= "4.04.1"}
13 | "base" {>= "v0.11" & < "v0.12"}
14 | "jbuilder" {build & >= "1.0+beta18.1"}
15 | ]
16 | synopsis: "Standard IO library for OCaml"
17 | description: """
18 | Stdio implements simple input/output functionalities for OCaml.
19 |
20 | It re-exports the input/output functions of the OCaml standard
21 | libraries using a more consistent API."""
22 | url {
23 | src:
24 | "https://ocaml.janestreet.com/ocaml-core/v0.11/files/stdio-v0.11.0.tar.gz"
25 | checksum: "md5=2db42ee38c91b3ff7126c2634c407b99"
26 | }
27 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/stringext.1.5.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "rudi.grinberg@gmail.com"
3 | authors: "Rudi Grinberg"
4 | homepage: "https://github.com/rgrinberg/stringext"
5 | bug-reports: "https://github.com/rgrinberg/stringext/issues"
6 | license: "MIT"
7 | dev-repo: "git+https://github.com/rgrinberg/stringext.git"
8 | build: [
9 | ["jbuilder" "subst" "-p" name] {pinned}
10 | ["jbuilder" "build" "-p" name "-j" jobs]
11 | ["jbuilder" "runtest" "-p" name "-j" jobs] {with-test}
12 | ]
13 | depends: [
14 | "ocaml" {>= "4.02.3"}
15 | "jbuilder" {build & >= "1.0+beta10"}
16 | "ounit" {with-test}
17 | "qtest" {with-test & >= "2.2"}
18 | "base-bytes"
19 | ]
20 | synopsis: "Extra string functions for OCaml"
21 | description: """
22 | Extra string functions for OCaml. Mainly splitting. All functions are in the
23 | `Stringext` module."""
24 | url {
25 | src: "https://github.com/rgrinberg/stringext/archive/1.5.0.zip"
26 | checksum: "md5=867263ea97532f150516677fa994cdf2"
27 | }
28 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/topkg.1.0.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Daniel Bünzli "
3 | authors: ["Daniel Bünzli "]
4 | homepage: "http://erratique.ch/software/topkg"
5 | doc: "http://erratique.ch/software/topkg/doc"
6 | license: "ISC"
7 | dev-repo: "git+http://erratique.ch/repos/topkg.git"
8 | bug-reports: "https://github.com/dbuenzli/topkg/issues"
9 | tags: ["packaging" "ocamlbuild" "org:erratique"]
10 | depends: [
11 | "ocaml" {>= "4.01.0"}
12 | "ocamlfind" {build & >= "1.6.1"}
13 | "ocamlbuild"
14 | "result" ]
15 | build: [[
16 | "ocaml" "pkg/pkg.ml" "build"
17 | "--pkg-name" name
18 | "--dev-pkg" "%{pinned}%" ]]
19 | synopsis: """The transitory OCaml software packager"""
20 | description: """\
21 |
22 | Topkg is a packager for distributing OCaml software. It provides an
23 | API to describe the files a package installs in a given build
24 | configuration and to specify information about the package's
25 | distribution, creation and publication procedures.
26 |
27 | The optional topkg-care package provides the `topkg` command line tool
28 | which helps with various aspects of a package's life cycle: creating
29 | and linting a distribution, releasing it on the WWW, publish its
30 | documentation, add it to the OCaml opam repository, etc.
31 |
32 | Topkg is distributed under the ISC license and has **no**
33 | dependencies. This is what your packages will need as a *build*
34 | dependency.
35 |
36 | Topkg-care is distributed under the ISC license it depends on
37 | [fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner],
38 | [webbrowser][webbrowser] and `opam-format`.
39 |
40 | [fmt]: http://erratique.ch/software/fmt
41 | [logs]: http://erratique.ch/software/logs
42 | [bos]: http://erratique.ch/software/bos
43 | [cmdliner]: http://erratique.ch/software/cmdliner
44 | [webbrowser]: http://erratique.ch/software/webbrowser
45 | """
46 | url {
47 | src: "http://erratique.ch/software/topkg/releases/topkg-1.0.0.tbz"
48 | checksum: "md5=e3d76bda06bf68cb5853caf6627da603"
49 | }
50 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/uchar.0.0.2/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Daniel Bünzli "
3 | authors: ["Daniel Bünzli "]
4 | homepage: "http://ocaml.org"
5 | doc: "https://ocaml.github.io/uchar/"
6 | dev-repo: "git+https://github.com/ocaml/uchar.git"
7 | bug-reports: "https://github.com/ocaml/uchar/issues"
8 | tags: [ "text" "character" "unicode" "compatibility" "org:ocaml.org" ]
9 | license: "typeof OCaml system"
10 | depends: [
11 | "ocaml" {>= "3.12.0"}
12 | "ocamlbuild" {build}
13 | ]
14 | build: [
15 | ["ocaml" "pkg/git.ml"]
16 | [
17 | "ocaml"
18 | "pkg/build.ml"
19 | "native=%{ocaml:native}%"
20 | "native-dynlink=%{ocaml:native-dynlink}%"
21 | ]
22 | ]
23 | synopsis: "Compatibility library for OCaml's Uchar module"
24 | description: """
25 | The `uchar` package provides a compatibility library for the
26 | [`Uchar`][1] module introduced in OCaml 4.03.
27 |
28 | The `uchar` package is distributed under the license of the OCaml
29 | compiler. See [LICENSE](LICENSE) for details.
30 |
31 | [1]: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Uchar.html"""
32 | url {
33 | src:
34 | "https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz"
35 | checksum: "md5=c9ba2c738d264c420c642f7bb1cf4a36"
36 | }
37 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/uri.2.2.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "anil@recoil.org"
3 | authors: ["Anil Madhavapeddy" "David Sheets" "Rudi Grinberg"]
4 | license: "ISC"
5 | tags: ["url" "uri" "org:mirage" "org:xapi-project"]
6 | homepage: "https://github.com/mirage/ocaml-uri"
7 | bug-reports: "https://github.com/mirage/ocaml-uri/issues"
8 | dev-repo: "git+https://github.com/mirage/ocaml-uri.git"
9 | doc: "https://mirage.github.io/ocaml-uri/"
10 | synopsis: "An RFC3986 URI/URL parsing library"
11 | description: """
12 | This is an OCaml implementation of the [RFC3986](http://tools.ietf.org/html/rfc3986) specification
13 | for parsing URI or URLs.
14 | """
15 | depends: [
16 | "ocaml" {>= "4.04.0"}
17 | "dune" {build & >= "1.2.0"}
18 | "ounit" {with-test & >= "1.0.2"}
19 | "ppx_sexp_conv" {build & >= "v0.9.0" & < "v0.13"}
20 | "re" {>= "1.7.2"}
21 | "sexplib0" {< "v0.13"}
22 | "stringext" {>= "1.4.0"}
23 | ]
24 | build: [
25 | ["dune" "subst"] {pinned}
26 | ["dune" "build" "-p" name "-j" jobs]
27 | ["dune" "runtest" "-p" name "-j" jobs] {with-test}
28 | ]
29 | url {
30 | src:
31 | "https://github.com/mirage/ocaml-uri/releases/download/v2.2.0/uri-v2.2.0.tbz"
32 | checksum: "md5=e52e17fc6cc3491ab44994e6ebc5664c"
33 | }
34 |
--------------------------------------------------------------------------------
/server/esy.lock/opam/uutf.1.0.2/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Daniel Bünzli "
3 | authors: ["Daniel Bünzli "]
4 | homepage: "http://erratique.ch/software/uutf"
5 | doc: "http://erratique.ch/software/uutf/doc/Uutf"
6 | dev-repo: "git+http://erratique.ch/repos/uutf.git"
7 | bug-reports: "https://github.com/dbuenzli/uutf/issues"
8 | tags: [ "unicode" "text" "utf-8" "utf-16" "codec" "org:erratique" ]
9 | license: "ISC"
10 | depends: [
11 | "ocaml" {>= "4.01.0"}
12 | "ocamlfind" {build}
13 | "ocamlbuild" {build}
14 | "topkg" {build}
15 | "uchar"
16 | ]
17 | depopts: ["cmdliner"]
18 | conflicts: ["cmdliner" { < "0.9.6"} ]
19 | build: [[
20 | "ocaml" "pkg/pkg.ml" "build"
21 | "--pinned" "%{pinned}%"
22 | "--with-cmdliner" "%{cmdliner:installed}%" ]]
23 | synopsis: """Non-blocking streaming Unicode codec for OCaml"""
24 | description: """\
25 |
26 | Uutf is a non-blocking streaming codec to decode and encode the UTF-8,
27 | UTF-16, UTF-16LE and UTF-16BE encoding schemes. It can efficiently
28 | work character by character without blocking on IO. Decoders perform
29 | character position tracking and support newline normalization.
30 |
31 | Functions are also provided to fold over the characters of UTF encoded
32 | OCaml string values and to directly encode characters in OCaml
33 | Buffer.t values.
34 |
35 | Uutf has no dependency and is distributed under the ISC license.
36 | """
37 | url {
38 | archive: "http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz"
39 | checksum: "a7c542405a39630c689a82bd7ef2292c"
40 | }
41 |
--------------------------------------------------------------------------------
/server/esy.lock/overrides/opam__s__base_opam__c__v0.11.1_opam_override/files/base-v0.11.1.patch:
--------------------------------------------------------------------------------
1 | --- ./src/exn_stubs.c
2 | +++ ./src/exn_stubs.c
3 | @@ -1,8 +1,13 @@
4 | #include
5 |
6 | extern int caml_backtrace_pos;
7 | +#ifndef _MSC_VER
8 | +#define UNUSED __attribute__((unused))
9 | +#else
10 | +#define UNUSED
11 | +#endif
12 |
13 | -CAMLprim value Base_clear_caml_backtrace_pos (value __attribute__((unused)) unit) {
14 | +CAMLprim value Base_clear_caml_backtrace_pos (value UNUSED unit) {
15 | caml_backtrace_pos = 0;
16 | return Val_unit;
17 | }
18 | --- ./src/int_math_stubs.c
19 | +++ ./src/int_math_stubs.c
20 | @@ -5,6 +5,25 @@
21 | #include
22 | #include
23 |
24 | +#if defined(_MSC_VER)
25 | +#include
26 | +#ifdef ARCH_SIXTYFOUR
27 | +#define __builtin_popcountll(x) __popcnt64((uint64_t)(x))
28 | +static __inline uint32_t __builtin_clzll(uint64_t value) {
29 | + uint32_t leading_zero = 0;
30 | + _BitScanReverse64(&leading_zero, value);
31 | + return (63 - leading_zero);
32 | +}
33 | +#else
34 | +#define __builtin_popcount(x) __popcnt((unsigned int)(x))
35 | +static __inline uint32_t __builtin_clz(uint32_t value) {
36 | + uint32_t leading_zero = 0;
37 | + _BitScanReverse(&leading_zero, value);
38 | + return (31 - leading_zero);
39 | +}
40 | +#endif /* ARCH_SIXTYFOUR */
41 | +#endif /* defined(_MSC_VER) */
42 | +
43 | static int64_t int_pow(int64_t base, int64_t exponent) {
44 | int64_t ret = 1;
45 | int64_t mul[4];
46 | --- ./src/jbuild
47 | +++ ./src/jbuild
48 | @@ -65,7 +65,7 @@
49 | (progn
50 | (with-stdout-to popcnt_test.c
51 | (echo "int main(int argc, char ** argv) { return __builtin_popcount(argc); }"))
52 | - (system "${CC} -mpopcnt -c popcnt_test.c 2> ${null} && \
53 | + (bash "${CC} -mpopcnt -c popcnt_test.c 2> ${null} && \
54 | echo '(-mpopcnt)' > ${@} || echo '()' > ${@}"))))))
55 |
56 | (ocamllex (hex_lexer))
57 |
--------------------------------------------------------------------------------
/server/esy.lock/overrides/opam__s__base_opam__c__v0.11.1_opam_override/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": [
3 | [
4 | "bash",
5 | "-c",
6 | "#{os == 'windows' ? 'patch -p1 < base-v0.11.1.patch' : 'true'}"
7 | ],
8 | [
9 | "jbuilder",
10 | "build",
11 | "-p",
12 | "base",
13 | "-j",
14 | "4"
15 | ]
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/server/esy.lock/overrides/opam__s__dune_opam__c__1.8.2_opam_override/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": [
3 | [
4 | "ocaml",
5 | "bootstrap.ml"
6 | ],
7 | [
8 | "./boot.exe",
9 | "--release",
10 | "-j",
11 | "4"
12 | ]
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/server/esy.lock/overrides/opam__s__merlin_extend_opam__c__0.3_opam_override/files/merlin-extend-winfix.patch:
--------------------------------------------------------------------------------
1 | --- ./extend_helper.ml
2 | +++ ./extend_helper.ml
3 | @@ -1,13 +1,6 @@
4 | -(*pp cppo -V OCAML:`ocamlc -version` *)
5 | open Parsetree
6 | open Extend_protocol
7 |
8 | -#if OCAML_VERSION < (4, 3, 0)
9 | -# define CONST_STRING Asttypes.Const_string
10 | -#else
11 | -# define CONST_STRING Parsetree.Pconst_string
12 | -#endif
13 | -
14 | (** Default implementation for [Reader_def.print_outcome] using
15 | [Oprint] from compiler-libs *)
16 | let print_outcome_using_oprint ppf = function
17 | @@ -28,7 +21,7 @@
18 | pstr_loc = Location.none;
19 | pstr_desc = Pstr_eval ({
20 | pexp_loc = Location.none;
21 | - pexp_desc = Pexp_constant (CONST_STRING (msg, None));
22 | + pexp_desc = Pexp_constant (Parsetree.Pconst_string (msg, None));
23 | pexp_attributes = [];
24 | }, []);
25 | }]
26 | @@ -112,7 +105,7 @@
27 | let msg = match payload with
28 | | PStr [{
29 | pstr_desc = Pstr_eval ({
30 | - pexp_desc = Pexp_constant (CONST_STRING (msg, _));
31 | + pexp_desc = Pexp_constant (Parsetree.Pconst_string (msg, _));
32 | }, _);
33 | }] -> msg
34 | | _ -> "Warning: extension produced an incorrect syntax-error node"
35 |
--------------------------------------------------------------------------------
/server/esy.lock/overrides/opam__s__merlin_extend_opam__c__0.3_opam_override/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": [
3 | [
4 | "bash",
5 | "-c",
6 | "#{os == 'windows' ? 'patch -p1 < merlin-extend-winfix.patch' : 'true'}"
7 | ],
8 | [
9 | "make"
10 | ]
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/server/esy.lock/overrides/opam__s__num_opam__c__1.1_opam_override/files/num-1.1.patch:
--------------------------------------------------------------------------------
1 | --- ./src/Makefile
2 | +++ ./src/Makefile
3 | @@ -80,7 +80,7 @@
4 | ifeq "$(NATDYNLINK)" "true"
5 | TOINSTALL+=nums.cmxs
6 | endif
7 | ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
8 | -TOINSTALL_STUBS=dllnums.$(SO)
9 | +TOINSTALL_STUBS=dllnums$(EXT_DLL)
10 | else
11 | TOINSTALL_STUBS=
12 | @@ -112,7 +112,7 @@
13 | endif
14 |
15 | clean:
16 | - rm -f *.cm[ioxta] *.cmx[as] *.cmti *.$(O) *.$(A) *.$(SO)
17 | + rm -f *.cm[ioxta] *.cmx[as] *.cmti *.$(O) *.$(A) *$(EXE_DLL)
18 |
19 | depend:
20 | $(OCAMLDEP) -slash *.mli *.ml > .depend
21 |
--------------------------------------------------------------------------------
/server/esy.lock/overrides/opam__s__num_opam__c__1.1_opam_override/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": [
3 | [
4 | "bash",
5 | "-c",
6 | "#{os == 'windows' ? 'patch -p1 < num-1.1.patch' : 'true'}"
7 | ],
8 | [
9 | "make"
10 | ]
11 | ],
12 | "install": [
13 | [
14 | "make",
15 | "findlib-install"
16 | ]
17 | ],
18 | "exportedEnv": {
19 | "CAML_LD_LIBRARY_PATH": {
20 | "val": "#{self.install / 'lib' / 'num' : $CAML_LD_LIBRARY_PATH}",
21 | "scope": "global"
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/server/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": [
3 | [
4 | "bash",
5 | "-c",
6 | "#{os == 'windows' ? 'patch -p1 < ocamlbuild-0.14.0.patch' : 'true'}"
7 | ],
8 | [
9 | "make",
10 | "-f",
11 | "configure.make",
12 | "all",
13 | "OCAMLBUILD_PREFIX=#{self.install}",
14 | "OCAMLBUILD_BINDIR=#{self.bin}",
15 | "OCAMLBUILD_LIBDIR=#{self.lib}",
16 | "OCAMLBUILD_MANDIR=#{self.man}",
17 | "OCAMLBUILD_NATIVE=true",
18 | "OCAMLBUILD_NATIVE_TOOLS=true"
19 | ],
20 | [
21 | "make",
22 | "check-if-preinstalled",
23 | "all",
24 | "#{os == 'windows' ? 'install' : 'opam-install'}"
25 | ]
26 | ]
27 | }
28 |
--------------------------------------------------------------------------------
/server/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": [
3 | [
4 | "bash",
5 | "-c",
6 | "#{os == 'windows' ? 'patch -p1 < findlib-1.8.0.patch' : 'true'}"
7 | ],
8 | [
9 | "./configure",
10 | "-bindir",
11 | "#{self.bin}",
12 | "-sitelib",
13 | "#{self.lib}",
14 | "-mandir",
15 | "#{self.man}",
16 | "-config",
17 | "#{self.lib}/findlib.conf",
18 | "-no-custom",
19 | "-no-topfind"
20 | ],
21 | [
22 | "make",
23 | "all"
24 | ],
25 | [
26 | "make",
27 | "opt"
28 | ]
29 | ],
30 | "install": [
31 | [
32 | "make",
33 | "install"
34 | ],
35 | [
36 | "install",
37 | "-m",
38 | "0755",
39 | "ocaml-stub",
40 | "#{self.bin}/ocaml"
41 | ],
42 | [
43 | "mkdir",
44 | "-p",
45 | "#{self.toplevel}"
46 | ],
47 | [
48 | "install",
49 | "-m",
50 | "0644",
51 | "src/findlib/topfind",
52 | "#{self.toplevel}/topfind"
53 | ]
54 | ],
55 | "exportedEnv": {
56 | "OCAML_TOPLEVEL_PATH": {
57 | "val": "#{self.toplevel}",
58 | "scope": "global"
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/server/isomagic-todos.install:
--------------------------------------------------------------------------------
1 | lib: [
2 | "/Users/jared/clone/apps/isomagic-todos/server/_esy/default/store/b/isomagic_todos-22f31068/install/default/lib/isomagic-todos/META" {"META"}
3 | "/Users/jared/clone/apps/isomagic-todos/server/_esy/default/store/b/isomagic_todos-22f31068/install/default/lib/isomagic-todos/dune-package" {"dune-package"}
4 | "/Users/jared/clone/apps/isomagic-todos/server/_esy/default/store/b/isomagic_todos-22f31068/install/default/lib/isomagic-todos/opam" {"opam"}
5 | ]
6 | bin: [
7 | "/Users/jared/clone/apps/isomagic-todos/server/_esy/default/store/b/isomagic_todos-22f31068/install/default/bin/server" {"server"}
8 | ]
9 |
--------------------------------------------------------------------------------
/server/isomagic-todos.opam:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jaredly/isomagic-todos/1ad477a9cefeea57e63b64b1f60f898baf76dac8/server/isomagic-todos.opam
--------------------------------------------------------------------------------
/server/server/.merlin:
--------------------------------------------------------------------------------
1 | EXCLUDE_QUERY_DIR
2 | B /Users/jared/.esy/3___________________________________________________________________/i/belt-8ec1f6ae/lib/belt
3 | B /Users/jared/.esy/3___________________________________________________________________/i/ezjsonm-c252ee44/lib/ezjsonm
4 | B /Users/jared/.esy/3___________________________________________________________________/i/ocaml-4.6.10-1dc037cc/lib/ocaml
5 | B /Users/jared/.esy/3___________________________________________________________________/i/ocaml-4.6.10-1dc037cc/lib/ocaml/threads
6 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__astring-opam__c__0.8.3-a2e7f011/lib/astring
7 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__base-opam__c__v0.11.1-902ad087/lib/base
8 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__base-opam__c__v0.11.1-902ad087/lib/base/caml
9 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__base-opam__c__v0.11.1-902ad087/lib/base/shadow_stdlib
10 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__base64-opam__c__2.3.0-bf76300f/lib/base64
11 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__cohttp-opam__c__1.2.0-c683eb31/lib/cohttp
12 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__cohttp_lwt-opam__c__1.2.0-d726ab72/lib/cohttp-lwt
13 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__cohttp_lwt_unix-opam__c__1.2.0-162b0ed4/lib/cohttp-lwt-unix
14 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__conduit-opam__c__1.3.0-2f25a23d/lib/conduit
15 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__conduit_lwt-opam__c__1.3.0-f51d5f64/lib/conduit-lwt
16 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__conduit_lwt_unix-opam__c__1.3.0-2ffe3ce8/lib/conduit-lwt-unix
17 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__cstruct-opam__c__3.7.0-7261a4bb/lib/cstruct
18 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__fieldslib-opam__c__v0.11.0-e278b921/lib/fieldslib
19 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__fmt-opam__c__0.8.5-64e33b37/lib/fmt
20 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__hex-opam__c__1.3.0-02a2da67/lib/hex
21 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__ipaddr-opam__c__2.9.0-b1a7228d/lib/ipaddr
22 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__ipaddr-opam__c__2.9.0-b1a7228d/lib/ipaddr/unix
23 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__jsonm-opam__c__1.0.1-3945a8fe/lib/jsonm
24 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__logs-opam__c__0.6.2-b3be181e/lib/logs
25 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__lwt-opam__c__4.2.0-82b92000/lib/lwt
26 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__lwt-opam__c__4.2.0-82b92000/lib/lwt/unix
27 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__magic_mime-opam__c__1.1.1-2e9ad273/lib/magic-mime
28 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__mmap-opam__c__1.0.2-14efb515/lib/mmap
29 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__ocamlfind-opam__c__1.8.0-4f31610a/lib/bytes
30 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__parsexp-opam__c__v0.11.0-10bd8cdc/lib/parsexp
31 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__ppx__sexp__conv-opam__c__v0.11.2-89adb138/lib/ppx_sexp_conv/runtime-lib
32 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__re-opam__c__1.8.0-f48f4142/lib/re
33 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__re-opam__c__1.8.0-f48f4142/lib/re/posix
34 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__result-opam__c__1.3-14b0e3fb/lib/result
35 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__seq-opam__c__0.1-25472c8f/lib/seq
36 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__sexplib-opam__c__v0.11.0-838b4094/lib/sexplib
37 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__sexplib0-opam__c__v0.11.0-dbef4899/lib/sexplib0
38 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__stringext-opam__c__1.5.0-d963eb25/lib/stringext
39 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__uchar-opam__c__0.0.2-03db5b5e/lib/uchar
40 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__uri-opam__c__2.2.0-f7d6a0d0/lib/uri
41 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__uri-opam__c__2.2.0-f7d6a0d0/lib/uri/services
42 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__uri-opam__c__2.2.0-f7d6a0d0/lib/uri/sexp
43 | B /Users/jared/.esy/3___________________________________________________________________/i/opam__s__uutf-opam__c__1.0.2-baf42320/lib/uutf
44 | B /Users/jared/clone/apps/isomagic-todos/server/_esy/default/store/i/isomagic_shared-b2f36703/lib/isomagic-shared
45 | B /Users/jared/clone/apps/isomagic-todos/server/_esy/default/store/i/isomagic_shared-b2f36703/lib/isomagic-shared/Serde
46 | B /Users/jared/clone/apps/isomagic-todos/server/_esy/default/store/i/isomagic_shared-b2f36703/lib/isomagic-shared/types
47 | B /Users/jared/clone/apps/isomagic-todos/server/_esy/default/store/b/isomagic_todos-22f31068/default/server/.main.eobjs/byte
48 | S /Users/jared/.esy/3___________________________________________________________________/i/belt-8ec1f6ae/lib/belt
49 | S /Users/jared/.esy/3___________________________________________________________________/i/ezjsonm-c252ee44/lib/ezjsonm
50 | S /Users/jared/.esy/3___________________________________________________________________/i/ocaml-4.6.10-1dc037cc/lib/ocaml
51 | S /Users/jared/.esy/3___________________________________________________________________/i/ocaml-4.6.10-1dc037cc/lib/ocaml/threads
52 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__astring-opam__c__0.8.3-a2e7f011/lib/astring
53 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__base-opam__c__v0.11.1-902ad087/lib/base
54 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__base-opam__c__v0.11.1-902ad087/lib/base/caml
55 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__base-opam__c__v0.11.1-902ad087/lib/base/shadow_stdlib
56 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__base64-opam__c__2.3.0-bf76300f/lib/base64
57 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__cohttp-opam__c__1.2.0-c683eb31/lib/cohttp
58 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__cohttp_lwt-opam__c__1.2.0-d726ab72/lib/cohttp-lwt
59 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__cohttp_lwt_unix-opam__c__1.2.0-162b0ed4/lib/cohttp-lwt-unix
60 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__conduit-opam__c__1.3.0-2f25a23d/lib/conduit
61 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__conduit_lwt-opam__c__1.3.0-f51d5f64/lib/conduit-lwt
62 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__conduit_lwt_unix-opam__c__1.3.0-2ffe3ce8/lib/conduit-lwt-unix
63 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__cstruct-opam__c__3.7.0-7261a4bb/lib/cstruct
64 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__fieldslib-opam__c__v0.11.0-e278b921/lib/fieldslib
65 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__fmt-opam__c__0.8.5-64e33b37/lib/fmt
66 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__hex-opam__c__1.3.0-02a2da67/lib/hex
67 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__ipaddr-opam__c__2.9.0-b1a7228d/lib/ipaddr
68 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__ipaddr-opam__c__2.9.0-b1a7228d/lib/ipaddr/unix
69 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__jsonm-opam__c__1.0.1-3945a8fe/lib/jsonm
70 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__logs-opam__c__0.6.2-b3be181e/lib/logs
71 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__lwt-opam__c__4.2.0-82b92000/lib/lwt
72 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__lwt-opam__c__4.2.0-82b92000/lib/lwt/unix
73 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__magic_mime-opam__c__1.1.1-2e9ad273/lib/magic-mime
74 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__mmap-opam__c__1.0.2-14efb515/lib/mmap
75 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__ocamlfind-opam__c__1.8.0-4f31610a/lib/bytes
76 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__parsexp-opam__c__v0.11.0-10bd8cdc/lib/parsexp
77 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__ppx__sexp__conv-opam__c__v0.11.2-89adb138/lib/ppx_sexp_conv/runtime-lib
78 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__re-opam__c__1.8.0-f48f4142/lib/re
79 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__re-opam__c__1.8.0-f48f4142/lib/re/posix
80 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__result-opam__c__1.3-14b0e3fb/lib/result
81 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__seq-opam__c__0.1-25472c8f/lib/seq
82 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__sexplib-opam__c__v0.11.0-838b4094/lib/sexplib
83 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__sexplib0-opam__c__v0.11.0-dbef4899/lib/sexplib0
84 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__stringext-opam__c__1.5.0-d963eb25/lib/stringext
85 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__uchar-opam__c__0.0.2-03db5b5e/lib/uchar
86 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__uri-opam__c__2.2.0-f7d6a0d0/lib/uri
87 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__uri-opam__c__2.2.0-f7d6a0d0/lib/uri/services
88 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__uri-opam__c__2.2.0-f7d6a0d0/lib/uri/sexp
89 | S /Users/jared/.esy/3___________________________________________________________________/i/opam__s__uutf-opam__c__1.0.2-baf42320/lib/uutf
90 | S /Users/jared/clone/apps/isomagic-todos/server/_esy/default/store/i/isomagic_shared-b2f36703/lib/isomagic-shared
91 | S /Users/jared/clone/apps/isomagic-todos/server/_esy/default/store/i/isomagic_shared-b2f36703/lib/isomagic-shared/Serde
92 | S /Users/jared/clone/apps/isomagic-todos/server/_esy/default/store/i/isomagic_shared-b2f36703/lib/isomagic-shared/types
93 | S .
94 | FLG -ppx '/Users/jared/clone/apps/isomagic-todos/server/_esy/default/store/b/isomagic_todos-22f31068/default/.ppx/725e931e634fa304d75f70b7d5d3947b/ppx.exe --as-ppx'
95 | FLG -w -40
96 |
--------------------------------------------------------------------------------
/server/server/Ez2.ml:
--------------------------------------------------------------------------------
1 | type value =
2 | [ `Null
3 | | `Bool of bool
4 | | `Float of float
5 | | `String of string
6 | | `A of value list
7 | | `O of (string * value) list ]
8 |
9 | type t =
10 | [ `A of value list
11 | | `O of (string * value) list ]
12 |
13 | let value: t -> value = fun t -> (t :> value)
14 |
15 | exception Escape of ((int * int) * (int * int)) * Jsonm.error
16 |
17 | let json_of_src src =
18 | let d = Jsonm.decoder src in
19 | let dec () = match Jsonm.decode d with
20 | | `Lexeme l -> l
21 | | `Error e -> raise (Escape (Jsonm.decoded_range d, e))
22 | | `End
23 | | `Await -> assert false
24 | in
25 | let rec value v k = match v with
26 | | `Os -> obj [] k
27 | | `As -> arr [] k
28 | | `Null
29 | | `Bool _
30 | | `String _
31 | | `Float _ as v -> k v
32 | | _ -> assert false
33 | and arr vs k = match dec () with
34 | | `Ae -> k (`A (List.rev vs))
35 | | v -> value v (fun v -> arr (v :: vs) k)
36 | and obj ms k = match dec () with
37 | | `Oe -> k (`O (List.rev ms))
38 | | `Name n -> value (dec ()) (fun v -> obj ((n, v) :: ms) k)
39 | | _ -> assert false
40 | in
41 | try `JSON (value (dec ()) (fun x -> x))
42 | with Escape (r, e) -> `Error (r, e)
43 |
44 | let to_dst ?(minify=true) dst json =
45 | let enc e l = ignore (Jsonm.encode e (`Lexeme l)) in
46 | let rec t v k e = match v with
47 | | `A vs -> arr vs k e
48 | | `O ms -> obj ms k e
49 | and value v k e = match v with
50 | | `Null | `Bool _ | `Float _ | `String _ as v -> enc e v; k e
51 | | #t as x -> t (x :> t) k e
52 | and arr vs k e = enc e `As; arr_vs vs k e
53 | and arr_vs vs k e = match vs with
54 | | v :: vs' -> value v (arr_vs vs' k) e
55 | | [] -> enc e `Ae; k e
56 | and obj ms k e = enc e `Os; obj_ms ms k e
57 | and obj_ms ms k e = match ms with
58 | | (n, v) :: ms -> enc e (`Name n); value v (obj_ms ms k) e
59 | | [] -> enc e `Oe; k e
60 | in
61 | let e = Jsonm.encoder ~minify dst in
62 | let finish e = ignore (Jsonm.encode e `End) in
63 | value json finish e
64 |
65 | let to_buffer ?minify buf json =
66 | to_dst ?minify (`Buffer buf) json
67 |
68 | let to_string ?minify json =
69 | let buf = Buffer.create 1024 in
70 | to_buffer ?minify buf json;
71 | Buffer.contents buf
72 |
73 | let to_channel ?minify oc json =
74 | to_dst ?minify (`Channel oc) json
75 |
76 | exception Parse_error of value * string
77 |
78 | let parse_error t fmt =
79 | Printf.kprintf (fun msg ->
80 | raise (Parse_error (t, msg))
81 | ) fmt
82 |
83 | let wrap t = `A [t]
84 |
85 | let unwrap = function
86 | | `A [t] -> t
87 | | v -> parse_error (v :> value) "Not unwrappable"
88 |
89 | let string_of_error error =
90 | Jsonm.pp_error Format.str_formatter error;
91 | Format.flush_str_formatter ()
92 |
93 | let from_src src =
94 | match json_of_src src with
95 | | `JSON t -> t
96 | | `Error (_,e) -> parse_error `Null "JSON.of_buffer %s" (string_of_error e)
97 |
98 | let from_string str = from_src (`String str)
99 |
100 | let from_channel chan = from_src (`Channel chan)
--------------------------------------------------------------------------------
/server/server/Main.re:
--------------------------------------------------------------------------------
1 | open All_types.Types;
2 |
3 | type appState = {
4 | nextId: int,
5 | todos
6 | };
7 |
8 | let appState = ref({nextId: 1, todos: [{id: 0, text: "Add some things to do", completed: None}]});
9 |
10 | Server.get_prefix("/", Server.serveStatic("../public"));
11 |
12 | module type E = {};
13 |
14 | let _: list((module E)) = [
15 | (module
16 | Server.Get(
17 | SApi.Endpoints.Todos,
18 | {
19 | let handle = (req) => appState^.todos;
20 | }
21 | )),
22 | (module
23 | Server.Post(
24 | SApi.Endpoints.AddTodo,
25 | {
26 | let handle = (req, text) => {
27 | let id = appState^.nextId;
28 | let todo = {completed: None, id, text};
29 | let todos = List.append(appState^.todos, [todo]);
30 | appState := {nextId: id + 1, todos};
31 | todos;
32 | };
33 | }
34 | )),
35 | (module
36 | Server.Post(
37 | SApi.Endpoints.RemoveTodo,
38 | {
39 | let handle = (req, id) => {
40 | let todos = List.filter((item) => item.id !== id, appState^.todos);
41 | appState := {...appState^, todos};
42 | todos;
43 | };
44 | }
45 | )),
46 | (module
47 | Server.Post(
48 | SApi.Endpoints.UpdateTodo,
49 | {
50 | let handle = (req, data) => {
51 | let todos = List.map((item) => item.id === data.id ? data : item, appState^.todos);
52 | appState := {...appState^, todos};
53 | todos;
54 | };
55 | }
56 | ))
57 | ]; /* fallback */
58 |
59 | Server.get_prefix(
60 | "/",
61 | (_, _, _, _) =>
62 | Cohttp_lwt_unix.Server.respond_string(~status=`Not_found, ~body="Welcome to never land", ())
63 | );
64 |
65 | Server.listen(8000);
66 |
--------------------------------------------------------------------------------
/server/server/Server.re:
--------------------------------------------------------------------------------
1 | open Lwt;
2 |
3 | open Cohttp;
4 |
5 | open Cohttp_lwt_unix;
6 |
7 | module CoServer = Cohttp_lwt_unix.Server;
8 |
9 | let json = (data) => {
10 | let body = Ezjsonm.value_to_string(data);
11 | module H = Cohttp.Header;
12 | let headers = H.init();
13 | let headers = H.add(headers, "content-type", "application/json");
14 | CoServer.respond_string(~headers=headers, ~status=`OK, ~body=body, ());
15 | };
16 |
17 | let serveStatic = (base, req, body, path, next) => {
18 | let fname = Filename.concat(base, path);
19 | if (Sys.file_exists(fname)) {
20 | if (Sys.is_directory(fname)) {
21 | if (Sys.file_exists(Filename.concat(fname, "index.html"))) {
22 | CoServer.respond_file(~fname=Filename.concat(fname, "index.html"), ());
23 | } else {
24 | next
25 | () /* TODO do a directory listing maybe */;
26 | };
27 | } else {
28 | CoServer.respond_file(~fname=fname, ());
29 | };
30 | } else if (Sys.file_exists(fname ++ ".html")) {
31 | CoServer.respond_file(~fname=fname ++ ".html", ());
32 | } else {
33 | next();
34 | };
35 | };
36 |
37 | let handlers = ref([]);
38 |
39 | let all = (path, fn) =>
40 | handlers :=
41 | [
42 | (req, body, path', next) =>
43 | if (path == path') {
44 | fn(req, body, next);
45 | } else {
46 | next();
47 | },
48 | ...handlers^
49 | ];
50 |
51 | let handle = (meth, path, fn) =>
52 | handlers :=
53 | [
54 | (req, body, path', next) =>
55 | if (meth == Request.meth(req) && path == path') {
56 | fn(req, body, next);
57 | } else {
58 | next();
59 | },
60 | ...handlers^
61 | ];
62 |
63 | let handle_prefix = (meth, path, fn) => {
64 | let size = String.length(path);
65 | handlers:=
66 | [
67 | (req, body, path', next) => {
68 | let pathLen = String.length(path');
69 | if (meth == Request.meth(req) && pathLen >= size && String.sub(path', 0, size) == path) {
70 | fn(req, body, String.sub(path', size, pathLen - size), next);
71 | } else {
72 | next();
73 | };
74 | },
75 | ...handlers^
76 | ];
77 | };
78 |
79 | let maybe_parse = (text) =>
80 | try (Ok(
81 | Ezjsonm.value_from_string(text)
82 | )) {
83 | | _ => Error("Unable to parse")
84 | };
85 |
86 | let get = handle(`GET);
87 |
88 | let post = handle(`POST);
89 |
90 | let delete = handle(`DELETE);
91 |
92 | let get_prefix = handle_prefix(`GET);
93 |
94 | let post_prefix = handle_prefix(`POST);
95 |
96 | let delete_prefix = handle_prefix(`DELETE);
97 |
98 | module Get = (Config: SApi.Get, Handler: {let handle: Cohttp.Request.t => Config.Response.t;}) => {
99 | handle(`GET, Config.path, (req, _, _) => {
100 | json(Config.Response.serialize(Handler.handle(req)))
101 | });
102 | };
103 |
104 | module Await = {
105 | let let_ = (value, ~f) => Lwt.bind(value, f);
106 | let map = (value, ~f) => Lwt.map(f, value);
107 | };
108 |
109 | module Try = {
110 | module Double = {
111 | let let_ = (value, ~f) => switch value {
112 | | Error(error) => error
113 | | Ok(v) => f(v)
114 | }
115 | };
116 | let let_ = (value, ~f) => switch value {
117 | | Error(error) => Error(error)
118 | | Ok(v) => f(v)
119 | };
120 | let try_ = (value, ~f) => switch value {
121 | | Ok(v) => Ok(v)
122 | | Error(error) => f(error)
123 | }
124 | };
125 |
126 | module Post =
127 | (
128 | Config: SApi.Post,
129 | Handler: {let handle: (Cohttp.Request.t, Config.Request.t) => Config.Response.t;}
130 | ) => {
131 | handle(
132 | `POST,
133 | Config.path,
134 | (req, body, _) => {
135 | let%Await body = Cohttp_lwt.Body.to_string(body);
136 | let m = {
137 | let%Try data = try%Try (maybe_parse(body)) {
138 | | message => Error(CoServer.respond_string(~status=`Bad_request, ~body="", ()))
139 | };
140 | let%Try data = try%Try (Config.Request.deserialize(data)) {
141 | | messages => Error(CoServer.respond_string(~status=`Bad_request, ~body="", ()))
142 | };
143 | Ok(json(Config.Response.serialize(Handler.handle(req, data))))
144 | };
145 | switch m {
146 | | Ok(m) => m
147 | | Error(m) => m
148 | }
149 | }
150 | );
151 | };
152 |
153 | let server = (port) => {
154 | let handlers = List.rev(handlers^);
155 | let rec next = (req, body, path, items, ()) => {
156 | switch items {
157 | | [] => CoServer.respond_string(~status=`Not_found, ~body="Not found", ())
158 | | [fn, ...rest] => fn(req, body, path, next(req, body, path, rest))
159 | };
160 | };
161 | let callback = (_conn, req, body) => {
162 | let path = req |> Request.uri |> Uri.path;
163 | next(req, body, path, handlers, ());
164 | };
165 | CoServer.create(~mode=`TCP(`Port(port)), CoServer.make(~callback=callback, ()));
166 | };
167 |
168 | let listen = (port) => {
169 | Printf.printf("Listening at http://localhost:%d", port);
170 | print_newline();
171 | ignore(Lwt_main.run(server(port)));
172 | };
173 |
--------------------------------------------------------------------------------
/server/server/dune:
--------------------------------------------------------------------------------
1 | (executable
2 | (name main)
3 | (public_name server)
4 | (preprocess (pps let-anything-esy.ppx))
5 | (libraries lwt cohttp cohttp.lwt isomagic-shared isomagic-shared.types
6 | ))
7 |
--------------------------------------------------------------------------------
/src/client/Api.re:
--------------------------------------------------------------------------------
1 | open! Shared.Types;
2 |
3 | let post: (string, Js.Json.t, Js.Json.t => unit) => unit = [%bs.raw
4 | {|
5 | function (path, json, onDone) {
6 | fetch(path, {body: JSON.stringify(json), method: 'POST', headers: {'Content-Type': 'application/json'}})
7 | .then(res => res.json())
8 | .then(res => onDone(res), err => console.error('failed', err))
9 | }
10 | |}
11 | ];
12 |
13 | module Post = (Config: SApi.Post) => {
14 | let run = (body, onDone) =>
15 | post(Config.path, Config.Request.serialize(body), data =>
16 | switch (Config.Response.deserialize(data)) {
17 | | Error(error) => Js.log("Failed to parse data")
18 | | Ok(result) =>
19 | // Js.log(Config.Response.(result));
20 | onDone(result)
21 | }
22 | );
23 | };
24 |
25 | module RemoveTodo = Post(SApi.Endpoints.RemoveTodo);
26 |
27 | module AddTodo = Post(SApi.Endpoints.AddTodo);
28 |
29 | module UpdateTodo = Post(SApi.Endpoints.UpdateTodo);
--------------------------------------------------------------------------------
/src/client/App.re:
--------------------------------------------------------------------------------
1 | open! Types;
2 |
3 | let str = ReasonReact.string;
4 |
5 | // let style = ReactDOMRe.Style.make;
6 | let todoItemStyle = Css.(
7 | style([
8 | backgroundColor(white),
9 | alignItems(`center),
10 | cursor(`pointer),
11 | flexDirection(`row),
12 | padding(px(10)),
13 | hover([backgroundColor(hex("eee"))]),
14 | ])
15 | );
16 |
17 | module TodoItem = {
18 | let component = ReasonReact.statelessComponent("Todo");
19 | let make = (~item, ~onToggle, ~onEdit, _) => {
20 | ...component,
21 | render: _ =>
22 | ,
33 | };
34 | };
35 |
36 | let jsNow: unit => int = [%bs.raw "function(unit) {return Date.now()}"];
37 |
38 | let toggleItem = (item, update) => {
39 | let item =
40 | item.completed === None ?
41 | {...item, completed: Some(jsNow())} : {...item, completed: None};
42 | Api.UpdateTodo.run(item, update);
43 | };
44 |
45 | let editItem = (item, text, update) =>
46 | if (text == "") {
47 | Api.RemoveTodo.run(item.id, update);
48 | } else {
49 | text !== item.text ? Api.UpdateTodo.run({...item, text}, update) : ();
50 | };
51 |
52 | module Todos = {
53 | let component = ReasonReact.reducerComponent("Todos");
54 | let url = "/todos";
55 | type state = todos;
56 | type action = state;
57 | module Data = Serde.Modules.Todos;
58 | let make = (~data, _) => {
59 | ...component,
60 | initialState: () => data,
61 | reducer: (action, state) => ReasonReact.Update(action),
62 | render: ({state, send}) => {
63 |
64 |
65 | {List.map(
66 | item =>
67 |
string_of_int}
70 | onToggle={_ => toggleItem(item, send)}
71 | onEdit={text => editItem(item, text, send)}
72 | />,
73 | state,
74 | )
75 | |> Array.of_list
76 | |> ReasonReact.array}
77 |
78 | Api.AddTodo.run(text, send)}
82 | placeholder="Add an item"
83 | clear=true
84 | />
85 |
86 | ;
87 | // let updateTodos = update((todos, _) => ReasonReact.Update(todos));
88 | },
89 | };
90 | };
91 |
92 | module LoadedTodos = Loader.F(Todos);
93 |
94 | module Page = {
95 | let component = ReasonReact.statelessComponent("Page");
96 | let make = _children => {
97 | ...component,
98 | render: _ =>
99 |
103 |
111 | {str("A Nice Todo List")}
112 |
113 |
114 |
,
115 | };
116 | };
117 |
118 | Devtools.register();
119 |
120 | ReactDOMRe.renderToElementWithId(, "index");
--------------------------------------------------------------------------------
/src/client/Devtools.re:
--------------------------------------------------------------------------------
1 |
2 | /* let x = 10; */
3 |
4 | let register = () => {
5 | [%bs.raw{| (() => {
6 |
7 | window.devtoolsFormatters = window.devtoolsFormatters || [];
8 | window.devtoolsFormatters.push({
9 | header: function(value) {
10 | if (!value.$bs) return null
11 | switch (value.$bs) {
12 | case "list":
13 | return ["div", {"style": "background-color: #eef"},
14 | "List(", value.items.length, ")"]
15 | case "optional":
16 | if (value.empty) return ["div", {}, "None"]
17 | return ["div", {}, "Some(", ["object", {"object": value.value}], ")"]
18 | case "record":
19 | return ["div", {style: "background-color: #efe"}, value.type, ["span", {style: "font-style: italic"}, " record"]]
20 | case "variant":
21 | return ["div", {}, ["span", {style: "font-style: italic"}, value.type, ": "], value.constructor]
22 | }
23 | return null
24 | },
25 | hasBody: function(value) {
26 | return value.$bs === "list" || value.$bs === "record" || (value.$bs === "variant" && value.arguments.length)
27 | },
28 | body: function(value) {
29 | switch (value.$bs) {
30 | case "list":
31 | return ["div", {style: "padding-left: 20px"}].concat(value.items.map(item => ["div", {}, ["object", {"object": item}]]))
32 | case "record":
33 | return ["div", {style: "padding-left: 20px"}].concat(Object.keys(value.attributes).map(attr => {
34 | return ["div", {}, attr, ": ", ["object", {"object": value.attributes[attr]}]]
35 | }))
36 | case "variant":
37 | return ["div", {style: "padding-left: 20px"}].concat(value.arguments.map(arg => [
38 | "div",
39 | {},
40 | ["object", {"object": arg}]
41 | ]))
42 | default:return null
43 | }
44 | }
45 | })
46 | })()
47 | |}];
48 |
49 | };
--------------------------------------------------------------------------------
/src/client/DevtoolsDemo.re:
--------------------------------------------------------------------------------
1 | Js.log("Hello, BuckleScript and Reason!");
2 |
3 | type sum =
4 | | One(int)
5 | | Two(float, string)
6 | | Three;
7 |
8 | type my_int = int;
9 |
10 | type string_list = list(string);
11 |
12 | type nested = {name: string};
13 |
14 | type jumbo = {
15 | str: string,
16 | num: int,
17 | float,
18 | my_int,
19 | string_list,
20 | nums: array(int),
21 | nested,
22 | cross_module: Lib.person,
23 | sum: list(option(sum))
24 | };
25 |
26 | Devtools.register();
27 |
28 | let value = {
29 | str: "str",
30 | num: 10,
31 | float: 5.2,
32 | my_int: 3,
33 | string_list: ["one", "two", "threee"],
34 | nums: [|1, 2, 3|],
35 | nested: {
36 | name: "Me"
37 | },
38 | cross_module: {
39 | Lib.name: "Reason"
40 | },
41 | sum: [None, None, Some(Three), Some(One(2)), Some(Two(4.5, "hi"))]
42 | };
43 |
44 | Js.log((value));
45 |
--------------------------------------------------------------------------------
/src/client/Editor.re:
--------------------------------------------------------------------------------
1 | let str = ReasonReact.string;
2 |
3 | let style = ReactDOMRe.Style.make;
4 |
5 | let evtValue = event =>
6 | ReactDOMRe.domElementToObj(ReactEventRe.Form.target(event))##value;
7 |
8 | type retainedProps = {value: string};
9 |
10 | let component = ReasonReact.reducerComponentWithRetainedProps("Editor");
11 |
12 | type state = option(string);
13 |
14 | let make = (~value, ~onChange, ~placeholder, ~className="", ~clear=false, _) => {
15 | ...component,
16 | initialState: () => None,
17 | retainedProps: {
18 | value: value,
19 | },
20 | willReceiveProps: ({state, retainedProps}) =>
21 | switch (state) {
22 | | None => None
23 | | Some(text) =>
24 | retainedProps.value === value && value !== text ? Some(text) : None
25 | },
26 | reducer: (action, state) => ReasonReact.Update(action),
27 | render: ({state, send}) =>
28 | switch (state) {
29 | | None =>
30 | {
34 | ReactEventRe.Mouse.stopPropagation(evt);
35 | send(Some(value));
36 | }}>
37 | {str(value === "" ? placeholder : value)}
38 |
39 | | Some(text) =>
40 | send(Some(evtValue(evt)))}
46 | onClick={evt => ReactEventRe.Mouse.stopPropagation(evt)}
47 | onKeyDown={evt =>
48 | switch (ReactEventRe.Keyboard.key(evt)) {
49 | | "Enter" =>
50 | if (text == value) {
51 | send(None);
52 | } else {
53 | onChange(text);
54 | if (clear) {
55 | send(Some(value));
56 | };
57 | }
58 | | _ => ()
59 | }
60 | }
61 | style={style(
62 | ~fontFamily="inherit",
63 | ~flex="1",
64 | ~fontSize="inherit",
65 | (),
66 | )}
67 | onBlur={_ =>
68 | if (text != value) {
69 | onChange(text); /* TODO I want a different state value that is "waiting" */
70 | if (clear) {
71 | send(Some(value));
72 | };
73 | } else {
74 | send(None);
75 | }
76 | }
77 | />
78 | },
79 | };
--------------------------------------------------------------------------------
/src/client/Loader.re:
--------------------------------------------------------------------------------
1 | module type Config = {
2 | module Data: SApi.SerdeType;
3 | type state;
4 | type action;
5 | let url: string;
6 | let make:
7 | (~data: Data.t, array(int)) =>
8 | ReasonReact.componentSpec(
9 | state,
10 | state,
11 | ReasonReact.noRetainedProps,
12 | ReasonReact.noRetainedProps,
13 | action,
14 | );
15 | };
16 |
17 | let str = ReasonReact.string;
18 |
19 | let style = ReactDOMRe.Style.make;
20 |
21 | let fetchJson: (string, Js.Json.t => unit) => unit = [%bs.raw
22 | {| function (url, fn) {
23 | fetch(url).then(res => res.json()).then(fn)
24 | } |}
25 | ];
26 |
27 | module F = (Config: Config) => {
28 | type state =
29 | | Loading
30 | | Error(string)
31 | | Loaded(Config.Data.t);
32 | let component = ReasonReact.reducerComponent("Loader");
33 | let make = _children => {
34 | ...component,
35 | initialState: () => Loading,
36 | reducer: (action, state) => ReasonReact.Update(action),
37 | didMount: ({send}) => {
38 | fetchJson(Config.url, json =>
39 | switch (Config.Data.deserialize(json)) {
40 | | Error(_error) => Js.log2("Failed to load", _error)
41 | | Ok(data) => send(Loaded(data))
42 | }
43 | );
44 | },
45 | render: self =>
46 | switch (self.state) {
47 | | Loading =>
48 |
55 | {str("Loading")}
56 |
57 | | Error(text) => {str("Error")} {str(text)}
58 | | Loaded(data) =>
59 | },
60 | };
61 | };
--------------------------------------------------------------------------------
/src/client/Serde.re:
--------------------------------------------------------------------------------
1 | [@ocaml.warning "-34"];
2 | open LockedTypes;
3 | type target = Js.Json.t;
4 | module Version1 = {
5 | open Types1;
6 | let rec deserialize_Types____id:
7 | Js.Json.t => Belt.Result.t(_Types__id, list(string)) =
8 | value =>
9 | (
10 | number =>
11 | switch (Js.Json.classify(number)) {
12 | | JSONNumber(number) => Belt.Result.Ok(int_of_float(number))
13 | | _ => Error(["Expected a float"])
14 | }
15 | )(
16 | value,
17 | )
18 | and deserialize_Types____text:
19 | Js.Json.t => Belt.Result.t(_Types__text, list(string)) =
20 | value =>
21 | (
22 | string =>
23 | switch (Js.Json.classify(string)) {
24 | | JSONString(string) => Belt.Result.Ok(string)
25 | | _ => Error(["expected a string"])
26 | }
27 | )(
28 | value,
29 | )
30 | and deserialize_Types____todo:
31 | Js.Json.t => Belt.Result.t(_Types__todo, list(string)) =
32 | record =>
33 | switch (Js.Json.classify(record)) {
34 | | JSONObject(dict) =>
35 | let inner = attr_completed => {
36 | let inner = attr_id => {
37 | let inner = attr_text =>
38 | Belt.Result.Ok(
39 | {text: attr_text, id: attr_id, completed: attr_completed}: _Types__todo,
40 | );
41 | switch (Js.Dict.get(dict, "text")) {
42 | | None => Belt.Result.Error(["No attribute 'text'"])
43 | | Some(json) =>
44 | switch (deserialize_Types____text(json)) {
45 | | Belt.Result.Error(error) =>
46 | Belt.Result.Error(["attribute 'text'", ...error])
47 | | Ok(data) => inner(data)
48 | }
49 | };
50 | };
51 | switch (Js.Dict.get(dict, "id")) {
52 | | None => Belt.Result.Error(["No attribute 'id'"])
53 | | Some(json) =>
54 | switch (deserialize_Types____id(json)) {
55 | | Belt.Result.Error(error) =>
56 | Belt.Result.Error(["attribute 'id'", ...error])
57 | | Ok(data) => inner(data)
58 | }
59 | };
60 | };
61 | switch (Js.Dict.get(dict, "completed")) {
62 | | None => inner(None)
63 | | Some(json) =>
64 | switch (
65 | (
66 | (
67 | (transformer, option) =>
68 | switch (Js.Json.classify(option)) {
69 | | JSONNull => Belt.Result.Ok(None)
70 | | _ =>
71 | switch (transformer(option)) {
72 | | Belt.Result.Error(error) =>
73 | Belt.Result.Error(["optional value", ...error])
74 | | Ok(value) => Ok(Some(value))
75 | }
76 | }
77 | )(
78 | number =>
79 | switch (Js.Json.classify(number)) {
80 | | JSONNumber(number) => Belt.Result.Ok(int_of_float(number))
81 | | _ => Error(["Expected a float"])
82 | }
83 | )
84 | )(
85 | json,
86 | )
87 | ) {
88 | | Belt.Result.Error(error) =>
89 | Belt.Result.Error(["attribute 'completed'", ...error])
90 | | Ok(data) => inner(data)
91 | }
92 | };
93 | | _ => Belt.Result.Error(["Expected an object"])
94 | }
95 | and deserialize_Types____todos:
96 | Js.Json.t => Belt.Result.t(_Types__todos, list(string)) =
97 | value =>
98 | (
99 | list =>
100 | switch (Js.Json.classify(list)) {
101 | | JSONArray(items) =>
102 | let transformer = deserialize_Types____todo;
103 | let rec loop = (i, collected, items) =>
104 | switch (items) {
105 | | [] => Belt.Result.Ok(Belt.List.reverse(collected))
106 | | [one, ...rest] =>
107 | switch (transformer(one)) {
108 | | Belt.Result.Error(error) =>
109 | Belt.Result.Error([
110 | "list element " ++ string_of_int(i),
111 | ...error,
112 | ])
113 | | Belt.Result.Ok(value) =>
114 | loop(i + 1, [value, ...collected], rest)
115 | }
116 | };
117 | loop(0, [], Belt.List.fromArray(items));
118 | | _ => Belt.Result.Error(["expected an array"])
119 | }
120 | )(
121 | value,
122 | )
123 | and serialize_Types____id: _Types__id => Js.Json.t =
124 | value => (int => Js.Json.number(float_of_int(int)))(value)
125 | and serialize_Types____text: _Types__text => Js.Json.t =
126 | value => Js.Json.string(value)
127 | and serialize_Types____todo: _Types__todo => Js.Json.t =
128 | record =>
129 | Js.Json.object_(
130 | Js.Dict.fromArray([|
131 | ("text", serialize_Types____text(record.text)),
132 | ("id", serialize_Types____id(record.id)),
133 | (
134 | "completed",
135 | (
136 | (
137 | transformer =>
138 | fun
139 | | Some(inner) => transformer(inner)
140 | | None => Js.Json.null
141 | )(
142 | int =>
143 | Js.Json.number(float_of_int(int))
144 | )
145 | )(
146 | record.completed,
147 | ),
148 | ),
149 | |]),
150 | )
151 | and serialize_Types____todos: _Types__todos => Js.Json.t =
152 | value =>
153 | (
154 | list =>
155 | Js.Json.array(
156 | Belt.List.toArray(Belt.List.map(list, serialize_Types____todo)),
157 | )
158 | )(
159 | value,
160 | );
161 | };
162 | module Current = Version1;
163 | let parseVersion = json =>
164 | switch (Js.Json.classify(json)) {
165 | | JSONObject(dict) =>
166 | switch (Js.Dict.get(dict, "$schemaVersion")) {
167 | | Some(schemaVersion) =>
168 | switch (Js.Json.classify(schemaVersion)) {
169 | | JSONNumber(version) =>
170 | [@implicit_arity] Belt.Result.Ok(int_of_float(version), json)
171 | | _ => Belt.Result.Error("Invalid $schemaVersion")
172 | }
173 | | None => Belt.Result.Error("No $schemaVersion present")
174 | }
175 | | JSONArray([|version, payload|]) =>
176 | switch (Js.Json.classify(version)) {
177 | | JSONNumber(version) =>
178 | [@implicit_arity] Belt.Result.Ok(int_of_float(version), payload)
179 | | _ => Belt.Result.Error("Invalid wrapped version")
180 | }
181 | | _ => Belt.Result.Error("Must have a schema version")
182 | };
183 | let wrapWithVersion = (version, payload) =>
184 | switch (Js.Json.classify(payload)) {
185 | | JSONObject(dict) =>
186 | Js.Dict.set(
187 | dict,
188 | "$schemaVersion",
189 | Js.Json.number(float_of_int(version)),
190 | );
191 | Js.Json.object_(dict);
192 | | _ => Js.Json.array([|Js.Json.number(float_of_int(version)), payload|])
193 | };
194 | let serializeTodo = data =>
195 | wrapWithVersion(currentVersion, Version1.serialize_Types____todo(data))
196 | and deserializeTodo = data =>
197 | switch (parseVersion(data)) {
198 | | Belt.Result.Error(err) => Belt.Result.Error([err])
199 | | [@implicit_arity] Ok(version, data) =>
200 | switch (version) {
201 | | 1 =>
202 | switch (Version1.deserialize_Types____todo(data)) {
203 | | Belt.Result.Error(error) => Belt.Result.Error(error)
204 | | Ok(data) => Belt.Result.Ok(data)
205 | }
206 | | _ =>
207 | Belt.Result.Error(["Unexpected version " ++ string_of_int(version)])
208 | }
209 | };
210 | let serializeTodos = data =>
211 | wrapWithVersion(currentVersion, Version1.serialize_Types____todos(data))
212 | and deserializeTodos = data =>
213 | switch (parseVersion(data)) {
214 | | Belt.Result.Error(err) => Belt.Result.Error([err])
215 | | [@implicit_arity] Ok(version, data) =>
216 | switch (version) {
217 | | 1 =>
218 | switch (Version1.deserialize_Types____todos(data)) {
219 | | Belt.Result.Error(error) => Belt.Result.Error(error)
220 | | Ok(data) => Belt.Result.Ok(data)
221 | }
222 | | _ =>
223 | Belt.Result.Error(["Unexpected version " ++ string_of_int(version)])
224 | }
225 | };
226 | let serializeId = data =>
227 | wrapWithVersion(currentVersion, Version1.serialize_Types____id(data))
228 | and deserializeId = data =>
229 | switch (parseVersion(data)) {
230 | | Belt.Result.Error(err) => Belt.Result.Error([err])
231 | | [@implicit_arity] Ok(version, data) =>
232 | switch (version) {
233 | | 1 =>
234 | switch (Version1.deserialize_Types____id(data)) {
235 | | Belt.Result.Error(error) => Belt.Result.Error(error)
236 | | Ok(data) => Belt.Result.Ok(data)
237 | }
238 | | _ =>
239 | Belt.Result.Error(["Unexpected version " ++ string_of_int(version)])
240 | }
241 | };
242 | let serializeText = data =>
243 | wrapWithVersion(currentVersion, Version1.serialize_Types____text(data))
244 | and deserializeText = data =>
245 | switch (parseVersion(data)) {
246 | | Belt.Result.Error(err) => Belt.Result.Error([err])
247 | | [@implicit_arity] Ok(version, data) =>
248 | switch (version) {
249 | | 1 =>
250 | switch (Version1.deserialize_Types____text(data)) {
251 | | Belt.Result.Error(error) => Belt.Result.Error(error)
252 | | Ok(data) => Belt.Result.Ok(data)
253 | }
254 | | _ =>
255 | Belt.Result.Error(["Unexpected version " ++ string_of_int(version)])
256 | }
257 | };
258 | module Modules = {
259 | module Todo = {
260 | type t = Types1._Types__todo;
261 | let serialize = serializeTodo;
262 | let deserialize = deserializeTodo;
263 | };
264 | module Todos = {
265 | type t = Types1._Types__todos;
266 | let serialize = serializeTodos;
267 | let deserialize = deserializeTodos;
268 | };
269 | module Id = {
270 | type t = Types1._Types__id;
271 | let serialize = serializeId;
272 | let deserialize = deserializeId;
273 | };
274 | module Text = {
275 | type t = Types1._Types__text;
276 | let serialize = serializeText;
277 | let deserialize = deserializeText;
278 | };
279 | };
280 |
--------------------------------------------------------------------------------
/src/client/demo.re:
--------------------------------------------------------------------------------
1 | Js.log("Hello, BuckleScript and Reason!");
2 |
3 | type sum =
4 | | One(int)
5 | | Two(float, string)
6 | | Three;
7 |
8 | type my_int = int;
9 |
10 | type string_list = list(string);
11 |
12 | type nested = {name: string};
13 |
14 | type jumbo = {
15 | str: string,
16 | num: int,
17 | float,
18 | my_int,
19 | string_list,
20 | nums: array(int),
21 | nested,
22 | cross_module: Lib.person,
23 | sum: list(option(sum)),
24 | };
25 |
26 | Devtools.register();
27 |
28 | let value = {
29 | str: "str",
30 | num: 10,
31 | float: 5.2,
32 | my_int: 3,
33 | string_list: ["one", "two", "threee"],
34 | nums: [|1, 2, 3|],
35 | nested: {
36 | name: "Me",
37 | },
38 | cross_module: {
39 | Lib.name: "Reason",
40 | },
41 | sum: [None, None, Some(Three), Some(One(2)), Some(Two(4.5, "hi"))],
42 | };
43 |
44 | Js.log(value);
45 |
46 | Js.log(10);
47 |
48 | let ss = value;
49 |
50 | Js.log(ss);
--------------------------------------------------------------------------------
/src/client/lib.re:
--------------------------------------------------------------------------------
1 | type person = {name: string};
2 | let me = {name: "Reason"};
--------------------------------------------------------------------------------
/src/shared/.merlin:
--------------------------------------------------------------------------------
1 | EXCLUDE_QUERY_DIR
2 | B /Users/jared/clone/apps/isomagic-todos/src/shared/_esy/default/store/b/isomagic_shared-88da164f/default/.shared.objs/byte
3 | B /Users/jared/clone/apps/isomagic-todos/src/shared/_esy/default/store/b/isomagic_shared-88da164f/default/locked/.All_types.objs/byte
4 | B /Users/jared/clone/apps/isomagic-todos/src/shared/_esy/default/store/b/isomagic_shared-88da164f/default/server/.Serde.objs/byte
5 | S .
6 | S locked
7 | S server
8 | FLG -open Shared__ -open All_types
9 |
--------------------------------------------------------------------------------
/src/shared/SApi.re:
--------------------------------------------------------------------------------
1 | module type Endpoint = {
2 | type request;
3 | type response;
4 | let path: string;
5 | let method: [ | `GET | `POST];
6 | };
7 |
8 | module type SerdeType = {
9 | type t;
10 | let serialize: t => Serde.target;
11 | let deserialize: Serde.target => Belt.Result.t(t, list(string));
12 | };
13 |
14 | // TODO serializeResponse, deserializeResponse or something...
15 | module type Get = {
16 | module Response: SerdeType;
17 | let path: string;
18 | };
19 |
20 | module type Post = {
21 | module Request: SerdeType;
22 | module Response: SerdeType;
23 | let path: string;
24 | };
25 |
26 | // module type Serde = {
27 | // type t;
28 | // let serializeTodo: Types.todo => t;
29 | // let deserializeTodo: t => Belt.Result.t(Types.todo, list(string));
30 | // let serializeTodos: Types.todos => t;
31 | // let deserializeTodos: t => Belt.Result.t(Types.todos, list(string));
32 | // };
33 |
34 | module Endpoints = {
35 | open Types;
36 | // open! Serde.Modules;
37 | module Todos = {
38 | module Response = Serde.Modules.Todos;
39 | let path = "/todos";
40 | let pub_ = `GET;
41 | };
42 | module AddTodo = {
43 | module Request = Serde.Modules.Text;
44 | module Response = Serde.Modules.Todos;
45 | type request = string;
46 | type response = todos;
47 | let path = "/todo/add";
48 | let pub_ = `POST;
49 | };
50 | module RemoveTodo = {
51 | module Request = Serde.Modules.Id;
52 | module Response = Serde.Modules.Todos;
53 | let path = "/todo/remove";
54 | let pub_ = `POST;
55 | };
56 | module UpdateTodo = {
57 | module Request = Serde.Modules.Todo;
58 | module Response = Serde.Modules.Todos;
59 | let path = "/todo";
60 | let pub_ = `POST;
61 | };
62 | };
63 |
64 | module type Config = {
65 | type t;
66 | module type Done;
67 | module Get: (Endpoint: Get) => Done;
68 | module Post: (Endpoint: Post) => Done;
69 | };
70 |
71 | module Setup = (Config: Config) => {};
--------------------------------------------------------------------------------
/src/shared/Shared.re:
--------------------------------------------------------------------------------
1 |
2 | let module Types = Types;
--------------------------------------------------------------------------------
/src/shared/dune:
--------------------------------------------------------------------------------
1 |
2 | (library
3 | (name SApi)
4 | (public_name isomagic-shared)
5 | (flags -open All_types)
6 | (libraries Serde All_types)
7 | )
8 |
--------------------------------------------------------------------------------
/src/shared/dune-project:
--------------------------------------------------------------------------------
1 | (lang dune 1.0)
2 | (name isomagic-shared)
3 |
--------------------------------------------------------------------------------
/src/shared/esy.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "isomagic-shared",
3 | "dependencies": {
4 | "ocaml": ">4.02.3",
5 | "@opam/dune": "*",
6 | "ezjsonm": "jaredly/ezjsonm#esy",
7 | "belt": "jaredly/belt",
8 | "@esy-ocaml/reason": "*"
9 | },
10 | "esy": {
11 | "build": "dune build -p #{self.name}",
12 | "buildsInSource": true
13 | }
14 | }
--------------------------------------------------------------------------------
/src/shared/esy.lock/.gitattributes:
--------------------------------------------------------------------------------
1 |
2 | # Set eol to LF so files aren't converted to CRLF-eol on Windows.
3 | * text eol=lf
4 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Reset any possible .gitignore, we want all esy.lock to be un-ignored.
3 | !*
4 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/base-threads.base/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "https://github.com/ocaml/opam-repository/issues"
3 | description: """
4 | Threads library distributed with the OCaml compiler
5 | """
6 |
7 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/base-unix.base/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "https://github.com/ocaml/opam-repository/issues"
3 | description: """
4 | Unix library distributed with the OCaml compiler
5 | """
6 |
7 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/conf-m4.1/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "tim@gfxmonk.net"
3 | homepage: "http://www.gnu.org/software/m4/m4.html"
4 | bug-reports: "https://github.com/ocaml/opam-repository/issues"
5 | authors: "GNU Project"
6 | license: "GPL-3"
7 | build: [["sh" "-exc" "echo | m4"]]
8 | depexts: [
9 | ["m4"] {os-distribution = "debian"}
10 | ["m4"] {os-distribution = "ubuntu"}
11 | ["m4"] {os-distribution = "fedora"}
12 | ["m4"] {os-distribution = "rhel"}
13 | ["m4"] {os-distribution = "centos"}
14 | ["m4"] {os-distribution = "alpine"}
15 | ["m4"] {os-distribution = "nixos"}
16 | ["m4"] {os-family = "suse"}
17 | ["m4"] {os-distribution = "ol"}
18 | ["m4"] {os-distribution = "arch"}
19 | ]
20 | synopsis: "Virtual package relying on m4"
21 | description:
22 | "This package can only install if the m4 binary is installed on the system."
23 | flags: conf
24 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/cppo.1.6.5/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "martin@mjambon.com"
3 | authors: ["Martin Jambon"]
4 | homepage: "https://github.com/mjambon/cppo"
5 | dev-repo: "git+https://github.com/mjambon/cppo.git"
6 | bug-reports: "https://github.com/mjambon/cppo/issues"
7 | license: "BSD-3-Clause"
8 |
9 | build: [
10 | ["jbuilder" "subst" "-p" name] {pinned}
11 | ["jbuilder" "build" "-p" name "-j" jobs]
12 | ["jbuilder" "runtest" "-p" name] {with-test}
13 | ]
14 | depends: [
15 | "ocaml"
16 | "jbuilder" {build & >= "1.0+beta17"}
17 | "base-unix"
18 | ]
19 | synopsis: "Equivalent of the C preprocessor for OCaml programs"
20 | url {
21 | src: "https://github.com/mjambon/cppo/archive/v1.6.5.tar.gz"
22 | checksum: "md5=1cd25741d31417995b0973fe0b6f6c82"
23 | }
24 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/cstruct.3.7.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "anil@recoil.org"
3 | authors: ["Anil Madhavapeddy" "Richard Mortier" "Thomas Gazagnaire"
4 | "Pierre Chambart" "David Kaloper" "Jeremy Yallop" "David Scott"
5 | "Mindy Preston" "Thomas Leonard" "Anton Kochkov" "Etienne Millon" ]
6 | homepage: "https://github.com/mirage/ocaml-cstruct"
7 | license: "ISC"
8 | dev-repo: "git+https://github.com/mirage/ocaml-cstruct.git"
9 | bug-reports: "https://github.com/mirage/ocaml-cstruct/issues"
10 | doc: "https://mirage.github.io/ocaml-cstruct/"
11 |
12 | tags: [ "org:mirage" "org:ocamllabs" ]
13 | build: [
14 | ["dune" "subst"] {pinned}
15 | ["dune" "build" "-p" name "-j" jobs]
16 | ["dune" "runtest" "-p" name "-j" jobs] {with-test}
17 | ]
18 | depends: [
19 | "ocaml" {>= "4.03.0"}
20 | "dune" {build & >= "1.0"}
21 | "sexplib" {< "v0.12"}
22 | "alcotest" {with-test}
23 | ]
24 | synopsis: "Access C-like structures directly from OCaml"
25 | description: """
26 | Cstruct is a library and syntax extension to make it easier to access C-like
27 | structures directly from OCaml. It supports both reading and writing to these
28 | structures, and they are accessed via the `Bigarray` module."""
29 | url {
30 | src:
31 | "https://github.com/mirage/ocaml-cstruct/releases/download/v3.7.0/cstruct-v3.7.0.tbz"
32 | checksum: "md5=60a83c96f5871a3caae091fd116f4f24"
33 | }
34 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/dune.1.8.2/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/ocaml/dune"
5 | bug-reports: "https://github.com/ocaml/dune/issues"
6 | dev-repo: "git+https://github.com/ocaml/dune.git"
7 | license: "MIT"
8 | depends: [
9 | "ocaml" {>= "4.02"}
10 | "base-unix"
11 | "base-threads"
12 | ]
13 | build: [
14 | # opam 2 sets OPAM_SWITCH_PREFIX, so we don't need a hardcoded path
15 | ["ocaml" "configure.ml" "--libdir" lib] {opam-version < "2"}
16 | ["ocaml" "bootstrap.ml"]
17 | ["./boot.exe" "--release" "--subst"] {pinned}
18 | ["./boot.exe" "--release" "-j" jobs]
19 | ]
20 | conflicts: [
21 | "jbuilder" {!= "transition"}
22 | "odoc" {< "1.3.0"}
23 | ]
24 |
25 | synopsis: "Fast, portable and opinionated build system"
26 | description: """
27 | dune is a build system that was designed to simplify the release of
28 | Jane Street packages. It reads metadata from "dune" files following a
29 | very simple s-expression syntax.
30 |
31 | dune is fast, it has very low-overhead and support parallel builds on
32 | all platforms. It has no system dependencies, all you need to build
33 | dune and packages using dune is OCaml. You don't need or make or bash
34 | as long as the packages themselves don't use bash explicitly.
35 |
36 | dune supports multi-package development by simply dropping multiple
37 | repositories into the same directory.
38 |
39 | It also supports multi-context builds, such as building against
40 | several opam roots/switches simultaneously. This helps maintaining
41 | packages across several versions of OCaml and gives cross-compilation
42 | for free.
43 | """
44 | url {
45 | src: "https://github.com/ocaml/dune/releases/download/1.8.2/dune-1.8.2.tbz"
46 | checksum: "md5=2b7f45a6e14865f2318d34f12221ec1e"
47 | }
48 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/hex.1.3.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "thomas@gazagnaire.org"
3 | authors: ["Thomas Gazagnaire" "Trevor Summers Smith"]
4 | license: "ISC"
5 | homepage: "https://github.com/mirage/ocaml-hex"
6 | doc: "https://mirage.github.io/ocaml-hex/"
7 | bug-reports: "https://github.com/mirage/ocaml-hex/issues"
8 | depends: [
9 | "ocaml"
10 | "dune" {build & >= "1.0"}
11 | "cstruct" {>= "1.7.0"}
12 | ]
13 | build: [
14 | ["dune" "subst"] {pinned}
15 | ["dune" "build" "-p" name "-j" jobs]
16 | ["dune" "runtest" "-p" name "-j" jobs] {with-test}
17 | ]
18 | dev-repo: "git+https://github.com/mirage/ocaml-hex.git"
19 | synopsis: "Library providing hexadecimal converters"
20 | description: """
21 | ```ocaml
22 | #require "hex";;
23 | # Hex.of_string "Hello world!";;
24 | - : Hex.t = "48656c6c6f20776f726c6421"
25 | # Hex.to_string "dead-beef";;
26 | - : string = "ޭ��"
27 | # Hex.hexdump (Hex.of_string "Hello world!\n")
28 | 00000000: 4865 6c6c 6f20 776f 726c 6421 0a Hello world!.
29 | - : unit = ()
30 | ```
31 | """
32 | url {
33 | src:
34 | "https://github.com/mirage/ocaml-hex/releases/download/v1.3.0/hex-v1.3.0.tbz"
35 | checksum: "md5=c0baa72c9d7495cd3c6646f9a50b03c7"
36 | }
37 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/jbuilder.transition/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/ocaml/dune"
5 | bug-reports: "https://github.com/ocaml/dune/issues"
6 | dev-repo: "git+https://github.com/ocaml/dune.git"
7 | license: "MIT"
8 | depends: ["ocaml" "dune"]
9 | post-messages: [
10 | "Jbuilder has been renamed and the jbuilder package is now a transition \
11 | package. Use the dune package instead."
12 | ]
13 | synopsis:
14 | "This is a transition package, jbuilder is now named dune. Use the dune"
15 | description: "package instead."
16 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/jsonm.1.0.1/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Daniel Bünzli "
3 | authors: ["Daniel Bünzli "]
4 | homepage: "http://erratique.ch/software/jsonm"
5 | doc: "http://erratique.ch/software/jsonm/doc/Jsonm"
6 | dev-repo: "git+http://erratique.ch/repos/jsonm.git"
7 | bug-reports: "https://github.com/dbuenzli/jsonm/issues"
8 | tags: [ "json" "codec" "org:erratique" ]
9 | license: "ISC"
10 | depends: [
11 | "ocaml" {>= "4.01.0"}
12 | "ocamlfind" {build}
13 | "ocamlbuild" {build}
14 | "topkg" {build}
15 | "uchar"
16 | "uutf" {>= "1.0.0"}
17 | ]
18 | build:[[
19 | "ocaml" "pkg/pkg.ml" "build"
20 | "--pinned" "%{pinned}%" ]]
21 | synopsis: "Non-blocking streaming JSON codec for OCaml"
22 | description: """
23 | Jsonm is a non-blocking streaming codec to decode and encode the JSON
24 | data format. It can process JSON text without blocking on IO and
25 | without a complete in-memory representation of the data.
26 |
27 | The alternative "uncut" codec also processes whitespace and
28 | (non-standard) JSON with JavaScript comments.
29 |
30 | Jsonm is made of a single module and depends on [Uutf][uutf]. It is distributed
31 | under the ISC license.
32 |
33 | [uutf]: http://erratique.ch/software/uutf"""
34 | url {
35 | src: "http://erratique.ch/software/jsonm/releases/jsonm-1.0.1.tbz"
36 | checksum: "md5=e2ca39eaefd55b8d155c4f1ec5885311"
37 | }
38 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/menhir.20181113/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "francois.pottier@inria.fr"
3 | authors: [
4 | "François Pottier "
5 | "Yann Régis-Gianas "
6 | ]
7 | homepage: "http://gitlab.inria.fr/fpottier/menhir"
8 | dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git"
9 | bug-reports: "menhir@inria.fr"
10 | build: [
11 | [make "-f" "Makefile" "PREFIX=%{prefix}%" "USE_OCAMLFIND=true" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"]
12 | ]
13 | install: [
14 | [make "-f" "Makefile" "install" "PREFIX=%{prefix}%" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"]
15 | ]
16 | remove: [
17 | [make "-f" "Makefile" "uninstall" "PREFIX=%{prefix}%" "docdir=%{doc}%/menhir" "libdir=%{lib}%/menhir" "mandir=%{man}%/man1"]
18 | ]
19 | depends: [
20 | "ocaml" {>= "4.02"}
21 | "ocamlfind" {build}
22 | "ocamlbuild" {build}
23 | ]
24 | synopsis: "An LR(1) parser generator"
25 | url {
26 | src:
27 | "https://gitlab.inria.fr/fpottier/menhir/repository/20181113/archive.tar.gz"
28 | checksum: [
29 | "md5=69ce441a06ea131cd43e7b44c4303f3c"
30 | "sha512=4ddefcd71d305bfb933a4056da57e36c13c99ec6dfcc4695814798fbbd78b4d65828381ebcb0e58c4c0394105ac763af3d475474e05e408f7080315bc3cf6176"
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/merlin-extend.0.3/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Frederic Bour "
3 | authors: "Frederic Bour "
4 | homepage: "https://github.com/let-def/merlin-extend"
5 | bug-reports: "https://github.com/let-def/merlin-extend"
6 | license: "MIT"
7 | dev-repo: "git+https://github.com/let-def/merlin-extend.git"
8 | build: [make]
9 | install: [make "install"]
10 | remove: ["ocamlfind" "remove" "merlin_extend"]
11 | depends: [
12 | "ocaml" {>= "4.02.3"}
13 | "ocamlfind" {build}
14 | "cppo" {build}
15 | ]
16 | synopsis: "A protocol to provide custom frontend to Merlin"
17 | description: """
18 | This protocol allows to replace the OCaml frontend of Merlin.
19 | It extends what used to be done with the `-pp' flag to handle a few more cases."""
20 | flags: light-uninstall
21 | url {
22 | src: "https://github.com/let-def/merlin-extend/archive/v0.3.tar.gz"
23 | checksum: "md5=9c6dfd4f53328f02f12fcc265f4e2dda"
24 | }
25 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/num.1.1/files/findlib-install.patch:
--------------------------------------------------------------------------------
1 | From 7688bb4fea24463c92e9c4870acc08495a4c77cb Mon Sep 17 00:00:00 2001
2 | From: David Allsopp
3 | Date: Wed, 10 Jan 2018 15:20:46 +0000
4 | Subject: [PATCH] Provide findlib-install target
5 |
6 | Allows installing the entire library using ocamlfind.
7 | ---
8 | Makefile | 10 +++++++++-
9 | src/META | 17 -----------------
10 | src/META.in | 19 +++++++++++++++++++
11 | src/Makefile | 17 +++++++++++++++--
12 | 4 files changed, 43 insertions(+), 20 deletions(-)
13 | delete mode 100644 src/META
14 | create mode 100644 src/META.in
15 |
16 | diff --git a/Makefile b/Makefile
17 | index 6a5d08f..b40e588 100644
18 | --- a/Makefile
19 | +++ b/Makefile
20 | @@ -14,8 +14,16 @@ install:
21 | $(MAKE) -C src install
22 | $(MAKE) -C toplevel install
23 |
24 | +findlib-install:
25 | + $(MAKE) -C src findlib-install
26 | + $(MAKE) -C toplevel install
27 | +
28 | uninstall:
29 | $(MAKE) -C src uninstall
30 | $(MAKE) -C toplevel uninstall
31 |
32 | -.PHONY: all test clean install uninstall
33 | +findlib-uninstall:
34 | + $(MAKE) -C src findlib-uninstall
35 | + $(MAKE) -C toplevel uninstall
36 | +
37 | +.PHONY: all test clean install uninstall findlib-install findlib-uninstall
38 | diff --git a/src/META b/src/META
39 | deleted file mode 100644
40 | index 66ac170..0000000
41 | --- a/src/META
42 | +++ /dev/null
43 | @@ -1,17 +0,0 @@
44 | -# This META is the one provided by findlib when the "num" library was
45 | -# part of the core OCaml distribution. For backward compatibility,
46 | -# it installs into OCaml's standard library directory, not in a subdirectory
47 | -
48 | -requires = "num.core"
49 | -requires(toploop) = "num.core,num-top"
50 | -version = "1.0"
51 | -description = "Arbitrary-precision rational arithmetic"
52 | -package "core" (
53 | - directory = "^"
54 | - version = "1.0"
55 | - browse_interfaces = ""
56 | - archive(byte) = "nums.cma"
57 | - archive(native) = "nums.cmxa"
58 | - plugin(byte) = "nums.cma"
59 | - plugin(native) = "nums.cmxs"
60 | -)
61 | diff --git a/src/META.in b/src/META.in
62 | new file mode 100644
63 | index 0000000..b5678b7
64 | --- /dev/null
65 | +++ b/src/META.in
66 | @@ -0,0 +1,19 @@
67 | +# This META is the one provided by findlib when the "num" library was
68 | +# part of the core OCaml distribution. For backward compatibility,
69 | +# it is installed into OCaml's standard library directory. If the
70 | +# directory line below is removed, then it's installed in a
71 | +# subdirectory, as normal for a findlib package.
72 | +
73 | +requires = "num.core"
74 | +requires(toploop) = "num.core,num-top"
75 | +version = "1.0"
76 | +description = "Arbitrary-precision rational arithmetic"
77 | +package "core" (
78 | + directory = "^"
79 | + version = "1.0"
80 | + browse_interfaces = ""
81 | + archive(byte) = "nums.cma"
82 | + archive(native) = "nums.cmxa"
83 | + plugin(byte) = "nums.cma"
84 | + plugin(native) = "nums.cmxs"
85 | +)
86 | diff --git a/src/Makefile b/src/Makefile
87 | index 97dc074..ff271fe 100644
88 | --- a/src/Makefile
89 | +++ b/src/Makefile
90 | @@ -80,21 +80,34 @@ endif
91 | ifeq "$(NATDYNLINK)" "true"
92 | TOINSTALL+=nums.cmxs
93 | endif
94 | +ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
95 | TOINSTALL_STUBS=dllnums.$(SO)
96 | +else
97 | +TOINSTALL_STUBS=
98 | +endif
99 |
100 | install:
101 | + cp META.in META
102 | $(OCAMLFIND) install num META
103 | + rm -f META
104 | $(INSTALL_DATA) $(TOINSTALL) $(STDLIBDIR)
105 | ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
106 | $(INSTALL_DLL) $(TOINSTALL_STUBS) $(STDLIBDIR)/stublibs
107 | endif
108 |
109 | -uninstall:
110 | +findlib-install:
111 | + grep -Fv '^' META.in > META
112 | + $(OCAMLFIND) install num META $(TOINSTALL) $(TOINSTALL_STUBS)
113 | + rm -f META
114 | +
115 | +findlib-uninstall:
116 | + $(OCAMLFIND) remove num
117 | +
118 | +uninstall: findlib-uninstall
119 | cd $(STDLIBDIR) && rm -f $(TOINSTALL)
120 | ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
121 | cd $(STDLIBDIR)/stublibs && rm -f $(TOINSTALL_STUBS)
122 | endif
123 | - $(OCAMLFIND) remove num
124 |
125 | clean:
126 | rm -f *.cm[ioxta] *.cmx[as] *.cmti *.$(O) *.$(A) *.$(SO)
127 | --
128 | 2.14.1
129 |
130 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/num.1.1/files/installation-warning.patch:
--------------------------------------------------------------------------------
1 | From db8d748b2cad0adc2698e9fcf28727083a711bae Mon Sep 17 00:00:00 2001
2 | From: David Allsopp
3 | Date: Wed, 24 Jan 2018 16:01:56 +0000
4 | Subject: [PATCH] Warn about installations broken by previous faulty package
5 |
6 | ---
7 | Makefile | 33 +++++++++++++++++++++++++++++++++
8 | 1 file changed, 33 insertions(+)
9 |
10 | diff --git a/Makefile b/Makefile
11 | index b40e588..d4dcd70 100644
12 | --- a/Makefile
13 | +++ b/Makefile
14 | @@ -14,9 +14,42 @@ install:
15 | $(MAKE) -C src install
16 | $(MAKE) -C toplevel install
17 |
18 | +OCAMLFIND_DIR:=$(dir $(shell command -v ocamlfind 2>/dev/null))
19 | +OCAMLC_DIR:=$(dir $(shell command -v ocamlc 2>/dev/null))
20 | +NUM_INSTALLED:=$(shell ocamlfind query num 2>/dev/null)
21 | +
22 | +ifeq ($(NUM_INSTALLED),)
23 | +# The num findlib package is not already present - wohoo!
24 | +OUR_FAULT=no
25 | +else
26 | +ifeq ($(OCAMLFIND_DIR),$(OCAMLC_DIR))
27 | +# The num findlib package is present, but ocamlc and ocamlfind are in the
28 | +# same place, which means that either we're looking at a system-installed
29 | +# ocamlfind (which isn't supported), or the user has done something else
30 | +# nefarious and doesn't deserve our sympathy (or, at least, our potentially
31 | +# unhelpful advice)
32 | +OUR_FAULT=no
33 | +else
34 | +# The num findlib package package is present, and ocamlc and ocamlfind reside
35 | +# in different directories, which means that we're almost certainly looking at
36 | +# a system switch which has been damaged by a previous num package installation
37 | +# on an OS which didn't protect the system lib directory.
38 | +OUR_FAULT=probably
39 | +endif
40 | +endif
41 | +
42 | findlib-install:
43 | +ifeq ($(OUR_FAULT),no)
44 | $(MAKE) -C src findlib-install
45 | $(MAKE) -C toplevel install
46 | +else
47 | + @echo "\033[0;31m[ERROR]\033[m It appears that the num library was previously installed to your system"
48 | + @echo " compiler's lib directory, probably by a faulty opam package."
49 | + @echo " You will need to remove arith_flags.*, arith_status.*, big_int.*,"
50 | + @echo " int_misc.*, nat.*, num.*, ratio.*, nums.*, libnums.* and"
51 | + @echo " stublibs/dllnums.* from $(shell ocamlc -where)."
52 | + @false
53 | +endif
54 |
55 | uninstall:
56 | $(MAKE) -C src uninstall
57 | --
58 | 2.14.1
59 |
60 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/num.1.1/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | name: "num"
3 | version: "1.1"
4 | maintainer: "Xavier Leroy "
5 | authors: [
6 | "Valérie Ménissier-Morain"
7 | "Pierre Weis"
8 | "Xavier Leroy"
9 | ]
10 | license: "LGPL 2.1 with OCaml linking exception"
11 |
12 | homepage: "https://github.com/ocaml/num/"
13 | bug-reports: "https://github.com/ocaml/num/issues"
14 | dev-repo: "git+https://github.com/ocaml/num.git"
15 | build: [
16 | [make]
17 | ]
18 | install: [
19 | make
20 | "install" {!ocaml:preinstalled}
21 | "findlib-install" {ocaml:preinstalled}
22 | ]
23 | remove: [
24 | make
25 | "uninstall" {!ocaml:preinstalled}
26 | "findlib-uninstall" {ocaml:preinstalled}
27 | ]
28 | depends: [
29 | "ocaml" {>= "4.06.0"}
30 | "ocamlfind" {build & >= "1.7.3"}
31 | ]
32 | conflicts: [ "base-num" ]
33 | patches: [ "findlib-install.patch" "installation-warning.patch" ]
34 | synopsis:
35 | "The legacy Num library for arbitrary-precision integer and rational arithmetic"
36 | extra-files: [
37 | ["installation-warning.patch" "md5=93c92bf6da6bae09d068da42b1bbaaac"]
38 | ["findlib-install.patch" "md5=3163a4c3f8dd084653eeb64d95311a2a"]
39 | ]
40 | url {
41 | src: "https://github.com/ocaml/num/archive/v1.1.tar.gz"
42 | checksum: "md5=710cbe18b144955687a03ebab439ff2b"
43 | }
44 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/ocaml-migrate-parsetree.1.2.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "frederic.bour@lakaban.net"
3 | authors: [
4 | "Frédéric Bour "
5 | "Jérémie Dimino "
6 | ]
7 | license: "LGPL-2.1"
8 | homepage: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree"
9 | bug-reports: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/issues"
10 | dev-repo: "git+https://github.com/ocaml-ppx/ocaml-migrate-parsetree.git"
11 | doc: "https://ocaml-ppx.github.io/ocaml-migrate-parsetree/"
12 | tags: [ "syntax" "org:ocamllabs" ]
13 | build: [
14 | ["dune" "build" "-p" name "-j" jobs]
15 | ]
16 | depends: [
17 | "result"
18 | "ppx_derivers"
19 | "dune" {build & >= "1.6.0"}
20 | "ocaml" {>= "4.02.3" & < "4.08.0"}
21 | ]
22 | synopsis: "Convert OCaml parsetrees between different versions"
23 | description: """
24 | Convert OCaml parsetrees between different versions
25 |
26 | This library converts parsetrees, outcometree and ast mappers between
27 | different OCaml versions. High-level functions help making PPX
28 | rewriters independent of a compiler version.
29 | """
30 | url {
31 | src:
32 | "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v1.2.0/ocaml-migrate-parsetree-v1.2.0.tbz"
33 | checksum: "md5=cc6fb09ad6f99156c7dba47711c62c6f"
34 | }
35 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/ocamlbuild.0.14.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Gabriel Scherer "
3 | authors: ["Nicolas Pouillard" "Berke Durak"]
4 | homepage: "https://github.com/ocaml/ocamlbuild/"
5 | bug-reports: "https://github.com/ocaml/ocamlbuild/issues"
6 | license: "LGPL-2 with OCaml linking exception"
7 | doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc"
8 | dev-repo: "git+https://github.com/ocaml/ocamlbuild.git"
9 | build: [
10 | [
11 | make
12 | "-f"
13 | "configure.make"
14 | "all"
15 | "OCAMLBUILD_PREFIX=%{prefix}%"
16 | "OCAMLBUILD_BINDIR=%{bin}%"
17 | "OCAMLBUILD_LIBDIR=%{lib}%"
18 | "OCAMLBUILD_MANDIR=%{man}%"
19 | "OCAML_NATIVE=%{ocaml:native}%"
20 | "OCAML_NATIVE_TOOLS=%{ocaml:native}%"
21 | ]
22 | [make "check-if-preinstalled" "all" "opam-install"]
23 | ]
24 | conflicts: [
25 | "base-ocamlbuild"
26 | "ocamlfind" {< "1.6.2"}
27 | ]
28 | synopsis:
29 | "OCamlbuild is a build system with builtin rules to easily build most OCaml projects."
30 | depends: [
31 | "ocaml" {>= "4.03"}
32 | ]
33 | url {
34 | src: "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz"
35 | checksum: "sha256=87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78"
36 | }
37 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/ocamlfind.1.8.0/files/no-awk-check.patch:
--------------------------------------------------------------------------------
1 | commit 40142bc941e6e308686e86be6fc2da92f346a22f
2 | Author: Kate
3 | Date: Tue Mar 19 16:29:06 2019 +0000
4 |
5 | Remove awk from the set of checked unix tools as it's not used anywhere
6 |
7 | diff --git a/configure b/configure
8 | index d9b587c..20e8dca 100755
9 | --- a/configure
10 | +++ b/configure
11 | @@ -184,7 +184,7 @@ echo "Configuring core..."
12 |
13 | # Some standard Unix tools must be available:
14 |
15 | -for tool in sed awk ocaml ocamlc uname rm make cat m4 dirname basename; do
16 | +for tool in sed ocaml ocamlc uname rm make cat m4 dirname basename; do
17 | if in_path $tool; then true; else
18 | echo "configure: $tool not in PATH; this is required" 1>&2
19 | exit 1
20 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/ocamlfind.1.8.0/files/ocaml-stub:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | BINDIR=$(dirname "$(command -v ocamlc)")
4 | "$BINDIR/ocaml" -I "$OCAML_TOPLEVEL_PATH" "$@"
5 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/ocamlfind.1.8.0/files/ocamlfind.install:
--------------------------------------------------------------------------------
1 | bin: [
2 | "src/findlib/ocamlfind" {"ocamlfind"}
3 | "?src/findlib/ocamlfind_opt" {"ocamlfind"}
4 | "?tools/safe_camlp4"
5 | ]
6 | toplevel: ["src/findlib/topfind"]
7 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/ocamlfind.1.8.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Thomas Gazagnaire "
3 | homepage: "http://projects.camlcity.org/projects/findlib.html"
4 | bug-reports: "https://gitlab.camlcity.org/gerd/lib-findlib/issues"
5 | dev-repo: "git+https://gitlab.camlcity.org/gerd/lib-findlib.git"
6 | patches: ["no-awk-check.patch"]
7 | build: [
8 | [
9 | "./configure"
10 | "-bindir"
11 | bin
12 | "-sitelib"
13 | lib
14 | "-mandir"
15 | man
16 | "-config"
17 | "%{lib}%/findlib.conf"
18 | "-no-custom"
19 | "-no-topfind" {ocaml:preinstalled}
20 | ]
21 | [make "all"]
22 | [make "opt"] {ocaml:native}
23 | ]
24 | install: [
25 | [make "install"]
26 | ["install" "-m" "0755" "ocaml-stub" "%{bin}%/ocaml"] {ocaml:preinstalled}
27 | ]
28 | remove: [
29 | ["ocamlfind" "remove" "bytes"]
30 | [
31 | "./configure"
32 | "-bindir"
33 | bin
34 | "-sitelib"
35 | lib
36 | "-mandir"
37 | man
38 | "-config"
39 | "%{lib}%/findlib.conf"
40 | "-no-topfind" {ocaml:preinstalled}
41 | ]
42 | [make "uninstall"]
43 | ["rm" "-f" "%{bin}%/ocaml"] {ocaml:preinstalled}
44 | ]
45 | depends: [
46 | "ocaml" {>= "4.00.0"}
47 | "conf-m4" {build}
48 | ]
49 | synopsis: "A library manager for OCaml"
50 | description: """
51 | Findlib is a library manager for OCaml. It provides a convention how
52 | to store libraries, and a file format ("META") to describe the
53 | properties of libraries. There is also a tool (ocamlfind) for
54 | interpreting the META files, so that it is very easy to use libraries
55 | in programs and scripts."""
56 | authors: "Gerd Stolpmann "
57 | extra-files: [
58 | ["ocamlfind.install" "md5=06f2c282ab52d93aa6adeeadd82a2543"]
59 | ["ocaml-stub" "md5=181f259c9e0bad9ef523e7d4abfdf87a"]
60 | ["no-awk-check.patch" "md5=0378123bf1a45fccdea434c053ddb687"]
61 | ]
62 | url {
63 | src: "http://download.camlcity.org/download/findlib-1.8.0.tar.gz"
64 | checksum: "md5=a710c559667672077a93d34eb6a42e5b"
65 | mirrors: "http://download2.camlcity.org/download/findlib-1.8.0.tar.gz"
66 | }
67 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/ppx_derivers.1.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "jeremie@dimino.org"
3 | authors: ["Jérémie Dimino"]
4 | license: "BSD3"
5 | homepage: "https://github.com/ocaml-ppx/ppx_derivers"
6 | bug-reports: "https://github.com/ocaml-ppx/ppx_derivers/issues"
7 | dev-repo: "git://github.com/ocaml-ppx/ppx_derivers.git"
8 | build: [
9 | ["jbuilder" "build" "-p" name "-j" jobs]
10 | ]
11 | depends: [
12 | "ocaml"
13 | "jbuilder" {build & >= "1.0+beta7"}
14 | ]
15 | synopsis: "Shared [@@deriving] plugin registry"
16 | description: """
17 | Ppx_derivers is a tiny package whose sole purpose is to allow
18 | ppx_deriving and ppx_type_conv to inter-operate gracefully when linked
19 | as part of the same ocaml-migrate-parsetree driver."""
20 | url {
21 | src: "https://github.com/ocaml-ppx/ppx_derivers/archive/1.0.tar.gz"
22 | checksum: "md5=4ddce8f43fdb9b0ef0ab6a7cbfebc3e3"
23 | }
24 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/ppx_tools_versioned.5.2.1/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "frederic.bour@lakaban.net"
3 | authors: [
4 | "Frédéric Bour "
5 | "Alain Frisch "
6 | ]
7 | license: "MIT"
8 | homepage: "https://github.com/let-def/ppx_tools_versioned"
9 | bug-reports: "https://github.com/let-def/ppx_tools_versioned/issues"
10 | dev-repo: "git://github.com/let-def/ppx_tools_versioned.git"
11 | tags: [ "syntax" ]
12 | build: [
13 | ["jbuilder" "subst" "-p" name] {pinned}
14 | ["jbuilder" "build" "-p" name "-j" jobs]
15 | ["jbuilder" "runtest" "-p" name "-j" jobs] {with-test}
16 | ]
17 | depends: [
18 | "ocaml" {>= "4.02.0"}
19 | "jbuilder" {build & >= "1.0+beta17"}
20 | "ocaml-migrate-parsetree" {>= "1.0.10"}
21 | ]
22 | synopsis: "A variant of ppx_tools based on ocaml-migrate-parsetree"
23 | url {
24 | src:
25 | "https://github.com/ocaml-ppx/ppx_tools_versioned/archive/5.2.1.tar.gz"
26 | checksum: "md5=1ae6ae43ec161fbbf12c2b4d3a7e26f5"
27 | }
28 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/result.1.3/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/janestreet/result"
5 | dev-repo: "git+https://github.com/janestreet/result.git"
6 | bug-reports: "https://github.com/janestreet/result/issues"
7 | license: "BSD3"
8 | build: [["jbuilder" "build" "-p" name "-j" jobs]]
9 | depends: [
10 | "ocaml"
11 | "jbuilder" {build & >= "1.0+beta11"}
12 | ]
13 | synopsis: "Compatibility Result module"
14 | description: """
15 | Projects that want to use the new result type defined in OCaml >= 4.03
16 | while staying compatible with older version of OCaml should use the
17 | Result module defined in this library."""
18 | url {
19 | src:
20 | "https://github.com/janestreet/result/releases/download/1.3/result-1.3.tbz"
21 | checksum: "md5=4beebefd41f7f899b6eeba7414e7ae01"
22 | }
23 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/sexplib.v0.10.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "opensource@janestreet.com"
3 | authors: ["Jane Street Group, LLC "]
4 | homepage: "https://github.com/janestreet/sexplib"
5 | bug-reports: "https://github.com/janestreet/sexplib/issues"
6 | dev-repo: "git+https://github.com/janestreet/sexplib.git"
7 | license: "Apache-2.0"
8 | build: [
9 | ["jbuilder" "build" "-p" name "-j" jobs]
10 | ]
11 | depends: [
12 | "ocaml" {>= "4.04.1"}
13 | "jbuilder" {build & >= "1.0+beta12"}
14 | "num"
15 | ]
16 | conflicts: [
17 | "sexplib0"
18 | ]
19 | synopsis: "Library for serializing OCaml values to and from S-expressions"
20 | description: """
21 | Part of Jane Street's Core library
22 | The Core suite of libraries is an industrial strength alternative to
23 | OCaml's standard library that was developed by Jane Street, the
24 | largest industrial user of OCaml."""
25 | url {
26 | src:
27 | "https://ocaml.janestreet.com/ocaml-core/v0.10/files/sexplib-v0.10.0.tar.gz"
28 | checksum: "md5=b8f5db21a2b19aadc753c6e626019068"
29 | }
30 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/topkg.1.0.0/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Daniel Bünzli "
3 | authors: ["Daniel Bünzli "]
4 | homepage: "http://erratique.ch/software/topkg"
5 | doc: "http://erratique.ch/software/topkg/doc"
6 | license: "ISC"
7 | dev-repo: "git+http://erratique.ch/repos/topkg.git"
8 | bug-reports: "https://github.com/dbuenzli/topkg/issues"
9 | tags: ["packaging" "ocamlbuild" "org:erratique"]
10 | depends: [
11 | "ocaml" {>= "4.01.0"}
12 | "ocamlfind" {build & >= "1.6.1"}
13 | "ocamlbuild"
14 | "result" ]
15 | build: [[
16 | "ocaml" "pkg/pkg.ml" "build"
17 | "--pkg-name" name
18 | "--dev-pkg" "%{pinned}%" ]]
19 | synopsis: """The transitory OCaml software packager"""
20 | description: """\
21 |
22 | Topkg is a packager for distributing OCaml software. It provides an
23 | API to describe the files a package installs in a given build
24 | configuration and to specify information about the package's
25 | distribution, creation and publication procedures.
26 |
27 | The optional topkg-care package provides the `topkg` command line tool
28 | which helps with various aspects of a package's life cycle: creating
29 | and linting a distribution, releasing it on the WWW, publish its
30 | documentation, add it to the OCaml opam repository, etc.
31 |
32 | Topkg is distributed under the ISC license and has **no**
33 | dependencies. This is what your packages will need as a *build*
34 | dependency.
35 |
36 | Topkg-care is distributed under the ISC license it depends on
37 | [fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner],
38 | [webbrowser][webbrowser] and `opam-format`.
39 |
40 | [fmt]: http://erratique.ch/software/fmt
41 | [logs]: http://erratique.ch/software/logs
42 | [bos]: http://erratique.ch/software/bos
43 | [cmdliner]: http://erratique.ch/software/cmdliner
44 | [webbrowser]: http://erratique.ch/software/webbrowser
45 | """
46 | url {
47 | src: "http://erratique.ch/software/topkg/releases/topkg-1.0.0.tbz"
48 | checksum: "md5=e3d76bda06bf68cb5853caf6627da603"
49 | }
50 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/uchar.0.0.2/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Daniel Bünzli "
3 | authors: ["Daniel Bünzli "]
4 | homepage: "http://ocaml.org"
5 | doc: "https://ocaml.github.io/uchar/"
6 | dev-repo: "git+https://github.com/ocaml/uchar.git"
7 | bug-reports: "https://github.com/ocaml/uchar/issues"
8 | tags: [ "text" "character" "unicode" "compatibility" "org:ocaml.org" ]
9 | license: "typeof OCaml system"
10 | depends: [
11 | "ocaml" {>= "3.12.0"}
12 | "ocamlbuild" {build}
13 | ]
14 | build: [
15 | ["ocaml" "pkg/git.ml"]
16 | [
17 | "ocaml"
18 | "pkg/build.ml"
19 | "native=%{ocaml:native}%"
20 | "native-dynlink=%{ocaml:native-dynlink}%"
21 | ]
22 | ]
23 | synopsis: "Compatibility library for OCaml's Uchar module"
24 | description: """
25 | The `uchar` package provides a compatibility library for the
26 | [`Uchar`][1] module introduced in OCaml 4.03.
27 |
28 | The `uchar` package is distributed under the license of the OCaml
29 | compiler. See [LICENSE](LICENSE) for details.
30 |
31 | [1]: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Uchar.html"""
32 | url {
33 | src:
34 | "https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz"
35 | checksum: "md5=c9ba2c738d264c420c642f7bb1cf4a36"
36 | }
37 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/opam/uutf.1.0.2/opam:
--------------------------------------------------------------------------------
1 | opam-version: "2.0"
2 | maintainer: "Daniel Bünzli "
3 | authors: ["Daniel Bünzli "]
4 | homepage: "http://erratique.ch/software/uutf"
5 | doc: "http://erratique.ch/software/uutf/doc/Uutf"
6 | dev-repo: "git+http://erratique.ch/repos/uutf.git"
7 | bug-reports: "https://github.com/dbuenzli/uutf/issues"
8 | tags: [ "unicode" "text" "utf-8" "utf-16" "codec" "org:erratique" ]
9 | license: "ISC"
10 | depends: [
11 | "ocaml" {>= "4.01.0"}
12 | "ocamlfind" {build}
13 | "ocamlbuild" {build}
14 | "topkg" {build}
15 | "uchar"
16 | ]
17 | depopts: ["cmdliner"]
18 | conflicts: ["cmdliner" { < "0.9.6"} ]
19 | build: [[
20 | "ocaml" "pkg/pkg.ml" "build"
21 | "--pinned" "%{pinned}%"
22 | "--with-cmdliner" "%{cmdliner:installed}%" ]]
23 | synopsis: """Non-blocking streaming Unicode codec for OCaml"""
24 | description: """\
25 |
26 | Uutf is a non-blocking streaming codec to decode and encode the UTF-8,
27 | UTF-16, UTF-16LE and UTF-16BE encoding schemes. It can efficiently
28 | work character by character without blocking on IO. Decoders perform
29 | character position tracking and support newline normalization.
30 |
31 | Functions are also provided to fold over the characters of UTF encoded
32 | OCaml string values and to directly encode characters in OCaml
33 | Buffer.t values.
34 |
35 | Uutf has no dependency and is distributed under the ISC license.
36 | """
37 | url {
38 | archive: "http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz"
39 | checksum: "a7c542405a39630c689a82bd7ef2292c"
40 | }
41 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/overrides/opam__s__dune_opam__c__1.8.2_opam_override/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": [
3 | [
4 | "ocaml",
5 | "bootstrap.ml"
6 | ],
7 | [
8 | "./boot.exe",
9 | "--release",
10 | "-j",
11 | "4"
12 | ]
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/overrides/opam__s__merlin_extend_opam__c__0.3_opam_override/files/merlin-extend-winfix.patch:
--------------------------------------------------------------------------------
1 | --- ./extend_helper.ml
2 | +++ ./extend_helper.ml
3 | @@ -1,13 +1,6 @@
4 | -(*pp cppo -V OCAML:`ocamlc -version` *)
5 | open Parsetree
6 | open Extend_protocol
7 |
8 | -#if OCAML_VERSION < (4, 3, 0)
9 | -# define CONST_STRING Asttypes.Const_string
10 | -#else
11 | -# define CONST_STRING Parsetree.Pconst_string
12 | -#endif
13 | -
14 | (** Default implementation for [Reader_def.print_outcome] using
15 | [Oprint] from compiler-libs *)
16 | let print_outcome_using_oprint ppf = function
17 | @@ -28,7 +21,7 @@
18 | pstr_loc = Location.none;
19 | pstr_desc = Pstr_eval ({
20 | pexp_loc = Location.none;
21 | - pexp_desc = Pexp_constant (CONST_STRING (msg, None));
22 | + pexp_desc = Pexp_constant (Parsetree.Pconst_string (msg, None));
23 | pexp_attributes = [];
24 | }, []);
25 | }]
26 | @@ -112,7 +105,7 @@
27 | let msg = match payload with
28 | | PStr [{
29 | pstr_desc = Pstr_eval ({
30 | - pexp_desc = Pexp_constant (CONST_STRING (msg, _));
31 | + pexp_desc = Pexp_constant (Parsetree.Pconst_string (msg, _));
32 | }, _);
33 | }] -> msg
34 | | _ -> "Warning: extension produced an incorrect syntax-error node"
35 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/overrides/opam__s__merlin_extend_opam__c__0.3_opam_override/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": [
3 | [
4 | "bash",
5 | "-c",
6 | "#{os == 'windows' ? 'patch -p1 < merlin-extend-winfix.patch' : 'true'}"
7 | ],
8 | [
9 | "make"
10 | ]
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/overrides/opam__s__num_opam__c__1.1_opam_override/files/num-1.1.patch:
--------------------------------------------------------------------------------
1 | --- ./src/Makefile
2 | +++ ./src/Makefile
3 | @@ -80,7 +80,7 @@
4 | ifeq "$(NATDYNLINK)" "true"
5 | TOINSTALL+=nums.cmxs
6 | endif
7 | ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
8 | -TOINSTALL_STUBS=dllnums.$(SO)
9 | +TOINSTALL_STUBS=dllnums$(EXT_DLL)
10 | else
11 | TOINSTALL_STUBS=
12 | @@ -112,7 +112,7 @@
13 | endif
14 |
15 | clean:
16 | - rm -f *.cm[ioxta] *.cmx[as] *.cmti *.$(O) *.$(A) *.$(SO)
17 | + rm -f *.cm[ioxta] *.cmx[as] *.cmti *.$(O) *.$(A) *$(EXE_DLL)
18 |
19 | depend:
20 | $(OCAMLDEP) -slash *.mli *.ml > .depend
21 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/overrides/opam__s__num_opam__c__1.1_opam_override/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": [
3 | [
4 | "bash",
5 | "-c",
6 | "#{os == 'windows' ? 'patch -p1 < num-1.1.patch' : 'true'}"
7 | ],
8 | [
9 | "make"
10 | ]
11 | ],
12 | "install": [
13 | [
14 | "make",
15 | "findlib-install"
16 | ]
17 | ],
18 | "exportedEnv": {
19 | "CAML_LD_LIBRARY_PATH": {
20 | "val": "#{self.install / 'lib' / 'num' : $CAML_LD_LIBRARY_PATH}",
21 | "scope": "global"
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": [
3 | [
4 | "bash",
5 | "-c",
6 | "#{os == 'windows' ? 'patch -p1 < ocamlbuild-0.14.0.patch' : 'true'}"
7 | ],
8 | [
9 | "make",
10 | "-f",
11 | "configure.make",
12 | "all",
13 | "OCAMLBUILD_PREFIX=#{self.install}",
14 | "OCAMLBUILD_BINDIR=#{self.bin}",
15 | "OCAMLBUILD_LIBDIR=#{self.lib}",
16 | "OCAMLBUILD_MANDIR=#{self.man}",
17 | "OCAMLBUILD_NATIVE=true",
18 | "OCAMLBUILD_NATIVE_TOOLS=true"
19 | ],
20 | [
21 | "make",
22 | "check-if-preinstalled",
23 | "all",
24 | "#{os == 'windows' ? 'install' : 'opam-install'}"
25 | ]
26 | ]
27 | }
28 |
--------------------------------------------------------------------------------
/src/shared/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.0_opam_override/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": [
3 | [
4 | "bash",
5 | "-c",
6 | "#{os == 'windows' ? 'patch -p1 < findlib-1.8.0.patch' : 'true'}"
7 | ],
8 | [
9 | "./configure",
10 | "-bindir",
11 | "#{self.bin}",
12 | "-sitelib",
13 | "#{self.lib}",
14 | "-mandir",
15 | "#{self.man}",
16 | "-config",
17 | "#{self.lib}/findlib.conf",
18 | "-no-custom",
19 | "-no-topfind"
20 | ],
21 | [
22 | "make",
23 | "all"
24 | ],
25 | [
26 | "make",
27 | "opt"
28 | ]
29 | ],
30 | "install": [
31 | [
32 | "make",
33 | "install"
34 | ],
35 | [
36 | "install",
37 | "-m",
38 | "0755",
39 | "ocaml-stub",
40 | "#{self.bin}/ocaml"
41 | ],
42 | [
43 | "mkdir",
44 | "-p",
45 | "#{self.toplevel}"
46 | ],
47 | [
48 | "install",
49 | "-m",
50 | "0644",
51 | "src/findlib/topfind",
52 | "#{self.toplevel}/topfind"
53 | ]
54 | ],
55 | "exportedEnv": {
56 | "OCAML_TOPLEVEL_PATH": {
57 | "val": "#{self.toplevel}",
58 | "scope": "global"
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/shared/isomagic-shared.opam:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jaredly/isomagic-todos/1ad477a9cefeea57e63b64b1f60f898baf76dac8/src/shared/isomagic-shared.opam
--------------------------------------------------------------------------------
/src/shared/locked/.merlin:
--------------------------------------------------------------------------------
1 | EXCLUDE_QUERY_DIR
2 | B /Users/jared/clone/apps/isomagic-todos/src/shared/_esy/default/store/b/isomagic_shared-88da164f/default/locked/.All_types.objs/byte
3 | S .
4 | FLG -open All_types -w -40
5 |
--------------------------------------------------------------------------------
/src/shared/locked/LockedTypes.re:
--------------------------------------------------------------------------------
1 | [@ocaml.warning "-34"];
2 | module Types1 = {
3 | type _Types__id = int
4 | and _Types__text = string
5 | and _Types__todo =
6 | Types.todo = {
7 | text: _Types__text,
8 | id: _Types__id,
9 | completed: option(int),
10 | }
11 | and _Types__todos = list(_Types__todo);
12 | };
13 | let currentVersion = 1;
14 |
--------------------------------------------------------------------------------
/src/shared/locked/Types.re:
--------------------------------------------------------------------------------
1 |
2 | type id = int;
3 | type text = string;
4 |
5 | type person = {
6 | id,
7 | name: string,
8 | age: int,
9 | friends: list(int)
10 | };
11 |
12 | type todo = {
13 | text,
14 | id,
15 | completed: option(int)
16 | };
17 |
18 | type todos = list(todo);
19 |
20 | type new_todo = string;
21 |
--------------------------------------------------------------------------------
/src/shared/locked/dune:
--------------------------------------------------------------------------------
1 | (library (name All_types) (public_name isomagic-shared.types))
2 |
--------------------------------------------------------------------------------
/src/shared/server/.merlin:
--------------------------------------------------------------------------------
1 | EXCLUDE_QUERY_DIR
2 | B /Users/jared/clone/apps/isomagic-todos/src/shared/_esy/default/store/b/isomagic_shared-88da164f/default/locked/.All_types.objs/byte
3 | B /Users/jared/clone/apps/isomagic-todos/src/shared/_esy/default/store/b/isomagic_shared-88da164f/default/server/.Serde.objs/byte
4 | S ../locked
5 | S .
6 | FLG -open All_types
7 |
--------------------------------------------------------------------------------
/src/shared/server/Serde.re:
--------------------------------------------------------------------------------
1 | [@ocaml.warning "-34"];
2 | open LockedTypes;
3 | type target = Ezjsonm.value;
4 | module Version1 = {
5 | open Types1;
6 | let rec deserialize_Types____id:
7 | Ezjsonm.value => Belt.Result.t(_Types__id, list(string)) =
8 | value =>
9 | (
10 | number =>
11 | switch (number) {
12 | | `Float(number) => Belt.Result.Ok(int_of_float(number))
13 | | _ => Error(["Expected a float"])
14 | }
15 | )(
16 | value,
17 | )
18 | and deserialize_Types____text:
19 | Ezjsonm.value => Belt.Result.t(_Types__text, list(string)) =
20 | value =>
21 | (
22 | string =>
23 | switch (string) {
24 | | `String(string) => Belt.Result.Ok(string)
25 | | _ => Error(["epected a string"])
26 | }
27 | )(
28 | value,
29 | )
30 | and deserialize_Types____todo:
31 | Ezjsonm.value => Belt.Result.t(_Types__todo, list(string)) =
32 | record =>
33 | switch (record) {
34 | | `O(items) =>
35 | let inner = attr_completed => {
36 | let inner = attr_id => {
37 | let inner = attr_text =>
38 | Belt.Result.Ok(
39 | {text: attr_text, id: attr_id, completed: attr_completed}: _Types__todo,
40 | );
41 | switch (Belt.List.getAssoc(items, "text", (==))) {
42 | | None => Belt.Result.Error(["No attribute 'text'"])
43 | | Some(json) =>
44 | switch (deserialize_Types____text(json)) {
45 | | Belt.Result.Error(error) =>
46 | Belt.Result.Error(["attribute 'text'", ...error])
47 | | Belt.Result.Ok(data) => inner(data)
48 | }
49 | };
50 | };
51 | switch (Belt.List.getAssoc(items, "id", (==))) {
52 | | None => Belt.Result.Error(["No attribute 'id'"])
53 | | Some(json) =>
54 | switch (deserialize_Types____id(json)) {
55 | | Belt.Result.Error(error) =>
56 | Belt.Result.Error(["attribute 'id'", ...error])
57 | | Belt.Result.Ok(data) => inner(data)
58 | }
59 | };
60 | };
61 | switch (Belt.List.getAssoc(items, "completed", (==))) {
62 | | None => inner(None)
63 | | Some(json) =>
64 | switch (
65 | (
66 | (
67 | (transformer, option) =>
68 | switch (option) {
69 | | `Null => Belt.Result.Ok(None)
70 | | _ =>
71 | switch (transformer(option)) {
72 | | Belt.Result.Error(error) =>
73 | Belt.Result.Error(["optional value", ...error])
74 | | Belt.Result.Ok(value) => Belt.Result.Ok(Some(value))
75 | }
76 | }
77 | )(
78 | number =>
79 | switch (number) {
80 | | `Float(number) => Belt.Result.Ok(int_of_float(number))
81 | | _ => Error(["Expected a float"])
82 | }
83 | )
84 | )(
85 | json,
86 | )
87 | ) {
88 | | Belt.Result.Error(error) =>
89 | Belt.Result.Error(["attribute 'completed'", ...error])
90 | | Belt.Result.Ok(data) => inner(data)
91 | }
92 | };
93 | | _ => Belt.Result.Error(["Expected an object"])
94 | }
95 | and deserialize_Types____todos:
96 | Ezjsonm.value => Belt.Result.t(_Types__todos, list(string)) =
97 | value =>
98 | (
99 | list =>
100 | switch (list) {
101 | | `A(items) =>
102 | let transformer = deserialize_Types____todo;
103 | let rec loop = (collected, items) =>
104 | switch (items) {
105 | | [] => Belt.Result.Ok(Belt.List.reverse(collected))
106 | | [one, ...rest] =>
107 | switch (transformer(one)) {
108 | | Belt.Result.Error(error) =>
109 | Belt.Result.Error(["list item", ...error])
110 | | Belt.Result.Ok(value) => loop([value, ...collected], rest)
111 | }
112 | };
113 | loop([], items);
114 | | _ => Belt.Result.Error(["expected an array"])
115 | }
116 | )(
117 | value,
118 | )
119 | and serialize_Types____id: _Types__id => Ezjsonm.value =
120 | value => (i => `Float(float_of_int(i)))(value)
121 | and serialize_Types____text: _Types__text => Ezjsonm.value =
122 | value => (s => `String(s))(value)
123 | and serialize_Types____todo: _Types__todo => Ezjsonm.value =
124 | record =>
125 | `O([
126 | ("text", serialize_Types____text(record.text)),
127 | ("id", serialize_Types____id(record.id)),
128 | (
129 | "completed",
130 | (
131 | (
132 | transformer =>
133 | fun
134 | | None => `Null
135 | | Some(v) => transformer(v)
136 | )(
137 | i =>
138 | `Float(float_of_int(i))
139 | )
140 | )(
141 | record.completed,
142 | ),
143 | ),
144 | ])
145 | and serialize_Types____todos: _Types__todos => Ezjsonm.value =
146 | value =>
147 | (list => `A(Belt.List.map(list, serialize_Types____todo)))(value);
148 | };
149 | module Current = Version1;
150 | let parseVersion = json =>
151 | switch (json) {
152 | | `O(items) =>
153 | switch ((Belt.List.getAssoc(items))("$schemaVersion", (==))) {
154 | | Some(`Float(schemaVersion)) =>
155 | [@implicit_arity] Belt.Result.Ok(int_of_float(schemaVersion), json)
156 | | Some(_) => Belt.Result.Error("Invalid schema version - expected number")
157 | | None => Belt.Result.Error("No $schemaVersion")
158 | }
159 | | `A([`Float(version), payload]) =>
160 | [@implicit_arity] Belt.Result.Ok(int_of_float(version), payload)
161 | | _ => Belt.Result.Error("Not wrapped in a version")
162 | };
163 | let wrapWithVersion = (version, payload) =>
164 | switch (payload) {
165 | | `O(items) =>
166 | `O([("$schemaVersion", `Float(float_of_int(version))), ...items])
167 | | _ => `A([`Float(float_of_int(version)), payload])
168 | };
169 | let serializeTodo = data =>
170 | wrapWithVersion(currentVersion, Version1.serialize_Types____todo(data))
171 | and deserializeTodo = data =>
172 | switch (parseVersion(data)) {
173 | | Belt.Result.Error(err) => Belt.Result.Error([err])
174 | | [@implicit_arity] Ok(version, data) =>
175 | switch (version) {
176 | | 1 =>
177 | switch (Version1.deserialize_Types____todo(data)) {
178 | | Belt.Result.Error(error) => Belt.Result.Error(error)
179 | | Ok(data) => Belt.Result.Ok(data)
180 | }
181 | | _ =>
182 | Belt.Result.Error(["Unexpected version " ++ string_of_int(version)])
183 | }
184 | };
185 | let serializeTodos = data =>
186 | wrapWithVersion(currentVersion, Version1.serialize_Types____todos(data))
187 | and deserializeTodos = data =>
188 | switch (parseVersion(data)) {
189 | | Belt.Result.Error(err) => Belt.Result.Error([err])
190 | | [@implicit_arity] Ok(version, data) =>
191 | switch (version) {
192 | | 1 =>
193 | switch (Version1.deserialize_Types____todos(data)) {
194 | | Belt.Result.Error(error) => Belt.Result.Error(error)
195 | | Ok(data) => Belt.Result.Ok(data)
196 | }
197 | | _ =>
198 | Belt.Result.Error(["Unexpected version " ++ string_of_int(version)])
199 | }
200 | };
201 | let serializeId = data =>
202 | wrapWithVersion(currentVersion, Version1.serialize_Types____id(data))
203 | and deserializeId = data =>
204 | switch (parseVersion(data)) {
205 | | Belt.Result.Error(err) => Belt.Result.Error([err])
206 | | [@implicit_arity] Ok(version, data) =>
207 | switch (version) {
208 | | 1 =>
209 | switch (Version1.deserialize_Types____id(data)) {
210 | | Belt.Result.Error(error) => Belt.Result.Error(error)
211 | | Ok(data) => Belt.Result.Ok(data)
212 | }
213 | | _ =>
214 | Belt.Result.Error(["Unexpected version " ++ string_of_int(version)])
215 | }
216 | };
217 | let serializeText = data =>
218 | wrapWithVersion(currentVersion, Version1.serialize_Types____text(data))
219 | and deserializeText = data =>
220 | switch (parseVersion(data)) {
221 | | Belt.Result.Error(err) => Belt.Result.Error([err])
222 | | [@implicit_arity] Ok(version, data) =>
223 | switch (version) {
224 | | 1 =>
225 | switch (Version1.deserialize_Types____text(data)) {
226 | | Belt.Result.Error(error) => Belt.Result.Error(error)
227 | | Ok(data) => Belt.Result.Ok(data)
228 | }
229 | | _ =>
230 | Belt.Result.Error(["Unexpected version " ++ string_of_int(version)])
231 | }
232 | };
233 | module Modules = {
234 | module Todo = {
235 | type t = Types1._Types__todo;
236 | let serialize = serializeTodo;
237 | let deserialize = deserializeTodo;
238 | };
239 | module Todos = {
240 | type t = Types1._Types__todos;
241 | let serialize = serializeTodos;
242 | let deserialize = deserializeTodos;
243 | };
244 | module Id = {
245 | type t = Types1._Types__id;
246 | let serialize = serializeId;
247 | let deserialize = deserializeId;
248 | };
249 | module Text = {
250 | type t = Types1._Types__text;
251 | let serialize = serializeText;
252 | let deserialize = deserializeText;
253 | };
254 | };
255 |
--------------------------------------------------------------------------------
/src/shared/server/dune:
--------------------------------------------------------------------------------
1 | (library (name Serde) (public_name isomagic-shared.Serde)
2 | (flags -open All_types)
3 | (libraries All_types ezjsonm belt)
4 | )
--------------------------------------------------------------------------------
/types.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schemaVersion": 2,
3 | "version": 1,
4 | "lockedTypes": "./src/shared/LockedTypes.re",
5 | "engines": {
6 | "Js.Json": {
7 | "output": "./src/client/Serde.re"
8 | },
9 | "ezjsonm": {
10 | "output": "./src/server/Serde.re"
11 | }
12 | },
13 | "entries": [
14 | { "file": "./src/shared/Types.re", "type": "todo" },
15 | { "file": "./src/shared/Types.re", "type": "todos" },
16 | { "file": "./src/shared/Types.re", "type": "id" },
17 | { "file": "./src/shared/Types.re", "type": "text" }
18 | ],
19 | "custom": []
20 | }
21 |
--------------------------------------------------------------------------------
/types.lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schemaVersion": 2,
3 | "versions": [
4 | {
5 | "entries": [
6 | {
7 | "moduleName": "Types",
8 | "modulePath": [],
9 | "engines": [
10 | [
11 | ["ezjsonm"],
12 | 1
13 | ],
14 | [
15 | ["Js.Json"],
16 | 1
17 | ]
18 | ],
19 | "name": "todo"
20 | },
21 | {
22 | "moduleName": "Types",
23 | "modulePath": [],
24 | "engines": [
25 | [
26 | ["ezjsonm"],
27 | 1
28 | ],
29 | [
30 | ["Js.Json"],
31 | 1
32 | ]
33 | ],
34 | "name": "todos"
35 | },
36 | {
37 | "moduleName": "Types",
38 | "modulePath": [],
39 | "engines": [
40 | [
41 | ["ezjsonm"],
42 | 1
43 | ],
44 | [
45 | ["Js.Json"],
46 | 1
47 | ]
48 | ],
49 | "name": "id"
50 | },
51 | {
52 | "moduleName": "Types",
53 | "modulePath": [],
54 | "engines": [
55 | [
56 | ["ezjsonm"],
57 | 1
58 | ],
59 | [
60 | ["Js.Json"],
61 | 1
62 | ]
63 | ],
64 | "name": "text"
65 | }
66 | ],
67 | "typeMap": [
68 | [
69 | [
70 | "Types",
71 | [],
72 | "id"
73 | ],
74 | [
75 | [],
76 | {
77 | "name": "id",
78 | "variables": [],
79 | "body": [
80 | "Expr",
81 | [
82 | "Reference",
83 | [
84 | "Builtin",
85 | "int"
86 | ],
87 | []
88 | ]
89 | ]
90 | }
91 | ]
92 | ],
93 | [
94 | [
95 | "Types",
96 | [],
97 | "text"
98 | ],
99 | [
100 | [],
101 | {
102 | "name": "text",
103 | "variables": [],
104 | "body": [
105 | "Expr",
106 | [
107 | "Reference",
108 | [
109 | "Builtin",
110 | "string"
111 | ],
112 | []
113 | ]
114 | ]
115 | }
116 | ]
117 | ],
118 | [
119 | [
120 | "Types",
121 | [],
122 | "todo"
123 | ],
124 | [
125 | [],
126 | {
127 | "name": "todo",
128 | "variables": [],
129 | "body": [
130 | "Record",
131 | [
132 | [
133 | "text",
134 | [
135 | "Reference",
136 | [
137 | "Public",
138 | [
139 | "Types",
140 | [],
141 | "text"
142 | ]
143 | ],
144 | []
145 | ]
146 | ],
147 | [
148 | "id",
149 | [
150 | "Reference",
151 | [
152 | "Public",
153 | [
154 | "Types",
155 | [],
156 | "id"
157 | ]
158 | ],
159 | []
160 | ]
161 | ],
162 | [
163 | "completed",
164 | [
165 | "Reference",
166 | [
167 | "Builtin",
168 | "option"
169 | ],
170 | [
171 | [
172 | "Reference",
173 | [
174 | "Builtin",
175 | "int"
176 | ],
177 | []
178 | ]
179 | ]
180 | ]
181 | ]
182 | ]
183 | ]
184 | }
185 | ]
186 | ],
187 | [
188 | [
189 | "Types",
190 | [],
191 | "todos"
192 | ],
193 | [
194 | [],
195 | {
196 | "name": "todos",
197 | "variables": [],
198 | "body": [
199 | "Expr",
200 | [
201 | "Reference",
202 | [
203 | "Builtin",
204 | "list"
205 | ],
206 | [
207 | [
208 | "Reference",
209 | [
210 | "Public",
211 | [
212 | "Types",
213 | [],
214 | "todo"
215 | ]
216 | ],
217 | []
218 | ]
219 | ]
220 | ]
221 | ]
222 | }
223 | ]
224 | ]
225 | ]
226 | }
227 | ]
228 | }
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | mode: 'development',
3 | entry: './lib/js/src/client/app.js',
4 | output: {
5 | path: __dirname +'/public',
6 | filename: 'bundle.js',
7 | },
8 | };
9 |
--------------------------------------------------------------------------------