├── .all-contributorsrc ├── .github └── workflows │ ├── docs.yml_ │ ├── macos.yml │ ├── pr_check.yml │ ├── release.yml_ │ ├── ubuntu.yml │ └── windows.yml ├── .gitignore ├── LICENSE ├── README.md ├── clean-npm-release.sh ├── docs ├── fetch-native-lwt │ ├── dune │ └── index.mld └── index.html ├── dune ├── dune-project ├── fetch-core.esy.lock ├── .gitattributes ├── .gitignore ├── index.json ├── opam │ ├── atd.2.0.0 │ │ └── opam │ ├── atdgen-runtime.2.0.0 │ │ └── opam │ ├── atdgen.2.0.0 │ │ └── opam │ ├── base-threads.base │ │ └── opam │ ├── base-unix.base │ │ └── opam │ ├── biniou.1.2.1 │ │ └── opam │ ├── conf-m4.1 │ │ └── opam │ ├── cppo.1.6.6 │ │ └── opam │ ├── dune.2.4.0 │ │ └── opam │ ├── easy-format.1.3.2 │ │ └── opam │ ├── fix.20200131 │ │ └── opam │ ├── jbuilder.1.0+beta20.2 │ │ └── opam │ ├── junit.2.0.2 │ │ └── opam │ ├── menhir.20200211 │ │ └── opam │ ├── menhirLib.20200211 │ │ └── opam │ ├── menhirSdk.20200211 │ │ └── opam │ ├── merlin-extend.0.5 │ │ └── opam │ ├── ocaml-migrate-parsetree.1.6.0 │ │ └── opam │ ├── ocamlbuild.0.14.0 │ │ └── opam │ ├── ocamlfind.1.8.1 │ │ ├── files │ │ │ ├── ocaml-stub │ │ │ └── ocamlfind.install │ │ └── opam │ ├── ppx_derivers.1.2.1 │ │ └── opam │ ├── ptime.0.8.5 │ │ └── opam │ ├── re.1.9.0 │ │ └── opam │ ├── result.1.5 │ │ └── opam │ ├── seq.base │ │ ├── files │ │ │ ├── META.seq │ │ │ └── seq.install │ │ └── opam │ ├── topkg.1.0.1 │ │ └── opam │ ├── tyxml.4.4.0 │ │ └── opam │ ├── uchar.0.0.2 │ │ └── opam │ ├── uutf.1.0.2 │ │ └── opam │ └── yojson.1.7.0 │ │ └── opam └── overrides │ ├── opam__s__menhir_opam__c__20200211_opam_override │ └── 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.1_opam_override │ ├── files │ └── findlib-1.8.1.patch │ └── package.json ├── fetch-core.json ├── fetch-core.opam ├── fetch-native-lwt.esy.lock ├── .gitattributes ├── .gitignore ├── index.json ├── opam │ ├── angstrom.0.14.1 │ │ └── opam │ ├── astring.0.8.3 │ │ └── opam │ ├── atd.2.2.1 │ │ └── opam │ ├── atdgen-runtime.2.2.1 │ │ └── opam │ ├── atdgen.2.2.1 │ │ └── opam │ ├── base-bytes.base │ │ └── opam │ ├── base-threads.base │ │ └── opam │ ├── base-unix.base │ │ └── opam │ ├── base64.3.4.0 │ │ └── opam │ ├── bigarray-compat.1.0.0 │ │ └── opam │ ├── bigstringaf.0.6.1 │ │ └── opam │ ├── biniou.1.2.1 │ │ └── opam │ ├── cmdliner.1.0.4 │ │ └── opam │ ├── conf-autoconf.0.1 │ │ └── opam │ ├── conf-m4.1 │ │ └── opam │ ├── conf-pkg-config.1.2 │ │ └── opam │ ├── cppo.1.6.6 │ │ └── opam │ ├── dune-configurator.2.5.1 │ │ └── opam │ ├── dune-private-libs.2.5.1 │ │ └── opam │ ├── dune.2.5.1 │ │ └── opam │ ├── easy-format.1.3.2 │ │ └── opam │ ├── faraday-lwt-unix.0.7.1 │ │ └── opam │ ├── faraday-lwt.0.7.1 │ │ └── opam │ ├── faraday.0.7.1 │ │ └── opam │ ├── fix.20200131 │ │ └── opam │ ├── fpath.0.7.2 │ │ └── opam │ ├── hpack.0.2.0 │ │ └── opam │ ├── junit.2.0.2 │ │ └── opam │ ├── logs.0.7.0 │ │ └── opam │ ├── lwt.5.3.0 │ │ └── opam │ ├── magic-mime.1.1.2 │ │ └── opam │ ├── menhir.20200211 │ │ └── opam │ ├── menhirLib.20200211 │ │ └── opam │ ├── menhirSdk.20200211 │ │ └── opam │ ├── merlin-extend.0.5 │ │ └── opam │ ├── merlin.3.3.4 │ │ └── opam │ ├── mmap.1.1.0 │ │ └── opam │ ├── ocaml-migrate-parsetree.1.7.3 │ │ └── opam │ ├── ocaml-syntax-shims.1.0.0 │ │ └── opam │ ├── ocamlbuild.0.14.0 │ │ └── opam │ ├── ocamlfind.1.8.1 │ │ ├── files │ │ │ ├── ocaml-stub │ │ │ └── ocamlfind.install │ │ └── opam │ ├── ocplib-endian.1.1 │ │ └── opam │ ├── odoc.1.5.0 │ │ └── opam │ ├── ppx_derivers.1.2.1 │ │ └── opam │ ├── ppx_yojson_conv_lib.v0.13.0 │ │ └── opam │ ├── psq.0.2.0 │ │ └── opam │ ├── ptime.0.8.5 │ │ └── opam │ ├── re.1.9.0 │ │ └── opam │ ├── result.1.5 │ │ └── opam │ ├── seq.base │ │ ├── files │ │ │ ├── META.seq │ │ │ └── seq.install │ │ └── opam │ ├── stdlib-shims.0.1.0 │ │ └── opam │ ├── stringext.1.6.0 │ │ └── opam │ ├── topkg.1.0.1 │ │ └── opam │ ├── tyxml.4.4.0 │ │ └── opam │ ├── uchar.0.0.2 │ │ └── opam │ ├── uri.3.1.0 │ │ └── opam │ ├── uutf.1.0.2 │ │ └── opam │ └── yojson.1.7.0 │ │ └── opam └── overrides │ ├── opam__s__conf_autoconf_opam__c__0.1_opam_override │ └── package.json │ ├── opam__s__conf_pkg_config_opam__c__1.2_opam_override │ └── package.json │ ├── opam__s__menhir_opam__c__20200211_opam_override │ └── 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.1_opam_override │ ├── files │ └── findlib-1.8.1.patch │ └── package.json ├── fetch-native-lwt.json ├── fetch-native-lwt.opam ├── fetch-test.opam ├── prepare-npm-release.sh ├── src ├── fetch-core │ ├── .npmignore │ ├── README.md │ └── src │ │ ├── Fetch_Core.re │ │ ├── Fetchify.re │ │ ├── Fetchify.rei │ │ ├── FetchifySignatures.re │ │ ├── Headers.re │ │ ├── Headers.rei │ │ ├── Method.re │ │ ├── Method.rei │ │ ├── Request.re │ │ ├── Status.re │ │ ├── Status.rei │ │ └── dune └── fetch-native-lwt │ ├── .npmignore │ ├── README.md │ ├── examples │ ├── Fetch_Lwt.re │ ├── Fetch_Lwt_Successful.re │ └── dune │ └── src │ ├── Fetch.re │ ├── Fetch.rei │ └── dune └── test ├── TestRunner.re ├── dune └── fetch-core ├── Method.re ├── Status.re ├── TestFramework.re ├── __snapshots__ └── placeholder └── dune /.all-contributorsrc: -------------------------------------------------------------------------------- 1 | { 2 | "projectName": "reason-fetch", 3 | "projectOwner": "lessp", 4 | "repoType": "github", 5 | "repoHost": "https://github.com", 6 | "files": [ 7 | "README.md" 8 | ], 9 | "imageSize": 100, 10 | "commit": true, 11 | "commitConvention": "angular", 12 | "contributors": [ 13 | { 14 | "login": "Et7f3", 15 | "name": "Et7f3", 16 | "avatar_url": "https://avatars2.githubusercontent.com/u/29592775?v=4", 17 | "profile": "https://github.com/Et7f3", 18 | "contributions": [ 19 | "code", 20 | "bug", 21 | "ideas", 22 | "maintenance", 23 | "review" 24 | ] 25 | }, 26 | { 27 | "login": "ulrikstrid", 28 | "name": "Ulrik Strid", 29 | "avatar_url": "https://avatars3.githubusercontent.com/u/1607770?v=4", 30 | "profile": "https://github.com/ulrikstrid", 31 | "contributions": [ 32 | "code", 33 | "ideas", 34 | "review" 35 | ] 36 | }, 37 | { 38 | "login": "ostera", 39 | "name": "Leandro Ostera", 40 | "avatar_url": "https://avatars0.githubusercontent.com/u/854222?v=4", 41 | "profile": "https://ostera.io", 42 | "contributions": [ 43 | "ideas" 44 | ] 45 | }, 46 | { 47 | "login": "lessp", 48 | "name": "Tom Ekander", 49 | "avatar_url": "https://avatars3.githubusercontent.com/u/17602389?v=4", 50 | "profile": "https://lessp.dev/", 51 | "contributions": [ 52 | "code", 53 | "bug", 54 | "ideas", 55 | "maintenance", 56 | "review", 57 | "doc" 58 | ] 59 | } 60 | ], 61 | "contributorsPerLine": 7 62 | } 63 | -------------------------------------------------------------------------------- /.github/workflows/docs.yml_: -------------------------------------------------------------------------------- 1 | name: Build and deploy docs 2 | on: 3 | push: 4 | branches: 5 | - master 6 | jobs: 7 | build-and-deploy-docs: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/setup-node@v1 11 | with: 12 | node-version: 12.16.1 13 | - name: Checkout 14 | uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly. 15 | with: 16 | persist-credentials: false 17 | 18 | - name: Install esy 19 | run: npm install -g esy@latest 20 | 21 | - name: Install and build docs 22 | run: | 23 | esy @fetch-core 24 | esy @fetch-native-lwt 25 | esy @fetch-native-lwt doc 26 | esy @fetch-native-lwt docs:build 27 | cp docs/index.html build/index.html 28 | 29 | - name: Deploy to gh-pages 30 | uses: JamesIves/github-pages-deploy-action@releases/v3 31 | with: 32 | ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} 33 | BRANCH: gh-pages 34 | FOLDER: build 35 | -------------------------------------------------------------------------------- /.github/workflows/macos.yml: -------------------------------------------------------------------------------- 1 | name: macOS 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | build: 10 | runs-on: macOS-latest 11 | steps: 12 | - uses: actions/setup-node@v1 13 | with: 14 | node-version: 12.16.1 15 | - uses: actions/checkout@v1 16 | - name: Install esy 17 | run: npm install -g esy@latest 18 | 19 | # Fetch Core 20 | - name: esy '@fetch-core' 21 | run: esy '@fetch-core' 22 | - name: esy '@fetch-core' test 23 | run: esy '@fetch-core' test 24 | 25 | # Fetch Native Lwt 26 | - name: esy '@fetch-native-lwt' 27 | run: esy '@fetch-native-lwt' 28 | - name: esy '@fetch-native-lwt' example:get 29 | run: esy '@fetch-native-lwt' example:get 30 | -------------------------------------------------------------------------------- /.github/workflows/pr_check.yml: -------------------------------------------------------------------------------- 1 | name: Check PR 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | build: 10 | runs-on: ${{ matrix.os }} 11 | strategy: 12 | matrix: 13 | os: [ubuntu-latest, macOS-latest, windows-latest] 14 | steps: 15 | - uses: actions/setup-node@v1 16 | with: 17 | node-version: 12.16.1 18 | - uses: actions/checkout@v1 19 | - name: Install esy 20 | run: npm install -g esy@latest 21 | 22 | # Fetch Core 23 | - name: esy '@fetch-core' 24 | run: esy '@fetch-core' 25 | - if: matrix.os != 'windows-latest' 26 | run: esy '@fetch-core' test 27 | - if: matrix.os != 'windows-latest' 28 | run: esy '@fetch-core' format 29 | 30 | # Fetch Native Lwt 31 | - name: esy '@fetch-native-lwt' 32 | run: esy '@fetch-native-lwt' 33 | - if: matrix.os != 'windows-latest' 34 | run: esy '@fetch-native-lwt' format 35 | - name: esy '@fetch-native-lwt' example:get 36 | run: esy '@fetch-native-lwt' example:get 37 | -------------------------------------------------------------------------------- /.github/workflows/release.yml_: -------------------------------------------------------------------------------- 1 | name: Release Packages 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | strategy: 12 | matrix: 13 | package: [fetch-core, fetch-native-lwt] 14 | steps: 15 | - uses: actions/setup-node@v1 16 | with: 17 | node-version: 10 18 | - uses: actions/checkout@v1 19 | - name: Package files 20 | run: | 21 | cp ${{ matrix.package }}.json ./src/${{ matrix.package }}/package.json 22 | cp ${{ matrix.package }}.opam ./src/${{ matrix.package }} 23 | cp LICENSE ./src/${{ matrix.package }} 24 | - name: NPM Package 25 | run: | 26 | cd src/${{ matrix.package }} 27 | ls -lah 28 | npm pack 29 | -------------------------------------------------------------------------------- /.github/workflows/ubuntu.yml: -------------------------------------------------------------------------------- 1 | name: Ubuntu 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/setup-node@v1 13 | with: 14 | node-version: 12.16.1 15 | - uses: actions/checkout@v1 16 | - name: Install esy 17 | run: npm install -g esy@latest 18 | 19 | # Fetch Core 20 | - name: esy '@fetch-core' 21 | run: esy '@fetch-core' 22 | - name: esy '@fetch-core' test 23 | run: esy '@fetch-core' test 24 | 25 | # Fetch Native Lwt 26 | - name: esy '@fetch-native-lwt' 27 | run: esy '@fetch-native-lwt' 28 | - name: esy '@fetch-native-lwt' example:get 29 | run: esy '@fetch-native-lwt' example:get 30 | -------------------------------------------------------------------------------- /.github/workflows/windows.yml: -------------------------------------------------------------------------------- 1 | name: Windows 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | build: 10 | runs-on: windows-latest 11 | steps: 12 | - uses: actions/setup-node@v1 13 | with: 14 | node-version: 12.16.1 15 | - uses: actions/checkout@v1 16 | - name: Install esy 17 | run: npm install -g esy@latest 18 | 19 | # Fetch Core 20 | - name: esy '@fetch-core' 21 | run: esy '@fetch-core' 22 | 23 | # Fetch Native Lwt 24 | - name: esy '@fetch-native-lwt' 25 | run: esy '@fetch-native-lwt' 26 | - name: esy '@fetch-native-lwt' example:get 27 | run: esy '@fetch-native-lwt' example:get 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | .DS_Store 3 | .env 4 | .merlin 5 | node_modules/ 6 | build/ 7 | _build 8 | _esy 9 | _release 10 | *.byte 11 | *.native 12 | *.install 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Tom Ekander 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Fetch 2 | 3 | [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com) 4 | 5 | Fetch libraries and interface for ReasonML/OCaml. 6 | 7 | Fetch aims to provide a common interface over different HTTP and Promise-implementations in the ReasonML/OCaml ecosystem. 8 | 9 | > A note is that Fetch is still in a phase where we're figuring out the API. In other words, the API 10 | > may change and input is welcome! 11 | 12 | ## [Fetch Core](./src/fetch-core) 13 | 14 | Provides a functor for creating and providing your own Fetch-implementation. The goal is to be pluggable with any HTTP or Promise-implementation provided it conforms to the common interface. 15 | 16 | ## [Fetch Native Lwt](./src/fetch-native-lwt) 17 | 18 | ![Windows](https://github.com/lessp/fetch/workflows/Windows/badge.svg) 19 | ![macOS](https://github.com/lessp/fetch/workflows/macOS/badge.svg) 20 | ![Ubuntu](https://github.com/lessp/fetch/workflows/Ubuntu/badge.svg) 21 | 22 | A consumable fetch-library for ReasonML/OCaml native. Uses `Lwt` for its `Promise`-implementation. 23 | 24 | To install, add the library to your esy-manifest, like so: 25 | 26 | ```json 27 | { 28 | "dependencies": { 29 | "fetch-native-lwt": "lessp/fetch:fetch-native-lwt.json" 30 | } 31 | } 32 | ``` 33 | 34 | or, to point to a specific commit: 35 | 36 | ```json 37 | "fetch-native-lwt": "lessp/fetch:fetch-native-lwt.json#" 38 | ``` 39 | 40 | ## Contributing 41 | 42 | Feel free to open an issue and/or grabbing one of the [open issues](https://github.com/lessp/reason-fetch/issues). 43 | 44 | ## Contributors 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
Tom Ekander
Tom Ekander

💻 🤔 📖
Et7f3
Et7f3

💻 🤔 👀
Ulrik Strid
Ulrik Strid

💻 🤔 👀
Leandro Ostera
Leandro Ostera

🤔
57 | 58 | 59 | 60 | 61 | 62 | 63 | This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome! 64 | 65 | ## License 66 | 67 | This project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details 68 | -------------------------------------------------------------------------------- /clean-npm-release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | for package in fetch-core fetch-native-lwt 4 | do 5 | rm ./src/$package/package.json 6 | rm ./src/$package/$package.opam 7 | rm ./src/$package/LICENSE 8 | rm ./src/$package/dune-project 9 | done 10 | -------------------------------------------------------------------------------- /docs/fetch-native-lwt/dune: -------------------------------------------------------------------------------- 1 | (documentation 2 | (package fetch-native-lwt) 3 | (mld_files (:standard))) 4 | -------------------------------------------------------------------------------- /docs/fetch-native-lwt/index.mld: -------------------------------------------------------------------------------- 1 | {0 Fetch} 2 | 3 | An HTTP-client, built on the Fetch-standard using {{: https://github.com/ocsigen/lwt} Lwt} for its 4 | Promise-implementation. 5 | 6 | The entry point of this library is the module: 7 | {!module-Fetch}. 8 | 9 | {1 Examples} 10 | 11 | {2 Basic request} 12 | 13 | The following example performs a GET-request. 14 | 15 | {[ 16 | Fetch.get("https://example.com") == Lwt.t(result(Fetch.Response.t, string)); 17 | ]} 18 | 19 | We could also use the following example to perform a `GET-request since {!module-Fetch.fetch} 20 | defaults to a `GET-request. But prefer the former since it's more explicit in showing intent. 21 | 22 | {[ 23 | Fetch.fetch("https://example.com") == Lwt.t(result(Fetch.Response.t, string)); 24 | ]} 25 | 26 | 27 | {2 POST-Request} 28 | Here's an example that's a bit more involved. We're not using any of the destructured fields from 29 | {!module-Fetch.Response.t}, but it's important to know that they're available. 30 | 31 | {[ 32 | let result = 33 | Fetch.( 34 | { 35 | let.flatMapOk {Response.body, headers as _headers, status as _status, url as _url} = 36 | post( 37 | "https://example.com/movies", 38 | ~body="Some, body", 39 | ~headers=[("Authorization", "Bearer xyz")], 40 | ); 41 | 42 | let bodyString = Body.toString(body); 43 | 44 | Lwt.return(Ok(bodyString)); 45 | } 46 | ); 47 | 48 | switch (result) { 49 | | Ok(bodyString) => ... 50 | | Error(errorMessage) => ... 51 | }; 52 | ]} 53 | 54 | For more examples, have a look in the {{: https://github.com/lessp/fetch/tree/master/src/fetch-native-lwt/examples} examples folder} 55 | 56 | {1 Installing} 57 | 58 | To install, add the package to your {{: https://esy.sh} esy-manifest} like so: 59 | 60 | {[ 61 | "dependencies": { 62 | /* other dependencies */ 63 | "fetch-native-lwt": "lessp/fetch:fetch-native-lwt.json" 64 | } 65 | ]} 66 | 67 | And add it to your `dune`-stanza. 68 | 69 | {[ 70 | (libraries ... fetch-native-lwt) 71 | ]} 72 | 73 | In your terminal, run: `esy`. 74 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | index 5 | 6 | 7 | 8 | 9 | 10 |
11 |

Fetch

12 |

Fetch implementations for Reason/OCaml.

13 |
14 |

Package documentation

15 |
    16 |
  1. fetch-core
  2. 17 |
  3. fetch-native-lwt
  4. 18 |
