├── .github └── workflows │ ├── run_tests.yaml │ └── update_and_test.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.org ├── flake.lock ├── flake.nix ├── nix ├── buildDotSpago.nix ├── buildFromLockFile.nix ├── buildSpagoNodeJs.nix └── mkSpagoDerivation.nix └── tests ├── local ├── .gitignore ├── lib │ ├── spago.lock │ ├── spago.yaml │ └── src │ │ └── Lib.purs ├── local.nix ├── spago.lock ├── spago.yaml └── src │ └── Main.purs ├── mkDotSpago ├── .gitignore ├── mkDotSpago.nix ├── spago.lock ├── spago.yaml └── src │ └── Main.purs ├── monorepo ├── .gitignore ├── Main │ ├── spago.yaml │ └── src │ │ └── Main.purs ├── lib1 │ ├── spago.yaml │ └── src │ │ └── Lib1.purs ├── monorepo.nix ├── spago.lock └── spago.yaml ├── nodeModulesTest ├── nodeModulesTest.nix ├── package-lock.json ├── package.json ├── spago.lock ├── spago.yaml └── src │ └── Main.purs ├── registry-esbuild ├── .gitignore ├── registry-esbuild.nix ├── spago.lock ├── spago.yaml └── src │ └── Main.purs ├── registry ├── .gitignore ├── registry.nix ├── spago.lock ├── spago.yaml └── src │ └── Main.purs └── remote ├── .gitignore ├── remote.nix ├── spago.lock ├── spago.yaml └── src └── Main.purs /.github/workflows/run_tests.yaml: -------------------------------------------------------------------------------- 1 | name: Run tests 2 | run-name: Run tests to make sure that mkSpagoDerivation works correctly 3 | on: 4 | push: 5 | branches: 6 | - develop 7 | - main 8 | 9 | jobs: 10 | run-tests: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Setting up Checkout 14 | uses: actions/checkout@v3 15 | with: 16 | github_access_token: ${{ secrets.GITHUB_TOKEN }} 17 | 18 | - name: Set up Nix 19 | uses: cachix/install-nix-action@v18 20 | with: 21 | github_access_token: ${{ secrets.GITHUB_TOKEN }} 22 | 23 | - name: Run tests 24 | run: | 25 | nix flake check 26 | 27 | -------------------------------------------------------------------------------- /.github/workflows/update_and_test.yml: -------------------------------------------------------------------------------- 1 | name: Update dependencies and run tests 2 | run-name: Update the flake dependencies and run test suite. 3 | on: 4 | schedule: 5 | - cron: '0 0 * * 0' 6 | 7 | jobs: 8 | Update-JSON-Data: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Setting up Checkout 12 | uses: actions/checkout@v3 13 | with: 14 | github_access_token: ${{ secrets.GITHUB_TOKEN }} 15 | 16 | - name: Set up Nix 17 | uses: cachix/install-nix-action@v18 18 | with: 19 | github_access_token: ${{ secrets.GITHUB_TOKEN }} 20 | 21 | - name: Update flake inputs 22 | run: | 23 | nix flake update 24 | 25 | - name: Run tests 26 | run: | 27 | nix flake check 28 | 29 | - name: Set up Git config 30 | run: | 31 | git config user.name "github-actions" 32 | git config user.email "<>" 33 | 34 | - name: Commit and push changes 35 | run: | 36 | if [[ `git status --porcelain` ]]; then 37 | git add . 38 | git commit -m "[ghactions] Update registry and registry-index" 39 | git push 40 | else 41 | echo "No changes!" 42 | fi 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | result 2 | /tests/registry/output/ 3 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## [0.2.1] (pre) - 2024-01-22 4 | _notice_ 5 | 6 | ### Changed 7 | 8 | - 9 | - 10 | - 11 | 12 | ### Added 13 | 14 | - Add a symlink `.spago/p -> .spago/packages` to make derivation work with newer versions of spago. 15 | - 16 | - 17 | 18 | ### Removed 19 | 20 | - Removed flake dependency of flake-utils, in favour of nixpkgs based solution ([#2](https://github.com/jeslie0/mkSpagoDerivation/issues/2)). 21 | - 22 | - 23 | 24 | ### Fixed 25 | ## [0.2.0] - 2024-01-14 26 | 27 | _This release brings breaking changes that makes the usage of `mkSpagoDerivation` more consistent._ 28 | 29 | ### Changed 30 | 31 | - **Breaking:** Require a `spago.lock` file for dependency fetching 32 | - **Breaking:** Remove internal use of purs and spago 33 | - Update all tests to use the current version of `mkSpagoDerivation` 34 | 35 | ### Added 36 | 37 | - Add tests for remote packages and local packages 38 | - Build projects from `spago.lock` files ([#1](https://https://github.com/jeslie0/mkSpagoDerivation/issues/1)) 39 | 40 | ### Removed 41 | 42 | - Delete functionality to build PureScript project with only a `spago.yaml` file 43 | 44 | ### Fixed 45 | 46 | - Local packages are now handled properly 47 | 48 | ## [0.1.0] - 2023-10-10 49 | 50 | _Initial release._ 51 | 52 | [0.2.0]: https://github.com/jeslie0/mkSpagoDerivation/releases/tag/v0.2.0 53 | [0.1.0]: https://github.com/jeslie0/mkSpagoDerivation/releases/tag/v0.1.0 54 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright © 2023 James Leslie 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | “Software”), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.org: -------------------------------------------------------------------------------- 1 | #+title: mkSpagoDerivation 2 | #+author: James Leslie 3 | [[https://img.shields.io/badge/built%20for-PureScript-1d222d.svg]][[https://img.shields.io/github/license/jeslie0/mkelmderivation.svg]][[https://img.shields.io/github/actions/workflow/status/jeslie0/mkSpagoDerivation/run_tests.yaml.svg]][[https://img.shields.io/github/v/release/jeslie0/mkSpagoDerivation.svg]] 4 | 5 | This flake provides an unopinionated approach to packaging [[https://github.com/purescript/purescript][PureScript]] projects with the [[https://github.com/NixOS/nixpkgs][Nix]] package manager. Utilising [[https://github.com/purescript/registry][PureScript's registry]] and the new [[https://github.com/purescript/spago][spago@next]], this repository facilitates the creation of reproducible builds for PureScript projects with minimal complexity. This works by treating a PureScript project's =spago.lock= as a single source of truth for dependencies. 6 | 7 | * Table of contents :toc: 8 | - [[#examples][Examples]] 9 | - [[#out-of-date-registry][Out of date registry]] 10 | - [[#limitations][Limitations]] 11 | - [[#notes][Notes]] 12 | - [[#hooks][Hooks]] 13 | - [[#related][Related]] 14 | - [[#license][License]] 15 | 16 | * Examples 17 | The most important function that this flake provides is the ~mkSpagoDerivation~ function, exposed as both an output and via an overlay. This provides a wrapper around ~stdenv.mkDerivation~ which puts all of your project's dependencies in the right place, making it easy for you to build your projects in a reproducible way. 18 | 19 | Importantly, the =spago.lock= file is required for ~mkSpagoDerivation~ to determine your project's dependencies. Optionally, if you provide your project's =spago.yaml= file, then your project's name will be extracted and used. You can provide a =name= or =pname= argument instead. 20 | 21 | Here is a simple =flake.nix= that builds a PureScript project. 22 | #+begin_src nix 23 | { 24 | inputs = { 25 | nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; 26 | flake-utils.url = "github:numtide/flake-utils"; 27 | mkSpagoDerivation.url = "github:jeslie0/mkSpagoDerivation"; 28 | ps-overlay.url = "github:thomashoneyman/purescript-overlay"; 29 | }; 30 | 31 | outputs = { self, nixpkgs, flake-utils, mkSpagoDerivation, ps-overlay }: 32 | flake-utils.lib.eachDefaultSystem ( 33 | system: 34 | let 35 | pkgs = import nixpkgs { 36 | inherit system; 37 | overlays = [ mkSpagoDerivation.overlays.default 38 | ps-overlay.overlays.default ]; 39 | }; 40 | in 41 | { 42 | packages.default = 43 | pkgs.mkSpagoDerivation { 44 | spagoYaml = ./spago.yaml; 45 | spagoLock = ./spago.lock; 46 | src = ./.; 47 | nativeBuildInputs = [ pkgs.purs-unstable pkgs.spago-unstable pkgs.esbuild ]; 48 | version = "0.1.0"; 49 | buildPhase = "spago bundle"; 50 | installPhase = "mkdir $out; cp index.js $out"; 51 | buildNodeModulesArgs = { 52 | npmRoot = ./.; 53 | nodejs = pkgs.nodejs; 54 | }; 55 | }; 56 | } 57 | ); 58 | } 59 | #+end_src 60 | 61 | The only attribute ~mkSpagoDerivation~ requires is ~src~. The ~spagoYaml~ attribute will default to =${src}/spago.yaml= and likewise, ~spagoLock~ defaults to =${src}/spago.lock=. Everything else is passed into ~mkDerivation~. 62 | 63 | Some Spago projects have dependencies from NPM. To automatically take care of fetching NPM packages, the ~buildNodeModulesArgs~ 64 | attribute allows specifing an argument set that is passed to the [[https://nixos.org/manual/nixpkgs/unstable/#javascript-buildNpmPackage-importNpmLock.buildNodeModules][importNpmLock.buildNodeModules]] function. This will build a =node_modules= directory for use in the derivation. See the [[./tests/nodeModulesTest][nodeModulesTest]] for an example. This attribute is completely optional and can be left out of the =mkSpagoDerivation= arguments if no ~node_modules~ directory is required. 65 | 66 | There are no assumptions about the which version of the compiler is used - you must specify which copy of Spago and PureScript you want to use. Dependencies can be added through ~buildInputs~ or ~nativeBuildInputs~. The following example demonstrates this, by using [[https://github.com/aristanetworks/purescript-backend-optimizer][purescript-backend-optimizer]] and using the unstable PureScript compiler from the PureScript Overlay. 67 | #+begin_src nix 68 | { 69 | inputs = { 70 | nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; 71 | flake-utils.url = "github:numtide/flake-utils"; 72 | ps-overlay.url = "github:thomashoneyman/purescript-overlay"; 73 | mkSpagoDerivation.url = "github:jeslie0/mkSpagoDerivation"; 74 | }; 75 | 76 | outputs = { self, nixpkgs, flake-utils, ps-overlay, mkSpagoDerivation }: 77 | flake-utils.lib.eachDefaultSystem ( 78 | system: 79 | let 80 | pkgs = import nixpkgs { 81 | inherit system; 82 | overlays = [ mkSpagoDerivation.overlays.default 83 | ps-overlay.overlays.default 84 | ]; 85 | }; 86 | in 87 | { 88 | packages.default = 89 | pkgs.mkSpagoDerivation { 90 | spagoYaml = ./spago.yaml; 91 | spagoLock = ./spago.lock; 92 | src = ./.; 93 | version = "0.1.0"; 94 | nativeBuildInputs = [ pkgs.esbuild pkgs.purs-backend-es pkgs.purs-unstable pkgs.spago-unstable ]; 95 | buildPhase = "spago build && purs-backend-es bundle-app --no-build --minify --to=main.min.js"; 96 | installPhase = "mkdir $out; cp -r main.min.js $out"; 97 | }; 98 | } 99 | ); 100 | } 101 | #+end_src 102 | 103 | Some other useful functions are exposed. One is ~buildDotSpago~, which builds a project's =.spago= directory. It takes an attribute set ~{ spagoLock, src }~, which respectively are the paths to the project's ~spago.lock~ and the root of the project. Another useful function is ~buildSpagoNodeJs~, which builds the =spago-nodejs= directory, typically located in the user's =.cache= directory. 104 | 105 | * Out of date registry 106 | It is possible for this repository to not have the most up-to-date registry set. If you cant wait for the GitHub action to update this repository, you can override the =registry= and =registry-index= inputs to this flake. 107 | #+begin_src nix 108 | { 109 | inputs = { 110 | nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; 111 | flake-utils.url = "github:numtide/flake-utils"; 112 | ps-overlay.url = "github:thomashoneyman/purescript-overlay"; 113 | mkSpagoDerivation = { 114 | url = "github:jeslie0/mkSpagoDerivation"; 115 | inputs = { 116 | registry.url = "github:purescript/registry/066f77d3b668fd7916e0af493d8d8ec7a850d774"; 117 | registry-index.url = "github:purescript/registry-index/53cfacb3b1677120eb5e6c11a1f2449d1049c2ce"; 118 | }; 119 | }; 120 | }; 121 | 122 | outputs = { self, nixpkgs, flake-utils, ps-overlay, mkSpagoDerivation }: 123 | ... 124 | #+end_src 125 | 126 | * Limitations 127 | At the time of writing, this project only supports PureScript projects that make use of the newer spago@next releases. In particular, the project needs a ~spago.yaml~ file and a ~spago.lock~ file is required too. 128 | 129 | * Notes 130 | ** Hooks 131 | The ~buildPhase~ and ~installPhase~ always run =pre= and =post= hooks, even if the commands provided by the user don't specify them. 132 | * Related 133 | - [[https://github.com/purifix/purifix/][purifix]] 134 | A different tool to package PureScript programs with Nix. 135 | - [[https://github.com/justinwoo/spago2nix][spago2nix]] 136 | Another tool for packaging PureScript programs with Nix. 137 | - [[https://github.com/justinwoo/easy-purescript-nix][easy-purescript-nix]] 138 | A repository and Nix flake that provides lots of PureScript tools. 139 | - [[https://github.com/purs-nix/purs-nix][purs-nix]] 140 | A tool for Nix based PureScript development. 141 | - [[https://github.com/jeslie0/mkElmDerivation][mkElmDerivation]] 142 | A similar tool (that I created) to package [[https://elm-lang.org/][Elm]] applications with Nix. 143 | * License 144 | All of this repository is under the MIT license. 145 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "flake-compat": { 4 | "flake": false, 5 | "locked": { 6 | "lastModified": 1696426674, 7 | "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", 8 | "owner": "edolstra", 9 | "repo": "flake-compat", 10 | "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", 11 | "type": "github" 12 | }, 13 | "original": { 14 | "owner": "edolstra", 15 | "repo": "flake-compat", 16 | "type": "github" 17 | } 18 | }, 19 | "nixpkgs": { 20 | "locked": { 21 | "lastModified": 1748460289, 22 | "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", 23 | "owner": "nixos", 24 | "repo": "nixpkgs", 25 | "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", 26 | "type": "github" 27 | }, 28 | "original": { 29 | "owner": "nixos", 30 | "ref": "nixos-unstable", 31 | "repo": "nixpkgs", 32 | "type": "github" 33 | } 34 | }, 35 | "nixpkgs_2": { 36 | "locked": { 37 | "lastModified": 1702882221, 38 | "narHash": "sha256-L/uOrBqkGsa45EvQk4DLq/aR6JeomW+7Mwe0mC/dVUM=", 39 | "owner": "nixos", 40 | "repo": "nixpkgs", 41 | "rev": "25fef6e30d8ad48f47a8411ccfe986d8baed8a15", 42 | "type": "github" 43 | }, 44 | "original": { 45 | "owner": "nixos", 46 | "ref": "release-23.05", 47 | "repo": "nixpkgs", 48 | "type": "github" 49 | } 50 | }, 51 | "ps-overlay": { 52 | "inputs": { 53 | "flake-compat": "flake-compat", 54 | "nixpkgs": "nixpkgs_2", 55 | "slimlock": "slimlock" 56 | }, 57 | "locked": { 58 | "lastModified": 1747338227, 59 | "narHash": "sha256-n7LxbV6dZi/+rqWJTsnqCsoYu7ehjTQpkUvlyvEsFaA=", 60 | "owner": "thomashoneyman", 61 | "repo": "purescript-overlay", 62 | "rev": "1a45b4911fec1422b9ac767deccb572ac24a6d2a", 63 | "type": "github" 64 | }, 65 | "original": { 66 | "owner": "thomashoneyman", 67 | "repo": "purescript-overlay", 68 | "type": "github" 69 | } 70 | }, 71 | "registry": { 72 | "flake": false, 73 | "locked": { 74 | "lastModified": 1747985987, 75 | "narHash": "sha256-NHkksW17JaoiMpexAEJ9EQEygFKuv70CooZlsE7/OPs=", 76 | "owner": "purescript", 77 | "repo": "registry", 78 | "rev": "33e4d13c6dfbc908c24dffa35f5e28585a383cd7", 79 | "type": "github" 80 | }, 81 | "original": { 82 | "owner": "purescript", 83 | "repo": "registry", 84 | "type": "github" 85 | } 86 | }, 87 | "registry-index": { 88 | "flake": false, 89 | "locked": { 90 | "lastModified": 1747925902, 91 | "narHash": "sha256-0eIDKoKhx27wDydfYpxp5rD7UjX0YmX/10I0SMi/vnY=", 92 | "owner": "purescript", 93 | "repo": "registry-index", 94 | "rev": "8898112c4cc9d275503a416f9a7ff07b9c675339", 95 | "type": "github" 96 | }, 97 | "original": { 98 | "owner": "purescript", 99 | "repo": "registry-index", 100 | "type": "github" 101 | } 102 | }, 103 | "root": { 104 | "inputs": { 105 | "nixpkgs": "nixpkgs", 106 | "ps-overlay": "ps-overlay", 107 | "registry": "registry", 108 | "registry-index": "registry-index" 109 | } 110 | }, 111 | "slimlock": { 112 | "inputs": { 113 | "nixpkgs": [ 114 | "ps-overlay", 115 | "nixpkgs" 116 | ] 117 | }, 118 | "locked": { 119 | "lastModified": 1688756706, 120 | "narHash": "sha256-xzkkMv3neJJJ89zo3o2ojp7nFeaZc2G0fYwNXNJRFlo=", 121 | "owner": "thomashoneyman", 122 | "repo": "slimlock", 123 | "rev": "cf72723f59e2340d24881fd7bf61cb113b4c407c", 124 | "type": "github" 125 | }, 126 | "original": { 127 | "owner": "thomashoneyman", 128 | "repo": "slimlock", 129 | "type": "github" 130 | } 131 | } 132 | }, 133 | "root": "root", 134 | "version": 7 135 | } 136 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "A flake providing tools for building PureScript projects with Spago."; 3 | 4 | inputs = { 5 | nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; 6 | ps-overlay.url = "github:thomashoneyman/purescript-overlay"; 7 | registry = { 8 | url = "github:purescript/registry"; 9 | flake = false; 10 | }; 11 | registry-index = { 12 | url = "github:purescript/registry-index"; 13 | flake = false; 14 | }; 15 | }; 16 | 17 | outputs = { self, nixpkgs, ps-overlay, registry, registry-index }: 18 | let 19 | supportedSystems = 20 | [ "aarch64-linux" "x86_64-linux" "aarch64-darwin" "x86_64-darwin" ]; 21 | 22 | forAllSystems = 23 | nixpkgs.lib.genAttrs supportedSystems; 24 | 25 | nixpkgsFor = forAllSystems (system: 26 | import nixpkgs { 27 | inherit system; 28 | overlays = [ ps-overlay.overlays.default ]; 29 | }); 30 | 31 | # Needed to extract package name from spago.yaml file. 32 | fromYAMLBuilder = prev: 33 | import "${ps-overlay}/nix/from-yaml.nix" { lib = prev.lib; }; 34 | 35 | buildDotSpagoBuilder = prev: 36 | import ./nix/buildDotSpago.nix { 37 | inherit self registry registry-index; 38 | mkDerivation = prev.stdenv.mkDerivation; 39 | lib = prev.lib; 40 | }; 41 | 42 | buildSpagoNodeJsBuilder = prev: 43 | import ./nix/buildSpagoNodeJs.nix { 44 | inherit registry registry-index; 45 | stdenv = prev.stdenv; 46 | }; 47 | 48 | mkSpagoDerivationBuilder = final: prev: 49 | import ./nix/mkSpagoDerivation.nix { 50 | inherit registry registry-index; 51 | buildSpagoNodeJs = buildSpagoNodeJsBuilder prev; 52 | fromYAML = fromYAMLBuilder prev; 53 | stdenv = prev.stdenv; 54 | git = prev.git; 55 | lib = prev.lib; 56 | importNpmLock = prev.importNpmLock; 57 | }; 58 | in 59 | { 60 | overlays = { 61 | default = final: prev: 62 | prev.lib.composeManyExtensions 63 | (builtins.attrValues (builtins.removeAttrs self.overlays ["default"])) final prev; 64 | 65 | # Function that returns a derivation outputting the .spago 66 | # directory needed for the given project. 67 | buildDotSpago = final: prev: { 68 | buildDotSpago = buildDotSpagoBuilder prev; 69 | }; 70 | 71 | # Function that returns a derivation outputting the spago-nodejs 72 | # directory needed for the given project. 73 | buildSpagoNodeJs = final: prev: { 74 | buildSpagoNodeJs = buildSpagoNodeJsBuilder prev; 75 | }; 76 | 77 | # Function that takes a spago.yaml or a spago.lock file and 78 | # builds the project here. 79 | mkSpagoDerivation = final: prev: { 80 | mkSpagoDerivation = mkSpagoDerivationBuilder prev final; 81 | }; 82 | 83 | fromYAML = final: prev: { 84 | fromYAML = fromYAMLBuilder prev; 85 | }; 86 | }; 87 | 88 | checks = forAllSystems (system: 89 | let 90 | pkgs = 91 | nixpkgsFor.${system}; 92 | in 93 | { 94 | registry = 95 | import ./tests/registry/registry.nix { 96 | mkSpagoDerivation = mkSpagoDerivationBuilder pkgs pkgs; 97 | esbuild = pkgs.esbuild; 98 | purs = pkgs.purs-unstable; 99 | spago = pkgs.spago-unstable; 100 | }; 101 | 102 | registry-esbuild = 103 | import ./tests/registry-esbuild/registry-esbuild.nix { 104 | mkSpagoDerivation = mkSpagoDerivationBuilder pkgs pkgs; 105 | esbuild = pkgs.esbuild; 106 | purs-backend-es = pkgs.purs-backend-es; 107 | purs = pkgs.purs-unstable; 108 | spago = pkgs.spago-unstable; 109 | }; 110 | 111 | monorepo = 112 | import ./tests/monorepo/monorepo.nix { 113 | mkSpagoDerivation = mkSpagoDerivationBuilder pkgs pkgs; 114 | esbuild = pkgs.esbuild; 115 | purs = pkgs.purs-unstable; 116 | spago = pkgs.spago-unstable; 117 | }; 118 | 119 | remote-package = 120 | import ./tests/remote/remote.nix { 121 | mkSpagoDerivation = mkSpagoDerivationBuilder pkgs pkgs; 122 | esbuild = pkgs.esbuild; 123 | purs = pkgs.purs-unstable; 124 | spago = pkgs.spago-unstable; 125 | }; 126 | 127 | local-package = 128 | import ./tests/local/local.nix { 129 | mkSpagoDerivation = mkSpagoDerivationBuilder pkgs pkgs; 130 | esbuild = pkgs.esbuild; 131 | purs = pkgs.purs-unstable; 132 | spago = pkgs.spago-unstable; 133 | }; 134 | 135 | mkDotSpago = 136 | import ./tests/mkDotSpago/mkDotSpago.nix { 137 | buildDotSpago = buildDotSpagoBuilder pkgs; 138 | }; 139 | 140 | useNodeModules = 141 | import ./tests/nodeModulesTest/nodeModulesTest.nix { 142 | inherit self; 143 | mkSpagoDerivation = mkSpagoDerivationBuilder pkgs pkgs; 144 | esbuild = pkgs.esbuild; 145 | purs = pkgs.purs-unstable; 146 | spago = pkgs.spago-unstable; 147 | nodejs = pkgs.nodejs; 148 | pkgs = pkgs; 149 | }; 150 | } 151 | ); 152 | }; 153 | } 154 | -------------------------------------------------------------------------------- /nix/buildDotSpago.nix: -------------------------------------------------------------------------------- 1 | { self, lib, mkDerivation, registry, registry-index }: 2 | { spagoLock }: 3 | mkDerivation { 4 | name = 5 | "dot-spago"; 6 | 7 | src = 8 | ./.; 9 | 10 | buildPhase = 11 | import ./buildFromLockFile.nix { inherit mkDerivation registry lib; } { spagoLockFile = spagoLock; }; 12 | 13 | installPhase = 14 | '' 15 | mkdir $out 16 | cp -r .spago $out 17 | ''; 18 | } 19 | -------------------------------------------------------------------------------- /nix/buildFromLockFile.nix: -------------------------------------------------------------------------------- 1 | { mkDerivation, registry, lib }: 2 | { spagoLockFile }: 3 | let 4 | lockFileNix = 5 | builtins.fromJSON (builtins.readFile spagoLockFile); 6 | 7 | packageSet = 8 | lockFileNix.packages; 9 | 10 | # { localPackages, registryPackages, gitPackages } 11 | formattedPackageSet = 12 | let 13 | packageNames = 14 | builtins.attrNames packageSet; 15 | in 16 | builtins.foldl' 17 | ( 18 | prev: cur: 19 | prev // 20 | ( if packageSet.${cur}.type == "local" 21 | then 22 | { localPackages = 23 | prev.localPackages // { 24 | ${cur} = { 25 | name = cur; 26 | } // packageSet.${cur}; 27 | }; 28 | } 29 | else 30 | if packageSet.${cur}.type == "registry" 31 | then 32 | { registryPackages = 33 | prev.registryPackages // { 34 | ${cur} = { 35 | name = cur; 36 | } // packageSet.${cur}; 37 | }; 38 | } 39 | else 40 | if packageSet.${cur}.type == "git" 41 | then 42 | { gitPackages = 43 | prev.gitPackages // { 44 | ${cur} = { 45 | name = cur; 46 | } // packageSet.${cur}; 47 | }; 48 | } 49 | else 50 | throw "Package ${cur} has nonstandard type: ${packageSet.${cur}.type}." 51 | ) 52 | ) 53 | { localPackages = {}; registryPackages = {}; gitPackages = {}; } 54 | packageNames; 55 | 56 | 57 | buildDerivationFromGit = package: 58 | let 59 | name = 60 | package.name; 61 | 62 | url = 63 | package.url; 64 | 65 | rev = 66 | package.rev; 67 | 68 | remoteSrc = 69 | builtins.fetchGit { 70 | inherit url rev name; 71 | }; 72 | in 73 | { 74 | pathString = 75 | "${name}/${rev}"; 76 | 77 | packageDerivation = 78 | mkDerivation { 79 | inherit name; 80 | 81 | src = 82 | remoteSrc; 83 | 84 | installPhase = 85 | '' 86 | mkdir $out 87 | cp -r * $out 88 | ''; 89 | }; 90 | }; 91 | 92 | gitPackageBuildString = package: 93 | let 94 | packageDerivationInfo = 95 | buildDerivationFromGit package; 96 | 97 | packageDerivation = 98 | packageDerivationInfo.packageDerivation; 99 | 100 | packagePath = 101 | packageDerivationInfo.pathString; 102 | in 103 | '' 104 | mkdir -p .spago/packages/${packagePath} 105 | cp -r ${packageDerivation}/* .spago/packages/${packagePath}; 106 | ''; 107 | 108 | buildDerivationFromRegistry = package: 109 | let 110 | integrity = 111 | package.integrity; 112 | 113 | version = 114 | package.version; 115 | 116 | remoteSrc = 117 | builtins.fetchurl { 118 | url = "https://packages.registry.purescript.org/${package.name}/${version}.tar.gz"; 119 | sha256 = integrity; 120 | }; 121 | in 122 | { 123 | pathString = 124 | "${package.name}-${version}"; 125 | 126 | packageDerivation = 127 | mkDerivation { 128 | inherit version; 129 | 130 | pname = 131 | package.name; 132 | 133 | src = 134 | remoteSrc; 135 | 136 | installPhase = 137 | "mkdir $out; cp -r * $out"; 138 | }; 139 | }; 140 | 141 | registryPackageBuildString = package: 142 | let 143 | packageDerivationInfo = 144 | buildDerivationFromRegistry package; 145 | 146 | packageDerivation = 147 | packageDerivationInfo.packageDerivation; 148 | 149 | packagePath = 150 | packageDerivationInfo.pathString; 151 | in 152 | '' 153 | mkdir -p .spago/packages/${packagePath} 154 | cp -r ${packageDerivation}/* .spago/packages/${packagePath}; 155 | ''; 156 | 157 | 158 | localPackageBuildString = package: 159 | ""; 160 | 161 | registryPackageCommand = 162 | lib.concatMapStrings 163 | registryPackageBuildString 164 | (builtins.attrValues formattedPackageSet.registryPackages); 165 | 166 | gitPackageCommand = 167 | lib.concatMapStrings 168 | gitPackageBuildString 169 | (builtins.attrValues formattedPackageSet.gitPackages); 170 | 171 | localPackageCommand = 172 | lib.concatMapStrings 173 | localPackageBuildString 174 | (builtins.attrValues formattedPackageSet.localPackages); 175 | 176 | # TODO This should be removed at some point. Recent updates to Spago 177 | # mean that ".spago/p" is now used, rather than 178 | # ".spago/packages". This makes it uniform between the two. 179 | extraCommand = 180 | "cd .spago; ln -s packages p; cd .."; 181 | in 182 | builtins.concatStringsSep "\n" [ registryPackageCommand gitPackageCommand localPackageCommand extraCommand ] 183 | -------------------------------------------------------------------------------- /nix/buildSpagoNodeJs.nix: -------------------------------------------------------------------------------- 1 | { stdenv, registry, registry-index }: 2 | { symlink ? false }: 3 | let 4 | command = 5 | if symlink 6 | then "ln -s" 7 | else "cp -r"; 8 | in 9 | stdenv.mkDerivation { 10 | name = "spagoNodeJs"; 11 | src = ./.; 12 | installPhase = 13 | '' 14 | mkdir -p $out/spago-nodejs; 15 | mkdir $out/spago-nodejs/registry; 16 | ${command} ${registry}/* $out/spago-nodejs/registry 17 | mkdir $out/spago-nodejs/registry-index; 18 | ${command} ${registry-index}/* $out/spago-nodejs/registry-index 19 | touch $out/spago-nodejs/fresh-registry-canary.txt 20 | ''; 21 | } 22 | -------------------------------------------------------------------------------- /nix/mkSpagoDerivation.nix: -------------------------------------------------------------------------------- 1 | { stdenv, fromYAML, buildSpagoNodeJs, registry, registry-index, git, lib, importNpmLock }: 2 | { src 3 | 4 | , spagoYaml ? "${src}/spago.yaml" 5 | 6 | , spagoLock ? "${src}/spago.lock" 7 | 8 | , nativeBuildInputs ? [] 9 | 10 | , buildNodeModulesArgs ? null 11 | 12 | , ...} @ args: 13 | let 14 | spagoNix = 15 | fromYAML (builtins.readFile spagoYaml); 16 | 17 | spagoNodeJs = 18 | buildSpagoNodeJs { symlink = false; }; 19 | 20 | pname = 21 | if builtins.hasAttr "pname" args 22 | then args.pname 23 | else spagoNix.package.name; 24 | 25 | version = 26 | if builtins.hasAttr "version" args 27 | then "-${args.version}" 28 | else 29 | if builtins.hasAttr "pname" args 30 | then throw "specify version or just use \"name\"" 31 | else ""; 32 | 33 | name = 34 | if builtins.hasAttr "name" args 35 | then args.name 36 | else "${pname}${version}"; 37 | 38 | buildPhase = 39 | let 40 | buildCommand = 41 | if builtins.hasAttr "buildPhase" args 42 | then args.buildPhase 43 | else ""; 44 | 45 | dotSpagoCommand = 46 | import ./buildFromLockFile.nix { 47 | inherit registry lib; 48 | mkDerivation = stdenv.mkDerivation; 49 | } { spagoLockFile = spagoLock; }; 50 | 51 | buildNpmPackageCommand = 52 | let nodeModules = 53 | importNpmLock.buildNodeModules buildNodeModulesArgs; 54 | in 55 | if buildNodeModulesArgs == null 56 | then "" 57 | else 58 | '' 59 | cp -r ${nodeModules}/node_modules . 60 | ''; 61 | in 62 | '' 63 | runHook preBuild 64 | export HOME=$(mktemp -d) 65 | mkdir -p $HOME/.cache/spago-nodejs 66 | cp -r ${spagoNodeJs}/spago-nodejs/* $HOME/.cache/spago-nodejs 67 | ${buildNpmPackageCommand} 68 | ${dotSpagoCommand} 69 | ${buildCommand} 70 | runHook postBuild 71 | ''; 72 | 73 | installPhase = 74 | if builtins.hasAttr "installPhase" args 75 | then 76 | '' 77 | runHook preInstall 78 | ${args.installPhase} 79 | runHook postInstall 80 | '' 81 | else 82 | '' 83 | runHook preInstall 84 | runHook postInstall 85 | ''; 86 | 87 | cleanedArgs = 88 | builtins.removeAttrs args [ "buildNodeModulesArgs"]; 89 | in 90 | stdenv.mkDerivation (cleanedArgs // { 91 | inherit name buildPhase installPhase; 92 | nativeBuildInputs = 93 | [ (if builtins.hasAttr "git" args then args.git else git) 94 | ] ++ nativeBuildInputs; 95 | }) 96 | -------------------------------------------------------------------------------- /tests/local/.gitignore: -------------------------------------------------------------------------------- 1 | .spago 2 | output 3 | index.js -------------------------------------------------------------------------------- /tests/local/lib/spago.lock: -------------------------------------------------------------------------------- 1 | workspace: 2 | packages: 3 | lib: 4 | path: ./ 5 | dependencies: 6 | - prelude: ">=6.0.1 <7.0.0" 7 | test_dependencies: [] 8 | build_plan: 9 | - prelude 10 | packageSet: 11 | address: 12 | registry: 47.12.0 13 | compiler: ">=0.15.14 <0.16.0" 14 | content: 15 | abc-parser: 2.0.1 16 | ace: 9.1.0 17 | aff: 7.1.0 18 | aff-bus: 6.0.0 19 | aff-coroutines: 9.0.0 20 | aff-promise: 4.0.0 21 | aff-retry: 2.0.0 22 | affjax: 13.0.0 23 | affjax-node: 1.0.0 24 | affjax-web: 1.0.0 25 | ansi: 7.0.0 26 | applicative-phases: 1.0.0 27 | argonaut: 9.0.0 28 | argonaut-aeson-generic: 0.4.1 29 | argonaut-codecs: 9.1.0 30 | argonaut-core: 7.0.0 31 | argonaut-generic: 8.0.0 32 | argonaut-traversals: 10.0.0 33 | argparse-basic: 2.0.0 34 | array-builder: 0.1.2 35 | array-search: 0.5.6 36 | arraybuffer: 13.2.0 37 | arraybuffer-builder: 3.1.0 38 | arraybuffer-types: 3.0.2 39 | arrays: 7.3.0 40 | arrays-extra: 0.4.4 41 | arrays-zipper: 2.0.1 42 | ask: 1.0.0 43 | assert: 6.0.0 44 | assert-multiple: 0.3.4 45 | avar: 5.0.0 46 | b64: 0.0.8 47 | barbies: 1.0.1 48 | barlow-lens: 0.9.0 49 | bifunctors: 6.0.0 50 | bigints: 7.0.1 51 | bolson: 0.3.9 52 | bookhound: 0.1.7 53 | bower-json: 3.0.0 54 | call-by-name: 4.0.1 55 | canvas: 6.0.0 56 | canvas-action: 9.0.0 57 | cartesian: 1.0.6 58 | catenable-lists: 7.0.0 59 | chameleon: 1.0.0 60 | chameleon-halogen: 1.0.3 61 | chameleon-react-basic: 1.1.0 62 | chameleon-styled: 2.5.0 63 | chameleon-transformers: 1.0.0 64 | channel: 1.0.0 65 | checked-exceptions: 3.1.1 66 | classless: 0.1.1 67 | classless-arbitrary: 0.1.1 68 | classless-decode-json: 0.1.1 69 | classless-encode-json: 0.1.3 70 | classnames: 2.0.0 71 | codec: 6.1.0 72 | codec-argonaut: 10.0.0 73 | codec-json: 1.1.0 74 | colors: 7.0.1 75 | concur-core: 0.5.0 76 | concur-react: 0.5.0 77 | concurrent-queues: 3.0.0 78 | console: 6.1.0 79 | const: 6.0.0 80 | contravariant: 6.0.0 81 | control: 6.0.0 82 | convertable-options: 1.0.0 83 | coroutines: 7.0.0 84 | css: 6.0.0 85 | css-frameworks: 1.0.1 86 | data-mvc: 0.0.2 87 | datetime: 6.1.0 88 | datetime-parsing: 0.2.0 89 | debug: 6.0.2 90 | decimals: 7.1.0 91 | default-values: 1.0.1 92 | deku: 0.9.23 93 | deno: 0.0.5 94 | dissect: 1.0.0 95 | distributive: 6.0.0 96 | dom-filereader: 7.0.0 97 | dom-indexed: 12.0.0 98 | dotenv: 4.0.3 99 | droplet: 0.6.0 100 | dts: 1.0.0 101 | dual-numbers: 1.0.2 102 | dynamic-buffer: 3.0.1 103 | echarts-simple: 0.0.1 104 | effect: 4.0.0 105 | either: 6.1.0 106 | elmish: 0.10.0 107 | elmish-enzyme: 0.1.1 108 | elmish-hooks: 0.10.0 109 | elmish-html: 0.8.1 110 | elmish-testing-library: 0.3.1 111 | email-validate: 7.0.0 112 | encoding: 0.0.8 113 | enums: 6.0.1 114 | env-names: 0.3.4 115 | error: 2.0.0 116 | eta-conversion: 0.3.2 117 | exceptions: 6.0.0 118 | exists: 6.0.0 119 | exitcodes: 4.0.0 120 | expect-inferred: 3.0.0 121 | fahrtwind: 2.0.0 122 | fallback: 0.1.0 123 | fast-vect: 1.2.0 124 | fetch: 4.1.0 125 | fetch-argonaut: 1.0.1 126 | fetch-core: 5.1.0 127 | fetch-yoga-json: 1.1.0 128 | filterable: 5.0.0 129 | fix-functor: 0.1.0 130 | fixed-points: 7.0.0 131 | fixed-precision: 5.0.0 132 | flame: 1.3.0 133 | float32: 2.0.0 134 | fmt: 0.2.1 135 | foldable-traversable: 6.0.0 136 | foreign: 7.0.0 137 | foreign-object: 4.1.0 138 | foreign-readwrite: 3.4.0 139 | forgetmenot: 0.1.0 140 | fork: 6.0.0 141 | form-urlencoded: 7.0.0 142 | formatters: 7.0.0 143 | framer-motion: 1.0.1 144 | free: 7.1.0 145 | freeap: 7.0.0 146 | freer-free: 0.0.1 147 | freet: 7.0.0 148 | functions: 6.0.0 149 | functor1: 3.0.0 150 | functors: 5.0.0 151 | fuzzy: 0.4.0 152 | gen: 4.0.0 153 | generate-values: 1.0.1 154 | generic-router: 0.0.1 155 | geojson: 0.0.5 156 | geometry-plane: 1.0.3 157 | grain: 3.0.0 158 | grain-router: 3.0.0 159 | grain-virtualized: 3.0.0 160 | graphs: 8.1.0 161 | group: 4.1.1 162 | halogen: 7.0.0 163 | halogen-bootstrap5: 2.3.1 164 | halogen-css: 10.0.0 165 | halogen-echarts-simple: 0.0.4 166 | halogen-formless: 4.0.3 167 | halogen-helix: 1.0.0 168 | halogen-hooks: 0.6.3 169 | halogen-hooks-extra: 0.9.0 170 | halogen-store: 0.5.4 171 | halogen-storybook: 2.0.0 172 | halogen-subscriptions: 2.0.0 173 | halogen-svg-elems: 8.0.0 174 | halogen-typewriter: 1.0.4 175 | halogen-vdom: 8.0.0 176 | halogen-vdom-string-renderer: 0.5.0 177 | heckin: 2.0.1 178 | heterogeneous: 0.6.0 179 | homogeneous: 0.4.0 180 | http-methods: 6.0.0 181 | httpurple: 4.0.0 182 | humdrum: 0.0.1 183 | hyrule: 2.3.8 184 | identity: 6.0.0 185 | identy: 4.0.1 186 | indexed-db: 1.0.0 187 | indexed-monad: 3.0.0 188 | int64: 3.0.0 189 | integers: 6.0.0 190 | interpolate: 5.0.2 191 | invariant: 6.0.0 192 | jarilo: 1.0.1 193 | jelly: 0.10.0 194 | jelly-router: 0.3.0 195 | jelly-signal: 0.4.0 196 | jest: 1.0.0 197 | js-abort-controller: 1.0.0 198 | js-bigints: 2.2.1 199 | js-date: 8.0.0 200 | js-fetch: 0.2.1 201 | js-fileio: 3.0.0 202 | js-intl: 1.0.4 203 | js-iterators: 0.1.1 204 | js-maps: 0.1.2 205 | js-promise: 1.0.0 206 | js-promise-aff: 1.0.0 207 | js-timers: 6.1.0 208 | js-uri: 3.1.0 209 | json: 1.0.0 210 | json-codecs: 5.0.0 211 | justifill: 0.5.0 212 | jwt: 0.0.9 213 | labeled-data: 0.2.0 214 | lazy: 6.0.0 215 | lazy-joe: 1.0.0 216 | lcg: 4.0.0 217 | leibniz: 5.0.0 218 | liminal: 1.0.1 219 | linalg: 6.0.0 220 | lists: 7.0.0 221 | literals: 1.0.2 222 | logging: 3.0.0 223 | logging-journald: 0.4.0 224 | lumi-components: 18.0.0 225 | machines: 7.0.0 226 | maps-eager: 0.4.1 227 | marionette: 1.0.0 228 | marionette-react-basic-hooks: 0.1.1 229 | marked: 0.1.0 230 | matrices: 5.0.1 231 | matryoshka: 1.0.0 232 | maybe: 6.0.0 233 | media-types: 6.0.0 234 | meowclient: 1.0.0 235 | midi: 4.0.0 236 | milkis: 9.0.0 237 | minibench: 4.0.1 238 | mmorph: 7.0.0 239 | monad-control: 5.0.0 240 | monad-logger: 1.3.1 241 | monad-loops: 0.5.0 242 | monad-unlift: 1.0.1 243 | monoid-extras: 0.0.1 244 | monoidal: 0.16.0 245 | morello: 0.4.0 246 | mote: 3.0.0 247 | motsunabe: 2.0.0 248 | mvc: 0.0.1 249 | mysql: 6.0.1 250 | n3: 0.1.0 251 | nano-id: 1.1.0 252 | nanoid: 0.1.0 253 | naturals: 3.0.0 254 | nested-functor: 0.2.1 255 | newtype: 5.0.0 256 | nextjs: 0.1.1 257 | nextui: 0.2.0 258 | node-buffer: 9.0.0 259 | node-child-process: 11.1.0 260 | node-event-emitter: 3.0.0 261 | node-execa: 5.0.0 262 | node-fs: 9.1.0 263 | node-glob-basic: 1.3.0 264 | node-http: 9.1.0 265 | node-http2: 1.1.1 266 | node-human-signals: 1.0.0 267 | node-net: 5.1.0 268 | node-os: 5.1.0 269 | node-path: 5.0.0 270 | node-process: 11.2.0 271 | node-readline: 8.1.0 272 | node-sqlite3: 8.0.0 273 | node-streams: 9.0.0 274 | node-tls: 0.3.1 275 | node-url: 7.0.1 276 | node-zlib: 0.4.0 277 | nonempty: 7.0.0 278 | now: 6.0.0 279 | npm-package-json: 2.0.0 280 | nullable: 6.0.0 281 | numberfield: 0.1.0 282 | numbers: 9.0.1 283 | oak: 3.1.1 284 | oak-debug: 1.2.2 285 | object-maps: 0.3.0 286 | ocarina: 1.5.4 287 | open-folds: 6.3.0 288 | open-memoize: 6.1.0 289 | open-pairing: 6.1.0 290 | options: 7.0.0 291 | optparse: 5.0.1 292 | ordered-collections: 3.1.1 293 | ordered-set: 0.4.0 294 | orders: 6.0.0 295 | owoify: 1.2.0 296 | pairs: 9.0.1 297 | parallel: 7.0.0 298 | parsing: 10.2.0 299 | parsing-dataview: 3.2.4 300 | partial: 4.0.0 301 | pathy: 9.0.0 302 | pha: 0.13.0 303 | phaser: 0.7.0 304 | phylio: 1.1.2 305 | pipes: 8.0.0 306 | pirates-charm: 0.0.1 307 | pmock: 0.9.0 308 | point-free: 1.0.0 309 | pointed-list: 0.5.1 310 | polymorphic-vectors: 4.0.0 311 | posix-types: 6.0.0 312 | precise: 6.0.0 313 | precise-datetime: 7.0.0 314 | prelude: 6.0.1 315 | prettier-printer: 3.0.0 316 | profunctor: 6.0.0 317 | profunctor-lenses: 8.0.0 318 | protobuf: 4.3.0 319 | psa-utils: 8.0.0 320 | psci-support: 6.0.0 321 | qualified-do: 2.2.0 322 | quantities: 12.2.0 323 | quickcheck: 8.0.1 324 | quickcheck-combinators: 0.1.3 325 | quickcheck-laws: 7.0.0 326 | quickcheck-utf8: 0.0.0 327 | random: 6.0.0 328 | rationals: 6.0.0 329 | rdf: 0.1.0 330 | react: 11.0.0 331 | react-aria: 0.2.0 332 | react-basic: 17.0.0 333 | react-basic-classic: 3.0.0 334 | react-basic-dnd: 10.1.0 335 | react-basic-dom: 6.1.0 336 | react-basic-emotion: 7.1.0 337 | react-basic-hooks: 8.2.0 338 | react-basic-storybook: 2.0.0 339 | react-dom: 8.0.0 340 | react-halo: 3.0.0 341 | react-icons: 1.1.4 342 | react-markdown: 0.1.0 343 | react-testing-library: 4.0.1 344 | react-virtuoso: 1.0.0 345 | read: 1.0.1 346 | recharts: 1.1.0 347 | record: 4.0.0 348 | record-extra: 5.0.1 349 | record-ptional-fields: 0.1.2 350 | record-studio: 1.0.4 351 | refs: 6.0.0 352 | remotedata: 5.0.0 353 | resource: 2.0.1 354 | resourcet: 1.0.0 355 | result: 1.0.3 356 | return: 0.2.0 357 | ring-modules: 5.0.1 358 | rito: 0.3.4 359 | routing: 11.0.0 360 | routing-duplex: 0.7.0 361 | run: 5.0.0 362 | safe-coerce: 2.0.0 363 | safely: 4.0.1 364 | school-of-music: 1.3.0 365 | selection-foldable: 0.2.0 366 | selective-functors: 1.0.1 367 | semirings: 7.0.0 368 | signal: 13.0.0 369 | simple-emitter: 3.0.1 370 | simple-i18n: 2.0.1 371 | simple-json: 9.0.0 372 | simple-ulid: 3.0.0 373 | sized-matrices: 1.0.0 374 | sized-vectors: 5.0.2 375 | slug: 3.0.8 376 | small-ffi: 4.0.1 377 | soundfonts: 4.1.0 378 | sparse-matrices: 1.3.0 379 | sparse-polynomials: 2.0.5 380 | spec: 7.5.5 381 | spec-mocha: 5.1.0 382 | spec-quickcheck: 5.0.0 383 | splitmix: 2.1.0 384 | ssrs: 1.0.0 385 | st: 6.2.0 386 | statistics: 0.3.2 387 | strictlypositiveint: 1.0.1 388 | string-parsers: 8.0.0 389 | strings: 6.0.1 390 | strings-extra: 4.0.0 391 | stringutils: 0.0.12 392 | substitute: 0.2.3 393 | supply: 0.2.0 394 | svg-parser: 3.0.0 395 | systemd-journald: 0.3.0 396 | tagged: 4.0.2 397 | tailrec: 6.1.0 398 | tecton: 0.2.1 399 | tecton-halogen: 0.2.0 400 | test-unit: 17.0.0 401 | thermite: 6.3.1 402 | thermite-dom: 0.3.1 403 | these: 6.0.0 404 | transformation-matrix: 1.0.1 405 | transformers: 6.0.0 406 | tree-rose: 4.0.2 407 | ts-bridge: 4.0.0 408 | tuples: 7.0.0 409 | two-or-more: 1.0.0 410 | type-equality: 4.0.1 411 | typedenv: 2.0.1 412 | typelevel: 6.0.0 413 | typelevel-lists: 2.1.0 414 | typelevel-peano: 1.0.1 415 | typelevel-prelude: 7.0.0 416 | typelevel-regex: 0.0.3 417 | typelevel-rows: 0.1.0 418 | uint: 7.0.0 419 | ulid: 3.0.1 420 | uncurried-transformers: 1.1.0 421 | undefined: 2.0.0 422 | undefined-is-not-a-problem: 1.1.0 423 | unfoldable: 6.0.0 424 | unicode: 6.0.0 425 | unique: 0.6.1 426 | unlift: 1.0.1 427 | unordered-collections: 3.0.1 428 | unsafe-coerce: 6.0.0 429 | unsafe-reference: 5.0.0 430 | untagged-to-tagged: 0.1.4 431 | untagged-union: 1.0.0 432 | uri: 9.0.0 433 | uuid: 9.0.0 434 | uuidv4: 1.0.0 435 | validation: 6.0.0 436 | variant: 8.0.0 437 | variant-encodings: 2.0.0 438 | vectorfield: 1.0.1 439 | vectors: 2.1.0 440 | versions: 7.0.0 441 | visx: 0.0.2 442 | web-clipboard: 5.0.0 443 | web-cssom: 2.0.0 444 | web-cssom-view: 0.1.0 445 | web-dom: 6.0.0 446 | web-dom-parser: 8.0.0 447 | web-dom-xpath: 3.0.0 448 | web-encoding: 3.0.0 449 | web-events: 4.0.0 450 | web-fetch: 4.0.1 451 | web-file: 4.0.0 452 | web-geometry: 0.1.0 453 | web-html: 4.1.0 454 | web-pointerevents: 2.0.0 455 | web-proletarian: 1.0.0 456 | web-promise: 3.2.0 457 | web-resize-observer: 2.1.0 458 | web-router: 1.0.0 459 | web-socket: 4.0.0 460 | web-storage: 5.0.0 461 | web-streams: 4.0.0 462 | web-touchevents: 4.0.0 463 | web-uievents: 5.0.0 464 | web-url: 2.0.0 465 | web-workers: 1.1.0 466 | web-xhr: 5.0.1 467 | webextension-polyfill: 0.1.0 468 | webgpu: 0.0.1 469 | which: 2.0.0 470 | yoga-fetch: 1.0.1 471 | yoga-json: 5.1.0 472 | yoga-om: 0.1.0 473 | yoga-postgres: 6.0.0 474 | yoga-tree: 1.0.0 475 | z3: 0.0.2 476 | zipperarray: 2.0.0 477 | extraPackages: {} 478 | packages: 479 | prelude: 480 | type: registry 481 | version: 6.0.1 482 | integrity: sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0= 483 | dependencies: [] 484 | -------------------------------------------------------------------------------- /tests/local/lib/spago.yaml: -------------------------------------------------------------------------------- 1 | package: 2 | name: lib 3 | dependencies: 4 | - prelude: ">=6.0.1 <7.0.0" 5 | publish: 6 | version: 0.1.0 7 | license: MIT 8 | workspace: 9 | packageSet: 10 | registry: 47.12.0 11 | extraPackages: {} 12 | -------------------------------------------------------------------------------- /tests/local/lib/src/Lib.purs: -------------------------------------------------------------------------------- 1 | module Lib where 2 | 3 | import Prelude 4 | import Effect (Effect) 5 | 6 | testFunc :: Effect Unit 7 | testFunc = pure unit 8 | -------------------------------------------------------------------------------- /tests/local/local.nix: -------------------------------------------------------------------------------- 1 | { mkSpagoDerivation, purs, spago, esbuild }: 2 | mkSpagoDerivation { 3 | pname = "local-package-test"; 4 | version = "0.1.0"; 5 | src = ./.; 6 | nativeBuildInputs = [ purs spago esbuild ]; 7 | spagoYaml = ./spago.yaml; 8 | spagoLock = ./spago.lock; 9 | buildPhase = "spago bundle"; 10 | installPhase = "mkdir $out; cp index.js $out"; 11 | } 12 | -------------------------------------------------------------------------------- /tests/local/spago.lock: -------------------------------------------------------------------------------- 1 | { 2 | "workspace": { 3 | "packages": { 4 | "local-package-test": { 5 | "path": "./", 6 | "core": { 7 | "dependencies": [ 8 | "console", 9 | "effect", 10 | "lib", 11 | { 12 | "maybe": "*" 13 | }, 14 | "prelude" 15 | ], 16 | "build_plan": [ 17 | "console", 18 | "control", 19 | "effect", 20 | "invariant", 21 | "lib", 22 | "maybe", 23 | "newtype", 24 | "prelude", 25 | "safe-coerce", 26 | "unsafe-coerce" 27 | ] 28 | }, 29 | "test": { 30 | "dependencies": [], 31 | "build_plan": [] 32 | } 33 | } 34 | }, 35 | "package_set": { 36 | "address": { 37 | "registry": "43.1.0" 38 | }, 39 | "compiler": ">=0.15.10 <0.16.0", 40 | "content": { 41 | "abc-parser": "2.0.1", 42 | "ace": "9.1.0", 43 | "aff": "7.1.0", 44 | "aff-bus": "6.0.0", 45 | "aff-coroutines": "9.0.0", 46 | "aff-promise": "4.0.0", 47 | "aff-retry": "2.0.0", 48 | "affjax": "13.0.0", 49 | "affjax-node": "1.0.0", 50 | "affjax-web": "1.0.0", 51 | "ansi": "7.0.0", 52 | "applicative-phases": "1.0.0", 53 | "argonaut": "9.0.0", 54 | "argonaut-aeson-generic": "0.4.1", 55 | "argonaut-codecs": "9.1.0", 56 | "argonaut-core": "7.0.0", 57 | "argonaut-generic": "8.0.0", 58 | "argonaut-traversals": "10.0.0", 59 | "argparse-basic": "2.0.0", 60 | "array-builder": "0.1.2", 61 | "array-search": "0.5.6", 62 | "arraybuffer": "13.2.0", 63 | "arraybuffer-builder": "3.1.0", 64 | "arraybuffer-types": "3.0.2", 65 | "arrays": "7.2.1", 66 | "arrays-extra": "0.4.1", 67 | "arrays-zipper": "2.0.1", 68 | "ask": "1.0.0", 69 | "assert": "6.0.0", 70 | "assert-multiple": "0.3.4", 71 | "avar": "5.0.0", 72 | "b64": "0.0.8", 73 | "barbies": "1.0.1", 74 | "barlow-lens": "0.9.0", 75 | "bifunctors": "6.0.0", 76 | "bigints": "7.0.1", 77 | "bolson": "0.3.9", 78 | "bookhound": "0.1.3", 79 | "bower-json": "3.0.0", 80 | "call-by-name": "4.0.1", 81 | "canvas": "6.0.0", 82 | "canvas-action": "9.0.0", 83 | "cartesian": "1.0.6", 84 | "catenable-lists": "7.0.0", 85 | "chameleon": "1.0.0", 86 | "chameleon-halogen": "1.0.3", 87 | "chameleon-react-basic": "1.1.0", 88 | "chameleon-styled": "2.5.0", 89 | "chameleon-transformers": "1.0.0", 90 | "channel": "1.0.0", 91 | "checked-exceptions": "3.1.1", 92 | "classless": "0.1.1", 93 | "classless-arbitrary": "0.1.1", 94 | "classless-decode-json": "0.1.1", 95 | "classless-encode-json": "0.1.3", 96 | "classnames": "2.0.0", 97 | "codec": "6.0.0", 98 | "codec-argonaut": "10.0.0", 99 | "colors": "7.0.1", 100 | "concur-core": "0.5.0", 101 | "concur-react": "0.5.0", 102 | "concurrent-queues": "3.0.0", 103 | "console": "6.1.0", 104 | "const": "6.0.0", 105 | "contravariant": "6.0.0", 106 | "control": "6.0.0", 107 | "convertable-options": "1.0.0", 108 | "coroutines": "7.0.0", 109 | "css": "6.0.0", 110 | "css-frameworks": "1.0.1", 111 | "data-mvc": "0.0.2", 112 | "datetime": "6.1.0", 113 | "datetime-parsing": "0.2.0", 114 | "debug": "6.0.2", 115 | "decimals": "7.1.0", 116 | "default-values": "1.0.1", 117 | "deku": "0.9.23", 118 | "deno": "0.0.5", 119 | "dissect": "1.0.0", 120 | "distributive": "6.0.0", 121 | "dom-filereader": "7.0.0", 122 | "dom-indexed": "12.0.0", 123 | "dotenv": "4.0.3", 124 | "droplet": "0.6.0", 125 | "dts": "0.2.0", 126 | "dual-numbers": "1.0.2", 127 | "dynamic-buffer": "3.0.1", 128 | "echarts-simple": "0.0.1", 129 | "effect": "4.0.0", 130 | "either": "6.1.0", 131 | "elmish": "0.10.0", 132 | "elmish-enzyme": "0.1.1", 133 | "elmish-hooks": "0.10.0", 134 | "elmish-html": "0.8.1", 135 | "elmish-testing-library": "0.3.1", 136 | "email-validate": "7.0.0", 137 | "encoding": "0.0.8", 138 | "enums": "6.0.1", 139 | "env-names": "0.3.4", 140 | "error": "2.0.0", 141 | "exceptions": "6.0.0", 142 | "exists": "6.0.0", 143 | "exitcodes": "4.0.0", 144 | "expect-inferred": "3.0.0", 145 | "fahrtwind": "2.0.0", 146 | "fallback": "0.1.0", 147 | "fast-vect": "1.1.0", 148 | "fetch": "3.0.0", 149 | "fetch-argonaut": "1.0.1", 150 | "fetch-core": "5.1.0", 151 | "fetch-yoga-json": "1.1.0", 152 | "filterable": "5.0.0", 153 | "fix-functor": "0.1.0", 154 | "fixed-points": "7.0.0", 155 | "fixed-precision": "5.0.0", 156 | "flame": "1.3.0", 157 | "float32": "2.0.0", 158 | "fmt": "0.2.1", 159 | "foldable-traversable": "6.0.0", 160 | "foreign": "7.0.0", 161 | "foreign-object": "4.1.0", 162 | "foreign-readwrite": "3.4.0", 163 | "forgetmenot": "0.1.0", 164 | "fork": "6.0.0", 165 | "form-urlencoded": "7.0.0", 166 | "formatters": "7.0.0", 167 | "framer-motion": "1.0.1", 168 | "free": "7.1.0", 169 | "freeap": "7.0.0", 170 | "freer-free": "0.0.1", 171 | "freet": "7.0.0", 172 | "functions": "6.0.0", 173 | "functor1": "3.0.0", 174 | "functors": "5.0.0", 175 | "fuzzy": "0.4.0", 176 | "gen": "4.0.0", 177 | "generate-values": "1.0.1", 178 | "generic-router": "0.0.1", 179 | "geojson": "0.0.5", 180 | "geometry-plane": "1.0.3", 181 | "grain": "3.0.0", 182 | "grain-router": "3.0.0", 183 | "grain-virtualized": "3.0.0", 184 | "graphs": "8.1.0", 185 | "group": "4.1.1", 186 | "halogen": "7.0.0", 187 | "halogen-bootstrap5": "2.2.0", 188 | "halogen-css": "10.0.0", 189 | "halogen-echarts-simple": "0.0.4", 190 | "halogen-formless": "4.0.3", 191 | "halogen-helix": "1.0.0", 192 | "halogen-hooks": "0.6.3", 193 | "halogen-hooks-extra": "0.9.0", 194 | "halogen-store": "0.5.4", 195 | "halogen-storybook": "2.0.0", 196 | "halogen-subscriptions": "2.0.0", 197 | "halogen-svg-elems": "8.0.0", 198 | "halogen-typewriter": "1.0.2", 199 | "halogen-vdom": "8.0.0", 200 | "halogen-vdom-string-renderer": "0.5.0", 201 | "heckin": "2.0.1", 202 | "heterogeneous": "0.6.0", 203 | "homogeneous": "0.4.0", 204 | "http-methods": "6.0.0", 205 | "httpurple": "4.0.0", 206 | "humdrum": "0.0.1", 207 | "hyrule": "2.3.8", 208 | "identity": "6.0.0", 209 | "identy": "4.0.1", 210 | "indexed-db": "1.0.0", 211 | "indexed-monad": "3.0.0", 212 | "int64": "3.0.0", 213 | "integers": "6.0.0", 214 | "interpolate": "5.0.2", 215 | "invariant": "6.0.0", 216 | "jarilo": "1.0.1", 217 | "jelly": "0.10.0", 218 | "jelly-router": "0.3.0", 219 | "jelly-signal": "0.4.0", 220 | "jest": "1.0.0", 221 | "js-abort-controller": "1.0.0", 222 | "js-bigints": "2.2.1", 223 | "js-date": "8.0.0", 224 | "js-fileio": "3.0.0", 225 | "js-intl": "1.0.4", 226 | "js-iterators": "0.1.1", 227 | "js-maps": "0.1.2", 228 | "js-promise": "1.0.0", 229 | "js-promise-aff": "1.0.0", 230 | "js-timers": "6.1.0", 231 | "js-uri": "3.1.0", 232 | "json-codecs": "5.0.0", 233 | "justifill": "0.5.0", 234 | "jwt": "0.0.9", 235 | "labeled-data": "0.2.0", 236 | "lazy": "6.0.0", 237 | "lazy-joe": "1.0.0", 238 | "lcg": "4.0.0", 239 | "leibniz": "5.0.0", 240 | "liminal": "1.0.1", 241 | "linalg": "6.0.0", 242 | "lists": "7.0.0", 243 | "literals": "1.0.2", 244 | "logging": "3.0.0", 245 | "logging-journald": "0.4.0", 246 | "machines": "7.0.0", 247 | "maps-eager": "0.4.1", 248 | "marionette": "1.0.0", 249 | "marionette-react-basic-hooks": "0.1.1", 250 | "matrices": "5.0.1", 251 | "matryoshka": "1.0.0", 252 | "maybe": "6.0.0", 253 | "media-types": "6.0.0", 254 | "midi": "4.0.0", 255 | "milkis": "9.0.0", 256 | "minibench": "4.0.1", 257 | "mmorph": "7.0.0", 258 | "monad-control": "5.0.0", 259 | "monad-logger": "1.3.1", 260 | "monad-loops": "0.5.0", 261 | "monad-unlift": "1.0.1", 262 | "monoid-extras": "0.0.1", 263 | "monoidal": "0.16.0", 264 | "morello": "0.4.0", 265 | "mote": "3.0.0", 266 | "motsunabe": "2.0.0", 267 | "mvc": "0.0.1", 268 | "mysql": "6.0.1", 269 | "n3": "0.1.0", 270 | "nano-id": "1.1.0", 271 | "nanoid": "0.1.0", 272 | "naturals": "3.0.0", 273 | "nested-functor": "0.2.1", 274 | "newtype": "5.0.0", 275 | "nextjs": "0.1.1", 276 | "nextui": "0.2.0", 277 | "node-buffer": "9.0.0", 278 | "node-child-process": "11.0.0", 279 | "node-event-emitter": "3.0.0", 280 | "node-execa": "4.0.1", 281 | "node-fs": "9.1.0", 282 | "node-http": "9.1.0", 283 | "node-http2": "1.1.1", 284 | "node-human-signals": "1.0.0", 285 | "node-net": "5.1.0", 286 | "node-os": "5.1.0", 287 | "node-path": "5.0.0", 288 | "node-process": "11.2.0", 289 | "node-readline": "8.1.0", 290 | "node-sqlite3": "8.0.0", 291 | "node-streams": "9.0.0", 292 | "node-tls": "0.3.1", 293 | "node-url": "7.0.1", 294 | "node-zlib": "0.4.0", 295 | "nonempty": "7.0.0", 296 | "now": "6.0.0", 297 | "npm-package-json": "2.0.0", 298 | "nullable": "6.0.0", 299 | "numberfield": "0.1.0", 300 | "numbers": "9.0.1", 301 | "oak": "3.1.1", 302 | "oak-debug": "1.2.2", 303 | "object-maps": "0.3.0", 304 | "ocarina": "1.5.4", 305 | "open-folds": "6.3.0", 306 | "open-memoize": "6.1.0", 307 | "open-pairing": "6.1.0", 308 | "options": "7.0.0", 309 | "ordered-collections": "3.1.1", 310 | "ordered-set": "0.4.0", 311 | "orders": "6.0.0", 312 | "pairs": "9.0.1", 313 | "parallel": "7.0.0", 314 | "parsing": "10.2.0", 315 | "parsing-dataview": "3.2.4", 316 | "partial": "4.0.0", 317 | "pathy": "9.0.0", 318 | "pha": "0.11.0", 319 | "phaser": "0.7.0", 320 | "phylio": "1.1.2", 321 | "pipes": "8.0.0", 322 | "pirates-charm": "0.0.1", 323 | "pmock": "0.6.0", 324 | "point-free": "1.0.0", 325 | "pointed-list": "0.5.1", 326 | "polymorphic-vectors": "4.0.0", 327 | "posix-types": "6.0.0", 328 | "precise": "6.0.0", 329 | "precise-datetime": "7.0.0", 330 | "prelude": "6.0.1", 331 | "prettier-printer": "3.0.0", 332 | "profunctor": "6.0.0", 333 | "profunctor-lenses": "8.0.0", 334 | "protobuf": "4.3.0", 335 | "psa-utils": "8.0.0", 336 | "psci-support": "6.0.0", 337 | "qualified-do": "2.2.0", 338 | "quantities": "12.2.0", 339 | "quickcheck": "8.0.1", 340 | "quickcheck-combinators": "0.1.3", 341 | "quickcheck-laws": "7.0.0", 342 | "quickcheck-utf8": "0.0.0", 343 | "random": "6.0.0", 344 | "rationals": "6.0.0", 345 | "rdf": "0.1.0", 346 | "react": "11.0.0", 347 | "react-aria": "0.2.0", 348 | "react-basic": "17.0.0", 349 | "react-basic-classic": "3.0.0", 350 | "react-basic-dnd": "10.1.0", 351 | "react-basic-dom": "6.1.0", 352 | "react-basic-emotion": "7.1.0", 353 | "react-basic-hooks": "8.2.0", 354 | "react-basic-storybook": "2.0.0", 355 | "react-dom": "8.0.0", 356 | "react-halo": "3.0.0", 357 | "react-icons": "1.1.1", 358 | "react-markdown": "0.1.0", 359 | "react-testing-library": "4.0.1", 360 | "react-virtuoso": "1.0.0", 361 | "read": "1.0.1", 362 | "recharts": "1.1.0", 363 | "record": "4.0.0", 364 | "record-extra": "5.0.1", 365 | "record-studio": "1.0.4", 366 | "refs": "6.0.0", 367 | "remotedata": "5.0.0", 368 | "resource": "2.0.1", 369 | "resourcet": "1.0.0", 370 | "result": "1.0.3", 371 | "return": "0.2.0", 372 | "ring-modules": "5.0.1", 373 | "rito": "0.3.4", 374 | "routing": "11.0.0", 375 | "routing-duplex": "0.7.0", 376 | "run": "5.0.0", 377 | "safe-coerce": "2.0.0", 378 | "safely": "4.0.1", 379 | "school-of-music": "1.3.0", 380 | "selection-foldable": "0.2.0", 381 | "selective-functors": "1.0.1", 382 | "semirings": "7.0.0", 383 | "signal": "13.0.0", 384 | "simple-emitter": "3.0.1", 385 | "simple-i18n": "2.0.1", 386 | "simple-json": "9.0.0", 387 | "simple-ulid": "3.0.0", 388 | "sized-matrices": "1.0.0", 389 | "sized-vectors": "5.0.2", 390 | "slug": "3.0.8", 391 | "small-ffi": "4.0.1", 392 | "soundfonts": "4.1.0", 393 | "sparse-matrices": "1.3.0", 394 | "sparse-polynomials": "2.0.5", 395 | "spec": "7.5.5", 396 | "spec-mocha": "5.0.0", 397 | "spec-quickcheck": "5.0.0", 398 | "splitmix": "2.1.0", 399 | "ssrs": "1.0.0", 400 | "st": "6.2.0", 401 | "statistics": "0.3.2", 402 | "strictlypositiveint": "1.0.1", 403 | "string-parsers": "8.0.0", 404 | "strings": "6.0.1", 405 | "strings-extra": "4.0.0", 406 | "stringutils": "0.0.12", 407 | "substitute": "0.2.3", 408 | "supply": "0.2.0", 409 | "svg-parser": "3.0.0", 410 | "systemd-journald": "0.3.0", 411 | "tagged": "4.0.2", 412 | "tailrec": "6.1.0", 413 | "tecton": "0.2.1", 414 | "tecton-halogen": "0.2.0", 415 | "test-unit": "17.0.0", 416 | "thermite": "6.3.1", 417 | "thermite-dom": "0.3.1", 418 | "these": "6.0.0", 419 | "transformation-matrix": "1.0.1", 420 | "transformers": "6.0.0", 421 | "tree-rose": "4.0.2", 422 | "tuples": "7.0.0", 423 | "two-or-more": "1.0.0", 424 | "type-equality": "4.0.1", 425 | "typedenv": "2.0.1", 426 | "typelevel": "6.0.0", 427 | "typelevel-lists": "2.1.0", 428 | "typelevel-peano": "1.0.1", 429 | "typelevel-prelude": "7.0.0", 430 | "typelevel-regex": "0.0.3", 431 | "typelevel-rows": "0.1.0", 432 | "uint": "7.0.0", 433 | "ulid": "3.0.1", 434 | "uncurried-transformers": "1.1.0", 435 | "undefined": "2.0.0", 436 | "undefined-is-not-a-problem": "1.1.0", 437 | "unfoldable": "6.0.0", 438 | "unicode": "6.0.0", 439 | "unique": "0.6.1", 440 | "unlift": "1.0.1", 441 | "unordered-collections": "3.0.1", 442 | "unsafe-coerce": "6.0.0", 443 | "unsafe-reference": "5.0.0", 444 | "untagged-to-tagged": "0.1.4", 445 | "untagged-union": "1.0.0", 446 | "uri": "9.0.0", 447 | "uuid": "9.0.0", 448 | "uuidv4": "1.0.0", 449 | "validation": "6.0.0", 450 | "variant": "8.0.0", 451 | "variant-encodings": "2.0.0", 452 | "vectorfield": "1.0.1", 453 | "vectors": "2.1.0", 454 | "versions": "7.0.0", 455 | "visx": "0.0.2", 456 | "web-clipboard": "5.0.0", 457 | "web-cssom": "2.0.0", 458 | "web-cssom-view": "0.1.0", 459 | "web-dom": "6.0.0", 460 | "web-dom-parser": "8.0.0", 461 | "web-dom-xpath": "3.0.0", 462 | "web-encoding": "3.0.0", 463 | "web-events": "4.0.0", 464 | "web-fetch": "4.0.1", 465 | "web-file": "4.0.0", 466 | "web-geometry": "0.1.0", 467 | "web-html": "4.1.0", 468 | "web-pointerevents": "1.0.0", 469 | "web-proletarian": "1.0.0", 470 | "web-resize-observer": "2.0.0", 471 | "web-router": "1.0.0", 472 | "web-socket": "4.0.0", 473 | "web-storage": "5.0.0", 474 | "web-streams": "4.0.0", 475 | "web-touchevents": "4.0.0", 476 | "web-uievents": "5.0.0", 477 | "web-url": "2.0.0", 478 | "web-workers": "1.1.0", 479 | "web-xhr": "5.0.1", 480 | "webextension-polyfill": "0.1.0", 481 | "webgpu": "0.0.1", 482 | "which": "2.0.0", 483 | "yoga-fetch": "1.0.1", 484 | "yoga-json": "5.1.0", 485 | "yoga-om": "0.1.0", 486 | "yoga-postgres": "6.0.0", 487 | "yoga-tree": "1.0.0", 488 | "z3": "0.0.2" 489 | } 490 | }, 491 | "extra_packages": { 492 | "lib": { 493 | "path": "./lib" 494 | } 495 | } 496 | }, 497 | "packages": { 498 | "console": { 499 | "type": "registry", 500 | "version": "6.1.0", 501 | "integrity": "sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM=", 502 | "dependencies": [ 503 | "effect", 504 | "prelude" 505 | ] 506 | }, 507 | "control": { 508 | "type": "registry", 509 | "version": "6.0.0", 510 | "integrity": "sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk=", 511 | "dependencies": [ 512 | "newtype", 513 | "prelude" 514 | ] 515 | }, 516 | "effect": { 517 | "type": "registry", 518 | "version": "4.0.0", 519 | "integrity": "sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M=", 520 | "dependencies": [ 521 | "prelude" 522 | ] 523 | }, 524 | "invariant": { 525 | "type": "registry", 526 | "version": "6.0.0", 527 | "integrity": "sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo=", 528 | "dependencies": [ 529 | "control", 530 | "prelude" 531 | ] 532 | }, 533 | "lib": { 534 | "type": "local", 535 | "path": "./lib", 536 | "dependencies": [ 537 | "prelude" 538 | ] 539 | }, 540 | "maybe": { 541 | "type": "registry", 542 | "version": "6.0.0", 543 | "integrity": "sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q=", 544 | "dependencies": [ 545 | "control", 546 | "invariant", 547 | "newtype", 548 | "prelude" 549 | ] 550 | }, 551 | "newtype": { 552 | "type": "registry", 553 | "version": "5.0.0", 554 | "integrity": "sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw=", 555 | "dependencies": [ 556 | "prelude", 557 | "safe-coerce" 558 | ] 559 | }, 560 | "prelude": { 561 | "type": "registry", 562 | "version": "6.0.1", 563 | "integrity": "sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0=", 564 | "dependencies": [] 565 | }, 566 | "safe-coerce": { 567 | "type": "registry", 568 | "version": "2.0.0", 569 | "integrity": "sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU=", 570 | "dependencies": [ 571 | "unsafe-coerce" 572 | ] 573 | }, 574 | "unsafe-coerce": { 575 | "type": "registry", 576 | "version": "6.0.0", 577 | "integrity": "sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0=", 578 | "dependencies": [] 579 | } 580 | } 581 | } 582 | -------------------------------------------------------------------------------- /tests/local/spago.yaml: -------------------------------------------------------------------------------- 1 | package: 2 | name: local-package-test 3 | dependencies: 4 | - console 5 | - effect 6 | - lib 7 | - prelude 8 | - maybe: "*" 9 | workspace: 10 | packageSet: 11 | registry: 43.1.0 12 | extraPackages: 13 | lib: 14 | path: ./lib 15 | -------------------------------------------------------------------------------- /tests/local/src/Main.purs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Prelude 4 | 5 | import Effect (Effect) 6 | import Effect.Console (logShow) 7 | import Lib 8 | 9 | 10 | main :: Effect Unit 11 | main = testFunc 12 | -------------------------------------------------------------------------------- /tests/mkDotSpago/.gitignore: -------------------------------------------------------------------------------- 1 | .spago 2 | output -------------------------------------------------------------------------------- /tests/mkDotSpago/mkDotSpago.nix: -------------------------------------------------------------------------------- 1 | { buildDotSpago }: 2 | buildDotSpago { 3 | spagoLock = ./spago.lock; 4 | } 5 | -------------------------------------------------------------------------------- /tests/mkDotSpago/spago.lock: -------------------------------------------------------------------------------- 1 | { 2 | "workspace": { 3 | "packages": { 4 | "remote-package-test": { 5 | "path": "./", 6 | "core": { 7 | "dependencies": [ 8 | "console", 9 | "effect", 10 | "fft-js", 11 | { 12 | "maybe": "*" 13 | }, 14 | "prelude" 15 | ], 16 | "build_plan": [ 17 | "arrays", 18 | "bifunctors", 19 | "cartesian", 20 | "console", 21 | "const", 22 | "contravariant", 23 | "control", 24 | "distributive", 25 | "effect", 26 | "either", 27 | "exists", 28 | "fft-js", 29 | "foldable-traversable", 30 | "functions", 31 | "functors", 32 | "identity", 33 | "integers", 34 | "invariant", 35 | "maybe", 36 | "newtype", 37 | "nonempty", 38 | "numbers", 39 | "orders", 40 | "partial", 41 | "prelude", 42 | "profunctor", 43 | "psci-support", 44 | "refs", 45 | "safe-coerce", 46 | "st", 47 | "tailrec", 48 | "tuples", 49 | "type-equality", 50 | "unfoldable", 51 | "unsafe-coerce" 52 | ] 53 | }, 54 | "test": { 55 | "dependencies": [], 56 | "build_plan": [] 57 | } 58 | } 59 | }, 60 | "package_set": { 61 | "address": { 62 | "registry": "43.1.0" 63 | }, 64 | "compiler": ">=0.15.10 <0.16.0", 65 | "content": { 66 | "abc-parser": "2.0.1", 67 | "ace": "9.1.0", 68 | "aff": "7.1.0", 69 | "aff-bus": "6.0.0", 70 | "aff-coroutines": "9.0.0", 71 | "aff-promise": "4.0.0", 72 | "aff-retry": "2.0.0", 73 | "affjax": "13.0.0", 74 | "affjax-node": "1.0.0", 75 | "affjax-web": "1.0.0", 76 | "ansi": "7.0.0", 77 | "applicative-phases": "1.0.0", 78 | "argonaut": "9.0.0", 79 | "argonaut-aeson-generic": "0.4.1", 80 | "argonaut-codecs": "9.1.0", 81 | "argonaut-core": "7.0.0", 82 | "argonaut-generic": "8.0.0", 83 | "argonaut-traversals": "10.0.0", 84 | "argparse-basic": "2.0.0", 85 | "array-builder": "0.1.2", 86 | "array-search": "0.5.6", 87 | "arraybuffer": "13.2.0", 88 | "arraybuffer-builder": "3.1.0", 89 | "arraybuffer-types": "3.0.2", 90 | "arrays": "7.2.1", 91 | "arrays-extra": "0.4.1", 92 | "arrays-zipper": "2.0.1", 93 | "ask": "1.0.0", 94 | "assert": "6.0.0", 95 | "assert-multiple": "0.3.4", 96 | "avar": "5.0.0", 97 | "b64": "0.0.8", 98 | "barbies": "1.0.1", 99 | "barlow-lens": "0.9.0", 100 | "bifunctors": "6.0.0", 101 | "bigints": "7.0.1", 102 | "bolson": "0.3.9", 103 | "bookhound": "0.1.3", 104 | "bower-json": "3.0.0", 105 | "call-by-name": "4.0.1", 106 | "canvas": "6.0.0", 107 | "canvas-action": "9.0.0", 108 | "cartesian": "1.0.6", 109 | "catenable-lists": "7.0.0", 110 | "chameleon": "1.0.0", 111 | "chameleon-halogen": "1.0.3", 112 | "chameleon-react-basic": "1.1.0", 113 | "chameleon-styled": "2.5.0", 114 | "chameleon-transformers": "1.0.0", 115 | "channel": "1.0.0", 116 | "checked-exceptions": "3.1.1", 117 | "classless": "0.1.1", 118 | "classless-arbitrary": "0.1.1", 119 | "classless-decode-json": "0.1.1", 120 | "classless-encode-json": "0.1.3", 121 | "classnames": "2.0.0", 122 | "codec": "6.0.0", 123 | "codec-argonaut": "10.0.0", 124 | "colors": "7.0.1", 125 | "concur-core": "0.5.0", 126 | "concur-react": "0.5.0", 127 | "concurrent-queues": "3.0.0", 128 | "console": "6.1.0", 129 | "const": "6.0.0", 130 | "contravariant": "6.0.0", 131 | "control": "6.0.0", 132 | "convertable-options": "1.0.0", 133 | "coroutines": "7.0.0", 134 | "css": "6.0.0", 135 | "css-frameworks": "1.0.1", 136 | "data-mvc": "0.0.2", 137 | "datetime": "6.1.0", 138 | "datetime-parsing": "0.2.0", 139 | "debug": "6.0.2", 140 | "decimals": "7.1.0", 141 | "default-values": "1.0.1", 142 | "deku": "0.9.23", 143 | "deno": "0.0.5", 144 | "dissect": "1.0.0", 145 | "distributive": "6.0.0", 146 | "dom-filereader": "7.0.0", 147 | "dom-indexed": "12.0.0", 148 | "dotenv": "4.0.3", 149 | "droplet": "0.6.0", 150 | "dts": "0.2.0", 151 | "dual-numbers": "1.0.2", 152 | "dynamic-buffer": "3.0.1", 153 | "echarts-simple": "0.0.1", 154 | "effect": "4.0.0", 155 | "either": "6.1.0", 156 | "elmish": "0.10.0", 157 | "elmish-enzyme": "0.1.1", 158 | "elmish-hooks": "0.10.0", 159 | "elmish-html": "0.8.1", 160 | "elmish-testing-library": "0.3.1", 161 | "email-validate": "7.0.0", 162 | "encoding": "0.0.8", 163 | "enums": "6.0.1", 164 | "env-names": "0.3.4", 165 | "error": "2.0.0", 166 | "exceptions": "6.0.0", 167 | "exists": "6.0.0", 168 | "exitcodes": "4.0.0", 169 | "expect-inferred": "3.0.0", 170 | "fahrtwind": "2.0.0", 171 | "fallback": "0.1.0", 172 | "fast-vect": "1.1.0", 173 | "fetch": "3.0.0", 174 | "fetch-argonaut": "1.0.1", 175 | "fetch-core": "5.1.0", 176 | "fetch-yoga-json": "1.1.0", 177 | "filterable": "5.0.0", 178 | "fix-functor": "0.1.0", 179 | "fixed-points": "7.0.0", 180 | "fixed-precision": "5.0.0", 181 | "flame": "1.3.0", 182 | "float32": "2.0.0", 183 | "fmt": "0.2.1", 184 | "foldable-traversable": "6.0.0", 185 | "foreign": "7.0.0", 186 | "foreign-object": "4.1.0", 187 | "foreign-readwrite": "3.4.0", 188 | "forgetmenot": "0.1.0", 189 | "fork": "6.0.0", 190 | "form-urlencoded": "7.0.0", 191 | "formatters": "7.0.0", 192 | "framer-motion": "1.0.1", 193 | "free": "7.1.0", 194 | "freeap": "7.0.0", 195 | "freer-free": "0.0.1", 196 | "freet": "7.0.0", 197 | "functions": "6.0.0", 198 | "functor1": "3.0.0", 199 | "functors": "5.0.0", 200 | "fuzzy": "0.4.0", 201 | "gen": "4.0.0", 202 | "generate-values": "1.0.1", 203 | "generic-router": "0.0.1", 204 | "geojson": "0.0.5", 205 | "geometry-plane": "1.0.3", 206 | "grain": "3.0.0", 207 | "grain-router": "3.0.0", 208 | "grain-virtualized": "3.0.0", 209 | "graphs": "8.1.0", 210 | "group": "4.1.1", 211 | "halogen": "7.0.0", 212 | "halogen-bootstrap5": "2.2.0", 213 | "halogen-css": "10.0.0", 214 | "halogen-echarts-simple": "0.0.4", 215 | "halogen-formless": "4.0.3", 216 | "halogen-helix": "1.0.0", 217 | "halogen-hooks": "0.6.3", 218 | "halogen-hooks-extra": "0.9.0", 219 | "halogen-store": "0.5.4", 220 | "halogen-storybook": "2.0.0", 221 | "halogen-subscriptions": "2.0.0", 222 | "halogen-svg-elems": "8.0.0", 223 | "halogen-typewriter": "1.0.2", 224 | "halogen-vdom": "8.0.0", 225 | "halogen-vdom-string-renderer": "0.5.0", 226 | "heckin": "2.0.1", 227 | "heterogeneous": "0.6.0", 228 | "homogeneous": "0.4.0", 229 | "http-methods": "6.0.0", 230 | "httpurple": "4.0.0", 231 | "humdrum": "0.0.1", 232 | "hyrule": "2.3.8", 233 | "identity": "6.0.0", 234 | "identy": "4.0.1", 235 | "indexed-db": "1.0.0", 236 | "indexed-monad": "3.0.0", 237 | "int64": "3.0.0", 238 | "integers": "6.0.0", 239 | "interpolate": "5.0.2", 240 | "invariant": "6.0.0", 241 | "jarilo": "1.0.1", 242 | "jelly": "0.10.0", 243 | "jelly-router": "0.3.0", 244 | "jelly-signal": "0.4.0", 245 | "jest": "1.0.0", 246 | "js-abort-controller": "1.0.0", 247 | "js-bigints": "2.2.1", 248 | "js-date": "8.0.0", 249 | "js-fileio": "3.0.0", 250 | "js-intl": "1.0.4", 251 | "js-iterators": "0.1.1", 252 | "js-maps": "0.1.2", 253 | "js-promise": "1.0.0", 254 | "js-promise-aff": "1.0.0", 255 | "js-timers": "6.1.0", 256 | "js-uri": "3.1.0", 257 | "json-codecs": "5.0.0", 258 | "justifill": "0.5.0", 259 | "jwt": "0.0.9", 260 | "labeled-data": "0.2.0", 261 | "lazy": "6.0.0", 262 | "lazy-joe": "1.0.0", 263 | "lcg": "4.0.0", 264 | "leibniz": "5.0.0", 265 | "liminal": "1.0.1", 266 | "linalg": "6.0.0", 267 | "lists": "7.0.0", 268 | "literals": "1.0.2", 269 | "logging": "3.0.0", 270 | "logging-journald": "0.4.0", 271 | "machines": "7.0.0", 272 | "maps-eager": "0.4.1", 273 | "marionette": "1.0.0", 274 | "marionette-react-basic-hooks": "0.1.1", 275 | "matrices": "5.0.1", 276 | "matryoshka": "1.0.0", 277 | "maybe": "6.0.0", 278 | "media-types": "6.0.0", 279 | "midi": "4.0.0", 280 | "milkis": "9.0.0", 281 | "minibench": "4.0.1", 282 | "mmorph": "7.0.0", 283 | "monad-control": "5.0.0", 284 | "monad-logger": "1.3.1", 285 | "monad-loops": "0.5.0", 286 | "monad-unlift": "1.0.1", 287 | "monoid-extras": "0.0.1", 288 | "monoidal": "0.16.0", 289 | "morello": "0.4.0", 290 | "mote": "3.0.0", 291 | "motsunabe": "2.0.0", 292 | "mvc": "0.0.1", 293 | "mysql": "6.0.1", 294 | "n3": "0.1.0", 295 | "nano-id": "1.1.0", 296 | "nanoid": "0.1.0", 297 | "naturals": "3.0.0", 298 | "nested-functor": "0.2.1", 299 | "newtype": "5.0.0", 300 | "nextjs": "0.1.1", 301 | "nextui": "0.2.0", 302 | "node-buffer": "9.0.0", 303 | "node-child-process": "11.0.0", 304 | "node-event-emitter": "3.0.0", 305 | "node-execa": "4.0.1", 306 | "node-fs": "9.1.0", 307 | "node-http": "9.1.0", 308 | "node-http2": "1.1.1", 309 | "node-human-signals": "1.0.0", 310 | "node-net": "5.1.0", 311 | "node-os": "5.1.0", 312 | "node-path": "5.0.0", 313 | "node-process": "11.2.0", 314 | "node-readline": "8.1.0", 315 | "node-sqlite3": "8.0.0", 316 | "node-streams": "9.0.0", 317 | "node-tls": "0.3.1", 318 | "node-url": "7.0.1", 319 | "node-zlib": "0.4.0", 320 | "nonempty": "7.0.0", 321 | "now": "6.0.0", 322 | "npm-package-json": "2.0.0", 323 | "nullable": "6.0.0", 324 | "numberfield": "0.1.0", 325 | "numbers": "9.0.1", 326 | "oak": "3.1.1", 327 | "oak-debug": "1.2.2", 328 | "object-maps": "0.3.0", 329 | "ocarina": "1.5.4", 330 | "open-folds": "6.3.0", 331 | "open-memoize": "6.1.0", 332 | "open-pairing": "6.1.0", 333 | "options": "7.0.0", 334 | "ordered-collections": "3.1.1", 335 | "ordered-set": "0.4.0", 336 | "orders": "6.0.0", 337 | "pairs": "9.0.1", 338 | "parallel": "7.0.0", 339 | "parsing": "10.2.0", 340 | "parsing-dataview": "3.2.4", 341 | "partial": "4.0.0", 342 | "pathy": "9.0.0", 343 | "pha": "0.11.0", 344 | "phaser": "0.7.0", 345 | "phylio": "1.1.2", 346 | "pipes": "8.0.0", 347 | "pirates-charm": "0.0.1", 348 | "pmock": "0.6.0", 349 | "point-free": "1.0.0", 350 | "pointed-list": "0.5.1", 351 | "polymorphic-vectors": "4.0.0", 352 | "posix-types": "6.0.0", 353 | "precise": "6.0.0", 354 | "precise-datetime": "7.0.0", 355 | "prelude": "6.0.1", 356 | "prettier-printer": "3.0.0", 357 | "profunctor": "6.0.0", 358 | "profunctor-lenses": "8.0.0", 359 | "protobuf": "4.3.0", 360 | "psa-utils": "8.0.0", 361 | "psci-support": "6.0.0", 362 | "qualified-do": "2.2.0", 363 | "quantities": "12.2.0", 364 | "quickcheck": "8.0.1", 365 | "quickcheck-combinators": "0.1.3", 366 | "quickcheck-laws": "7.0.0", 367 | "quickcheck-utf8": "0.0.0", 368 | "random": "6.0.0", 369 | "rationals": "6.0.0", 370 | "rdf": "0.1.0", 371 | "react": "11.0.0", 372 | "react-aria": "0.2.0", 373 | "react-basic": "17.0.0", 374 | "react-basic-classic": "3.0.0", 375 | "react-basic-dnd": "10.1.0", 376 | "react-basic-dom": "6.1.0", 377 | "react-basic-emotion": "7.1.0", 378 | "react-basic-hooks": "8.2.0", 379 | "react-basic-storybook": "2.0.0", 380 | "react-dom": "8.0.0", 381 | "react-halo": "3.0.0", 382 | "react-icons": "1.1.1", 383 | "react-markdown": "0.1.0", 384 | "react-testing-library": "4.0.1", 385 | "react-virtuoso": "1.0.0", 386 | "read": "1.0.1", 387 | "recharts": "1.1.0", 388 | "record": "4.0.0", 389 | "record-extra": "5.0.1", 390 | "record-studio": "1.0.4", 391 | "refs": "6.0.0", 392 | "remotedata": "5.0.0", 393 | "resource": "2.0.1", 394 | "resourcet": "1.0.0", 395 | "result": "1.0.3", 396 | "return": "0.2.0", 397 | "ring-modules": "5.0.1", 398 | "rito": "0.3.4", 399 | "routing": "11.0.0", 400 | "routing-duplex": "0.7.0", 401 | "run": "5.0.0", 402 | "safe-coerce": "2.0.0", 403 | "safely": "4.0.1", 404 | "school-of-music": "1.3.0", 405 | "selection-foldable": "0.2.0", 406 | "selective-functors": "1.0.1", 407 | "semirings": "7.0.0", 408 | "signal": "13.0.0", 409 | "simple-emitter": "3.0.1", 410 | "simple-i18n": "2.0.1", 411 | "simple-json": "9.0.0", 412 | "simple-ulid": "3.0.0", 413 | "sized-matrices": "1.0.0", 414 | "sized-vectors": "5.0.2", 415 | "slug": "3.0.8", 416 | "small-ffi": "4.0.1", 417 | "soundfonts": "4.1.0", 418 | "sparse-matrices": "1.3.0", 419 | "sparse-polynomials": "2.0.5", 420 | "spec": "7.5.5", 421 | "spec-mocha": "5.0.0", 422 | "spec-quickcheck": "5.0.0", 423 | "splitmix": "2.1.0", 424 | "ssrs": "1.0.0", 425 | "st": "6.2.0", 426 | "statistics": "0.3.2", 427 | "strictlypositiveint": "1.0.1", 428 | "string-parsers": "8.0.0", 429 | "strings": "6.0.1", 430 | "strings-extra": "4.0.0", 431 | "stringutils": "0.0.12", 432 | "substitute": "0.2.3", 433 | "supply": "0.2.0", 434 | "svg-parser": "3.0.0", 435 | "systemd-journald": "0.3.0", 436 | "tagged": "4.0.2", 437 | "tailrec": "6.1.0", 438 | "tecton": "0.2.1", 439 | "tecton-halogen": "0.2.0", 440 | "test-unit": "17.0.0", 441 | "thermite": "6.3.1", 442 | "thermite-dom": "0.3.1", 443 | "these": "6.0.0", 444 | "transformation-matrix": "1.0.1", 445 | "transformers": "6.0.0", 446 | "tree-rose": "4.0.2", 447 | "tuples": "7.0.0", 448 | "two-or-more": "1.0.0", 449 | "type-equality": "4.0.1", 450 | "typedenv": "2.0.1", 451 | "typelevel": "6.0.0", 452 | "typelevel-lists": "2.1.0", 453 | "typelevel-peano": "1.0.1", 454 | "typelevel-prelude": "7.0.0", 455 | "typelevel-regex": "0.0.3", 456 | "typelevel-rows": "0.1.0", 457 | "uint": "7.0.0", 458 | "ulid": "3.0.1", 459 | "uncurried-transformers": "1.1.0", 460 | "undefined": "2.0.0", 461 | "undefined-is-not-a-problem": "1.1.0", 462 | "unfoldable": "6.0.0", 463 | "unicode": "6.0.0", 464 | "unique": "0.6.1", 465 | "unlift": "1.0.1", 466 | "unordered-collections": "3.0.1", 467 | "unsafe-coerce": "6.0.0", 468 | "unsafe-reference": "5.0.0", 469 | "untagged-to-tagged": "0.1.4", 470 | "untagged-union": "1.0.0", 471 | "uri": "9.0.0", 472 | "uuid": "9.0.0", 473 | "uuidv4": "1.0.0", 474 | "validation": "6.0.0", 475 | "variant": "8.0.0", 476 | "variant-encodings": "2.0.0", 477 | "vectorfield": "1.0.1", 478 | "vectors": "2.1.0", 479 | "versions": "7.0.0", 480 | "visx": "0.0.2", 481 | "web-clipboard": "5.0.0", 482 | "web-cssom": "2.0.0", 483 | "web-cssom-view": "0.1.0", 484 | "web-dom": "6.0.0", 485 | "web-dom-parser": "8.0.0", 486 | "web-dom-xpath": "3.0.0", 487 | "web-encoding": "3.0.0", 488 | "web-events": "4.0.0", 489 | "web-fetch": "4.0.1", 490 | "web-file": "4.0.0", 491 | "web-geometry": "0.1.0", 492 | "web-html": "4.1.0", 493 | "web-pointerevents": "1.0.0", 494 | "web-proletarian": "1.0.0", 495 | "web-resize-observer": "2.0.0", 496 | "web-router": "1.0.0", 497 | "web-socket": "4.0.0", 498 | "web-storage": "5.0.0", 499 | "web-streams": "4.0.0", 500 | "web-touchevents": "4.0.0", 501 | "web-uievents": "5.0.0", 502 | "web-url": "2.0.0", 503 | "web-workers": "1.1.0", 504 | "web-xhr": "5.0.1", 505 | "webextension-polyfill": "0.1.0", 506 | "webgpu": "0.0.1", 507 | "which": "2.0.0", 508 | "yoga-fetch": "1.0.1", 509 | "yoga-json": "5.1.0", 510 | "yoga-om": "0.1.0", 511 | "yoga-postgres": "6.0.0", 512 | "yoga-tree": "1.0.0", 513 | "z3": "0.0.2" 514 | } 515 | }, 516 | "extra_packages": { 517 | "fft-js": { 518 | "git": "https://github.com/jeslie0/purescript-fft-js.git", 519 | "ref": "a1d19ae08f577b2a777613566e403b3455c5bb64" 520 | } 521 | } 522 | }, 523 | "packages": { 524 | "arrays": { 525 | "type": "registry", 526 | "version": "7.2.1", 527 | "integrity": "sha256-HCUzV3uCSt6YBI9vlt1Ott20/2JfSCUoNsd+D6ORieQ=", 528 | "dependencies": [ 529 | "bifunctors", 530 | "control", 531 | "foldable-traversable", 532 | "functions", 533 | "maybe", 534 | "nonempty", 535 | "partial", 536 | "prelude", 537 | "safe-coerce", 538 | "st", 539 | "tailrec", 540 | "tuples", 541 | "unfoldable", 542 | "unsafe-coerce" 543 | ] 544 | }, 545 | "bifunctors": { 546 | "type": "registry", 547 | "version": "6.0.0", 548 | "integrity": "sha256-/gZwC9YhNxZNQpnHa5BIYerCGM2jeX9ukZiEvYxm5Nw=", 549 | "dependencies": [ 550 | "const", 551 | "either", 552 | "newtype", 553 | "prelude", 554 | "tuples" 555 | ] 556 | }, 557 | "cartesian": { 558 | "type": "registry", 559 | "version": "1.0.6", 560 | "integrity": "sha256-zi8pKO8RRp34Toob9fiPwmSQb2uAYfCqp6HZdeVlTSE=", 561 | "dependencies": [ 562 | "console", 563 | "effect", 564 | "integers", 565 | "psci-support" 566 | ] 567 | }, 568 | "console": { 569 | "type": "registry", 570 | "version": "6.1.0", 571 | "integrity": "sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM=", 572 | "dependencies": [ 573 | "effect", 574 | "prelude" 575 | ] 576 | }, 577 | "const": { 578 | "type": "registry", 579 | "version": "6.0.0", 580 | "integrity": "sha256-tNrxDW8D8H4jdHE2HiPzpLy08zkzJMmGHdRqt5BQuTc=", 581 | "dependencies": [ 582 | "invariant", 583 | "newtype", 584 | "prelude" 585 | ] 586 | }, 587 | "contravariant": { 588 | "type": "registry", 589 | "version": "6.0.0", 590 | "integrity": "sha256-TP+ooAp3vvmdjfQsQJSichF5B4BPDHp3wAJoWchip6c=", 591 | "dependencies": [ 592 | "const", 593 | "either", 594 | "newtype", 595 | "prelude", 596 | "tuples" 597 | ] 598 | }, 599 | "control": { 600 | "type": "registry", 601 | "version": "6.0.0", 602 | "integrity": "sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk=", 603 | "dependencies": [ 604 | "newtype", 605 | "prelude" 606 | ] 607 | }, 608 | "distributive": { 609 | "type": "registry", 610 | "version": "6.0.0", 611 | "integrity": "sha256-HTDdmEnzigMl+02SJB88j+gAXDx9VKsbvR4MJGDPbOQ=", 612 | "dependencies": [ 613 | "identity", 614 | "newtype", 615 | "prelude", 616 | "tuples", 617 | "type-equality" 618 | ] 619 | }, 620 | "effect": { 621 | "type": "registry", 622 | "version": "4.0.0", 623 | "integrity": "sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M=", 624 | "dependencies": [ 625 | "prelude" 626 | ] 627 | }, 628 | "either": { 629 | "type": "registry", 630 | "version": "6.1.0", 631 | "integrity": "sha256-6hgTPisnMWVwQivOu2PKYcH8uqjEOOqDyaDQVUchTpY=", 632 | "dependencies": [ 633 | "control", 634 | "invariant", 635 | "maybe", 636 | "prelude" 637 | ] 638 | }, 639 | "exists": { 640 | "type": "registry", 641 | "version": "6.0.0", 642 | "integrity": "sha256-A0JQHpTfo1dNOj9U5/Fd3xndlRSE0g2IQWOGor2yXn8=", 643 | "dependencies": [ 644 | "unsafe-coerce" 645 | ] 646 | }, 647 | "fft-js": { 648 | "type": "git", 649 | "url": "https://github.com/jeslie0/purescript-fft-js.git", 650 | "rev": "a1d19ae08f577b2a777613566e403b3455c5bb64", 651 | "dependencies": [ 652 | "arrays", 653 | "cartesian", 654 | "partial", 655 | "prelude", 656 | "st" 657 | ] 658 | }, 659 | "foldable-traversable": { 660 | "type": "registry", 661 | "version": "6.0.0", 662 | "integrity": "sha256-fLeqRYM4jUrZD5H4WqcwUgzU7XfYkzO4zhgtNc3jcWM=", 663 | "dependencies": [ 664 | "bifunctors", 665 | "const", 666 | "control", 667 | "either", 668 | "functors", 669 | "identity", 670 | "maybe", 671 | "newtype", 672 | "orders", 673 | "prelude", 674 | "tuples" 675 | ] 676 | }, 677 | "functions": { 678 | "type": "registry", 679 | "version": "6.0.0", 680 | "integrity": "sha256-adMyJNEnhGde2unHHAP79gPtlNjNqzgLB8arEOn9hLI=", 681 | "dependencies": [ 682 | "prelude" 683 | ] 684 | }, 685 | "functors": { 686 | "type": "registry", 687 | "version": "5.0.0", 688 | "integrity": "sha256-zfPWWYisbD84MqwpJSZFlvM6v86McM68ob8p9s27ywU=", 689 | "dependencies": [ 690 | "bifunctors", 691 | "const", 692 | "contravariant", 693 | "control", 694 | "distributive", 695 | "either", 696 | "invariant", 697 | "maybe", 698 | "newtype", 699 | "prelude", 700 | "profunctor", 701 | "tuples", 702 | "unsafe-coerce" 703 | ] 704 | }, 705 | "identity": { 706 | "type": "registry", 707 | "version": "6.0.0", 708 | "integrity": "sha256-4wY0XZbAksjY6UAg99WkuKyJlQlWAfTi2ssadH0wVMY=", 709 | "dependencies": [ 710 | "control", 711 | "invariant", 712 | "newtype", 713 | "prelude" 714 | ] 715 | }, 716 | "integers": { 717 | "type": "registry", 718 | "version": "6.0.0", 719 | "integrity": "sha256-sf+sK26R1hzwl3NhXR7WAu9zCDjQnfoXwcyGoseX158=", 720 | "dependencies": [ 721 | "maybe", 722 | "numbers", 723 | "prelude" 724 | ] 725 | }, 726 | "invariant": { 727 | "type": "registry", 728 | "version": "6.0.0", 729 | "integrity": "sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo=", 730 | "dependencies": [ 731 | "control", 732 | "prelude" 733 | ] 734 | }, 735 | "maybe": { 736 | "type": "registry", 737 | "version": "6.0.0", 738 | "integrity": "sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q=", 739 | "dependencies": [ 740 | "control", 741 | "invariant", 742 | "newtype", 743 | "prelude" 744 | ] 745 | }, 746 | "newtype": { 747 | "type": "registry", 748 | "version": "5.0.0", 749 | "integrity": "sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw=", 750 | "dependencies": [ 751 | "prelude", 752 | "safe-coerce" 753 | ] 754 | }, 755 | "nonempty": { 756 | "type": "registry", 757 | "version": "7.0.0", 758 | "integrity": "sha256-54ablJZUHGvvlTJzi3oXyPCuvY6zsrWJuH/dMJ/MFLs=", 759 | "dependencies": [ 760 | "control", 761 | "foldable-traversable", 762 | "maybe", 763 | "prelude", 764 | "tuples", 765 | "unfoldable" 766 | ] 767 | }, 768 | "numbers": { 769 | "type": "registry", 770 | "version": "9.0.1", 771 | "integrity": "sha256-/9M6aeMDBdB4cwYDeJvLFprAHZ49EbtKQLIJsneXLIk=", 772 | "dependencies": [ 773 | "functions", 774 | "maybe" 775 | ] 776 | }, 777 | "orders": { 778 | "type": "registry", 779 | "version": "6.0.0", 780 | "integrity": "sha256-nBA0g3/ai0euH8q9pSbGqk53W2q6agm/dECZTHcoink=", 781 | "dependencies": [ 782 | "newtype", 783 | "prelude" 784 | ] 785 | }, 786 | "partial": { 787 | "type": "registry", 788 | "version": "4.0.0", 789 | "integrity": "sha256-fwXerld6Xw1VkReh8yeQsdtLVrjfGiVuC5bA1Wyo/J4=", 790 | "dependencies": [] 791 | }, 792 | "prelude": { 793 | "type": "registry", 794 | "version": "6.0.1", 795 | "integrity": "sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0=", 796 | "dependencies": [] 797 | }, 798 | "profunctor": { 799 | "type": "registry", 800 | "version": "6.0.0", 801 | "integrity": "sha256-99NzxFgTr4CGlCSRYG1kShL+JhYbihhHtbOk1/0R5zI=", 802 | "dependencies": [ 803 | "control", 804 | "distributive", 805 | "either", 806 | "exists", 807 | "invariant", 808 | "newtype", 809 | "prelude", 810 | "tuples" 811 | ] 812 | }, 813 | "psci-support": { 814 | "type": "registry", 815 | "version": "6.0.0", 816 | "integrity": "sha256-C6ql4P9TEP06hft/1Z5QumPA4yARR4VIxDdhmL1EO+Y=", 817 | "dependencies": [ 818 | "console", 819 | "effect", 820 | "prelude" 821 | ] 822 | }, 823 | "refs": { 824 | "type": "registry", 825 | "version": "6.0.0", 826 | "integrity": "sha256-Vgwne7jIbD3ZMoLNNETLT8Litw6lIYo3MfYNdtYWj9s=", 827 | "dependencies": [ 828 | "effect", 829 | "prelude" 830 | ] 831 | }, 832 | "safe-coerce": { 833 | "type": "registry", 834 | "version": "2.0.0", 835 | "integrity": "sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU=", 836 | "dependencies": [ 837 | "unsafe-coerce" 838 | ] 839 | }, 840 | "st": { 841 | "type": "registry", 842 | "version": "6.2.0", 843 | "integrity": "sha256-z9X0WsOUlPwNx9GlCC+YccCyz8MejC8Wb0C4+9fiBRY=", 844 | "dependencies": [ 845 | "partial", 846 | "prelude", 847 | "tailrec", 848 | "unsafe-coerce" 849 | ] 850 | }, 851 | "tailrec": { 852 | "type": "registry", 853 | "version": "6.1.0", 854 | "integrity": "sha256-Xx19ECVDRrDWpz9D2GxQHHV89vd61dnXxQm0IcYQHGk=", 855 | "dependencies": [ 856 | "bifunctors", 857 | "effect", 858 | "either", 859 | "identity", 860 | "maybe", 861 | "partial", 862 | "prelude", 863 | "refs" 864 | ] 865 | }, 866 | "tuples": { 867 | "type": "registry", 868 | "version": "7.0.0", 869 | "integrity": "sha256-1rXgTomes9105BjgXqIw0FL6Fz1lqqUTLWOumhWec1M=", 870 | "dependencies": [ 871 | "control", 872 | "invariant", 873 | "prelude" 874 | ] 875 | }, 876 | "type-equality": { 877 | "type": "registry", 878 | "version": "4.0.1", 879 | "integrity": "sha256-Hs9D6Y71zFi/b+qu5NSbuadUQXe5iv5iWx0226vOHUw=", 880 | "dependencies": [] 881 | }, 882 | "unfoldable": { 883 | "type": "registry", 884 | "version": "6.0.0", 885 | "integrity": "sha256-JtikvJdktRap7vr/K4ITlxUX1QexpnqBq0G/InLr6eg=", 886 | "dependencies": [ 887 | "foldable-traversable", 888 | "maybe", 889 | "partial", 890 | "prelude", 891 | "tuples" 892 | ] 893 | }, 894 | "unsafe-coerce": { 895 | "type": "registry", 896 | "version": "6.0.0", 897 | "integrity": "sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0=", 898 | "dependencies": [] 899 | } 900 | } 901 | } 902 | -------------------------------------------------------------------------------- /tests/mkDotSpago/spago.yaml: -------------------------------------------------------------------------------- 1 | package: 2 | name: remote-package-test 3 | dependencies: 4 | - console 5 | - effect 6 | - fft-js 7 | - prelude 8 | - maybe: "*" 9 | workspace: 10 | packageSet: 11 | registry: 43.1.0 12 | extraPackages: 13 | fft-js: 14 | git: "https://github.com/jeslie0/purescript-fft-js.git" 15 | ref: "a1d19ae08f577b2a777613566e403b3455c5bb64" 16 | -------------------------------------------------------------------------------- /tests/mkDotSpago/src/Main.purs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Prelude 4 | 5 | import Effect (Effect) 6 | import Effect.Console (logShow) 7 | import FFT 8 | 9 | fft = makeFFT 4 10 | 11 | main :: Effect Unit 12 | main = do 13 | logShow $ realTransform fft $ RealArray [1.0,2.0,3.0,4.0] 14 | -------------------------------------------------------------------------------- /tests/monorepo/.gitignore: -------------------------------------------------------------------------------- 1 | output 2 | .spago -------------------------------------------------------------------------------- /tests/monorepo/Main/spago.yaml: -------------------------------------------------------------------------------- 1 | package: 2 | dependencies: 3 | - console 4 | - effect 5 | - prelude 6 | name: main 7 | -------------------------------------------------------------------------------- /tests/monorepo/Main/src/Main.purs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Prelude 4 | import Effect.Console as Console 5 | 6 | main = do 7 | Console.log "Lib2" 8 | -------------------------------------------------------------------------------- /tests/monorepo/lib1/spago.yaml: -------------------------------------------------------------------------------- 1 | package: 2 | dependencies: 3 | - console 4 | - effect 5 | - prelude 6 | name: lib1 7 | -------------------------------------------------------------------------------- /tests/monorepo/lib1/src/Lib1.purs: -------------------------------------------------------------------------------- 1 | module Lib1 where 2 | 3 | import Effect.Console as Console 4 | 5 | main = Console.log "hi" 6 | -------------------------------------------------------------------------------- /tests/monorepo/monorepo.nix: -------------------------------------------------------------------------------- 1 | { mkSpagoDerivation, esbuild, spago, purs }: 2 | mkSpagoDerivation { 3 | name = "monorepo-test"; 4 | version = "0.1.0"; 5 | src = ./.; 6 | spagoLock = ./spago.lock; 7 | nativeBuildInputs = [ esbuild spago purs ]; 8 | buildPhase = "spago bundle -p main"; 9 | installPhase = "mkdir $out; cp Main/index.js $out"; 10 | } 11 | -------------------------------------------------------------------------------- /tests/monorepo/spago.lock: -------------------------------------------------------------------------------- 1 | { 2 | "workspace": { 3 | "packages": { 4 | "lib1": { 5 | "path": "lib1", 6 | "core": { 7 | "dependencies": [ 8 | "console", 9 | "effect", 10 | "prelude" 11 | ], 12 | "build_plan": [ 13 | "console", 14 | "effect", 15 | "prelude" 16 | ] 17 | }, 18 | "test": { 19 | "dependencies": [], 20 | "build_plan": [] 21 | } 22 | }, 23 | "main": { 24 | "path": "Main", 25 | "core": { 26 | "dependencies": [ 27 | "console", 28 | "effect", 29 | "prelude" 30 | ], 31 | "build_plan": [ 32 | "console", 33 | "effect", 34 | "prelude" 35 | ] 36 | }, 37 | "test": { 38 | "dependencies": [], 39 | "build_plan": [] 40 | } 41 | } 42 | }, 43 | "package_set": { 44 | "address": { 45 | "registry": "43.3.0" 46 | }, 47 | "compiler": ">=0.15.10 <0.16.0", 48 | "content": { 49 | "abc-parser": "2.0.1", 50 | "ace": "9.1.0", 51 | "aff": "7.1.0", 52 | "aff-bus": "6.0.0", 53 | "aff-coroutines": "9.0.0", 54 | "aff-promise": "4.0.0", 55 | "aff-retry": "2.0.0", 56 | "affjax": "13.0.0", 57 | "affjax-node": "1.0.0", 58 | "affjax-web": "1.0.0", 59 | "ansi": "7.0.0", 60 | "applicative-phases": "1.0.0", 61 | "argonaut": "9.0.0", 62 | "argonaut-aeson-generic": "0.4.1", 63 | "argonaut-codecs": "9.1.0", 64 | "argonaut-core": "7.0.0", 65 | "argonaut-generic": "8.0.0", 66 | "argonaut-traversals": "10.0.0", 67 | "argparse-basic": "2.0.0", 68 | "array-builder": "0.1.2", 69 | "array-search": "0.5.6", 70 | "arraybuffer": "13.2.0", 71 | "arraybuffer-builder": "3.1.0", 72 | "arraybuffer-types": "3.0.2", 73 | "arrays": "7.2.1", 74 | "arrays-extra": "0.4.1", 75 | "arrays-zipper": "2.0.1", 76 | "ask": "1.0.0", 77 | "assert": "6.0.0", 78 | "assert-multiple": "0.3.4", 79 | "avar": "5.0.0", 80 | "b64": "0.0.8", 81 | "barbies": "1.0.1", 82 | "barlow-lens": "0.9.0", 83 | "bifunctors": "6.0.0", 84 | "bigints": "7.0.1", 85 | "bolson": "0.3.9", 86 | "bookhound": "0.1.3", 87 | "bower-json": "3.0.0", 88 | "call-by-name": "4.0.1", 89 | "canvas": "6.0.0", 90 | "canvas-action": "9.0.0", 91 | "cartesian": "1.0.6", 92 | "catenable-lists": "7.0.0", 93 | "chameleon": "1.0.0", 94 | "chameleon-halogen": "1.0.3", 95 | "chameleon-react-basic": "1.1.0", 96 | "chameleon-styled": "2.5.0", 97 | "chameleon-transformers": "1.0.0", 98 | "channel": "1.0.0", 99 | "checked-exceptions": "3.1.1", 100 | "classless": "0.1.1", 101 | "classless-arbitrary": "0.1.1", 102 | "classless-decode-json": "0.1.1", 103 | "classless-encode-json": "0.1.3", 104 | "classnames": "2.0.0", 105 | "codec": "6.1.0", 106 | "codec-argonaut": "10.0.0", 107 | "codec-json": "1.0.0", 108 | "colors": "7.0.1", 109 | "concur-core": "0.5.0", 110 | "concur-react": "0.5.0", 111 | "concurrent-queues": "3.0.0", 112 | "console": "6.1.0", 113 | "const": "6.0.0", 114 | "contravariant": "6.0.0", 115 | "control": "6.0.0", 116 | "convertable-options": "1.0.0", 117 | "coroutines": "7.0.0", 118 | "css": "6.0.0", 119 | "css-frameworks": "1.0.1", 120 | "data-mvc": "0.0.2", 121 | "datetime": "6.1.0", 122 | "datetime-parsing": "0.2.0", 123 | "debug": "6.0.2", 124 | "decimals": "7.1.0", 125 | "default-values": "1.0.1", 126 | "deku": "0.9.23", 127 | "deno": "0.0.5", 128 | "dissect": "1.0.0", 129 | "distributive": "6.0.0", 130 | "dom-filereader": "7.0.0", 131 | "dom-indexed": "12.0.0", 132 | "dotenv": "4.0.3", 133 | "droplet": "0.6.0", 134 | "dts": "0.2.0", 135 | "dual-numbers": "1.0.2", 136 | "dynamic-buffer": "3.0.1", 137 | "echarts-simple": "0.0.1", 138 | "effect": "4.0.0", 139 | "either": "6.1.0", 140 | "elmish": "0.10.0", 141 | "elmish-enzyme": "0.1.1", 142 | "elmish-hooks": "0.10.0", 143 | "elmish-html": "0.8.1", 144 | "elmish-testing-library": "0.3.1", 145 | "email-validate": "7.0.0", 146 | "encoding": "0.0.8", 147 | "enums": "6.0.1", 148 | "env-names": "0.3.4", 149 | "error": "2.0.0", 150 | "exceptions": "6.0.0", 151 | "exists": "6.0.0", 152 | "exitcodes": "4.0.0", 153 | "expect-inferred": "3.0.0", 154 | "fahrtwind": "2.0.0", 155 | "fallback": "0.1.0", 156 | "fast-vect": "1.1.0", 157 | "fetch": "3.0.0", 158 | "fetch-argonaut": "1.0.1", 159 | "fetch-core": "5.1.0", 160 | "fetch-yoga-json": "1.1.0", 161 | "filterable": "5.0.0", 162 | "fix-functor": "0.1.0", 163 | "fixed-points": "7.0.0", 164 | "fixed-precision": "5.0.0", 165 | "flame": "1.3.0", 166 | "float32": "2.0.0", 167 | "fmt": "0.2.1", 168 | "foldable-traversable": "6.0.0", 169 | "foreign": "7.0.0", 170 | "foreign-object": "4.1.0", 171 | "foreign-readwrite": "3.4.0", 172 | "forgetmenot": "0.1.0", 173 | "fork": "6.0.0", 174 | "form-urlencoded": "7.0.0", 175 | "formatters": "7.0.0", 176 | "framer-motion": "1.0.1", 177 | "free": "7.1.0", 178 | "freeap": "7.0.0", 179 | "freer-free": "0.0.1", 180 | "freet": "7.0.0", 181 | "functions": "6.0.0", 182 | "functor1": "3.0.0", 183 | "functors": "5.0.0", 184 | "fuzzy": "0.4.0", 185 | "gen": "4.0.0", 186 | "generate-values": "1.0.1", 187 | "generic-router": "0.0.1", 188 | "geojson": "0.0.5", 189 | "geometry-plane": "1.0.3", 190 | "grain": "3.0.0", 191 | "grain-router": "3.0.0", 192 | "grain-virtualized": "3.0.0", 193 | "graphs": "8.1.0", 194 | "group": "4.1.1", 195 | "halogen": "7.0.0", 196 | "halogen-bootstrap5": "2.2.0", 197 | "halogen-css": "10.0.0", 198 | "halogen-echarts-simple": "0.0.4", 199 | "halogen-formless": "4.0.3", 200 | "halogen-helix": "1.0.0", 201 | "halogen-hooks": "0.6.3", 202 | "halogen-hooks-extra": "0.9.0", 203 | "halogen-store": "0.5.4", 204 | "halogen-storybook": "2.0.0", 205 | "halogen-subscriptions": "2.0.0", 206 | "halogen-svg-elems": "8.0.0", 207 | "halogen-typewriter": "1.0.2", 208 | "halogen-vdom": "8.0.0", 209 | "halogen-vdom-string-renderer": "0.5.0", 210 | "heckin": "2.0.1", 211 | "heterogeneous": "0.6.0", 212 | "homogeneous": "0.4.0", 213 | "http-methods": "6.0.0", 214 | "httpurple": "4.0.0", 215 | "humdrum": "0.0.1", 216 | "hyrule": "2.3.8", 217 | "identity": "6.0.0", 218 | "identy": "4.0.1", 219 | "indexed-db": "1.0.0", 220 | "indexed-monad": "3.0.0", 221 | "int64": "3.0.0", 222 | "integers": "6.0.0", 223 | "interpolate": "5.0.2", 224 | "invariant": "6.0.0", 225 | "jarilo": "1.0.1", 226 | "jelly": "0.10.0", 227 | "jelly-router": "0.3.0", 228 | "jelly-signal": "0.4.0", 229 | "jest": "1.0.0", 230 | "js-abort-controller": "1.0.0", 231 | "js-bigints": "2.2.1", 232 | "js-date": "8.0.0", 233 | "js-fileio": "3.0.0", 234 | "js-intl": "1.0.4", 235 | "js-iterators": "0.1.1", 236 | "js-maps": "0.1.2", 237 | "js-promise": "1.0.0", 238 | "js-promise-aff": "1.0.0", 239 | "js-timers": "6.1.0", 240 | "js-uri": "3.1.0", 241 | "json": "1.0.0", 242 | "json-codecs": "5.0.0", 243 | "justifill": "0.5.0", 244 | "jwt": "0.0.9", 245 | "labeled-data": "0.2.0", 246 | "lazy": "6.0.0", 247 | "lazy-joe": "1.0.0", 248 | "lcg": "4.0.0", 249 | "leibniz": "5.0.0", 250 | "liminal": "1.0.1", 251 | "linalg": "6.0.0", 252 | "lists": "7.0.0", 253 | "literals": "1.0.2", 254 | "logging": "3.0.0", 255 | "logging-journald": "0.4.0", 256 | "machines": "7.0.0", 257 | "maps-eager": "0.4.1", 258 | "marionette": "1.0.0", 259 | "marionette-react-basic-hooks": "0.1.1", 260 | "matrices": "5.0.1", 261 | "matryoshka": "1.0.0", 262 | "maybe": "6.0.0", 263 | "media-types": "6.0.0", 264 | "midi": "4.0.0", 265 | "milkis": "9.0.0", 266 | "minibench": "4.0.1", 267 | "mmorph": "7.0.0", 268 | "monad-control": "5.0.0", 269 | "monad-logger": "1.3.1", 270 | "monad-loops": "0.5.0", 271 | "monad-unlift": "1.0.1", 272 | "monoid-extras": "0.0.1", 273 | "monoidal": "0.16.0", 274 | "morello": "0.4.0", 275 | "mote": "3.0.0", 276 | "motsunabe": "2.0.0", 277 | "mvc": "0.0.1", 278 | "mysql": "6.0.1", 279 | "n3": "0.1.0", 280 | "nano-id": "1.1.0", 281 | "nanoid": "0.1.0", 282 | "naturals": "3.0.0", 283 | "nested-functor": "0.2.1", 284 | "newtype": "5.0.0", 285 | "nextjs": "0.1.1", 286 | "nextui": "0.2.0", 287 | "node-buffer": "9.0.0", 288 | "node-child-process": "11.0.0", 289 | "node-event-emitter": "3.0.0", 290 | "node-execa": "4.0.1", 291 | "node-fs": "9.1.0", 292 | "node-http": "9.1.0", 293 | "node-http2": "1.1.1", 294 | "node-human-signals": "1.0.0", 295 | "node-net": "5.1.0", 296 | "node-os": "5.1.0", 297 | "node-path": "5.0.0", 298 | "node-process": "11.2.0", 299 | "node-readline": "8.1.0", 300 | "node-sqlite3": "8.0.0", 301 | "node-streams": "9.0.0", 302 | "node-tls": "0.3.1", 303 | "node-url": "7.0.1", 304 | "node-zlib": "0.4.0", 305 | "nonempty": "7.0.0", 306 | "now": "6.0.0", 307 | "npm-package-json": "2.0.0", 308 | "nullable": "6.0.0", 309 | "numberfield": "0.1.0", 310 | "numbers": "9.0.1", 311 | "oak": "3.1.1", 312 | "oak-debug": "1.2.2", 313 | "object-maps": "0.3.0", 314 | "ocarina": "1.5.4", 315 | "open-folds": "6.3.0", 316 | "open-memoize": "6.1.0", 317 | "open-pairing": "6.1.0", 318 | "options": "7.0.0", 319 | "ordered-collections": "3.1.1", 320 | "ordered-set": "0.4.0", 321 | "orders": "6.0.0", 322 | "pairs": "9.0.1", 323 | "parallel": "7.0.0", 324 | "parsing": "10.2.0", 325 | "parsing-dataview": "3.2.4", 326 | "partial": "4.0.0", 327 | "pathy": "9.0.0", 328 | "pha": "0.11.0", 329 | "phaser": "0.7.0", 330 | "phylio": "1.1.2", 331 | "pipes": "8.0.0", 332 | "pirates-charm": "0.0.1", 333 | "pmock": "0.6.0", 334 | "point-free": "1.0.0", 335 | "pointed-list": "0.5.1", 336 | "polymorphic-vectors": "4.0.0", 337 | "posix-types": "6.0.0", 338 | "precise": "6.0.0", 339 | "precise-datetime": "7.0.0", 340 | "prelude": "6.0.1", 341 | "prettier-printer": "3.0.0", 342 | "profunctor": "6.0.0", 343 | "profunctor-lenses": "8.0.0", 344 | "protobuf": "4.3.0", 345 | "psa-utils": "8.0.0", 346 | "psci-support": "6.0.0", 347 | "qualified-do": "2.2.0", 348 | "quantities": "12.2.0", 349 | "quickcheck": "8.0.1", 350 | "quickcheck-combinators": "0.1.3", 351 | "quickcheck-laws": "7.0.0", 352 | "quickcheck-utf8": "0.0.0", 353 | "random": "6.0.0", 354 | "rationals": "6.0.0", 355 | "rdf": "0.1.0", 356 | "react": "11.0.0", 357 | "react-aria": "0.2.0", 358 | "react-basic": "17.0.0", 359 | "react-basic-classic": "3.0.0", 360 | "react-basic-dnd": "10.1.0", 361 | "react-basic-dom": "6.1.0", 362 | "react-basic-emotion": "7.1.0", 363 | "react-basic-hooks": "8.2.0", 364 | "react-basic-storybook": "2.0.0", 365 | "react-dom": "8.0.0", 366 | "react-halo": "3.0.0", 367 | "react-icons": "1.1.1", 368 | "react-markdown": "0.1.0", 369 | "react-testing-library": "4.0.1", 370 | "react-virtuoso": "1.0.0", 371 | "read": "1.0.1", 372 | "recharts": "1.1.0", 373 | "record": "4.0.0", 374 | "record-extra": "5.0.1", 375 | "record-studio": "1.0.4", 376 | "refs": "6.0.0", 377 | "remotedata": "5.0.0", 378 | "resource": "2.0.1", 379 | "resourcet": "1.0.0", 380 | "result": "1.0.3", 381 | "return": "0.2.0", 382 | "ring-modules": "5.0.1", 383 | "rito": "0.3.4", 384 | "routing": "11.0.0", 385 | "routing-duplex": "0.7.0", 386 | "run": "5.0.0", 387 | "safe-coerce": "2.0.0", 388 | "safely": "4.0.1", 389 | "school-of-music": "1.3.0", 390 | "selection-foldable": "0.2.0", 391 | "selective-functors": "1.0.1", 392 | "semirings": "7.0.0", 393 | "signal": "13.0.0", 394 | "simple-emitter": "3.0.1", 395 | "simple-i18n": "2.0.1", 396 | "simple-json": "9.0.0", 397 | "simple-ulid": "3.0.0", 398 | "sized-matrices": "1.0.0", 399 | "sized-vectors": "5.0.2", 400 | "slug": "3.0.8", 401 | "small-ffi": "4.0.1", 402 | "soundfonts": "4.1.0", 403 | "sparse-matrices": "1.3.0", 404 | "sparse-polynomials": "2.0.5", 405 | "spec": "7.5.5", 406 | "spec-mocha": "5.0.0", 407 | "spec-quickcheck": "5.0.0", 408 | "splitmix": "2.1.0", 409 | "ssrs": "1.0.0", 410 | "st": "6.2.0", 411 | "statistics": "0.3.2", 412 | "strictlypositiveint": "1.0.1", 413 | "string-parsers": "8.0.0", 414 | "strings": "6.0.1", 415 | "strings-extra": "4.0.0", 416 | "stringutils": "0.0.12", 417 | "substitute": "0.2.3", 418 | "supply": "0.2.0", 419 | "svg-parser": "3.0.0", 420 | "systemd-journald": "0.3.0", 421 | "tagged": "4.0.2", 422 | "tailrec": "6.1.0", 423 | "tecton": "0.2.1", 424 | "tecton-halogen": "0.2.0", 425 | "test-unit": "17.0.0", 426 | "thermite": "6.3.1", 427 | "thermite-dom": "0.3.1", 428 | "these": "6.0.0", 429 | "transformation-matrix": "1.0.1", 430 | "transformers": "6.0.0", 431 | "tree-rose": "4.0.2", 432 | "tuples": "7.0.0", 433 | "two-or-more": "1.0.0", 434 | "type-equality": "4.0.1", 435 | "typedenv": "2.0.1", 436 | "typelevel": "6.0.0", 437 | "typelevel-lists": "2.1.0", 438 | "typelevel-peano": "1.0.1", 439 | "typelevel-prelude": "7.0.0", 440 | "typelevel-regex": "0.0.3", 441 | "typelevel-rows": "0.1.0", 442 | "uint": "7.0.0", 443 | "ulid": "3.0.1", 444 | "uncurried-transformers": "1.1.0", 445 | "undefined": "2.0.0", 446 | "undefined-is-not-a-problem": "1.1.0", 447 | "unfoldable": "6.0.0", 448 | "unicode": "6.0.0", 449 | "unique": "0.6.1", 450 | "unlift": "1.0.1", 451 | "unordered-collections": "3.0.1", 452 | "unsafe-coerce": "6.0.0", 453 | "unsafe-reference": "5.0.0", 454 | "untagged-to-tagged": "0.1.4", 455 | "untagged-union": "1.0.0", 456 | "uri": "9.0.0", 457 | "uuid": "9.0.0", 458 | "uuidv4": "1.0.0", 459 | "validation": "6.0.0", 460 | "variant": "8.0.0", 461 | "variant-encodings": "2.0.0", 462 | "vectorfield": "1.0.1", 463 | "vectors": "2.1.0", 464 | "versions": "7.0.0", 465 | "visx": "0.0.2", 466 | "web-clipboard": "5.0.0", 467 | "web-cssom": "2.0.0", 468 | "web-cssom-view": "0.1.0", 469 | "web-dom": "6.0.0", 470 | "web-dom-parser": "8.0.0", 471 | "web-dom-xpath": "3.0.0", 472 | "web-encoding": "3.0.0", 473 | "web-events": "4.0.0", 474 | "web-fetch": "4.0.1", 475 | "web-file": "4.0.0", 476 | "web-geometry": "0.1.0", 477 | "web-html": "4.1.0", 478 | "web-pointerevents": "1.0.0", 479 | "web-proletarian": "1.0.0", 480 | "web-resize-observer": "2.0.0", 481 | "web-router": "1.0.0", 482 | "web-socket": "4.0.0", 483 | "web-storage": "5.0.0", 484 | "web-streams": "4.0.0", 485 | "web-touchevents": "4.0.0", 486 | "web-uievents": "5.0.0", 487 | "web-url": "2.0.0", 488 | "web-workers": "1.1.0", 489 | "web-xhr": "5.0.1", 490 | "webextension-polyfill": "0.1.0", 491 | "webgpu": "0.0.1", 492 | "which": "2.0.0", 493 | "yoga-fetch": "1.0.1", 494 | "yoga-json": "5.1.0", 495 | "yoga-om": "0.1.0", 496 | "yoga-postgres": "6.0.0", 497 | "yoga-tree": "1.0.0", 498 | "z3": "0.0.2" 499 | } 500 | }, 501 | "extra_packages": {} 502 | }, 503 | "packages": { 504 | "console": { 505 | "type": "registry", 506 | "version": "6.1.0", 507 | "integrity": "sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM=", 508 | "dependencies": [ 509 | "effect", 510 | "prelude" 511 | ] 512 | }, 513 | "effect": { 514 | "type": "registry", 515 | "version": "4.0.0", 516 | "integrity": "sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M=", 517 | "dependencies": [ 518 | "prelude" 519 | ] 520 | }, 521 | "prelude": { 522 | "type": "registry", 523 | "version": "6.0.1", 524 | "integrity": "sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0=", 525 | "dependencies": [] 526 | } 527 | } 528 | } 529 | -------------------------------------------------------------------------------- /tests/monorepo/spago.yaml: -------------------------------------------------------------------------------- 1 | workspace: 2 | extraPackages: {} 3 | packageSet: 4 | registry: 43.3.0 5 | -------------------------------------------------------------------------------- /tests/nodeModulesTest/nodeModulesTest.nix: -------------------------------------------------------------------------------- 1 | { pkgs, self, mkSpagoDerivation, purs, spago, esbuild, nodejs }: 2 | mkSpagoDerivation { 3 | pname = "use-node-modules-test"; 4 | version = "0.1.0"; 5 | src = ./.; 6 | nativeBuildInputs = [ purs spago esbuild ]; 7 | spagoYaml = ./spago.yaml; 8 | spagoLock = ./spago.lock; 9 | buildPhase = "spago bundle"; 10 | installPhase = "mkdir $out; cp index.js $out"; 11 | buildNodeModulesArgs = { 12 | inherit nodejs; 13 | npmRoot = ./.; 14 | }; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /tests/nodeModulesTest/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodemodulestest", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "nodemodulestest", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "apexcharts": "^4.7.0" 13 | } 14 | }, 15 | "node_modules/@svgdotjs/svg.draggable.js": { 16 | "version": "3.0.6", 17 | "resolved": "https://registry.npmjs.org/@svgdotjs/svg.draggable.js/-/svg.draggable.js-3.0.6.tgz", 18 | "integrity": "sha512-7iJFm9lL3C40HQcqzEfezK2l+dW2CpoVY3b77KQGqc8GXWa6LhhmX5Ckv7alQfUXBuZbjpICZ+Dvq1czlGx7gA==", 19 | "license": "MIT", 20 | "peerDependencies": { 21 | "@svgdotjs/svg.js": "^3.2.4" 22 | } 23 | }, 24 | "node_modules/@svgdotjs/svg.filter.js": { 25 | "version": "3.0.9", 26 | "resolved": "https://registry.npmjs.org/@svgdotjs/svg.filter.js/-/svg.filter.js-3.0.9.tgz", 27 | "integrity": "sha512-/69XMRCDoam2HgC4ldHIaDgeQf1ViHIsa0Ld4uWgiXtZ+E24DWHe/9Ib6kbNiZ7WRIdlVokUDR1Fg0kjIpkfbw==", 28 | "license": "MIT", 29 | "dependencies": { 30 | "@svgdotjs/svg.js": "^3.2.4" 31 | }, 32 | "engines": { 33 | "node": ">= 0.8.0" 34 | } 35 | }, 36 | "node_modules/@svgdotjs/svg.js": { 37 | "version": "3.2.4", 38 | "resolved": "https://registry.npmjs.org/@svgdotjs/svg.js/-/svg.js-3.2.4.tgz", 39 | "integrity": "sha512-BjJ/7vWNowlX3Z8O4ywT58DqbNRyYlkk6Yz/D13aB7hGmfQTvGX4Tkgtm/ApYlu9M7lCQi15xUEidqMUmdMYwg==", 40 | "license": "MIT", 41 | "funding": { 42 | "type": "github", 43 | "url": "https://github.com/sponsors/Fuzzyma" 44 | } 45 | }, 46 | "node_modules/@svgdotjs/svg.resize.js": { 47 | "version": "2.0.5", 48 | "resolved": "https://registry.npmjs.org/@svgdotjs/svg.resize.js/-/svg.resize.js-2.0.5.tgz", 49 | "integrity": "sha512-4heRW4B1QrJeENfi7326lUPYBCevj78FJs8kfeDxn5st0IYPIRXoTtOSYvTzFWgaWWXd3YCDE6ao4fmv91RthA==", 50 | "license": "MIT", 51 | "engines": { 52 | "node": ">= 14.18" 53 | }, 54 | "peerDependencies": { 55 | "@svgdotjs/svg.js": "^3.2.4", 56 | "@svgdotjs/svg.select.js": "^4.0.1" 57 | } 58 | }, 59 | "node_modules/@svgdotjs/svg.select.js": { 60 | "version": "4.0.2", 61 | "resolved": "https://registry.npmjs.org/@svgdotjs/svg.select.js/-/svg.select.js-4.0.2.tgz", 62 | "integrity": "sha512-5gWdrvoQX3keo03SCmgaBbD+kFftq0F/f2bzCbNnpkkvW6tk4rl4MakORzFuNjvXPWwB4az9GwuvVxQVnjaK2g==", 63 | "license": "MIT", 64 | "engines": { 65 | "node": ">= 14.18" 66 | }, 67 | "peerDependencies": { 68 | "@svgdotjs/svg.js": "^3.2.4" 69 | } 70 | }, 71 | "node_modules/@yr/monotone-cubic-spline": { 72 | "version": "1.0.3", 73 | "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", 74 | "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==", 75 | "license": "MIT" 76 | }, 77 | "node_modules/apexcharts": { 78 | "version": "4.7.0", 79 | "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-4.7.0.tgz", 80 | "integrity": "sha512-iZSrrBGvVlL+nt2B1NpqfDuBZ9jX61X9I2+XV0hlYXHtTwhwLTHDKGXjNXAgFBDLuvSYCB/rq2nPWVPRv2DrGA==", 81 | "license": "MIT", 82 | "dependencies": { 83 | "@svgdotjs/svg.draggable.js": "^3.0.4", 84 | "@svgdotjs/svg.filter.js": "^3.0.8", 85 | "@svgdotjs/svg.js": "^3.2.4", 86 | "@svgdotjs/svg.resize.js": "^2.0.2", 87 | "@svgdotjs/svg.select.js": "^4.0.1", 88 | "@yr/monotone-cubic-spline": "^1.0.3" 89 | } 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /tests/nodeModulesTest/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodemodulestest", 3 | "version": "1.0.0", 4 | "description": "Test to build node modules", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "apexcharts": "^4.7.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tests/nodeModulesTest/spago.yaml: -------------------------------------------------------------------------------- 1 | package: 2 | name: local-package-test 3 | dependencies: 4 | - apexcharts 5 | - prelude 6 | workspace: 7 | packageSet: 8 | registry: 55.1.0 9 | extraPackages: 10 | apexcharts: 11 | git: "https://github.com/jeslie0/purescript-apexcharts" 12 | ref: "6ff396a08e5ec59b8fd8221942ad684af67be282" 13 | -------------------------------------------------------------------------------- /tests/nodeModulesTest/src/Main.purs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Prelude 4 | 5 | import Apexcharts (render, createChart) 6 | import Apexcharts.Chart (chart, type') 7 | import Apexcharts.Common (ChartType(..)) 8 | import Apexcharts.Series (series,name, data' ) 9 | import Apexcharts.Xaxis (xaxis, categories) 10 | import Data.Options ((:=)) 11 | import Effect (Effect) 12 | 13 | main :: Effect Unit 14 | main = 15 | let myChart = ( 16 | chart := (type' := Bar) 17 | <> series := [ 18 | name := "sales" 19 | <> data' := [30,40,35,50,49,60,70,91,125] 20 | ] 21 | <> xaxis := ( 22 | categories := [1991,1992,1993,1994,1995,1996,1997,1998,1999] 23 | ) 24 | ) 25 | 26 | in createChart "#chart" myChart >>= render 27 | -------------------------------------------------------------------------------- /tests/registry-esbuild/.gitignore: -------------------------------------------------------------------------------- 1 | output 2 | .spago -------------------------------------------------------------------------------- /tests/registry-esbuild/registry-esbuild.nix: -------------------------------------------------------------------------------- 1 | { mkSpagoDerivation, esbuild, purs-backend-es, spago, purs }: 2 | mkSpagoDerivation { 3 | spagoYaml = ./spago.yaml; 4 | src = ./.; 5 | pname = "registry-esbuild-test"; 6 | version = "0.1.0"; 7 | nativeBuildInputs = [ esbuild spago purs purs-backend-es ]; 8 | buildPhase = "spago build && purs-backend-es bundle-app --no-build --minify --to=main.min.js"; 9 | installPhase = "mkdir $out; cp -r main.min.js $out"; 10 | } 11 | -------------------------------------------------------------------------------- /tests/registry-esbuild/spago.lock: -------------------------------------------------------------------------------- 1 | { 2 | "workspace": { 3 | "packages": { 4 | "registry-test": { 5 | "path": "./", 6 | "core": { 7 | "dependencies": [ 8 | "console", 9 | "effect", 10 | { 11 | "maybe": "*" 12 | }, 13 | "prelude" 14 | ], 15 | "build_plan": [ 16 | "console", 17 | "control", 18 | "effect", 19 | "invariant", 20 | "maybe", 21 | "newtype", 22 | "prelude", 23 | "safe-coerce", 24 | "unsafe-coerce" 25 | ] 26 | }, 27 | "test": { 28 | "dependencies": [], 29 | "build_plan": [] 30 | } 31 | } 32 | }, 33 | "package_set": { 34 | "address": { 35 | "registry": "43.1.0" 36 | }, 37 | "compiler": ">=0.15.10 <0.16.0", 38 | "content": { 39 | "abc-parser": "2.0.1", 40 | "ace": "9.1.0", 41 | "aff": "7.1.0", 42 | "aff-bus": "6.0.0", 43 | "aff-coroutines": "9.0.0", 44 | "aff-promise": "4.0.0", 45 | "aff-retry": "2.0.0", 46 | "affjax": "13.0.0", 47 | "affjax-node": "1.0.0", 48 | "affjax-web": "1.0.0", 49 | "ansi": "7.0.0", 50 | "applicative-phases": "1.0.0", 51 | "argonaut": "9.0.0", 52 | "argonaut-aeson-generic": "0.4.1", 53 | "argonaut-codecs": "9.1.0", 54 | "argonaut-core": "7.0.0", 55 | "argonaut-generic": "8.0.0", 56 | "argonaut-traversals": "10.0.0", 57 | "argparse-basic": "2.0.0", 58 | "array-builder": "0.1.2", 59 | "array-search": "0.5.6", 60 | "arraybuffer": "13.2.0", 61 | "arraybuffer-builder": "3.1.0", 62 | "arraybuffer-types": "3.0.2", 63 | "arrays": "7.2.1", 64 | "arrays-extra": "0.4.1", 65 | "arrays-zipper": "2.0.1", 66 | "ask": "1.0.0", 67 | "assert": "6.0.0", 68 | "assert-multiple": "0.3.4", 69 | "avar": "5.0.0", 70 | "b64": "0.0.8", 71 | "barbies": "1.0.1", 72 | "barlow-lens": "0.9.0", 73 | "bifunctors": "6.0.0", 74 | "bigints": "7.0.1", 75 | "bolson": "0.3.9", 76 | "bookhound": "0.1.3", 77 | "bower-json": "3.0.0", 78 | "call-by-name": "4.0.1", 79 | "canvas": "6.0.0", 80 | "canvas-action": "9.0.0", 81 | "cartesian": "1.0.6", 82 | "catenable-lists": "7.0.0", 83 | "chameleon": "1.0.0", 84 | "chameleon-halogen": "1.0.3", 85 | "chameleon-react-basic": "1.1.0", 86 | "chameleon-styled": "2.5.0", 87 | "chameleon-transformers": "1.0.0", 88 | "channel": "1.0.0", 89 | "checked-exceptions": "3.1.1", 90 | "classless": "0.1.1", 91 | "classless-arbitrary": "0.1.1", 92 | "classless-decode-json": "0.1.1", 93 | "classless-encode-json": "0.1.3", 94 | "classnames": "2.0.0", 95 | "codec": "6.0.0", 96 | "codec-argonaut": "10.0.0", 97 | "colors": "7.0.1", 98 | "concur-core": "0.5.0", 99 | "concur-react": "0.5.0", 100 | "concurrent-queues": "3.0.0", 101 | "console": "6.1.0", 102 | "const": "6.0.0", 103 | "contravariant": "6.0.0", 104 | "control": "6.0.0", 105 | "convertable-options": "1.0.0", 106 | "coroutines": "7.0.0", 107 | "css": "6.0.0", 108 | "css-frameworks": "1.0.1", 109 | "data-mvc": "0.0.2", 110 | "datetime": "6.1.0", 111 | "datetime-parsing": "0.2.0", 112 | "debug": "6.0.2", 113 | "decimals": "7.1.0", 114 | "default-values": "1.0.1", 115 | "deku": "0.9.23", 116 | "deno": "0.0.5", 117 | "dissect": "1.0.0", 118 | "distributive": "6.0.0", 119 | "dom-filereader": "7.0.0", 120 | "dom-indexed": "12.0.0", 121 | "dotenv": "4.0.3", 122 | "droplet": "0.6.0", 123 | "dts": "0.2.0", 124 | "dual-numbers": "1.0.2", 125 | "dynamic-buffer": "3.0.1", 126 | "echarts-simple": "0.0.1", 127 | "effect": "4.0.0", 128 | "either": "6.1.0", 129 | "elmish": "0.10.0", 130 | "elmish-enzyme": "0.1.1", 131 | "elmish-hooks": "0.10.0", 132 | "elmish-html": "0.8.1", 133 | "elmish-testing-library": "0.3.1", 134 | "email-validate": "7.0.0", 135 | "encoding": "0.0.8", 136 | "enums": "6.0.1", 137 | "env-names": "0.3.4", 138 | "error": "2.0.0", 139 | "exceptions": "6.0.0", 140 | "exists": "6.0.0", 141 | "exitcodes": "4.0.0", 142 | "expect-inferred": "3.0.0", 143 | "fahrtwind": "2.0.0", 144 | "fallback": "0.1.0", 145 | "fast-vect": "1.1.0", 146 | "fetch": "3.0.0", 147 | "fetch-argonaut": "1.0.1", 148 | "fetch-core": "5.1.0", 149 | "fetch-yoga-json": "1.1.0", 150 | "filterable": "5.0.0", 151 | "fix-functor": "0.1.0", 152 | "fixed-points": "7.0.0", 153 | "fixed-precision": "5.0.0", 154 | "flame": "1.3.0", 155 | "float32": "2.0.0", 156 | "fmt": "0.2.1", 157 | "foldable-traversable": "6.0.0", 158 | "foreign": "7.0.0", 159 | "foreign-object": "4.1.0", 160 | "foreign-readwrite": "3.4.0", 161 | "forgetmenot": "0.1.0", 162 | "fork": "6.0.0", 163 | "form-urlencoded": "7.0.0", 164 | "formatters": "7.0.0", 165 | "framer-motion": "1.0.1", 166 | "free": "7.1.0", 167 | "freeap": "7.0.0", 168 | "freer-free": "0.0.1", 169 | "freet": "7.0.0", 170 | "functions": "6.0.0", 171 | "functor1": "3.0.0", 172 | "functors": "5.0.0", 173 | "fuzzy": "0.4.0", 174 | "gen": "4.0.0", 175 | "generate-values": "1.0.1", 176 | "generic-router": "0.0.1", 177 | "geojson": "0.0.5", 178 | "geometry-plane": "1.0.3", 179 | "grain": "3.0.0", 180 | "grain-router": "3.0.0", 181 | "grain-virtualized": "3.0.0", 182 | "graphs": "8.1.0", 183 | "group": "4.1.1", 184 | "halogen": "7.0.0", 185 | "halogen-bootstrap5": "2.2.0", 186 | "halogen-css": "10.0.0", 187 | "halogen-echarts-simple": "0.0.4", 188 | "halogen-formless": "4.0.3", 189 | "halogen-helix": "1.0.0", 190 | "halogen-hooks": "0.6.3", 191 | "halogen-hooks-extra": "0.9.0", 192 | "halogen-store": "0.5.4", 193 | "halogen-storybook": "2.0.0", 194 | "halogen-subscriptions": "2.0.0", 195 | "halogen-svg-elems": "8.0.0", 196 | "halogen-typewriter": "1.0.2", 197 | "halogen-vdom": "8.0.0", 198 | "halogen-vdom-string-renderer": "0.5.0", 199 | "heckin": "2.0.1", 200 | "heterogeneous": "0.6.0", 201 | "homogeneous": "0.4.0", 202 | "http-methods": "6.0.0", 203 | "httpurple": "4.0.0", 204 | "humdrum": "0.0.1", 205 | "hyrule": "2.3.8", 206 | "identity": "6.0.0", 207 | "identy": "4.0.1", 208 | "indexed-db": "1.0.0", 209 | "indexed-monad": "3.0.0", 210 | "int64": "3.0.0", 211 | "integers": "6.0.0", 212 | "interpolate": "5.0.2", 213 | "invariant": "6.0.0", 214 | "jarilo": "1.0.1", 215 | "jelly": "0.10.0", 216 | "jelly-router": "0.3.0", 217 | "jelly-signal": "0.4.0", 218 | "jest": "1.0.0", 219 | "js-abort-controller": "1.0.0", 220 | "js-bigints": "2.2.1", 221 | "js-date": "8.0.0", 222 | "js-fileio": "3.0.0", 223 | "js-intl": "1.0.4", 224 | "js-iterators": "0.1.1", 225 | "js-maps": "0.1.2", 226 | "js-promise": "1.0.0", 227 | "js-promise-aff": "1.0.0", 228 | "js-timers": "6.1.0", 229 | "js-uri": "3.1.0", 230 | "json-codecs": "5.0.0", 231 | "justifill": "0.5.0", 232 | "jwt": "0.0.9", 233 | "labeled-data": "0.2.0", 234 | "lazy": "6.0.0", 235 | "lazy-joe": "1.0.0", 236 | "lcg": "4.0.0", 237 | "leibniz": "5.0.0", 238 | "liminal": "1.0.1", 239 | "linalg": "6.0.0", 240 | "lists": "7.0.0", 241 | "literals": "1.0.2", 242 | "logging": "3.0.0", 243 | "logging-journald": "0.4.0", 244 | "machines": "7.0.0", 245 | "maps-eager": "0.4.1", 246 | "marionette": "1.0.0", 247 | "marionette-react-basic-hooks": "0.1.1", 248 | "matrices": "5.0.1", 249 | "matryoshka": "1.0.0", 250 | "maybe": "6.0.0", 251 | "media-types": "6.0.0", 252 | "midi": "4.0.0", 253 | "milkis": "9.0.0", 254 | "minibench": "4.0.1", 255 | "mmorph": "7.0.0", 256 | "monad-control": "5.0.0", 257 | "monad-logger": "1.3.1", 258 | "monad-loops": "0.5.0", 259 | "monad-unlift": "1.0.1", 260 | "monoid-extras": "0.0.1", 261 | "monoidal": "0.16.0", 262 | "morello": "0.4.0", 263 | "mote": "3.0.0", 264 | "motsunabe": "2.0.0", 265 | "mvc": "0.0.1", 266 | "mysql": "6.0.1", 267 | "n3": "0.1.0", 268 | "nano-id": "1.1.0", 269 | "nanoid": "0.1.0", 270 | "naturals": "3.0.0", 271 | "nested-functor": "0.2.1", 272 | "newtype": "5.0.0", 273 | "nextjs": "0.1.1", 274 | "nextui": "0.2.0", 275 | "node-buffer": "9.0.0", 276 | "node-child-process": "11.0.0", 277 | "node-event-emitter": "3.0.0", 278 | "node-execa": "4.0.1", 279 | "node-fs": "9.1.0", 280 | "node-http": "9.1.0", 281 | "node-http2": "1.1.1", 282 | "node-human-signals": "1.0.0", 283 | "node-net": "5.1.0", 284 | "node-os": "5.1.0", 285 | "node-path": "5.0.0", 286 | "node-process": "11.2.0", 287 | "node-readline": "8.1.0", 288 | "node-sqlite3": "8.0.0", 289 | "node-streams": "9.0.0", 290 | "node-tls": "0.3.1", 291 | "node-url": "7.0.1", 292 | "node-zlib": "0.4.0", 293 | "nonempty": "7.0.0", 294 | "now": "6.0.0", 295 | "npm-package-json": "2.0.0", 296 | "nullable": "6.0.0", 297 | "numberfield": "0.1.0", 298 | "numbers": "9.0.1", 299 | "oak": "3.1.1", 300 | "oak-debug": "1.2.2", 301 | "object-maps": "0.3.0", 302 | "ocarina": "1.5.4", 303 | "open-folds": "6.3.0", 304 | "open-memoize": "6.1.0", 305 | "open-pairing": "6.1.0", 306 | "options": "7.0.0", 307 | "ordered-collections": "3.1.1", 308 | "ordered-set": "0.4.0", 309 | "orders": "6.0.0", 310 | "pairs": "9.0.1", 311 | "parallel": "7.0.0", 312 | "parsing": "10.2.0", 313 | "parsing-dataview": "3.2.4", 314 | "partial": "4.0.0", 315 | "pathy": "9.0.0", 316 | "pha": "0.11.0", 317 | "phaser": "0.7.0", 318 | "phylio": "1.1.2", 319 | "pipes": "8.0.0", 320 | "pirates-charm": "0.0.1", 321 | "pmock": "0.6.0", 322 | "point-free": "1.0.0", 323 | "pointed-list": "0.5.1", 324 | "polymorphic-vectors": "4.0.0", 325 | "posix-types": "6.0.0", 326 | "precise": "6.0.0", 327 | "precise-datetime": "7.0.0", 328 | "prelude": "6.0.1", 329 | "prettier-printer": "3.0.0", 330 | "profunctor": "6.0.0", 331 | "profunctor-lenses": "8.0.0", 332 | "protobuf": "4.3.0", 333 | "psa-utils": "8.0.0", 334 | "psci-support": "6.0.0", 335 | "qualified-do": "2.2.0", 336 | "quantities": "12.2.0", 337 | "quickcheck": "8.0.1", 338 | "quickcheck-combinators": "0.1.3", 339 | "quickcheck-laws": "7.0.0", 340 | "quickcheck-utf8": "0.0.0", 341 | "random": "6.0.0", 342 | "rationals": "6.0.0", 343 | "rdf": "0.1.0", 344 | "react": "11.0.0", 345 | "react-aria": "0.2.0", 346 | "react-basic": "17.0.0", 347 | "react-basic-classic": "3.0.0", 348 | "react-basic-dnd": "10.1.0", 349 | "react-basic-dom": "6.1.0", 350 | "react-basic-emotion": "7.1.0", 351 | "react-basic-hooks": "8.2.0", 352 | "react-basic-storybook": "2.0.0", 353 | "react-dom": "8.0.0", 354 | "react-halo": "3.0.0", 355 | "react-icons": "1.1.1", 356 | "react-markdown": "0.1.0", 357 | "react-testing-library": "4.0.1", 358 | "react-virtuoso": "1.0.0", 359 | "read": "1.0.1", 360 | "recharts": "1.1.0", 361 | "record": "4.0.0", 362 | "record-extra": "5.0.1", 363 | "record-studio": "1.0.4", 364 | "refs": "6.0.0", 365 | "remotedata": "5.0.0", 366 | "resource": "2.0.1", 367 | "resourcet": "1.0.0", 368 | "result": "1.0.3", 369 | "return": "0.2.0", 370 | "ring-modules": "5.0.1", 371 | "rito": "0.3.4", 372 | "routing": "11.0.0", 373 | "routing-duplex": "0.7.0", 374 | "run": "5.0.0", 375 | "safe-coerce": "2.0.0", 376 | "safely": "4.0.1", 377 | "school-of-music": "1.3.0", 378 | "selection-foldable": "0.2.0", 379 | "selective-functors": "1.0.1", 380 | "semirings": "7.0.0", 381 | "signal": "13.0.0", 382 | "simple-emitter": "3.0.1", 383 | "simple-i18n": "2.0.1", 384 | "simple-json": "9.0.0", 385 | "simple-ulid": "3.0.0", 386 | "sized-matrices": "1.0.0", 387 | "sized-vectors": "5.0.2", 388 | "slug": "3.0.8", 389 | "small-ffi": "4.0.1", 390 | "soundfonts": "4.1.0", 391 | "sparse-matrices": "1.3.0", 392 | "sparse-polynomials": "2.0.5", 393 | "spec": "7.5.5", 394 | "spec-mocha": "5.0.0", 395 | "spec-quickcheck": "5.0.0", 396 | "splitmix": "2.1.0", 397 | "ssrs": "1.0.0", 398 | "st": "6.2.0", 399 | "statistics": "0.3.2", 400 | "strictlypositiveint": "1.0.1", 401 | "string-parsers": "8.0.0", 402 | "strings": "6.0.1", 403 | "strings-extra": "4.0.0", 404 | "stringutils": "0.0.12", 405 | "substitute": "0.2.3", 406 | "supply": "0.2.0", 407 | "svg-parser": "3.0.0", 408 | "systemd-journald": "0.3.0", 409 | "tagged": "4.0.2", 410 | "tailrec": "6.1.0", 411 | "tecton": "0.2.1", 412 | "tecton-halogen": "0.2.0", 413 | "test-unit": "17.0.0", 414 | "thermite": "6.3.1", 415 | "thermite-dom": "0.3.1", 416 | "these": "6.0.0", 417 | "transformation-matrix": "1.0.1", 418 | "transformers": "6.0.0", 419 | "tree-rose": "4.0.2", 420 | "tuples": "7.0.0", 421 | "two-or-more": "1.0.0", 422 | "type-equality": "4.0.1", 423 | "typedenv": "2.0.1", 424 | "typelevel": "6.0.0", 425 | "typelevel-lists": "2.1.0", 426 | "typelevel-peano": "1.0.1", 427 | "typelevel-prelude": "7.0.0", 428 | "typelevel-regex": "0.0.3", 429 | "typelevel-rows": "0.1.0", 430 | "uint": "7.0.0", 431 | "ulid": "3.0.1", 432 | "uncurried-transformers": "1.1.0", 433 | "undefined": "2.0.0", 434 | "undefined-is-not-a-problem": "1.1.0", 435 | "unfoldable": "6.0.0", 436 | "unicode": "6.0.0", 437 | "unique": "0.6.1", 438 | "unlift": "1.0.1", 439 | "unordered-collections": "3.0.1", 440 | "unsafe-coerce": "6.0.0", 441 | "unsafe-reference": "5.0.0", 442 | "untagged-to-tagged": "0.1.4", 443 | "untagged-union": "1.0.0", 444 | "uri": "9.0.0", 445 | "uuid": "9.0.0", 446 | "uuidv4": "1.0.0", 447 | "validation": "6.0.0", 448 | "variant": "8.0.0", 449 | "variant-encodings": "2.0.0", 450 | "vectorfield": "1.0.1", 451 | "vectors": "2.1.0", 452 | "versions": "7.0.0", 453 | "visx": "0.0.2", 454 | "web-clipboard": "5.0.0", 455 | "web-cssom": "2.0.0", 456 | "web-cssom-view": "0.1.0", 457 | "web-dom": "6.0.0", 458 | "web-dom-parser": "8.0.0", 459 | "web-dom-xpath": "3.0.0", 460 | "web-encoding": "3.0.0", 461 | "web-events": "4.0.0", 462 | "web-fetch": "4.0.1", 463 | "web-file": "4.0.0", 464 | "web-geometry": "0.1.0", 465 | "web-html": "4.1.0", 466 | "web-pointerevents": "1.0.0", 467 | "web-proletarian": "1.0.0", 468 | "web-resize-observer": "2.0.0", 469 | "web-router": "1.0.0", 470 | "web-socket": "4.0.0", 471 | "web-storage": "5.0.0", 472 | "web-streams": "4.0.0", 473 | "web-touchevents": "4.0.0", 474 | "web-uievents": "5.0.0", 475 | "web-url": "2.0.0", 476 | "web-workers": "1.1.0", 477 | "web-xhr": "5.0.1", 478 | "webextension-polyfill": "0.1.0", 479 | "webgpu": "0.0.1", 480 | "which": "2.0.0", 481 | "yoga-fetch": "1.0.1", 482 | "yoga-json": "5.1.0", 483 | "yoga-om": "0.1.0", 484 | "yoga-postgres": "6.0.0", 485 | "yoga-tree": "1.0.0", 486 | "z3": "0.0.2" 487 | } 488 | }, 489 | "extra_packages": {} 490 | }, 491 | "packages": { 492 | "console": { 493 | "type": "registry", 494 | "version": "6.1.0", 495 | "integrity": "sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM=", 496 | "dependencies": [ 497 | "effect", 498 | "prelude" 499 | ] 500 | }, 501 | "control": { 502 | "type": "registry", 503 | "version": "6.0.0", 504 | "integrity": "sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk=", 505 | "dependencies": [ 506 | "newtype", 507 | "prelude" 508 | ] 509 | }, 510 | "effect": { 511 | "type": "registry", 512 | "version": "4.0.0", 513 | "integrity": "sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M=", 514 | "dependencies": [ 515 | "prelude" 516 | ] 517 | }, 518 | "invariant": { 519 | "type": "registry", 520 | "version": "6.0.0", 521 | "integrity": "sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo=", 522 | "dependencies": [ 523 | "control", 524 | "prelude" 525 | ] 526 | }, 527 | "maybe": { 528 | "type": "registry", 529 | "version": "6.0.0", 530 | "integrity": "sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q=", 531 | "dependencies": [ 532 | "control", 533 | "invariant", 534 | "newtype", 535 | "prelude" 536 | ] 537 | }, 538 | "newtype": { 539 | "type": "registry", 540 | "version": "5.0.0", 541 | "integrity": "sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw=", 542 | "dependencies": [ 543 | "prelude", 544 | "safe-coerce" 545 | ] 546 | }, 547 | "prelude": { 548 | "type": "registry", 549 | "version": "6.0.1", 550 | "integrity": "sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0=", 551 | "dependencies": [] 552 | }, 553 | "safe-coerce": { 554 | "type": "registry", 555 | "version": "2.0.0", 556 | "integrity": "sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU=", 557 | "dependencies": [ 558 | "unsafe-coerce" 559 | ] 560 | }, 561 | "unsafe-coerce": { 562 | "type": "registry", 563 | "version": "6.0.0", 564 | "integrity": "sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0=", 565 | "dependencies": [] 566 | } 567 | } 568 | } 569 | -------------------------------------------------------------------------------- /tests/registry-esbuild/spago.yaml: -------------------------------------------------------------------------------- 1 | package: 2 | dependencies: 3 | - console 4 | - effect 5 | - prelude 6 | - maybe: "*" 7 | name: registry-test 8 | workspace: 9 | backend: 10 | cmd: "purs-backend-es" 11 | args: 12 | - "build" 13 | packageSet: 14 | registry: 43.1.0 15 | -------------------------------------------------------------------------------- /tests/registry-esbuild/src/Main.purs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Prelude 4 | 5 | import Effect (Effect) 6 | import Effect.Console (log) 7 | 8 | main :: Effect Unit 9 | main = do 10 | log "🍝" 11 | 12 | -------------------------------------------------------------------------------- /tests/registry/.gitignore: -------------------------------------------------------------------------------- 1 | .spago -------------------------------------------------------------------------------- /tests/registry/registry.nix: -------------------------------------------------------------------------------- 1 | { mkSpagoDerivation, esbuild, spago, purs }: 2 | mkSpagoDerivation { 3 | pname = "registry-test"; 4 | version = "0.1.0"; 5 | src = ./.; 6 | nativeBuildInputs = [ esbuild spago purs ]; 7 | spagoYaml = ./spago.yaml; 8 | spagoLock = ./spago.lock; 9 | buildPhase = "spago bundle"; 10 | installPhase = "mkdir $out; cp index.js $out"; 11 | } 12 | -------------------------------------------------------------------------------- /tests/registry/spago.lock: -------------------------------------------------------------------------------- 1 | { 2 | "workspace": { 3 | "packages": { 4 | "registry-test": { 5 | "path": "./", 6 | "core": { 7 | "dependencies": [ 8 | "console", 9 | "effect", 10 | { 11 | "maybe": "*" 12 | }, 13 | "prelude" 14 | ], 15 | "build_plan": [ 16 | "console", 17 | "control", 18 | "effect", 19 | "invariant", 20 | "maybe", 21 | "newtype", 22 | "prelude", 23 | "safe-coerce", 24 | "unsafe-coerce" 25 | ] 26 | }, 27 | "test": { 28 | "dependencies": [], 29 | "build_plan": [] 30 | } 31 | } 32 | }, 33 | "package_set": { 34 | "address": { 35 | "registry": "43.1.0" 36 | }, 37 | "compiler": ">=0.15.10 <0.16.0", 38 | "content": { 39 | "abc-parser": "2.0.1", 40 | "ace": "9.1.0", 41 | "aff": "7.1.0", 42 | "aff-bus": "6.0.0", 43 | "aff-coroutines": "9.0.0", 44 | "aff-promise": "4.0.0", 45 | "aff-retry": "2.0.0", 46 | "affjax": "13.0.0", 47 | "affjax-node": "1.0.0", 48 | "affjax-web": "1.0.0", 49 | "ansi": "7.0.0", 50 | "applicative-phases": "1.0.0", 51 | "argonaut": "9.0.0", 52 | "argonaut-aeson-generic": "0.4.1", 53 | "argonaut-codecs": "9.1.0", 54 | "argonaut-core": "7.0.0", 55 | "argonaut-generic": "8.0.0", 56 | "argonaut-traversals": "10.0.0", 57 | "argparse-basic": "2.0.0", 58 | "array-builder": "0.1.2", 59 | "array-search": "0.5.6", 60 | "arraybuffer": "13.2.0", 61 | "arraybuffer-builder": "3.1.0", 62 | "arraybuffer-types": "3.0.2", 63 | "arrays": "7.2.1", 64 | "arrays-extra": "0.4.1", 65 | "arrays-zipper": "2.0.1", 66 | "ask": "1.0.0", 67 | "assert": "6.0.0", 68 | "assert-multiple": "0.3.4", 69 | "avar": "5.0.0", 70 | "b64": "0.0.8", 71 | "barbies": "1.0.1", 72 | "barlow-lens": "0.9.0", 73 | "bifunctors": "6.0.0", 74 | "bigints": "7.0.1", 75 | "bolson": "0.3.9", 76 | "bookhound": "0.1.3", 77 | "bower-json": "3.0.0", 78 | "call-by-name": "4.0.1", 79 | "canvas": "6.0.0", 80 | "canvas-action": "9.0.0", 81 | "cartesian": "1.0.6", 82 | "catenable-lists": "7.0.0", 83 | "chameleon": "1.0.0", 84 | "chameleon-halogen": "1.0.3", 85 | "chameleon-react-basic": "1.1.0", 86 | "chameleon-styled": "2.5.0", 87 | "chameleon-transformers": "1.0.0", 88 | "channel": "1.0.0", 89 | "checked-exceptions": "3.1.1", 90 | "classless": "0.1.1", 91 | "classless-arbitrary": "0.1.1", 92 | "classless-decode-json": "0.1.1", 93 | "classless-encode-json": "0.1.3", 94 | "classnames": "2.0.0", 95 | "codec": "6.0.0", 96 | "codec-argonaut": "10.0.0", 97 | "colors": "7.0.1", 98 | "concur-core": "0.5.0", 99 | "concur-react": "0.5.0", 100 | "concurrent-queues": "3.0.0", 101 | "console": "6.1.0", 102 | "const": "6.0.0", 103 | "contravariant": "6.0.0", 104 | "control": "6.0.0", 105 | "convertable-options": "1.0.0", 106 | "coroutines": "7.0.0", 107 | "css": "6.0.0", 108 | "css-frameworks": "1.0.1", 109 | "data-mvc": "0.0.2", 110 | "datetime": "6.1.0", 111 | "datetime-parsing": "0.2.0", 112 | "debug": "6.0.2", 113 | "decimals": "7.1.0", 114 | "default-values": "1.0.1", 115 | "deku": "0.9.23", 116 | "deno": "0.0.5", 117 | "dissect": "1.0.0", 118 | "distributive": "6.0.0", 119 | "dom-filereader": "7.0.0", 120 | "dom-indexed": "12.0.0", 121 | "dotenv": "4.0.3", 122 | "droplet": "0.6.0", 123 | "dts": "0.2.0", 124 | "dual-numbers": "1.0.2", 125 | "dynamic-buffer": "3.0.1", 126 | "echarts-simple": "0.0.1", 127 | "effect": "4.0.0", 128 | "either": "6.1.0", 129 | "elmish": "0.10.0", 130 | "elmish-enzyme": "0.1.1", 131 | "elmish-hooks": "0.10.0", 132 | "elmish-html": "0.8.1", 133 | "elmish-testing-library": "0.3.1", 134 | "email-validate": "7.0.0", 135 | "encoding": "0.0.8", 136 | "enums": "6.0.1", 137 | "env-names": "0.3.4", 138 | "error": "2.0.0", 139 | "exceptions": "6.0.0", 140 | "exists": "6.0.0", 141 | "exitcodes": "4.0.0", 142 | "expect-inferred": "3.0.0", 143 | "fahrtwind": "2.0.0", 144 | "fallback": "0.1.0", 145 | "fast-vect": "1.1.0", 146 | "fetch": "3.0.0", 147 | "fetch-argonaut": "1.0.1", 148 | "fetch-core": "5.1.0", 149 | "fetch-yoga-json": "1.1.0", 150 | "filterable": "5.0.0", 151 | "fix-functor": "0.1.0", 152 | "fixed-points": "7.0.0", 153 | "fixed-precision": "5.0.0", 154 | "flame": "1.3.0", 155 | "float32": "2.0.0", 156 | "fmt": "0.2.1", 157 | "foldable-traversable": "6.0.0", 158 | "foreign": "7.0.0", 159 | "foreign-object": "4.1.0", 160 | "foreign-readwrite": "3.4.0", 161 | "forgetmenot": "0.1.0", 162 | "fork": "6.0.0", 163 | "form-urlencoded": "7.0.0", 164 | "formatters": "7.0.0", 165 | "framer-motion": "1.0.1", 166 | "free": "7.1.0", 167 | "freeap": "7.0.0", 168 | "freer-free": "0.0.1", 169 | "freet": "7.0.0", 170 | "functions": "6.0.0", 171 | "functor1": "3.0.0", 172 | "functors": "5.0.0", 173 | "fuzzy": "0.4.0", 174 | "gen": "4.0.0", 175 | "generate-values": "1.0.1", 176 | "generic-router": "0.0.1", 177 | "geojson": "0.0.5", 178 | "geometry-plane": "1.0.3", 179 | "grain": "3.0.0", 180 | "grain-router": "3.0.0", 181 | "grain-virtualized": "3.0.0", 182 | "graphs": "8.1.0", 183 | "group": "4.1.1", 184 | "halogen": "7.0.0", 185 | "halogen-bootstrap5": "2.2.0", 186 | "halogen-css": "10.0.0", 187 | "halogen-echarts-simple": "0.0.4", 188 | "halogen-formless": "4.0.3", 189 | "halogen-helix": "1.0.0", 190 | "halogen-hooks": "0.6.3", 191 | "halogen-hooks-extra": "0.9.0", 192 | "halogen-store": "0.5.4", 193 | "halogen-storybook": "2.0.0", 194 | "halogen-subscriptions": "2.0.0", 195 | "halogen-svg-elems": "8.0.0", 196 | "halogen-typewriter": "1.0.2", 197 | "halogen-vdom": "8.0.0", 198 | "halogen-vdom-string-renderer": "0.5.0", 199 | "heckin": "2.0.1", 200 | "heterogeneous": "0.6.0", 201 | "homogeneous": "0.4.0", 202 | "http-methods": "6.0.0", 203 | "httpurple": "4.0.0", 204 | "humdrum": "0.0.1", 205 | "hyrule": "2.3.8", 206 | "identity": "6.0.0", 207 | "identy": "4.0.1", 208 | "indexed-db": "1.0.0", 209 | "indexed-monad": "3.0.0", 210 | "int64": "3.0.0", 211 | "integers": "6.0.0", 212 | "interpolate": "5.0.2", 213 | "invariant": "6.0.0", 214 | "jarilo": "1.0.1", 215 | "jelly": "0.10.0", 216 | "jelly-router": "0.3.0", 217 | "jelly-signal": "0.4.0", 218 | "jest": "1.0.0", 219 | "js-abort-controller": "1.0.0", 220 | "js-bigints": "2.2.1", 221 | "js-date": "8.0.0", 222 | "js-fileio": "3.0.0", 223 | "js-intl": "1.0.4", 224 | "js-iterators": "0.1.1", 225 | "js-maps": "0.1.2", 226 | "js-promise": "1.0.0", 227 | "js-promise-aff": "1.0.0", 228 | "js-timers": "6.1.0", 229 | "js-uri": "3.1.0", 230 | "json-codecs": "5.0.0", 231 | "justifill": "0.5.0", 232 | "jwt": "0.0.9", 233 | "labeled-data": "0.2.0", 234 | "lazy": "6.0.0", 235 | "lazy-joe": "1.0.0", 236 | "lcg": "4.0.0", 237 | "leibniz": "5.0.0", 238 | "liminal": "1.0.1", 239 | "linalg": "6.0.0", 240 | "lists": "7.0.0", 241 | "literals": "1.0.2", 242 | "logging": "3.0.0", 243 | "logging-journald": "0.4.0", 244 | "machines": "7.0.0", 245 | "maps-eager": "0.4.1", 246 | "marionette": "1.0.0", 247 | "marionette-react-basic-hooks": "0.1.1", 248 | "matrices": "5.0.1", 249 | "matryoshka": "1.0.0", 250 | "maybe": "6.0.0", 251 | "media-types": "6.0.0", 252 | "midi": "4.0.0", 253 | "milkis": "9.0.0", 254 | "minibench": "4.0.1", 255 | "mmorph": "7.0.0", 256 | "monad-control": "5.0.0", 257 | "monad-logger": "1.3.1", 258 | "monad-loops": "0.5.0", 259 | "monad-unlift": "1.0.1", 260 | "monoid-extras": "0.0.1", 261 | "monoidal": "0.16.0", 262 | "morello": "0.4.0", 263 | "mote": "3.0.0", 264 | "motsunabe": "2.0.0", 265 | "mvc": "0.0.1", 266 | "mysql": "6.0.1", 267 | "n3": "0.1.0", 268 | "nano-id": "1.1.0", 269 | "nanoid": "0.1.0", 270 | "naturals": "3.0.0", 271 | "nested-functor": "0.2.1", 272 | "newtype": "5.0.0", 273 | "nextjs": "0.1.1", 274 | "nextui": "0.2.0", 275 | "node-buffer": "9.0.0", 276 | "node-child-process": "11.0.0", 277 | "node-event-emitter": "3.0.0", 278 | "node-execa": "4.0.1", 279 | "node-fs": "9.1.0", 280 | "node-http": "9.1.0", 281 | "node-http2": "1.1.1", 282 | "node-human-signals": "1.0.0", 283 | "node-net": "5.1.0", 284 | "node-os": "5.1.0", 285 | "node-path": "5.0.0", 286 | "node-process": "11.2.0", 287 | "node-readline": "8.1.0", 288 | "node-sqlite3": "8.0.0", 289 | "node-streams": "9.0.0", 290 | "node-tls": "0.3.1", 291 | "node-url": "7.0.1", 292 | "node-zlib": "0.4.0", 293 | "nonempty": "7.0.0", 294 | "now": "6.0.0", 295 | "npm-package-json": "2.0.0", 296 | "nullable": "6.0.0", 297 | "numberfield": "0.1.0", 298 | "numbers": "9.0.1", 299 | "oak": "3.1.1", 300 | "oak-debug": "1.2.2", 301 | "object-maps": "0.3.0", 302 | "ocarina": "1.5.4", 303 | "open-folds": "6.3.0", 304 | "open-memoize": "6.1.0", 305 | "open-pairing": "6.1.0", 306 | "options": "7.0.0", 307 | "ordered-collections": "3.1.1", 308 | "ordered-set": "0.4.0", 309 | "orders": "6.0.0", 310 | "pairs": "9.0.1", 311 | "parallel": "7.0.0", 312 | "parsing": "10.2.0", 313 | "parsing-dataview": "3.2.4", 314 | "partial": "4.0.0", 315 | "pathy": "9.0.0", 316 | "pha": "0.11.0", 317 | "phaser": "0.7.0", 318 | "phylio": "1.1.2", 319 | "pipes": "8.0.0", 320 | "pirates-charm": "0.0.1", 321 | "pmock": "0.6.0", 322 | "point-free": "1.0.0", 323 | "pointed-list": "0.5.1", 324 | "polymorphic-vectors": "4.0.0", 325 | "posix-types": "6.0.0", 326 | "precise": "6.0.0", 327 | "precise-datetime": "7.0.0", 328 | "prelude": "6.0.1", 329 | "prettier-printer": "3.0.0", 330 | "profunctor": "6.0.0", 331 | "profunctor-lenses": "8.0.0", 332 | "protobuf": "4.3.0", 333 | "psa-utils": "8.0.0", 334 | "psci-support": "6.0.0", 335 | "qualified-do": "2.2.0", 336 | "quantities": "12.2.0", 337 | "quickcheck": "8.0.1", 338 | "quickcheck-combinators": "0.1.3", 339 | "quickcheck-laws": "7.0.0", 340 | "quickcheck-utf8": "0.0.0", 341 | "random": "6.0.0", 342 | "rationals": "6.0.0", 343 | "rdf": "0.1.0", 344 | "react": "11.0.0", 345 | "react-aria": "0.2.0", 346 | "react-basic": "17.0.0", 347 | "react-basic-classic": "3.0.0", 348 | "react-basic-dnd": "10.1.0", 349 | "react-basic-dom": "6.1.0", 350 | "react-basic-emotion": "7.1.0", 351 | "react-basic-hooks": "8.2.0", 352 | "react-basic-storybook": "2.0.0", 353 | "react-dom": "8.0.0", 354 | "react-halo": "3.0.0", 355 | "react-icons": "1.1.1", 356 | "react-markdown": "0.1.0", 357 | "react-testing-library": "4.0.1", 358 | "react-virtuoso": "1.0.0", 359 | "read": "1.0.1", 360 | "recharts": "1.1.0", 361 | "record": "4.0.0", 362 | "record-extra": "5.0.1", 363 | "record-studio": "1.0.4", 364 | "refs": "6.0.0", 365 | "remotedata": "5.0.0", 366 | "resource": "2.0.1", 367 | "resourcet": "1.0.0", 368 | "result": "1.0.3", 369 | "return": "0.2.0", 370 | "ring-modules": "5.0.1", 371 | "rito": "0.3.4", 372 | "routing": "11.0.0", 373 | "routing-duplex": "0.7.0", 374 | "run": "5.0.0", 375 | "safe-coerce": "2.0.0", 376 | "safely": "4.0.1", 377 | "school-of-music": "1.3.0", 378 | "selection-foldable": "0.2.0", 379 | "selective-functors": "1.0.1", 380 | "semirings": "7.0.0", 381 | "signal": "13.0.0", 382 | "simple-emitter": "3.0.1", 383 | "simple-i18n": "2.0.1", 384 | "simple-json": "9.0.0", 385 | "simple-ulid": "3.0.0", 386 | "sized-matrices": "1.0.0", 387 | "sized-vectors": "5.0.2", 388 | "slug": "3.0.8", 389 | "small-ffi": "4.0.1", 390 | "soundfonts": "4.1.0", 391 | "sparse-matrices": "1.3.0", 392 | "sparse-polynomials": "2.0.5", 393 | "spec": "7.5.5", 394 | "spec-mocha": "5.0.0", 395 | "spec-quickcheck": "5.0.0", 396 | "splitmix": "2.1.0", 397 | "ssrs": "1.0.0", 398 | "st": "6.2.0", 399 | "statistics": "0.3.2", 400 | "strictlypositiveint": "1.0.1", 401 | "string-parsers": "8.0.0", 402 | "strings": "6.0.1", 403 | "strings-extra": "4.0.0", 404 | "stringutils": "0.0.12", 405 | "substitute": "0.2.3", 406 | "supply": "0.2.0", 407 | "svg-parser": "3.0.0", 408 | "systemd-journald": "0.3.0", 409 | "tagged": "4.0.2", 410 | "tailrec": "6.1.0", 411 | "tecton": "0.2.1", 412 | "tecton-halogen": "0.2.0", 413 | "test-unit": "17.0.0", 414 | "thermite": "6.3.1", 415 | "thermite-dom": "0.3.1", 416 | "these": "6.0.0", 417 | "transformation-matrix": "1.0.1", 418 | "transformers": "6.0.0", 419 | "tree-rose": "4.0.2", 420 | "tuples": "7.0.0", 421 | "two-or-more": "1.0.0", 422 | "type-equality": "4.0.1", 423 | "typedenv": "2.0.1", 424 | "typelevel": "6.0.0", 425 | "typelevel-lists": "2.1.0", 426 | "typelevel-peano": "1.0.1", 427 | "typelevel-prelude": "7.0.0", 428 | "typelevel-regex": "0.0.3", 429 | "typelevel-rows": "0.1.0", 430 | "uint": "7.0.0", 431 | "ulid": "3.0.1", 432 | "uncurried-transformers": "1.1.0", 433 | "undefined": "2.0.0", 434 | "undefined-is-not-a-problem": "1.1.0", 435 | "unfoldable": "6.0.0", 436 | "unicode": "6.0.0", 437 | "unique": "0.6.1", 438 | "unlift": "1.0.1", 439 | "unordered-collections": "3.0.1", 440 | "unsafe-coerce": "6.0.0", 441 | "unsafe-reference": "5.0.0", 442 | "untagged-to-tagged": "0.1.4", 443 | "untagged-union": "1.0.0", 444 | "uri": "9.0.0", 445 | "uuid": "9.0.0", 446 | "uuidv4": "1.0.0", 447 | "validation": "6.0.0", 448 | "variant": "8.0.0", 449 | "variant-encodings": "2.0.0", 450 | "vectorfield": "1.0.1", 451 | "vectors": "2.1.0", 452 | "versions": "7.0.0", 453 | "visx": "0.0.2", 454 | "web-clipboard": "5.0.0", 455 | "web-cssom": "2.0.0", 456 | "web-cssom-view": "0.1.0", 457 | "web-dom": "6.0.0", 458 | "web-dom-parser": "8.0.0", 459 | "web-dom-xpath": "3.0.0", 460 | "web-encoding": "3.0.0", 461 | "web-events": "4.0.0", 462 | "web-fetch": "4.0.1", 463 | "web-file": "4.0.0", 464 | "web-geometry": "0.1.0", 465 | "web-html": "4.1.0", 466 | "web-pointerevents": "1.0.0", 467 | "web-proletarian": "1.0.0", 468 | "web-resize-observer": "2.0.0", 469 | "web-router": "1.0.0", 470 | "web-socket": "4.0.0", 471 | "web-storage": "5.0.0", 472 | "web-streams": "4.0.0", 473 | "web-touchevents": "4.0.0", 474 | "web-uievents": "5.0.0", 475 | "web-url": "2.0.0", 476 | "web-workers": "1.1.0", 477 | "web-xhr": "5.0.1", 478 | "webextension-polyfill": "0.1.0", 479 | "webgpu": "0.0.1", 480 | "which": "2.0.0", 481 | "yoga-fetch": "1.0.1", 482 | "yoga-json": "5.1.0", 483 | "yoga-om": "0.1.0", 484 | "yoga-postgres": "6.0.0", 485 | "yoga-tree": "1.0.0", 486 | "z3": "0.0.2" 487 | } 488 | }, 489 | "extra_packages": {} 490 | }, 491 | "packages": { 492 | "console": { 493 | "type": "registry", 494 | "version": "6.1.0", 495 | "integrity": "sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM=", 496 | "dependencies": [ 497 | "effect", 498 | "prelude" 499 | ] 500 | }, 501 | "control": { 502 | "type": "registry", 503 | "version": "6.0.0", 504 | "integrity": "sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk=", 505 | "dependencies": [ 506 | "newtype", 507 | "prelude" 508 | ] 509 | }, 510 | "effect": { 511 | "type": "registry", 512 | "version": "4.0.0", 513 | "integrity": "sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M=", 514 | "dependencies": [ 515 | "prelude" 516 | ] 517 | }, 518 | "invariant": { 519 | "type": "registry", 520 | "version": "6.0.0", 521 | "integrity": "sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo=", 522 | "dependencies": [ 523 | "control", 524 | "prelude" 525 | ] 526 | }, 527 | "maybe": { 528 | "type": "registry", 529 | "version": "6.0.0", 530 | "integrity": "sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q=", 531 | "dependencies": [ 532 | "control", 533 | "invariant", 534 | "newtype", 535 | "prelude" 536 | ] 537 | }, 538 | "newtype": { 539 | "type": "registry", 540 | "version": "5.0.0", 541 | "integrity": "sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw=", 542 | "dependencies": [ 543 | "prelude", 544 | "safe-coerce" 545 | ] 546 | }, 547 | "prelude": { 548 | "type": "registry", 549 | "version": "6.0.1", 550 | "integrity": "sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0=", 551 | "dependencies": [] 552 | }, 553 | "safe-coerce": { 554 | "type": "registry", 555 | "version": "2.0.0", 556 | "integrity": "sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU=", 557 | "dependencies": [ 558 | "unsafe-coerce" 559 | ] 560 | }, 561 | "unsafe-coerce": { 562 | "type": "registry", 563 | "version": "6.0.0", 564 | "integrity": "sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0=", 565 | "dependencies": [] 566 | } 567 | } 568 | } 569 | -------------------------------------------------------------------------------- /tests/registry/spago.yaml: -------------------------------------------------------------------------------- 1 | package: 2 | dependencies: 3 | - console 4 | - effect 5 | - prelude 6 | - maybe: "*" 7 | name: registry-test 8 | workspace: 9 | packageSet: 10 | registry: 43.1.0 11 | -------------------------------------------------------------------------------- /tests/registry/src/Main.purs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Prelude 4 | 5 | import Effect (Effect) 6 | import Effect.Console (log) 7 | 8 | main :: Effect Unit 9 | main = do 10 | log "🍝" 11 | 12 | -------------------------------------------------------------------------------- /tests/remote/.gitignore: -------------------------------------------------------------------------------- 1 | .spago 2 | output -------------------------------------------------------------------------------- /tests/remote/remote.nix: -------------------------------------------------------------------------------- 1 | { mkSpagoDerivation, spago, purs, esbuild }: 2 | mkSpagoDerivation { 3 | pname = "remote-package-test"; 4 | version = "0.1.0"; 5 | src = ./.; 6 | nativeBuildInputs = [ esbuild spago purs ]; 7 | spagoYaml = ./spago.yaml; 8 | spagoLock = ./spago.lock; 9 | buildPhase = "spago bundle"; 10 | installPhase = "mkdir $out; cp index.js $out"; 11 | } 12 | -------------------------------------------------------------------------------- /tests/remote/spago.lock: -------------------------------------------------------------------------------- 1 | { 2 | "workspace": { 3 | "packages": { 4 | "remote-package-test": { 5 | "path": "./", 6 | "core": { 7 | "dependencies": [ 8 | "console", 9 | "effect", 10 | "fft-js", 11 | { 12 | "maybe": "*" 13 | }, 14 | "prelude" 15 | ], 16 | "build_plan": [ 17 | "arrays", 18 | "bifunctors", 19 | "cartesian", 20 | "console", 21 | "const", 22 | "contravariant", 23 | "control", 24 | "distributive", 25 | "effect", 26 | "either", 27 | "exists", 28 | "fft-js", 29 | "foldable-traversable", 30 | "functions", 31 | "functors", 32 | "identity", 33 | "integers", 34 | "invariant", 35 | "maybe", 36 | "newtype", 37 | "nonempty", 38 | "numbers", 39 | "orders", 40 | "partial", 41 | "prelude", 42 | "profunctor", 43 | "psci-support", 44 | "refs", 45 | "safe-coerce", 46 | "st", 47 | "tailrec", 48 | "tuples", 49 | "type-equality", 50 | "unfoldable", 51 | "unsafe-coerce" 52 | ] 53 | }, 54 | "test": { 55 | "dependencies": [], 56 | "build_plan": [] 57 | } 58 | } 59 | }, 60 | "package_set": { 61 | "address": { 62 | "registry": "43.1.0" 63 | }, 64 | "compiler": ">=0.15.10 <0.16.0", 65 | "content": { 66 | "abc-parser": "2.0.1", 67 | "ace": "9.1.0", 68 | "aff": "7.1.0", 69 | "aff-bus": "6.0.0", 70 | "aff-coroutines": "9.0.0", 71 | "aff-promise": "4.0.0", 72 | "aff-retry": "2.0.0", 73 | "affjax": "13.0.0", 74 | "affjax-node": "1.0.0", 75 | "affjax-web": "1.0.0", 76 | "ansi": "7.0.0", 77 | "applicative-phases": "1.0.0", 78 | "argonaut": "9.0.0", 79 | "argonaut-aeson-generic": "0.4.1", 80 | "argonaut-codecs": "9.1.0", 81 | "argonaut-core": "7.0.0", 82 | "argonaut-generic": "8.0.0", 83 | "argonaut-traversals": "10.0.0", 84 | "argparse-basic": "2.0.0", 85 | "array-builder": "0.1.2", 86 | "array-search": "0.5.6", 87 | "arraybuffer": "13.2.0", 88 | "arraybuffer-builder": "3.1.0", 89 | "arraybuffer-types": "3.0.2", 90 | "arrays": "7.2.1", 91 | "arrays-extra": "0.4.1", 92 | "arrays-zipper": "2.0.1", 93 | "ask": "1.0.0", 94 | "assert": "6.0.0", 95 | "assert-multiple": "0.3.4", 96 | "avar": "5.0.0", 97 | "b64": "0.0.8", 98 | "barbies": "1.0.1", 99 | "barlow-lens": "0.9.0", 100 | "bifunctors": "6.0.0", 101 | "bigints": "7.0.1", 102 | "bolson": "0.3.9", 103 | "bookhound": "0.1.3", 104 | "bower-json": "3.0.0", 105 | "call-by-name": "4.0.1", 106 | "canvas": "6.0.0", 107 | "canvas-action": "9.0.0", 108 | "cartesian": "1.0.6", 109 | "catenable-lists": "7.0.0", 110 | "chameleon": "1.0.0", 111 | "chameleon-halogen": "1.0.3", 112 | "chameleon-react-basic": "1.1.0", 113 | "chameleon-styled": "2.5.0", 114 | "chameleon-transformers": "1.0.0", 115 | "channel": "1.0.0", 116 | "checked-exceptions": "3.1.1", 117 | "classless": "0.1.1", 118 | "classless-arbitrary": "0.1.1", 119 | "classless-decode-json": "0.1.1", 120 | "classless-encode-json": "0.1.3", 121 | "classnames": "2.0.0", 122 | "codec": "6.0.0", 123 | "codec-argonaut": "10.0.0", 124 | "colors": "7.0.1", 125 | "concur-core": "0.5.0", 126 | "concur-react": "0.5.0", 127 | "concurrent-queues": "3.0.0", 128 | "console": "6.1.0", 129 | "const": "6.0.0", 130 | "contravariant": "6.0.0", 131 | "control": "6.0.0", 132 | "convertable-options": "1.0.0", 133 | "coroutines": "7.0.0", 134 | "css": "6.0.0", 135 | "css-frameworks": "1.0.1", 136 | "data-mvc": "0.0.2", 137 | "datetime": "6.1.0", 138 | "datetime-parsing": "0.2.0", 139 | "debug": "6.0.2", 140 | "decimals": "7.1.0", 141 | "default-values": "1.0.1", 142 | "deku": "0.9.23", 143 | "deno": "0.0.5", 144 | "dissect": "1.0.0", 145 | "distributive": "6.0.0", 146 | "dom-filereader": "7.0.0", 147 | "dom-indexed": "12.0.0", 148 | "dotenv": "4.0.3", 149 | "droplet": "0.6.0", 150 | "dts": "0.2.0", 151 | "dual-numbers": "1.0.2", 152 | "dynamic-buffer": "3.0.1", 153 | "echarts-simple": "0.0.1", 154 | "effect": "4.0.0", 155 | "either": "6.1.0", 156 | "elmish": "0.10.0", 157 | "elmish-enzyme": "0.1.1", 158 | "elmish-hooks": "0.10.0", 159 | "elmish-html": "0.8.1", 160 | "elmish-testing-library": "0.3.1", 161 | "email-validate": "7.0.0", 162 | "encoding": "0.0.8", 163 | "enums": "6.0.1", 164 | "env-names": "0.3.4", 165 | "error": "2.0.0", 166 | "exceptions": "6.0.0", 167 | "exists": "6.0.0", 168 | "exitcodes": "4.0.0", 169 | "expect-inferred": "3.0.0", 170 | "fahrtwind": "2.0.0", 171 | "fallback": "0.1.0", 172 | "fast-vect": "1.1.0", 173 | "fetch": "3.0.0", 174 | "fetch-argonaut": "1.0.1", 175 | "fetch-core": "5.1.0", 176 | "fetch-yoga-json": "1.1.0", 177 | "filterable": "5.0.0", 178 | "fix-functor": "0.1.0", 179 | "fixed-points": "7.0.0", 180 | "fixed-precision": "5.0.0", 181 | "flame": "1.3.0", 182 | "float32": "2.0.0", 183 | "fmt": "0.2.1", 184 | "foldable-traversable": "6.0.0", 185 | "foreign": "7.0.0", 186 | "foreign-object": "4.1.0", 187 | "foreign-readwrite": "3.4.0", 188 | "forgetmenot": "0.1.0", 189 | "fork": "6.0.0", 190 | "form-urlencoded": "7.0.0", 191 | "formatters": "7.0.0", 192 | "framer-motion": "1.0.1", 193 | "free": "7.1.0", 194 | "freeap": "7.0.0", 195 | "freer-free": "0.0.1", 196 | "freet": "7.0.0", 197 | "functions": "6.0.0", 198 | "functor1": "3.0.0", 199 | "functors": "5.0.0", 200 | "fuzzy": "0.4.0", 201 | "gen": "4.0.0", 202 | "generate-values": "1.0.1", 203 | "generic-router": "0.0.1", 204 | "geojson": "0.0.5", 205 | "geometry-plane": "1.0.3", 206 | "grain": "3.0.0", 207 | "grain-router": "3.0.0", 208 | "grain-virtualized": "3.0.0", 209 | "graphs": "8.1.0", 210 | "group": "4.1.1", 211 | "halogen": "7.0.0", 212 | "halogen-bootstrap5": "2.2.0", 213 | "halogen-css": "10.0.0", 214 | "halogen-echarts-simple": "0.0.4", 215 | "halogen-formless": "4.0.3", 216 | "halogen-helix": "1.0.0", 217 | "halogen-hooks": "0.6.3", 218 | "halogen-hooks-extra": "0.9.0", 219 | "halogen-store": "0.5.4", 220 | "halogen-storybook": "2.0.0", 221 | "halogen-subscriptions": "2.0.0", 222 | "halogen-svg-elems": "8.0.0", 223 | "halogen-typewriter": "1.0.2", 224 | "halogen-vdom": "8.0.0", 225 | "halogen-vdom-string-renderer": "0.5.0", 226 | "heckin": "2.0.1", 227 | "heterogeneous": "0.6.0", 228 | "homogeneous": "0.4.0", 229 | "http-methods": "6.0.0", 230 | "httpurple": "4.0.0", 231 | "humdrum": "0.0.1", 232 | "hyrule": "2.3.8", 233 | "identity": "6.0.0", 234 | "identy": "4.0.1", 235 | "indexed-db": "1.0.0", 236 | "indexed-monad": "3.0.0", 237 | "int64": "3.0.0", 238 | "integers": "6.0.0", 239 | "interpolate": "5.0.2", 240 | "invariant": "6.0.0", 241 | "jarilo": "1.0.1", 242 | "jelly": "0.10.0", 243 | "jelly-router": "0.3.0", 244 | "jelly-signal": "0.4.0", 245 | "jest": "1.0.0", 246 | "js-abort-controller": "1.0.0", 247 | "js-bigints": "2.2.1", 248 | "js-date": "8.0.0", 249 | "js-fileio": "3.0.0", 250 | "js-intl": "1.0.4", 251 | "js-iterators": "0.1.1", 252 | "js-maps": "0.1.2", 253 | "js-promise": "1.0.0", 254 | "js-promise-aff": "1.0.0", 255 | "js-timers": "6.1.0", 256 | "js-uri": "3.1.0", 257 | "json-codecs": "5.0.0", 258 | "justifill": "0.5.0", 259 | "jwt": "0.0.9", 260 | "labeled-data": "0.2.0", 261 | "lazy": "6.0.0", 262 | "lazy-joe": "1.0.0", 263 | "lcg": "4.0.0", 264 | "leibniz": "5.0.0", 265 | "liminal": "1.0.1", 266 | "linalg": "6.0.0", 267 | "lists": "7.0.0", 268 | "literals": "1.0.2", 269 | "logging": "3.0.0", 270 | "logging-journald": "0.4.0", 271 | "machines": "7.0.0", 272 | "maps-eager": "0.4.1", 273 | "marionette": "1.0.0", 274 | "marionette-react-basic-hooks": "0.1.1", 275 | "matrices": "5.0.1", 276 | "matryoshka": "1.0.0", 277 | "maybe": "6.0.0", 278 | "media-types": "6.0.0", 279 | "midi": "4.0.0", 280 | "milkis": "9.0.0", 281 | "minibench": "4.0.1", 282 | "mmorph": "7.0.0", 283 | "monad-control": "5.0.0", 284 | "monad-logger": "1.3.1", 285 | "monad-loops": "0.5.0", 286 | "monad-unlift": "1.0.1", 287 | "monoid-extras": "0.0.1", 288 | "monoidal": "0.16.0", 289 | "morello": "0.4.0", 290 | "mote": "3.0.0", 291 | "motsunabe": "2.0.0", 292 | "mvc": "0.0.1", 293 | "mysql": "6.0.1", 294 | "n3": "0.1.0", 295 | "nano-id": "1.1.0", 296 | "nanoid": "0.1.0", 297 | "naturals": "3.0.0", 298 | "nested-functor": "0.2.1", 299 | "newtype": "5.0.0", 300 | "nextjs": "0.1.1", 301 | "nextui": "0.2.0", 302 | "node-buffer": "9.0.0", 303 | "node-child-process": "11.0.0", 304 | "node-event-emitter": "3.0.0", 305 | "node-execa": "4.0.1", 306 | "node-fs": "9.1.0", 307 | "node-http": "9.1.0", 308 | "node-http2": "1.1.1", 309 | "node-human-signals": "1.0.0", 310 | "node-net": "5.1.0", 311 | "node-os": "5.1.0", 312 | "node-path": "5.0.0", 313 | "node-process": "11.2.0", 314 | "node-readline": "8.1.0", 315 | "node-sqlite3": "8.0.0", 316 | "node-streams": "9.0.0", 317 | "node-tls": "0.3.1", 318 | "node-url": "7.0.1", 319 | "node-zlib": "0.4.0", 320 | "nonempty": "7.0.0", 321 | "now": "6.0.0", 322 | "npm-package-json": "2.0.0", 323 | "nullable": "6.0.0", 324 | "numberfield": "0.1.0", 325 | "numbers": "9.0.1", 326 | "oak": "3.1.1", 327 | "oak-debug": "1.2.2", 328 | "object-maps": "0.3.0", 329 | "ocarina": "1.5.4", 330 | "open-folds": "6.3.0", 331 | "open-memoize": "6.1.0", 332 | "open-pairing": "6.1.0", 333 | "options": "7.0.0", 334 | "ordered-collections": "3.1.1", 335 | "ordered-set": "0.4.0", 336 | "orders": "6.0.0", 337 | "pairs": "9.0.1", 338 | "parallel": "7.0.0", 339 | "parsing": "10.2.0", 340 | "parsing-dataview": "3.2.4", 341 | "partial": "4.0.0", 342 | "pathy": "9.0.0", 343 | "pha": "0.11.0", 344 | "phaser": "0.7.0", 345 | "phylio": "1.1.2", 346 | "pipes": "8.0.0", 347 | "pirates-charm": "0.0.1", 348 | "pmock": "0.6.0", 349 | "point-free": "1.0.0", 350 | "pointed-list": "0.5.1", 351 | "polymorphic-vectors": "4.0.0", 352 | "posix-types": "6.0.0", 353 | "precise": "6.0.0", 354 | "precise-datetime": "7.0.0", 355 | "prelude": "6.0.1", 356 | "prettier-printer": "3.0.0", 357 | "profunctor": "6.0.0", 358 | "profunctor-lenses": "8.0.0", 359 | "protobuf": "4.3.0", 360 | "psa-utils": "8.0.0", 361 | "psci-support": "6.0.0", 362 | "qualified-do": "2.2.0", 363 | "quantities": "12.2.0", 364 | "quickcheck": "8.0.1", 365 | "quickcheck-combinators": "0.1.3", 366 | "quickcheck-laws": "7.0.0", 367 | "quickcheck-utf8": "0.0.0", 368 | "random": "6.0.0", 369 | "rationals": "6.0.0", 370 | "rdf": "0.1.0", 371 | "react": "11.0.0", 372 | "react-aria": "0.2.0", 373 | "react-basic": "17.0.0", 374 | "react-basic-classic": "3.0.0", 375 | "react-basic-dnd": "10.1.0", 376 | "react-basic-dom": "6.1.0", 377 | "react-basic-emotion": "7.1.0", 378 | "react-basic-hooks": "8.2.0", 379 | "react-basic-storybook": "2.0.0", 380 | "react-dom": "8.0.0", 381 | "react-halo": "3.0.0", 382 | "react-icons": "1.1.1", 383 | "react-markdown": "0.1.0", 384 | "react-testing-library": "4.0.1", 385 | "react-virtuoso": "1.0.0", 386 | "read": "1.0.1", 387 | "recharts": "1.1.0", 388 | "record": "4.0.0", 389 | "record-extra": "5.0.1", 390 | "record-studio": "1.0.4", 391 | "refs": "6.0.0", 392 | "remotedata": "5.0.0", 393 | "resource": "2.0.1", 394 | "resourcet": "1.0.0", 395 | "result": "1.0.3", 396 | "return": "0.2.0", 397 | "ring-modules": "5.0.1", 398 | "rito": "0.3.4", 399 | "routing": "11.0.0", 400 | "routing-duplex": "0.7.0", 401 | "run": "5.0.0", 402 | "safe-coerce": "2.0.0", 403 | "safely": "4.0.1", 404 | "school-of-music": "1.3.0", 405 | "selection-foldable": "0.2.0", 406 | "selective-functors": "1.0.1", 407 | "semirings": "7.0.0", 408 | "signal": "13.0.0", 409 | "simple-emitter": "3.0.1", 410 | "simple-i18n": "2.0.1", 411 | "simple-json": "9.0.0", 412 | "simple-ulid": "3.0.0", 413 | "sized-matrices": "1.0.0", 414 | "sized-vectors": "5.0.2", 415 | "slug": "3.0.8", 416 | "small-ffi": "4.0.1", 417 | "soundfonts": "4.1.0", 418 | "sparse-matrices": "1.3.0", 419 | "sparse-polynomials": "2.0.5", 420 | "spec": "7.5.5", 421 | "spec-mocha": "5.0.0", 422 | "spec-quickcheck": "5.0.0", 423 | "splitmix": "2.1.0", 424 | "ssrs": "1.0.0", 425 | "st": "6.2.0", 426 | "statistics": "0.3.2", 427 | "strictlypositiveint": "1.0.1", 428 | "string-parsers": "8.0.0", 429 | "strings": "6.0.1", 430 | "strings-extra": "4.0.0", 431 | "stringutils": "0.0.12", 432 | "substitute": "0.2.3", 433 | "supply": "0.2.0", 434 | "svg-parser": "3.0.0", 435 | "systemd-journald": "0.3.0", 436 | "tagged": "4.0.2", 437 | "tailrec": "6.1.0", 438 | "tecton": "0.2.1", 439 | "tecton-halogen": "0.2.0", 440 | "test-unit": "17.0.0", 441 | "thermite": "6.3.1", 442 | "thermite-dom": "0.3.1", 443 | "these": "6.0.0", 444 | "transformation-matrix": "1.0.1", 445 | "transformers": "6.0.0", 446 | "tree-rose": "4.0.2", 447 | "tuples": "7.0.0", 448 | "two-or-more": "1.0.0", 449 | "type-equality": "4.0.1", 450 | "typedenv": "2.0.1", 451 | "typelevel": "6.0.0", 452 | "typelevel-lists": "2.1.0", 453 | "typelevel-peano": "1.0.1", 454 | "typelevel-prelude": "7.0.0", 455 | "typelevel-regex": "0.0.3", 456 | "typelevel-rows": "0.1.0", 457 | "uint": "7.0.0", 458 | "ulid": "3.0.1", 459 | "uncurried-transformers": "1.1.0", 460 | "undefined": "2.0.0", 461 | "undefined-is-not-a-problem": "1.1.0", 462 | "unfoldable": "6.0.0", 463 | "unicode": "6.0.0", 464 | "unique": "0.6.1", 465 | "unlift": "1.0.1", 466 | "unordered-collections": "3.0.1", 467 | "unsafe-coerce": "6.0.0", 468 | "unsafe-reference": "5.0.0", 469 | "untagged-to-tagged": "0.1.4", 470 | "untagged-union": "1.0.0", 471 | "uri": "9.0.0", 472 | "uuid": "9.0.0", 473 | "uuidv4": "1.0.0", 474 | "validation": "6.0.0", 475 | "variant": "8.0.0", 476 | "variant-encodings": "2.0.0", 477 | "vectorfield": "1.0.1", 478 | "vectors": "2.1.0", 479 | "versions": "7.0.0", 480 | "visx": "0.0.2", 481 | "web-clipboard": "5.0.0", 482 | "web-cssom": "2.0.0", 483 | "web-cssom-view": "0.1.0", 484 | "web-dom": "6.0.0", 485 | "web-dom-parser": "8.0.0", 486 | "web-dom-xpath": "3.0.0", 487 | "web-encoding": "3.0.0", 488 | "web-events": "4.0.0", 489 | "web-fetch": "4.0.1", 490 | "web-file": "4.0.0", 491 | "web-geometry": "0.1.0", 492 | "web-html": "4.1.0", 493 | "web-pointerevents": "1.0.0", 494 | "web-proletarian": "1.0.0", 495 | "web-resize-observer": "2.0.0", 496 | "web-router": "1.0.0", 497 | "web-socket": "4.0.0", 498 | "web-storage": "5.0.0", 499 | "web-streams": "4.0.0", 500 | "web-touchevents": "4.0.0", 501 | "web-uievents": "5.0.0", 502 | "web-url": "2.0.0", 503 | "web-workers": "1.1.0", 504 | "web-xhr": "5.0.1", 505 | "webextension-polyfill": "0.1.0", 506 | "webgpu": "0.0.1", 507 | "which": "2.0.0", 508 | "yoga-fetch": "1.0.1", 509 | "yoga-json": "5.1.0", 510 | "yoga-om": "0.1.0", 511 | "yoga-postgres": "6.0.0", 512 | "yoga-tree": "1.0.0", 513 | "z3": "0.0.2" 514 | } 515 | }, 516 | "extra_packages": { 517 | "fft-js": { 518 | "git": "https://github.com/jeslie0/purescript-fft-js.git", 519 | "ref": "a1d19ae08f577b2a777613566e403b3455c5bb64" 520 | } 521 | } 522 | }, 523 | "packages": { 524 | "arrays": { 525 | "type": "registry", 526 | "version": "7.2.1", 527 | "integrity": "sha256-HCUzV3uCSt6YBI9vlt1Ott20/2JfSCUoNsd+D6ORieQ=", 528 | "dependencies": [ 529 | "bifunctors", 530 | "control", 531 | "foldable-traversable", 532 | "functions", 533 | "maybe", 534 | "nonempty", 535 | "partial", 536 | "prelude", 537 | "safe-coerce", 538 | "st", 539 | "tailrec", 540 | "tuples", 541 | "unfoldable", 542 | "unsafe-coerce" 543 | ] 544 | }, 545 | "bifunctors": { 546 | "type": "registry", 547 | "version": "6.0.0", 548 | "integrity": "sha256-/gZwC9YhNxZNQpnHa5BIYerCGM2jeX9ukZiEvYxm5Nw=", 549 | "dependencies": [ 550 | "const", 551 | "either", 552 | "newtype", 553 | "prelude", 554 | "tuples" 555 | ] 556 | }, 557 | "cartesian": { 558 | "type": "registry", 559 | "version": "1.0.6", 560 | "integrity": "sha256-zi8pKO8RRp34Toob9fiPwmSQb2uAYfCqp6HZdeVlTSE=", 561 | "dependencies": [ 562 | "console", 563 | "effect", 564 | "integers", 565 | "psci-support" 566 | ] 567 | }, 568 | "console": { 569 | "type": "registry", 570 | "version": "6.1.0", 571 | "integrity": "sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM=", 572 | "dependencies": [ 573 | "effect", 574 | "prelude" 575 | ] 576 | }, 577 | "const": { 578 | "type": "registry", 579 | "version": "6.0.0", 580 | "integrity": "sha256-tNrxDW8D8H4jdHE2HiPzpLy08zkzJMmGHdRqt5BQuTc=", 581 | "dependencies": [ 582 | "invariant", 583 | "newtype", 584 | "prelude" 585 | ] 586 | }, 587 | "contravariant": { 588 | "type": "registry", 589 | "version": "6.0.0", 590 | "integrity": "sha256-TP+ooAp3vvmdjfQsQJSichF5B4BPDHp3wAJoWchip6c=", 591 | "dependencies": [ 592 | "const", 593 | "either", 594 | "newtype", 595 | "prelude", 596 | "tuples" 597 | ] 598 | }, 599 | "control": { 600 | "type": "registry", 601 | "version": "6.0.0", 602 | "integrity": "sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk=", 603 | "dependencies": [ 604 | "newtype", 605 | "prelude" 606 | ] 607 | }, 608 | "distributive": { 609 | "type": "registry", 610 | "version": "6.0.0", 611 | "integrity": "sha256-HTDdmEnzigMl+02SJB88j+gAXDx9VKsbvR4MJGDPbOQ=", 612 | "dependencies": [ 613 | "identity", 614 | "newtype", 615 | "prelude", 616 | "tuples", 617 | "type-equality" 618 | ] 619 | }, 620 | "effect": { 621 | "type": "registry", 622 | "version": "4.0.0", 623 | "integrity": "sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M=", 624 | "dependencies": [ 625 | "prelude" 626 | ] 627 | }, 628 | "either": { 629 | "type": "registry", 630 | "version": "6.1.0", 631 | "integrity": "sha256-6hgTPisnMWVwQivOu2PKYcH8uqjEOOqDyaDQVUchTpY=", 632 | "dependencies": [ 633 | "control", 634 | "invariant", 635 | "maybe", 636 | "prelude" 637 | ] 638 | }, 639 | "exists": { 640 | "type": "registry", 641 | "version": "6.0.0", 642 | "integrity": "sha256-A0JQHpTfo1dNOj9U5/Fd3xndlRSE0g2IQWOGor2yXn8=", 643 | "dependencies": [ 644 | "unsafe-coerce" 645 | ] 646 | }, 647 | "fft-js": { 648 | "type": "git", 649 | "url": "https://github.com/jeslie0/purescript-fft-js.git", 650 | "rev": "a1d19ae08f577b2a777613566e403b3455c5bb64", 651 | "dependencies": [ 652 | "arrays", 653 | "cartesian", 654 | "partial", 655 | "prelude", 656 | "st" 657 | ] 658 | }, 659 | "foldable-traversable": { 660 | "type": "registry", 661 | "version": "6.0.0", 662 | "integrity": "sha256-fLeqRYM4jUrZD5H4WqcwUgzU7XfYkzO4zhgtNc3jcWM=", 663 | "dependencies": [ 664 | "bifunctors", 665 | "const", 666 | "control", 667 | "either", 668 | "functors", 669 | "identity", 670 | "maybe", 671 | "newtype", 672 | "orders", 673 | "prelude", 674 | "tuples" 675 | ] 676 | }, 677 | "functions": { 678 | "type": "registry", 679 | "version": "6.0.0", 680 | "integrity": "sha256-adMyJNEnhGde2unHHAP79gPtlNjNqzgLB8arEOn9hLI=", 681 | "dependencies": [ 682 | "prelude" 683 | ] 684 | }, 685 | "functors": { 686 | "type": "registry", 687 | "version": "5.0.0", 688 | "integrity": "sha256-zfPWWYisbD84MqwpJSZFlvM6v86McM68ob8p9s27ywU=", 689 | "dependencies": [ 690 | "bifunctors", 691 | "const", 692 | "contravariant", 693 | "control", 694 | "distributive", 695 | "either", 696 | "invariant", 697 | "maybe", 698 | "newtype", 699 | "prelude", 700 | "profunctor", 701 | "tuples", 702 | "unsafe-coerce" 703 | ] 704 | }, 705 | "identity": { 706 | "type": "registry", 707 | "version": "6.0.0", 708 | "integrity": "sha256-4wY0XZbAksjY6UAg99WkuKyJlQlWAfTi2ssadH0wVMY=", 709 | "dependencies": [ 710 | "control", 711 | "invariant", 712 | "newtype", 713 | "prelude" 714 | ] 715 | }, 716 | "integers": { 717 | "type": "registry", 718 | "version": "6.0.0", 719 | "integrity": "sha256-sf+sK26R1hzwl3NhXR7WAu9zCDjQnfoXwcyGoseX158=", 720 | "dependencies": [ 721 | "maybe", 722 | "numbers", 723 | "prelude" 724 | ] 725 | }, 726 | "invariant": { 727 | "type": "registry", 728 | "version": "6.0.0", 729 | "integrity": "sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo=", 730 | "dependencies": [ 731 | "control", 732 | "prelude" 733 | ] 734 | }, 735 | "maybe": { 736 | "type": "registry", 737 | "version": "6.0.0", 738 | "integrity": "sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q=", 739 | "dependencies": [ 740 | "control", 741 | "invariant", 742 | "newtype", 743 | "prelude" 744 | ] 745 | }, 746 | "newtype": { 747 | "type": "registry", 748 | "version": "5.0.0", 749 | "integrity": "sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw=", 750 | "dependencies": [ 751 | "prelude", 752 | "safe-coerce" 753 | ] 754 | }, 755 | "nonempty": { 756 | "type": "registry", 757 | "version": "7.0.0", 758 | "integrity": "sha256-54ablJZUHGvvlTJzi3oXyPCuvY6zsrWJuH/dMJ/MFLs=", 759 | "dependencies": [ 760 | "control", 761 | "foldable-traversable", 762 | "maybe", 763 | "prelude", 764 | "tuples", 765 | "unfoldable" 766 | ] 767 | }, 768 | "numbers": { 769 | "type": "registry", 770 | "version": "9.0.1", 771 | "integrity": "sha256-/9M6aeMDBdB4cwYDeJvLFprAHZ49EbtKQLIJsneXLIk=", 772 | "dependencies": [ 773 | "functions", 774 | "maybe" 775 | ] 776 | }, 777 | "orders": { 778 | "type": "registry", 779 | "version": "6.0.0", 780 | "integrity": "sha256-nBA0g3/ai0euH8q9pSbGqk53W2q6agm/dECZTHcoink=", 781 | "dependencies": [ 782 | "newtype", 783 | "prelude" 784 | ] 785 | }, 786 | "partial": { 787 | "type": "registry", 788 | "version": "4.0.0", 789 | "integrity": "sha256-fwXerld6Xw1VkReh8yeQsdtLVrjfGiVuC5bA1Wyo/J4=", 790 | "dependencies": [] 791 | }, 792 | "prelude": { 793 | "type": "registry", 794 | "version": "6.0.1", 795 | "integrity": "sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0=", 796 | "dependencies": [] 797 | }, 798 | "profunctor": { 799 | "type": "registry", 800 | "version": "6.0.0", 801 | "integrity": "sha256-99NzxFgTr4CGlCSRYG1kShL+JhYbihhHtbOk1/0R5zI=", 802 | "dependencies": [ 803 | "control", 804 | "distributive", 805 | "either", 806 | "exists", 807 | "invariant", 808 | "newtype", 809 | "prelude", 810 | "tuples" 811 | ] 812 | }, 813 | "psci-support": { 814 | "type": "registry", 815 | "version": "6.0.0", 816 | "integrity": "sha256-C6ql4P9TEP06hft/1Z5QumPA4yARR4VIxDdhmL1EO+Y=", 817 | "dependencies": [ 818 | "console", 819 | "effect", 820 | "prelude" 821 | ] 822 | }, 823 | "refs": { 824 | "type": "registry", 825 | "version": "6.0.0", 826 | "integrity": "sha256-Vgwne7jIbD3ZMoLNNETLT8Litw6lIYo3MfYNdtYWj9s=", 827 | "dependencies": [ 828 | "effect", 829 | "prelude" 830 | ] 831 | }, 832 | "safe-coerce": { 833 | "type": "registry", 834 | "version": "2.0.0", 835 | "integrity": "sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU=", 836 | "dependencies": [ 837 | "unsafe-coerce" 838 | ] 839 | }, 840 | "st": { 841 | "type": "registry", 842 | "version": "6.2.0", 843 | "integrity": "sha256-z9X0WsOUlPwNx9GlCC+YccCyz8MejC8Wb0C4+9fiBRY=", 844 | "dependencies": [ 845 | "partial", 846 | "prelude", 847 | "tailrec", 848 | "unsafe-coerce" 849 | ] 850 | }, 851 | "tailrec": { 852 | "type": "registry", 853 | "version": "6.1.0", 854 | "integrity": "sha256-Xx19ECVDRrDWpz9D2GxQHHV89vd61dnXxQm0IcYQHGk=", 855 | "dependencies": [ 856 | "bifunctors", 857 | "effect", 858 | "either", 859 | "identity", 860 | "maybe", 861 | "partial", 862 | "prelude", 863 | "refs" 864 | ] 865 | }, 866 | "tuples": { 867 | "type": "registry", 868 | "version": "7.0.0", 869 | "integrity": "sha256-1rXgTomes9105BjgXqIw0FL6Fz1lqqUTLWOumhWec1M=", 870 | "dependencies": [ 871 | "control", 872 | "invariant", 873 | "prelude" 874 | ] 875 | }, 876 | "type-equality": { 877 | "type": "registry", 878 | "version": "4.0.1", 879 | "integrity": "sha256-Hs9D6Y71zFi/b+qu5NSbuadUQXe5iv5iWx0226vOHUw=", 880 | "dependencies": [] 881 | }, 882 | "unfoldable": { 883 | "type": "registry", 884 | "version": "6.0.0", 885 | "integrity": "sha256-JtikvJdktRap7vr/K4ITlxUX1QexpnqBq0G/InLr6eg=", 886 | "dependencies": [ 887 | "foldable-traversable", 888 | "maybe", 889 | "partial", 890 | "prelude", 891 | "tuples" 892 | ] 893 | }, 894 | "unsafe-coerce": { 895 | "type": "registry", 896 | "version": "6.0.0", 897 | "integrity": "sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0=", 898 | "dependencies": [] 899 | } 900 | } 901 | } 902 | -------------------------------------------------------------------------------- /tests/remote/spago.yaml: -------------------------------------------------------------------------------- 1 | package: 2 | name: remote-package-test 3 | dependencies: 4 | - console 5 | - effect 6 | - fft-js 7 | - prelude 8 | - maybe: "*" 9 | workspace: 10 | packageSet: 11 | registry: 43.1.0 12 | extraPackages: 13 | fft-js: 14 | git: "https://github.com/jeslie0/purescript-fft-js.git" 15 | ref: "a1d19ae08f577b2a777613566e403b3455c5bb64" 16 | -------------------------------------------------------------------------------- /tests/remote/src/Main.purs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import Prelude 4 | 5 | import Effect (Effect) 6 | import Effect.Console (logShow) 7 | import FFT 8 | 9 | fft = makeFFT 4 10 | 11 | main :: Effect Unit 12 | main = do 13 | logShow $ realTransform fft $ RealArray [1.0,2.0,3.0,4.0] 14 | --------------------------------------------------------------------------------