19 |
20 |
21 | 22 | 23 | -------------------------------------------------------------------------------- /dune: -------------------------------------------------------------------------------- 1 | (dirs :standard \ fetch-js) 2 | 3 | ;; include all directories except fetch-js 4 | -------------------------------------------------------------------------------- /dune-project: -------------------------------------------------------------------------------- 1 | (lang dune 2.0) 2 | (name fetch) 3 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/.gitattributes: -------------------------------------------------------------------------------- 1 | 2 | # Set eol to LF so files aren't converted to CRLF-eol on Windows. 3 | * text eol=lf linguist-generated 4 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Reset any possible .gitignore, we want all esy.lock to be un-ignored. 3 | !* 4 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/atd.2.0.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | 5 | homepage: "https://github.com/mjambon/atd" 6 | bug-reports: "https://github.com/mjambon/atd/issues" 7 | dev-repo: "git://github.com/mjambon/atd.git" 8 | 9 | build: [ 10 | ["jbuilder" "subst" "-p" name] {pinned} 11 | ["jbuilder" "build" "-p" name "-j" jobs] 12 | ] 13 | 14 | # Restore when https://github.com/mjambon/atd/issues/121 is resolved. 15 | # build-test: [ 16 | # ["jbuilder" "runtest" "-p" name] 17 | # ] 18 | 19 | depends: [ 20 | "ocaml" {>= "4.03.0"} 21 | "jbuilder" 22 | "menhir" {build} 23 | "easy-format" 24 | ] 25 | synopsis: "Parser for the ATD data format description language" 26 | description: """ 27 | ATD is the OCaml library providing a parser for the ATD language and 28 | various utilities. ATD stands for Adjustable Type Definitions in 29 | reference to its main property of supporting annotations that allow a 30 | good fit with a variety of data formats.""" 31 | url { 32 | src: "https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz" 33 | checksum: "md5=14e47609397c524ea0eae7c3f14f7ccf" 34 | } 35 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/atdgen-runtime.2.0.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | 5 | homepage: "https://github.com/mjambon/atd" 6 | bug-reports: "https://github.com/mjambon/atd/issues" 7 | dev-repo: "git://github.com/mjambon/atd.git" 8 | 9 | build: [ 10 | ["jbuilder" "subst" "-p" name] {pinned} 11 | ["jbuilder" "build" "-p" name "-j" jobs] 12 | ] 13 | 14 | # Restore when https://github.com/mjambon/atd/issues/121 is resolved. 15 | # build-test: [ 16 | # ["jbuilder" "runtest" "-p" name] 17 | # ] 18 | 19 | depends: [ 20 | "ocaml" {>= "4.02.3"} 21 | "jbuilder" 22 | "biniou" {>= "1.0.6"} 23 | "yojson" {>= "1.2.1"} 24 | ] 25 | synopsis: "Runtime library for code generated by atdgen." 26 | url { 27 | src: "https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz" 28 | checksum: "md5=14e47609397c524ea0eae7c3f14f7ccf" 29 | } 30 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/atdgen.2.0.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | 5 | homepage: "https://github.com/mjambon/atd" 6 | bug-reports: "https://github.com/mjambon/atd/issues" 7 | dev-repo: "git://github.com/mjambon/atd.git" 8 | 9 | build: [ 10 | ["jbuilder" "subst" "-p" name] {pinned} 11 | ["jbuilder" "build" "-p" name "-j" jobs] 12 | ] 13 | 14 | # Restore when https://github.com/mjambon/atd/issues/121 is resolved. 15 | # build-test: [ 16 | # ["jbuilder" "runtest" "-p" name] 17 | # ] 18 | 19 | depends: [ 20 | "ocaml" {>= "4.03.0"} 21 | "jbuilder" 22 | "atd" {>= "2.0.0"} 23 | "atdgen-runtime" {>= "2.0.0"} 24 | "biniou" {>= "1.0.6"} 25 | "yojson" {>= "1.2.1"} 26 | ] 27 | synopsis: 28 | "Generates efficient JSON serializers, deserializers and validators" 29 | description: """ 30 | Atdgen is a command-line program that takes as input type definitions in the 31 | ATD syntax and produces OCaml code suitable for data serialization and 32 | deserialization. 33 | 34 | Two data formats are currently supported, these are biniou and JSON. 35 | Atdgen-biniou and Atdgen-json will refer to Atdgen used in one context or the 36 | other. 37 | 38 | Atdgen was designed with efficiency and durability in mind. Software authors 39 | are encouraged to use Atdgen directly and to write tools that may reuse part of 40 | Atdgen’s source code.""" 41 | url { 42 | src: "https://github.com/mjambon/atd/releases/download/2.0.0/atd-2.0.0.tbz" 43 | checksum: "md5=14e47609397c524ea0eae7c3f14f7ccf" 44 | } 45 | -------------------------------------------------------------------------------- /fetch-core.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 | -------------------------------------------------------------------------------- /fetch-core.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 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/biniou.1.2.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | build: [ 3 | ["dune" "subst"] {pinned} 4 | ["dune" "build" "-p" name "-j" jobs] 5 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 6 | ["dune" "build" "-p" name "@doc"] {with-doc} 7 | ] 8 | maintainer: ["martin@mjambon.com"] 9 | authors: ["Martin Jambon"] 10 | bug-reports: "https://github.com/mjambon/biniou/issues" 11 | homepage: "https://github.com/mjambon/biniou" 12 | doc: "https://mjambon.github.io/biniou/" 13 | license: "BSD-3-Clause" 14 | dev-repo: "git+https://github.com/mjambon/biniou.git" 15 | synopsis: 16 | "Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve" 17 | description: """ 18 | 19 | Biniou (pronounced "be new") is a binary data format designed for speed, safety, 20 | ease of use and backward compatibility as protocols evolve. Biniou is vastly 21 | equivalent to JSON in terms of functionality but allows implementations several 22 | times faster (4 times faster than yojson), with 25-35% space savings. 23 | 24 | Biniou data can be decoded into human-readable form without knowledge of type 25 | definitions except for field and variant names which are represented by 31-bit 26 | hashes. A program named bdump is provided for routine visualization of biniou 27 | data files. 28 | 29 | The program atdgen is used to derive OCaml-Biniou serializers and deserializers 30 | from type definitions. 31 | 32 | Biniou format specification: mjambon.github.io/atdgen-doc/biniou-format.txt""" 33 | depends: [ 34 | "easy-format" 35 | "dune" {>= "1.10"} 36 | "ocaml" {>= "4.02.3"} 37 | ] 38 | url { 39 | src: 40 | "https://github.com/mjambon/biniou/releases/download/1.2.1/biniou-1.2.1.tbz" 41 | checksum: [ 42 | "sha256=35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335" 43 | "sha512=82670cc77bf3e869ee26e5fbe5a5affa45a22bc8b6c4bd7e85473912780e0111baca59b34a2c14feae3543ce6e239d7fddaeab24b686a65bfe642cdb91d27ebf" 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /fetch-core.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.0-only" 7 | build: [["sh" "-exc" "echo | m4"]] 8 | depexts: [ 9 | ["m4"] {os-family = "debian"} 10 | ["m4"] {os-distribution = "fedora"} 11 | ["m4"] {os-distribution = "rhel"} 12 | ["m4"] {os-distribution = "centos"} 13 | ["m4"] {os-distribution = "alpine"} 14 | ["m4"] {os-distribution = "nixos"} 15 | ["m4"] {os-family = "suse"} 16 | ["m4"] {os-distribution = "ol"} 17 | ["m4"] {os-distribution = "arch"} 18 | ] 19 | synopsis: "Virtual package relying on m4" 20 | description: 21 | "This package can only install if the m4 binary is installed on the system." 22 | flags: conf 23 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/cppo.1.6.6/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: "Martin Jambon" 4 | license: "BSD-3-Clause" 5 | homepage: "http://mjambon.com/cppo.html" 6 | doc: "https://ocaml-community.github.io/cppo/" 7 | bug-reports: "https://github.com/ocaml-community/cppo/issues" 8 | depends: [ 9 | "ocaml" {>= "4.03"} 10 | "dune" {>= "1.0"} 11 | "base-unix" 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/ocaml-community/cppo.git" 19 | synopsis: "Code preprocessor like cpp for OCaml" 20 | description: """ 21 | Cppo is an equivalent of the C preprocessor for OCaml programs. 22 | It allows the definition of simple macros and file inclusion. 23 | 24 | Cppo is: 25 | 26 | * more OCaml-friendly than cpp 27 | * easy to learn without consulting a manual 28 | * reasonably fast 29 | * simple to install and to maintain 30 | """ 31 | url { 32 | src: "https://github.com/ocaml-community/cppo/releases/download/v1.6.6/cppo-v1.6.6.tbz" 33 | checksum: [ 34 | "sha256=e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0" 35 | "sha512=44ecf9d225d9e45490a2feac0bde04865ca398dba6c3579e3370fcd1ea255707b8883590852af8b2df87123801062b9f3acce2455c092deabf431f9c4fb8d8eb" 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/dune.2.4.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: "Fast, portable, and opinionated build system" 3 | description: """ 4 | 5 | dune is a build system that was designed to simplify the release of 6 | Jane Street packages. It reads metadata from "dune" files following a 7 | very simple s-expression syntax. 8 | 9 | dune is fast, has very low-overhead, and supports parallel builds on 10 | all platforms. It has no system dependencies; all you need to build 11 | dune or packages using dune is OCaml. You don't need make or bash 12 | as long as the packages themselves don't use bash explicitly. 13 | 14 | dune supports multi-package development by simply dropping multiple 15 | repositories into the same directory. 16 | 17 | It also supports multi-context builds, such as building against 18 | several opam roots/switches simultaneously. This helps maintaining 19 | packages across several versions of OCaml and gives cross-compilation 20 | for free. 21 | """ 22 | maintainer: ["Jane Street Group, LLC "] 23 | authors: ["Jane Street Group, LLC "] 24 | license: "MIT" 25 | homepage: "https://github.com/ocaml/dune" 26 | doc: "https://dune.readthedocs.io/" 27 | bug-reports: "https://github.com/ocaml/dune/issues" 28 | conflicts: [ 29 | "dune-configurator" {< "2.3.0"} 30 | "odoc" {< "1.3.0"} 31 | "dune-release" {< "1.3.0"} 32 | "jbuilder" {= "transition"} 33 | ] 34 | dev-repo: "git+https://github.com/ocaml/dune.git" 35 | build: [ 36 | # opam 2 sets OPAM_SWITCH_PREFIX, so we don't need a hardcoded path 37 | ["ocaml" "configure.ml" "--libdir" lib] {opam-version < "2"} 38 | ["ocaml" "bootstrap.ml" "-j" jobs] 39 | ["./dune.exe" "build" "-p" name "--profile" "dune-bootstrap" "-j" jobs] 40 | ] 41 | depends: [ 42 | # Please keep the lower bound in sync with .travis.yml, dune-project 43 | # and min_ocaml_version in bootstrap.ml 44 | ("ocaml" {>= "4.07"} | ("ocaml" {< "4.07~~"} & "ocamlfind-secondary")) 45 | "base-unix" 46 | "base-threads" 47 | ] 48 | url { 49 | src: "https://github.com/ocaml/dune/releases/download/2.4.0/dune-2.4.0.tbz" 50 | checksum: [ 51 | "sha256=28f1484a798103021833d544f1a79b0234cca77add49bba073013eae94b9dc24" 52 | "sha512=aa8561d7174f8435a0e86fbd165005a121797e5e5e46d50d5dc75c863bde0e2945311222cadb8ac27e75052bedbae9edf418cb1130f50d807705218ee284a19b" 53 | ] 54 | } 55 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/easy-format.1.3.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | build: [ 3 | ["dune" "subst"] {pinned} 4 | ["dune" "build" "-p" name "-j" jobs] 5 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 6 | ["dune" "build" "-p" name "@doc"] {with-doc} 7 | ] 8 | maintainer: ["martin@mjambon.com" "rudi.grinberg@gmail.com"] 9 | authors: ["Martin Jambon"] 10 | bug-reports: "https://github.com/mjambon/easy-format/issues" 11 | homepage: "https://github.com/mjambon/easy-format" 12 | doc: "https://mjambon.github.io/easy-format/" 13 | license: "BSD-3-Clause" 14 | dev-repo: "git+https://github.com/mjambon/easy-format.git" 15 | synopsis: 16 | "High-level and functional interface to the Format module of the OCaml standard library" 17 | description: """ 18 | 19 | This module offers a high-level and functional interface to the Format module of 20 | the OCaml standard library. It is a pretty-printing facility, i.e. it takes as 21 | input some code represented as a tree and formats this code into the most 22 | visually satisfying result, breaking and indenting lines of code where 23 | appropriate. 24 | 25 | Input data must be first modelled and converted into a tree using 3 kinds of 26 | nodes: 27 | 28 | * atoms 29 | * lists 30 | * labelled nodes 31 | 32 | Atoms represent any text that is guaranteed to be printed as-is. Lists can model 33 | any sequence of items such as arrays of data or lists of definitions that are 34 | labelled with something like "int main", "let x =" or "x:".""" 35 | depends: [ 36 | "dune" {>= "1.10"} 37 | "ocaml" {>= "4.02.3"} 38 | ] 39 | url { 40 | src: 41 | "https://github.com/mjambon/easy-format/releases/download/1.3.2/easy-format-1.3.2.tbz" 42 | checksum: [ 43 | "sha256=3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926" 44 | "sha512=e39377a2ff020ceb9ac29e8515a89d9bdbc91dfcfa871c4e3baafa56753fac2896768e5d9822a050dc1e2ade43c8967afb69391a386c0a8ecd4e1f774e236135" 45 | ] 46 | } 47 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/fix.20200131/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "francois.pottier@inria.fr" 3 | authors: [ 4 | "François Pottier " 5 | ] 6 | homepage: "https://gitlab.inria.fr/fpottier/fix" 7 | dev-repo: "git+https://gitlab.inria.fr/fpottier/fix.git" 8 | bug-reports: "francois.pottier@inria.fr" 9 | build: [ 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | depends: [ 13 | "ocaml" { >= "4.03" } 14 | "dune" { >= "1.3" } 15 | ] 16 | synopsis: "Facilities for memoization and fixed points" 17 | url { 18 | src: 19 | "https://gitlab.inria.fr/fpottier/fix/repository/20200131/archive.tar.gz" 20 | checksum: [ 21 | "md5=991ff031666c662eaab638d2e0f4ac1d" 22 | "sha512=01c45a1d90b02ec0939e968b185a6a373ac6117e2287b9a26d3db9d71e9569d086cea50da60710fcab5c2ed9d3b4c72b76839c0651e436f1fb39c77dc7c04b5e" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/jbuilder.1.0+beta20.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: "Apache-2.0" 8 | build: [ 9 | ["ocaml" "configure.ml" "--libdir" lib] 10 | ["ocaml" "bootstrap.ml"] 11 | ["./boot.exe" "--subst"] {pinned} 12 | ["./boot.exe" "-j" jobs] 13 | ] 14 | synopsis: "Fast, portable and opinionated build system" 15 | description: """ 16 | jbuilder is a build system that was designed to simplify the release 17 | of Jane Street packages. It reads metadata from "jbuild" files 18 | following a very simple s-expression syntax. 19 | 20 | jbuilder is fast, it has very low-overhead and support parallel builds 21 | on all platforms. It has no system dependencies, all you need to build 22 | jbuilder and packages using jbuilder is OCaml. You don't need or make 23 | or bash as long as the packages themselves don't use bash explicitely. 24 | 25 | jbuilder supports multi-package development by simply dropping multiple 26 | repositories into the same directory. 27 | 28 | It also supports multi-context builds, such as building against 29 | several opam roots/switches simultaneously. This helps maintaining 30 | packages across several versions of OCaml and gives cross-compilation 31 | for free.""" 32 | depends: [ 33 | "ocaml" {>= "4.02.3"} 34 | ] 35 | url { 36 | src: 37 | "https://github.com/ocaml/dune/releases/download/1.0%2Bbeta20.2/jbuilder-1.0+beta20.2.tbz" 38 | checksum: "md5=fbe8c3b1facb206cac3fb8932b5dd5d9" 39 | } 40 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/junit.2.0.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Louis Roché " 3 | authors: "Louis Roché " 4 | homepage: "https://github.com/Khady/ocaml-junit" 5 | bug-reports: "https://github.com/Khady/ocaml-junit/issues" 6 | license: "LGPLv3+ with OCaml linking exception" 7 | dev-repo: "git+https://github.com/Khady/ocaml-junit.git" 8 | doc: "https://khady.github.io/ocaml-junit/" 9 | tags: ["junit" "jenkins"] 10 | depends: [ 11 | "dune" {>= "1.0"} 12 | "ptime" 13 | "tyxml" {>= "4.0.0"} 14 | "odoc" {with-doc & >= "1.1.1"} 15 | ] 16 | build: [ 17 | ["dune" "subst"] {pinned} 18 | ["dune" "build" "-p" name "-j" jobs] 19 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 20 | ["dune" "build" "-p" name "-j" jobs] {with-doc} 21 | ] 22 | name: "junit" 23 | synopsis: "JUnit XML reports generation library" 24 | description: "JUnit XML reports generation library" 25 | url { 26 | src: 27 | "https://github.com/Khady/ocaml-junit/releases/download/2.0.2/junit-2.0.2.tbz" 28 | checksum: [ 29 | "sha256=fda941b653613a4a5731f9b3557364b12baa341daa13c01676c9eb8d64e96b01" 30 | "sha512=5a9fa803c4861748bb8482fc51197420bf3cc3b9540989a489c4ffb65fdd02386aaa60437eae29182209dae0903b0e537c095249e19d395a451b8e8214f15f03" 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/menhir.20200211/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 | ["dune" "build" "-p" name "-j" jobs] 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "dune" {>= "2.2.0"} 16 | "menhirLib" {= version} 17 | "menhirSdk" {= version} 18 | ] 19 | synopsis: "An LR(1) parser generator" 20 | url { 21 | src: 22 | "https://gitlab.inria.fr/fpottier/menhir/repository/20200211/archive.tar.gz" 23 | checksum: [ 24 | "md5=01577e5f15380c35bdaa8fd818204560" 25 | "sha512=a686c4b047d5236c425afcd7f179964191268ff448b8d18510579d742a7256855049bc4fe568bb8f1b0d6cbfb758d95cd05e621e3410b75245bb799d623725d6" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/menhirLib.20200211/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 | ["dune" "build" "-p" name "-j" jobs] 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "dune" {>= "2.0.0"} 16 | ] 17 | conflicts: [ 18 | "menhir" { != version } 19 | ] 20 | synopsis: "Runtime support library for parsers generated by Menhir" 21 | url { 22 | src: 23 | "https://gitlab.inria.fr/fpottier/menhir/repository/20200211/archive.tar.gz" 24 | checksum: [ 25 | "md5=01577e5f15380c35bdaa8fd818204560" 26 | "sha512=a686c4b047d5236c425afcd7f179964191268ff448b8d18510579d742a7256855049bc4fe568bb8f1b0d6cbfb758d95cd05e621e3410b75245bb799d623725d6" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/menhirSdk.20200211/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 | ["dune" "build" "-p" name "-j" jobs] 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "dune" {>= "2.0.0"} 16 | ] 17 | conflicts: [ 18 | "menhir" { != version } 19 | ] 20 | synopsis: "Compile-time library for auxiliary tools related to Menhir" 21 | url { 22 | src: 23 | "https://gitlab.inria.fr/fpottier/menhir/repository/20200211/archive.tar.gz" 24 | checksum: [ 25 | "md5=01577e5f15380c35bdaa8fd818204560" 26 | "sha512=a686c4b047d5236c425afcd7f179964191268ff448b8d18510579d742a7256855049bc4fe568bb8f1b0d6cbfb758d95cd05e621e3410b75245bb799d623725d6" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/merlin-extend.0.5/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: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | depends: [ 13 | "dune" {>= "1.0"} 14 | "cppo" {build} 15 | "ocaml" {>= "4.02.3"} 16 | ] 17 | synopsis: "A protocol to provide custom frontend to Merlin" 18 | description: """ 19 | This protocol allows to replace the OCaml frontend of Merlin. 20 | It extends what used to be done with the `-pp' flag to handle a few more cases.""" 21 | doc: "https://let-def.github.io/merlin-extend" 22 | url { 23 | src: 24 | "https://github.com/let-def/merlin-extend/releases/download/v0.5/merlin-extend-v0.5.tbz" 25 | checksum: [ 26 | "sha256=ca3a38c360c7d4827eb4789abf7a6aa4b6e3b4e3c3ef69a5be64dce4601ec227" 27 | "sha512=55c5a3637337abb8ca8db679128a81ca8ccce567bc214d55b2e6444dc0e905b74c64d629bdea2457d0fe4be5306414feefcdbc4d4761fdafd59aa107550936b6" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/ocaml-migrate-parsetree.1.6.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 with OCaml linking exception" 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" {>= "1.9.0"} 20 | "ocaml" {>= "4.02.3"} 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.6.0/ocaml-migrate-parsetree-v1.6.0.tbz" 33 | checksum: [ 34 | "sha256=9b018e7d25114ce17fc0b82b7cd7c927b84ebb6b043aa987fa7731c2484de33f" 35 | "sha512=e03a5fe44ecf43683c764a7285a65bfa80639c09badf422661723bc3483d6d799c47c1ead34c2caa289a37e1b4b46d809c8cc56537d5c76e6004849d2d8a305f" 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /fetch-core.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.1-only with OCaml-LGPL-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 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/ocamlfind.1.8.1/files/ocaml-stub: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | BINDIR=$(dirname "$(command -v ocamlc)") 4 | "$BINDIR/ocaml" -I "$OCAML_TOPLEVEL_PATH" "$@" 5 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/ocamlfind.1.8.1/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 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/ocamlfind.1.8.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: "A library manager for OCaml" 3 | maintainer: "Thomas Gazagnaire " 4 | authors: "Gerd Stolpmann " 5 | homepage: "http://projects.camlcity.org/projects/findlib.html" 6 | bug-reports: "https://gitlab.camlcity.org/gerd/lib-findlib/issues" 7 | dev-repo: "git+https://gitlab.camlcity.org/gerd/lib-findlib.git" 8 | description: """ 9 | Findlib is a library manager for OCaml. It provides a convention how 10 | to store libraries, and a file format ("META") to describe the 11 | properties of libraries. There is also a tool (ocamlfind) for 12 | interpreting the META files, so that it is very easy to use libraries 13 | in programs and scripts. 14 | """ 15 | build: [ 16 | [ 17 | "./configure" 18 | "-bindir" 19 | bin 20 | "-sitelib" 21 | lib 22 | "-mandir" 23 | man 24 | "-config" 25 | "%{lib}%/findlib.conf" 26 | "-no-custom" 27 | "-no-camlp4" {!ocaml:preinstalled & ocaml:version >= "4.02.0"} 28 | "-no-topfind" {ocaml:preinstalled} 29 | ] 30 | [make "all"] 31 | [make "opt"] {ocaml:native} 32 | ] 33 | install: [ 34 | [make "install"] 35 | ["install" "-m" "0755" "ocaml-stub" "%{bin}%/ocaml"] {ocaml:preinstalled} 36 | ] 37 | depends: [ 38 | "ocaml" {>= "4.00.0"} 39 | "conf-m4" {build} 40 | ] 41 | extra-files: [ 42 | ["ocamlfind.install" "md5=06f2c282ab52d93aa6adeeadd82a2543"] 43 | ["ocaml-stub" "md5=181f259c9e0bad9ef523e7d4abfdf87a"] 44 | ] 45 | url { 46 | src: "http://download.camlcity.org/download/findlib-1.8.1.tar.gz" 47 | checksum: "md5=18ca650982c15536616dea0e422cbd8c" 48 | mirrors: "http://download2.camlcity.org/download/findlib-1.8.1.tar.gz" 49 | } 50 | depopts: ["graphics"] 51 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/ppx_derivers.1.2.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "jeremie@dimino.org" 3 | authors: ["Jérémie Dimino"] 4 | license: "BSD-3-Clause" 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 | ["dune" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" 13 | "dune" 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.2.1.tar.gz" 22 | checksum: "md5=5dc2bf130c1db3c731fe0fffc5648b41" 23 | } 24 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/ptime.0.8.5/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["The ptime programmers"] 4 | homepage: "https://erratique.ch/software/ptime" 5 | doc: "https://erratique.ch/software/ptime/doc" 6 | dev-repo: "git+http://erratique.ch/repos/ptime.git" 7 | bug-reports: "https://github.com/dbuenzli/ptime/issues" 8 | tags: [ "time" "posix" "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 | ] 17 | depopts: [ "js_of_ocaml" ] 18 | conflicts: [ "js_of_ocaml" { < "3.3.0" } ] 19 | build:[[ 20 | "ocaml" "pkg/pkg.ml" "build" 21 | "--pinned" "%{pinned}%" 22 | "--with-js_of_ocaml" "%{js_of_ocaml:installed}%" ]] 23 | 24 | synopsis: """POSIX time for OCaml""" 25 | description: """\ 26 | 27 | Ptime has platform independent POSIX time support in pure OCaml. It 28 | provides a type to represent a well-defined range of POSIX timestamps 29 | with picosecond precision, conversion with date-time values, 30 | conversion with [RFC 3339 timestamps][rfc3339] and pretty printing to a 31 | human-readable, locale-independent representation. 32 | 33 | The additional Ptime_clock library provides access to a system POSIX 34 | clock and to the system's current time zone offset. 35 | 36 | Ptime is not a calendar library. 37 | 38 | Ptime depends on the `result` compatibility package. Ptime_clock 39 | depends on your system library. Ptime_clock's optional JavaScript 40 | support depends on [js_of_ocaml][jsoo]. Ptime and its libraries are 41 | distributed under the ISC license. 42 | 43 | [rfc3339]: http://tools.ietf.org/html/rfc3339 44 | [jsoo]: http://ocsigen.org/js_of_ocaml/ 45 | """ 46 | url { 47 | archive: "https://erratique.ch/software/ptime/releases/ptime-0.8.5.tbz" 48 | checksum: "4d48055d623ecf2db792439b3e96a520" 49 | } 50 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/re.1.9.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | 3 | maintainer: "rudi.grinberg@gmail.com" 4 | authors: [ 5 | "Jerome Vouillon" 6 | "Thomas Gazagnaire" 7 | "Anil Madhavapeddy" 8 | "Rudi Grinberg" 9 | "Gabriel Radanne" 10 | ] 11 | license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" 12 | homepage: "https://github.com/ocaml/ocaml-re" 13 | bug-reports: "https://github.com/ocaml/ocaml-re/issues" 14 | dev-repo: "git+https://github.com/ocaml/ocaml-re.git" 15 | 16 | build: [ 17 | ["dune" "subst"] {pinned} 18 | ["dune" "build" "-p" name "-j" jobs] 19 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 20 | ] 21 | 22 | depends: [ 23 | "ocaml" {>= "4.02"} 24 | "dune" 25 | "ounit" {with-test} 26 | "seq" 27 | ] 28 | 29 | synopsis: "RE is a regular expression library for OCaml" 30 | description: """ 31 | Pure OCaml regular expressions with: 32 | * Perl-style regular expressions (module Re.Perl) 33 | * Posix extended regular expressions (module Re.Posix) 34 | * Emacs-style regular expressions (module Re.Emacs) 35 | * Shell-style file globbing (module Re.Glob) 36 | * Compatibility layer for OCaml's built-in Str module (module Re.Str) 37 | """ 38 | url { 39 | src: 40 | "https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz" 41 | checksum: "md5=bddaed4f386a22cace7850c9c7dac296" 42 | } 43 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/result.1.5/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: "BSD-3-Clause" 8 | build: [["dune" "build" "-p" name "-j" jobs]] 9 | depends: [ 10 | "ocaml" 11 | "dune" {>= "1.0"} 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.5/result-1.5.tbz" 21 | checksum: "md5=1b82dec78849680b49ae9a8a365b831b" 22 | } 23 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/seq.base/files/META.seq: -------------------------------------------------------------------------------- 1 | name="seq" 2 | version="[distributed with OCaml 4.07 or above]" 3 | description="dummy backward-compatibility package for iterators" 4 | requires="" 5 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/seq.base/files/seq.install: -------------------------------------------------------------------------------- 1 | lib:[ 2 | "META.seq" {"META"} 3 | ] 4 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/seq.base/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: " " 3 | authors: " " 4 | homepage: " " 5 | depends: [ 6 | "ocaml" {>= "4.07.0"} 7 | ] 8 | dev-repo: "git+https://github.com/ocaml/ocaml.git" 9 | bug-reports: "https://caml.inria.fr/mantis/main_page.php" 10 | synopsis: 11 | "Compatibility package for OCaml's standard iterator type starting from 4.07." 12 | extra-files: [ 13 | ["seq.install" "md5=026b31e1df290373198373d5aaa26e42"] 14 | ["META.seq" "md5=b33c8a1a6c7ed797816ce27df4855107"] 15 | ] 16 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/topkg.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/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.03.0"} 12 | "ocamlfind" {build & >= "1.6.1"} 13 | "ocamlbuild" ] 14 | build: [[ 15 | "ocaml" "pkg/pkg.ml" "build" 16 | "--pkg-name" name 17 | "--dev-pkg" "%{pinned}%" ]] 18 | synopsis: """The transitory OCaml software packager""" 19 | description: """\ 20 | 21 | Topkg is a packager for distributing OCaml software. It provides an 22 | API to describe the files a package installs in a given build 23 | configuration and to specify information about the package's 24 | distribution, creation and publication procedures. 25 | 26 | The optional topkg-care package provides the `topkg` command line tool 27 | which helps with various aspects of a package's life cycle: creating 28 | and linting a distribution, releasing it on the WWW, publish its 29 | documentation, add it to the OCaml opam repository, etc. 30 | 31 | Topkg is distributed under the ISC license and has **no** 32 | dependencies. This is what your packages will need as a *build* 33 | dependency. 34 | 35 | Topkg-care is distributed under the ISC license it depends on 36 | [fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner], 37 | [webbrowser][webbrowser] and `opam-format`. 38 | 39 | [fmt]: http://erratique.ch/software/fmt 40 | [logs]: http://erratique.ch/software/logs 41 | [bos]: http://erratique.ch/software/bos 42 | [cmdliner]: http://erratique.ch/software/cmdliner 43 | [webbrowser]: http://erratique.ch/software/webbrowser 44 | """ 45 | url { 46 | archive: "http://erratique.ch/software/topkg/releases/topkg-1.0.1.tbz" 47 | checksum: "16b90e066d8972a5ef59655e7c28b3e9" 48 | } 49 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/tyxml.4.4.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "dev@ocsigen.org" 3 | homepage: "https://github.com/ocsigen/tyxml/" 4 | bug-reports: "https://github.com/ocsigen/tyxml/issues" 5 | doc: "https://ocsigen.org/tyxml/manual/" 6 | dev-repo: "git+https://github.com/ocsigen/tyxml.git" 7 | license: "LGPL-2.1 with OCaml linking exception" 8 | 9 | build: [ 10 | ["dune" "subst"] {pinned} 11 | ["dune" "build" "-p" name "-j" jobs] 12 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 13 | ] 14 | 15 | depends: [ 16 | "ocaml" {>= "4.02"} 17 | "dune" 18 | "alcotest" {with-test} 19 | "seq" 20 | "uutf" {>= "1.0.0"} 21 | "re" {>= "1.5.0"} 22 | ] 23 | 24 | synopsis:"TyXML is a library for building correct HTML and SVG documents" 25 | description:""" 26 | TyXML provides a set of convenient combinators that uses the OCaml 27 | type system to ensure the validity of the generated documents. TyXML 28 | can be used with any representation of HTML and SVG: the textual one, 29 | provided directly by this package, or DOM trees (`js_of_ocaml-tyxml`) 30 | virtual DOM (`virtual-dom`) and reactive or replicated trees 31 | (`eliom`). You can also create your own representation and use it to 32 | instantiate a new set of combinators. 33 | 34 | ```ocaml 35 | open Tyxml 36 | let to_ocaml = Html.(a ~a:[a_href "ocaml.org"] [txt "OCaml!"]) 37 | ``` 38 | """ 39 | authors: "The ocsigen team" 40 | url { 41 | src: 42 | "https://github.com/ocsigen/tyxml/releases/download/4.4.0/tyxml-4.4.0.tbz" 43 | checksum: [ 44 | "sha256=516394dd4a5c31726997c51d66aa31cacb91e3c46d4e16c7699130e204042530" 45 | "sha512=d5f2187f8410524cec7a14b28e8950837070eb0b6571b015dd06076c2841eb7ccaffa86d5d2307eaf1950ee62f9fb926477dac01c870d9c1a2f525853cb44d0c" 46 | ] 47 | } 48 | -------------------------------------------------------------------------------- /fetch-core.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 | -------------------------------------------------------------------------------- /fetch-core.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 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/opam/yojson.1.7.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | homepage: "https://github.com/ocaml-community/yojson" 5 | bug-reports: "https://github.com/ocaml-community/yojson/issues" 6 | dev-repo: "git+https://github.com/ocaml-community/yojson.git" 7 | doc: "https://ocaml-community.github.io/yojson/" 8 | build: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | run-test: [["dune" "runtest" "-p" name "-j" jobs]] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "dune" 16 | "cppo" {build} 17 | "easy-format" 18 | "biniou" {>= "1.2.0"} 19 | "alcotest" {with-test & >= "0.8.5"} 20 | ] 21 | synopsis: 22 | "Yojson is an optimized parsing and printing library for the JSON format" 23 | description: """ 24 | Yojson is an optimized parsing and printing library for the JSON format. 25 | 26 | It addresses a few shortcomings of json-wheel including 2x speedup, 27 | polymorphic variants and optional syntax for tuples and variants. 28 | 29 | ydump is a pretty-printing command-line program provided with the 30 | yojson package. 31 | 32 | The program atdgen can be used to derive OCaml-JSON serializers and 33 | deserializers from type definitions.""" 34 | url { 35 | src: 36 | "https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz" 37 | checksum: "md5=b89d39ca3f8c532abe5f547ad3b8f84d" 38 | } 39 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/overrides/opam__s__menhir_opam__c__20200211_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@opam/fix": "*" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /fetch-core.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 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/files/findlib-1.8.1.patch: -------------------------------------------------------------------------------- 1 | --- ./Makefile 2 | +++ ./Makefile 3 | @@ -57,16 +57,16 @@ 4 | cat findlib.conf.in | \ 5 | $(SH) tools/patch '@SITELIB@' '$(OCAML_SITELIB)' >findlib.conf 6 | if ./tools/cmd_from_same_dir ocamlc; then \ 7 | - echo 'ocamlc="ocamlc.opt"' >>findlib.conf; \ 8 | + echo 'ocamlc="ocamlc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 9 | fi 10 | if ./tools/cmd_from_same_dir ocamlopt; then \ 11 | - echo 'ocamlopt="ocamlopt.opt"' >>findlib.conf; \ 12 | + echo 'ocamlopt="ocamlopt.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 13 | fi 14 | if ./tools/cmd_from_same_dir ocamldep; then \ 15 | - echo 'ocamldep="ocamldep.opt"' >>findlib.conf; \ 16 | + echo 'ocamldep="ocamldep.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 17 | fi 18 | if ./tools/cmd_from_same_dir ocamldoc; then \ 19 | - echo 'ocamldoc="ocamldoc.opt"' >>findlib.conf; \ 20 | + echo 'ocamldoc="ocamldoc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 21 | fi 22 | 23 | .PHONY: install-doc 24 | --- ./src/findlib/findlib_config.mlp 25 | +++ ./src/findlib/findlib_config.mlp 26 | @@ -24,3 +24,5 @@ 27 | | "MacOS" -> "" (* don't know *) 28 | | _ -> failwith "Unknown Sys.os_type" 29 | ;; 30 | + 31 | +let exec_suffix = "@EXEC_SUFFIX@";; 32 | --- ./src/findlib/findlib.ml 33 | +++ ./src/findlib/findlib.ml 34 | @@ -28,15 +28,20 @@ 35 | let conf_ldconf = ref "";; 36 | let conf_ignore_dups_in = ref ([] : string list);; 37 | 38 | -let ocamlc_default = "ocamlc";; 39 | -let ocamlopt_default = "ocamlopt";; 40 | -let ocamlcp_default = "ocamlcp";; 41 | -let ocamloptp_default = "ocamloptp";; 42 | -let ocamlmklib_default = "ocamlmklib";; 43 | -let ocamlmktop_default = "ocamlmktop";; 44 | -let ocamldep_default = "ocamldep";; 45 | -let ocamlbrowser_default = "ocamlbrowser";; 46 | -let ocamldoc_default = "ocamldoc";; 47 | +let add_exec str = 48 | + match Findlib_config.exec_suffix with 49 | + | "" -> str 50 | + | a -> str ^ a ;; 51 | +let ocamlc_default = add_exec "ocamlc";; 52 | +let ocamlopt_default = add_exec "ocamlopt";; 53 | +let ocamlcp_default = add_exec "ocamlcp";; 54 | +let ocamloptp_default = add_exec "ocamloptp";; 55 | +let ocamlmklib_default = add_exec "ocamlmklib";; 56 | +let ocamlmktop_default = add_exec "ocamlmktop";; 57 | +let ocamldep_default = add_exec "ocamldep";; 58 | +let ocamlbrowser_default = add_exec "ocamlbrowser";; 59 | +let ocamldoc_default = add_exec "ocamldoc";; 60 | + 61 | 62 | 63 | let init_manually 64 | --- ./src/findlib/fl_package_base.ml 65 | +++ ./src/findlib/fl_package_base.ml 66 | @@ -133,7 +133,15 @@ 67 | List.find (fun def -> def.def_var = "exists_if") p.package_defs in 68 | let files = Fl_split.in_words def.def_value in 69 | List.exists 70 | - (fun file -> Sys.file_exists (Filename.concat d' file)) 71 | + (fun file -> 72 | + let fln = Filename.concat d' file in 73 | + let e = Sys.file_exists fln in 74 | + (* necessary for ppx executables *) 75 | + if e || Sys.os_type <> "Win32" || Filename.check_suffix fln ".exe" then 76 | + e 77 | + else 78 | + Sys.file_exists (fln ^ ".exe") 79 | + ) 80 | files 81 | with Not_found -> true in 82 | 83 | --- ./src/findlib/fl_split.ml 84 | +++ ./src/findlib/fl_split.ml 85 | @@ -126,10 +126,17 @@ 86 | | '/' | '\\' -> true 87 | | _ -> false in 88 | let norm_dir_win() = 89 | - if l >= 1 && s.[0] = '/' then 90 | - Buffer.add_char b '\\' else Buffer.add_char b s.[0]; 91 | - if l >= 2 && s.[1] = '/' then 92 | - Buffer.add_char b '\\' else Buffer.add_char b s.[1]; 93 | + if l >= 1 then ( 94 | + if s.[0] = '/' then 95 | + Buffer.add_char b '\\' 96 | + else 97 | + Buffer.add_char b s.[0] ; 98 | + if l >= 2 then 99 | + if s.[1] = '/' then 100 | + Buffer.add_char b '\\' 101 | + else 102 | + Buffer.add_char b s.[1]; 103 | + ); 104 | for k = 2 to l - 1 do 105 | let c = s.[k] in 106 | if is_slash c then ( 107 | --- ./src/findlib/frontend.ml 108 | +++ ./src/findlib/frontend.ml 109 | @@ -31,10 +31,18 @@ 110 | else 111 | Sys_error (arg ^ ": " ^ Unix.error_message code) 112 | 113 | +let is_win = Sys.os_type = "Win32" 114 | + 115 | +let () = 116 | + match Findlib_config.system with 117 | + | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> 118 | + (try set_binary_mode_out stdout true with _ -> ()); 119 | + (try set_binary_mode_out stderr true with _ -> ()); 120 | + | _ -> () 121 | 122 | let slashify s = 123 | match Findlib_config.system with 124 | - | "mingw" | "mingw64" | "cygwin" -> 125 | + | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> 126 | let b = Buffer.create 80 in 127 | String.iter 128 | (function 129 | @@ -49,7 +57,7 @@ 130 | 131 | let out_path ?(prefix="") s = 132 | match Findlib_config.system with 133 | - | "mingw" | "mingw64" | "cygwin" -> 134 | + | "win32" | "win64" | "mingw" | "mingw64" | "cygwin" -> 135 | let u = slashify s in 136 | prefix ^ 137 | (if String.contains u ' ' then 138 | @@ -273,11 +281,9 @@ 139 | 140 | 141 | let identify_dir d = 142 | - match Sys.os_type with 143 | - | "Win32" -> 144 | - failwith "identify_dir" (* not available *) 145 | - | _ -> 146 | - let s = Unix.stat d in 147 | + if is_win then 148 | + failwith "identify_dir"; (* not available *) 149 | + let s = Unix.stat d in 150 | (s.Unix.st_dev, s.Unix.st_ino) 151 | ;; 152 | 153 | @@ -459,6 +465,96 @@ 154 | ) 155 | packages 156 | 157 | +let rewrite_cmd s = 158 | + if s = "" || not is_win then 159 | + s 160 | + else 161 | + let s = 162 | + let l = String.length s in 163 | + let b = Buffer.create l in 164 | + for i = 0 to pred l do 165 | + match s.[i] with 166 | + | '/' -> Buffer.add_char b '\\' 167 | + | x -> Buffer.add_char b x 168 | + done; 169 | + Buffer.contents b 170 | + in 171 | + if (Filename.is_implicit s && String.contains s '\\' = false) || 172 | + Filename.check_suffix (String.lowercase s) ".exe" then 173 | + s 174 | + else 175 | + let s' = s ^ ".exe" in 176 | + if Sys.file_exists s' then 177 | + s' 178 | + else 179 | + s 180 | + 181 | +let rewrite_cmd s = 182 | + if s = "" || not is_win then s else 183 | + let s = 184 | + let l = String.length s in 185 | + let b = Buffer.create l in 186 | + for i = 0 to pred l do 187 | + match s.[i] with 188 | + | '/' -> Buffer.add_char b '\\' 189 | + | x -> Buffer.add_char b x 190 | + done; 191 | + Buffer.contents b 192 | + in 193 | + if (Filename.is_implicit s && String.contains s '\\' = false) || 194 | + Filename.check_suffix (String.lowercase s) ".exe" then 195 | + s 196 | + else 197 | + let s' = s ^ ".exe" in 198 | + if Sys.file_exists s' then 199 | + s' 200 | + else 201 | + s 202 | + 203 | +let rewrite_pp cmd = 204 | + if not is_win then cmd else 205 | + let module T = struct exception Keep end in 206 | + let is_whitespace = function 207 | + | ' ' | '\011' | '\012' | '\n' | '\r' | '\t' -> true 208 | + | _ -> false in 209 | + (* characters that triggers special behaviour (cmd.exe, not unix shell) *) 210 | + let is_unsafe_char = function 211 | + | '(' | ')' | '%' | '!' | '^' | '<' | '>' | '&' -> true 212 | + | _ -> false in 213 | + let len = String.length cmd in 214 | + let buf = Buffer.create (len + 4) in 215 | + let buf_cmd = Buffer.create len in 216 | + let rec iter_ws i = 217 | + if i >= len then () else 218 | + let cur = cmd.[i] in 219 | + if is_whitespace cur then ( 220 | + Buffer.add_char buf cur; 221 | + iter_ws (succ i) 222 | + ) 223 | + else 224 | + iter_cmd i 225 | + and iter_cmd i = 226 | + if i >= len then add_buf_cmd () else 227 | + let cur = cmd.[i] in 228 | + if is_unsafe_char cur || cur = '"' || cur = '\'' then 229 | + raise T.Keep; 230 | + if is_whitespace cur then ( 231 | + add_buf_cmd (); 232 | + Buffer.add_substring buf cmd i (len - i) 233 | + ) 234 | + else ( 235 | + Buffer.add_char buf_cmd cur; 236 | + iter_cmd (succ i) 237 | + ) 238 | + and add_buf_cmd () = 239 | + if Buffer.length buf_cmd > 0 then 240 | + Buffer.add_string buf (rewrite_cmd (Buffer.contents buf_cmd)) 241 | + in 242 | + try 243 | + iter_ws 0; 244 | + Buffer.contents buf 245 | + with 246 | + | T.Keep -> cmd 247 | 248 | let process_pp_spec syntax_preds packages pp_opts = 249 | (* Returns: pp_command *) 250 | @@ -549,7 +645,7 @@ 251 | None -> [] 252 | | Some cmd -> 253 | ["-pp"; 254 | - cmd ^ " " ^ 255 | + (rewrite_cmd cmd) ^ " " ^ 256 | String.concat " " (List.map Filename.quote pp_i_options) ^ " " ^ 257 | String.concat " " (List.map Filename.quote pp_archives) ^ " " ^ 258 | String.concat " " (List.map Filename.quote pp_opts)] 259 | @@ -625,9 +721,11 @@ 260 | in 261 | try 262 | let preprocessor = 263 | + rewrite_cmd ( 264 | resolve_path 265 | ~base ~explicit:true 266 | - (package_property predicates pname "ppx") in 267 | + (package_property predicates pname "ppx") ) 268 | + in 269 | ["-ppx"; String.concat " " (preprocessor :: options)] 270 | with Not_found -> [] 271 | ) 272 | @@ -895,6 +993,14 @@ 273 | switch (e.g. -L instead of -L ) 274 | *) 275 | 276 | +(* We may need to remove files on which we do not have complete control. 277 | + On Windows, removing a read-only file fails so try to change the 278 | + mode of the file first. *) 279 | +let remove_file fname = 280 | + try Sys.remove fname 281 | + with Sys_error _ when is_win -> 282 | + (try Unix.chmod fname 0o666 with Unix.Unix_error _ -> ()); 283 | + Sys.remove fname 284 | 285 | let ocamlc which () = 286 | 287 | @@ -1022,9 +1128,12 @@ 288 | 289 | "-intf", 290 | Arg.String (fun s -> pass_files := !pass_files @ [ Intf(slashify s) ]); 291 | - 292 | + 293 | "-pp", 294 | - Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" s); 295 | + Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" (rewrite_pp s)); 296 | + 297 | + "-ppx", 298 | + Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); 299 | 300 | "-thread", 301 | Arg.Unit (fun _ -> threads := threads_default); 302 | @@ -1237,7 +1346,7 @@ 303 | with 304 | any -> 305 | close_out initl; 306 | - Sys.remove initl_file_name; 307 | + remove_file initl_file_name; 308 | raise any 309 | end; 310 | 311 | @@ -1245,9 +1354,9 @@ 312 | at_exit 313 | (fun () -> 314 | let tr f x = try f x with _ -> () in 315 | - tr Sys.remove initl_file_name; 316 | - tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmi"); 317 | - tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmo"); 318 | + tr remove_file initl_file_name; 319 | + tr remove_file (Filename.chop_extension initl_file_name ^ ".cmi"); 320 | + tr remove_file (Filename.chop_extension initl_file_name ^ ".cmo"); 321 | ); 322 | 323 | let exclude_list = [ stdlibdir; threads_dir; vmthreads_dir ] in 324 | @@ -1493,7 +1602,9 @@ 325 | [ "-v", Arg.Unit (fun () -> verbose := Verbose); 326 | "-pp", Arg.String (fun s -> 327 | pp_specified := true; 328 | - options := !options @ ["-pp"; s]); 329 | + options := !options @ ["-pp"; rewrite_pp s]); 330 | + "-ppx", Arg.String (fun s -> 331 | + options := !options @ ["-ppx"; rewrite_pp s]); 332 | ] 333 | ) 334 | ) 335 | @@ -1672,7 +1783,9 @@ 336 | Arg.String (fun s -> add_spec_fn "-I" (slashify (resolve_path s))); 337 | 338 | "-pp", Arg.String (fun s -> pp_specified := true; 339 | - add_spec_fn "-pp" s); 340 | + add_spec_fn "-pp" (rewrite_pp s)); 341 | + "-ppx", Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); 342 | + 343 | ] 344 | ) 345 | ) 346 | @@ -1830,7 +1943,10 @@ 347 | output_string ch_out append; 348 | close_out ch_out; 349 | close_in ch_in; 350 | - Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime; 351 | + (try Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime 352 | + with Unix.Unix_error(e,_,_) -> 353 | + prerr_endline("Warning: setting utimes for " ^ outpath 354 | + ^ ": " ^ Unix.error_message e)); 355 | 356 | prerr_endline("Installed " ^ outpath); 357 | with 358 | @@ -1882,6 +1998,8 @@ 359 | Unix.openfile (Filename.concat dir owner_file) [Unix.O_RDONLY] 0 in 360 | let f = 361 | Unix.in_channel_of_descr fd in 362 | + if is_win then 363 | + set_binary_mode_in f false; 364 | try 365 | let line = input_line f in 366 | let is_my_file = (line = pkg) in 367 | @@ -2208,7 +2326,7 @@ 368 | let lines = read_ldconf !ldconf in 369 | let dlldir_norm = Fl_split.norm_dir dlldir in 370 | let dlldir_norm_lc = string_lowercase_ascii dlldir_norm in 371 | - let ci_filesys = (Sys.os_type = "Win32") in 372 | + let ci_filesys = is_win in 373 | let check_dir d = 374 | let d' = Fl_split.norm_dir d in 375 | (d' = dlldir_norm) || 376 | @@ -2356,7 +2474,7 @@ 377 | List.iter 378 | (fun file -> 379 | let absfile = Filename.concat dlldir file in 380 | - Sys.remove absfile; 381 | + remove_file absfile; 382 | prerr_endline ("Removed " ^ absfile) 383 | ) 384 | dll_files 385 | @@ -2365,7 +2483,7 @@ 386 | (* Remove the files from the package directory: *) 387 | if Sys.file_exists pkgdir then begin 388 | let files = Sys.readdir pkgdir in 389 | - Array.iter (fun f -> Sys.remove (Filename.concat pkgdir f)) files; 390 | + Array.iter (fun f -> remove_file (Filename.concat pkgdir f)) files; 391 | Unix.rmdir pkgdir; 392 | prerr_endline ("Removed " ^ pkgdir) 393 | end 394 | @@ -2415,7 +2533,9 @@ 395 | 396 | 397 | let print_configuration() = 398 | + let sl = slashify in 399 | let dir s = 400 | + let s = sl s in 401 | if Sys.file_exists s then 402 | s 403 | else 404 | @@ -2453,27 +2573,27 @@ 405 | if md = "" then "the corresponding package directories" else dir md 406 | ); 407 | Printf.printf "The standard library is assumed to reside in:\n %s\n" 408 | - (Findlib.ocaml_stdlib()); 409 | + (sl (Findlib.ocaml_stdlib())); 410 | Printf.printf "The ld.conf file can be found here:\n %s\n" 411 | - (Findlib.ocaml_ldconf()); 412 | + (sl (Findlib.ocaml_ldconf())); 413 | flush stdout 414 | | Some "conf" -> 415 | - print_endline (Findlib.config_file()) 416 | + print_endline (sl (Findlib.config_file())) 417 | | Some "path" -> 418 | - List.iter print_endline (Findlib.search_path()) 419 | + List.iter ( fun x -> print_endline (sl x)) (Findlib.search_path()) 420 | | Some "destdir" -> 421 | - print_endline (Findlib.default_location()) 422 | + print_endline ( sl (Findlib.default_location())) 423 | | Some "metadir" -> 424 | - print_endline (Findlib.meta_directory()) 425 | + print_endline ( sl (Findlib.meta_directory())) 426 | | Some "metapath" -> 427 | let mdir = Findlib.meta_directory() in 428 | let ddir = Findlib.default_location() in 429 | - print_endline 430 | - (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META") 431 | + print_endline ( sl 432 | + (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META")) 433 | | Some "stdlib" -> 434 | - print_endline (Findlib.ocaml_stdlib()) 435 | + print_endline ( sl (Findlib.ocaml_stdlib())) 436 | | Some "ldconf" -> 437 | - print_endline (Findlib.ocaml_ldconf()) 438 | + print_endline ( sl (Findlib.ocaml_ldconf())) 439 | | _ -> 440 | assert false 441 | ;; 442 | @@ -2481,7 +2601,7 @@ 443 | 444 | let ocamlcall pkg cmd = 445 | let dir = package_directory pkg in 446 | - let path = Filename.concat dir cmd in 447 | + let path = rewrite_cmd (Filename.concat dir cmd) in 448 | begin 449 | try Unix.access path [ Unix.X_OK ] 450 | with 451 | @@ -2647,6 +2767,10 @@ 452 | | Sys_error f -> 453 | prerr_endline ("ocamlfind: " ^ f); 454 | exit 2 455 | + | Unix.Unix_error (e, fn, f) -> 456 | + prerr_endline ("ocamlfind: " ^ fn ^ " " ^ f 457 | + ^ ": " ^ Unix.error_message e); 458 | + exit 2 459 | | Findlib.No_such_package(pkg,info) -> 460 | prerr_endline ("ocamlfind: Package `" ^ pkg ^ "' not found" ^ 461 | (if info <> "" then " - " ^ info else "")); 462 | --- ./src/findlib/Makefile 463 | +++ ./src/findlib/Makefile 464 | @@ -90,6 +90,7 @@ 465 | cat findlib_config.mlp | \ 466 | $(SH) $(TOP)/tools/patch '@CONFIGFILE@' '$(OCAMLFIND_CONF)' | \ 467 | $(SH) $(TOP)/tools/patch '@STDLIB@' '$(OCAML_CORE_STDLIB)' | \ 468 | + $(SH) $(TOP)/tools/patch '@EXEC_SUFFIX@' '$(EXEC_SUFFIX)' | \ 469 | sed -e 's;@AUTOLINK@;$(OCAML_AUTOLINK);g' \ 470 | -e 's;@SYSTEM@;$(SYSTEM);g' \ 471 | >findlib_config.ml 472 | -------------------------------------------------------------------------------- /fetch-core.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < findlib-1.8.1.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 | -------------------------------------------------------------------------------- /fetch-core.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fetch-core", 3 | "version": "0.1.0-alpha.5", 4 | "description": "A fetch interface/functor for ReasonML/OCaml", 5 | "license": "MIT", 6 | "esy": { 7 | "build": "dune build -p #{self.name}", 8 | "buildDev": "refmterr dune build -p #{self.name}" 9 | }, 10 | "scripts": { 11 | "format": "esy @#{self.name} dune build @fmt --auto-promote", 12 | "test": "esy @#{self.name} b dune exec FetchTestRunner", 13 | "test:watch": "esy @#{self.name} b dune runtest test --watch --force" 14 | }, 15 | "dependencies": { 16 | "@opam/dune": "*", 17 | "@esy-ocaml/reason": "*", 18 | "ocaml": ">=4.8.0" 19 | }, 20 | "devDependencies": { 21 | "ocaml": "~4.9.0", 22 | "refmterr": "*", 23 | "@reason-native/rely": "3.2.1", 24 | "@opam/ocaml-lsp-server": "ocaml/ocaml-lsp:ocaml-lsp-server.opam" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /fetch-core.opam: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessp/fetch/cca3980900c70d21341bf0aa9a1e091e75161f23/fetch-core.opam -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/.gitattributes: -------------------------------------------------------------------------------- 1 | 2 | # Set eol to LF so files aren't converted to CRLF-eol on Windows. 3 | * text eol=lf linguist-generated 4 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Reset any possible .gitignore, we want all esy.lock to be un-ignored. 3 | !* 4 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/angstrom.0.14.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Spiros Eliopoulos " 3 | authors: [ "Spiros Eliopoulos " ] 4 | license: "BSD-3-clause" 5 | homepage: "https://github.com/inhabitedtype/angstrom" 6 | bug-reports: "https://github.com/inhabitedtype/angstrom/issues" 7 | dev-repo: "git+https://github.com/inhabitedtype/angstrom.git" 8 | build: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.04.0"} 15 | "dune" {>= "1.0"} 16 | "alcotest" {with-test & >= "0.8.1"} 17 | "bigstringaf" 18 | "result" 19 | ] 20 | synopsis: "Parser combinators built for speed and memory-efficiency" 21 | description: """ 22 | Angstrom is a parser-combinator library that makes it easy to write efficient, 23 | expressive, and reusable parsers suitable for high-performance applications. It 24 | exposes monadic and applicative interfaces for composition, and supports 25 | incremental input through buffered and unbuffered interfaces. Both interfaces 26 | give the user total control over the blocking behavior of their application, 27 | with the unbuffered interface enabling zero-copy IO. Parsers are backtracking by 28 | default and support unbounded lookahead.""" 29 | url { 30 | src: "https://github.com/inhabitedtype/angstrom/archive/0.14.1.tar.gz" 31 | checksum: "md5=915bbcc1adbd0debc1b0a54531c7601a" 32 | } 33 | -------------------------------------------------------------------------------- /fetch-native-lwt.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 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/atd.2.2.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: "Parser for the ATD data format description language" 3 | description: """ 4 | ATD is the OCaml library providing a parser for the ATD language and various 5 | utilities. ATD stands for Adjustable Type Definitions in reference to its main 6 | property of supporting annotations that allow a good fit with a variety of data 7 | formats. """ 8 | maintainer: ["Rudi Grinberg "] 9 | authors: [ 10 | "Martin Jambon " 11 | "David Sheets " 12 | "Rudi Grinberg " 13 | "Ivan Jager " 14 | "Jeff Meister " 15 | "Carmelo Piccione " 16 | "Raman Varabets " 17 | "Mathieu Baudet " 18 | "Rauan Mayemir " 19 | "Louis Roché " 20 | "Brendan Long " 21 | "Christophe Troestler " 22 | "Vincent Bernardoff " 23 | "haoyang " 24 | ] 25 | license: "MIT" 26 | homepage: "https://github.com/ahrefs/atd" 27 | bug-reports: "https://github.com/ahrefs/atd/issues" 28 | depends: [ 29 | "ocaml" {>= "4.02"} 30 | "dune" {>= "2.0"} 31 | "menhir" 32 | "easy-format" 33 | "re" 34 | ] 35 | dev-repo: "git+https://github.com/ahrefs/atd.git" 36 | build: [ 37 | ["dune" "subst"] {pinned} 38 | [ 39 | "dune" 40 | "build" 41 | "-p" 42 | name 43 | "-j" 44 | jobs 45 | "@install" 46 | "@doc" {with-doc} 47 | ] 48 | ] 49 | url { 50 | src: "https://github.com/ahrefs/atd/releases/download/2.2.1/atd-2.2.1.tbz" 51 | checksum: [ 52 | "sha256=db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e" 53 | "sha512=0c7f1985cc4d87ddd541bb2f7085b72f81aaef69468653319a4a52e6cd6c9318511229784a12cdb413ae500e7a5b8195759e0d8d49946a9b00f62e8dda07e8a2" 54 | ] 55 | } 56 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/atdgen-runtime.2.2.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: "Runtime library for code generated by atdgen" 3 | description: """ 4 | This package should be used only in conjunction with the stdgen code 5 | generator""" 6 | maintainer: ["Rudi Grinberg "] 7 | authors: [ 8 | "Martin Jambon " 9 | "David Sheets " 10 | "Rudi Grinberg " 11 | "Ivan Jager " 12 | "Jeff Meister " 13 | "Carmelo Piccione " 14 | "Raman Varabets " 15 | "Mathieu Baudet " 16 | "Rauan Mayemir " 17 | "Louis Roché " 18 | "Brendan Long " 19 | "Christophe Troestler " 20 | "Vincent Bernardoff " 21 | "haoyang " 22 | ] 23 | license: "MIT" 24 | homepage: "https://github.com/ahrefs/atd" 25 | bug-reports: "https://github.com/ahrefs/atd/issues" 26 | depends: [ 27 | "ocaml" {>= "4.02"} 28 | "dune" {>= "2.0"} 29 | "yojson" {>= "1.7.0"} 30 | "biniou" {>= "1.0.6"} 31 | "re" 32 | ] 33 | dev-repo: "git+https://github.com/ahrefs/atd.git" 34 | build: [ 35 | ["dune" "subst"] {pinned} 36 | [ 37 | "dune" 38 | "build" 39 | "-p" 40 | name 41 | "-j" 42 | jobs 43 | "@install" 44 | "@doc" {with-doc} 45 | ] 46 | ] 47 | url { 48 | src: "https://github.com/ahrefs/atd/releases/download/2.2.1/atd-2.2.1.tbz" 49 | checksum: [ 50 | "sha256=db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e" 51 | "sha512=0c7f1985cc4d87ddd541bb2f7085b72f81aaef69468653319a4a52e6cd6c9318511229784a12cdb413ae500e7a5b8195759e0d8d49946a9b00f62e8dda07e8a2" 52 | ] 53 | } 54 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/atdgen.2.2.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: 3 | "Generates efficient JSON serializers, deserializers and validators" 4 | description: """ 5 | Atdgen is a command-line program that takes as input type definitions in the ATD 6 | syntax and produces OCaml code suitable for data serialization and 7 | deserialization. 8 | Two data formats are currently supported, these are biniou and JSON. 9 | Atdgen-biniou and Atdgen-json will refer to Atdgen used in one context or the 10 | other. 11 | Atdgen was designed with efficiency and durability in mind. Software authors are 12 | encouraged to use Atdgen directly and to write tools that may reuse part of 13 | Atdgen’s source code.""" 14 | maintainer: ["Rudi Grinberg "] 15 | authors: [ 16 | "Martin Jambon " 17 | "David Sheets " 18 | "Rudi Grinberg " 19 | "Ivan Jager " 20 | "Jeff Meister " 21 | "Carmelo Piccione " 22 | "Raman Varabets " 23 | "Mathieu Baudet " 24 | "Rauan Mayemir " 25 | "Louis Roché " 26 | "Brendan Long " 27 | "Christophe Troestler " 28 | "Vincent Bernardoff " 29 | "haoyang " 30 | ] 31 | license: "MIT" 32 | homepage: "https://github.com/ahrefs/atd" 33 | bug-reports: "https://github.com/ahrefs/atd/issues" 34 | depends: [ 35 | "ocaml" {>= "4.02"} 36 | "dune" {>= "2.0"} 37 | "atd" {>= "2.0.0"} 38 | "atdgen-runtime" {>= "2.0.0"} 39 | "atdgen-codec-runtime" {with-test} 40 | "biniou" {>= "1.0.6"} 41 | "yojson" {>= "1.7.0"} 42 | ] 43 | dev-repo: "git+https://github.com/ahrefs/atd.git" 44 | build: [ 45 | ["dune" "subst"] {pinned} 46 | [ 47 | "dune" 48 | "build" 49 | "-p" 50 | name 51 | "-j" 52 | jobs 53 | "@install" 54 | "@doc" {with-doc} 55 | ] 56 | ] 57 | url { 58 | src: "https://github.com/ahrefs/atd/releases/download/2.2.1/atd-2.2.1.tbz" 59 | checksum: [ 60 | "sha256=db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e" 61 | "sha512=0c7f1985cc4d87ddd541bb2f7085b72f81aaef69468653319a4a52e6cd6c9318511229784a12cdb413ae500e7a5b8195759e0d8d49946a9b00f62e8dda07e8a2" 62 | ] 63 | } 64 | -------------------------------------------------------------------------------- /fetch-native-lwt.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 | -------------------------------------------------------------------------------- /fetch-native-lwt.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 | -------------------------------------------------------------------------------- /fetch-native-lwt.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 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/base64.3.4.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "mirageos-devel@lists.xenproject.org" 3 | authors: [ "Thomas Gazagnaire" 4 | "Anil Madhavapeddy" "Calascibetta Romain" 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 | "ocaml" {>="4.03.0"} 19 | "base-bytes" 20 | "dune-configurator" 21 | "dune" {>= "2.0"} 22 | "bos" {with-test} 23 | "rresult" {with-test} 24 | "alcotest" {with-test} 25 | ] 26 | build: [ 27 | ["dune" "subst"] 28 | ["dune" "build" "-p" name "-j" jobs] 29 | ["dune" "runtest" "-p" name] {with-test} 30 | ] 31 | url { 32 | src: 33 | "https://github.com/mirage/ocaml-base64/releases/download/v3.4.0/base64-v3.4.0.tbz" 34 | checksum: [ 35 | "sha256=1c9cf655bdd771a4d20014f7f29aadfde7e3821b01772b49f8ba4d4bda2b1634" 36 | "sha512=e66a67302a9eb136044bebf66a89a1d6e38a96c70622bb6cd27916fec36dcaf4b5b7e7d00c25608f0a2363f2ca4264a5fe765fe7747590958325dbce06311db9" 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/bigarray-compat.1.0.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: "Compatibility library to use Stdlib.Bigarray when possible" 3 | maintainer: "Lucas Pluvinage " 4 | authors: "Lucas Pluvinage " 5 | license: "ISC" 6 | homepage: "https://github.com/mirage/bigarray-compat" 7 | bug-reports: "https://github.com/mirage/bigarray-compat/issues" 8 | depends: [ 9 | "ocaml" {>= "4.03.0"} 10 | "dune" {>= "1.0"} 11 | ] 12 | build: [ 13 | ["dune" "subst"] {pinned} 14 | ["dune" "build" "-p" name "-j" jobs] 15 | ] 16 | dev-repo: "git+https://github.com/mirage/bigarray-compat.git" 17 | url { 18 | src: "https://github.com/mirage/bigarray-compat/archive/v1.0.0.tar.gz" 19 | checksum: [ 20 | "md5=1cc7c25382a8900bada34aadfd66632e" 21 | "sha512=c365fee15582aca35d7b05268cde29e54774ad7df7be56762b4aad78ca1409d4326ad3b34af0f1cc2c7b872837290a9cd9ff43b47987c03bba7bba32fe8a030f" 22 | ] 23 | } -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/bigstringaf.0.6.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Spiros Eliopoulos " 3 | authors: [ "Spiros Eliopoulos " ] 4 | license: "BSD-3-clause" 5 | homepage: "https://github.com/inhabitedtype/bigstringaf" 6 | bug-reports: "https://github.com/inhabitedtype/bigstringaf/issues" 7 | dev-repo: "git+https://github.com/inhabitedtype/bigstringaf.git" 8 | build: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 12 | ] 13 | depends: [ 14 | "dune" {>= "1.0"} 15 | "alcotest" {with-test} 16 | "bigarray-compat" 17 | "ocaml" {>= "4.03.0"} 18 | ] 19 | depopts: [ 20 | "mirage-xen-posix" 21 | "ocaml-freestanding" 22 | ] 23 | conflicts: [ 24 | "mirage-xen-posix" {< "3.1.0"} 25 | "ocaml-freestanding" {< "0.4.1"} 26 | "js_of_ocaml" {< "3.5.0"} 27 | ] 28 | synopsis: "Bigstring intrinsics and fast blits based on memcpy/memmove" 29 | description: """ 30 | Bigstring intrinsics and fast blits based on memcpy/memmove 31 | 32 | The OCaml compiler has a bunch of intrinsics for Bigstrings, but they're not 33 | widely-known, sometimes misused, and so programs that use Bigstrings are slower 34 | than they have to be. And even if a library got that part right and exposed the 35 | intrinsics properly, the compiler doesn't have any fast blits between 36 | Bigstrings and other string-like types. 37 | 38 | So here they are. Go crazy. 39 | """ 40 | url { 41 | src: "https://github.com/inhabitedtype/bigstringaf/archive/0.6.1.tar.gz" 42 | checksum: "md5=dccf639273b1eec0e0f142f21319268d" 43 | } 44 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/biniou.1.2.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | build: [ 3 | ["dune" "subst"] {pinned} 4 | ["dune" "build" "-p" name "-j" jobs] 5 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 6 | ["dune" "build" "-p" name "@doc"] {with-doc} 7 | ] 8 | maintainer: ["martin@mjambon.com"] 9 | authors: ["Martin Jambon"] 10 | bug-reports: "https://github.com/mjambon/biniou/issues" 11 | homepage: "https://github.com/mjambon/biniou" 12 | doc: "https://mjambon.github.io/biniou/" 13 | license: "BSD-3-Clause" 14 | dev-repo: "git+https://github.com/mjambon/biniou.git" 15 | synopsis: 16 | "Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve" 17 | description: """ 18 | 19 | Biniou (pronounced "be new") is a binary data format designed for speed, safety, 20 | ease of use and backward compatibility as protocols evolve. Biniou is vastly 21 | equivalent to JSON in terms of functionality but allows implementations several 22 | times faster (4 times faster than yojson), with 25-35% space savings. 23 | 24 | Biniou data can be decoded into human-readable form without knowledge of type 25 | definitions except for field and variant names which are represented by 31-bit 26 | hashes. A program named bdump is provided for routine visualization of biniou 27 | data files. 28 | 29 | The program atdgen is used to derive OCaml-Biniou serializers and deserializers 30 | from type definitions. 31 | 32 | Biniou format specification: mjambon.github.io/atdgen-doc/biniou-format.txt""" 33 | depends: [ 34 | "easy-format" 35 | "dune" {>= "1.10"} 36 | "ocaml" {>= "4.02.3"} 37 | ] 38 | url { 39 | src: 40 | "https://github.com/mjambon/biniou/releases/download/1.2.1/biniou-1.2.1.tbz" 41 | checksum: [ 42 | "sha256=35546c68b1929a8e6d27a3b39ecd17b38303a0d47e65eb9d1480c2061ea84335" 43 | "sha512=82670cc77bf3e869ee26e5fbe5a5affa45a22bc8b6c4bd7e85473912780e0111baca59b34a2c14feae3543ce6e239d7fddaeab24b686a65bfe642cdb91d27ebf" 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/cmdliner.1.0.4/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.4.tbz" 35 | checksum: "fe2213d0bc63b1e10a2d0aa66d2fc8d9" 36 | } 37 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/conf-autoconf.0.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "unixjunkie@sdf.org" 3 | homepage: "http://www.gnu.org/software/autoconf" 4 | authors: "https://www.gnu.org/software/autoconf/autoconf.html#maintainer" 5 | bug-reports: "https://github.com/ocaml/opam-repository/issues" 6 | license: "GPL-3.0" 7 | build: [ 8 | ["which" "autoconf"] 9 | ] 10 | depends: ["conf-which" {build}] 11 | depexts: [ 12 | ["autoconf"] {os-family = "debian"} 13 | ["autoconf"] {os-distribution = "centos"} 14 | ["autoconf"] {os-distribution = "fedora"} 15 | ["autoconf"] {os-distribution = "arch"} 16 | ["sys-devel/autoconf"] {os-distribution = "gentoo"} 17 | ["autoconf"] {os-distribution = "nixos"} 18 | ["autoconf"] {os = "macos" & os-distribution = "homebrew"} 19 | ["devel/autoconf"] {os = "openbsd"} 20 | ["autoconf"] {os = "freebsd"} 21 | ["autoconf"] {os = "netbsd"} 22 | ["autoconf"] {os-distribution = "alpine"} 23 | ["autoconf"] {os-distribution = "ol"} 24 | ["autoconf"] {os-distribution = "rhel"} 25 | ] 26 | synopsis: "Virtual package relying on autoconf installation" 27 | description: """ 28 | This package can only install if the autoconf command 29 | is available on the system.""" 30 | flags: conf 31 | -------------------------------------------------------------------------------- /fetch-native-lwt.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.0-only" 7 | build: [["sh" "-exc" "echo | m4"]] 8 | depexts: [ 9 | ["m4"] {os-family = "debian"} 10 | ["m4"] {os-distribution = "fedora"} 11 | ["m4"] {os-distribution = "rhel"} 12 | ["m4"] {os-distribution = "centos"} 13 | ["m4"] {os-distribution = "alpine"} 14 | ["m4"] {os-distribution = "nixos"} 15 | ["m4"] {os-family = "suse"} 16 | ["m4"] {os-distribution = "ol"} 17 | ["m4"] {os-distribution = "arch"} 18 | ] 19 | synopsis: "Virtual package relying on m4" 20 | description: 21 | "This package can only install if the m4 binary is installed on the system." 22 | flags: conf 23 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/conf-pkg-config.1.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "unixjunkie@sdf.org" 3 | authors: ["Francois Berenger"] 4 | homepage: "http://www.freedesktop.org/wiki/Software/pkg-config/" 5 | bug-reports: "https://github.com/ocaml/opam-repository/issues" 6 | license: "GPL-1.0-or-later" 7 | build: [ 8 | ["pkg-config" "--help"] 9 | ] 10 | install: [ 11 | ["ln" "-s" "/usr/local/bin/pkgconf" "%{bin}%/pkg-config"] {os = "openbsd"} 12 | ] 13 | remove: [ 14 | ["rm" "-f" "%{bin}%/pkg-config"] {os = "openbsd"} 15 | ] 16 | post-messages: [ 17 | "conf-pkg-config: A symlink to /usr/local/bin/pkgconf has been installed in the OPAM bin directory (%{bin}%) on your PATH as 'pkg-config'. This is necessary for correct operation." {os = "openbsd"} 18 | ] 19 | depexts: [ 20 | ["pkg-config"] {os-family = "debian"} 21 | ["pkgconf"] {os-distribution = "arch"} 22 | ["pkgconfig"] {os-distribution = "fedora"} 23 | ["pkgconfig"] {os-distribution = "centos" & os-version <= "7"} 24 | ["pkgconfig"] {os-distribution = "mageia"} 25 | ["pkgconfig"] {os-distribution = "rhel" & os-version <= "7"} 26 | ["pkgconfig"] {os-distribution = "ol"} 27 | ["pkgconf"] {os-distribution = "alpine"} 28 | ["pkgconfig"] {os-distribution = "nixos"} 29 | ["devel/pkgconf"] {os = "openbsd"} 30 | ["pkg-config"] {os = "macos" & os-distribution = "homebrew"} 31 | ["pkgconf"] {os = "freebsd"} 32 | ["pkgconf-pkg-config"] {os-distribution = "rhel" & os-version >= "8"} 33 | ["pkgconf-pkg-config"] {os-distribution = "centos" & os-version >= "8"} 34 | ["pkg-config"] {os-distribution = "cygwinports"} 35 | ] 36 | synopsis: "Virtual package relying on pkg-config installation" 37 | description: """ 38 | This package can only install if the pkg-config package is installed 39 | on the system.""" 40 | flags: conf 41 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/cppo.1.6.6/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: "Martin Jambon" 4 | license: "BSD-3-Clause" 5 | homepage: "http://mjambon.com/cppo.html" 6 | doc: "https://ocaml-community.github.io/cppo/" 7 | bug-reports: "https://github.com/ocaml-community/cppo/issues" 8 | depends: [ 9 | "ocaml" {>= "4.03"} 10 | "dune" {>= "1.0"} 11 | "base-unix" 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/ocaml-community/cppo.git" 19 | synopsis: "Code preprocessor like cpp for OCaml" 20 | description: """ 21 | Cppo is an equivalent of the C preprocessor for OCaml programs. 22 | It allows the definition of simple macros and file inclusion. 23 | 24 | Cppo is: 25 | 26 | * more OCaml-friendly than cpp 27 | * easy to learn without consulting a manual 28 | * reasonably fast 29 | * simple to install and to maintain 30 | """ 31 | url { 32 | src: "https://github.com/ocaml-community/cppo/releases/download/v1.6.6/cppo-v1.6.6.tbz" 33 | checksum: [ 34 | "sha256=e7272996a7789175b87bb998efd079794a8db6625aae990d73f7b4484a07b8a0" 35 | "sha512=44ecf9d225d9e45490a2feac0bde04865ca398dba6c3579e3370fcd1ea255707b8883590852af8b2df87123801062b9f3acce2455c092deabf431f9c4fb8d8eb" 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/dune-configurator.2.5.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: "Helper library for gathering system configuration" 3 | description: """ 4 | dune-configurator is a small library that helps writing OCaml scripts that 5 | test features available on the system, in order to generate config.h 6 | files for instance. 7 | Among other things, dune-configurator allows one to: 8 | - test if a C program compiles 9 | - query pkg-config 10 | - import #define from OCaml header files 11 | - generate config.h file 12 | """ 13 | maintainer: ["Jane Street Group, LLC "] 14 | authors: ["Jane Street Group, LLC "] 15 | license: "MIT" 16 | homepage: "https://github.com/ocaml/dune" 17 | doc: "https://dune.readthedocs.io/" 18 | bug-reports: "https://github.com/ocaml/dune/issues" 19 | depends: [ 20 | "dune" {>= "2.3"} 21 | "dune-private-libs" {= version} 22 | ] 23 | dev-repo: "git+https://github.com/ocaml/dune.git" 24 | build: [ 25 | ["dune" "subst"] {pinned} 26 | [ 27 | "dune" 28 | "build" 29 | "-p" 30 | name 31 | "-j" 32 | jobs 33 | "@install" 34 | "@doc" {with-doc} 35 | ] 36 | ] 37 | url { 38 | src: "https://github.com/ocaml/dune/releases/download/2.5.1/dune-2.5.1.tbz" 39 | checksum: [ 40 | "sha256=8f77d3a87f208e0d7cccaa1c48c4bb1bb87d62d07c3f25e9b8ba298e028ce52b" 41 | "sha512=f209f12ced10c1abf8782bdb0143f4cec77795f7174d2cc75130afb1e01550b01f2f77b9e3ec4888efdad83d2f9878d179b39126f824f4e522f3ef4da34bf27e" 42 | ] 43 | } 44 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/dune-private-libs.2.5.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: "Private libraries of Dune" 3 | description: """ 4 | !!!!!!!!!!!!!!!!!!!!!! 5 | !!!!! DO NOT USE !!!!! 6 | !!!!!!!!!!!!!!!!!!!!!! 7 | 8 | This package contains code that is shared between various dune-xxx 9 | packages. However, it is not meant for public consumption and provides 10 | no stability guarantee. 11 | """ 12 | maintainer: ["Jane Street Group, LLC "] 13 | authors: ["Jane Street Group, LLC "] 14 | license: "MIT" 15 | homepage: "https://github.com/ocaml/dune" 16 | doc: "https://dune.readthedocs.io/" 17 | bug-reports: "https://github.com/ocaml/dune/issues" 18 | depends: [ 19 | "dune" {>= "2.3"} 20 | "ocaml" {>= "4.07"} 21 | ] 22 | dev-repo: "git+https://github.com/ocaml/dune.git" 23 | build: [ 24 | ["dune" "subst"] {pinned} 25 | [ 26 | "dune" 27 | "build" 28 | "-p" 29 | name 30 | "-j" 31 | jobs 32 | "@install" 33 | "@doc" {with-doc} 34 | ] 35 | ] 36 | url { 37 | src: "https://github.com/ocaml/dune/releases/download/2.5.1/dune-2.5.1.tbz" 38 | checksum: [ 39 | "sha256=8f77d3a87f208e0d7cccaa1c48c4bb1bb87d62d07c3f25e9b8ba298e028ce52b" 40 | "sha512=f209f12ced10c1abf8782bdb0143f4cec77795f7174d2cc75130afb1e01550b01f2f77b9e3ec4888efdad83d2f9878d179b39126f824f4e522f3ef4da34bf27e" 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/dune.2.5.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: "Fast, portable, and opinionated build system" 3 | description: """ 4 | 5 | dune is a build system that was designed to simplify the release of 6 | Jane Street packages. It reads metadata from "dune" files following a 7 | very simple s-expression syntax. 8 | 9 | dune is fast, has very low-overhead, and supports parallel builds on 10 | all platforms. It has no system dependencies; all you need to build 11 | dune or packages using dune is OCaml. You don't need make or bash 12 | as long as the packages themselves don't use bash explicitly. 13 | 14 | dune supports multi-package development by simply dropping multiple 15 | repositories into the same directory. 16 | 17 | It also supports multi-context builds, such as building against 18 | several opam roots/switches simultaneously. This helps maintaining 19 | packages across several versions of OCaml and gives cross-compilation 20 | for free. 21 | """ 22 | maintainer: ["Jane Street Group, LLC "] 23 | authors: ["Jane Street Group, LLC "] 24 | license: "MIT" 25 | homepage: "https://github.com/ocaml/dune" 26 | doc: "https://dune.readthedocs.io/" 27 | bug-reports: "https://github.com/ocaml/dune/issues" 28 | conflicts: [ 29 | "dune-configurator" {< "2.3.0"} 30 | "odoc" {< "1.3.0"} 31 | "dune-release" {< "1.3.0"} 32 | "jbuilder" {= "transition"} 33 | ] 34 | dev-repo: "git+https://github.com/ocaml/dune.git" 35 | build: [ 36 | # opam 2 sets OPAM_SWITCH_PREFIX, so we don't need a hardcoded path 37 | ["ocaml" "configure.ml" "--libdir" lib] {opam-version < "2"} 38 | ["ocaml" "bootstrap.ml" "-j" jobs] 39 | ["./dune.exe" "build" "-p" name "--profile" "dune-bootstrap" "-j" jobs] 40 | ] 41 | depends: [ 42 | # Please keep the lower bound in sync with .travis.yml, dune-project 43 | # and min_ocaml_version in bootstrap.ml 44 | ("ocaml" {>= "4.07"} | ("ocaml" {< "4.07~~"} & "ocamlfind-secondary")) 45 | "base-unix" 46 | "base-threads" 47 | ] 48 | url { 49 | src: "https://github.com/ocaml/dune/releases/download/2.5.1/dune-2.5.1.tbz" 50 | checksum: [ 51 | "sha256=8f77d3a87f208e0d7cccaa1c48c4bb1bb87d62d07c3f25e9b8ba298e028ce52b" 52 | "sha512=f209f12ced10c1abf8782bdb0143f4cec77795f7174d2cc75130afb1e01550b01f2f77b9e3ec4888efdad83d2f9878d179b39126f824f4e522f3ef4da34bf27e" 53 | ] 54 | } 55 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/easy-format.1.3.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | build: [ 3 | ["dune" "subst"] {pinned} 4 | ["dune" "build" "-p" name "-j" jobs] 5 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 6 | ["dune" "build" "-p" name "@doc"] {with-doc} 7 | ] 8 | maintainer: ["martin@mjambon.com" "rudi.grinberg@gmail.com"] 9 | authors: ["Martin Jambon"] 10 | bug-reports: "https://github.com/mjambon/easy-format/issues" 11 | homepage: "https://github.com/mjambon/easy-format" 12 | doc: "https://mjambon.github.io/easy-format/" 13 | license: "BSD-3-Clause" 14 | dev-repo: "git+https://github.com/mjambon/easy-format.git" 15 | synopsis: 16 | "High-level and functional interface to the Format module of the OCaml standard library" 17 | description: """ 18 | 19 | This module offers a high-level and functional interface to the Format module of 20 | the OCaml standard library. It is a pretty-printing facility, i.e. it takes as 21 | input some code represented as a tree and formats this code into the most 22 | visually satisfying result, breaking and indenting lines of code where 23 | appropriate. 24 | 25 | Input data must be first modelled and converted into a tree using 3 kinds of 26 | nodes: 27 | 28 | * atoms 29 | * lists 30 | * labelled nodes 31 | 32 | Atoms represent any text that is guaranteed to be printed as-is. Lists can model 33 | any sequence of items such as arrays of data or lists of definitions that are 34 | labelled with something like "int main", "let x =" or "x:".""" 35 | depends: [ 36 | "dune" {>= "1.10"} 37 | "ocaml" {>= "4.02.3"} 38 | ] 39 | url { 40 | src: 41 | "https://github.com/mjambon/easy-format/releases/download/1.3.2/easy-format-1.3.2.tbz" 42 | checksum: [ 43 | "sha256=3440c2b882d537ae5e9011eb06abb53f5667e651ea4bb3b460ea8230fa8c1926" 44 | "sha512=e39377a2ff020ceb9ac29e8515a89d9bdbc91dfcfa871c4e3baafa56753fac2896768e5d9822a050dc1e2ade43c8967afb69391a386c0a8ecd4e1f774e236135" 45 | ] 46 | } 47 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/faraday-lwt-unix.0.7.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Spiros Eliopoulos " 3 | authors: [ "Spiros Eliopoulos " ] 4 | license: "BSD-3-clause" 5 | homepage: "https://github.com/inhabitedtype/faraday" 6 | bug-reports: "https://github.com/inhabitedtype/faraday/issues" 7 | dev-repo: "git+https://github.com/inhabitedtype/faraday.git" 8 | build: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ["dune" "runtest" "-p" name] {with-test} 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.02.0"} 15 | "dune" {>= "1.0"} 16 | "faraday-lwt" 17 | "lwt" {>= "2.7.0"} 18 | "base-unix" 19 | ] 20 | synopsis: "Lwt_unix support for Faraday" 21 | url { 22 | src: "https://github.com/inhabitedtype/faraday/archive/0.7.1.tar.gz" 23 | checksum: "md5=09396dbb4a08323194e092b6bff4aaf6" 24 | } 25 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/faraday-lwt.0.7.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Spiros Eliopoulos " 3 | authors: [ "Spiros Eliopoulos " ] 4 | license: "BSD-3-clause" 5 | homepage: "https://github.com/inhabitedtype/faraday" 6 | bug-reports: "https://github.com/inhabitedtype/faraday/issues" 7 | dev-repo: "git+https://github.com/inhabitedtype/faraday.git" 8 | build: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ["dune" "runtest" "-p" name] {with-test} 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.02.0"} 15 | "dune" {>= "1.0"} 16 | "faraday" {>= "0.5.0"} 17 | "lwt" 18 | ] 19 | synopsis: "Lwt support for Faraday" 20 | url { 21 | src: "https://github.com/inhabitedtype/faraday/archive/0.7.1.tar.gz" 22 | checksum: "md5=09396dbb4a08323194e092b6bff4aaf6" 23 | } 24 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/faraday.0.7.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Spiros Eliopoulos " 3 | authors: [ "Spiros Eliopoulos " ] 4 | license: "BSD-3-clause" 5 | homepage: "https://github.com/inhabitedtype/faraday" 6 | bug-reports: "https://github.com/inhabitedtype/faraday/issues" 7 | dev-repo: "git+https://github.com/inhabitedtype/faraday.git" 8 | build: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ["dune" "runtest" "-p" name] {with-test} 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.02.0"} 15 | "dune" {>= "1.0"} 16 | "alcotest" {with-test & >= "0.4.1"} 17 | "bigstringaf" 18 | ] 19 | synopsis: "A library for writing fast and memory-efficient serializers." 20 | description: """ 21 | Faraday is a library for writing fast and memory-efficient serializers. Its 22 | core type and related operation gives the user fine-grained control over 23 | copying and allocation behavior while serializing user-defined types, and 24 | presents the output in a form that makes it possible to use vectorized write 25 | operations, such as the writev system call, or any other platform or 26 | application-specific output APIs.""" 27 | url { 28 | src: "https://github.com/inhabitedtype/faraday/archive/0.7.1.tar.gz" 29 | checksum: "md5=09396dbb4a08323194e092b6bff4aaf6" 30 | } 31 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/fix.20200131/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "francois.pottier@inria.fr" 3 | authors: [ 4 | "François Pottier " 5 | ] 6 | homepage: "https://gitlab.inria.fr/fpottier/fix" 7 | dev-repo: "git+https://gitlab.inria.fr/fpottier/fix.git" 8 | bug-reports: "francois.pottier@inria.fr" 9 | build: [ 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | depends: [ 13 | "ocaml" { >= "4.03" } 14 | "dune" { >= "1.3" } 15 | ] 16 | synopsis: "Facilities for memoization and fixed points" 17 | url { 18 | src: 19 | "https://gitlab.inria.fr/fpottier/fix/repository/20200131/archive.tar.gz" 20 | checksum: [ 21 | "md5=991ff031666c662eaab638d2e0f4ac1d" 22 | "sha512=01c45a1d90b02ec0939e968b185a6a373ac6117e2287b9a26d3db9d71e9569d086cea50da60710fcab5c2ed9d3b4c72b76839c0651e436f1fb39c77dc7c04b5e" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/fpath.0.7.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["Daniel Bünzli "] 4 | homepage: "http://erratique.ch/software/fpath" 5 | doc: "http://erratique.ch/software/fpath/doc" 6 | dev-repo: "git+http://erratique.ch/repos/fpath.git" 7 | bug-reports: "https://github.com/dbuenzli/fpath/issues" 8 | tags: [ "file" "system" "path" "org:erratique" ] 9 | license: "ISC" 10 | depends: [ 11 | "ocaml" {>= "4.01.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build & >= "0.9.0"} 15 | "result" 16 | "astring" 17 | ] 18 | build: [[ 19 | "ocaml" "pkg/pkg.ml" "build" 20 | "--dev-pkg" "%{pinned}%" ]] 21 | synopsis: "File system paths for OCaml" 22 | description: """ 23 | Fpath is an OCaml module for handling file system paths with POSIX or 24 | Windows conventions. Fpath processes paths without accessing the file 25 | system and is independent from any system library. 26 | 27 | Fpath depends on [Astring][astring] and is distributed under the ISC 28 | license. 29 | 30 | [astring]: http://erratique.ch/software/astring""" 31 | url { 32 | src: "http://erratique.ch/software/fpath/releases/fpath-0.7.2.tbz" 33 | checksum: "md5=52c7ecb0bf180088336f3c645875fa41" 34 | } 35 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/hpack.0.2.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Antonio Nuno Monteiro " 3 | authors: [ "Pieter Goetschalckx <3.14.e.ter@gmail.com>" 4 | "Antonio Nuno Monteiro " ] 5 | license: "BSD-3-Clause" 6 | homepage: "https://github.com/anmonteiro/ocaml-h2" 7 | bug-reports: "https://github.com/anmonteiro/ocaml-h2/issues" 8 | dev-repo: "git+https://github.com/anmonteiro/ocaml-h2.git" 9 | doc: "https://anmonteiro.github.io/ocaml-h2/" 10 | depends: [ 11 | "ocaml" {>= "4.04"} 12 | "dune" 13 | "yojson" {with-test} 14 | "hex" {with-test} 15 | "angstrom" 16 | "faraday" 17 | ] 18 | build: [ 19 | ["dune" "build" "-p" name "-j" jobs] 20 | ] 21 | synopsis: 22 | "An HPACK (Header Compression for HTTP/2) implementation in OCaml" 23 | description: """ 24 | hpack is an implementation of the HPACK: Header Compression for HTTP/2 25 | specification (RFC7541) written in OCaml. It uses Angstrom and Faraday for 26 | parsing and serialization, respectively. 27 | """ 28 | url { 29 | src: 30 | "https://github.com/anmonteiro/ocaml-h2/releases/download/0.2.0/h2-0.2.0.tbz" 31 | checksum: "md5=c883927ce8a9f3f7159ef7b20988f051" 32 | } 33 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/junit.2.0.2/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Louis Roché " 3 | authors: "Louis Roché " 4 | homepage: "https://github.com/Khady/ocaml-junit" 5 | bug-reports: "https://github.com/Khady/ocaml-junit/issues" 6 | license: "LGPLv3+ with OCaml linking exception" 7 | dev-repo: "git+https://github.com/Khady/ocaml-junit.git" 8 | doc: "https://khady.github.io/ocaml-junit/" 9 | tags: ["junit" "jenkins"] 10 | depends: [ 11 | "dune" {>= "1.0"} 12 | "ptime" 13 | "tyxml" {>= "4.0.0"} 14 | "odoc" {with-doc & >= "1.1.1"} 15 | ] 16 | build: [ 17 | ["dune" "subst"] {pinned} 18 | ["dune" "build" "-p" name "-j" jobs] 19 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 20 | ["dune" "build" "-p" name "-j" jobs] {with-doc} 21 | ] 22 | name: "junit" 23 | synopsis: "JUnit XML reports generation library" 24 | description: "JUnit XML reports generation library" 25 | url { 26 | src: 27 | "https://github.com/Khady/ocaml-junit/releases/download/2.0.2/junit-2.0.2.tbz" 28 | checksum: [ 29 | "sha256=fda941b653613a4a5731f9b3557364b12baa341daa13c01676c9eb8d64e96b01" 30 | "sha512=5a9fa803c4861748bb8482fc51197420bf3cc3b9540989a489c4ffb65fdd02386aaa60437eae29182209dae0903b0e537c095249e19d395a451b8e8214f15f03" 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/logs.0.7.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["The logs programmers"] 4 | homepage: "https://erratique.ch/software/logs" 5 | doc: "https://erratique.ch/software/logs/doc" 6 | dev-repo: "git+https://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.03.0"} 12 | "ocamlfind" {build} 13 | "ocamlbuild" {build} 14 | "topkg" {build} 15 | "mtime" {with-test} ] 16 | depopts: [ 17 | "js_of_ocaml" 18 | "fmt" 19 | "cmdliner" 20 | "lwt" 21 | "base-threads" 22 | ] 23 | conflicts: [ 24 | "js_of_ocaml" { < "3.3.0" } ] 25 | 26 | build: [[ 27 | "ocaml" "pkg/pkg.ml" "build" 28 | "--pinned" "%{pinned}%" 29 | "--with-js_of_ocaml" "%{js_of_ocaml:installed}%" 30 | "--with-fmt" "%{fmt:installed}%" 31 | "--with-cmdliner" "%{cmdliner:installed}%" 32 | "--with-lwt" "%{lwt:installed}%" 33 | "--with-base-threads" "%{base-threads:installed}%" 34 | ]] 35 | 36 | synopsis: """Logging infrastructure for OCaml""" 37 | description: """\ 38 | 39 | Logs provides a logging infrastructure for OCaml. Logging is performed 40 | on sources whose reporting level can be set independently. Log message 41 | report is decoupled from logging and is handled by a reporter. 42 | 43 | A few optional log reporters are distributed with the base library and 44 | the API easily allows to implement your own. 45 | 46 | `Logs` has no dependencies. The optional `Logs_fmt` reporter on OCaml 47 | formatters depends on [Fmt][fmt]. The optional `Logs_browser` 48 | reporter that reports to the web browser console depends on 49 | [js_of_ocaml][jsoo]. The optional `Logs_cli` library that provides 50 | command line support for controlling Logs depends on 51 | [`Cmdliner`][cmdliner]. The optional `Logs_lwt` library that provides 52 | Lwt logging functions depends on [`Lwt`][lwt] 53 | 54 | Logs and its reporters are distributed under the ISC license. 55 | 56 | [fmt]: http://erratique.ch/software/fmt 57 | [jsoo]: http://ocsigen.org/js_of_ocaml/ 58 | [cmdliner]: http://erratique.ch/software/cmdliner 59 | [lwt]: http://ocsigen.org/lwt/ 60 | """ 61 | url { 62 | archive: "https://erratique.ch/software/logs/releases/logs-0.7.0.tbz" 63 | checksum: "2bf021ca13331775e33cf34ab60246f7" 64 | } 65 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/lwt.5.3.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | 3 | synopsis: "Promises and event-driven I/O" 4 | 5 | version: "5.3.0" 6 | license: "MIT" 7 | homepage: "https://github.com/ocsigen/lwt" 8 | doc: "https://ocsigen.org/lwt" 9 | bug-reports: "https://github.com/ocsigen/lwt/issues" 10 | 11 | authors: [ 12 | "Jérôme Vouillon" 13 | "Jérémie Dimino" 14 | ] 15 | maintainer: [ 16 | "Anton Bachin " 17 | ] 18 | dev-repo: "git+https://github.com/ocsigen/lwt.git" 19 | 20 | depends: [ 21 | "cppo" {build & >= "1.1.0"} 22 | "dune" {>= "1.8.0"} 23 | "dune-configurator" 24 | "mmap" {>= "1.1.0"} # mmap is needed as long as Lwt supports OCaml < 4.06.0. 25 | "ocaml" {>= "4.02.0"} 26 | ("ocaml" {>= "4.08.0"} | "ocaml-syntax-shims") 27 | "ocplib-endian" 28 | "result" # result is needed as long as Lwt supports OCaml 4.02. 29 | "seq" # seq is needed as long as Lwt supports OCaml < 4.07.0. 30 | 31 | "bisect_ppx" {dev & >= "2.0.0"} 32 | "ocamlfind" {dev & >= "1.7.3-1"} 33 | ] 34 | 35 | depopts: [ 36 | "base-threads" 37 | "base-unix" 38 | "conf-libev" 39 | ] 40 | 41 | conflicts: [ 42 | "ocaml-variants" {= "4.02.1+BER"} 43 | ] 44 | 45 | build: [ 46 | ["dune" "exec" "-p" name "src/unix/config/discover.exe" "--" "--save" 47 | "--use-libev" "%{conf-libev:installed}%"] 48 | ["dune" "build" "-p" name "-j" jobs] 49 | ] 50 | 51 | description: "A promise is a value that may become determined in the future. 52 | 53 | Lwt provides typed, composable promises. Promises that are resolved by I/O are 54 | resolved by Lwt in parallel. 55 | 56 | Meanwhile, OCaml code, including code creating and waiting on promises, runs in 57 | a single thread by default. This reduces the need for locks or other 58 | synchronization primitives. Code can be run in parallel on an opt-in basis." 59 | 60 | url { 61 | src: "https://github.com/ocsigen/lwt/archive/5.3.0.tar.gz" 62 | checksum: "md5=85e9c7e9095b4e14d0698e3ece72f378" 63 | } 64 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/magic-mime.1.1.2/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" 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.2/magic-mime-v1.1.2.tbz" 37 | checksum: [ 38 | "sha256=0c590bbc747531b56d392ee8f063d879df1e2026ba2dfa2d1bc98c9a9acb04eb" 39 | "sha512=8264db78adc2c75b8adabc23c26ad34eab98383bd3a8f2068f2236ff3425d653c0238fbd7361e55a3d70d843413ef8671b6e97293074b4d3a1e300628d5292ab" 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/menhir.20200211/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 | ["dune" "build" "-p" name "-j" jobs] 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "dune" {>= "2.2.0"} 16 | "menhirLib" {= version} 17 | "menhirSdk" {= version} 18 | ] 19 | synopsis: "An LR(1) parser generator" 20 | url { 21 | src: 22 | "https://gitlab.inria.fr/fpottier/menhir/repository/20200211/archive.tar.gz" 23 | checksum: [ 24 | "md5=01577e5f15380c35bdaa8fd818204560" 25 | "sha512=a686c4b047d5236c425afcd7f179964191268ff448b8d18510579d742a7256855049bc4fe568bb8f1b0d6cbfb758d95cd05e621e3410b75245bb799d623725d6" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/menhirLib.20200211/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 | ["dune" "build" "-p" name "-j" jobs] 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "dune" {>= "2.0.0"} 16 | ] 17 | conflicts: [ 18 | "menhir" { != version } 19 | ] 20 | synopsis: "Runtime support library for parsers generated by Menhir" 21 | url { 22 | src: 23 | "https://gitlab.inria.fr/fpottier/menhir/repository/20200211/archive.tar.gz" 24 | checksum: [ 25 | "md5=01577e5f15380c35bdaa8fd818204560" 26 | "sha512=a686c4b047d5236c425afcd7f179964191268ff448b8d18510579d742a7256855049bc4fe568bb8f1b0d6cbfb758d95cd05e621e3410b75245bb799d623725d6" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/menhirSdk.20200211/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 | ["dune" "build" "-p" name "-j" jobs] 12 | ] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "dune" {>= "2.0.0"} 16 | ] 17 | conflicts: [ 18 | "menhir" { != version } 19 | ] 20 | synopsis: "Compile-time library for auxiliary tools related to Menhir" 21 | url { 22 | src: 23 | "https://gitlab.inria.fr/fpottier/menhir/repository/20200211/archive.tar.gz" 24 | checksum: [ 25 | "md5=01577e5f15380c35bdaa8fd818204560" 26 | "sha512=a686c4b047d5236c425afcd7f179964191268ff448b8d18510579d742a7256855049bc4fe568bb8f1b0d6cbfb758d95cd05e621e3410b75245bb799d623725d6" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/merlin-extend.0.5/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: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | depends: [ 13 | "dune" {>= "1.0"} 14 | "cppo" {build} 15 | "ocaml" {>= "4.02.3" & < "4.11"} 16 | ] 17 | synopsis: "A protocol to provide custom frontend to Merlin" 18 | description: """ 19 | This protocol allows to replace the OCaml frontend of Merlin. 20 | It extends what used to be done with the `-pp' flag to handle a few more cases.""" 21 | doc: "https://let-def.github.io/merlin-extend" 22 | url { 23 | src: 24 | "https://github.com/let-def/merlin-extend/releases/download/v0.5/merlin-extend-v0.5.tbz" 25 | checksum: [ 26 | "sha256=ca3a38c360c7d4827eb4789abf7a6aa4b6e3b4e3c3ef69a5be64dce4601ec227" 27 | "sha512=55c5a3637337abb8ca8db679128a81ca8ccce567bc214d55b2e6444dc0e905b74c64d629bdea2457d0fe4be5306414feefcdbc4d4761fdafd59aa107550936b6" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/merlin.3.3.4/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "defree@gmail.com" 3 | authors: "The Merlin team" 4 | homepage: "https://github.com/ocaml/merlin" 5 | bug-reports: "https://github.com/ocaml/merlin/issues" 6 | dev-repo: "git+https://github.com/ocaml/merlin.git" 7 | build: [ 8 | ["dune" "subst"] {pinned} 9 | ["dune" "build" "-p" name "-j" jobs] 10 | ["dune" "runtest" "-p" name "-j" jobs] {with-test & os != "macos" & ocaml:version >= "4.03"} 11 | ] 12 | depends: [ 13 | "ocaml" {>= "4.02.3" & < "4.11"} 14 | "dune" {>= "1.8.0"} 15 | "ocamlfind" {>= "1.5.2"} 16 | "yojson" {>= "1.6.0"} 17 | "mdx" {with-test & >= "1.3.0"} 18 | "conf-jq" {with-test} 19 | ] 20 | synopsis: 21 | "Editor helper, provides completion, typing and source browsing in Vim and Emacs" 22 | description: 23 | "Merlin is an assistant for editing OCaml code. It aims to provide the features available in modern IDEs: error reporting, auto completion, source browsing and much more." 24 | post-messages: [ 25 | "merlin installed. 26 | 27 | Quick setup for VIM 28 | ------------------- 29 | Append this to your .vimrc to add merlin to vim's runtime-path: 30 | let g:opamshare = substitute(system('opam config var share'),'\\n$','','''') 31 | execute \"set rtp+=\" . g:opamshare . \"/merlin/vim\" 32 | 33 | Also run the following line in vim to index the documentation: 34 | :execute \"helptags \" . g:opamshare . \"/merlin/vim/doc\" 35 | 36 | Quick setup for EMACS 37 | ------------------- 38 | Add opam emacs directory to your load-path by appending this to your .emacs: 39 | (let ((opam-share (ignore-errors (car (process-lines \"opam\" \"config\" \"var\" \"share\"))))) 40 | (when (and opam-share (file-directory-p opam-share)) 41 | ;; Register Merlin 42 | (add-to-list 'load-path (expand-file-name \"emacs/site-lisp\" opam-share)) 43 | (autoload 'merlin-mode \"merlin\" nil t nil) 44 | ;; Automatically start it in OCaml buffers 45 | (add-hook 'tuareg-mode-hook 'merlin-mode t) 46 | (add-hook 'caml-mode-hook 'merlin-mode t) 47 | ;; Use opam switch to lookup ocamlmerlin binary 48 | (setq merlin-command 'opam))) 49 | 50 | Take a look at https://github.com/ocaml/merlin for more information 51 | 52 | Quick setup with opam-user-setup 53 | -------------------------------- 54 | 55 | Opam-user-setup support Merlin. 56 | 57 | $ opam user-setup install 58 | 59 | should take care of basic setup. 60 | See https://github.com/OCamlPro/opam-user-setup 61 | " 62 | {success & !user-setup:installed} 63 | ] 64 | url { 65 | src: 66 | "https://github.com/ocaml/merlin/releases/download/v3.3.4/merlin-v3.3.4.tbz" 67 | checksum: [ 68 | "sha256=adcde0ebe3dce183bae0df1cc988e0aa5cd4e446b59bc081d5350f6b58cc9d8b" 69 | "sha512=5f4fb73b852f431e1fee7def63a1150de1b9ae931a74078c870ab7c420607ae0654195baf9e09bee5304aeefa92108e42fe963684e8e8511006a562ba15c4a83" 70 | ] 71 | } 72 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/mmap.1.1.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "jeremie@dimino.org" 3 | authors: ["Jérémie Dimino " "Anton Bachin" ] 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-only with OCaml-LGPL-linking-exception" 9 | build: [ 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | depends: [ 13 | "ocaml" 14 | "dune" {>= "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.1.0/mmap-v1.1.0.tbz" 23 | checksum: "md5=8c5d5fbc537296dc525867535fb878ba" 24 | } 25 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/ocaml-migrate-parsetree.1.7.3/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 with OCaml linking exception" 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" {>= "1.9.0"} 20 | "ocaml" {>= "4.02.3" & < "4.12"} 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.7.3/ocaml-migrate-parsetree-v1.7.3.tbz" 33 | checksum: [ 34 | "sha256=6d85717bcf476b87f290714872ed4fbde0233dc899c3158a27f439d70224fb55" 35 | "sha512=fe9c74a244d160d973d8ca62e356edad4c872fc46471ddc668f854456d3979576895d446d49da2aee61c65b441b72c573225b0b254ab2eac4a0fb4debdbce9d4" 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/ocaml-syntax-shims.1.0.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: "Backport new syntax to older OCaml versions" 3 | description: """ 4 | This packages backports new features of the language to older 5 | compilers, such as let+. 6 | """ 7 | maintainer: ["jeremie@dimino.org"] 8 | authors: ["Jérémie Dimino "] 9 | license: "MIT" 10 | homepage: "https://github.com/ocaml-ppx/ocaml-syntax-shims" 11 | doc: "https://ocaml-ppx.github.io/ocaml-syntax-shims/" 12 | bug-reports: "https://github.com/ocaml-ppx/ocaml-syntax-shims/issues" 13 | depends: [ 14 | "dune" {>= "2.0"} 15 | "ocaml" {>= "4.02.3"} 16 | ] 17 | build: [ 18 | ["dune" "subst"] {pinned} 19 | [ 20 | "dune" 21 | "build" 22 | "-p" 23 | name 24 | "-j" 25 | jobs 26 | "@install" 27 | "@runtest" {with-test} 28 | "@doc" {with-doc} 29 | ] 30 | ] 31 | dev-repo: "git+https://github.com/ocaml-ppx/ocaml-syntax-shims.git" 32 | url { 33 | src: 34 | "https://github.com/ocaml-ppx/ocaml-syntax-shims/releases/download/1.0.0/ocaml-syntax-shims-1.0.0.tbz" 35 | checksum: [ 36 | "sha256=89b2e193e90a0c168b6ec5ddf6fef09033681bdcb64e11913c97440a2722e8c8" 37 | "sha512=75c4c6b0bfa1267a8a49a82ba494d08cf0823fc8350863d6d3d4971528cb09e5a2a29e2981d04c75e76ad0f49360b05a432c9efeff9a4fbc1ec6b28960399852" 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /fetch-native-lwt.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.1-only with OCaml-LGPL-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 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/ocamlfind.1.8.1/files/ocaml-stub: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | BINDIR=$(dirname "$(command -v ocamlc)") 4 | "$BINDIR/ocaml" -I "$OCAML_TOPLEVEL_PATH" "$@" 5 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/ocamlfind.1.8.1/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 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/ocamlfind.1.8.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: "A library manager for OCaml" 3 | maintainer: "Thomas Gazagnaire " 4 | authors: "Gerd Stolpmann " 5 | homepage: "http://projects.camlcity.org/projects/findlib.html" 6 | bug-reports: "https://gitlab.camlcity.org/gerd/lib-findlib/issues" 7 | dev-repo: "git+https://gitlab.camlcity.org/gerd/lib-findlib.git" 8 | description: """ 9 | Findlib is a library manager for OCaml. It provides a convention how 10 | to store libraries, and a file format ("META") to describe the 11 | properties of libraries. There is also a tool (ocamlfind) for 12 | interpreting the META files, so that it is very easy to use libraries 13 | in programs and scripts. 14 | """ 15 | build: [ 16 | [ 17 | "./configure" 18 | "-bindir" 19 | bin 20 | "-sitelib" 21 | lib 22 | "-mandir" 23 | man 24 | "-config" 25 | "%{lib}%/findlib.conf" 26 | "-no-custom" 27 | "-no-camlp4" {!ocaml:preinstalled & ocaml:version >= "4.02.0"} 28 | "-no-topfind" {ocaml:preinstalled} 29 | ] 30 | [make "all"] 31 | [make "opt"] {ocaml:native} 32 | ] 33 | install: [ 34 | [make "install"] 35 | ["install" "-m" "0755" "ocaml-stub" "%{bin}%/ocaml"] {ocaml:preinstalled} 36 | ] 37 | depends: [ 38 | "ocaml" {>= "4.00.0"} 39 | "conf-m4" {build} 40 | ] 41 | extra-files: [ 42 | ["ocamlfind.install" "md5=06f2c282ab52d93aa6adeeadd82a2543"] 43 | ["ocaml-stub" "md5=181f259c9e0bad9ef523e7d4abfdf87a"] 44 | ] 45 | url { 46 | src: "http://download.camlcity.org/download/findlib-1.8.1.tar.gz" 47 | checksum: "md5=18ca650982c15536616dea0e422cbd8c" 48 | mirrors: "http://download2.camlcity.org/download/findlib-1.8.1.tar.gz" 49 | } 50 | depopts: ["graphics"] 51 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/ocplib-endian.1.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | synopsis: 3 | "Optimised functions to read and write int16/32/64 from strings and bigarrays" 4 | description: """ 5 | The library implements three modules: 6 | * [EndianString](https://github.com/OCamlPro/ocplib-endian/blob/master/src/endianString.mli) works directly on strings, and provides submodules BigEndian and LittleEndian, with their unsafe counter-parts; 7 | * [EndianBytes](https://github.com/OCamlPro/ocplib-endian/blob/master/src/endianBytes.mli) works directly on bytes, and provides submodules BigEndian and LittleEndian, with their unsafe counter-parts; 8 | * [EndianBigstring](https://github.com/OCamlPro/ocplib-endian/blob/master/src/endianBigstring.mli) works on bigstrings (Bigarrays of chars), and provides submodules BigEndian and LittleEndian, with their unsafe counter-parts.""" 9 | maintainer: "pierre.chambart@ocamlpro.com" 10 | authors: "Pierre Chambart" 11 | homepage: "https://github.com/OCamlPro/ocplib-endian" 12 | doc: "https://ocamlpro.github.io/ocplib-endian/ocplib-endian/" 13 | bug-reports: "https://github.com/OCamlPro/ocplib-endian/issues" 14 | depends: [ 15 | "base-bytes" 16 | "ocaml" {>= "4.02.3"} 17 | "cppo" {>= "1.1.0" & build} 18 | "dune" {>= "1.0"} 19 | ] 20 | build: [ 21 | "dune" 22 | "build" 23 | "-p" 24 | name 25 | "-j" 26 | jobs 27 | "@install" 28 | "@runtest" {with-test} 29 | "@doc" {with-doc} 30 | ] 31 | dev-repo: "git+https://github.com/OCamlPro/ocplib-endian.git" 32 | url { 33 | src: "https://github.com/OCamlPro/ocplib-endian/archive/1.1.tar.gz" 34 | checksum: [ 35 | "md5=dedf4d69c1b87b3c6c7234f632399285" 36 | "sha512=39351c666d1394770696fa89ac62f7c137ad1697d99888bfba2cc8de2c61df05dd8b3aa327c117bf38f3e29e081026d2c575c5ad0022bde92b3d43aba577d3f9" 37 | ] 38 | } -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/odoc.1.5.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | 3 | homepage: "http://github.com/ocaml/odoc" 4 | doc: "https://ocaml.github.io/odoc/" 5 | bug-reports: "https://github.com/ocaml/odoc/issues" 6 | license: "ISC" 7 | 8 | authors: [ 9 | "Thomas Refis " 10 | "David Sheets " 11 | "Leo White " 12 | "Anton Bachin " 13 | "Jon Ludlam " 14 | ] 15 | maintainer: "Anton Bachin " 16 | dev-repo: "git+https://github.com/ocaml/odoc.git" 17 | 18 | synopsis: "OCaml documentation generator" 19 | description: """ 20 | Odoc is a documentation generator for OCaml. It reads doc comments, 21 | delimited with `(** ... *)`, and outputs HTML. 22 | """ 23 | 24 | depends: [ 25 | "astring" 26 | "cmdliner" 27 | "cppo" {build} 28 | "dune" 29 | "fpath" 30 | "ocaml" {>= "4.02.0" & < "4.11"} 31 | "result" 32 | "tyxml" {>= "4.3.0"} 33 | 34 | "alcotest" {dev & >= "0.8.3"} 35 | "markup" {dev & >= "0.8.0"} 36 | "ocamlfind" {dev} 37 | "sexplib" {dev & >= "113.33.00"} 38 | 39 | "bisect_ppx" {with-test & >= "1.3.0"} 40 | ] 41 | 42 | build: [ 43 | ["dune" "subst"] {pinned} 44 | ["dune" "build" "-p" name "-j" jobs] 45 | ] 46 | url { 47 | src: "https://github.com/ocaml/odoc/releases/download/1.5.0/odoc-1.5.0.tbz" 48 | checksum: [ 49 | "sha256=857759be968070bfda208add3ae2c2bc87826ca2bfc39cebab1cc1e13db7a140" 50 | "sha512=9573230f6ebd7f95d44a5e34f6de68f6b1b530cc7987402f84532e339498dde702082517066c4db428a334510af625db8055ecd03d91b57dd599fd5b3ac53f49" 51 | ] 52 | } 53 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/ppx_derivers.1.2.1/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "jeremie@dimino.org" 3 | authors: ["Jérémie Dimino"] 4 | license: "BSD-3-Clause" 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 | ["dune" "build" "-p" name "-j" jobs] 10 | ] 11 | depends: [ 12 | "ocaml" 13 | "dune" 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.2.1.tar.gz" 22 | checksum: "md5=5dc2bf130c1db3c731fe0fffc5648b41" 23 | } 24 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/ppx_yojson_conv_lib.v0.13.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_yojson_conv_lib" 5 | bug-reports: "https://github.com/janestreet/ppx_yojson_conv_lib/issues" 6 | dev-repo: "git+https://github.com/janestreet/ppx_yojson_conv_lib.git" 7 | doc: "https://ocaml.janestreet.com/ocaml-core/latest/doc/ppx_yojson_conv_lib/index.html" 8 | license: "MIT" 9 | build: [ 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | depends: [ 13 | "ocaml" {>= "4.02.3"} 14 | "dune" {>= "1.5.1"} 15 | "yojson" {>= "1.7.0"} 16 | ] 17 | synopsis: "Runtime lib for ppx_yojson_conv" 18 | description: " 19 | Part of the Jane Street's PPX rewriters collection. 20 | " 21 | url { 22 | src: "https://ocaml.janestreet.com/ocaml-core/v0.13/files/ppx_yojson_conv_lib-v0.13.0.tar.gz" 23 | checksum: "md5=790fade9ecff5767dd48cd49c9bba2f3" 24 | } 25 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/psq.0.2.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "David Kaloper Meršinjak " 3 | authors: ["David Kaloper Meršinjak "] 4 | homepage: "https://github.com/pqwy/psq" 5 | doc: "https://pqwy.github.io/psq/doc" 6 | license: "ISC" 7 | dev-repo: "git+https://github.com/pqwy/psq.git" 8 | bug-reports: "https://github.com/pqwy/psq/issues" 9 | synopsis: "Functional Priority Search Queues" 10 | build: [ [ "dune" "subst" ] {pinned} 11 | [ "dune" "build" "-p" name "-j" jobs ] 12 | [ "dune" "runtest" "-p" name ] {with-test & ocaml:version >= "4.07.0"} ] 13 | depends: [ 14 | "ocaml" {>="4.03.0"} 15 | "dune" {>= "1.7"} 16 | "seq" 17 | "qcheck-core" {with-test} 18 | "qcheck-alcotest" {with-test} 19 | "alcotest" {with-test} 20 | ] 21 | description: """ 22 | Typical applications are searches, schedulers and caches. If you ever scratched 23 | your head because that A* didn't look quite right, a PSQ is what you needed. 24 | """ 25 | url { 26 | src: "https://github.com/pqwy/psq/releases/download/v0.2.0/psq-v0.2.0.tbz" 27 | checksum: "md5=b94fb15f8878172bf58446b7d0fb7c1e" 28 | } 29 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/ptime.0.8.5/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "Daniel Bünzli " 3 | authors: ["The ptime programmers"] 4 | homepage: "https://erratique.ch/software/ptime" 5 | doc: "https://erratique.ch/software/ptime/doc" 6 | dev-repo: "git+http://erratique.ch/repos/ptime.git" 7 | bug-reports: "https://github.com/dbuenzli/ptime/issues" 8 | tags: [ "time" "posix" "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 | ] 17 | depopts: [ "js_of_ocaml" ] 18 | conflicts: [ "js_of_ocaml" { < "3.3.0" } ] 19 | build:[[ 20 | "ocaml" "pkg/pkg.ml" "build" 21 | "--pinned" "%{pinned}%" 22 | "--with-js_of_ocaml" "%{js_of_ocaml:installed}%" ]] 23 | 24 | synopsis: """POSIX time for OCaml""" 25 | description: """\ 26 | 27 | Ptime has platform independent POSIX time support in pure OCaml. It 28 | provides a type to represent a well-defined range of POSIX timestamps 29 | with picosecond precision, conversion with date-time values, 30 | conversion with [RFC 3339 timestamps][rfc3339] and pretty printing to a 31 | human-readable, locale-independent representation. 32 | 33 | The additional Ptime_clock library provides access to a system POSIX 34 | clock and to the system's current time zone offset. 35 | 36 | Ptime is not a calendar library. 37 | 38 | Ptime depends on the `result` compatibility package. Ptime_clock 39 | depends on your system library. Ptime_clock's optional JavaScript 40 | support depends on [js_of_ocaml][jsoo]. Ptime and its libraries are 41 | distributed under the ISC license. 42 | 43 | [rfc3339]: http://tools.ietf.org/html/rfc3339 44 | [jsoo]: http://ocsigen.org/js_of_ocaml/ 45 | """ 46 | url { 47 | archive: "https://erratique.ch/software/ptime/releases/ptime-0.8.5.tbz" 48 | checksum: "4d48055d623ecf2db792439b3e96a520" 49 | } 50 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/re.1.9.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | 3 | maintainer: "rudi.grinberg@gmail.com" 4 | authors: [ 5 | "Jerome Vouillon" 6 | "Thomas Gazagnaire" 7 | "Anil Madhavapeddy" 8 | "Rudi Grinberg" 9 | "Gabriel Radanne" 10 | ] 11 | license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" 12 | homepage: "https://github.com/ocaml/ocaml-re" 13 | bug-reports: "https://github.com/ocaml/ocaml-re/issues" 14 | dev-repo: "git+https://github.com/ocaml/ocaml-re.git" 15 | 16 | build: [ 17 | ["dune" "subst"] {pinned} 18 | ["dune" "build" "-p" name "-j" jobs] 19 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 20 | ] 21 | 22 | depends: [ 23 | "ocaml" {>= "4.02"} 24 | "dune" 25 | "ounit" {with-test} 26 | "seq" 27 | ] 28 | 29 | synopsis: "RE is a regular expression library for OCaml" 30 | description: """ 31 | Pure OCaml regular expressions with: 32 | * Perl-style regular expressions (module Re.Perl) 33 | * Posix extended regular expressions (module Re.Posix) 34 | * Emacs-style regular expressions (module Re.Emacs) 35 | * Shell-style file globbing (module Re.Glob) 36 | * Compatibility layer for OCaml's built-in Str module (module Re.Str) 37 | """ 38 | url { 39 | src: 40 | "https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz" 41 | checksum: "md5=bddaed4f386a22cace7850c9c7dac296" 42 | } 43 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/result.1.5/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: "BSD-3-Clause" 8 | build: [["dune" "build" "-p" name "-j" jobs]] 9 | depends: [ 10 | "ocaml" 11 | "dune" {>= "1.0"} 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.5/result-1.5.tbz" 21 | checksum: "md5=1b82dec78849680b49ae9a8a365b831b" 22 | } 23 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/seq.base/files/META.seq: -------------------------------------------------------------------------------- 1 | name="seq" 2 | version="[distributed with OCaml 4.07 or above]" 3 | description="dummy backward-compatibility package for iterators" 4 | requires="" 5 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/seq.base/files/seq.install: -------------------------------------------------------------------------------- 1 | lib:[ 2 | "META.seq" {"META"} 3 | ] 4 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/seq.base/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: " " 3 | authors: " " 4 | homepage: " " 5 | depends: [ 6 | "ocaml" {>= "4.07.0"} 7 | ] 8 | dev-repo: "git+https://github.com/ocaml/ocaml.git" 9 | bug-reports: "https://caml.inria.fr/mantis/main_page.php" 10 | synopsis: 11 | "Compatibility package for OCaml's standard iterator type starting from 4.07." 12 | extra-files: [ 13 | ["seq.install" "md5=026b31e1df290373198373d5aaa26e42"] 14 | ["META.seq" "md5=b33c8a1a6c7ed797816ce27df4855107"] 15 | ] 16 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/stdlib-shims.0.1.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "The stdlib-shims programmers" 3 | authors: "The stdlib-shims programmers" 4 | homepage: "https://github.com/ocaml/stdlib-shims" 5 | doc: "https://ocaml.github.io/stdlib-shims/" 6 | dev-repo: "git+https://github.com/ocaml/stdlib-shims.git" 7 | bug-reports: "https://github.com/ocaml/stdlib-shims/issues" 8 | tags: ["stdlib" "compatibility" "org:ocaml"] 9 | license: ["typeof OCaml system"] 10 | depends: [ 11 | "dune" 12 | "ocaml" {>= "4.02.3"} 13 | ] 14 | build: [ "dune" "build" "-p" name "-j" jobs ] 15 | synopsis: "Backport some of the new stdlib features to older compiler" 16 | description: """ 17 | Backport some of the new stdlib features to older compiler, 18 | such as the Stdlib module. 19 | 20 | This allows projects that require compatibility with older compiler to 21 | use these new features in their code. 22 | """ 23 | url { 24 | src: 25 | "https://github.com/ocaml/stdlib-shims/releases/download/0.1.0/stdlib-shims-0.1.0.tbz" 26 | checksum: "md5=12b5704eed70c6bff5ac39a16db1425d" 27 | } 28 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/stringext.1.6.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "rudi.grinberg@gmail.com" 3 | authors: "Rudi Grinberg" 4 | license: "MIT" 5 | homepage: "https://github.com/rgrinberg/stringext" 6 | bug-reports: "https://github.com/rgrinberg/stringext/issues" 7 | depends: [ 8 | "ocaml" {>= "4.02.3"} 9 | "dune" {>= "1.0"} 10 | "ounit" {with-test} 11 | "qtest" {with-test & >= "2.2"} 12 | "base-bytes" 13 | ] 14 | build: [ 15 | ["dune" "subst"] {pinned} 16 | ["dune" "build" "-p" name "-j" jobs] 17 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 18 | ] 19 | dev-repo: "git+https://github.com/rgrinberg/stringext.git" 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 | """ 25 | url { 26 | src: 27 | "https://github.com/rgrinberg/stringext/releases/download/1.6.0/stringext-1.6.0.tbz" 28 | checksum: [ 29 | "sha256=db41f5d52e9eab17615f110b899dfeb27dd7e7f89cd35ae43827c5119db206ea" 30 | "sha512=d8ebe40f42b598a9bd99f1ef4b00ba93458385a4accd121af66a0bf3b3f8d7135f576740adf1a43081dd409977c2219fd4bdbb5b3d1308890d301d553ed49900" 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/topkg.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/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.03.0"} 12 | "ocamlfind" {build & >= "1.6.1"} 13 | "ocamlbuild" ] 14 | build: [[ 15 | "ocaml" "pkg/pkg.ml" "build" 16 | "--pkg-name" name 17 | "--dev-pkg" "%{pinned}%" ]] 18 | synopsis: """The transitory OCaml software packager""" 19 | description: """\ 20 | 21 | Topkg is a packager for distributing OCaml software. It provides an 22 | API to describe the files a package installs in a given build 23 | configuration and to specify information about the package's 24 | distribution, creation and publication procedures. 25 | 26 | The optional topkg-care package provides the `topkg` command line tool 27 | which helps with various aspects of a package's life cycle: creating 28 | and linting a distribution, releasing it on the WWW, publish its 29 | documentation, add it to the OCaml opam repository, etc. 30 | 31 | Topkg is distributed under the ISC license and has **no** 32 | dependencies. This is what your packages will need as a *build* 33 | dependency. 34 | 35 | Topkg-care is distributed under the ISC license it depends on 36 | [fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner], 37 | [webbrowser][webbrowser] and `opam-format`. 38 | 39 | [fmt]: http://erratique.ch/software/fmt 40 | [logs]: http://erratique.ch/software/logs 41 | [bos]: http://erratique.ch/software/bos 42 | [cmdliner]: http://erratique.ch/software/cmdliner 43 | [webbrowser]: http://erratique.ch/software/webbrowser 44 | """ 45 | url { 46 | archive: "http://erratique.ch/software/topkg/releases/topkg-1.0.1.tbz" 47 | checksum: "16b90e066d8972a5ef59655e7c28b3e9" 48 | } 49 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/tyxml.4.4.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "dev@ocsigen.org" 3 | homepage: "https://github.com/ocsigen/tyxml/" 4 | bug-reports: "https://github.com/ocsigen/tyxml/issues" 5 | doc: "https://ocsigen.org/tyxml/manual/" 6 | dev-repo: "git+https://github.com/ocsigen/tyxml.git" 7 | license: "LGPL-2.1 with OCaml linking exception" 8 | 9 | build: [ 10 | ["dune" "subst"] {pinned} 11 | ["dune" "build" "-p" name "-j" jobs] 12 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 13 | ] 14 | 15 | depends: [ 16 | "ocaml" {>= "4.02"} 17 | "dune" 18 | "alcotest" {with-test} 19 | "seq" 20 | "uutf" {>= "1.0.0"} 21 | "re" {>= "1.5.0"} 22 | ] 23 | 24 | synopsis:"TyXML is a library for building correct HTML and SVG documents" 25 | description:""" 26 | TyXML provides a set of convenient combinators that uses the OCaml 27 | type system to ensure the validity of the generated documents. TyXML 28 | can be used with any representation of HTML and SVG: the textual one, 29 | provided directly by this package, or DOM trees (`js_of_ocaml-tyxml`) 30 | virtual DOM (`virtual-dom`) and reactive or replicated trees 31 | (`eliom`). You can also create your own representation and use it to 32 | instantiate a new set of combinators. 33 | 34 | ```ocaml 35 | open Tyxml 36 | let to_ocaml = Html.(a ~a:[a_href "ocaml.org"] [txt "OCaml!"]) 37 | ``` 38 | """ 39 | authors: "The ocsigen team" 40 | url { 41 | src: 42 | "https://github.com/ocsigen/tyxml/releases/download/4.4.0/tyxml-4.4.0.tbz" 43 | checksum: [ 44 | "sha256=516394dd4a5c31726997c51d66aa31cacb91e3c46d4e16c7699130e204042530" 45 | "sha512=d5f2187f8410524cec7a14b28e8950837070eb0b6571b015dd06076c2841eb7ccaffa86d5d2307eaf1950ee62f9fb926477dac01c870d9c1a2f525853cb44d0c" 46 | ] 47 | } 48 | -------------------------------------------------------------------------------- /fetch-native-lwt.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 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/uri.3.1.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" {>= "1.2.0"} 18 | "ounit" {with-test & >= "1.0.2"} 19 | "ppx_sexp_conv" {with-test & >= "v0.9.0"} 20 | "re" {>= "1.9.0"} 21 | "stringext" {>= "1.4.0"} 22 | ] 23 | build: [ 24 | ["dune" "subst"] {pinned} 25 | ["dune" "build" "-p" name "-j" jobs] 26 | ["dune" "runtest" "-p" name "-j" jobs] {with-test} 27 | ] 28 | url { 29 | src: 30 | "https://github.com/mirage/ocaml-uri/releases/download/v3.1.0/uri-v3.1.0.tbz" 31 | checksum: [ 32 | "sha256=c452823fd870cf7cffe51aef3e9ca646a382dc6f87282f2b16bfe30a7515ac43" 33 | "sha512=c015576bb077fd243022bcd8804e628d23a253dcd8bbdda8dc2a57e86cfeb9fd629087ec7d7e23dc71dd7cd137450ca2c5ecf8fb7d184ec9d1d4e41f6f83ee38" 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /fetch-native-lwt.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 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/opam/yojson.1.7.0/opam: -------------------------------------------------------------------------------- 1 | opam-version: "2.0" 2 | maintainer: "martin@mjambon.com" 3 | authors: ["Martin Jambon"] 4 | homepage: "https://github.com/ocaml-community/yojson" 5 | bug-reports: "https://github.com/ocaml-community/yojson/issues" 6 | dev-repo: "git+https://github.com/ocaml-community/yojson.git" 7 | doc: "https://ocaml-community.github.io/yojson/" 8 | build: [ 9 | ["dune" "subst"] {pinned} 10 | ["dune" "build" "-p" name "-j" jobs] 11 | ] 12 | run-test: [["dune" "runtest" "-p" name "-j" jobs]] 13 | depends: [ 14 | "ocaml" {>= "4.02.3"} 15 | "dune" 16 | "cppo" {build} 17 | "easy-format" 18 | "biniou" {>= "1.2.0"} 19 | "alcotest" {with-test & >= "0.8.5"} 20 | ] 21 | synopsis: 22 | "Yojson is an optimized parsing and printing library for the JSON format" 23 | description: """ 24 | Yojson is an optimized parsing and printing library for the JSON format. 25 | 26 | It addresses a few shortcomings of json-wheel including 2x speedup, 27 | polymorphic variants and optional syntax for tuples and variants. 28 | 29 | ydump is a pretty-printing command-line program provided with the 30 | yojson package. 31 | 32 | The program atdgen can be used to derive OCaml-JSON serializers and 33 | deserializers from type definitions.""" 34 | url { 35 | src: 36 | "https://github.com/ocaml-community/yojson/releases/download/1.7.0/yojson-1.7.0.tbz" 37 | checksum: "md5=b89d39ca3f8c532abe5f547ad3b8f84d" 38 | } 39 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/overrides/opam__s__conf_autoconf_opam__c__0.1_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ "true" ], 3 | "dependencies": { 4 | "esy-autoconf": "esy-packages/esy-autoconf#fb93edf" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/overrides/opam__s__conf_pkg_config_opam__c__1.2_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "pkg-config", 5 | "--help" 6 | ] 7 | ], 8 | "dependencies": { 9 | "yarn-pkg-config": "esy-ocaml/yarn-pkg-config#db3a0b63883606dd57c54a7158d560d6cba8cd79" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/overrides/opam__s__menhir_opam__c__20200211_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@opam/fix": "*" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /fetch-native-lwt.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 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/files/findlib-1.8.1.patch: -------------------------------------------------------------------------------- 1 | --- ./Makefile 2 | +++ ./Makefile 3 | @@ -57,16 +57,16 @@ 4 | cat findlib.conf.in | \ 5 | $(SH) tools/patch '@SITELIB@' '$(OCAML_SITELIB)' >findlib.conf 6 | if ./tools/cmd_from_same_dir ocamlc; then \ 7 | - echo 'ocamlc="ocamlc.opt"' >>findlib.conf; \ 8 | + echo 'ocamlc="ocamlc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 9 | fi 10 | if ./tools/cmd_from_same_dir ocamlopt; then \ 11 | - echo 'ocamlopt="ocamlopt.opt"' >>findlib.conf; \ 12 | + echo 'ocamlopt="ocamlopt.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 13 | fi 14 | if ./tools/cmd_from_same_dir ocamldep; then \ 15 | - echo 'ocamldep="ocamldep.opt"' >>findlib.conf; \ 16 | + echo 'ocamldep="ocamldep.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 17 | fi 18 | if ./tools/cmd_from_same_dir ocamldoc; then \ 19 | - echo 'ocamldoc="ocamldoc.opt"' >>findlib.conf; \ 20 | + echo 'ocamldoc="ocamldoc.opt$(EXEC_SUFFIX)"' >>findlib.conf; \ 21 | fi 22 | 23 | .PHONY: install-doc 24 | --- ./src/findlib/findlib_config.mlp 25 | +++ ./src/findlib/findlib_config.mlp 26 | @@ -24,3 +24,5 @@ 27 | | "MacOS" -> "" (* don't know *) 28 | | _ -> failwith "Unknown Sys.os_type" 29 | ;; 30 | + 31 | +let exec_suffix = "@EXEC_SUFFIX@";; 32 | --- ./src/findlib/findlib.ml 33 | +++ ./src/findlib/findlib.ml 34 | @@ -28,15 +28,20 @@ 35 | let conf_ldconf = ref "";; 36 | let conf_ignore_dups_in = ref ([] : string list);; 37 | 38 | -let ocamlc_default = "ocamlc";; 39 | -let ocamlopt_default = "ocamlopt";; 40 | -let ocamlcp_default = "ocamlcp";; 41 | -let ocamloptp_default = "ocamloptp";; 42 | -let ocamlmklib_default = "ocamlmklib";; 43 | -let ocamlmktop_default = "ocamlmktop";; 44 | -let ocamldep_default = "ocamldep";; 45 | -let ocamlbrowser_default = "ocamlbrowser";; 46 | -let ocamldoc_default = "ocamldoc";; 47 | +let add_exec str = 48 | + match Findlib_config.exec_suffix with 49 | + | "" -> str 50 | + | a -> str ^ a ;; 51 | +let ocamlc_default = add_exec "ocamlc";; 52 | +let ocamlopt_default = add_exec "ocamlopt";; 53 | +let ocamlcp_default = add_exec "ocamlcp";; 54 | +let ocamloptp_default = add_exec "ocamloptp";; 55 | +let ocamlmklib_default = add_exec "ocamlmklib";; 56 | +let ocamlmktop_default = add_exec "ocamlmktop";; 57 | +let ocamldep_default = add_exec "ocamldep";; 58 | +let ocamlbrowser_default = add_exec "ocamlbrowser";; 59 | +let ocamldoc_default = add_exec "ocamldoc";; 60 | + 61 | 62 | 63 | let init_manually 64 | --- ./src/findlib/fl_package_base.ml 65 | +++ ./src/findlib/fl_package_base.ml 66 | @@ -133,7 +133,15 @@ 67 | List.find (fun def -> def.def_var = "exists_if") p.package_defs in 68 | let files = Fl_split.in_words def.def_value in 69 | List.exists 70 | - (fun file -> Sys.file_exists (Filename.concat d' file)) 71 | + (fun file -> 72 | + let fln = Filename.concat d' file in 73 | + let e = Sys.file_exists fln in 74 | + (* necessary for ppx executables *) 75 | + if e || Sys.os_type <> "Win32" || Filename.check_suffix fln ".exe" then 76 | + e 77 | + else 78 | + Sys.file_exists (fln ^ ".exe") 79 | + ) 80 | files 81 | with Not_found -> true in 82 | 83 | --- ./src/findlib/fl_split.ml 84 | +++ ./src/findlib/fl_split.ml 85 | @@ -126,10 +126,17 @@ 86 | | '/' | '\\' -> true 87 | | _ -> false in 88 | let norm_dir_win() = 89 | - if l >= 1 && s.[0] = '/' then 90 | - Buffer.add_char b '\\' else Buffer.add_char b s.[0]; 91 | - if l >= 2 && s.[1] = '/' then 92 | - Buffer.add_char b '\\' else Buffer.add_char b s.[1]; 93 | + if l >= 1 then ( 94 | + if s.[0] = '/' then 95 | + Buffer.add_char b '\\' 96 | + else 97 | + Buffer.add_char b s.[0] ; 98 | + if l >= 2 then 99 | + if s.[1] = '/' then 100 | + Buffer.add_char b '\\' 101 | + else 102 | + Buffer.add_char b s.[1]; 103 | + ); 104 | for k = 2 to l - 1 do 105 | let c = s.[k] in 106 | if is_slash c then ( 107 | --- ./src/findlib/frontend.ml 108 | +++ ./src/findlib/frontend.ml 109 | @@ -31,10 +31,18 @@ 110 | else 111 | Sys_error (arg ^ ": " ^ Unix.error_message code) 112 | 113 | +let is_win = Sys.os_type = "Win32" 114 | + 115 | +let () = 116 | + match Findlib_config.system with 117 | + | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> 118 | + (try set_binary_mode_out stdout true with _ -> ()); 119 | + (try set_binary_mode_out stderr true with _ -> ()); 120 | + | _ -> () 121 | 122 | let slashify s = 123 | match Findlib_config.system with 124 | - | "mingw" | "mingw64" | "cygwin" -> 125 | + | "win32" | "win64" | "mingw" | "cygwin" | "mingw64" | "cygwin64" -> 126 | let b = Buffer.create 80 in 127 | String.iter 128 | (function 129 | @@ -49,7 +57,7 @@ 130 | 131 | let out_path ?(prefix="") s = 132 | match Findlib_config.system with 133 | - | "mingw" | "mingw64" | "cygwin" -> 134 | + | "win32" | "win64" | "mingw" | "mingw64" | "cygwin" -> 135 | let u = slashify s in 136 | prefix ^ 137 | (if String.contains u ' ' then 138 | @@ -273,11 +281,9 @@ 139 | 140 | 141 | let identify_dir d = 142 | - match Sys.os_type with 143 | - | "Win32" -> 144 | - failwith "identify_dir" (* not available *) 145 | - | _ -> 146 | - let s = Unix.stat d in 147 | + if is_win then 148 | + failwith "identify_dir"; (* not available *) 149 | + let s = Unix.stat d in 150 | (s.Unix.st_dev, s.Unix.st_ino) 151 | ;; 152 | 153 | @@ -459,6 +465,96 @@ 154 | ) 155 | packages 156 | 157 | +let rewrite_cmd s = 158 | + if s = "" || not is_win then 159 | + s 160 | + else 161 | + let s = 162 | + let l = String.length s in 163 | + let b = Buffer.create l in 164 | + for i = 0 to pred l do 165 | + match s.[i] with 166 | + | '/' -> Buffer.add_char b '\\' 167 | + | x -> Buffer.add_char b x 168 | + done; 169 | + Buffer.contents b 170 | + in 171 | + if (Filename.is_implicit s && String.contains s '\\' = false) || 172 | + Filename.check_suffix (String.lowercase s) ".exe" then 173 | + s 174 | + else 175 | + let s' = s ^ ".exe" in 176 | + if Sys.file_exists s' then 177 | + s' 178 | + else 179 | + s 180 | + 181 | +let rewrite_cmd s = 182 | + if s = "" || not is_win then s else 183 | + let s = 184 | + let l = String.length s in 185 | + let b = Buffer.create l in 186 | + for i = 0 to pred l do 187 | + match s.[i] with 188 | + | '/' -> Buffer.add_char b '\\' 189 | + | x -> Buffer.add_char b x 190 | + done; 191 | + Buffer.contents b 192 | + in 193 | + if (Filename.is_implicit s && String.contains s '\\' = false) || 194 | + Filename.check_suffix (String.lowercase s) ".exe" then 195 | + s 196 | + else 197 | + let s' = s ^ ".exe" in 198 | + if Sys.file_exists s' then 199 | + s' 200 | + else 201 | + s 202 | + 203 | +let rewrite_pp cmd = 204 | + if not is_win then cmd else 205 | + let module T = struct exception Keep end in 206 | + let is_whitespace = function 207 | + | ' ' | '\011' | '\012' | '\n' | '\r' | '\t' -> true 208 | + | _ -> false in 209 | + (* characters that triggers special behaviour (cmd.exe, not unix shell) *) 210 | + let is_unsafe_char = function 211 | + | '(' | ')' | '%' | '!' | '^' | '<' | '>' | '&' -> true 212 | + | _ -> false in 213 | + let len = String.length cmd in 214 | + let buf = Buffer.create (len + 4) in 215 | + let buf_cmd = Buffer.create len in 216 | + let rec iter_ws i = 217 | + if i >= len then () else 218 | + let cur = cmd.[i] in 219 | + if is_whitespace cur then ( 220 | + Buffer.add_char buf cur; 221 | + iter_ws (succ i) 222 | + ) 223 | + else 224 | + iter_cmd i 225 | + and iter_cmd i = 226 | + if i >= len then add_buf_cmd () else 227 | + let cur = cmd.[i] in 228 | + if is_unsafe_char cur || cur = '"' || cur = '\'' then 229 | + raise T.Keep; 230 | + if is_whitespace cur then ( 231 | + add_buf_cmd (); 232 | + Buffer.add_substring buf cmd i (len - i) 233 | + ) 234 | + else ( 235 | + Buffer.add_char buf_cmd cur; 236 | + iter_cmd (succ i) 237 | + ) 238 | + and add_buf_cmd () = 239 | + if Buffer.length buf_cmd > 0 then 240 | + Buffer.add_string buf (rewrite_cmd (Buffer.contents buf_cmd)) 241 | + in 242 | + try 243 | + iter_ws 0; 244 | + Buffer.contents buf 245 | + with 246 | + | T.Keep -> cmd 247 | 248 | let process_pp_spec syntax_preds packages pp_opts = 249 | (* Returns: pp_command *) 250 | @@ -549,7 +645,7 @@ 251 | None -> [] 252 | | Some cmd -> 253 | ["-pp"; 254 | - cmd ^ " " ^ 255 | + (rewrite_cmd cmd) ^ " " ^ 256 | String.concat " " (List.map Filename.quote pp_i_options) ^ " " ^ 257 | String.concat " " (List.map Filename.quote pp_archives) ^ " " ^ 258 | String.concat " " (List.map Filename.quote pp_opts)] 259 | @@ -625,9 +721,11 @@ 260 | in 261 | try 262 | let preprocessor = 263 | + rewrite_cmd ( 264 | resolve_path 265 | ~base ~explicit:true 266 | - (package_property predicates pname "ppx") in 267 | + (package_property predicates pname "ppx") ) 268 | + in 269 | ["-ppx"; String.concat " " (preprocessor :: options)] 270 | with Not_found -> [] 271 | ) 272 | @@ -895,6 +993,14 @@ 273 | switch (e.g. -L instead of -L ) 274 | *) 275 | 276 | +(* We may need to remove files on which we do not have complete control. 277 | + On Windows, removing a read-only file fails so try to change the 278 | + mode of the file first. *) 279 | +let remove_file fname = 280 | + try Sys.remove fname 281 | + with Sys_error _ when is_win -> 282 | + (try Unix.chmod fname 0o666 with Unix.Unix_error _ -> ()); 283 | + Sys.remove fname 284 | 285 | let ocamlc which () = 286 | 287 | @@ -1022,9 +1128,12 @@ 288 | 289 | "-intf", 290 | Arg.String (fun s -> pass_files := !pass_files @ [ Intf(slashify s) ]); 291 | - 292 | + 293 | "-pp", 294 | - Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" s); 295 | + Arg.String (fun s -> pp_specified := true; add_spec_fn "-pp" (rewrite_pp s)); 296 | + 297 | + "-ppx", 298 | + Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); 299 | 300 | "-thread", 301 | Arg.Unit (fun _ -> threads := threads_default); 302 | @@ -1237,7 +1346,7 @@ 303 | with 304 | any -> 305 | close_out initl; 306 | - Sys.remove initl_file_name; 307 | + remove_file initl_file_name; 308 | raise any 309 | end; 310 | 311 | @@ -1245,9 +1354,9 @@ 312 | at_exit 313 | (fun () -> 314 | let tr f x = try f x with _ -> () in 315 | - tr Sys.remove initl_file_name; 316 | - tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmi"); 317 | - tr Sys.remove (Filename.chop_extension initl_file_name ^ ".cmo"); 318 | + tr remove_file initl_file_name; 319 | + tr remove_file (Filename.chop_extension initl_file_name ^ ".cmi"); 320 | + tr remove_file (Filename.chop_extension initl_file_name ^ ".cmo"); 321 | ); 322 | 323 | let exclude_list = [ stdlibdir; threads_dir; vmthreads_dir ] in 324 | @@ -1493,7 +1602,9 @@ 325 | [ "-v", Arg.Unit (fun () -> verbose := Verbose); 326 | "-pp", Arg.String (fun s -> 327 | pp_specified := true; 328 | - options := !options @ ["-pp"; s]); 329 | + options := !options @ ["-pp"; rewrite_pp s]); 330 | + "-ppx", Arg.String (fun s -> 331 | + options := !options @ ["-ppx"; rewrite_pp s]); 332 | ] 333 | ) 334 | ) 335 | @@ -1672,7 +1783,9 @@ 336 | Arg.String (fun s -> add_spec_fn "-I" (slashify (resolve_path s))); 337 | 338 | "-pp", Arg.String (fun s -> pp_specified := true; 339 | - add_spec_fn "-pp" s); 340 | + add_spec_fn "-pp" (rewrite_pp s)); 341 | + "-ppx", Arg.String (fun s -> add_spec_fn "-ppx" (rewrite_pp s)); 342 | + 343 | ] 344 | ) 345 | ) 346 | @@ -1830,7 +1943,10 @@ 347 | output_string ch_out append; 348 | close_out ch_out; 349 | close_in ch_in; 350 | - Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime; 351 | + (try Unix.utimes outpath s.Unix.st_mtime s.Unix.st_mtime 352 | + with Unix.Unix_error(e,_,_) -> 353 | + prerr_endline("Warning: setting utimes for " ^ outpath 354 | + ^ ": " ^ Unix.error_message e)); 355 | 356 | prerr_endline("Installed " ^ outpath); 357 | with 358 | @@ -1882,6 +1998,8 @@ 359 | Unix.openfile (Filename.concat dir owner_file) [Unix.O_RDONLY] 0 in 360 | let f = 361 | Unix.in_channel_of_descr fd in 362 | + if is_win then 363 | + set_binary_mode_in f false; 364 | try 365 | let line = input_line f in 366 | let is_my_file = (line = pkg) in 367 | @@ -2208,7 +2326,7 @@ 368 | let lines = read_ldconf !ldconf in 369 | let dlldir_norm = Fl_split.norm_dir dlldir in 370 | let dlldir_norm_lc = string_lowercase_ascii dlldir_norm in 371 | - let ci_filesys = (Sys.os_type = "Win32") in 372 | + let ci_filesys = is_win in 373 | let check_dir d = 374 | let d' = Fl_split.norm_dir d in 375 | (d' = dlldir_norm) || 376 | @@ -2356,7 +2474,7 @@ 377 | List.iter 378 | (fun file -> 379 | let absfile = Filename.concat dlldir file in 380 | - Sys.remove absfile; 381 | + remove_file absfile; 382 | prerr_endline ("Removed " ^ absfile) 383 | ) 384 | dll_files 385 | @@ -2365,7 +2483,7 @@ 386 | (* Remove the files from the package directory: *) 387 | if Sys.file_exists pkgdir then begin 388 | let files = Sys.readdir pkgdir in 389 | - Array.iter (fun f -> Sys.remove (Filename.concat pkgdir f)) files; 390 | + Array.iter (fun f -> remove_file (Filename.concat pkgdir f)) files; 391 | Unix.rmdir pkgdir; 392 | prerr_endline ("Removed " ^ pkgdir) 393 | end 394 | @@ -2415,7 +2533,9 @@ 395 | 396 | 397 | let print_configuration() = 398 | + let sl = slashify in 399 | let dir s = 400 | + let s = sl s in 401 | if Sys.file_exists s then 402 | s 403 | else 404 | @@ -2453,27 +2573,27 @@ 405 | if md = "" then "the corresponding package directories" else dir md 406 | ); 407 | Printf.printf "The standard library is assumed to reside in:\n %s\n" 408 | - (Findlib.ocaml_stdlib()); 409 | + (sl (Findlib.ocaml_stdlib())); 410 | Printf.printf "The ld.conf file can be found here:\n %s\n" 411 | - (Findlib.ocaml_ldconf()); 412 | + (sl (Findlib.ocaml_ldconf())); 413 | flush stdout 414 | | Some "conf" -> 415 | - print_endline (Findlib.config_file()) 416 | + print_endline (sl (Findlib.config_file())) 417 | | Some "path" -> 418 | - List.iter print_endline (Findlib.search_path()) 419 | + List.iter ( fun x -> print_endline (sl x)) (Findlib.search_path()) 420 | | Some "destdir" -> 421 | - print_endline (Findlib.default_location()) 422 | + print_endline ( sl (Findlib.default_location())) 423 | | Some "metadir" -> 424 | - print_endline (Findlib.meta_directory()) 425 | + print_endline ( sl (Findlib.meta_directory())) 426 | | Some "metapath" -> 427 | let mdir = Findlib.meta_directory() in 428 | let ddir = Findlib.default_location() in 429 | - print_endline 430 | - (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META") 431 | + print_endline ( sl 432 | + (if mdir <> "" then mdir ^ "/META.%s" else ddir ^ "/%s/META")) 433 | | Some "stdlib" -> 434 | - print_endline (Findlib.ocaml_stdlib()) 435 | + print_endline ( sl (Findlib.ocaml_stdlib())) 436 | | Some "ldconf" -> 437 | - print_endline (Findlib.ocaml_ldconf()) 438 | + print_endline ( sl (Findlib.ocaml_ldconf())) 439 | | _ -> 440 | assert false 441 | ;; 442 | @@ -2481,7 +2601,7 @@ 443 | 444 | let ocamlcall pkg cmd = 445 | let dir = package_directory pkg in 446 | - let path = Filename.concat dir cmd in 447 | + let path = rewrite_cmd (Filename.concat dir cmd) in 448 | begin 449 | try Unix.access path [ Unix.X_OK ] 450 | with 451 | @@ -2647,6 +2767,10 @@ 452 | | Sys_error f -> 453 | prerr_endline ("ocamlfind: " ^ f); 454 | exit 2 455 | + | Unix.Unix_error (e, fn, f) -> 456 | + prerr_endline ("ocamlfind: " ^ fn ^ " " ^ f 457 | + ^ ": " ^ Unix.error_message e); 458 | + exit 2 459 | | Findlib.No_such_package(pkg,info) -> 460 | prerr_endline ("ocamlfind: Package `" ^ pkg ^ "' not found" ^ 461 | (if info <> "" then " - " ^ info else "")); 462 | --- ./src/findlib/Makefile 463 | +++ ./src/findlib/Makefile 464 | @@ -90,6 +90,7 @@ 465 | cat findlib_config.mlp | \ 466 | $(SH) $(TOP)/tools/patch '@CONFIGFILE@' '$(OCAMLFIND_CONF)' | \ 467 | $(SH) $(TOP)/tools/patch '@STDLIB@' '$(OCAML_CORE_STDLIB)' | \ 468 | + $(SH) $(TOP)/tools/patch '@EXEC_SUFFIX@' '$(EXEC_SUFFIX)' | \ 469 | sed -e 's;@AUTOLINK@;$(OCAML_AUTOLINK);g' \ 470 | -e 's;@SYSTEM@;$(SYSTEM);g' \ 471 | >findlib_config.ml 472 | -------------------------------------------------------------------------------- /fetch-native-lwt.esy.lock/overrides/opam__s__ocamlfind_opam__c__1.8.1_opam_override/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": [ 3 | [ 4 | "bash", 5 | "-c", 6 | "#{os == 'windows' ? 'patch -p1 < findlib-1.8.1.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 | -------------------------------------------------------------------------------- /fetch-native-lwt.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fetch-native-lwt", 3 | "version": "0.1.0-alpha.5", 4 | "description": "Fetch client (Lwt) for native ReasonML/OCaml", 5 | "license": "MIT", 6 | "esy": { 7 | "build": "dune build -p #{self.name}", 8 | "buildDev": "refmterr dune build -p #{self.name}", 9 | "buildEnv": { 10 | "ODOC_SYNTAX": "re" 11 | } 12 | }, 13 | "scripts": { 14 | "format": "esy @#{self.name} dune build @fmt --auto-promote", 15 | "doc": "esy @#{self.name} dune build @doc --only-packages=fetch-core,fetch-native-lwt", 16 | "doc-path": "esy @#{self.name} echo #{self.target_dir}/default/_doc/_html", 17 | "docs:build": "esy @#{self.name} mv #{self.target_dir}/default/_doc/_html ./build", 18 | "example:get": "esy @#{self.name} b dune exec src/fetch-native-lwt/examples/Fetch_Lwt.exe", 19 | "example:isSuccessful": "esy @#{self.name} b dune exec src/fetch-native-lwt/examples/Fetch_Lwt_Successful.exe" 20 | }, 21 | "dependencies": { 22 | "fetch-core": ">=0.1.0-alpha.5", 23 | "@esy-ocaml/reason": ">=3.3.2", 24 | "@opam/dune": ">=2.0.1", 25 | "@reason-native-web/piaf": "^1.3.0", 26 | "ocaml": ">=4.8.0" 27 | }, 28 | "devDependencies": { 29 | "fetch-core": "*", 30 | "@esy-ocaml/reason": ">=3.6.0", 31 | "@opam/merlin": "*", 32 | "@opam/odoc": "*", 33 | "@reason-native/console": "0.1.0", 34 | "@reason-native/rely": "*", 35 | "ocaml": "~4.9.0", 36 | "refmterr": "*", 37 | "@opam/ocaml-lsp-server": "ocaml/ocaml-lsp:ocaml-lsp-server.opam" 38 | }, 39 | "resolutions": { 40 | "fetch-core": "link:./fetch-core.json" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /fetch-native-lwt.opam: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessp/fetch/cca3980900c70d21341bf0aa9a1e091e75161f23/fetch-native-lwt.opam -------------------------------------------------------------------------------- /fetch-test.opam: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessp/fetch/cca3980900c70d21341bf0aa9a1e091e75161f23/fetch-test.opam -------------------------------------------------------------------------------- /prepare-npm-release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | for package in fetch-core fetch-native-lwt 4 | do 5 | cp $package.json ./src/$package/package.json 6 | cp $package.opam ./src/$package 7 | cp LICENSE ./src/$package 8 | cp dune-project ./src/$package 9 | done 10 | -------------------------------------------------------------------------------- /src/fetch-core/.npmignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.install 3 | *.merlin 4 | *.lock 5 | _esy 6 | -------------------------------------------------------------------------------- /src/fetch-core/README.md: -------------------------------------------------------------------------------- 1 | # Fetch 2 | 3 | [![npm version](https://badge.fury.io/js/fetch-core.svg)](https://badge.fury.io/js/fetch-core) 4 | 5 | A fetch interface/functor for ReasonML/OCaml. 6 | 7 | ## Description 8 | 9 | A fetch interface and implementation based on the Fetch-specification from [Whatwg](https://fetch.spec.whatwg.org/). That said, it makes conscious trade-offs and decisions to fit the Reason/OCaml-ecosystem. It also takes inspiration and attempts to follow community-idioms and best practices with regards to HTTP-clients. 10 | 11 | The goal is to be pluggable with any HTTP or Promise-implementation provided it conforms to the common interface. 12 | 13 | See [`fetch-native-lwt`]('../../fetch-native-lwt') for an example-implementation. 14 | 15 | ## Credits 16 | 17 | The implementation is largely inspired from [@aantron's](https://github.com/aantron) efforts in "Promisifying" [luv](https://github.com/aantron/luv). 18 | -------------------------------------------------------------------------------- /src/fetch-core/src/Fetch_Core.re: -------------------------------------------------------------------------------- 1 | module Method = Method; 2 | module Status = Status; 3 | module Headers = Headers; 4 | module Request = Request; 5 | 6 | module Fetchify = Fetchify; 7 | -------------------------------------------------------------------------------- /src/fetch-core/src/Fetchify.re: -------------------------------------------------------------------------------- 1 | include FetchifySignatures; 2 | 3 | module CreateFetchImplementation = (ProvidedFetch: FETCH) => { 4 | module Headers = Headers; 5 | module Status = Status; 6 | module Method = Method; 7 | module Request = Request; 8 | 9 | module Body = ProvidedFetch.Body; 10 | module Response = ProvidedFetch.Response; 11 | 12 | let fetch = ProvidedFetch.fetch; 13 | 14 | let get = fetch(~meth=`GET); 15 | let post = fetch(~meth=`POST); 16 | let put = fetch(~meth=`PUT); 17 | let delete = fetch(~meth=`DELETE); 18 | }; 19 | -------------------------------------------------------------------------------- /src/fetch-core/src/Fetchify.rei: -------------------------------------------------------------------------------- 1 | include (module type of FetchifySignatures); 2 | 3 | module CreateFetchImplementation: 4 | (F: FETCH) => 5 | 6 | FETCHIFIED with 7 | type promise('a) := F.promise('a) and 8 | type result('a, 'error) := F.result('a, 'error); 9 | -------------------------------------------------------------------------------- /src/fetch-core/src/FetchifySignatures.re: -------------------------------------------------------------------------------- 1 | module type FETCH = { 2 | type promise('a); 3 | type result('a, 'error); 4 | 5 | module Body: { 6 | type t; 7 | 8 | let toString: t => string; 9 | let ofString: string => t; 10 | }; 11 | 12 | module Response: { 13 | module Body = Body; 14 | module Status = Status; 15 | 16 | type t = { 17 | body: Body.t, 18 | headers: list(Headers.t), 19 | status: Status.t, 20 | url: string, 21 | }; 22 | }; 23 | 24 | let fetch: 25 | ( 26 | ~body: string=?, 27 | ~headers: list(Headers.t)=?, 28 | ~meth: Method.t=?, 29 | string 30 | ) => 31 | promise(result(Response.t, string)); 32 | }; 33 | 34 | module type FETCHIFIED = { 35 | type promise('a); 36 | type result('a, 'error); 37 | 38 | module Status: (module type of Status); 39 | module Headers: (module type of Headers); 40 | module Request: (module type of Request); 41 | module Method: (module type of Method); 42 | 43 | module Body: { 44 | type t; 45 | 46 | /** Takes a Body.t and returns a string. 47 | 48 | {2 Examples} 49 | {[Fetch.Body.toString(body) == string]} 50 | */ 51 | let toString: t => string; 52 | 53 | /** Takes a string and returns Body.t. 54 | 55 | {2 Examples} 56 | {[Fetch.Body.ofString("Some, body") == Body.t]} 57 | */ 58 | let ofString: string => t; 59 | }; 60 | 61 | module Response: { 62 | type t = { 63 | body: Body.t, 64 | headers: list(Headers.t), 65 | status: Status.t, 66 | url: string, 67 | }; 68 | }; 69 | 70 | /** Make a fetch-request with a [body] (optional), [headers] (optional), [method] (defaults to 71 | * `GET) to endpoint [url]. 72 | 73 | {2 Examples} 74 | {[Fetch.fetch("https://example.com")]} 75 | {[ 76 | Fetch.fetch( 77 | "https://example.com", 78 | ~body="Some, body", 79 | ~headers=[("Authorization", "Bearer xyz")], 80 | ~meth=`POST) 81 | ]} 82 | */ 83 | let fetch: 84 | ( 85 | ~body: string=?, 86 | ~headers: list(Headers.t)=?, 87 | ~meth: Method.t=?, 88 | string 89 | ) => 90 | promise(result(Response.t, string)); 91 | 92 | /** Make a GET-request with a [body] (optional), [headers] (optional) to endpoint [url]. 93 | 94 | {2 Examples} 95 | {[Fetch.get("https://example.com")]} 96 | {[ 97 | Fetch.get( 98 | "https://example.com", 99 | ~headers=[("Authorization", "Bearer xyz")], 100 | ) 101 | ]} 102 | */ 103 | let get: 104 | (~body: string=?, ~headers: list(Headers.t)=?, string) => 105 | promise(result(Response.t, string)); 106 | 107 | /** Make a POST-request with a [body] (optional), [headers] (optional) to endpoint [url]. 108 | 109 | {2 Examples} 110 | {[ 111 | Fetch.post( 112 | "https://example.com", 113 | ~body="Some, body", 114 | ~headers=[("Authorization", "Bearer xyz")], 115 | ) 116 | ]} 117 | */ 118 | let post: 119 | (~body: string=?, ~headers: list(Headers.t)=?, string) => 120 | promise(result(Response.t, string)); 121 | 122 | /** Make a PUT-request with a [body] (optional), [headers] (optional) to endpoint [url]. 123 | 124 | {2 Examples} 125 | {[ 126 | Fetch.put( 127 | "https://example.com/movies/1", 128 | ~body="Some, body", 129 | ~headers=[("Authorization", "Bearer xyz")], 130 | ) 131 | ]} 132 | */ 133 | let put: 134 | (~body: string=?, ~headers: list(Headers.t)=?, string) => 135 | promise(result(Response.t, string)); 136 | 137 | /** Make a DELETE-request with a [body] (optional), [headers] (optional) to endpoint [url]. 138 | 139 | {2 Examples} 140 | {[ 141 | Fetch.delete( 142 | "https://example.com/movies/1", 143 | ~headers=[("Authorization", "Bearer xyz")], 144 | ) 145 | ]} 146 | */ 147 | let delete: 148 | (~body: string=?, ~headers: list(Headers.t)=?, string) => 149 | promise(result(Response.t, string)); 150 | }; 151 | -------------------------------------------------------------------------------- /src/fetch-core/src/Headers.re: -------------------------------------------------------------------------------- 1 | type t = (string, string); 2 | 3 | let toString = headers => { 4 | let buffer = Buffer.create(128); 5 | 6 | List.iter( 7 | ((name, value)) => { 8 | Buffer.add_string(buffer, name); 9 | Buffer.add_string(buffer, ": "); 10 | Buffer.add_string(buffer, value); 11 | Buffer.add_string(buffer, "\r\n"); 12 | }, 13 | headers, 14 | ); 15 | 16 | Buffer.add_string(buffer, "\r\n"); 17 | Buffer.contents(buffer); 18 | }; 19 | -------------------------------------------------------------------------------- /src/fetch-core/src/Headers.rei: -------------------------------------------------------------------------------- 1 | type t = (string, string); 2 | 3 | let toString: list(t) => string; 4 | -------------------------------------------------------------------------------- /src/fetch-core/src/Method.re: -------------------------------------------------------------------------------- 1 | type standard = [ 2 | | `CONNECT 3 | | `DELETE 4 | | `GET 5 | | `HEAD 6 | | `OPTIONS 7 | | `POST 8 | | `PUT 9 | | `TRACE 10 | ]; 11 | 12 | type t = [ standard | `Other(string)]; 13 | 14 | let ofString = 15 | fun 16 | | "CONNECT" => `CONNECT 17 | | "DELETE" => `DELETE 18 | | "GET" => `GET 19 | | "HEAD" => `HEAD 20 | | "OPTIONS" => `OPTIONS 21 | | "POST" => `POST 22 | | "PUT" => `PUT 23 | | "TRACE" => `TRACE 24 | | s => `Other(s); 25 | 26 | let toString = 27 | fun 28 | | `CONNECT => "CONNECT" 29 | | `DELETE => "DELETE" 30 | | `GET => "GET" 31 | | `HEAD => "HEAD" 32 | | `OPTIONS => "OPTIONS" 33 | | `POST => "POST" 34 | | `PUT => "PUT" 35 | | `TRACE => "TRACE" 36 | | `Other(v) => v; 37 | -------------------------------------------------------------------------------- /src/fetch-core/src/Method.rei: -------------------------------------------------------------------------------- 1 | type standard = [ 2 | | `CONNECT 3 | | `DELETE 4 | | `GET 5 | | `HEAD 6 | | `OPTIONS 7 | | `POST 8 | | `PUT 9 | | `TRACE 10 | ]; 11 | 12 | type t = [ standard | `Other(string)]; 13 | 14 | /** Returns a t from a string. 15 | 16 | {2 Examples} 17 | {[Method.ofString("GET") = `GET]} 18 | {[Method.ofString("NOT_A_STANDARD_METHOD") = `Other("NOT_A_STANDARD_METHOD")]} 19 | */ 20 | let ofString: string => t; 21 | 22 | /** Returns the string-representation of a t. 23 | 24 | {2 Examples} 25 | {[Method.toString(`GET) = "GET"]} 26 | {[Method.toString(`Other("NOT_A_STANDARD_METHOD") = "NOT_A_STANDARD_METHOD"]} 27 | */ 28 | let toString: t => string; 29 | -------------------------------------------------------------------------------- /src/fetch-core/src/Request.re: -------------------------------------------------------------------------------- 1 | type t = { 2 | body: option(string), 3 | headers: list(Headers.t), 4 | meth: Method.t, 5 | url: string, 6 | }; 7 | 8 | let create = (~body, ~headers, ~meth=`GET, ~url) => { 9 | body, 10 | headers, 11 | meth, 12 | url, 13 | }; 14 | -------------------------------------------------------------------------------- /src/fetch-core/src/Status.re: -------------------------------------------------------------------------------- 1 | type informational = [ | `Continue | `SwitchingProtocols | `Processing]; 2 | 3 | type success = [ 4 | | `OK 5 | | `Created 6 | | `Accepted 7 | | `NonAuthoritativeInformation 8 | | `NoContent 9 | | `ResetContent 10 | | `PartialContent 11 | | `MultiStatus 12 | | `AlreadyReported 13 | | `IMUsed 14 | ]; 15 | 16 | type redirection = [ 17 | | `MultipleChoices 18 | | `MovedPermanently 19 | | `Found 20 | | `SeeOther 21 | | `NotModified 22 | | `UseProxy 23 | | `TemporaryRedirect 24 | | `PermanentRedirect 25 | ]; 26 | 27 | type clientError = [ 28 | | `BadRequest 29 | | `Unauthorized 30 | | `PaymentRequired 31 | | `Forbidden 32 | | `NotFound 33 | | `MethodNotAllowed 34 | | `NotAcceptable 35 | | `ProxyAuthenticationRequired 36 | | `RequestTimeout 37 | | `Conflict 38 | | `Gone 39 | | `LengthRequired 40 | | `PreconditionFailed 41 | | `PayloadTooLarge 42 | | `UriTooLong 43 | | `UnsupportedMediaType 44 | | `RangeNotSatisfiable 45 | | `ExpectationFailed 46 | | `ImATeapot 47 | | `MisdirectedRequest 48 | | `UnprocessableEntity 49 | | `Locked 50 | | `FailedDependency 51 | | `UpgradeRequired 52 | | `PreconditionRequired 53 | | `TooManyRequests 54 | | `RequestHeaderFieldsTooLarge 55 | | `UnavailableForLegalReasons 56 | ]; 57 | 58 | type serverError = [ 59 | | `InternalServerError 60 | | `NotImplemented 61 | | `BadGateway 62 | | `ServiceUnavailable 63 | | `GatewayTimeout 64 | | `HttpVersionNotSupported 65 | | `VariantAlsoNegotiates 66 | | `InsufficientStorage 67 | | `LoopDetected 68 | | `NotExtended 69 | | `NetworkAuthenticationRequired 70 | ]; 71 | 72 | type standard = [ 73 | clientError 74 | | informational 75 | | redirection 76 | | serverError 77 | | success 78 | ]; 79 | 80 | type t = [ standard | `Other(int)]; 81 | 82 | let toCode = 83 | fun 84 | /* Informational */ 85 | | `Continue => 100 86 | | `SwitchingProtocols => 101 87 | | `Processing => 102 88 | /* Successful */ 89 | | `OK => 200 90 | | `Created => 201 91 | | `Accepted => 202 92 | | `NonAuthoritativeInformation => 203 93 | | `NoContent => 204 94 | | `ResetContent => 205 95 | | `PartialContent => 206 96 | | `MultiStatus => 207 97 | | `AlreadyReported => 208 98 | | `IMUsed => 226 99 | /* Redirection */ 100 | | `MultipleChoices => 300 101 | | `MovedPermanently => 301 102 | | `Found => 302 103 | | `SeeOther => 303 104 | | `NotModified => 304 105 | | `UseProxy => 305 106 | | `TemporaryRedirect => 307 107 | | `PermanentRedirect => 308 108 | /* Client Error*/ 109 | | `BadRequest => 400 110 | | `Unauthorized => 401 111 | | `PaymentRequired => 402 112 | | `Forbidden => 403 113 | | `NotFound => 404 114 | | `MethodNotAllowed => 405 115 | | `NotAcceptable => 406 116 | | `ProxyAuthenticationRequired => 407 117 | | `RequestTimeout => 408 118 | | `Conflict => 409 119 | | `Gone => 410 120 | | `LengthRequired => 411 121 | | `PreconditionFailed => 412 122 | | `PayloadTooLarge => 413 123 | | `UriTooLong => 414 124 | | `UnsupportedMediaType => 415 125 | | `RangeNotSatisfiable => 416 126 | | `ExpectationFailed => 417 127 | | `ImATeapot => 418 128 | | `MisdirectedRequest => 421 129 | | `UnprocessableEntity => 422 130 | | `Locked => 423 131 | | `FailedDependency => 424 132 | | `UpgradeRequired => 426 133 | | `PreconditionRequired => 428 134 | | `TooManyRequests => 429 135 | | `RequestHeaderFieldsTooLarge => 431 136 | | `UnavailableForLegalReasons => 451 137 | /* Server Error */ 138 | | `InternalServerError => 500 139 | | `NotImplemented => 501 140 | | `BadGateway => 502 141 | | `ServiceUnavailable => 503 142 | | `GatewayTimeout => 504 143 | | `HttpVersionNotSupported => 505 144 | | `VariantAlsoNegotiates => 506 145 | | `InsufficientStorage => 507 146 | | `LoopDetected => 508 147 | | `NotExtended => 510 148 | | `NetworkAuthenticationRequired => 511 149 | | `Other(c) => c; 150 | 151 | let ofCode = 152 | fun 153 | /* Informational */ 154 | | 100 => `Continue 155 | | 101 => `SwitchingProtocols 156 | | 102 => `Processing 157 | /* Successful */ 158 | | 200 => `OK 159 | | 201 => `Created 160 | | 202 => `Accepted 161 | | 203 => `NonAuthoritativeInformation 162 | | 204 => `NoContent 163 | | 205 => `ResetContent 164 | | 206 => `PartialContent 165 | | 207 => `MultiStatus 166 | | 208 => `AlreadyReported 167 | | 226 => `IMUsed 168 | /* Redirection */ 169 | | 300 => `MultipleChoices 170 | | 301 => `MovedPermanently 171 | | 302 => `Found 172 | | 303 => `SeeOther 173 | | 304 => `NotModified 174 | | 305 => `UseProxy 175 | | 307 => `TemporaryRedirect 176 | | 308 => `PermanentRedirect 177 | /* Client Error */ 178 | | 400 => `BadRequest 179 | | 401 => `Unauthorized 180 | | 402 => `PaymentRequired 181 | | 403 => `Forbidden 182 | | 404 => `NotFound 183 | | 405 => `MethodNotAllowed 184 | | 406 => `NotAcceptable 185 | | 407 => `ProxyAuthenticationRequired 186 | | 408 => `RequestTimeout 187 | | 409 => `Conflict 188 | | 410 => `Gone 189 | | 411 => `LengthRequired 190 | | 412 => `PreconditionFailed 191 | | 413 => `PayloadTooLarge 192 | | 414 => `UriTooLong 193 | | 415 => `UnsupportedMediaType 194 | | 416 => `RangeNotSatisfiable 195 | | 417 => `ExpectationFailed 196 | | 418 => `ImATeapot 197 | | 421 => `MisdirectedRequest 198 | | 422 => `UnprocessableEntity 199 | | 423 => `Locked 200 | | 424 => `FailedDependency 201 | | 426 => `UpgradeRequired 202 | | 428 => `PreconditionRequired 203 | | 429 => `TooManyRequests 204 | | 431 => `RequestHeaderFieldsTooLarge 205 | | 451 => `UnavailableForLegalReasons 206 | /* Server Error */ 207 | | 500 => `InternalServerError 208 | | 501 => `NotImplemented 209 | | 502 => `BadGateway 210 | | 503 => `ServiceUnavailable 211 | | 504 => `GatewayTimeout 212 | | 505 => `HttpVersionNotSupported 213 | | 506 => `VariantAlsoNegotiates 214 | | 507 => `InsufficientStorage 215 | | 508 => `LoopDetected 216 | | 510 => `NotExtended 217 | | 511 => `NetworkAuthenticationRequired 218 | | c => `Other(c); 219 | 220 | let isSuccessful = 221 | fun 222 | | #success => true 223 | | _ => false; 224 | 225 | let isRedirect = 226 | fun 227 | | #redirection => true 228 | | _ => false; 229 | 230 | let isClientError = 231 | fun 232 | | #clientError => true 233 | | _ => false; 234 | 235 | let isServerError = 236 | fun 237 | | #serverError => true 238 | | _ => false; 239 | 240 | let isInformational = 241 | fun 242 | | #informational => true 243 | | _ => false; 244 | 245 | let isError = 246 | fun 247 | | #serverError 248 | | #clientError => true 249 | | _ => false; 250 | 251 | let make = ofCode; 252 | -------------------------------------------------------------------------------- /src/fetch-core/src/Status.rei: -------------------------------------------------------------------------------- 1 | type informational = [ | `Continue | `SwitchingProtocols | `Processing]; 2 | 3 | type success = [ 4 | | `OK 5 | | `Created 6 | | `Accepted 7 | | `NonAuthoritativeInformation 8 | | `NoContent 9 | | `ResetContent 10 | | `PartialContent 11 | | `MultiStatus 12 | | `AlreadyReported 13 | | `IMUsed 14 | ]; 15 | 16 | type redirection = [ 17 | | `MultipleChoices 18 | | `MovedPermanently 19 | | `Found 20 | | `SeeOther 21 | | `NotModified 22 | | `UseProxy 23 | | `TemporaryRedirect 24 | | `PermanentRedirect 25 | ]; 26 | 27 | type clientError = [ 28 | | `BadRequest 29 | | `Unauthorized 30 | | `PaymentRequired 31 | | `Forbidden 32 | | `NotFound 33 | | `MethodNotAllowed 34 | | `NotAcceptable 35 | | `ProxyAuthenticationRequired 36 | | `RequestTimeout 37 | | `Conflict 38 | | `Gone 39 | | `LengthRequired 40 | | `PreconditionFailed 41 | | `PayloadTooLarge 42 | | `UriTooLong 43 | | `UnsupportedMediaType 44 | | `RangeNotSatisfiable 45 | | `ExpectationFailed 46 | | `ImATeapot 47 | | `MisdirectedRequest 48 | | `UnprocessableEntity 49 | | `Locked 50 | | `FailedDependency 51 | | `UpgradeRequired 52 | | `PreconditionRequired 53 | | `TooManyRequests 54 | | `RequestHeaderFieldsTooLarge 55 | | `UnavailableForLegalReasons 56 | ]; 57 | 58 | type serverError = [ 59 | | `InternalServerError 60 | | `NotImplemented 61 | | `BadGateway 62 | | `ServiceUnavailable 63 | | `GatewayTimeout 64 | | `HttpVersionNotSupported 65 | | `VariantAlsoNegotiates 66 | | `InsufficientStorage 67 | | `LoopDetected 68 | | `NotExtended 69 | | `NetworkAuthenticationRequired 70 | ]; 71 | 72 | type standard = [ 73 | clientError 74 | | informational 75 | | redirection 76 | | serverError 77 | | success 78 | ]; 79 | 80 | type t = [ standard | `Other(int)]; 81 | 82 | /** Returns a code as an int from a t. 83 | 84 | {2 Examples} 85 | {[Status.toCode(`OK) = 200]} 86 | {[Status.toCode(`Other(999)) = 999]} 87 | */ 88 | let toCode: t => int; 89 | 90 | /** Returns a t from an int. 91 | 92 | {2 Examples} 93 | {[Status.ofCode(200) = `OK]} 94 | {[Status.ofCode(999) = `Other(999)]} 95 | */ 96 | let ofCode: int => t; 97 | 98 | /** Returns true if the status is informational. 99 | 100 | {2 Examples} 101 | {[Status.isInformational(`Continue) = true]} 102 | {[Status.isInformational(`NotFound) = false]} 103 | {[Status.isInformational(`OK) = false]} 104 | */ 105 | let isInformational: t => bool; 106 | 107 | /** Returns true if the status is successful. 108 | 109 | {2 Examples} 110 | {[Status.isSuccessful(`OK) = true]} 111 | {[Status.isSuccessful(`InternalServerError) = false]} 112 | */ 113 | let isSuccessful: t => bool; 114 | 115 | /** Returns true if the status is a redirect. 116 | 117 | {2 Examples} 118 | {[Status.isRedirect(`MovedPermanently) = true]} 119 | {[Status.isRedirect(`InternalServerError) = false]} 120 | */ 121 | let isRedirect: t => bool; 122 | 123 | /** Returns true if the status is that of a client error. 124 | 125 | {2 Examples} 126 | {[Status.isClientError(`NotFound) = true]} 127 | {[Status.isClientError(`InternalServerError) = false]} 128 | {[Status.isClientError(`OK) = false]} 129 | */ 130 | let isClientError: t => bool; 131 | 132 | /** Returns true if the status is that of a server error. 133 | 134 | {2 Examples} 135 | {[Status.isServerError(`InternalServerError) = true]} 136 | {[Status.isServerError(`NotFound) = false]} 137 | {[Status.isServerError(`OK) = false]} 138 | */ 139 | let isServerError: t => bool; 140 | 141 | /** Returns true if the status is an error, either of type client or server. 142 | 143 | {2 Examples} 144 | {[Status.isError(`InternalServerError) = true]} 145 | {[Status.isError(`NotFound) = true]} 146 | {[Status.isError(`OK) = false]} 147 | */ 148 | let isError: t => bool; 149 | 150 | let make: int => t; 151 | -------------------------------------------------------------------------------- /src/fetch-core/src/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name Fetch_Core) 3 | (public_name fetch-core)) 4 | -------------------------------------------------------------------------------- /src/fetch-native-lwt/.npmignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.install 3 | *.merlin 4 | *.lock 5 | _esy 6 | -------------------------------------------------------------------------------- /src/fetch-native-lwt/README.md: -------------------------------------------------------------------------------- 1 | # fetch-native-lwt 2 | 3 | Fetch client for native ReasonML. 4 | 5 | ## Getting started 6 | 7 | 1. Install 8 | 9 | Currently to install, you'll need `esy` and pin `fetch-native-lwt` to point to this Github-repo. 10 | 11 | ```json 12 | { 13 | "dependencies": { 14 | "fetch-native-lwt": "lessp/fetch:fetch-native-lwt.json" 15 | } 16 | } 17 | ``` 18 | 19 | or, to point to a specific commit: 20 | 21 | ```json 22 | "fetch-native-lwt": "lessp/fetch:fetch-native-lwt.json#" 23 | ``` 24 | 25 | 2. Add Fetch to your dune libraries: 26 | 27 | ```lisp 28 | (libraries ... fetch-native-lwt) 29 | ``` 30 | 31 | 3. Make your first request: 32 | 33 | ```re 34 | Fetch.( 35 | get("https://httpbin.org/get") 36 | |> Lwt.map( 37 | fun 38 | | Ok({Response.body, status, url, headers}) => { 39 | Printf.printf( 40 | "Headers: \n%sStatus-Code: %d\nBody: %s\nUrl: %s", 41 | Response.Headers.toString(headers), 42 | Response.Status.toCode(status), 43 | Response.Body.toString(body), 44 | url, 45 | ); 46 | } 47 | | Error(e) => Printf.printf("That's an error: %s", e), 48 | ) 49 | |> Lwt_main.run 50 | ); 51 | ``` 52 | -------------------------------------------------------------------------------- /src/fetch-native-lwt/examples/Fetch_Lwt.re: -------------------------------------------------------------------------------- 1 | module LetOperators = { 2 | let (let.flatMapOk) = (promise, fn) => 3 | Lwt.bind( 4 | promise, 5 | fun 6 | | Ok(response) => fn(response) 7 | | Error(e) => Lwt.return(Error(e)), 8 | ); 9 | 10 | let (let.flatMap) = (promise, fn) => Lwt.bind(promise, fn); 11 | }; 12 | 13 | open LetOperators; 14 | 15 | let result = 16 | Fetch.( 17 | { 18 | let.flatMapOk {Response.body, _} = 19 | get( 20 | "https://httpbin.org/get", 21 | ~headers=[("Authorisation", "Bearer xyz")], 22 | ); 23 | let bodyString = Body.toString(body); 24 | 25 | Lwt.return(Ok(bodyString)); 26 | } 27 | ) 28 | |> Lwt_main.run; 29 | 30 | switch (result) { 31 | | Ok(body) => Console.log("Body: " ++ body) 32 | | Error(errorMsg) => Console.log("That's an error: " ++ errorMsg) 33 | }; 34 | -------------------------------------------------------------------------------- /src/fetch-native-lwt/examples/Fetch_Lwt_Successful.re: -------------------------------------------------------------------------------- 1 | let handleResponse = 2 | Fetch.( 3 | fun 4 | | Ok({Response.status, _}) when Status.isSuccessful(status) => "Success!" 5 | | _ => "That's anything but successful. :-(" 6 | ); 7 | 8 | let fetchWithAuth = Fetch.get(~headers=[("Authorisation", "Bearer xyz")]); 9 | let fetchWithAuthAndBody = fetchWithAuth(~body="Hello World!"); 10 | 11 | fetchWithAuthAndBody("https://httpbin.org/get") 12 | |> Lwt.map(handleResponse) 13 | |> Lwt.map(Console.log) 14 | |> Lwt_main.run; 15 | -------------------------------------------------------------------------------- /src/fetch-native-lwt/examples/dune: -------------------------------------------------------------------------------- 1 | (executables 2 | (names Fetch_Lwt Fetch_Lwt_Successful) 3 | (libraries console.lib fetch-native-lwt)) 4 | -------------------------------------------------------------------------------- /src/fetch-native-lwt/src/Fetch.re: -------------------------------------------------------------------------------- 1 | module FetchImplementation = { 2 | module Headers = Fetch_Core.Headers; 3 | module Method = Fetch_Core.Method; 4 | module Status = Fetch_Core.Status; 5 | module Request = Fetch_Core.Request; 6 | 7 | type promise('a) = Lwt.t('a); 8 | type result('a, 'error) = Stdlib.Result.t('a, 'error); 9 | 10 | module Body = { 11 | type t = string; 12 | 13 | let make = body => body; 14 | 15 | let toString = body => body; 16 | let ofString = body => make(body); 17 | }; 18 | 19 | module Response = { 20 | module Body = Body; 21 | module Status = Status; 22 | 23 | type t = { 24 | body: Body.t, 25 | headers: list(Fetch_Core.Headers.t), 26 | status: Status.t, 27 | url: string, 28 | }; 29 | 30 | let make = (~body, ~headers, ~status, ~url) => { 31 | body, 32 | headers, 33 | status, 34 | url, 35 | }; 36 | }; 37 | 38 | let fetch = (~body=?, ~headers=[], ~meth=`GET, url) => { 39 | let {Fetch_Core.Request.headers, body, meth, url} = 40 | Fetch_Core.Request.create(~body, ~headers, ~meth, ~url); 41 | 42 | let body = 43 | switch (body) { 44 | | Some(body) => Piaf.Body.of_string(body) 45 | | None => Piaf.Body.empty 46 | }; 47 | 48 | Lwt.Infix.( 49 | Piaf.Client.Oneshot.request( 50 | ~config={...Piaf.Config.default, follow_redirects: true}, 51 | ~meth=Piaf.Method.of_string(Method.toString(meth)), 52 | ~headers=headers |> List.append([("User-Agent", "reason-fetch")]), 53 | ~body, 54 | url |> Uri.of_string, 55 | ) 56 | >>= ( 57 | res => 58 | switch (res) { 59 | | Ok(response) => 60 | response.body 61 | |> Piaf.Body.to_string 62 | >>= ( 63 | fun 64 | | Ok(body) => { 65 | Lwt.return( 66 | Ok( 67 | Response.make( 68 | ~status= 69 | Status.make(Piaf.Status.to_code(response.status)), 70 | ~body=Body.make(body), 71 | ~headers=response.headers |> Piaf.Headers.to_list, 72 | ~url, 73 | ), 74 | ), 75 | ); 76 | } 77 | | Error(error) => 78 | Lwt.return(Error(Piaf.Error.to_string(error))) 79 | ) 80 | | Error(error) => Lwt.return(Error(Piaf.Error.to_string(error))) 81 | } 82 | ) 83 | ); 84 | }; 85 | }; 86 | 87 | include Fetch_Core.Fetchify.CreateFetchImplementation(FetchImplementation); 88 | -------------------------------------------------------------------------------- /src/fetch-native-lwt/src/Fetch.rei: -------------------------------------------------------------------------------- 1 | include 2 | Fetch_Core.Fetchify.FETCHIFIED with 3 | type promise('a) := Lwt.t('a) and 4 | type result('a, 'error) := Stdlib.Result.t('a, 'error); 5 | -------------------------------------------------------------------------------- /src/fetch-native-lwt/src/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name Fetch) 3 | (public_name fetch-native-lwt) 4 | (libraries fetch-core piaf)) 5 | -------------------------------------------------------------------------------- /test/TestRunner.re: -------------------------------------------------------------------------------- 1 | Fetch_Core_Test.TestFramework.cli(); 2 | -------------------------------------------------------------------------------- /test/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name TestRunner) 3 | (public_name FetchTestRunner) 4 | (package fetch-test) 5 | (libraries Fetch_Core_Test)) 6 | -------------------------------------------------------------------------------- /test/fetch-core/Method.re: -------------------------------------------------------------------------------- 1 | open TestFramework; 2 | open Fetch_Core.Method; 3 | 4 | describe("Method", ({test, _}) => { 5 | test("toString", ({expect, _}) => { 6 | expect.equal("CONNECT", toString(`CONNECT)); 7 | expect.equal("DELETE", toString(`DELETE)); 8 | expect.equal("GET", toString(`GET)); 9 | expect.equal("HEAD", toString(`HEAD)); 10 | expect.equal("OPTIONS", toString(`OPTIONS)); 11 | expect.equal("POST", toString(`POST)); 12 | expect.equal("PUT", toString(`PUT)); 13 | expect.equal("TRACE", toString(`TRACE)); 14 | 15 | expect.equal("SOMETHING", toString(`Other("SOMETHING"))); 16 | }); 17 | 18 | test("ofString", ({expect, _}) => { 19 | expect.equal(ofString("CONNECT") |> toString, "CONNECT"); 20 | expect.equal(ofString("DELETE") |> toString, "DELETE"); 21 | expect.equal(ofString("GET") |> toString, "GET"); 22 | expect.equal(ofString("HEAD") |> toString, "HEAD"); 23 | expect.equal(ofString("OPTIONS") |> toString, "OPTIONS"); 24 | expect.equal(ofString("POST") |> toString, "POST"); 25 | expect.equal(ofString("PUT") |> toString, "PUT"); 26 | expect.equal(ofString("TRACE") |> toString, "TRACE"); 27 | 28 | expect.equal(ofString("SOMETHING") |> toString, "SOMETHING"); 29 | }); 30 | }); 31 | -------------------------------------------------------------------------------- /test/fetch-core/Status.re: -------------------------------------------------------------------------------- 1 | open TestFramework; 2 | open Fetch_Core.Status; 3 | 4 | describe("Status", ({describe, _}) => { 5 | describe("Informational", ({test, _}) => { 6 | test("toCode", ({expect, _}) => { 7 | expect.equal(toCode(`Continue), 100); 8 | expect.equal(toCode(`SwitchingProtocols), 101); 9 | expect.equal(toCode(`Processing), 102); 10 | }); 11 | 12 | test("ofCode", ({expect, _}) => { 13 | expect.equal(100 |> ofCode |> toCode, 100); 14 | expect.equal(101 |> ofCode |> toCode, 101); 15 | expect.equal(102 |> ofCode |> toCode, 102); 16 | }); 17 | }); 18 | 19 | describe("Success", ({test, _}) => { 20 | test("toCode", ({expect, _}) => { 21 | expect.equal(toCode(`OK), 200); 22 | expect.equal(toCode(`Created), 201); 23 | expect.equal(toCode(`Accepted), 202); 24 | expect.equal(toCode(`NonAuthoritativeInformation), 203); 25 | expect.equal(toCode(`NoContent), 204); 26 | expect.equal(toCode(`ResetContent), 205); 27 | expect.equal(toCode(`PartialContent), 206); 28 | expect.equal(toCode(`MultiStatus), 207); 29 | expect.equal(toCode(`AlreadyReported), 208); 30 | expect.equal(toCode(`IMUsed), 226); 31 | }); 32 | 33 | test("ofCode", ({expect, _}) => { 34 | expect.equal(200 |> ofCode |> toCode, 200); 35 | expect.equal(201 |> ofCode |> toCode, 201); 36 | expect.equal(202 |> ofCode |> toCode, 202); 37 | expect.equal(203 |> ofCode |> toCode, 203); 38 | expect.equal(204 |> ofCode |> toCode, 204); 39 | expect.equal(205 |> ofCode |> toCode, 205); 40 | expect.equal(206 |> ofCode |> toCode, 206); 41 | expect.equal(207 |> ofCode |> toCode, 207); 42 | expect.equal(208 |> ofCode |> toCode, 208); 43 | expect.equal(226 |> ofCode |> toCode, 226); 44 | }); 45 | }); 46 | 47 | describe("Redirection", ({test, _}) => { 48 | test("toCode", ({expect, _}) => { 49 | expect.equal(toCode(`MultipleChoices), 300); 50 | expect.equal(toCode(`MovedPermanently), 301); 51 | expect.equal(toCode(`Found), 302); 52 | expect.equal(toCode(`SeeOther), 303); 53 | expect.equal(toCode(`NotModified), 304); 54 | expect.equal(toCode(`UseProxy), 305); 55 | expect.equal(toCode(`TemporaryRedirect), 307); 56 | expect.equal(toCode(`PermanentRedirect), 308); 57 | }); 58 | 59 | test("ofCode", ({expect, _}) => { 60 | expect.equal(300 |> ofCode |> toCode, 300); 61 | expect.equal(301 |> ofCode |> toCode, 301); 62 | expect.equal(302 |> ofCode |> toCode, 302); 63 | expect.equal(303 |> ofCode |> toCode, 303); 64 | expect.equal(304 |> ofCode |> toCode, 304); 65 | expect.equal(305 |> ofCode |> toCode, 305); 66 | expect.equal(307 |> ofCode |> toCode, 307); 67 | expect.equal(308 |> ofCode |> toCode, 308); 68 | }); 69 | }); 70 | 71 | describe("Client Error", ({test, _}) => { 72 | test("toCode", ({expect, _}) => { 73 | expect.equal(toCode(`BadRequest), 400); 74 | expect.equal(toCode(`Unauthorized), 401); 75 | expect.equal(toCode(`PaymentRequired), 402); 76 | expect.equal(toCode(`Forbidden), 403); 77 | expect.equal(toCode(`NotFound), 404); 78 | expect.equal(toCode(`MethodNotAllowed), 405); 79 | expect.equal(toCode(`NotAcceptable), 406); 80 | expect.equal(toCode(`ProxyAuthenticationRequired), 407); 81 | expect.equal(toCode(`RequestTimeout), 408); 82 | expect.equal(toCode(`Conflict), 409); 83 | expect.equal(toCode(`Gone), 410); 84 | expect.equal(toCode(`LengthRequired), 411); 85 | expect.equal(toCode(`PreconditionFailed), 412); 86 | expect.equal(toCode(`PayloadTooLarge), 413); 87 | expect.equal(toCode(`UriTooLong), 414); 88 | expect.equal(toCode(`UnsupportedMediaType), 415); 89 | expect.equal(toCode(`RangeNotSatisfiable), 416); 90 | expect.equal(toCode(`ExpectationFailed), 417); 91 | expect.equal(toCode(`ImATeapot), 418); 92 | expect.equal(toCode(`MisdirectedRequest), 421); 93 | expect.equal(toCode(`UnprocessableEntity), 422); 94 | expect.equal(toCode(`Locked), 423); 95 | expect.equal(toCode(`FailedDependency), 424); 96 | expect.equal(toCode(`UpgradeRequired), 426); 97 | expect.equal(toCode(`PreconditionRequired), 428); 98 | expect.equal(toCode(`TooManyRequests), 429); 99 | expect.equal(toCode(`RequestHeaderFieldsTooLarge), 431); 100 | expect.equal(toCode(`UnavailableForLegalReasons), 451); 101 | }); 102 | 103 | test("ofCode", ({expect, _}) => { 104 | expect.equal(400 |> ofCode |> toCode, 400); 105 | expect.equal(401 |> ofCode |> toCode, 401); 106 | expect.equal(402 |> ofCode |> toCode, 402); 107 | expect.equal(403 |> ofCode |> toCode, 403); 108 | expect.equal(404 |> ofCode |> toCode, 404); 109 | expect.equal(405 |> ofCode |> toCode, 405); 110 | expect.equal(406 |> ofCode |> toCode, 406); 111 | expect.equal(407 |> ofCode |> toCode, 407); 112 | expect.equal(408 |> ofCode |> toCode, 408); 113 | expect.equal(409 |> ofCode |> toCode, 409); 114 | expect.equal(410 |> ofCode |> toCode, 410); 115 | expect.equal(411 |> ofCode |> toCode, 411); 116 | expect.equal(412 |> ofCode |> toCode, 412); 117 | expect.equal(413 |> ofCode |> toCode, 413); 118 | expect.equal(414 |> ofCode |> toCode, 414); 119 | expect.equal(415 |> ofCode |> toCode, 415); 120 | expect.equal(416 |> ofCode |> toCode, 416); 121 | expect.equal(417 |> ofCode |> toCode, 417); 122 | expect.equal(418 |> ofCode |> toCode, 418); 123 | expect.equal(421 |> ofCode |> toCode, 421); 124 | expect.equal(422 |> ofCode |> toCode, 422); 125 | expect.equal(423 |> ofCode |> toCode, 423); 126 | expect.equal(424 |> ofCode |> toCode, 424); 127 | expect.equal(426 |> ofCode |> toCode, 426); 128 | expect.equal(428 |> ofCode |> toCode, 428); 129 | expect.equal(429 |> ofCode |> toCode, 429); 130 | expect.equal(431 |> ofCode |> toCode, 431); 131 | expect.equal(451 |> ofCode |> toCode, 451); 132 | }); 133 | }); 134 | 135 | describe("Internal Error", ({test, _}) => { 136 | test("toCode", ({expect, _}) => { 137 | expect.equal(toCode(`InternalServerError), 500); 138 | expect.equal(toCode(`NotImplemented), 501); 139 | expect.equal(toCode(`BadGateway), 502); 140 | expect.equal(toCode(`ServiceUnavailable), 503); 141 | expect.equal(toCode(`GatewayTimeout), 504); 142 | expect.equal(toCode(`HttpVersionNotSupported), 505); 143 | expect.equal(toCode(`VariantAlsoNegotiates), 506); 144 | expect.equal(toCode(`InsufficientStorage), 507); 145 | expect.equal(toCode(`LoopDetected), 508); 146 | expect.equal(toCode(`NotExtended), 510); 147 | expect.equal(toCode(`NetworkAuthenticationRequired), 511); 148 | }); 149 | 150 | test("ofCode", ({expect, _}) => { 151 | expect.equal(500 |> ofCode |> toCode, 500); 152 | expect.equal(501 |> ofCode |> toCode, 501); 153 | expect.equal(502 |> ofCode |> toCode, 502); 154 | expect.equal(503 |> ofCode |> toCode, 503); 155 | expect.equal(504 |> ofCode |> toCode, 504); 156 | expect.equal(505 |> ofCode |> toCode, 505); 157 | expect.equal(506 |> ofCode |> toCode, 506); 158 | expect.equal(507 |> ofCode |> toCode, 507); 159 | expect.equal(508 |> ofCode |> toCode, 508); 160 | expect.equal(510 |> ofCode |> toCode, 510); 161 | expect.equal(511 |> ofCode |> toCode, 511); 162 | }); 163 | }); 164 | 165 | describe("Other", ({test, _}) => { 166 | test("toCode", ({expect, _}) => { 167 | expect.equal(toCode(`Other(666)), 666) 168 | }); 169 | 170 | test("ofCode", ({expect, _}) => 171 | expect.equal(666 |> ofCode |> toCode, 666) 172 | ); 173 | }); 174 | }); 175 | -------------------------------------------------------------------------------- /test/fetch-core/TestFramework.re: -------------------------------------------------------------------------------- 1 | include Rely.Make({ 2 | let config = 3 | Rely.TestFrameworkConfig.initialize({ 4 | snapshotDir: "./test/fetch-core/__snapshots__", 5 | projectDir: "", 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /test/fetch-core/__snapshots__/placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lessp/fetch/cca3980900c70d21341bf0aa9a1e091e75161f23/test/fetch-core/__snapshots__/placeholder -------------------------------------------------------------------------------- /test/fetch-core/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name Fetch_Core_Test) 3 | (library_flags 4 | (-linkall -g)) 5 | (modules (:standard)) 6 | (libraries rely.lib fetch-core)) 7 | --------------------------------------------------------------------------------